Skip to content

Commit 2b6b31f

Browse files
authored
Merge pull request #2018 from umbraco/v14/bugfix/pickers-undefined-value
Make pickers value undefined when empty
2 parents d8fa5e7 + ce8d5e4 commit 2b6b31f

File tree

64 files changed

+223
-204
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

64 files changed

+223
-204
lines changed

src/packages/block/block-type/components/input-block-type/input-block-type.element.ts

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
import type { UmbBlockTypeCardElement } from '../block-type-card/index.js';
2-
import type { UmbBlockTypeBaseModel, UmbBlockTypeWithGroupKey } from '../../types.js';
31
import { umbConfirmModal } from '@umbraco-cms/backoffice/modal';
42
import { UmbModalRouteRegistrationController } from '@umbraco-cms/backoffice/router';
53
import { css, html, customElement, property, state, repeat } from '@umbraco-cms/backoffice/external/lit';
@@ -12,6 +10,8 @@ import {
1210
UMB_DOCUMENT_TYPE_PICKER_MODAL,
1311
} from '@umbraco-cms/backoffice/document-type';
1412
import { UmbSorterController } from '@umbraco-cms/backoffice/sorter';
13+
import type { UmbBlockTypeBaseModel, UmbBlockTypeWithGroupKey } from '../../types.js';
14+
import type { UmbBlockTypeCardElement } from '../block-type-card/index.js';
1515

1616
import '../block-type-card/index.js';
1717

@@ -123,10 +123,6 @@ export class UmbInputBlockTypeElement<
123123
this.dispatchEvent(new UmbDeleteEvent());
124124
}
125125

126-
protected getFormElement() {
127-
return undefined;
128-
}
129-
130126
async #onRequestDelete(item: BlockType) {
131127
const store = await this.getContext(UMB_DOCUMENT_TYPE_ITEM_STORE_CONTEXT);
132128
const contentType = store.getItems([item.contentElementTypeKey]);

src/packages/core/components/input-collection-configuration/input-collection-configuration.element.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import { UmbModalRouteRegistrationController } from '@umbraco-cms/backoffice/rou
1010
import { UmbFormControlMixin } from '@umbraco-cms/backoffice/validation';
1111

1212
@customElement('umb-input-collection-configuration')
13-
export class UmbInputCollectionConfigurationElement extends UmbFormControlMixin(UmbLitElement) {
13+
export class UmbInputCollectionConfigurationElement extends UmbFormControlMixin<string, typeof UmbLitElement>(UmbLitElement) {
1414
protected override getFormElement() {
1515
return undefined;
1616
}
@@ -25,7 +25,7 @@ export class UmbInputCollectionConfigurationElement extends UmbFormControlMixin(
2525
@property({ attribute: 'default-value' })
2626
defaultValue?: string;
2727

28-
#setValue(value: string) {
28+
#setValue(value: string | undefined) {
2929
this.value = value;
3030
this.dispatchEvent(new UmbChangeEvent());
3131
}
@@ -65,7 +65,7 @@ export class UmbInputCollectionConfigurationElement extends UmbFormControlMixin(
6565
}
6666

6767
#clearDataType() {
68-
this.#setValue('');
68+
this.#setValue(undefined);
6969
}
7070

7171
#createDataType() {
@@ -99,7 +99,7 @@ export class UmbInputCollectionConfigurationElement extends UmbFormControlMixin(
9999
if (!this.value || !this._dataTypePickerModalPath) return nothing;
100100
return html`
101101
<uui-ref-list>
102-
<umb-ref-data-type standalone data-type-id=${this.value as string} @open=${this.#editDataType}>
102+
<umb-ref-data-type standalone data-type-id=${this.value} @open=${this.#editDataType}>
103103
<uui-action-bar slot="actions">
104104
<uui-button
105105
label=${this.localize.term('general_choose')}

src/packages/core/components/input-color/input-color.element.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import type { UUIColorSwatchesEvent } from '@umbraco-cms/backoffice/external/uui
1111
*/
1212
@customElement('umb-input-color')
1313
export class UmbInputColorElement extends UUIFormControlMixin(UmbLitElement, '') {
14-
protected getFormElement() {
14+
protected override getFormElement() {
1515
return undefined;
1616
}
1717

src/packages/core/components/input-date/input-date.element.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import type { UUIInputEvent } from '@umbraco-cms/backoffice/external/uui';
1515
*/
1616
@customElement('umb-input-date')
1717
export class UmbInputDateElement extends UUIFormControlMixin(UmbLitElement, '') {
18-
protected getFormElement() {
18+
protected override getFormElement() {
1919
return undefined;
2020
}
2121

src/packages/core/components/input-dropdown/input-dropdown-list.element.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ export class UmbInputDropdownListElement extends UUIFormControlMixin(UmbLitEleme
1919
@query('uui-select')
2020
private selectEle!: HTMLInputElement;
2121

22-
protected getFormElement() {
22+
protected override getFormElement() {
2323
return this.selectEle;
2424
}
2525

src/packages/core/components/input-entity/input-entity.element.ts

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,15 @@ import { splitStringToArray } from '@umbraco-cms/backoffice/utils';
33
import { UmbChangeEvent } from '@umbraco-cms/backoffice/event';
44
import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';
55
import { UmbSorterController } from '@umbraco-cms/backoffice/sorter';
6-
import { UUIFormControlMixin } from '@umbraco-cms/backoffice/external/uui';
76
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
87
import type { UmbPickerInputContext } from '@umbraco-cms/backoffice/picker-input';
98
import type { UmbUniqueItemModel } from '@umbraco-cms/backoffice/models';
9+
import { UmbFormControlMixin } from '@umbraco-cms/backoffice/validation';
1010

1111
@customElement('umb-input-entity')
12-
export class UmbInputEntityElement extends UUIFormControlMixin(UmbLitElement, '') {
12+
export class UmbInputEntityElement extends UmbFormControlMixin<string | undefined, typeof UmbLitElement>(
13+
UmbLitElement,
14+
) {
1315
#sorter = new UmbSorterController<string>(this, {
1416
getUniqueOfElement: (element) => {
1517
return element.id;
@@ -26,7 +28,7 @@ export class UmbInputEntityElement extends UUIFormControlMixin(UmbLitElement, ''
2628
},
2729
});
2830

29-
protected getFormElement() {
31+
protected override getFormElement() {
3032
return undefined;
3133
}
3234

@@ -68,20 +70,20 @@ export class UmbInputEntityElement extends UUIFormControlMixin(UmbLitElement, ''
6870
this.#pickerContext?.setSelection(uniques);
6971
this.#sorter.setModel(uniques);
7072
}
71-
public get selection(): Array<string> | undefined {
72-
return this.#pickerContext?.getSelection();
73+
public get selection(): Array<string> {
74+
return this.#pickerContext?.getSelection() ?? [];
7375
}
7476

75-
@property()
76-
public override set value(uniques: string) {
77-
this.selection = splitStringToArray(uniques);
77+
@property({ type: String })
78+
public override set value(selectionString: string | undefined) {
79+
this.selection = splitStringToArray(selectionString);
7880
}
79-
public override get value(): string {
80-
return this.selection?.join(',') ?? '';
81+
public override get value(): string | undefined {
82+
return this.selection.length > 0 ? this.selection.join(',') : undefined;
8183
}
8284

8385
@property({ attribute: false })
84-
public set pickerContext(ctor: new (host: UmbControllerHost) => UmbPickerInputContext<any>) {
86+
public set pickerContext(ctor: new (host: UmbControllerHost) => UmbPickerInputContext<any, any, any, any>) {
8587
if (this.#pickerContext) return;
8688
this.#pickerContext = new ctor(this);
8789
this.#observePickerContext();
@@ -90,7 +92,7 @@ export class UmbInputEntityElement extends UUIFormControlMixin(UmbLitElement, ''
9092
@state()
9193
private _items?: Array<UmbUniqueItemModel>;
9294

93-
#pickerContext?: UmbPickerInputContext<any>;
95+
#pickerContext?: UmbPickerInputContext;
9496

9597
constructor() {
9698
super();

src/packages/core/components/input-eye-dropper/input-eye-dropper.element.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import type { UUIColorPickerChangeEvent } from '@umbraco-cms/backoffice/external
66

77
@customElement('umb-input-eye-dropper')
88
export class UmbInputEyeDropperElement extends UUIFormControlMixin(UmbLitElement, '') {
9-
protected getFormElement() {
9+
protected override getFormElement() {
1010
return undefined;
1111
}
1212

src/packages/core/components/input-radio-button-list/input-radio-button-list.element.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ export class UmbInputRadioButtonListElement extends UUIFormControlMixin(UmbLitEl
2121
@property({ type: Array })
2222
public list: Array<UmbRadioButtonItem> = [];
2323

24-
protected getFormElement() {
24+
protected override getFormElement() {
2525
return undefined;
2626
}
2727

src/packages/core/components/input-slider/input-slider.element.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ export class UmbInputSliderElement extends UUIFormControlMixin(UmbLitElement, ''
2424
@property({ type: Boolean, attribute: 'enable-range' })
2525
enableRange = false;
2626

27-
protected getFormElement() {
27+
protected override getFormElement() {
2828
return undefined;
2929
}
3030

src/packages/core/components/input-toggle/input-toggle.element.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ export class UmbInputToggleElement extends UUIFormControlMixin(UmbLitElement, ''
2929
@state()
3030
_currentLabel?: string;
3131

32-
protected getFormElement() {
32+
protected override getFormElement() {
3333
return undefined;
3434
}
3535

0 commit comments

Comments
 (0)