diff --git a/Directory.Packages.props b/Directory.Packages.props
index 04809997fa..d41b6eb92c 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -7,13 +7,17 @@
-
+
-
+
+
+
+
+
diff --git a/src/Umbraco.Web.UI.Client/src/packages/block/block-type/components/input-block-type/input-block-type.element.ts b/src/Umbraco.Web.UI.Client/src/packages/block/block-type/components/input-block-type/input-block-type.element.ts
index c44cc0369f..d4d60b54c6 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/block/block-type/components/input-block-type/input-block-type.element.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/block/block-type/components/input-block-type/input-block-type.element.ts
@@ -106,6 +106,12 @@ export class UmbInputBlockTypeElement<
presetAlias: 'element',
},
},
+ // TODO: hide the queryParams and filter config under a "elementTypesOnly" field. [MR]
+ search: {
+ queryParams: {
+ isElementType: true,
+ },
+ },
pickableFilter: (docType) =>
// Only pick elements:
docType.isElement &&
diff --git a/src/Umbraco.Web.UI.Client/src/packages/content/content-type/global-components/content-type-workspace-editor-header.element.ts b/src/Umbraco.Web.UI.Client/src/packages/content/content-type/global-components/content-type-workspace-editor-header.element.ts
index 16d1524652..aed4ff718d 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/content/content-type/global-components/content-type-workspace-editor-header.element.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/content/content-type/global-components/content-type-workspace-editor-header.element.ts
@@ -126,15 +126,16 @@ export class UmbContentTypeWorkspaceEditorHeaderElement extends UmbLitElement {
display: flex;
flex: 1 1 auto;
flex-direction: column;
- gap: var(--uui-size-space-1);
}
#name {
width: 100%;
+ z-index: 1;
}
#description {
width: 100%;
+ margin-top: 1px;
--uui-input-height: var(--uui-size-8);
--uui-input-border-color: transparent;
}
@@ -147,6 +148,8 @@ export class UmbContentTypeWorkspaceEditorHeaderElement extends UmbLitElement {
font-size: var(--uui-size-8);
height: 60px;
width: 60px;
+ --uui-button-border-color: transparent;
+ --uui-button-border-color-hover: var(--uui-color-border);
}
`,
];
diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/components/body-layout/body-layout.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/components/body-layout/body-layout.element.ts
index a9a5ff2f54..14a5caa954 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/core/components/body-layout/body-layout.element.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/core/components/body-layout/body-layout.element.ts
@@ -101,13 +101,6 @@ export class UmbBodyLayoutElement extends LitElement {
this._headerSlotHasChildren = this.#hasNodes(e);
this.#setSlotVisibility(e.target as HTMLElement, this._headerSlotHasChildren);
}}>
- {
- this._navigationSlotHasChildren = this.#hasNodes(e);
- this.#setSlotVisibility(e.target as HTMLElement, this._navigationSlotHasChildren);
- }}>
+ {
+ this._navigationSlotHasChildren = this.#hasNodes(e);
+ this.#setSlotVisibility(e.target as HTMLElement, this._navigationSlotHasChildren);
+ }}>
@@ -204,7 +204,6 @@ export class UmbBodyLayoutElement extends LitElement {
box-sizing: border-box;
min-width: 0;
}
-
#navigation-slot {
margin-left: auto;
}
diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/picker/search/picker-search-result.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/picker/search/picker-search-result.element.ts
index 7b74306a45..4437d9b0b9 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/core/picker/search/picker-search-result.element.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/core/picker/search/picker-search-result.element.ts
@@ -1,11 +1,13 @@
import { UMB_PICKER_CONTEXT } from '../picker.context.token.js';
import type { UmbPickerContext } from '../picker.context.js';
import type { ManifestPickerSearchResultItem } from './result-item/picker-search-result-item.extension.js';
-import { customElement, html, nothing, repeat, state } from '@umbraco-cms/backoffice/external/lit';
+import { customElement, html, nothing, property, repeat, state } from '@umbraco-cms/backoffice/external/lit';
import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';
import type { UmbSearchRequestArgs } from '@umbraco-cms/backoffice/search';
import type { UmbEntityModel } from '@umbraco-cms/backoffice/entity';
+type PickableFilterMethodType = (item: T) => boolean;
+
@customElement('umb-picker-search-result')
export class UmbPickerSearchResultElement extends UmbLitElement {
@state()
@@ -20,6 +22,9 @@ export class UmbPickerSearchResultElement extends UmbLitElement {
@state()
_isSearchable: boolean = false;
+ @property({ attribute: false })
+ pickableFilter: PickableFilterMethodType = () => true;
+
#pickerContext?: UmbPickerContext;
constructor() {
@@ -30,10 +35,15 @@ export class UmbPickerSearchResultElement extends UmbLitElement {
this.observe(
this.#pickerContext?.search.searchable,
(isSearchable) => (this._isSearchable = isSearchable ?? false),
+ 'obsSearchable',
);
- this.observe(this.#pickerContext?.search.query, (query) => (this._query = query));
- this.observe(this.#pickerContext?.search.searching, (query) => (this._searching = query ?? false));
- this.observe(this.#pickerContext?.search.resultItems, (items) => (this._items = items ?? []));
+ this.observe(this.#pickerContext?.search.query, (query) => (this._query = query), 'obsQuery');
+ this.observe(
+ this.#pickerContext?.search.searching,
+ (query) => (this._searching = query ?? false),
+ 'obsSearching',
+ );
+ this.observe(this.#pickerContext?.search.resultItems, (items) => (this._items = items ?? []), 'obsResultItems');
});
}
@@ -58,11 +68,15 @@ export class UmbPickerSearchResultElement extends UmbLitElement {
}
#renderResultItem(item: UmbEntityModel) {
+ console.log('pickableFilter', this.pickableFilter(item));
return html`
manifest.forEntityTypes.includes(item.entityType)}
- .elementProps=${{ item }}>
+ .elementProps=${{
+ item,
+ disabled: !this.pickableFilter(item),
+ }}>
`;
}
}
diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/picker/search/result-item/default/default-picker-search-result-item.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/picker/search/result-item/default/default-picker-search-result-item.element.ts
index f886f47986..a936ff88d7 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/core/picker/search/result-item/default/default-picker-search-result-item.element.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/core/picker/search/result-item/default/default-picker-search-result-item.element.ts
@@ -13,8 +13,9 @@ export class UmbDefaultPickerSearchResultItemElement extends UmbPickerSearchResu
id=${item.unique}
icon=${item.icon ?? 'icon-document'}
select-only
- selectable
+ ?selectable=${!this.disabled}
?selected=${this._isSelected}
+ ?disabled=${this.disabled}
@deselected=${() => this.pickerContext?.selection.deselect(item.unique)}
@selected=${() => this.pickerContext?.selection.select(item.unique)}>
diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/picker/search/result-item/picker-search-result-item-element-base.ts b/src/Umbraco.Web.UI.Client/src/packages/core/picker/search/result-item/picker-search-result-item-element-base.ts
index c0c429aec1..07969e0aa0 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/core/picker/search/result-item/picker-search-result-item-element-base.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/core/picker/search/result-item/picker-search-result-item-element-base.ts
@@ -18,6 +18,9 @@ export abstract class UmbPickerSearchResultItemElementBase this.pickerContext?.selection.deselect(item.unique)}
@selected=${() => this.pickerContext?.selection.select(item.unique)}>
diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/tree/tree-picker-modal/tree-picker-modal.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/tree/tree-picker-modal/tree-picker-modal.element.ts
index bb1fe200de..b2e6c66084 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/core/tree/tree-picker-modal/tree-picker-modal.element.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/core/tree/tree-picker-modal/tree-picker-modal.element.ts
@@ -159,7 +159,7 @@ export class UmbTreePickerModalElement
-
+
`;
}
diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-editor/workspace-editor.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-editor/workspace-editor.element.ts
index ae686a5243..6c16b3aac4 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-editor/workspace-editor.element.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-editor/workspace-editor.element.ts
@@ -90,9 +90,8 @@ export class UmbWorkspaceEditorElement extends UmbLitElement {
${this.#renderBackButton()}
- ${this.#renderViews()}
- ${this.#renderRoutes()}
+ ${this.#renderViews()} ${this.#renderRoutes()}
${when(
!this.enforceNoFooter,
diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-entity-action-menu/workspace-entity-action-menu.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-entity-action-menu/workspace-entity-action-menu.element.ts
index b1f5f733a2..eb38a8fa53 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-entity-action-menu/workspace-entity-action-menu.element.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-entity-action-menu/workspace-entity-action-menu.element.ts
@@ -56,10 +56,10 @@ export class UmbWorkspaceEntityActionMenuElement extends UmbLitElement {
? html`
- ${this.localize.term('general_actions')}
-
+