@property()
public set alias(value: string | undefined) {
this.myModalRegistration.setUniquePathValue('propertyAlias', value);
}
@property()
public set variantId(value: string | UmbVariantId | undefined) {
this.myModalRegistration.setUniquePathValue('variantId', value?.toString());
}
private _items = [
{ name: 'Item 1' },
{ name: 'Item 2' },
{ name: 'Item 3' },
]
constructor() {
super();
this.myModalRegistration = new UmbModalRouteRegistrationController(
this,
MY_MODAL_TOKEN
)
.addAdditionalPath(`:index`)
.addUniquePaths(['propertyAlias', 'variantId'])
.onSetup((params) => {
// Get item index:
const indexParam = params.index;
if (!indexParam) return false;
let index: number | null = parseInt(params.index);
if (Number.isNaN(index)) return false;
// Use the index to find data:
let data = null;
if (index >= 0 && index < this._items.length) {
data = this._items[index];
} else {
// If not then make a new pick:
index = null;
}
return {
index: index,
itemData: {
name: data?.name
},
};
})
.onSubmit((submitData) => {
if (!submitData) return;
this._items[submitData.index] = submitData.itemData;
})
.observeRouteBuilder((routeBuilder) => {
this._modalRouteBuilder = routeBuilder;
});
}
render() {
return html`
${this._items?.map((item, index) =>
html`<uui-button look="placeholder" label="Edit item ${index}" .href=${this._modalRouteBuilder?.({ index })}>Add</uui-button>`
)}
`;
}