diff --git a/src/Umbraco.Web.UI.Client/src/mocks/data/template.data.ts b/src/Umbraco.Web.UI.Client/src/mocks/data/template.data.ts index a7dd2952af..bbb9f2ea66 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/data/template.data.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/data/template.data.ts @@ -133,7 +133,7 @@ export const templateQueryResult: TemplateQueryResultResponseModel = { }; export const templateQuerySettings: TemplateQuerySettingsResponseModel = { - contentTypeAliases: [], + contentTypeAliases: ['docTypeWithTemplate', 'propertyTypeWithTemplate', 'somethingElse'], properties: [ { alias: 'Id', diff --git a/src/Umbraco.Web.UI.Client/src/mocks/handlers/document.handlers.ts b/src/Umbraco.Web.UI.Client/src/mocks/handlers/document.handlers.ts index da27cebb0f..4dc299bdd0 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/handlers/document.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/handlers/document.handlers.ts @@ -28,7 +28,7 @@ export const handlers = [ rest.get('/umbraco/management/api/v1/tree/document/item', (req, res, ctx) => { const ids = req.url.searchParams.getAll('id'); if (!ids) return; - + debugger; const items = umbDocumentData.getTreeItem(ids); return res(ctx.status(200), ctx.json(items)); diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/components/button-with-dropdown/button-with-dropdown.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/components/button-with-dropdown/button-with-dropdown.element.ts index 1d03749ea7..814ee7feec 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/components/button-with-dropdown/button-with-dropdown.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/components/button-with-dropdown/button-with-dropdown.element.ts @@ -36,25 +36,25 @@ export class UmbButtonWithDropdownElement extends LitElement { @query('#popover') popover!: UUIPopoverElement; - #openPopover() { + openPopover() { this.open = true; this.popover.open = true; this.symbolExpand.open = true; } - #closePopover() { + closePopover() { this.open = false; this.popover.open = false; this.symbolExpand.open = false; } #togglePopover() { - this.open ? this.#closePopover() : this.#openPopover(); + this.open ? this.closePopover() : this.openPopover(); } render() { return html` - + { + @query('#content-type-dropdown') + private _contentTypeDropdown?: UmbButtonWithDropdownElement; + #close() { this.modalContext?.reject(); } @@ -40,14 +44,15 @@ export default class UmbChooseInsertTypeModalElement extends UmbModalBaseElement @state() private _templateQuery?: TemplateQueryResultResponseModel; - #queryRequest: TemplateQueryExecuteModel = {}; + @state() + private _queryRequest: TemplateQueryExecuteModel = {}; #updateQueryRequest(update: TemplateQueryExecuteModel) { - this.#queryRequest = { ...this.#queryRequest, ...update }; + this._queryRequest = { ...this._queryRequest, ...update }; } @state() - private _queryBuiilderSettings?: TemplateQuerySettingsResponseModel; + private _queryBuilderSettings?: TemplateQuerySettingsResponseModel; @state() private _selectedRootContentName = 'all pages'; @@ -74,13 +79,14 @@ export default class UmbChooseInsertTypeModalElement extends UmbModalBaseElement async #getTemplateQuerySettings() { const { data, error } = await this.#templateRepository.getTemplateQuerySettings(); - if (data) this._queryBuiilderSettings = data; + if (data) this._queryBuilderSettings = data; } async #postTemplateQuery() { const { data, error } = await this.#templateRepository.postTemplateQueryExecute({ - requestBody: this.#queryRequest, + requestBody: this._queryRequest, }); + console.log(this._queryRequest) if (data) this._templateQuery = { ...data }; } @@ -89,7 +95,6 @@ export default class UmbChooseInsertTypeModalElement extends UmbModalBaseElement ?.open(UMB_DOCUMENT_PICKER_MODAL) .onSubmit() .then((result) => { - debugger; this.#updateQueryRequest({ rootContentId: result.selection[0] }); if (result.selection.length > 0 && result.selection[0] === null) { @@ -111,24 +116,50 @@ export default class UmbChooseInsertTypeModalElement extends UmbModalBaseElement } } + #setContentType(event: Event) { + const target = event.target as UUIComboboxListElement; + this.#updateQueryRequest({ contentTypeAlias: (target.value as string) ?? '' }); + this.#postTemplateQuery(); + this._contentTypeDropdown!.closePopover(); + } + render() { return html`
-
- I want all content from +
+ I want + ${this._queryRequest?.contentTypeAlias ?? 'all content'} + + all content + ${this._queryBuilderSettings?.contentTypeAliases?.map( + (alias) => + html`content of type "${alias}"` + )} + + from ${this._selectedRootContentName}
-
- where from all pages +
+ where (allowed properties) + (filtered conditions)
+
+ ordered by (allowed properties) + ascending/descending +
+
N items returned, in 0 ms
+ ${this._templateQuery?.queryExpression ?? ''}
- ${this._templateQuery?.queryExpression ?? ''}
Close Submit @@ -152,6 +183,24 @@ export default class UmbChooseInsertTypeModalElement extends UmbModalBaseElement 100dvh - var(--umb-header-layout-height) - var(--umb-footer-layout-height) - 2 * var(--uui-size-layout-1) ); } + + #content-type-list { + width: 250%; + background-color: var(--uui-color-surface); + box-shadow: var(--uui-shadow-depth-3); + } + + uui-combobox-list-option { + padding: 8px 20px; + } + + .row { + display: flex; + gap: 10px; + border-bottom: 1px solid #f3f3f5; + align-items: center; + padding: 20px 0; + } `, ]; }