;
const lastInput = inputs[inputs.length - 1];
lastInput.focus();
}
- #deleteItem(itemIndex: number) {
+ #deleteItem(event: UmbDeleteEvent, itemIndex: number) {
+ event.stopPropagation();
this._items = this._items.filter((item, index) => index !== itemIndex);
this.dispatchEvent(new UmbChangeEvent());
}
@@ -195,34 +171,16 @@ export class UmbInputMultipleTextStringElement extends FormControlMixin(UmbLitEl
${repeat(
this._items,
(item, index) => index,
- (item, index) => html`${this._renderItem(item, index)}`
+ (item, index) =>
+ html` this.#onInput(event, index)}
+ @delete="${(event: UmbDeleteEvent) => this.#deleteItem(event, index)}"
+ ?disabled=${this.disabled}
+ ?readonly=${this.readonly}>`
)}
`;
}
-
- private _renderItem(item: MultipleTextStringValueItem, index: number) {
- return html`
- ${this.disabled || this.readonly ? nothing : html``}
- this.#onInput(event, index)}"
- ?disabled=${this.disabled}
- ?readonly=${this.readonly}>
-
- ${this.readonly
- ? nothing
- : html` this.#onDelete(index)}"
- ?disabled=${this.disabled}
- compact>
-
- `}
-
`;
- }
}
export default UmbInputMultipleTextStringElement;
diff --git a/src/Umbraco.Web.UI.Client/src/core/events/delete.event.ts b/src/Umbraco.Web.UI.Client/src/core/events/delete.event.ts
new file mode 100644
index 0000000000..d690607e0a
--- /dev/null
+++ b/src/Umbraco.Web.UI.Client/src/core/events/delete.event.ts
@@ -0,0 +1,5 @@
+export class UmbDeleteEvent extends Event {
+ public constructor() {
+ super('delete', { bubbles: true, composed: false, cancelable: false });
+ }
+}
diff --git a/src/Umbraco.Web.UI.Client/src/core/events/input.event.ts b/src/Umbraco.Web.UI.Client/src/core/events/input.event.ts
new file mode 100644
index 0000000000..d7f22fe548
--- /dev/null
+++ b/src/Umbraco.Web.UI.Client/src/core/events/input.event.ts
@@ -0,0 +1,6 @@
+export class UmbInputEvent extends Event {
+ public constructor() {
+ // mimics the native input event
+ super('input', { bubbles: true, composed: true, cancelable: false });
+ }
+}