@nanahoshi/mona-ui 0.20.0 → 0.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/fesm2022/nanahoshi-mona-ui-auto-complete.mjs +46 -36
  2. package/fesm2022/nanahoshi-mona-ui-combo-box.mjs +109 -99
  3. package/fesm2022/nanahoshi-mona-ui-date-picker.mjs +3 -3
  4. package/fesm2022/nanahoshi-mona-ui-datetime-picker.mjs +3 -3
  5. package/fesm2022/nanahoshi-mona-ui-dropdown-list.mjs +37 -27
  6. package/fesm2022/nanahoshi-mona-ui-dropdowns.mjs +5 -4
  7. package/fesm2022/nanahoshi-mona-ui-editor.mjs +3 -3
  8. package/fesm2022/nanahoshi-mona-ui-filter.mjs +1 -1
  9. package/fesm2022/{nanahoshi-mona-ui-grid-grid-footer-cell.component-BuybF7tX.mjs → nanahoshi-mona-ui-grid-grid-footer-cell.component-ZdcR20RJ.mjs} +7 -4
  10. package/fesm2022/{nanahoshi-mona-ui-grid-grid-footer-table-cell.directive-Dj-SaNzk.mjs → nanahoshi-mona-ui-grid-grid-footer-table-cell.directive-Bu093U9J.mjs} +12 -6
  11. package/fesm2022/nanahoshi-mona-ui-grid-grid-list.component-Dtze5qye.mjs +162 -0
  12. package/fesm2022/{nanahoshi-mona-ui-grid-grid-toggle.component-B_Gm--X6.mjs → nanahoshi-mona-ui-grid-grid-toggle.component-DFMbXpKb.mjs} +43 -32
  13. package/fesm2022/nanahoshi-mona-ui-grid-grid-virtual-list.component-xc8ybFkY.mjs +239 -0
  14. package/fesm2022/{nanahoshi-mona-ui-grid-nanahoshi-mona-ui-grid-CyzJFQIy.mjs → nanahoshi-mona-ui-grid-nanahoshi-mona-ui-grid-BGfDw6_5.mjs} +543 -294
  15. package/fesm2022/nanahoshi-mona-ui-grid.mjs +1 -1
  16. package/fesm2022/nanahoshi-mona-ui-list-view.mjs +2 -2
  17. package/fesm2022/nanahoshi-mona-ui-locales.mjs +26 -13
  18. package/fesm2022/nanahoshi-mona-ui-multi-select.mjs +46 -38
  19. package/fesm2022/nanahoshi-mona-ui-pager.mjs +10 -5
  20. package/fesm2022/nanahoshi-mona-ui-sheet.mjs +1 -1
  21. package/fesm2022/nanahoshi-mona-ui-time-picker.mjs +3 -3
  22. package/package.json +1 -1
  23. package/types/nanahoshi-mona-ui-auto-complete.d.ts +19 -18
  24. package/types/nanahoshi-mona-ui-combo-box.d.ts +23 -22
  25. package/types/nanahoshi-mona-ui-dropdown-list.d.ts +18 -17
  26. package/types/nanahoshi-mona-ui-dropdowns.d.ts +6 -4
  27. package/types/nanahoshi-mona-ui-grid.d.ts +80 -40
  28. package/types/nanahoshi-mona-ui-i18n.d.ts +1 -0
  29. package/types/nanahoshi-mona-ui-locales.d.ts +13 -0
  30. package/types/nanahoshi-mona-ui-multi-select.d.ts +20 -19
  31. package/types/nanahoshi-mona-ui-pager.d.ts +1 -0
  32. package/fesm2022/nanahoshi-mona-ui-grid-grid-list.component-CYAm4l84.mjs +0 -145
  33. package/fesm2022/nanahoshi-mona-ui-grid-grid-virtual-list.component-X0X487Rm.mjs +0 -233
@@ -1,2 +1,2 @@
1
- export { C as CellEditEvent, A as GRID_DEFAULT_MESSAGES, B as GridAddCommandDirective, D as GridAddEvent, E as GridCancelCommandDirective, F as GridCancelEvent, H as GridCellTemplateDirective, I as GridColumnComponent, J as GridColumnTitleTemplateDirective, K as GridCommandColumnComponent, L as GridComponent, M as GridContextMenuDirective, N as GridDetailTemplateDirective, O as GridEditCommandDirective, P as GridEditEvent, Q as GridEditTemplateDirective, R as GridEditableDirective, S as GridExportDirective, T as GridFilterableDirective, U as GridFooterTemplateDirective, V as GridGroupFooterTemplateDirective, W as GridGroupableDirective, X as GridHeaderTemplateDirective, Y as GridNoDataTemplateDirective, Z as GridRemoveCommandDirective, _ as GridRemoveEvent, $ as GridReorderableDirective, a0 as GridResizableDirective, a1 as GridRowReorderableDirective, a2 as GridSaveCommandDirective, a3 as GridSaveEvent, a4 as GridSelectableDirective, a5 as GridSortableDirective, a6 as GridStatePersistenceDirective, a7 as GridToolbarTemplateDirective, a8 as GridVirtualScrollDirective, a9 as RowEditEvent, aa as RowReorderEvent } from './nanahoshi-mona-ui-grid-nanahoshi-mona-ui-grid-CyzJFQIy.mjs';
1
+ export { C as CellEditEvent, B as GRID_DEFAULT_MESSAGES, D as GridAddCommandDirective, E as GridAddEvent, F as GridCancelCommandDirective, H as GridCancelEvent, I as GridCellTemplateDirective, J as GridColumnComponent, K as GridColumnTitleTemplateDirective, L as GridCommandColumnComponent, M as GridComponent, N as GridContextMenuDirective, O as GridDetailTemplateDirective, P as GridEditCommandDirective, Q as GridEditEvent, R as GridEditTemplateDirective, S as GridEditableDirective, T as GridExportDirective, U as GridFilterableDirective, V as GridFooterTemplateDirective, W as GridGroupFooterTemplateDirective, X as GridGroupableDirective, Y as GridHeaderTemplateDirective, Z as GridNoDataTemplateDirective, _ as GridRemoveCommandDirective, $ as GridRemoveEvent, a0 as GridReorderableDirective, a1 as GridResizableDirective, a2 as GridRowReorderableDirective, a3 as GridSaveCommandDirective, a4 as GridSaveEvent, a5 as GridSelectableDirective, a6 as GridServerBindingDirective, a7 as GridSortableDirective, a8 as GridStatePersistenceDirective, a9 as GridToolbarTemplateDirective, aa as GridVirtualScrollDirective, ab as RowEditEvent, ac as RowReorderEvent } from './nanahoshi-mona-ui-grid-nanahoshi-mona-ui-grid-BGfDw6_5.mjs';
2
2
  //# sourceMappingURL=nanahoshi-mona-ui-grid.mjs.map
@@ -274,7 +274,7 @@ class ListViewComponent {
274
274
  },
275
275
  deps: [[new Optional(), new SkipSelf(), ListService]]
276
276
  }
277
- ], queries: [{ propertyName: "footerTemplate", first: true, predicate: ListViewFooterTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "groupHeaderTemplate", first: true, predicate: ListViewGroupHeaderTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "headerTemplate", first: true, predicate: ListViewHeaderTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "itemTemplate", first: true, predicate: ListViewItemTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "noDataTemplate", first: true, predicate: ListViewNoDataTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }], ngImport: i0, template: "<mona-list\n [ariaLabel]=\"ariaLabel()\"\n [data]=\"viewItems()\"\n [height]=\"listHeight()\"\n [width]=\"listWidth()\"\n [maxHeight]=\"listMaxHeight()\"\n [maxWidth]=\"listMaxWidth()\"\n [listItemClass]=\"listItemClass()\"\n [listItemStyle]=\"listItemStyle()\"\n [listClass]=\"listClass()\"\n [listStyle]=\"listStyle()\">\n @if (footerTemplate()) {\n <ng-template monaListFooterTemplate>\n <ng-container [ngTemplateOutlet]=\"footerTemplate() ?? null\"></ng-container>\n </ng-template>\n }\n @if (groupHeaderTemplate()) {\n <ng-template monaListGroupHeaderTemplate let-groupHeader>\n <ng-container\n [ngTemplateOutlet]=\"groupHeaderTemplate() ?? null\"\n [ngTemplateOutletContext]=\"{ $implicit: groupHeader }\"></ng-container>\n </ng-template>\n }\n @if (headerTemplate()) {\n <ng-template monaListHeaderTemplate>\n <ng-container [ngTemplateOutlet]=\"headerTemplate() ?? null\"></ng-container>\n </ng-template>\n }\n @if (itemTemplate()) {\n <ng-template monaListItemTemplate let-dataItem>\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate() ?? null\"\n [ngTemplateOutletContext]=\"{ $implicit: dataItem }\"></ng-container>\n </ng-template>\n }\n @if (noDataTemplate()) {\n <ng-template monaListNoDataTemplate>\n <ng-container [ngTemplateOutlet]=\"noDataTemplate() ?? null\"></ng-container>\n </ng-template>\n }\n</mona-list>\n\n@let pageableOptions = listService.pageableOptions();\n@if (pageableOptions.enabled && !listService.virtualScrollOptions().enabled && viewItems().length > 0) {\n @let pageState = listService.pageState();\n <div class=\"mona-list-view-pager\">\n <mona-pager\n [firstLast]=\"pageableOptions.firstLast\"\n [pageSizeValues]=\"pageableOptions.pageSizeValues\"\n [visiblePages]=\"pageableOptions.visiblePages\"\n [total]=\"itemCount()\"\n [skip]=\"pageState.skip\"\n [responsive]=\"false\"\n [rounded]=\"rounded()\"\n [pageSize]=\"pageState.take\"\n [previousNext]=\"pageableOptions.previousNext\"\n [showInfo]=\"pageableOptions.showInfo\"\n [size]=\"size()\"\n (pageChange)=\"onPageChange($event)\"\n (pageSizeChange)=\"onPageSizeChange($event)\"\n class=\"border-b-0 border-x-0 rounded-t-none\"></mona-pager>\n </div>\n}\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: PagerComponent, selector: "mona-pager", inputs: ["firstLast", "navigable", "pageInput", "pageSize", "pageSizeValues", "previousNext", "responsive", "rounded", "showInfo", "size", "skip", "total", "type", "class", "visiblePages"], outputs: ["pageChange", "pageSizeChange"] }, { kind: "component", type: ListComponent, selector: "mona-list", inputs: ["ariaLabel", "data", "focusOnMount", "height", "listClass", "listId", "listItemClass", "listItemStyle", "listStyle", "maxHeight", "maxWidth", "size", "textField", "width"], outputs: ["itemSelect"] }, { kind: "directive", type: ListHeaderTemplateDirective, selector: "ng-template[monaListHeaderTemplate]" }, { kind: "directive", type: ListFooterTemplateDirective, selector: "ng-template[monaListFooterTemplate]" }, { kind: "directive", type: ListGroupHeaderTemplateDirective, selector: "ng-template[monaListGroupHeaderTemplate]" }, { kind: "directive", type: ListItemTemplateDirective, selector: "ng-template[monaListItemTemplate]" }, { kind: "directive", type: ListNoDataTemplateDirective, selector: "ng-template[monaListNoDataTemplate]" }] }); }
277
+ ], queries: [{ propertyName: "footerTemplate", first: true, predicate: ListViewFooterTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "groupHeaderTemplate", first: true, predicate: ListViewGroupHeaderTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "headerTemplate", first: true, predicate: ListViewHeaderTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "itemTemplate", first: true, predicate: ListViewItemTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "noDataTemplate", first: true, predicate: ListViewNoDataTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }], ngImport: i0, template: "<mona-list\n [ariaLabel]=\"ariaLabel()\"\n [data]=\"viewItems()\"\n [height]=\"listHeight()\"\n [focusOnMount]=\"false\"\n [width]=\"listWidth()\"\n [maxHeight]=\"listMaxHeight()\"\n [maxWidth]=\"listMaxWidth()\"\n [listItemClass]=\"listItemClass()\"\n [listItemStyle]=\"listItemStyle()\"\n [listClass]=\"listClass()\"\n [listStyle]=\"listStyle()\">\n @if (footerTemplate()) {\n <ng-template monaListFooterTemplate>\n <ng-container [ngTemplateOutlet]=\"footerTemplate() ?? null\"></ng-container>\n </ng-template>\n }\n @if (groupHeaderTemplate()) {\n <ng-template monaListGroupHeaderTemplate let-groupHeader>\n <ng-container\n [ngTemplateOutlet]=\"groupHeaderTemplate() ?? null\"\n [ngTemplateOutletContext]=\"{ $implicit: groupHeader }\"></ng-container>\n </ng-template>\n }\n @if (headerTemplate()) {\n <ng-template monaListHeaderTemplate>\n <ng-container [ngTemplateOutlet]=\"headerTemplate() ?? null\"></ng-container>\n </ng-template>\n }\n @if (itemTemplate()) {\n <ng-template monaListItemTemplate let-dataItem>\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate() ?? null\"\n [ngTemplateOutletContext]=\"{ $implicit: dataItem }\"></ng-container>\n </ng-template>\n }\n @if (noDataTemplate()) {\n <ng-template monaListNoDataTemplate>\n <ng-container [ngTemplateOutlet]=\"noDataTemplate() ?? null\"></ng-container>\n </ng-template>\n }\n</mona-list>\n\n@let pageableOptions = listService.pageableOptions();\n@if (pageableOptions.enabled && !listService.virtualScrollOptions().enabled && viewItems().length > 0) {\n @let pageState = listService.pageState();\n <mona-pager\n [firstLast]=\"pageableOptions.firstLast\"\n [pageSizeValues]=\"pageableOptions.pageSizeValues\"\n [visiblePages]=\"pageableOptions.visiblePages\"\n [total]=\"itemCount()\"\n [skip]=\"pageState.skip\"\n [responsive]=\"false\"\n [rounded]=\"rounded()\"\n [pageSize]=\"pageState.take\"\n [previousNext]=\"pageableOptions.previousNext\"\n [showInfo]=\"pageableOptions.showInfo\"\n [size]=\"size()\"\n (pageChange)=\"onPageChange($event)\"\n (pageSizeChange)=\"onPageSizeChange($event)\"\n class=\"border-b-0 border-x-0 rounded-t-none\"></mona-pager>\n}\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: PagerComponent, selector: "mona-pager", inputs: ["firstLast", "navigable", "pageInput", "pageSize", "pageSizeValues", "previousNext", "responsive", "rounded", "showInfo", "size", "skip", "total", "type", "class", "visiblePages"], outputs: ["pageChange", "pageSizeChange"] }, { kind: "component", type: ListComponent, selector: "mona-list", inputs: ["ariaLabel", "data", "focusOnMount", "height", "listClass", "listId", "listItemClass", "listItemStyle", "listStyle", "maxHeight", "maxWidth", "size", "textField", "width"], outputs: ["itemSelect"] }, { kind: "directive", type: ListHeaderTemplateDirective, selector: "ng-template[monaListHeaderTemplate]" }, { kind: "directive", type: ListFooterTemplateDirective, selector: "ng-template[monaListFooterTemplate]" }, { kind: "directive", type: ListGroupHeaderTemplateDirective, selector: "ng-template[monaListGroupHeaderTemplate]" }, { kind: "directive", type: ListItemTemplateDirective, selector: "ng-template[monaListItemTemplate]" }, { kind: "directive", type: ListNoDataTemplateDirective, selector: "ng-template[monaListNoDataTemplate]" }] }); }
278
278
  }
279
279
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: ListViewComponent, decorators: [{
280
280
  type: Component,
@@ -298,7 +298,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
298
298
  ], host: {
299
299
  "[class]": "baseClasses()",
300
300
  "[attr.tabindex]": "-1"
301
- }, template: "<mona-list\n [ariaLabel]=\"ariaLabel()\"\n [data]=\"viewItems()\"\n [height]=\"listHeight()\"\n [width]=\"listWidth()\"\n [maxHeight]=\"listMaxHeight()\"\n [maxWidth]=\"listMaxWidth()\"\n [listItemClass]=\"listItemClass()\"\n [listItemStyle]=\"listItemStyle()\"\n [listClass]=\"listClass()\"\n [listStyle]=\"listStyle()\">\n @if (footerTemplate()) {\n <ng-template monaListFooterTemplate>\n <ng-container [ngTemplateOutlet]=\"footerTemplate() ?? null\"></ng-container>\n </ng-template>\n }\n @if (groupHeaderTemplate()) {\n <ng-template monaListGroupHeaderTemplate let-groupHeader>\n <ng-container\n [ngTemplateOutlet]=\"groupHeaderTemplate() ?? null\"\n [ngTemplateOutletContext]=\"{ $implicit: groupHeader }\"></ng-container>\n </ng-template>\n }\n @if (headerTemplate()) {\n <ng-template monaListHeaderTemplate>\n <ng-container [ngTemplateOutlet]=\"headerTemplate() ?? null\"></ng-container>\n </ng-template>\n }\n @if (itemTemplate()) {\n <ng-template monaListItemTemplate let-dataItem>\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate() ?? null\"\n [ngTemplateOutletContext]=\"{ $implicit: dataItem }\"></ng-container>\n </ng-template>\n }\n @if (noDataTemplate()) {\n <ng-template monaListNoDataTemplate>\n <ng-container [ngTemplateOutlet]=\"noDataTemplate() ?? null\"></ng-container>\n </ng-template>\n }\n</mona-list>\n\n@let pageableOptions = listService.pageableOptions();\n@if (pageableOptions.enabled && !listService.virtualScrollOptions().enabled && viewItems().length > 0) {\n @let pageState = listService.pageState();\n <div class=\"mona-list-view-pager\">\n <mona-pager\n [firstLast]=\"pageableOptions.firstLast\"\n [pageSizeValues]=\"pageableOptions.pageSizeValues\"\n [visiblePages]=\"pageableOptions.visiblePages\"\n [total]=\"itemCount()\"\n [skip]=\"pageState.skip\"\n [responsive]=\"false\"\n [rounded]=\"rounded()\"\n [pageSize]=\"pageState.take\"\n [previousNext]=\"pageableOptions.previousNext\"\n [showInfo]=\"pageableOptions.showInfo\"\n [size]=\"size()\"\n (pageChange)=\"onPageChange($event)\"\n (pageSizeChange)=\"onPageSizeChange($event)\"\n class=\"border-b-0 border-x-0 rounded-t-none\"></mona-pager>\n </div>\n}\n" }]
301
+ }, template: "<mona-list\n [ariaLabel]=\"ariaLabel()\"\n [data]=\"viewItems()\"\n [height]=\"listHeight()\"\n [focusOnMount]=\"false\"\n [width]=\"listWidth()\"\n [maxHeight]=\"listMaxHeight()\"\n [maxWidth]=\"listMaxWidth()\"\n [listItemClass]=\"listItemClass()\"\n [listItemStyle]=\"listItemStyle()\"\n [listClass]=\"listClass()\"\n [listStyle]=\"listStyle()\">\n @if (footerTemplate()) {\n <ng-template monaListFooterTemplate>\n <ng-container [ngTemplateOutlet]=\"footerTemplate() ?? null\"></ng-container>\n </ng-template>\n }\n @if (groupHeaderTemplate()) {\n <ng-template monaListGroupHeaderTemplate let-groupHeader>\n <ng-container\n [ngTemplateOutlet]=\"groupHeaderTemplate() ?? null\"\n [ngTemplateOutletContext]=\"{ $implicit: groupHeader }\"></ng-container>\n </ng-template>\n }\n @if (headerTemplate()) {\n <ng-template monaListHeaderTemplate>\n <ng-container [ngTemplateOutlet]=\"headerTemplate() ?? null\"></ng-container>\n </ng-template>\n }\n @if (itemTemplate()) {\n <ng-template monaListItemTemplate let-dataItem>\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate() ?? null\"\n [ngTemplateOutletContext]=\"{ $implicit: dataItem }\"></ng-container>\n </ng-template>\n }\n @if (noDataTemplate()) {\n <ng-template monaListNoDataTemplate>\n <ng-container [ngTemplateOutlet]=\"noDataTemplate() ?? null\"></ng-container>\n </ng-template>\n }\n</mona-list>\n\n@let pageableOptions = listService.pageableOptions();\n@if (pageableOptions.enabled && !listService.virtualScrollOptions().enabled && viewItems().length > 0) {\n @let pageState = listService.pageState();\n <mona-pager\n [firstLast]=\"pageableOptions.firstLast\"\n [pageSizeValues]=\"pageableOptions.pageSizeValues\"\n [visiblePages]=\"pageableOptions.visiblePages\"\n [total]=\"itemCount()\"\n [skip]=\"pageState.skip\"\n [responsive]=\"false\"\n [rounded]=\"rounded()\"\n [pageSize]=\"pageState.take\"\n [previousNext]=\"pageableOptions.previousNext\"\n [showInfo]=\"pageableOptions.showInfo\"\n [size]=\"size()\"\n (pageChange)=\"onPageChange($event)\"\n (pageSizeChange)=\"onPageSizeChange($event)\"\n class=\"border-b-0 border-x-0 rounded-t-none\"></mona-pager>\n}\n" }]
302
302
  }], ctorParameters: () => [], propDecorators: { footerTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => ListViewFooterTemplateDirective), { ...{ read: TemplateRef }, isSignal: true }] }], groupHeaderTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => ListViewGroupHeaderTemplateDirective), { ...{ read: TemplateRef }, isSignal: true }] }], headerTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => ListViewHeaderTemplateDirective), { ...{ read: TemplateRef }, isSignal: true }] }], itemTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => ListViewItemTemplateDirective), { ...{ read: TemplateRef }, isSignal: true }] }], noDataTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => ListViewNoDataTemplateDirective), { ...{ read: TemplateRef }, isSignal: true }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-label", required: false }] }], height: [{ type: i0.Input, args: [{ isSignal: true, alias: "height", required: false }] }], items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: false }] }], listClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "listClass", required: false }] }], listItemClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "listItemClass", required: false }] }], listItemStyle: [{ type: i0.Input, args: [{ isSignal: true, alias: "listItemStyle", required: false }] }], listStyle: [{ type: i0.Input, args: [{ isSignal: true, alias: "listStyle", required: false }] }], maxHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxHeight", required: false }] }], maxWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxWidth", required: false }] }], rounded: [{ type: i0.Input, args: [{ isSignal: true, alias: "rounded", required: false }] }], scrollBottom: [{ type: i0.Output, args: ["scrollBottom"] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], textField: [{ type: i0.Input, args: [{ isSignal: true, alias: "textField", required: false }] }], userClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }], width: [{ type: i0.Input, args: [{ isSignal: true, alias: "width", required: false }] }] } });
303
303
 
304
304
  class ListViewGroupableDirective {
@@ -246,6 +246,7 @@ const AR_SA_MESSAGES = {
246
246
  rowReorderDisabledEditing: "أكمل التحرير قبل إعادة ترتيب الصفوف.",
247
247
  rowReorderDisabledFiltered: "امسح التصفية قبل إعادة ترتيب الصفوف.",
248
248
  rowReorderDisabledGrouped: "ألغِ التجميع قبل إعادة ترتيب الصفوف.",
249
+ rowReorderDisabledServerBinding: "لا يمكن إعادة ترتيب الصفوف مع ربط الخادم.",
249
250
  rowReorderDisabledSingleRow: "يلزم صفّان على الأقل لإعادة ترتيب الصفوف.",
250
251
  rowReorderDisabledSorted: "ألغِ الفرز قبل إعادة ترتيب الصفوف.",
251
252
  rowReorderDisabledVirtualScroll: "لا يمكن إعادة ترتيب الصفوف أثناء استخدام التمرير الافتراضي.",
@@ -624,6 +625,7 @@ const ES_ES_MESSAGES = {
624
625
  rowReorderDisabledEditing: "Termina la edición para reordenar las filas.",
625
626
  rowReorderDisabledFiltered: "Limpia los filtros para reordenar las filas.",
626
627
  rowReorderDisabledGrouped: "Quita la agrupación para reordenar las filas.",
628
+ rowReorderDisabledServerBinding: "No se pueden reordenar filas con vinculación al servidor.",
627
629
  rowReorderDisabledSingleRow: "Se necesitan al menos dos filas para reordenarlas.",
628
630
  rowReorderDisabledSorted: "Quita la ordenación para reordenar las filas.",
629
631
  rowReorderDisabledVirtualScroll: "La reordenación de filas no está disponible mientras el desplazamiento virtual está activado.",
@@ -669,8 +671,8 @@ const ES_ES_MESSAGES = {
669
671
  },
670
672
  pager: {
671
673
  firstPageLabel: "Primera página",
672
- jumpBackwardLabel: (pages) => pages === 1 ? "Retroceder 1 página" : `Retroceder ${pages} páginas`,
673
- jumpForwardLabel: (pages) => pages === 1 ? "Avanzar 1 página" : `Avanzar ${pages} páginas`,
674
+ jumpBackwardLabel: (pages) => (pages === 1 ? "Retroceder 1 página" : `Retroceder ${pages} páginas`),
675
+ jumpForwardLabel: (pages) => (pages === 1 ? "Avanzar 1 página" : `Avanzar ${pages} páginas`),
674
676
  lastPageLabel: "Última página",
675
677
  nextPageLabel: "Página siguiente",
676
678
  ofText: "de",
@@ -891,7 +893,7 @@ const DE_DE_MESSAGES = {
891
893
  dropdowns: {
892
894
  itemPosition: (text, position, total) => `${text}, ${position} von ${total}`,
893
895
  noResultsFound: "Keine Ergebnisse gefunden",
894
- resultsAvailable: (count) => count === 1 ? "1 Ergebnis verfügbar" : `${count} Ergebnisse verfügbar`
896
+ resultsAvailable: (count) => (count === 1 ? "1 Ergebnis verfügbar" : `${count} Ergebnisse verfügbar`)
895
897
  },
896
898
  editor: {
897
899
  addColumnAfter: "Spalte danach einfügen",
@@ -978,7 +980,7 @@ const DE_DE_MESSAGES = {
978
980
  cancel: "Abbrechen",
979
981
  cancelRowEdit: "Zeilenbearbeitung abbrechen",
980
982
  columns: "Spalten",
981
- columnsSelected: (count) => count === 1 ? "1 Spalte ausgewählt" : `${count} Spalten ausgewählt`,
983
+ columnsSelected: (count) => (count === 1 ? "1 Spalte ausgewählt" : `${count} Spalten ausgewählt`),
982
984
  delete: "Löschen",
983
985
  deleteRowConfirmation: "Diese Zeile wirklich löschen?",
984
986
  deleteRowTitle: "Zeile löschen?",
@@ -1002,6 +1004,7 @@ const DE_DE_MESSAGES = {
1002
1004
  rowReorderDisabledEditing: "Bearbeitung abschließen, um Zeilen neu anzuordnen.",
1003
1005
  rowReorderDisabledFiltered: "Filter aufheben, um Zeilen neu anzuordnen.",
1004
1006
  rowReorderDisabledGrouped: "Gruppierung aufheben, um Zeilen neu anzuordnen.",
1007
+ rowReorderDisabledServerBinding: "Bei Serverbindung können Zeilen nicht neu angeordnet werden.",
1005
1008
  rowReorderDisabledSingleRow: "Zum Neuanordnen sind mindestens zwei Zeilen erforderlich.",
1006
1009
  rowReorderDisabledSorted: "Sortierung aufheben, um Zeilen neu anzuordnen.",
1007
1010
  rowReorderDisabledVirtualScroll: "Bei aktiviertem virtuellem Scrollen können Zeilen nicht neu angeordnet werden.",
@@ -1269,7 +1272,7 @@ const FR_FR_MESSAGES = {
1269
1272
  dropdowns: {
1270
1273
  itemPosition: (text, position, total) => `${text}, ${position} sur ${total}`,
1271
1274
  noResultsFound: "Aucun résultat trouvé",
1272
- resultsAvailable: (count) => count === 1 ? "1 résultat disponible" : `${count} résultats disponibles`
1275
+ resultsAvailable: (count) => (count === 1 ? "1 résultat disponible" : `${count} résultats disponibles`)
1273
1276
  },
1274
1277
  editor: {
1275
1278
  addColumnAfter: "Insérer une colonne après",
@@ -1380,6 +1383,7 @@ const FR_FR_MESSAGES = {
1380
1383
  rowReorderDisabledEditing: "Terminez la modification avant de réordonner les lignes.",
1381
1384
  rowReorderDisabledFiltered: "Supprimez les filtres avant de réordonner les lignes.",
1382
1385
  rowReorderDisabledGrouped: "Supprimez le regroupement avant de réordonner les lignes.",
1386
+ rowReorderDisabledServerBinding: "La réorganisation des lignes est indisponible avec la liaison serveur.",
1383
1387
  rowReorderDisabledSingleRow: "Au moins deux lignes sont nécessaires pour les réordonner.",
1384
1388
  rowReorderDisabledSorted: "Supprimez le tri avant de réordonner les lignes.",
1385
1389
  rowReorderDisabledVirtualScroll: "La réorganisation des lignes n’est pas disponible lorsque le défilement virtuel est activé.",
@@ -1425,8 +1429,8 @@ const FR_FR_MESSAGES = {
1425
1429
  },
1426
1430
  pager: {
1427
1431
  firstPageLabel: "Première page",
1428
- jumpBackwardLabel: (pages) => pages === 1 ? "Reculer de 1 page" : `Reculer de ${pages} pages`,
1429
- jumpForwardLabel: (pages) => pages === 1 ? "Avancer de 1 page" : `Avancer de ${pages} pages`,
1432
+ jumpBackwardLabel: (pages) => (pages === 1 ? "Reculer de 1 page" : `Reculer de ${pages} pages`),
1433
+ jumpForwardLabel: (pages) => (pages === 1 ? "Avancer de 1 page" : `Avancer de ${pages} pages`),
1430
1434
  lastPageLabel: "Dernière page",
1431
1435
  nextPageLabel: "Page suivante",
1432
1436
  ofText: "sur",
@@ -1734,7 +1738,7 @@ const IT_IT_MESSAGES = {
1734
1738
  cancel: "Annulla",
1735
1739
  cancelRowEdit: "Annulla modifica della riga",
1736
1740
  columns: "Colonne",
1737
- columnsSelected: (count) => count === 1 ? "1 colonna selezionata" : `${count} colonne selezionate`,
1741
+ columnsSelected: (count) => (count === 1 ? "1 colonna selezionata" : `${count} colonne selezionate`),
1738
1742
  delete: "Elimina",
1739
1743
  deleteRowConfirmation: "Sei sicuro di voler eliminare questo elemento?",
1740
1744
  deleteRowTitle: "Eliminare la riga?",
@@ -1758,6 +1762,7 @@ const IT_IT_MESSAGES = {
1758
1762
  rowReorderDisabledEditing: "Completa la modifica prima di riordinare le righe.",
1759
1763
  rowReorderDisabledFiltered: "Rimuovi i filtri prima di riordinare le righe.",
1760
1764
  rowReorderDisabledGrouped: "Rimuovi il raggruppamento prima di riordinare le righe.",
1765
+ rowReorderDisabledServerBinding: "Il riordino delle righe non è disponibile con il binding al server.",
1761
1766
  rowReorderDisabledSingleRow: "Sono necessarie almeno due righe per riordinarle.",
1762
1767
  rowReorderDisabledSorted: "Rimuovi l'ordinamento prima di riordinare le righe.",
1763
1768
  rowReorderDisabledVirtualScroll: "Il riordinamento delle righe non è disponibile con lo scorrimento virtuale attivo.",
@@ -1804,7 +1809,7 @@ const IT_IT_MESSAGES = {
1804
1809
  pager: {
1805
1810
  firstPageLabel: "Prima pagina",
1806
1811
  jumpBackwardLabel: (pages) => pages === 1 ? "Torna indietro di 1 pagina" : `Torna indietro di ${pages} pagine`,
1807
- jumpForwardLabel: (pages) => pages === 1 ? "Avanza di 1 pagina" : `Avanza di ${pages} pagine`,
1812
+ jumpForwardLabel: (pages) => (pages === 1 ? "Avanza di 1 pagina" : `Avanza di ${pages} pagine`),
1808
1813
  lastPageLabel: "Ultima pagina",
1809
1814
  nextPageLabel: "Pagina successiva",
1810
1815
  ofText: "di",
@@ -2136,6 +2141,7 @@ const JA_JP_MESSAGES = {
2136
2141
  rowReorderDisabledEditing: "行を並べ替える前に編集を完了してください。",
2137
2142
  rowReorderDisabledFiltered: "行を並べ替える前にフィルターを解除してください。",
2138
2143
  rowReorderDisabledGrouped: "行を並べ替える前にグループ化を解除してください。",
2144
+ rowReorderDisabledServerBinding: "サーバーバインディングでは行を並べ替えられません。",
2139
2145
  rowReorderDisabledSingleRow: "行を並べ替えるには2行以上必要です。",
2140
2146
  rowReorderDisabledSorted: "行を並べ替える前にソートを解除してください。",
2141
2147
  rowReorderDisabledVirtualScroll: "仮想スクロールが有効な場合、行の並べ替えは使用できません。",
@@ -2514,6 +2520,7 @@ const KO_KR_MESSAGES = {
2514
2520
  rowReorderDisabledEditing: "편집을 완료한 후 행 순서를 변경하세요.",
2515
2521
  rowReorderDisabledFiltered: "필터를 지운 후 행 순서를 변경하세요.",
2516
2522
  rowReorderDisabledGrouped: "그룹화를 해제한 후 행 순서를 변경하세요.",
2523
+ rowReorderDisabledServerBinding: "서버 바인딩에서는 행 순서를 변경할 수 없습니다.",
2517
2524
  rowReorderDisabledSingleRow: "행 순서를 변경하려면 행이 두 개 이상 필요합니다.",
2518
2525
  rowReorderDisabledSorted: "정렬을 해제한 후 행 순서를 변경하세요.",
2519
2526
  rowReorderDisabledVirtualScroll: "가상 스크롤을 사용하는 동안에는 행 순서를 변경할 수 없습니다.",
@@ -2868,7 +2875,7 @@ const PT_BR_MESSAGES = {
2868
2875
  cancel: "Cancelar",
2869
2876
  cancelRowEdit: "Cancelar edição da linha",
2870
2877
  columns: "Colunas",
2871
- columnsSelected: (count) => count === 1 ? "1 coluna selecionada" : `${count} colunas selecionadas`,
2878
+ columnsSelected: (count) => (count === 1 ? "1 coluna selecionada" : `${count} colunas selecionadas`),
2872
2879
  delete: "Excluir",
2873
2880
  deleteRowConfirmation: "Tem certeza de que deseja excluir este item?",
2874
2881
  deleteRowTitle: "Excluir linha?",
@@ -2892,6 +2899,7 @@ const PT_BR_MESSAGES = {
2892
2899
  rowReorderDisabledEditing: "Conclua a edição antes de reordenar as linhas.",
2893
2900
  rowReorderDisabledFiltered: "Remova os filtros antes de reordenar as linhas.",
2894
2901
  rowReorderDisabledGrouped: "Remova o agrupamento antes de reordenar as linhas.",
2902
+ rowReorderDisabledServerBinding: "A reordenação de linhas não está disponível com vinculação ao servidor.",
2895
2903
  rowReorderDisabledSingleRow: "São necessárias pelo menos duas linhas para reordenar.",
2896
2904
  rowReorderDisabledSorted: "Remova a ordenação antes de reordenar as linhas.",
2897
2905
  rowReorderDisabledVirtualScroll: "A reordenação de linhas não está disponível com a rolagem virtual ativada.",
@@ -2937,8 +2945,8 @@ const PT_BR_MESSAGES = {
2937
2945
  },
2938
2946
  pager: {
2939
2947
  firstPageLabel: "Primeira página",
2940
- jumpBackwardLabel: (pages) => pages === 1 ? "Retroceder 1 página" : `Retroceder ${pages} páginas`,
2941
- jumpForwardLabel: (pages) => pages === 1 ? "Avançar 1 página" : `Avançar ${pages} páginas`,
2948
+ jumpBackwardLabel: (pages) => (pages === 1 ? "Retroceder 1 página" : `Retroceder ${pages} páginas`),
2949
+ jumpForwardLabel: (pages) => (pages === 1 ? "Avançar 1 página" : `Avançar ${pages} páginas`),
2942
2950
  lastPageLabel: "Última página",
2943
2951
  nextPageLabel: "Próxima página",
2944
2952
  ofText: "de",
@@ -3270,6 +3278,7 @@ const ZH_CN_MESSAGES = {
3270
3278
  rowReorderDisabledEditing: "请完成编辑后再重新排列行。",
3271
3279
  rowReorderDisabledFiltered: "请清除筛选后再重新排列行。",
3272
3280
  rowReorderDisabledGrouped: "请清除分组后再重新排列行。",
3281
+ rowReorderDisabledServerBinding: "服务器绑定时无法重新排列行。",
3273
3282
  rowReorderDisabledSingleRow: "至少需要两行才能重新排列。",
3274
3283
  rowReorderDisabledSorted: "请清除排序后再重新排列行。",
3275
3284
  rowReorderDisabledVirtualScroll: "启用虚拟滚动时无法重新排列行。",
@@ -3648,6 +3657,7 @@ const ZH_TW_MESSAGES = {
3648
3657
  rowReorderDisabledEditing: "請完成編輯後再重新排列資料列。",
3649
3658
  rowReorderDisabledFiltered: "請清除篩選後再重新排列資料列。",
3650
3659
  rowReorderDisabledGrouped: "請清除群組後再重新排列資料列。",
3660
+ rowReorderDisabledServerBinding: "伺服器繫結時無法重新排列資料列。",
3651
3661
  rowReorderDisabledSingleRow: "至少需要兩個資料列才能重新排序。",
3652
3662
  rowReorderDisabledSorted: "請清除排序後再重新排列資料列。",
3653
3663
  rowReorderDisabledVirtualScroll: "啟用虛擬捲動時無法重新排列資料列。",
@@ -4026,6 +4036,7 @@ const TR_TR_MESSAGES = {
4026
4036
  rowReorderDisabledEditing: "Satırları yeniden sıralamadan önce düzenlemeyi tamamlayın.",
4027
4037
  rowReorderDisabledFiltered: "Satırları yeniden sıralamadan önce filtreleri kaldırın.",
4028
4038
  rowReorderDisabledGrouped: "Satırları yeniden sıralamadan önce gruplamayı kaldırın.",
4039
+ rowReorderDisabledServerBinding: "Sunucu bağlaması etkinken satırlar yeniden sıralanamaz.",
4029
4040
  rowReorderDisabledSingleRow: "Yeniden sıralamak için en az iki satır gerekir.",
4030
4041
  rowReorderDisabledSorted: "Satırları yeniden sıralamadan önce sıralamayı kaldırın.",
4031
4042
  rowReorderDisabledVirtualScroll: "Sanal kaydırma etkinken satırlar yeniden sıralanamaz.",
@@ -4404,6 +4415,7 @@ const ID_ID_MESSAGES = {
4404
4415
  rowReorderDisabledEditing: "Selesaikan pengeditan sebelum menyusun ulang baris.",
4405
4416
  rowReorderDisabledFiltered: "Hapus filter sebelum menyusun ulang baris.",
4406
4417
  rowReorderDisabledGrouped: "Hapus pengelompokan sebelum menyusun ulang baris.",
4418
+ rowReorderDisabledServerBinding: "Baris tidak dapat disusun ulang saat pengikatan server aktif.",
4407
4419
  rowReorderDisabledSingleRow: "Diperlukan setidaknya dua baris untuk menyusun ulang.",
4408
4420
  rowReorderDisabledSorted: "Hapus pengurutan sebelum menyusun ulang baris.",
4409
4421
  rowReorderDisabledVirtualScroll: "Baris tidak dapat disusun ulang saat pengguliran virtual aktif.",
@@ -4811,6 +4823,7 @@ const RU_RU_MESSAGES = {
4811
4823
  rowReorderDisabledEditing: "Завершите редактирование перед изменением порядка строк.",
4812
4824
  rowReorderDisabledFiltered: "Очистите фильтры перед изменением порядка строк.",
4813
4825
  rowReorderDisabledGrouped: "Отмените группировку перед изменением порядка строк.",
4826
+ rowReorderDisabledServerBinding: "Изменение порядка строк недоступно при привязке к серверу.",
4814
4827
  rowReorderDisabledSingleRow: "Для изменения порядка нужны как минимум две строки.",
4815
4828
  rowReorderDisabledSorted: "Сбросьте сортировку перед изменением порядка строк.",
4816
4829
  rowReorderDisabledVirtualScroll: "Нельзя изменять порядок строк при включённой виртуальной прокрутке.",
@@ -4896,7 +4909,7 @@ const RU_RU_MESSAGES = {
4896
4909
  },
4897
4910
  splitButton: {
4898
4911
  menuButtonAriaLabel: "Показать параметры меню",
4899
- splitButton: (text) => text ? `${text}, разделённая кнопка` : "Разделённая кнопка"
4912
+ splitButton: (text) => (text ? `${text}, разделённая кнопка` : "Разделённая кнопка")
4900
4913
  },
4901
4914
  splitter: {
4902
4915
  collapseDown: "Свернуть нижнюю панель",
@@ -5,7 +5,7 @@ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
5
5
  import { none } from '@mirei/ts-collections';
6
6
  import { ChipComponent } from '@nanahoshi/mona-ui/chip';
7
7
  import * as i1 from '@nanahoshi/mona-ui/dropdowns';
8
- import { DropdownService, DropdownFooterTemplateDirective, DropdownGroupHeaderTemplateDirective, DropdownHeaderTemplateDirective, DropdownItemTemplateDirective, dropdownPopupThemeVariants, DropdownNoDataTemplateDirective, DropdownPrefixTemplateDirective, DropdownLiveRegionDirective, DropdownDataInputToken, DropdownPopupInputToken, DropdownDataHandlerDirective, DropdownListPopupHandlerDirective } from '@nanahoshi/mona-ui/dropdowns';
8
+ import { DropdownService, DropdownFooterTemplateDirective, DropdownGroupHeaderTemplateDirective, DropdownHeaderTemplateDirective, DropdownItemTemplateDirective, dropdownPopupThemeVariants, DropdownNoDataTemplateDirective, DropdownPrefixTemplateDirective, DropdownLiveRegionDirective, DropdownDataInputToken, DROPDOWN_POPUP_INPUT_TOKEN, DropdownDataHandlerDirective, DropdownListPopupHandlerDirective } from '@nanahoshi/mona-ui/dropdowns';
9
9
  import { MonaI18nService } from '@nanahoshi/mona-ui/i18n';
10
10
  import { themeControlSurfaceClasses, createElementControlId, restoreOverlayScroll, rxFromResize } from '@nanahoshi/mona-ui/internal';
11
11
  import { IndicatorIconComponent } from '@nanahoshi/mona-ui/internal/indicator-icon';
@@ -154,13 +154,13 @@ class MultiSelectComponent {
154
154
  this.footerTemplate = contentChild(DropdownFooterTemplateDirective, { ...(ngDevMode ? { debugName: "footerTemplate" } : /* istanbul ignore next */ {}), read: TemplateRef });
155
155
  this.groupHeaderTemplate = contentChild(DropdownGroupHeaderTemplateDirective, { ...(ngDevMode ? { debugName: "groupHeaderTemplate" } : /* istanbul ignore next */ {}), read: TemplateRef });
156
156
  this.headerTemplate = contentChild(DropdownHeaderTemplateDirective, { ...(ngDevMode ? { debugName: "headerTemplate" } : /* istanbul ignore next */ {}), read: TemplateRef });
157
- this.invalidState = computed(() => this.touched() && (this.invalid() || (this.required() && none(this.value()))), /* @ts-ignore */
158
- ...(ngDevMode ? [{ debugName: "invalidState" }] : /* istanbul ignore next */ []));
159
157
  this.indicatorClass = computed(() => {
160
158
  const size = this.size();
161
159
  return multiSelectIndicatorContainerThemeVariants({ size });
162
160
  }, /* @ts-ignore */
163
161
  ...(ngDevMode ? [{ debugName: "indicatorClass" }] : /* istanbul ignore next */ []));
162
+ this.invalidState = computed(() => this.touched() && (this.invalid() || (this.required() && none(this.value()))), /* @ts-ignore */
163
+ ...(ngDevMode ? [{ debugName: "invalidState" }] : /* istanbul ignore next */ []));
164
164
  this.itemContainerClass = computed(() => {
165
165
  const rounded = this.rounded();
166
166
  return multiSelectItemContainerThemeVariants({ rounded });
@@ -181,9 +181,6 @@ class MultiSelectComponent {
181
181
  this.popupTemplate = viewChild.required("popupTemplate", /* @ts-ignore */
182
182
  ...(ngDevMode ? [{ debugName: "popupTemplate" }] : /* istanbul ignore next */ []));
183
183
  this.prefixTemplate = contentChild(DropdownPrefixTemplateDirective, { ...(ngDevMode ? { debugName: "prefixTemplate" } : /* istanbul ignore next */ {}), read: TemplateRef });
184
- this.summaryTagTemplate = this.#multiSelectService.summaryTagTemplate.asReadonly();
185
- this.tagCount = this.#multiSelectService.tagCount.asReadonly();
186
- this.tagTemplate = contentChild(MultiSelectTagTemplateDirective, { ...(ngDevMode ? { debugName: "tagTemplate" } : /* istanbul ignore next */ {}), read: TemplateRef });
187
184
  this.selectedDataItems = computed(() => {
188
185
  return this.selectedListItems()
189
186
  .select(i => i.data)
@@ -194,6 +191,9 @@ class MultiSelectComponent {
194
191
  return this.#listService.selectedListItems();
195
192
  }, /* @ts-ignore */
196
193
  ...(ngDevMode ? [{ debugName: "selectedListItems" }] : /* istanbul ignore next */ []));
194
+ this.summaryTagTemplate = this.#multiSelectService.summaryTagTemplate.asReadonly();
195
+ this.tagCount = this.#multiSelectService.tagCount.asReadonly();
196
+ this.tagTemplate = contentChild(MultiSelectTagTemplateDirective, { ...(ngDevMode ? { debugName: "tagTemplate" } : /* istanbul ignore next */ {}), read: TemplateRef });
197
197
  this.valueTextMap = computed(() => {
198
198
  const tagCount = this.visibleTagCount();
199
199
  return this.selectedListItems()
@@ -252,11 +252,6 @@ class MultiSelectComponent {
252
252
  */
253
253
  this.disabled = model(false, /* @ts-ignore */
254
254
  ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
255
- /**
256
- * @description A predicate function or the name of the field that determines whether an item is disabled.
257
- */
258
- this.itemDisabled = input(/* @ts-ignore */
259
- ...(ngDevMode ? [undefined, { debugName: "itemDisabled" }] : /* istanbul ignore next */ []));
260
255
  /**
261
256
  * @description Marks the multi select as invalid. When bound to a signal form field via `[formField]`,
262
257
  * this is written by the `FormField` directive.
@@ -264,6 +259,11 @@ class MultiSelectComponent {
264
259
  */
265
260
  this.invalid = input(false, /* @ts-ignore */
266
261
  ...(ngDevMode ? [{ debugName: "invalid" }] : /* istanbul ignore next */ []));
262
+ /**
263
+ * @description A predicate function or the name of the field that determines whether an item is disabled.
264
+ */
265
+ this.itemDisabled = input(/* @ts-ignore */
266
+ ...(ngDevMode ? [undefined, { debugName: "itemDisabled" }] : /* istanbul ignore next */ []));
267
267
  /**
268
268
  * @description Sets the loading state of the multi select component.
269
269
  * @default false
@@ -351,6 +351,15 @@ class MultiSelectComponent {
351
351
  * @default ""
352
352
  */
353
353
  this.userClass = input("", { ...(ngDevMode ? { debugName: "userClass" } : /* istanbul ignore next */ {}), alias: "class" });
354
+ /**
355
+ * @description Two-way bindable current selected values. Implements `FormValueControl<Iterable<TValue>>`,
356
+ * enabling signal forms `[formField]` binding.
357
+ * Object mode contains selected data items; primitive mode (see {@link valuePrimitive}) contains values
358
+ * resolved through {@link valueField}. An empty selection is represented by an empty iterable/array.
359
+ * @default []
360
+ */
361
+ this.value = model([], /* @ts-ignore */
362
+ ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
354
363
  /**
355
364
  * @description Sets the value field of the multi select component.
356
365
  * It is used for stable item identity, matching externally supplied values, and primitive
@@ -373,15 +382,6 @@ class MultiSelectComponent {
373
382
  */
374
383
  this.valuePrimitive = input(false, /* @ts-ignore */
375
384
  ...(ngDevMode ? [{ debugName: "valuePrimitive" }] : /* istanbul ignore next */ []));
376
- /**
377
- * @description Two-way bindable current selected values. Implements `FormValueControl<Iterable<TValue>>`,
378
- * enabling signal forms `[formField]` binding.
379
- * Object mode contains selected data items; primitive mode (see {@link valuePrimitive}) contains values
380
- * resolved through {@link valueField}. An empty selection is represented by an empty iterable/array.
381
- * @default []
382
- */
383
- this.value = model([], /* @ts-ignore */
384
- ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
385
385
  afterNextRender({
386
386
  read: () => {
387
387
  this.initialize();
@@ -396,7 +396,7 @@ class MultiSelectComponent {
396
396
  effect(() => {
397
397
  const valueField = this.valueField();
398
398
  const value = this.value();
399
- const valuePrimitive = this.valuePrimitive();
399
+ this.valuePrimitive();
400
400
  untracked(() => {
401
401
  this.#listService.setValueField(valueField ?? "");
402
402
  this.synchronizeSelection(value);
@@ -410,7 +410,11 @@ class MultiSelectComponent {
410
410
  focus() {
411
411
  this.#hostElementRef.nativeElement.focus();
412
412
  }
413
- onBlur() {
413
+ onBlur(event) {
414
+ const popupElement = this.#dropdownService.popupRef()?.overlayRef.overlayElement;
415
+ if (popupElement && event?.relatedTarget instanceof Node && popupElement.contains(event.relatedTarget)) {
416
+ return;
417
+ }
414
418
  this.touch.emit();
415
419
  }
416
420
  onItemSelect() {
@@ -419,14 +423,11 @@ class MultiSelectComponent {
419
423
  this.#popupRef()?.close();
420
424
  }
421
425
  }
422
- onSelectedItemRemove(event, listItem) {
423
- event.stopImmediatePropagation();
424
- if (this.readonly() || this.disabled()) {
425
- return;
426
+ onPopupPointerDown(event) {
427
+ const target = event.target;
428
+ if (target?.tagName !== "INPUT") {
429
+ event.preventDefault();
426
430
  }
427
- this.#listService.deselectItems([listItem]);
428
- this.updateValue(this.getSelectedControlValues());
429
- this.focus();
430
431
  }
431
432
  onSelectedItemGroupRemove(event) {
432
433
  event.stopImmediatePropagation();
@@ -441,6 +442,15 @@ class MultiSelectComponent {
441
442
  this.updateValue(this.getSelectedControlValues());
442
443
  this.focus();
443
444
  }
445
+ onSelectedItemRemove(event, listItem) {
446
+ event.stopImmediatePropagation();
447
+ if (this.readonly() || this.disabled()) {
448
+ return;
449
+ }
450
+ this.#listService.deselectItems([listItem]);
451
+ this.updateValue(this.getSelectedControlValues());
452
+ this.focus();
453
+ }
444
454
  onValueClear(event) {
445
455
  if (this.readonly() || (event instanceof KeyboardEvent && event.key !== "Enter" && event.key !== " ")) {
446
456
  return;
@@ -454,9 +464,7 @@ class MultiSelectComponent {
454
464
  getSelectedControlValues() {
455
465
  return this.selectedListItems()
456
466
  .select(item => {
457
- const value = this.valuePrimitive()
458
- ? this.#listService.getDataItemValue(item.data)
459
- : item.data;
467
+ const value = this.valuePrimitive() ? this.#listService.getDataItemValue(item.data) : item.data;
460
468
  return value;
461
469
  })
462
470
  .toArray();
@@ -535,7 +543,7 @@ class MultiSelectComponent {
535
543
  }
536
544
  }
537
545
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: MultiSelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
538
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.6", type: MultiSelectComponent, isStandalone: true, selector: "mona-multi-select", inputs: { ariaLabel: { classPropertyName: "ariaLabel", publicName: "aria-label", isSignal: true, isRequired: false, transformFunction: null }, ariaLabelledBy: { classPropertyName: "ariaLabelledBy", publicName: "aria-labelledby", isSignal: true, isRequired: false, transformFunction: null }, autoClose: { classPropertyName: "autoClose", publicName: "autoClose", isSignal: true, isRequired: false, transformFunction: null }, checkboxes: { classPropertyName: "checkboxes", publicName: "checkboxes", isSignal: true, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, itemDisabled: { classPropertyName: "itemDisabled", publicName: "itemDisabled", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, popupClass: { classPropertyName: "popupClass", publicName: "popupClass", isSignal: true, isRequired: false, transformFunction: null }, popupHeight: { classPropertyName: "popupHeight", publicName: "popupHeight", isSignal: true, isRequired: false, transformFunction: null }, popupWidth: { classPropertyName: "popupWidth", publicName: "popupWidth", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, rounded: { classPropertyName: "rounded", publicName: "rounded", isSignal: true, isRequired: false, transformFunction: null }, showClearButton: { classPropertyName: "showClearButton", publicName: "showClearButton", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, textField: { classPropertyName: "textField", publicName: "textField", isSignal: true, isRequired: false, transformFunction: null }, touched: { classPropertyName: "touched", publicName: "touched", isSignal: true, isRequired: false, transformFunction: null }, userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, valueField: { classPropertyName: "valueField", publicName: "valueField", isSignal: true, isRequired: false, transformFunction: null }, valuePrimitive: { classPropertyName: "valuePrimitive", publicName: "valuePrimitive", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { close: "close", closed: "closed", disabled: "disabledChange", open: "open", opened: "opened", touch: "touch", value: "valueChange" }, host: { listeners: { "blur": "onBlur()" }, properties: { "attr.aria-activedescendant": "activeDescendant()", "attr.aria-busy": "loading() ? 'true' : undefined", "attr.aria-controls": "listId", "attr.aria-disabled": "disabled() ? true : undefined", "attr.aria-expanded": "expanded()", "attr.aria-haspopup": "'listbox'", "attr.aria-invalid": "invalidState() ? true : undefined", "attr.aria-label": "ariaLabel()", "attr.aria-labelledby": "ariaLabelledBy()", "attr.aria-readonly": "readonly() ? true : undefined", "attr.aria-required": "required() ? true : undefined", "attr.data-disabled": "disabled() || null", "attr.data-invalid": "invalidState() || null", "attr.data-readonly": "readonly() || null", "attr.role": "'combobox'", "attr.tabindex": "disabled() ? null : 0", "class": "baseClass()" } }, providers: [
546
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.6", type: MultiSelectComponent, isStandalone: true, selector: "mona-multi-select", inputs: { ariaLabel: { classPropertyName: "ariaLabel", publicName: "aria-label", isSignal: true, isRequired: false, transformFunction: null }, ariaLabelledBy: { classPropertyName: "ariaLabelledBy", publicName: "aria-labelledby", isSignal: true, isRequired: false, transformFunction: null }, autoClose: { classPropertyName: "autoClose", publicName: "autoClose", isSignal: true, isRequired: false, transformFunction: null }, checkboxes: { classPropertyName: "checkboxes", publicName: "checkboxes", isSignal: true, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, itemDisabled: { classPropertyName: "itemDisabled", publicName: "itemDisabled", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, popupClass: { classPropertyName: "popupClass", publicName: "popupClass", isSignal: true, isRequired: false, transformFunction: null }, popupHeight: { classPropertyName: "popupHeight", publicName: "popupHeight", isSignal: true, isRequired: false, transformFunction: null }, popupWidth: { classPropertyName: "popupWidth", publicName: "popupWidth", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, rounded: { classPropertyName: "rounded", publicName: "rounded", isSignal: true, isRequired: false, transformFunction: null }, showClearButton: { classPropertyName: "showClearButton", publicName: "showClearButton", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, textField: { classPropertyName: "textField", publicName: "textField", isSignal: true, isRequired: false, transformFunction: null }, touched: { classPropertyName: "touched", publicName: "touched", isSignal: true, isRequired: false, transformFunction: null }, userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, valueField: { classPropertyName: "valueField", publicName: "valueField", isSignal: true, isRequired: false, transformFunction: null }, valuePrimitive: { classPropertyName: "valuePrimitive", publicName: "valuePrimitive", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { close: "close", closed: "closed", disabled: "disabledChange", open: "open", opened: "opened", touch: "touch", value: "valueChange" }, host: { listeners: { "blur": "onBlur()" }, properties: { "attr.aria-activedescendant": "activeDescendant()", "attr.aria-busy": "loading() ? 'true' : undefined", "attr.aria-controls": "listId", "attr.aria-disabled": "disabled() ? true : undefined", "attr.aria-expanded": "expanded()", "attr.aria-haspopup": "'listbox'", "attr.aria-invalid": "invalidState() ? true : undefined", "attr.aria-label": "ariaLabel()", "attr.aria-labelledby": "ariaLabelledBy()", "attr.aria-readonly": "readonly() ? true : undefined", "attr.aria-required": "required() ? true : undefined", "attr.data-disabled": "disabled() || null", "attr.data-invalid": "invalidState() || null", "attr.data-readonly": "readonly() || null", "attr.role": "'combobox'", "attr.tabindex": "disabled() ? null : 0", "class": "baseClass()" } }, providers: [
539
547
  ListService,
540
548
  DropdownService,
541
549
  MultiSelectService,
@@ -545,11 +553,11 @@ class MultiSelectComponent {
545
553
  multi: false
546
554
  },
547
555
  {
548
- provide: DropdownPopupInputToken,
556
+ provide: DROPDOWN_POPUP_INPUT_TOKEN,
549
557
  useExisting: forwardRef(() => MultiSelectComponent),
550
558
  multi: false
551
559
  }
552
- ], queries: [{ propertyName: "footerTemplate", first: true, predicate: DropdownFooterTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "groupHeaderTemplate", first: true, predicate: DropdownGroupHeaderTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "headerTemplate", first: true, predicate: DropdownHeaderTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "itemTemplate", first: true, predicate: DropdownItemTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "noDataTemplate", first: true, predicate: DropdownNoDataTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "prefixTemplate", first: true, predicate: DropdownPrefixTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "tagTemplate", first: true, predicate: MultiSelectTagTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }], viewQueries: [{ propertyName: "popupTemplate", first: true, predicate: ["popupTemplate"], descendants: true, isSignal: true }], hostDirectives: [{ directive: i1.DropdownDataHandlerDirective }, { directive: i1.DropdownListPopupHandlerDirective }], ngImport: i0, template: "@if (prefixTemplate()) {\n <span [class]=\"affixClass()\">\n <ng-container [ngTemplateOutlet]=\"prefixTemplate()\"></ng-container>\n </span>\n}\n\n<div [class]=\"itemContainerClass()\">\n @for (pair of valueTextMap(); track pair.key) {\n <mona-chip\n look=\"default\"\n [tabindex]=\"-1\"\n [removable]=\"true\"\n [removeTabIndex]=\"-1\"\n [disabled]=\"disabled()\"\n [rounded]=\"rounded()\"\n [size]=\"size()\"\n (remove)=\"onSelectedItemRemove($event, pair.key!)\">\n @if (tagTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"tagTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: pair.key!.data }\"></ng-container>\n } @else {\n {{ pair.value }}\n }\n </mona-chip>\n }\n\n @if (tagCount() >= 0 && selectedListItems().length > tagCount()) {\n <mona-chip\n look=\"outline\"\n [tabindex]=\"-1\"\n [removable]=\"true\"\n [removeTabIndex]=\"-1\"\n [disabled]=\"disabled()\"\n [rounded]=\"rounded()\"\n [size]=\"size()\"\n (remove)=\"onSelectedItemGroupRemove($event)\">\n @let remainingCount = selectedDataItems().length - tagCount();\n @if (summaryTagTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"summaryTagTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: selectedDataItems(), tagCount: tagCount() }\"></ng-container>\n } @else {\n {{ messages().itemsCount(remainingCount) }}\n }\n </mona-chip>\n }\n</div>\n\n@if (showClearButton() && selectedListItems().length !== 0 && !loading()) {\n <mona-indicator-icon\n preset=\"clear\"\n [class]=\"indicatorClass()\"\n [interactive]=\"true\"\n [label]=\"messages().clear\"\n (activate)=\"onValueClear($event)\"></mona-indicator-icon>\n}\n\n@if (loading()) {\n <mona-indicator-icon preset=\"loading\" [class]=\"indicatorClass()\" [size]=\"12\"></mona-indicator-icon>\n}\n\n<mona-indicator-icon preset=\"dropdown\" [class]=\"indicatorClass()\" [size]=\"18\"></mona-indicator-icon>\n\n<span monaDropdownLiveRegion></span>\n\n<ng-template #popupTemplate>\n <div [class]=\"listPopupClass()\">\n <mona-list [listId]=\"listId\" [focusOnMount]=\"false\" [size]=\"size()\" (itemSelect)=\"onItemSelect()\">\n @if (footerTemplate()) {\n <ng-template monaListFooterTemplate>\n <ng-container [ngTemplateOutlet]=\"footerTemplate() ?? null\"></ng-container>\n </ng-template>\n }\n @if (groupHeaderTemplate()) {\n <ng-template monaListGroupHeaderTemplate let-group>\n <ng-container\n [ngTemplateOutlet]=\"groupHeaderTemplate() ?? null\"\n [ngTemplateOutletContext]=\"{ $implicit: group }\"></ng-container>\n </ng-template>\n }\n @if (headerTemplate()) {\n <ng-template monaListHeaderTemplate>\n <ng-container [ngTemplateOutlet]=\"headerTemplate() ?? null\"></ng-container>\n </ng-template>\n }\n @if (itemTemplate()) {\n <ng-template monaListItemTemplate let-dataItem>\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate() ?? null\"\n [ngTemplateOutletContext]=\"{ $implicit: dataItem }\"></ng-container>\n </ng-template>\n }\n @if (noDataTemplate()) {\n <ng-template monaListNoDataTemplate>\n <ng-container [ngTemplateOutlet]=\"noDataTemplate() ?? null\"></ng-container>\n </ng-template>\n }\n </mona-list>\n </div>\n</ng-template>\n", dependencies: [{ kind: "component", type: ChipComponent, selector: "mona-chip", inputs: ["aria-label", "disabled", "label", "look", "removable", "removeLabel", "removeTabIndex", "rounded", "selected", "size", "tabindex", "toggleable", "class", "value"], outputs: ["contentClick", "remove", "selectedChange"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ListComponent, selector: "mona-list", inputs: ["ariaLabel", "data", "focusOnMount", "height", "listClass", "listId", "listItemClass", "listItemStyle", "listStyle", "maxHeight", "maxWidth", "size", "textField", "width"], outputs: ["itemSelect"] }, { kind: "directive", type: ListGroupHeaderTemplateDirective, selector: "ng-template[monaListGroupHeaderTemplate]" }, { kind: "directive", type: ListItemTemplateDirective, selector: "ng-template[monaListItemTemplate]" }, { kind: "directive", type: ListFooterTemplateDirective, selector: "ng-template[monaListFooterTemplate]" }, { kind: "directive", type: ListHeaderTemplateDirective, selector: "ng-template[monaListHeaderTemplate]" }, { kind: "directive", type: ListNoDataTemplateDirective, selector: "ng-template[monaListNoDataTemplate]" }, { kind: "directive", type: DropdownLiveRegionDirective, selector: "span[monaDropdownLiveRegion]" }, { kind: "component", type: IndicatorIconComponent, selector: "mona-indicator-icon", inputs: ["icon", "interactive", "label", "preset", "size", "class"], outputs: ["activate"] }] }); }
560
+ ], queries: [{ propertyName: "footerTemplate", first: true, predicate: DropdownFooterTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "groupHeaderTemplate", first: true, predicate: DropdownGroupHeaderTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "headerTemplate", first: true, predicate: DropdownHeaderTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "itemTemplate", first: true, predicate: DropdownItemTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "noDataTemplate", first: true, predicate: DropdownNoDataTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "prefixTemplate", first: true, predicate: DropdownPrefixTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "tagTemplate", first: true, predicate: MultiSelectTagTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }], viewQueries: [{ propertyName: "popupTemplate", first: true, predicate: ["popupTemplate"], descendants: true, isSignal: true }], hostDirectives: [{ directive: i1.DropdownDataHandlerDirective }, { directive: i1.DropdownListPopupHandlerDirective }], ngImport: i0, template: "@if (prefixTemplate()) {\n <span [class]=\"affixClass()\">\n <ng-container [ngTemplateOutlet]=\"prefixTemplate()\"></ng-container>\n </span>\n}\n\n<div [class]=\"itemContainerClass()\">\n @for (pair of valueTextMap(); track pair.key) {\n <mona-chip\n look=\"default\"\n [tabindex]=\"-1\"\n [removable]=\"true\"\n [removeTabIndex]=\"-1\"\n [disabled]=\"disabled()\"\n [rounded]=\"rounded()\"\n [size]=\"size()\"\n (remove)=\"onSelectedItemRemove($event, pair.key!)\">\n @if (tagTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"tagTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: pair.key!.data }\"></ng-container>\n } @else {\n {{ pair.value }}\n }\n </mona-chip>\n }\n\n @if (tagCount() >= 0 && selectedListItems().length > tagCount()) {\n <mona-chip\n look=\"outline\"\n [tabindex]=\"-1\"\n [removable]=\"true\"\n [removeTabIndex]=\"-1\"\n [disabled]=\"disabled()\"\n [rounded]=\"rounded()\"\n [size]=\"size()\"\n (remove)=\"onSelectedItemGroupRemove($event)\">\n @let remainingCount = selectedDataItems().length - tagCount();\n @if (summaryTagTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"summaryTagTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: selectedDataItems(), tagCount: tagCount() }\"></ng-container>\n } @else {\n {{ messages().itemsCount(remainingCount) }}\n }\n </mona-chip>\n }\n</div>\n\n@if (showClearButton() && selectedListItems().length !== 0 && !loading()) {\n <mona-indicator-icon\n preset=\"clear\"\n [class]=\"indicatorClass()\"\n [interactive]=\"true\"\n [label]=\"messages().clear\"\n (activate)=\"onValueClear($event)\"></mona-indicator-icon>\n}\n\n@if (loading()) {\n <mona-indicator-icon preset=\"loading\" [class]=\"indicatorClass()\" [size]=\"12\"></mona-indicator-icon>\n}\n\n<mona-indicator-icon preset=\"dropdown\" [class]=\"indicatorClass()\" [size]=\"18\"></mona-indicator-icon>\n\n<span monaDropdownLiveRegion></span>\n\n<ng-template #popupTemplate>\n <div [class]=\"listPopupClass()\" (pointerdown)=\"onPopupPointerDown($event)\">\n <mona-list [listId]=\"listId\" [focusOnMount]=\"false\" [size]=\"size()\" (itemSelect)=\"onItemSelect()\">\n @if (footerTemplate()) {\n <ng-template monaListFooterTemplate>\n <ng-container [ngTemplateOutlet]=\"footerTemplate() ?? null\"></ng-container>\n </ng-template>\n }\n @if (groupHeaderTemplate()) {\n <ng-template monaListGroupHeaderTemplate let-group>\n <ng-container\n [ngTemplateOutlet]=\"groupHeaderTemplate() ?? null\"\n [ngTemplateOutletContext]=\"{ $implicit: group }\"></ng-container>\n </ng-template>\n }\n @if (headerTemplate()) {\n <ng-template monaListHeaderTemplate>\n <ng-container [ngTemplateOutlet]=\"headerTemplate() ?? null\"></ng-container>\n </ng-template>\n }\n @if (itemTemplate()) {\n <ng-template monaListItemTemplate let-dataItem>\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate() ?? null\"\n [ngTemplateOutletContext]=\"{ $implicit: dataItem }\"></ng-container>\n </ng-template>\n }\n @if (noDataTemplate()) {\n <ng-template monaListNoDataTemplate>\n <ng-container [ngTemplateOutlet]=\"noDataTemplate() ?? null\"></ng-container>\n </ng-template>\n }\n </mona-list>\n </div>\n</ng-template>\n", dependencies: [{ kind: "component", type: ChipComponent, selector: "mona-chip", inputs: ["aria-label", "disabled", "label", "look", "removable", "removeLabel", "removeTabIndex", "rounded", "selected", "size", "tabindex", "toggleable", "class", "value"], outputs: ["contentClick", "remove", "selectedChange"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ListComponent, selector: "mona-list", inputs: ["ariaLabel", "data", "focusOnMount", "height", "listClass", "listId", "listItemClass", "listItemStyle", "listStyle", "maxHeight", "maxWidth", "size", "textField", "width"], outputs: ["itemSelect"] }, { kind: "directive", type: ListGroupHeaderTemplateDirective, selector: "ng-template[monaListGroupHeaderTemplate]" }, { kind: "directive", type: ListItemTemplateDirective, selector: "ng-template[monaListItemTemplate]" }, { kind: "directive", type: ListFooterTemplateDirective, selector: "ng-template[monaListFooterTemplate]" }, { kind: "directive", type: ListHeaderTemplateDirective, selector: "ng-template[monaListHeaderTemplate]" }, { kind: "directive", type: ListNoDataTemplateDirective, selector: "ng-template[monaListNoDataTemplate]" }, { kind: "directive", type: DropdownLiveRegionDirective, selector: "span[monaDropdownLiveRegion]" }, { kind: "component", type: IndicatorIconComponent, selector: "mona-indicator-icon", inputs: ["icon", "interactive", "label", "preset", "size", "class"], outputs: ["activate"] }] }); }
553
561
  }
554
562
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: MultiSelectComponent, decorators: [{
555
563
  type: Component,
@@ -563,7 +571,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
563
571
  multi: false
564
572
  },
565
573
  {
566
- provide: DropdownPopupInputToken,
574
+ provide: DROPDOWN_POPUP_INPUT_TOKEN,
567
575
  useExisting: forwardRef(() => MultiSelectComponent),
568
576
  multi: false
569
577
  }
@@ -597,10 +605,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
597
605
  "[attr.tabindex]": "disabled() ? null : 0",
598
606
  "[class]": "baseClass()",
599
607
  "(blur)": "onBlur()"
600
- }, template: "@if (prefixTemplate()) {\n <span [class]=\"affixClass()\">\n <ng-container [ngTemplateOutlet]=\"prefixTemplate()\"></ng-container>\n </span>\n}\n\n<div [class]=\"itemContainerClass()\">\n @for (pair of valueTextMap(); track pair.key) {\n <mona-chip\n look=\"default\"\n [tabindex]=\"-1\"\n [removable]=\"true\"\n [removeTabIndex]=\"-1\"\n [disabled]=\"disabled()\"\n [rounded]=\"rounded()\"\n [size]=\"size()\"\n (remove)=\"onSelectedItemRemove($event, pair.key!)\">\n @if (tagTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"tagTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: pair.key!.data }\"></ng-container>\n } @else {\n {{ pair.value }}\n }\n </mona-chip>\n }\n\n @if (tagCount() >= 0 && selectedListItems().length > tagCount()) {\n <mona-chip\n look=\"outline\"\n [tabindex]=\"-1\"\n [removable]=\"true\"\n [removeTabIndex]=\"-1\"\n [disabled]=\"disabled()\"\n [rounded]=\"rounded()\"\n [size]=\"size()\"\n (remove)=\"onSelectedItemGroupRemove($event)\">\n @let remainingCount = selectedDataItems().length - tagCount();\n @if (summaryTagTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"summaryTagTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: selectedDataItems(), tagCount: tagCount() }\"></ng-container>\n } @else {\n {{ messages().itemsCount(remainingCount) }}\n }\n </mona-chip>\n }\n</div>\n\n@if (showClearButton() && selectedListItems().length !== 0 && !loading()) {\n <mona-indicator-icon\n preset=\"clear\"\n [class]=\"indicatorClass()\"\n [interactive]=\"true\"\n [label]=\"messages().clear\"\n (activate)=\"onValueClear($event)\"></mona-indicator-icon>\n}\n\n@if (loading()) {\n <mona-indicator-icon preset=\"loading\" [class]=\"indicatorClass()\" [size]=\"12\"></mona-indicator-icon>\n}\n\n<mona-indicator-icon preset=\"dropdown\" [class]=\"indicatorClass()\" [size]=\"18\"></mona-indicator-icon>\n\n<span monaDropdownLiveRegion></span>\n\n<ng-template #popupTemplate>\n <div [class]=\"listPopupClass()\">\n <mona-list [listId]=\"listId\" [focusOnMount]=\"false\" [size]=\"size()\" (itemSelect)=\"onItemSelect()\">\n @if (footerTemplate()) {\n <ng-template monaListFooterTemplate>\n <ng-container [ngTemplateOutlet]=\"footerTemplate() ?? null\"></ng-container>\n </ng-template>\n }\n @if (groupHeaderTemplate()) {\n <ng-template monaListGroupHeaderTemplate let-group>\n <ng-container\n [ngTemplateOutlet]=\"groupHeaderTemplate() ?? null\"\n [ngTemplateOutletContext]=\"{ $implicit: group }\"></ng-container>\n </ng-template>\n }\n @if (headerTemplate()) {\n <ng-template monaListHeaderTemplate>\n <ng-container [ngTemplateOutlet]=\"headerTemplate() ?? null\"></ng-container>\n </ng-template>\n }\n @if (itemTemplate()) {\n <ng-template monaListItemTemplate let-dataItem>\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate() ?? null\"\n [ngTemplateOutletContext]=\"{ $implicit: dataItem }\"></ng-container>\n </ng-template>\n }\n @if (noDataTemplate()) {\n <ng-template monaListNoDataTemplate>\n <ng-container [ngTemplateOutlet]=\"noDataTemplate() ?? null\"></ng-container>\n </ng-template>\n }\n </mona-list>\n </div>\n</ng-template>\n" }]
608
+ }, template: "@if (prefixTemplate()) {\n <span [class]=\"affixClass()\">\n <ng-container [ngTemplateOutlet]=\"prefixTemplate()\"></ng-container>\n </span>\n}\n\n<div [class]=\"itemContainerClass()\">\n @for (pair of valueTextMap(); track pair.key) {\n <mona-chip\n look=\"default\"\n [tabindex]=\"-1\"\n [removable]=\"true\"\n [removeTabIndex]=\"-1\"\n [disabled]=\"disabled()\"\n [rounded]=\"rounded()\"\n [size]=\"size()\"\n (remove)=\"onSelectedItemRemove($event, pair.key!)\">\n @if (tagTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"tagTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: pair.key!.data }\"></ng-container>\n } @else {\n {{ pair.value }}\n }\n </mona-chip>\n }\n\n @if (tagCount() >= 0 && selectedListItems().length > tagCount()) {\n <mona-chip\n look=\"outline\"\n [tabindex]=\"-1\"\n [removable]=\"true\"\n [removeTabIndex]=\"-1\"\n [disabled]=\"disabled()\"\n [rounded]=\"rounded()\"\n [size]=\"size()\"\n (remove)=\"onSelectedItemGroupRemove($event)\">\n @let remainingCount = selectedDataItems().length - tagCount();\n @if (summaryTagTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"summaryTagTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: selectedDataItems(), tagCount: tagCount() }\"></ng-container>\n } @else {\n {{ messages().itemsCount(remainingCount) }}\n }\n </mona-chip>\n }\n</div>\n\n@if (showClearButton() && selectedListItems().length !== 0 && !loading()) {\n <mona-indicator-icon\n preset=\"clear\"\n [class]=\"indicatorClass()\"\n [interactive]=\"true\"\n [label]=\"messages().clear\"\n (activate)=\"onValueClear($event)\"></mona-indicator-icon>\n}\n\n@if (loading()) {\n <mona-indicator-icon preset=\"loading\" [class]=\"indicatorClass()\" [size]=\"12\"></mona-indicator-icon>\n}\n\n<mona-indicator-icon preset=\"dropdown\" [class]=\"indicatorClass()\" [size]=\"18\"></mona-indicator-icon>\n\n<span monaDropdownLiveRegion></span>\n\n<ng-template #popupTemplate>\n <div [class]=\"listPopupClass()\" (pointerdown)=\"onPopupPointerDown($event)\">\n <mona-list [listId]=\"listId\" [focusOnMount]=\"false\" [size]=\"size()\" (itemSelect)=\"onItemSelect()\">\n @if (footerTemplate()) {\n <ng-template monaListFooterTemplate>\n <ng-container [ngTemplateOutlet]=\"footerTemplate() ?? null\"></ng-container>\n </ng-template>\n }\n @if (groupHeaderTemplate()) {\n <ng-template monaListGroupHeaderTemplate let-group>\n <ng-container\n [ngTemplateOutlet]=\"groupHeaderTemplate() ?? null\"\n [ngTemplateOutletContext]=\"{ $implicit: group }\"></ng-container>\n </ng-template>\n }\n @if (headerTemplate()) {\n <ng-template monaListHeaderTemplate>\n <ng-container [ngTemplateOutlet]=\"headerTemplate() ?? null\"></ng-container>\n </ng-template>\n }\n @if (itemTemplate()) {\n <ng-template monaListItemTemplate let-dataItem>\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate() ?? null\"\n [ngTemplateOutletContext]=\"{ $implicit: dataItem }\"></ng-container>\n </ng-template>\n }\n @if (noDataTemplate()) {\n <ng-template monaListNoDataTemplate>\n <ng-container [ngTemplateOutlet]=\"noDataTemplate() ?? null\"></ng-container>\n </ng-template>\n }\n </mona-list>\n </div>\n</ng-template>\n" }]
601
609
  }], ctorParameters: () => [], propDecorators: { footerTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => DropdownFooterTemplateDirective), { ...{ read: TemplateRef }, isSignal: true }] }], groupHeaderTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => DropdownGroupHeaderTemplateDirective), { ...{
602
610
  read: TemplateRef
603
- }, isSignal: true }] }], headerTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => DropdownHeaderTemplateDirective), { ...{ read: TemplateRef }, isSignal: true }] }], itemTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => DropdownItemTemplateDirective), { ...{ read: TemplateRef }, isSignal: true }] }], noDataTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => DropdownNoDataTemplateDirective), { ...{ read: TemplateRef }, isSignal: true }] }], popupTemplate: [{ type: i0.ViewChild, args: ["popupTemplate", { isSignal: true }] }], prefixTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => DropdownPrefixTemplateDirective), { ...{ read: TemplateRef }, isSignal: true }] }], tagTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => MultiSelectTagTemplateDirective), { ...{ read: TemplateRef }, isSignal: true }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-label", required: false }] }], ariaLabelledBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-labelledby", required: false }] }], autoClose: [{ type: i0.Input, args: [{ isSignal: true, alias: "autoClose", required: false }] }], checkboxes: [{ type: i0.Input, args: [{ isSignal: true, alias: "checkboxes", required: false }] }], close: [{ type: i0.Output, args: ["close"] }], closed: [{ type: i0.Output, args: ["closed"] }], data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }, { type: i0.Output, args: ["disabledChange"] }], itemDisabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "itemDisabled", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], open: [{ type: i0.Output, args: ["open"] }], opened: [{ type: i0.Output, args: ["opened"] }], popupClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "popupClass", required: false }] }], popupHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "popupHeight", required: false }] }], popupWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "popupWidth", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], rounded: [{ type: i0.Input, args: [{ isSignal: true, alias: "rounded", required: false }] }], showClearButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "showClearButton", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], textField: [{ type: i0.Input, args: [{ isSignal: true, alias: "textField", required: false }] }], touch: [{ type: i0.Output, args: ["touch"] }], touched: [{ type: i0.Input, args: [{ isSignal: true, alias: "touched", required: false }] }], userClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }], valueField: [{ type: i0.Input, args: [{ isSignal: true, alias: "valueField", required: false }] }], valuePrimitive: [{ type: i0.Input, args: [{ isSignal: true, alias: "valuePrimitive", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }] } });
611
+ }, isSignal: true }] }], headerTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => DropdownHeaderTemplateDirective), { ...{ read: TemplateRef }, isSignal: true }] }], itemTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => DropdownItemTemplateDirective), { ...{ read: TemplateRef }, isSignal: true }] }], noDataTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => DropdownNoDataTemplateDirective), { ...{ read: TemplateRef }, isSignal: true }] }], popupTemplate: [{ type: i0.ViewChild, args: ["popupTemplate", { isSignal: true }] }], prefixTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => DropdownPrefixTemplateDirective), { ...{ read: TemplateRef }, isSignal: true }] }], tagTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => MultiSelectTagTemplateDirective), { ...{ read: TemplateRef }, isSignal: true }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-label", required: false }] }], ariaLabelledBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-labelledby", required: false }] }], autoClose: [{ type: i0.Input, args: [{ isSignal: true, alias: "autoClose", required: false }] }], checkboxes: [{ type: i0.Input, args: [{ isSignal: true, alias: "checkboxes", required: false }] }], close: [{ type: i0.Output, args: ["close"] }], closed: [{ type: i0.Output, args: ["closed"] }], data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }, { type: i0.Output, args: ["disabledChange"] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], itemDisabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "itemDisabled", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], open: [{ type: i0.Output, args: ["open"] }], opened: [{ type: i0.Output, args: ["opened"] }], popupClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "popupClass", required: false }] }], popupHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "popupHeight", required: false }] }], popupWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "popupWidth", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], rounded: [{ type: i0.Input, args: [{ isSignal: true, alias: "rounded", required: false }] }], showClearButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "showClearButton", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], textField: [{ type: i0.Input, args: [{ isSignal: true, alias: "textField", required: false }] }], touch: [{ type: i0.Output, args: ["touch"] }], touched: [{ type: i0.Input, args: [{ isSignal: true, alias: "touched", required: false }] }], userClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], valueField: [{ type: i0.Input, args: [{ isSignal: true, alias: "valueField", required: false }] }], valuePrimitive: [{ type: i0.Input, args: [{ isSignal: true, alias: "valuePrimitive", required: false }] }] } });
604
612
 
605
613
  class MultiSelectSummaryTagTemplateDirective {
606
614
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: MultiSelectSummaryTagTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }