diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/components/input-eye-dropper/input-eye-dropper.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/components/input-eye-dropper/input-eye-dropper.element.ts index c4187d0fdd..27f73eaadf 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/components/input-eye-dropper/input-eye-dropper.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/components/input-eye-dropper/input-eye-dropper.element.ts @@ -1,4 +1,4 @@ -import { customElement, html, property } from '@umbraco-cms/backoffice/external/lit'; +import { customElement, html, property, when } from '@umbraco-cms/backoffice/external/lit'; import { UmbChangeEvent } from '@umbraco-cms/backoffice/event'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; import { UUIFormControlMixin } from '@umbraco-cms/backoffice/external/uui'; @@ -19,22 +19,42 @@ export class UmbInputEyeDropperElement extends UUIFormControlMixin(UmbLitElement @property({ type: Boolean }) opacity = false; - @property({ type: Array }) - swatches: string[] = []; + @property({ type: Boolean }) + showPalette = false; - //TODO if empty swatches, the color picker still shows the area where they are supposed to be rendered. - // BTW in the old backoffice "palette" seemed to be true/false setting, but here its an array. + @property({ type: Array }) + swatches?: string[]; + + // HACK: Since `uui-color-picker` doesn't have an option to hide the swatches, we had to get creative. + // Based on UUI v1.8.0-rc3, the value of `swatches` must be a falsey value to hide them. + // https://github.com/umbraco/Umbraco.UI/blob/v1.8.0-rc.3/packages/uui-color-picker/lib/uui-color-picker.element.ts#L517 + // However, the object-type for `swatches` is a `string[]` (non-nullable). + // https://github.com/umbraco/Umbraco.UI/blob/v1.8.0-rc.3/packages/uui-color-picker/lib/uui-color-picker.element.ts#L157 + // To do this, we must omit the `.swatches` attribute, otherwise the default swatches can't be used. + // So, we've use a `when()` render both configurations. [LK] render() { - return html` - - - `; + const swatches = this.showPalette ? this.swatches : undefined; + return when( + this.showPalette && !swatches, + () => html` + + + `, + () => html` + + + `, + ); } } diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/components/input-eye-dropper/input-eye-dropper.stories.ts b/src/Umbraco.Web.UI.Client/src/packages/core/components/input-eye-dropper/input-eye-dropper.stories.ts index 3b3e9a73c5..b9d3b5aafd 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/components/input-eye-dropper/input-eye-dropper.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/components/input-eye-dropper/input-eye-dropper.stories.ts @@ -22,6 +22,13 @@ export const WithOpacity: Story = { export const WithSwatches: Story = { args: { + showPalette: true, swatches: ['#000000', '#ffffff', '#ff0000', '#00ff00', '#0000ff'], }, }; + +export const ShowPalette: Story = { + args: { + showPalette: true, + }, +}; diff --git a/src/Umbraco.Web.UI.Client/src/packages/property-editors/eye-dropper/property-editor-ui-eye-dropper.element.ts b/src/Umbraco.Web.UI.Client/src/packages/property-editors/eye-dropper/property-editor-ui-eye-dropper.element.ts index d99f7a1aee..05ddf3b013 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/property-editors/eye-dropper/property-editor-ui-eye-dropper.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/property-editors/eye-dropper/property-editor-ui-eye-dropper.element.ts @@ -10,43 +10,20 @@ import type { UUIColorPickerChangeEvent } from '@umbraco-cms/backoffice/external */ @customElement('umb-property-editor-ui-eye-dropper') export class UmbPropertyEditorUIEyeDropperElement extends UmbLitElement implements UmbPropertyEditorUiElement { - #defaultOpacity = false; - @property() value = ''; @state() - private _opacity = this.#defaultOpacity; + private _opacity = false; @state() - private _swatches: string[] = []; + private _showPalette = false; public set config(config: UmbPropertyEditorConfigCollection | undefined) { - this._opacity = config?.getValueByAlias('showAlpha') ?? this.#defaultOpacity; + if (!config) return; - const showPalette = config?.getValueByAlias('showPalette') ?? false; - - if (showPalette) { - // TODO: This is a temporary solution until we have a proper way to get the palette from the config. [LK] - this._swatches = [ - '#d0021b', - '#f5a623', - '#f8e71c', - '#8b572a', - '#7ed321', - '#417505', - '#bd10e0', - '#9013fe', - '#4a90e2', - '#50e3c2', - '#b8e986', - '#000', - '#444', - '#888', - '#ccc', - '#fff', - ]; - } + this._opacity = config.getValueByAlias('showAlpha') ?? false; + this._showPalette = config.getValueByAlias('showPalette') ?? false; } #onChange(event: UUIColorPickerChangeEvent) { @@ -58,7 +35,7 @@ export class UmbPropertyEditorUIEyeDropperElement extends UmbLitElement implemen return html` `;