@tekus/design-system 5.36.0 → 5.38.1

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 (77) hide show
  1. package/assets/tokens/tk-foundations.json +4 -0
  2. package/fesm2022/tekus-design-system-components-autocomplete.mjs +7 -17
  3. package/fesm2022/tekus-design-system-components-autocomplete.mjs.map +1 -1
  4. package/fesm2022/tekus-design-system-components-avatar.mjs +120 -0
  5. package/fesm2022/tekus-design-system-components-avatar.mjs.map +1 -0
  6. package/fesm2022/tekus-design-system-components-button.mjs +2 -2
  7. package/fesm2022/tekus-design-system-components-button.mjs.map +1 -1
  8. package/fesm2022/tekus-design-system-components-card.mjs +1 -1
  9. package/fesm2022/tekus-design-system-components-card.mjs.map +1 -1
  10. package/fesm2022/tekus-design-system-components-checkbox.mjs +9 -3
  11. package/fesm2022/tekus-design-system-components-checkbox.mjs.map +1 -1
  12. package/fesm2022/tekus-design-system-components-color-picker.mjs +203 -29
  13. package/fesm2022/tekus-design-system-components-color-picker.mjs.map +1 -1
  14. package/fesm2022/tekus-design-system-components-date-picker.mjs +16 -3
  15. package/fesm2022/tekus-design-system-components-date-picker.mjs.map +1 -1
  16. package/fesm2022/tekus-design-system-components-grid-container.mjs +181 -0
  17. package/fesm2022/tekus-design-system-components-grid-container.mjs.map +1 -0
  18. package/fesm2022/tekus-design-system-components-input-number.mjs +37 -3
  19. package/fesm2022/tekus-design-system-components-input-number.mjs.map +1 -1
  20. package/fesm2022/tekus-design-system-components-input-text.mjs +2 -2
  21. package/fesm2022/tekus-design-system-components-input-text.mjs.map +1 -1
  22. package/fesm2022/tekus-design-system-components-menu.mjs +2 -2
  23. package/fesm2022/tekus-design-system-components-menu.mjs.map +1 -1
  24. package/fesm2022/tekus-design-system-components-multiselect.mjs +2 -2
  25. package/fesm2022/tekus-design-system-components-multiselect.mjs.map +1 -1
  26. package/fesm2022/tekus-design-system-components-panel-menu.mjs +2 -2
  27. package/fesm2022/tekus-design-system-components-panel-menu.mjs.map +1 -1
  28. package/fesm2022/tekus-design-system-components-radio-button.mjs +9 -3
  29. package/fesm2022/tekus-design-system-components-radio-button.mjs.map +1 -1
  30. package/fesm2022/tekus-design-system-components-section.mjs +63 -0
  31. package/fesm2022/tekus-design-system-components-section.mjs.map +1 -0
  32. package/fesm2022/tekus-design-system-components-select.mjs +37 -32
  33. package/fesm2022/tekus-design-system-components-select.mjs.map +1 -1
  34. package/fesm2022/tekus-design-system-components-sidebar-layout.mjs +2 -2
  35. package/fesm2022/tekus-design-system-components-sidebar-layout.mjs.map +1 -1
  36. package/fesm2022/tekus-design-system-components-table.mjs +1 -1
  37. package/fesm2022/tekus-design-system-components-table.mjs.map +1 -1
  38. package/fesm2022/tekus-design-system-components-tabs.mjs +2 -2
  39. package/fesm2022/tekus-design-system-components-tabs.mjs.map +1 -1
  40. package/fesm2022/tekus-design-system-components-textarea.mjs +2 -2
  41. package/fesm2022/tekus-design-system-components-textarea.mjs.map +1 -1
  42. package/fesm2022/tekus-design-system-components-time-picker.mjs +13 -3
  43. package/fesm2022/tekus-design-system-components-time-picker.mjs.map +1 -1
  44. package/fesm2022/tekus-design-system-components-toggle.mjs +4 -3
  45. package/fesm2022/tekus-design-system-components-toggle.mjs.map +1 -1
  46. package/fesm2022/tekus-design-system-components-toolbar.mjs +2 -2
  47. package/fesm2022/tekus-design-system-components-toolbar.mjs.map +1 -1
  48. package/fesm2022/tekus-design-system-components-topbar.mjs +2 -2
  49. package/fesm2022/tekus-design-system-components-topbar.mjs.map +1 -1
  50. package/fesm2022/tekus-design-system-components-tree-table.mjs +94 -0
  51. package/fesm2022/tekus-design-system-components-tree-table.mjs.map +1 -0
  52. package/fesm2022/tekus-design-system-core-types.mjs +26 -10
  53. package/fesm2022/tekus-design-system-core-types.mjs.map +1 -1
  54. package/fesm2022/tekus-design-system-core.mjs +26 -10
  55. package/fesm2022/tekus-design-system-core.mjs.map +1 -1
  56. package/fesm2022/tekus-design-system-directives-gird-item.mjs +1 -1
  57. package/fesm2022/tekus-design-system-directives-gird-item.mjs.map +1 -1
  58. package/package.json +17 -1
  59. package/scss/_config.scss +242 -0
  60. package/scss/tk-bundle.scss +105 -0
  61. package/styles/variables.css +1 -0
  62. package/types/tekus-design-system-components-autocomplete.d.ts +3 -12
  63. package/types/tekus-design-system-components-avatar.d.ts +104 -0
  64. package/types/tekus-design-system-components-checkbox.d.ts +7 -1
  65. package/types/tekus-design-system-components-color-picker.d.ts +75 -12
  66. package/types/tekus-design-system-components-date-picker.d.ts +11 -1
  67. package/types/tekus-design-system-components-grid-container.d.ts +123 -0
  68. package/types/tekus-design-system-components-input-number.d.ts +35 -1
  69. package/types/tekus-design-system-components-radio-button.d.ts +7 -1
  70. package/types/tekus-design-system-components-section.d.ts +45 -0
  71. package/types/tekus-design-system-components-select.d.ts +2 -6
  72. package/types/tekus-design-system-components-time-picker.d.ts +8 -1
  73. package/types/tekus-design-system-components-toggle.d.ts +2 -1
  74. package/types/tekus-design-system-components-tree-table.d.ts +62 -0
  75. package/types/tekus-design-system-core-types.d.ts +7 -7
  76. package/types/tekus-design-system-core.d.ts +7 -7
  77. package/types/tekus-design-system-directives-gird-item.d.ts +1 -1
@@ -424,7 +424,7 @@ class ToolbarComponent {
424
424
  this.reload.emit();
425
425
  }
426
426
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ToolbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
427
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: ToolbarComponent, isStandalone: true, selector: "tk-toolbar", inputs: { searchModel: { classPropertyName: "searchModel", publicName: "searchModel", isSignal: true, isRequired: false, transformFunction: null }, searchFloatLabel: { classPropertyName: "searchFloatLabel", publicName: "searchFloatLabel", isSignal: true, isRequired: false, transformFunction: null }, searchVisible: { classPropertyName: "searchVisible", publicName: "searchVisible", isSignal: true, isRequired: false, transformFunction: null }, view: { classPropertyName: "view", publicName: "view", isSignal: true, isRequired: false, transformFunction: null }, viewToggleVisible: { classPropertyName: "viewToggleVisible", publicName: "viewToggleVisible", isSignal: true, isRequired: false, transformFunction: null }, filters: { classPropertyName: "filters", publicName: "filters", isSignal: true, isRequired: false, transformFunction: null }, filterModel: { classPropertyName: "filterModel", publicName: "filterModel", isSignal: true, isRequired: false, transformFunction: null }, filterOptions: { classPropertyName: "filterOptions", publicName: "filterOptions", isSignal: true, isRequired: false, transformFunction: null }, filterOptionLabel: { classPropertyName: "filterOptionLabel", publicName: "filterOptionLabel", isSignal: true, isRequired: false, transformFunction: null }, filterFloatLabel: { classPropertyName: "filterFloatLabel", publicName: "filterFloatLabel", isSignal: true, isRequired: false, transformFunction: null }, filterVisible: { classPropertyName: "filterVisible", publicName: "filterVisible", isSignal: true, isRequired: false, transformFunction: null }, filterValues: { classPropertyName: "filterValues", publicName: "filterValues", isSignal: true, isRequired: false, transformFunction: null }, clearLabel: { classPropertyName: "clearLabel", publicName: "clearLabel", isSignal: true, isRequired: false, transformFunction: null }, deleteLabel: { classPropertyName: "deleteLabel", publicName: "deleteLabel", isSignal: true, isRequired: false, transformFunction: null }, filterLabel: { classPropertyName: "filterLabel", publicName: "filterLabel", isSignal: true, isRequired: false, transformFunction: null }, selectedLabel: { classPropertyName: "selectedLabel", publicName: "selectedLabel", isSignal: true, isRequired: false, transformFunction: null }, selectedPluralLabel: { classPropertyName: "selectedPluralLabel", publicName: "selectedPluralLabel", isSignal: true, isRequired: false, transformFunction: null }, applyLabel: { classPropertyName: "applyLabel", publicName: "applyLabel", isSignal: true, isRequired: false, transformFunction: null }, reloadTooltip: { classPropertyName: "reloadTooltip", publicName: "reloadTooltip", isSignal: true, isRequired: false, transformFunction: null }, sortTooltip: { classPropertyName: "sortTooltip", publicName: "sortTooltip", isSignal: true, isRequired: false, transformFunction: null }, viewCardsTooltip: { classPropertyName: "viewCardsTooltip", publicName: "viewCardsTooltip", isSignal: true, isRequired: false, transformFunction: null }, viewTableTooltip: { classPropertyName: "viewTableTooltip", publicName: "viewTableTooltip", isSignal: true, isRequired: false, transformFunction: null }, sortOptions: { classPropertyName: "sortOptions", publicName: "sortOptions", isSignal: true, isRequired: false, transformFunction: null }, sortLabel: { classPropertyName: "sortLabel", publicName: "sortLabel", isSignal: true, isRequired: false, transformFunction: null }, sortValue: { classPropertyName: "sortValue", publicName: "sortValue", isSignal: true, isRequired: false, transformFunction: null }, reloadVisible: { classPropertyName: "reloadVisible", publicName: "reloadVisible", isSignal: true, isRequired: false, transformFunction: null }, reloadInterval: { classPropertyName: "reloadInterval", publicName: "reloadInterval", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, globalActions: { classPropertyName: "globalActions", publicName: "globalActions", isSignal: true, isRequired: false, transformFunction: null }, selectionCount: { classPropertyName: "selectionCount", publicName: "selectionCount", isSignal: true, isRequired: false, transformFunction: null }, allSelected: { classPropertyName: "allSelected", publicName: "allSelected", isSignal: true, isRequired: false, transformFunction: null }, indeterminate: { classPropertyName: "indeterminate", publicName: "indeterminate", isSignal: true, isRequired: false, transformFunction: null }, selectionActions: { classPropertyName: "selectionActions", publicName: "selectionActions", isSignal: true, isRequired: false, transformFunction: null }, maxVisibleSelectionActions: { classPropertyName: "maxVisibleSelectionActions", publicName: "maxVisibleSelectionActions", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { searchModel: "searchModelChange", view: "viewChange", filterModel: "filterModelChange", filterValues: "filterValuesChange", sortValue: "sortValueChange", allSelected: "allSelectedChange", indeterminate: "indeterminateChange", reload: "reload", appliedFilters: "appliedFilters", appliedSort: "appliedSort" }, viewQueries: [{ propertyName: "filterPopover", first: true, predicate: ["filterPopover"], descendants: true, isSignal: true }, { propertyName: "sortPopover", first: true, predicate: ["sortPopover"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"tk-toolbar-container\">\n <!-- 1. Selection Status Bar (Desktop replacement) -->\n @if (selectionCount() > 0 && !isMobile()) {\n <div class=\"tk-toolbar-selection-bar\" data-testid=\"selection-bar-desktop\">\n <div class=\"tk-toolbar-selection-bar__left\">\n <tk-checkbox\n [binary]=\"true\"\n [(model)]=\"allSelected\"\n [indeterminate]=\"indeterminate()\">\n </tk-checkbox>\n <span class=\"tk-toolbar-selection-bar__count\">\n {{ selectionCount() }} {{ selectionCount() === 1 ? selectedLabel() : selectedPluralLabel() }}\n </span>\n </div>\n <div class=\"tk-toolbar-selection-bar__right\">\n @for (action of visibleSelectionActions(); track action.label) {\n <tk-button\n [label]=\"action.label\"\n [icon]=\"action.icon\"\n [severity]=\"action.severity ?? 'secondary'\"\n [variant]=\"action.variant !== undefined ? action.variant : (action.severity === 'danger' ? undefined : 'text')\"\n [disabled]=\"action.disabled ?? false\"\n (clicked)=\"action.action()\">\n </tk-button>\n }\n @if (overflowSelectionActions().length > 0) {\n <tk-dropdown\n icon=\"ellipsis-vertical\"\n [model]=\"overflowSelectionActions()\">\n </tk-dropdown>\n }\n </div>\n </div>\n } @else {\n <!-- 2. Main Tools Bar -->\n <div class=\"tk-toolbar\" data-testid=\"main-toolbar\">\n <!-- Left part: search input (always visible if searchVisible is true) -->\n @if (searchVisible()) {\n <div class=\"tk-toolbar__search\">\n <tk-input-text\n [label]=\"searchFloatLabel()\"\n icon=\"magnifying-glass\"\n [clearable]=\"true\"\n [value]=\"searchModel()\"\n (valueChange)=\"searchModel.set($event)\">\n </tk-input-text>\n </div>\n }\n\n <!-- Right part: actions -->\n <div class=\"tk-toolbar__actions\">\n @if (viewToggleVisible()) {\n <tk-button\n [icon]=\"view() === 'table' ? 'table' : 'table-list'\"\n severity=\"secondary\"\n variant=\"text\"\n [tooltipText]=\"view() === 'table' ? viewCardsTooltip() : viewTableTooltip()\"\n (clicked)=\"toggleView()\">\n </tk-button>\n }\n\n @if (derivedFilters().length > 0 && filterVisible()) {\n <tk-button\n #filterBtn\n [icon]=\"'filter'\"\n [severity]=\"hasActiveFilters() ? 'primary' : 'secondary'\"\n [variant]=\"hasActiveFilters() ? undefined : 'text'\"\n [tooltipText]=\"filterLabel()\"\n (click)=\"openFilters($event)\"\n (keydown.enter)=\"openFilters($event)\"\n (keydown.space)=\"openFilters($event)\">\n </tk-button>\n }\n\n @if (sortOptions().length > 0) {\n <tk-button\n #sortBtn\n [icon]=\"'arrow-down-wide-short'\"\n [severity]=\"hasActiveSort() ? 'primary' : 'secondary'\"\n [variant]=\"hasActiveSort() ? undefined : 'text'\"\n [tooltipText]=\"sortTooltip()\"\n (click)=\"openSort($event)\"\n (keydown.enter)=\"openSort($event)\"\n (keydown.space)=\"openSort($event)\">\n </tk-button>\n }\n\n @if (shouldShowReload()) {\n <tk-button\n class=\"tk-toolbar__reload-btn\"\n [class.tk-toolbar__reload-btn--animating]=\"\n reloadInterval() && reloadInterval()! > 0 && !loading()\n \"\n [class.tk-toolbar__reload-btn--spinning]=\"loading()\"\n [style.--reload-interval]=\"(reloadInterval() ?? 0) + 'ms'\"\n [icon]=\"'arrows-rotate'\"\n severity=\"secondary\"\n variant=\"text\"\n [tooltipText]=\"reloadTooltip()\"\n (clicked)=\"onReload()\">\n </tk-button>\n }\n\n @if (globalActions().length > 0) {\n <tk-action-group\n [actions]=\"globalActions()\"\n [maxVisible]=\"0\">\n </tk-action-group>\n }\n </div>\n </div>\n }\n\n @if (shouldShowActiveFiltersBar()) {\n <div class=\"tk-toolbar-chips-bar\" data-testid=\"chips-bar\">\n <div class=\"tk-toolbar-chips-bar__scroll\">\n @for (chip of activeChips(); track chip.filterKey + '-' + chip.code) {\n <tk-chip\n [label]=\"chip.label\"\n [removable]=\"true\"\n (removed)=\"removeChip(chip)\">\n </tk-chip>\n }\n </div>\n <tk-button\n [link]=\"true\"\n [label]=\"clearLabel()\"\n class=\"tk-toolbar-chips-bar__clear-btn\"\n (clicked)=\"clearAllFilters()\">\n </tk-button>\n </div>\n }\n\n <!-- 4. Selection Status Bar (Mobile floating panel) -->\n @if (selectionCount() > 0 && isMobile()) {\n <div class=\"tk-toolbar-selection-bar tk-toolbar-selection-bar--mobile\" data-testid=\"selection-bar-mobile\">\n <div class=\"tk-toolbar-selection-bar__left\">\n <tk-checkbox\n [binary]=\"true\"\n [(model)]=\"allSelected\"\n [indeterminate]=\"indeterminate()\">\n </tk-checkbox>\n <span class=\"tk-toolbar-selection-bar__count\">\n {{ selectionCount() }} {{ selectionCount() === 1 ? selectedLabel() : selectedPluralLabel() }}\n </span>\n </div>\n <div class=\"tk-toolbar-selection-bar__right\">\n @for (action of visibleSelectionActions(); track action.label) {\n <tk-button\n [label]=\"action.label\"\n [icon]=\"action.icon\"\n [severity]=\"action.severity ?? 'secondary'\"\n [variant]=\"action.variant !== undefined ? action.variant : (action.severity === 'danger' ? undefined : 'text')\"\n [disabled]=\"action.disabled ?? false\"\n (clicked)=\"action.action()\">\n </tk-button>\n }\n @if (overflowSelectionActions().length > 0) {\n <tk-dropdown\n icon=\"ellipsis-vertical\"\n [model]=\"overflowSelectionActions()\">\n </tk-dropdown>\n }\n </div>\n </div>\n }\n</div>\n\n<!-- 5. Desktop Popovers -->\n@if (derivedFilters().length > 0 && filterVisible() && !isMobile()) {\n <p-popover #filterPopover styleClass=\"tk-toolbar-popover\">\n <div class=\"tk-toolbar-overlay\" data-testid=\"filter-popover\">\n <div class=\"tk-toolbar-overlay__header\">\n <span class=\"tk-toolbar-overlay__title\">{{ filterLabel() }}</span>\n <button type=\"button\" class=\"tk-toolbar-overlay__close\" (click)=\"filterPopover.hide()\">\n <tk-icon icon=\"xmark\" size=\"lg\"></tk-icon>\n </button>\n </div>\n <div class=\"tk-toolbar-overlay__body\">\n @for (filter of derivedFilters(); track filter.key) {\n <div class=\"tk-toolbar-overlay__field\">\n <tk-multiselect\n [id]=\"'filter-' + filter.key\"\n [options]=\"filter.options\"\n [labelText]=\"filter.label\"\n [model]=\"tempFilterValues()[filter.key] || []\"\n (modelChange)=\"onTempFilterChange(filter.key, $event || [])\"\n appendTo=\"body\"\n panelStyleClass=\"tk-toolbar-multiselect-panel\">\n </tk-multiselect>\n </div>\n }\n </div>\n <div class=\"tk-toolbar-overlay__footer\">\n <tk-button\n [label]=\"clearLabel()\"\n severity=\"secondary\"\n variant=\"outlined\"\n (clicked)=\"clearTempFilters()\">\n </tk-button>\n <tk-button\n [label]=\"applyLabel()\"\n severity=\"primary\"\n (clicked)=\"applyFilters()\">\n </tk-button>\n </div>\n </div>\n </p-popover>\n}\n\n@if (sortOptions().length > 0 && !isMobile()) {\n <p-popover #sortPopover styleClass=\"tk-toolbar-popover\">\n <div class=\"tk-toolbar-overlay tk-toolbar-overlay--sort\" data-testid=\"sort-popover\">\n <div class=\"tk-toolbar-overlay__header\">\n <span class=\"tk-toolbar-overlay__title\">{{ sortLabel() }}</span>\n <button type=\"button\" class=\"tk-toolbar-overlay__close\" (click)=\"sortPopover.hide()\">\n <tk-icon icon=\"xmark\" size=\"lg\"></tk-icon>\n </button>\n </div>\n <div class=\"tk-toolbar-overlay__body\">\n <div class=\"tk-toolbar-sort-options\">\n @for (option of sortOptions(); track option.value) {\n <button \n type=\"button\"\n class=\"tk-toolbar-sort-option\" \n [class.tk-toolbar-sort-option--active]=\"sortValue() === option.value\"\n (click)=\"selectSortOption(option.value)\">\n <span>{{ option.label }}</span>\n </button>\n }\n </div>\n </div>\n </div>\n </p-popover>\n}\n\n<!-- 6. Mobile Drawers -->\n@if (derivedFilters().length > 0 && filterVisible() && isMobile()) {\n <tk-drawer\n [(isOpened)]=\"showFilterDrawer\"\n [title]=\"filterLabel()\"\n direction=\"bottom\"\n [dismissible]=\"true\">\n <div class=\"tk-toolbar-overlay__body\">\n @for (filter of derivedFilters(); track filter.key) {\n <div class=\"tk-toolbar-overlay__field\">\n <tk-multiselect\n [id]=\"'filter-mob-' + filter.key\"\n [options]=\"filter.options\"\n [labelText]=\"filter.label\"\n [model]=\"tempFilterValues()[filter.key] || []\"\n (modelChange)=\"onTempFilterChange(filter.key, $event || [])\"\n appendTo=\"body\"\n panelStyleClass=\"tk-toolbar-multiselect-panel\">\n </tk-multiselect>\n </div>\n }\n </div>\n <div class=\"tk-toolbar-overlay__footer\">\n <tk-button\n [label]=\"clearLabel()\"\n severity=\"secondary\"\n variant=\"outlined\"\n (clicked)=\"clearTempFilters()\">\n </tk-button>\n <tk-button\n [label]=\"applyLabel()\"\n severity=\"primary\"\n (clicked)=\"applyFilters()\">\n </tk-button>\n </div>\n </tk-drawer>\n}\n\n@if (sortOptions().length > 0 && isMobile()) {\n <tk-drawer\n [(isOpened)]=\"showSortDrawer\"\n [title]=\"sortLabel()\"\n direction=\"bottom\"\n [dismissible]=\"true\">\n <div class=\"tk-toolbar-overlay__body\">\n <div class=\"tk-toolbar-sort-options\">\n @for (option of sortOptions(); track option.value) {\n <button \n type=\"button\"\n class=\"tk-toolbar-sort-option\" \n [class.tk-toolbar-sort-option--active]=\"tempSortValue() === option.value\"\n (click)=\"toggleSortOptionMobile(option.value)\">\n <span>{{ option.label }}</span>\n </button>\n }\n </div>\n </div>\n <div class=\"tk-toolbar-overlay__footer\">\n <tk-button\n [label]=\"applyLabel()\"\n severity=\"primary\"\n (clicked)=\"applySortMobile()\">\n </tk-button>\n </div>\n </tk-drawer>\n}\n", styles: [".tk-toolbar-container{display:flex;flex-direction:column;gap:var(--tk-spacing-base-50, .5rem);width:100%}.tk-toolbar{display:flex;justify-content:flex-end;align-items:center;flex-wrap:wrap;gap:var(--tk-spacing-base-100, 1rem);width:100%}.tk-toolbar__search{width:15rem;max-width:100%}@media(max-width:768px){.tk-toolbar__search{width:100%}}.tk-toolbar__actions{display:flex;align-items:center;gap:var(--tk-spacing-base-50, .5rem)}.tk-toolbar__actions>tk-button{width:2.5rem;height:2.5rem}.tk-toolbar__actions>tk-button ::ng-deep .p-button{width:100%;height:100%;padding:0;display:flex;align-items:center;justify-content:center}.tk-toolbar__reload-btn{border-radius:var(--tk-borderRadius-s, 8px);position:relative}.tk-toolbar__reload-btn--animating:before{content:\"\";position:absolute;inset:0;z-index:1;background:conic-gradient(var(--tk-color-base-sky-300, #92bada) var(--progress, 0%),transparent var(--progress, 0%));-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;padding:3px;border-radius:inherit;animation:draw-border var(--reload-interval, 5s) infinite linear;pointer-events:none}.tk-toolbar__reload-btn--spinning ::ng-deep tk-icon{display:inline-block;animation:spin 1s infinite linear}.tk-toolbar-selection-bar{display:flex;justify-content:space-between;align-items:center;width:100%;background-color:var(--tk-color-base-surface-50, #f8fafc);border:1px solid var(--tk-color-base-surface-200, #e2e8f0);border-radius:var(--tk-borderRadius-s, 8px);padding:var(--tk-spacing-base-75, .75rem) var(--tk-spacing-base-100, 1rem);box-sizing:border-box}.tk-toolbar-selection-bar__left{display:flex;align-items:center;gap:var(--tk-spacing-base-75, .75rem)}.tk-toolbar-selection-bar__count{font-size:1rem;font-weight:var(--tk-font-weight-600, 600);color:var(--tk-color-base-surface-900, #0f172a)}.tk-toolbar-selection-bar__right{display:flex;align-items:center;gap:var(--tk-spacing-base-50, .5rem)}.tk-toolbar-selection-bar--mobile{position:fixed;bottom:0;left:0;width:100%;max-width:none;transform:none;z-index:1000;background-color:var(--tk-color-base-surface-0, #ffffff);box-shadow:0 -4px 6px -1px #0000000d,0 -2px 4px -1px #00000008;border-radius:0;border:none;border-top:1px solid var(--tk-color-base-surface-200, #e2e8f0);padding:var(--tk-spacing-base-75, .75rem) var(--tk-spacing-base-100, 1rem)}.tk-toolbar-chips-bar{width:100%;border-top:none;padding-top:var(--tk-spacing-base-50, .5rem);display:flex;justify-content:space-between;align-items:center;gap:var(--tk-spacing-base-100, 1rem)}.tk-toolbar-chips-bar__scroll{display:flex;align-items:center;flex-wrap:wrap;gap:var(--tk-spacing-base-50, .5rem);flex-grow:1}.tk-toolbar-chips-bar__clear-btn{flex-shrink:0}.tk-toolbar-overlay{display:flex;flex-direction:column;width:20rem;max-width:100%;padding:var(--tk-spacing-base-100, 1rem);box-sizing:border-box}.tk-toolbar-overlay--sort{width:15rem;padding:var(--tk-spacing-base-50, .5rem)!important}.tk-toolbar-overlay--sort .tk-toolbar-overlay__header{padding:var(--tk-spacing-base-50, .5rem) var(--tk-spacing-base-50, .5rem) var(--tk-spacing-base-25, .25rem) var(--tk-spacing-base-50, .5rem)!important}.tk-toolbar-overlay--sort .tk-toolbar-overlay__body{padding:0!important;margin-bottom:0!important}.tk-toolbar-overlay__header{display:flex;justify-content:space-between;align-items:center;margin-bottom:0;padding:0 0 var(--tk-spacing-base-50, .5rem) 0}.tk-toolbar-overlay__title{font-size:1rem;font-weight:var(--tk-font-weight-600, 600);color:var(--tk-color-base-surface-900, #0f172a)}.tk-toolbar-overlay__close{background:none;border:none;padding:var(--tk-spacing-base-25, .25rem);color:var(--tk-color-base-surface-500, #64748b);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--tk-borderRadius-s, 8px);transition:background-color .2s}.tk-toolbar-overlay__close:hover{background-color:var(--tk-color-base-surface-100, #f1f5f9);color:var(--tk-color-base-surface-900, #0f172a)}.tk-toolbar-overlay__body{display:flex;flex-direction:column;gap:var(--tk-spacing-base-100, 1rem);padding-top:var(--tk-spacing-base-125, 1.25rem);margin-bottom:var(--tk-spacing-base-150, 1.5rem);max-height:24rem;overflow-y:auto}.tk-toolbar-overlay__field{display:flex;flex-direction:column;gap:var(--tk-spacing-base-25, .25rem)}.tk-toolbar-overlay__footer{display:flex;justify-content:flex-end;gap:var(--tk-spacing-base-50, .5rem);padding-top:var(--tk-spacing-base-100, 1rem)}.tk-toolbar-sort-options{display:flex;flex-direction:column;width:100%}.tk-toolbar-sort-option{display:flex;justify-content:space-between;align-items:center;padding:var(--tk-spacing-base-50, .5rem) var(--tk-spacing-base-50, .5rem);cursor:pointer;border-radius:var(--tk-borderRadius-s, 8px);font-size:.875rem;color:var(--tk-color-base-surface-700, #334155);transition:background-color .2s,color .2s;background:none;border:none;width:100%;font-family:inherit;text-align:left}.tk-toolbar-sort-option:hover{background-color:var(--tk-color-primary-muted, #e9e6f4);color:var(--tk-color-base-primary-500, #16006f)}.tk-toolbar-sort-option--active{font-weight:var(--tk-font-weight-600, 600);color:var(--tk-color-base-primary-500, #16006f);background-color:var(--tk-color-primary-muted, #e9e6f4)}@media(max-width:768px){.tk-toolbar{flex-direction:column;align-items:stretch;gap:var(--tk-spacing-base-50, .5rem)}.tk-toolbar__search{width:100%}.tk-toolbar__actions{width:100%;justify-content:flex-end;margin-left:0}}@property --progress{syntax: \"<percentage>\"; inherits: false; initial-value: 0%;}@keyframes draw-border{0%{--progress: 0%}to{--progress: 100%}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}:host ::ng-deep .tk-input-bottom{display:none}:host ::ng-deep .p-popover{border-radius:var(--tk-borderRadius-m, 12px);box-shadow:0 10px 15px -3px #0000001a;border:1px solid var(--tk-color-base-surface-200, #e2e8f0);overflow:hidden}:host ::ng-deep .tk-toolbar-popover .p-popover-content{padding:0!important}:host ::ng-deep tk-drawer .tk-toolbar-overlay__body{padding-top:var(--tk-spacing-base-75, .75rem)!important;margin-bottom:0!important}:host ::ng-deep tk-drawer .tk-toolbar-overlay__footer{padding-top:var(--tk-spacing-base-75, .75rem)!important}::ng-deep .tk-toolbar-multiselect-panel .p-multiselect-option span{color:var(--tk-color-primary-default, #16006f);display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}::ng-deep .tk-toolbar-multiselect-panel .p-multiselect-option-selected{background-color:var(--tk-color-primary-muted, #b7b0d2)}::ng-deep .tk-toolbar-multiselect-panel .p-multiselect-filter{border:none;border-radius:0;box-shadow:none;border-bottom:1px solid var(--tk-surface-300, #d2d2d2)}\n"], dependencies: [{ kind: "component", type: ButtonComponent, selector: "tk-button", inputs: ["label", "disabled", "type", "severity", "variant", "link", "icon", "iconPosition", "tooltipText", "full", "ariaLabel", "size"], outputs: ["clicked"] }, { kind: "component", type: InputTextComponent, selector: "tk-input-text", inputs: ["value", "control", "label", "type", "id", "icon", "clearable", "errorMessage", "hint", "maxLength"], outputs: ["valueChange"] }, { kind: "component", type: CheckboxComponent, selector: "tk-checkbox", inputs: ["model", "value", "label", "name", "inputId", "binary", "control", "errorMessage", "indeterminate", "disabled"], outputs: ["modelChange", "indeterminateChange", "disabledChange"] }, { kind: "component", type: ActionGroupComponent, selector: "tk-action-group", inputs: ["actions", "maxVisible", "disabled"] }, { kind: "component", type: IconComponent, selector: "tk-icon", inputs: ["icon", "styleIcon", "color", "size", "disabled"] }, { kind: "component", type: DropdownComponent, selector: "tk-dropdown", inputs: ["model", "icon", "label", "iconPosition", "size", "disabled", "tooltip", "tooltipPosition"] }, { kind: "component", type: MultiselectComponent, selector: "tk-multiselect", inputs: ["model", "dataSource", "options", "labelText", "display", "maxSelectedLabels", "selectedItemsLabel", "emptyFilterMessage", "filter", "filterPlaceHolder", "appendTo", "panelStyleClass", "id", "styleClass", "errorMessage", "hint", "loading", "emptyMessage", "fetchParams", "sortField", "sortOrder", "disabled"], outputs: ["modelChange", "dataSourceChange", "selectionChange", "filterChange"] }, { kind: "component", type: ChipComponent, selector: "tk-chip", inputs: ["label", "icon", "removable", "removeIcon"], outputs: ["removed"] }, { kind: "component", type: DrawerComponent, selector: "tk-drawer", inputs: ["dialogRef", "title", "content", "headerAction", "tag", "subtle", "hasTabs", "size", "direction", "closable", "dismissible", "data", "interceptor", "isOpened"], outputs: ["isOpenedChange", "closed"] }, { kind: "ngmodule", type: PopoverModule }, { kind: "component", type: i1.Popover, selector: "p-popover", inputs: ["ariaLabel", "ariaLabelledBy", "dismissable", "style", "styleClass", "appendTo", "autoZIndex", "ariaCloseLabel", "baseZIndex", "focusOnShow", "showTransitionOptions", "hideTransitionOptions", "motionOptions"], outputs: ["onShow", "onHide"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
427
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: ToolbarComponent, isStandalone: true, selector: "tk-toolbar", inputs: { searchModel: { classPropertyName: "searchModel", publicName: "searchModel", isSignal: true, isRequired: false, transformFunction: null }, searchFloatLabel: { classPropertyName: "searchFloatLabel", publicName: "searchFloatLabel", isSignal: true, isRequired: false, transformFunction: null }, searchVisible: { classPropertyName: "searchVisible", publicName: "searchVisible", isSignal: true, isRequired: false, transformFunction: null }, view: { classPropertyName: "view", publicName: "view", isSignal: true, isRequired: false, transformFunction: null }, viewToggleVisible: { classPropertyName: "viewToggleVisible", publicName: "viewToggleVisible", isSignal: true, isRequired: false, transformFunction: null }, filters: { classPropertyName: "filters", publicName: "filters", isSignal: true, isRequired: false, transformFunction: null }, filterModel: { classPropertyName: "filterModel", publicName: "filterModel", isSignal: true, isRequired: false, transformFunction: null }, filterOptions: { classPropertyName: "filterOptions", publicName: "filterOptions", isSignal: true, isRequired: false, transformFunction: null }, filterOptionLabel: { classPropertyName: "filterOptionLabel", publicName: "filterOptionLabel", isSignal: true, isRequired: false, transformFunction: null }, filterFloatLabel: { classPropertyName: "filterFloatLabel", publicName: "filterFloatLabel", isSignal: true, isRequired: false, transformFunction: null }, filterVisible: { classPropertyName: "filterVisible", publicName: "filterVisible", isSignal: true, isRequired: false, transformFunction: null }, filterValues: { classPropertyName: "filterValues", publicName: "filterValues", isSignal: true, isRequired: false, transformFunction: null }, clearLabel: { classPropertyName: "clearLabel", publicName: "clearLabel", isSignal: true, isRequired: false, transformFunction: null }, deleteLabel: { classPropertyName: "deleteLabel", publicName: "deleteLabel", isSignal: true, isRequired: false, transformFunction: null }, filterLabel: { classPropertyName: "filterLabel", publicName: "filterLabel", isSignal: true, isRequired: false, transformFunction: null }, selectedLabel: { classPropertyName: "selectedLabel", publicName: "selectedLabel", isSignal: true, isRequired: false, transformFunction: null }, selectedPluralLabel: { classPropertyName: "selectedPluralLabel", publicName: "selectedPluralLabel", isSignal: true, isRequired: false, transformFunction: null }, applyLabel: { classPropertyName: "applyLabel", publicName: "applyLabel", isSignal: true, isRequired: false, transformFunction: null }, reloadTooltip: { classPropertyName: "reloadTooltip", publicName: "reloadTooltip", isSignal: true, isRequired: false, transformFunction: null }, sortTooltip: { classPropertyName: "sortTooltip", publicName: "sortTooltip", isSignal: true, isRequired: false, transformFunction: null }, viewCardsTooltip: { classPropertyName: "viewCardsTooltip", publicName: "viewCardsTooltip", isSignal: true, isRequired: false, transformFunction: null }, viewTableTooltip: { classPropertyName: "viewTableTooltip", publicName: "viewTableTooltip", isSignal: true, isRequired: false, transformFunction: null }, sortOptions: { classPropertyName: "sortOptions", publicName: "sortOptions", isSignal: true, isRequired: false, transformFunction: null }, sortLabel: { classPropertyName: "sortLabel", publicName: "sortLabel", isSignal: true, isRequired: false, transformFunction: null }, sortValue: { classPropertyName: "sortValue", publicName: "sortValue", isSignal: true, isRequired: false, transformFunction: null }, reloadVisible: { classPropertyName: "reloadVisible", publicName: "reloadVisible", isSignal: true, isRequired: false, transformFunction: null }, reloadInterval: { classPropertyName: "reloadInterval", publicName: "reloadInterval", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, globalActions: { classPropertyName: "globalActions", publicName: "globalActions", isSignal: true, isRequired: false, transformFunction: null }, selectionCount: { classPropertyName: "selectionCount", publicName: "selectionCount", isSignal: true, isRequired: false, transformFunction: null }, allSelected: { classPropertyName: "allSelected", publicName: "allSelected", isSignal: true, isRequired: false, transformFunction: null }, indeterminate: { classPropertyName: "indeterminate", publicName: "indeterminate", isSignal: true, isRequired: false, transformFunction: null }, selectionActions: { classPropertyName: "selectionActions", publicName: "selectionActions", isSignal: true, isRequired: false, transformFunction: null }, maxVisibleSelectionActions: { classPropertyName: "maxVisibleSelectionActions", publicName: "maxVisibleSelectionActions", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { searchModel: "searchModelChange", view: "viewChange", filterModel: "filterModelChange", filterValues: "filterValuesChange", sortValue: "sortValueChange", allSelected: "allSelectedChange", indeterminate: "indeterminateChange", reload: "reload", appliedFilters: "appliedFilters", appliedSort: "appliedSort" }, viewQueries: [{ propertyName: "filterPopover", first: true, predicate: ["filterPopover"], descendants: true, isSignal: true }, { propertyName: "sortPopover", first: true, predicate: ["sortPopover"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"tk-toolbar-container\">\n <!-- 1. Selection Status Bar (Desktop replacement) -->\n @if (selectionCount() > 0 && !isMobile()) {\n <div class=\"tk-toolbar-selection-bar\" data-testid=\"selection-bar-desktop\">\n <div class=\"tk-toolbar-selection-bar__left\">\n <tk-checkbox\n [binary]=\"true\"\n [(model)]=\"allSelected\"\n [indeterminate]=\"indeterminate()\">\n </tk-checkbox>\n <span class=\"tk-toolbar-selection-bar__count\">\n {{ selectionCount() }} {{ selectionCount() === 1 ? selectedLabel() : selectedPluralLabel() }}\n </span>\n </div>\n <div class=\"tk-toolbar-selection-bar__right\">\n @for (action of visibleSelectionActions(); track action.label) {\n <tk-button\n [label]=\"action.label\"\n [icon]=\"action.icon\"\n [severity]=\"action.severity ?? 'secondary'\"\n [variant]=\"action.variant !== undefined ? action.variant : (action.severity === 'danger' ? undefined : 'text')\"\n [disabled]=\"action.disabled ?? false\"\n (clicked)=\"action.action()\">\n </tk-button>\n }\n @if (overflowSelectionActions().length > 0) {\n <tk-dropdown\n icon=\"ellipsis-vertical\"\n [model]=\"overflowSelectionActions()\">\n </tk-dropdown>\n }\n </div>\n </div>\n } @else {\n <!-- 2. Main Tools Bar -->\n <div class=\"tk-toolbar\" data-testid=\"main-toolbar\">\n <!-- Left part: search input (always visible if searchVisible is true) -->\n @if (searchVisible()) {\n <div class=\"tk-toolbar__search\">\n <tk-input-text\n [label]=\"searchFloatLabel()\"\n icon=\"magnifying-glass\"\n [clearable]=\"true\"\n [value]=\"searchModel()\"\n (valueChange)=\"searchModel.set($event)\">\n </tk-input-text>\n </div>\n }\n\n <!-- Right part: actions -->\n <div class=\"tk-toolbar__actions\">\n @if (viewToggleVisible()) {\n <tk-button\n [icon]=\"view() === 'table' ? 'table' : 'table-list'\"\n severity=\"secondary\"\n variant=\"text\"\n [tooltipText]=\"view() === 'table' ? viewCardsTooltip() : viewTableTooltip()\"\n (clicked)=\"toggleView()\">\n </tk-button>\n }\n\n @if (derivedFilters().length > 0 && filterVisible()) {\n <tk-button\n #filterBtn\n [icon]=\"'filter'\"\n [severity]=\"hasActiveFilters() ? 'primary' : 'secondary'\"\n [variant]=\"hasActiveFilters() ? undefined : 'text'\"\n [tooltipText]=\"filterLabel()\"\n (click)=\"openFilters($event)\"\n (keydown.enter)=\"openFilters($event)\"\n (keydown.space)=\"openFilters($event)\">\n </tk-button>\n }\n\n @if (sortOptions().length > 0) {\n <tk-button\n #sortBtn\n [icon]=\"'arrow-down-wide-short'\"\n [severity]=\"hasActiveSort() ? 'primary' : 'secondary'\"\n [variant]=\"hasActiveSort() ? undefined : 'text'\"\n [tooltipText]=\"sortTooltip()\"\n (click)=\"openSort($event)\"\n (keydown.enter)=\"openSort($event)\"\n (keydown.space)=\"openSort($event)\">\n </tk-button>\n }\n\n @if (shouldShowReload()) {\n <tk-button\n class=\"tk-toolbar__reload-btn\"\n [class.tk-toolbar__reload-btn--animating]=\"\n reloadInterval() && reloadInterval()! > 0 && !loading()\n \"\n [class.tk-toolbar__reload-btn--spinning]=\"loading()\"\n [style.--reload-interval]=\"(reloadInterval() ?? 0) + 'ms'\"\n [icon]=\"'arrows-rotate'\"\n severity=\"secondary\"\n variant=\"text\"\n [tooltipText]=\"reloadTooltip()\"\n (clicked)=\"onReload()\">\n </tk-button>\n }\n\n @if (globalActions().length > 0) {\n <tk-action-group\n [actions]=\"globalActions()\"\n [maxVisible]=\"0\">\n </tk-action-group>\n }\n </div>\n </div>\n }\n\n @if (shouldShowActiveFiltersBar()) {\n <div class=\"tk-toolbar-chips-bar\" data-testid=\"chips-bar\">\n <div class=\"tk-toolbar-chips-bar__scroll\">\n @for (chip of activeChips(); track chip.filterKey + '-' + chip.code) {\n <tk-chip\n [label]=\"chip.label\"\n [removable]=\"true\"\n (removed)=\"removeChip(chip)\">\n </tk-chip>\n }\n </div>\n <tk-button\n [link]=\"true\"\n [label]=\"clearLabel()\"\n class=\"tk-toolbar-chips-bar__clear-btn\"\n (clicked)=\"clearAllFilters()\">\n </tk-button>\n </div>\n }\n\n <!-- 4. Selection Status Bar (Mobile floating panel) -->\n @if (selectionCount() > 0 && isMobile()) {\n <div class=\"tk-toolbar-selection-bar tk-toolbar-selection-bar--mobile\" data-testid=\"selection-bar-mobile\">\n <div class=\"tk-toolbar-selection-bar__left\">\n <tk-checkbox\n [binary]=\"true\"\n [(model)]=\"allSelected\"\n [indeterminate]=\"indeterminate()\">\n </tk-checkbox>\n <span class=\"tk-toolbar-selection-bar__count\">\n {{ selectionCount() }} {{ selectionCount() === 1 ? selectedLabel() : selectedPluralLabel() }}\n </span>\n </div>\n <div class=\"tk-toolbar-selection-bar__right\">\n @for (action of visibleSelectionActions(); track action.label) {\n <tk-button\n [label]=\"action.label\"\n [icon]=\"action.icon\"\n [severity]=\"action.severity ?? 'secondary'\"\n [variant]=\"action.variant !== undefined ? action.variant : (action.severity === 'danger' ? undefined : 'text')\"\n [disabled]=\"action.disabled ?? false\"\n (clicked)=\"action.action()\">\n </tk-button>\n }\n @if (overflowSelectionActions().length > 0) {\n <tk-dropdown\n icon=\"ellipsis-vertical\"\n [model]=\"overflowSelectionActions()\">\n </tk-dropdown>\n }\n </div>\n </div>\n }\n</div>\n\n<!-- 5. Desktop Popovers -->\n@if (derivedFilters().length > 0 && filterVisible() && !isMobile()) {\n <p-popover #filterPopover styleClass=\"tk-toolbar-popover\">\n <div class=\"tk-toolbar-overlay\" data-testid=\"filter-popover\">\n <div class=\"tk-toolbar-overlay__header\">\n <span class=\"tk-toolbar-overlay__title\">{{ filterLabel() }}</span>\n <button type=\"button\" class=\"tk-toolbar-overlay__close\" (click)=\"filterPopover.hide()\">\n <tk-icon icon=\"xmark\" size=\"lg\"></tk-icon>\n </button>\n </div>\n <div class=\"tk-toolbar-overlay__body\">\n @for (filter of derivedFilters(); track filter.key) {\n <div class=\"tk-toolbar-overlay__field\">\n <tk-multiselect\n [id]=\"'filter-' + filter.key\"\n [options]=\"filter.options\"\n [labelText]=\"filter.label\"\n [model]=\"tempFilterValues()[filter.key] || []\"\n (modelChange)=\"onTempFilterChange(filter.key, $event || [])\"\n appendTo=\"body\"\n panelStyleClass=\"tk-toolbar-multiselect-panel\">\n </tk-multiselect>\n </div>\n }\n </div>\n <div class=\"tk-toolbar-overlay__footer\">\n <tk-button\n [label]=\"clearLabel()\"\n severity=\"secondary\"\n variant=\"outlined\"\n (clicked)=\"clearTempFilters()\">\n </tk-button>\n <tk-button\n [label]=\"applyLabel()\"\n severity=\"primary\"\n (clicked)=\"applyFilters()\">\n </tk-button>\n </div>\n </div>\n </p-popover>\n}\n\n@if (sortOptions().length > 0 && !isMobile()) {\n <p-popover #sortPopover styleClass=\"tk-toolbar-popover\">\n <div class=\"tk-toolbar-overlay tk-toolbar-overlay--sort\" data-testid=\"sort-popover\">\n <div class=\"tk-toolbar-overlay__header\">\n <span class=\"tk-toolbar-overlay__title\">{{ sortLabel() }}</span>\n <button type=\"button\" class=\"tk-toolbar-overlay__close\" (click)=\"sortPopover.hide()\">\n <tk-icon icon=\"xmark\" size=\"lg\"></tk-icon>\n </button>\n </div>\n <div class=\"tk-toolbar-overlay__body\">\n <div class=\"tk-toolbar-sort-options\">\n @for (option of sortOptions(); track option.value) {\n <button \n type=\"button\"\n class=\"tk-toolbar-sort-option\" \n [class.tk-toolbar-sort-option--active]=\"sortValue() === option.value\"\n (click)=\"selectSortOption(option.value)\">\n <span>{{ option.label }}</span>\n </button>\n }\n </div>\n </div>\n </div>\n </p-popover>\n}\n\n<!-- 6. Mobile Drawers -->\n@if (derivedFilters().length > 0 && filterVisible() && isMobile()) {\n <tk-drawer\n [(isOpened)]=\"showFilterDrawer\"\n [title]=\"filterLabel()\"\n direction=\"bottom\"\n [dismissible]=\"true\">\n <div class=\"tk-toolbar-overlay__body\">\n @for (filter of derivedFilters(); track filter.key) {\n <div class=\"tk-toolbar-overlay__field\">\n <tk-multiselect\n [id]=\"'filter-mob-' + filter.key\"\n [options]=\"filter.options\"\n [labelText]=\"filter.label\"\n [model]=\"tempFilterValues()[filter.key] || []\"\n (modelChange)=\"onTempFilterChange(filter.key, $event || [])\"\n appendTo=\"body\"\n panelStyleClass=\"tk-toolbar-multiselect-panel\">\n </tk-multiselect>\n </div>\n }\n </div>\n <div class=\"tk-toolbar-overlay__footer\">\n <tk-button\n [label]=\"clearLabel()\"\n severity=\"secondary\"\n variant=\"outlined\"\n (clicked)=\"clearTempFilters()\">\n </tk-button>\n <tk-button\n [label]=\"applyLabel()\"\n severity=\"primary\"\n (clicked)=\"applyFilters()\">\n </tk-button>\n </div>\n </tk-drawer>\n}\n\n@if (sortOptions().length > 0 && isMobile()) {\n <tk-drawer\n [(isOpened)]=\"showSortDrawer\"\n [title]=\"sortLabel()\"\n direction=\"bottom\"\n [dismissible]=\"true\">\n <div class=\"tk-toolbar-overlay__body\">\n <div class=\"tk-toolbar-sort-options\">\n @for (option of sortOptions(); track option.value) {\n <button \n type=\"button\"\n class=\"tk-toolbar-sort-option\" \n [class.tk-toolbar-sort-option--active]=\"tempSortValue() === option.value\"\n (click)=\"toggleSortOptionMobile(option.value)\">\n <span>{{ option.label }}</span>\n </button>\n }\n </div>\n </div>\n <div class=\"tk-toolbar-overlay__footer\">\n <tk-button\n [label]=\"applyLabel()\"\n severity=\"primary\"\n (clicked)=\"applySortMobile()\">\n </tk-button>\n </div>\n </tk-drawer>\n}\n", styles: [".tk-toolbar-container{display:flex;flex-direction:column;gap:var(--tk-spacing-base-50, .5rem);width:100%}.tk-toolbar{display:flex;justify-content:flex-end;align-items:center;flex-wrap:wrap;gap:var(--tk-spacing-base-100, 1rem);width:100%}.tk-toolbar__search{width:15rem;max-width:100%}@media(max-width:768px){.tk-toolbar__search{width:100%}}.tk-toolbar__actions{display:flex;align-items:center;gap:var(--tk-spacing-base-50, .5rem)}.tk-toolbar__actions>tk-button{width:2.5rem;height:2.5rem}.tk-toolbar__actions>tk-button ::ng-deep .p-button{width:100%;height:100%;padding:0;display:flex;align-items:center;justify-content:center}.tk-toolbar__reload-btn{border-radius:var(--tk-borderRadius-theme-s, var(--tk-borderRadius-s, .5rem))!important;position:relative}.tk-toolbar__reload-btn--animating:before{content:\"\";position:absolute;inset:0;z-index:1;background:conic-gradient(var(--tk-color-base-sky-300, #92bada) var(--progress, 0%),transparent var(--progress, 0%));-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;padding:3px;border-radius:inherit;animation:draw-border var(--reload-interval, 5s) infinite linear;pointer-events:none}.tk-toolbar__reload-btn--spinning ::ng-deep tk-icon{display:inline-block;animation:spin 1s infinite linear}.tk-toolbar-selection-bar{display:flex;justify-content:space-between;align-items:center;width:100%;background-color:var(--tk-color-base-surface-50, #f8fafc);border:1px solid var(--tk-color-base-surface-200, #e2e8f0);border-radius:var(--tk-borderRadius-s, 8px);padding:var(--tk-spacing-base-75, .75rem) var(--tk-spacing-base-100, 1rem);box-sizing:border-box}.tk-toolbar-selection-bar__left{display:flex;align-items:center;gap:var(--tk-spacing-base-75, .75rem)}.tk-toolbar-selection-bar__count{font-size:1rem;font-weight:var(--tk-font-weight-600, 600);color:var(--tk-color-base-surface-900, #0f172a)}.tk-toolbar-selection-bar__right{display:flex;align-items:center;gap:var(--tk-spacing-base-50, .5rem)}.tk-toolbar-selection-bar--mobile{position:fixed;bottom:0;left:0;width:100%;max-width:none;transform:none;z-index:1000;background-color:var(--tk-color-base-surface-0, #ffffff);box-shadow:0 -4px 6px -1px #0000000d,0 -2px 4px -1px #00000008;border-radius:0;border:none;border-top:1px solid var(--tk-color-base-surface-200, #e2e8f0);padding:var(--tk-spacing-base-75, .75rem) var(--tk-spacing-base-100, 1rem)}.tk-toolbar-chips-bar{width:100%;border-top:none;padding-top:var(--tk-spacing-base-50, .5rem);display:flex;justify-content:space-between;align-items:center;gap:var(--tk-spacing-base-100, 1rem)}.tk-toolbar-chips-bar__scroll{display:flex;align-items:center;flex-wrap:wrap;gap:var(--tk-spacing-base-50, .5rem);flex-grow:1}.tk-toolbar-chips-bar__clear-btn{flex-shrink:0}.tk-toolbar-overlay{display:flex;flex-direction:column;width:20rem;max-width:100%;padding:var(--tk-spacing-base-100, 1rem);box-sizing:border-box}.tk-toolbar-overlay--sort{width:15rem;padding:var(--tk-spacing-base-50, .5rem)!important}.tk-toolbar-overlay--sort .tk-toolbar-overlay__header{padding:var(--tk-spacing-base-50, .5rem) var(--tk-spacing-base-50, .5rem) var(--tk-spacing-base-25, .25rem) var(--tk-spacing-base-50, .5rem)!important}.tk-toolbar-overlay--sort .tk-toolbar-overlay__body{padding:0!important;margin-bottom:0!important}.tk-toolbar-overlay__header{display:flex;justify-content:space-between;align-items:center;margin-bottom:0;padding:0 0 var(--tk-spacing-base-50, .5rem) 0}.tk-toolbar-overlay__title{font-size:1rem;font-weight:var(--tk-font-weight-600, 600);color:var(--tk-color-base-surface-900, #0f172a)}.tk-toolbar-overlay__close{background:none;border:none;padding:var(--tk-spacing-base-25, .25rem);color:var(--tk-color-base-surface-500, #64748b);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--tk-borderRadius-s, 8px);transition:background-color .2s}.tk-toolbar-overlay__close:hover{background-color:var(--tk-color-base-surface-100, #f1f5f9);color:var(--tk-color-base-surface-900, #0f172a)}.tk-toolbar-overlay__body{display:flex;flex-direction:column;gap:var(--tk-spacing-base-100, 1rem);padding-top:var(--tk-spacing-base-125, 1.25rem);margin-bottom:var(--tk-spacing-base-150, 1.5rem);max-height:24rem;overflow-y:auto}.tk-toolbar-overlay__field{display:flex;flex-direction:column;gap:var(--tk-spacing-base-25, .25rem)}.tk-toolbar-overlay__footer{display:flex;justify-content:flex-end;gap:var(--tk-spacing-base-50, .5rem);padding-top:var(--tk-spacing-base-100, 1rem)}.tk-toolbar-sort-options{display:flex;flex-direction:column;width:100%}.tk-toolbar-sort-option{display:flex;justify-content:space-between;align-items:center;padding:var(--tk-spacing-base-50, .5rem) var(--tk-spacing-base-50, .5rem);cursor:pointer;border-radius:var(--tk-borderRadius-s, 8px);font-size:.875rem;color:var(--tk-color-base-surface-700, #334155);transition:background-color .2s,color .2s;background:none;border:none;width:100%;font-family:inherit;text-align:left}.tk-toolbar-sort-option:hover{background-color:var(--tk-color-primary-muted, #e9e6f4);color:var(--tk-color-base-primary-500, #16006f)}.tk-toolbar-sort-option--active{font-weight:var(--tk-font-weight-600, 600);color:var(--tk-color-base-primary-500, #16006f);background-color:var(--tk-color-primary-muted, #e9e6f4)}@media(max-width:768px){.tk-toolbar{flex-direction:column;align-items:stretch;gap:var(--tk-spacing-base-50, .5rem)}.tk-toolbar__search{width:100%}.tk-toolbar__actions{width:100%;justify-content:flex-end;margin-left:0}}@property --progress{syntax: \"<percentage>\"; inherits: false; initial-value: 0%;}@keyframes draw-border{0%{--progress: 0%}to{--progress: 100%}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}:host ::ng-deep .tk-input-bottom{display:none}:host ::ng-deep .p-popover{border-radius:var(--tk-borderRadius-m, 12px);box-shadow:0 10px 15px -3px #0000001a;border:1px solid var(--tk-color-base-surface-200, #e2e8f0);overflow:hidden}:host ::ng-deep .tk-toolbar-popover .p-popover-content{padding:0!important}:host ::ng-deep tk-drawer .tk-toolbar-overlay__body{padding-top:var(--tk-spacing-base-75, .75rem)!important;margin-bottom:0!important}:host ::ng-deep tk-drawer .tk-toolbar-overlay__footer{padding-top:var(--tk-spacing-base-75, .75rem)!important}::ng-deep .tk-toolbar-multiselect-panel .p-multiselect-option span{color:var(--tk-color-primary-default, #16006f);display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}::ng-deep .tk-toolbar-multiselect-panel .p-multiselect-option-selected{background-color:var(--tk-color-primary-muted, #b7b0d2)}::ng-deep .tk-toolbar-multiselect-panel .p-multiselect-filter{border:none;border-radius:0;box-shadow:none;border-bottom:1px solid var(--tk-surface-300, #d2d2d2)}\n"], dependencies: [{ kind: "component", type: ButtonComponent, selector: "tk-button", inputs: ["label", "disabled", "type", "severity", "variant", "link", "icon", "iconPosition", "tooltipText", "full", "ariaLabel", "size"], outputs: ["clicked"] }, { kind: "component", type: InputTextComponent, selector: "tk-input-text", inputs: ["value", "control", "label", "type", "id", "icon", "clearable", "errorMessage", "hint", "maxLength"], outputs: ["valueChange"] }, { kind: "component", type: CheckboxComponent, selector: "tk-checkbox", inputs: ["model", "value", "label", "name", "inputId", "binary", "control", "errorMessage", "hint", "indeterminate", "disabled"], outputs: ["modelChange", "indeterminateChange", "disabledChange"] }, { kind: "component", type: ActionGroupComponent, selector: "tk-action-group", inputs: ["actions", "maxVisible", "disabled"] }, { kind: "component", type: IconComponent, selector: "tk-icon", inputs: ["icon", "styleIcon", "color", "size", "disabled"] }, { kind: "component", type: DropdownComponent, selector: "tk-dropdown", inputs: ["model", "icon", "label", "iconPosition", "size", "disabled", "tooltip", "tooltipPosition"] }, { kind: "component", type: MultiselectComponent, selector: "tk-multiselect", inputs: ["model", "dataSource", "options", "labelText", "display", "maxSelectedLabels", "selectedItemsLabel", "emptyFilterMessage", "filter", "filterPlaceHolder", "appendTo", "panelStyleClass", "id", "styleClass", "errorMessage", "hint", "loading", "emptyMessage", "fetchParams", "sortField", "sortOrder", "disabled"], outputs: ["modelChange", "dataSourceChange", "selectionChange", "filterChange"] }, { kind: "component", type: ChipComponent, selector: "tk-chip", inputs: ["label", "icon", "removable", "removeIcon"], outputs: ["removed"] }, { kind: "component", type: DrawerComponent, selector: "tk-drawer", inputs: ["dialogRef", "title", "content", "headerAction", "tag", "subtle", "hasTabs", "size", "direction", "closable", "dismissible", "data", "interceptor", "isOpened"], outputs: ["isOpenedChange", "closed"] }, { kind: "ngmodule", type: PopoverModule }, { kind: "component", type: i1.Popover, selector: "p-popover", inputs: ["ariaLabel", "ariaLabelledBy", "dismissable", "style", "styleClass", "appendTo", "autoZIndex", "ariaCloseLabel", "baseZIndex", "focusOnShow", "showTransitionOptions", "hideTransitionOptions", "motionOptions"], outputs: ["onShow", "onHide"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
428
428
  }
429
429
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ToolbarComponent, decorators: [{
430
430
  type: Component,
@@ -439,7 +439,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImpo
439
439
  ChipComponent,
440
440
  DrawerComponent,
441
441
  PopoverModule,
442
- ], template: "<div class=\"tk-toolbar-container\">\n <!-- 1. Selection Status Bar (Desktop replacement) -->\n @if (selectionCount() > 0 && !isMobile()) {\n <div class=\"tk-toolbar-selection-bar\" data-testid=\"selection-bar-desktop\">\n <div class=\"tk-toolbar-selection-bar__left\">\n <tk-checkbox\n [binary]=\"true\"\n [(model)]=\"allSelected\"\n [indeterminate]=\"indeterminate()\">\n </tk-checkbox>\n <span class=\"tk-toolbar-selection-bar__count\">\n {{ selectionCount() }} {{ selectionCount() === 1 ? selectedLabel() : selectedPluralLabel() }}\n </span>\n </div>\n <div class=\"tk-toolbar-selection-bar__right\">\n @for (action of visibleSelectionActions(); track action.label) {\n <tk-button\n [label]=\"action.label\"\n [icon]=\"action.icon\"\n [severity]=\"action.severity ?? 'secondary'\"\n [variant]=\"action.variant !== undefined ? action.variant : (action.severity === 'danger' ? undefined : 'text')\"\n [disabled]=\"action.disabled ?? false\"\n (clicked)=\"action.action()\">\n </tk-button>\n }\n @if (overflowSelectionActions().length > 0) {\n <tk-dropdown\n icon=\"ellipsis-vertical\"\n [model]=\"overflowSelectionActions()\">\n </tk-dropdown>\n }\n </div>\n </div>\n } @else {\n <!-- 2. Main Tools Bar -->\n <div class=\"tk-toolbar\" data-testid=\"main-toolbar\">\n <!-- Left part: search input (always visible if searchVisible is true) -->\n @if (searchVisible()) {\n <div class=\"tk-toolbar__search\">\n <tk-input-text\n [label]=\"searchFloatLabel()\"\n icon=\"magnifying-glass\"\n [clearable]=\"true\"\n [value]=\"searchModel()\"\n (valueChange)=\"searchModel.set($event)\">\n </tk-input-text>\n </div>\n }\n\n <!-- Right part: actions -->\n <div class=\"tk-toolbar__actions\">\n @if (viewToggleVisible()) {\n <tk-button\n [icon]=\"view() === 'table' ? 'table' : 'table-list'\"\n severity=\"secondary\"\n variant=\"text\"\n [tooltipText]=\"view() === 'table' ? viewCardsTooltip() : viewTableTooltip()\"\n (clicked)=\"toggleView()\">\n </tk-button>\n }\n\n @if (derivedFilters().length > 0 && filterVisible()) {\n <tk-button\n #filterBtn\n [icon]=\"'filter'\"\n [severity]=\"hasActiveFilters() ? 'primary' : 'secondary'\"\n [variant]=\"hasActiveFilters() ? undefined : 'text'\"\n [tooltipText]=\"filterLabel()\"\n (click)=\"openFilters($event)\"\n (keydown.enter)=\"openFilters($event)\"\n (keydown.space)=\"openFilters($event)\">\n </tk-button>\n }\n\n @if (sortOptions().length > 0) {\n <tk-button\n #sortBtn\n [icon]=\"'arrow-down-wide-short'\"\n [severity]=\"hasActiveSort() ? 'primary' : 'secondary'\"\n [variant]=\"hasActiveSort() ? undefined : 'text'\"\n [tooltipText]=\"sortTooltip()\"\n (click)=\"openSort($event)\"\n (keydown.enter)=\"openSort($event)\"\n (keydown.space)=\"openSort($event)\">\n </tk-button>\n }\n\n @if (shouldShowReload()) {\n <tk-button\n class=\"tk-toolbar__reload-btn\"\n [class.tk-toolbar__reload-btn--animating]=\"\n reloadInterval() && reloadInterval()! > 0 && !loading()\n \"\n [class.tk-toolbar__reload-btn--spinning]=\"loading()\"\n [style.--reload-interval]=\"(reloadInterval() ?? 0) + 'ms'\"\n [icon]=\"'arrows-rotate'\"\n severity=\"secondary\"\n variant=\"text\"\n [tooltipText]=\"reloadTooltip()\"\n (clicked)=\"onReload()\">\n </tk-button>\n }\n\n @if (globalActions().length > 0) {\n <tk-action-group\n [actions]=\"globalActions()\"\n [maxVisible]=\"0\">\n </tk-action-group>\n }\n </div>\n </div>\n }\n\n @if (shouldShowActiveFiltersBar()) {\n <div class=\"tk-toolbar-chips-bar\" data-testid=\"chips-bar\">\n <div class=\"tk-toolbar-chips-bar__scroll\">\n @for (chip of activeChips(); track chip.filterKey + '-' + chip.code) {\n <tk-chip\n [label]=\"chip.label\"\n [removable]=\"true\"\n (removed)=\"removeChip(chip)\">\n </tk-chip>\n }\n </div>\n <tk-button\n [link]=\"true\"\n [label]=\"clearLabel()\"\n class=\"tk-toolbar-chips-bar__clear-btn\"\n (clicked)=\"clearAllFilters()\">\n </tk-button>\n </div>\n }\n\n <!-- 4. Selection Status Bar (Mobile floating panel) -->\n @if (selectionCount() > 0 && isMobile()) {\n <div class=\"tk-toolbar-selection-bar tk-toolbar-selection-bar--mobile\" data-testid=\"selection-bar-mobile\">\n <div class=\"tk-toolbar-selection-bar__left\">\n <tk-checkbox\n [binary]=\"true\"\n [(model)]=\"allSelected\"\n [indeterminate]=\"indeterminate()\">\n </tk-checkbox>\n <span class=\"tk-toolbar-selection-bar__count\">\n {{ selectionCount() }} {{ selectionCount() === 1 ? selectedLabel() : selectedPluralLabel() }}\n </span>\n </div>\n <div class=\"tk-toolbar-selection-bar__right\">\n @for (action of visibleSelectionActions(); track action.label) {\n <tk-button\n [label]=\"action.label\"\n [icon]=\"action.icon\"\n [severity]=\"action.severity ?? 'secondary'\"\n [variant]=\"action.variant !== undefined ? action.variant : (action.severity === 'danger' ? undefined : 'text')\"\n [disabled]=\"action.disabled ?? false\"\n (clicked)=\"action.action()\">\n </tk-button>\n }\n @if (overflowSelectionActions().length > 0) {\n <tk-dropdown\n icon=\"ellipsis-vertical\"\n [model]=\"overflowSelectionActions()\">\n </tk-dropdown>\n }\n </div>\n </div>\n }\n</div>\n\n<!-- 5. Desktop Popovers -->\n@if (derivedFilters().length > 0 && filterVisible() && !isMobile()) {\n <p-popover #filterPopover styleClass=\"tk-toolbar-popover\">\n <div class=\"tk-toolbar-overlay\" data-testid=\"filter-popover\">\n <div class=\"tk-toolbar-overlay__header\">\n <span class=\"tk-toolbar-overlay__title\">{{ filterLabel() }}</span>\n <button type=\"button\" class=\"tk-toolbar-overlay__close\" (click)=\"filterPopover.hide()\">\n <tk-icon icon=\"xmark\" size=\"lg\"></tk-icon>\n </button>\n </div>\n <div class=\"tk-toolbar-overlay__body\">\n @for (filter of derivedFilters(); track filter.key) {\n <div class=\"tk-toolbar-overlay__field\">\n <tk-multiselect\n [id]=\"'filter-' + filter.key\"\n [options]=\"filter.options\"\n [labelText]=\"filter.label\"\n [model]=\"tempFilterValues()[filter.key] || []\"\n (modelChange)=\"onTempFilterChange(filter.key, $event || [])\"\n appendTo=\"body\"\n panelStyleClass=\"tk-toolbar-multiselect-panel\">\n </tk-multiselect>\n </div>\n }\n </div>\n <div class=\"tk-toolbar-overlay__footer\">\n <tk-button\n [label]=\"clearLabel()\"\n severity=\"secondary\"\n variant=\"outlined\"\n (clicked)=\"clearTempFilters()\">\n </tk-button>\n <tk-button\n [label]=\"applyLabel()\"\n severity=\"primary\"\n (clicked)=\"applyFilters()\">\n </tk-button>\n </div>\n </div>\n </p-popover>\n}\n\n@if (sortOptions().length > 0 && !isMobile()) {\n <p-popover #sortPopover styleClass=\"tk-toolbar-popover\">\n <div class=\"tk-toolbar-overlay tk-toolbar-overlay--sort\" data-testid=\"sort-popover\">\n <div class=\"tk-toolbar-overlay__header\">\n <span class=\"tk-toolbar-overlay__title\">{{ sortLabel() }}</span>\n <button type=\"button\" class=\"tk-toolbar-overlay__close\" (click)=\"sortPopover.hide()\">\n <tk-icon icon=\"xmark\" size=\"lg\"></tk-icon>\n </button>\n </div>\n <div class=\"tk-toolbar-overlay__body\">\n <div class=\"tk-toolbar-sort-options\">\n @for (option of sortOptions(); track option.value) {\n <button \n type=\"button\"\n class=\"tk-toolbar-sort-option\" \n [class.tk-toolbar-sort-option--active]=\"sortValue() === option.value\"\n (click)=\"selectSortOption(option.value)\">\n <span>{{ option.label }}</span>\n </button>\n }\n </div>\n </div>\n </div>\n </p-popover>\n}\n\n<!-- 6. Mobile Drawers -->\n@if (derivedFilters().length > 0 && filterVisible() && isMobile()) {\n <tk-drawer\n [(isOpened)]=\"showFilterDrawer\"\n [title]=\"filterLabel()\"\n direction=\"bottom\"\n [dismissible]=\"true\">\n <div class=\"tk-toolbar-overlay__body\">\n @for (filter of derivedFilters(); track filter.key) {\n <div class=\"tk-toolbar-overlay__field\">\n <tk-multiselect\n [id]=\"'filter-mob-' + filter.key\"\n [options]=\"filter.options\"\n [labelText]=\"filter.label\"\n [model]=\"tempFilterValues()[filter.key] || []\"\n (modelChange)=\"onTempFilterChange(filter.key, $event || [])\"\n appendTo=\"body\"\n panelStyleClass=\"tk-toolbar-multiselect-panel\">\n </tk-multiselect>\n </div>\n }\n </div>\n <div class=\"tk-toolbar-overlay__footer\">\n <tk-button\n [label]=\"clearLabel()\"\n severity=\"secondary\"\n variant=\"outlined\"\n (clicked)=\"clearTempFilters()\">\n </tk-button>\n <tk-button\n [label]=\"applyLabel()\"\n severity=\"primary\"\n (clicked)=\"applyFilters()\">\n </tk-button>\n </div>\n </tk-drawer>\n}\n\n@if (sortOptions().length > 0 && isMobile()) {\n <tk-drawer\n [(isOpened)]=\"showSortDrawer\"\n [title]=\"sortLabel()\"\n direction=\"bottom\"\n [dismissible]=\"true\">\n <div class=\"tk-toolbar-overlay__body\">\n <div class=\"tk-toolbar-sort-options\">\n @for (option of sortOptions(); track option.value) {\n <button \n type=\"button\"\n class=\"tk-toolbar-sort-option\" \n [class.tk-toolbar-sort-option--active]=\"tempSortValue() === option.value\"\n (click)=\"toggleSortOptionMobile(option.value)\">\n <span>{{ option.label }}</span>\n </button>\n }\n </div>\n </div>\n <div class=\"tk-toolbar-overlay__footer\">\n <tk-button\n [label]=\"applyLabel()\"\n severity=\"primary\"\n (clicked)=\"applySortMobile()\">\n </tk-button>\n </div>\n </tk-drawer>\n}\n", styles: [".tk-toolbar-container{display:flex;flex-direction:column;gap:var(--tk-spacing-base-50, .5rem);width:100%}.tk-toolbar{display:flex;justify-content:flex-end;align-items:center;flex-wrap:wrap;gap:var(--tk-spacing-base-100, 1rem);width:100%}.tk-toolbar__search{width:15rem;max-width:100%}@media(max-width:768px){.tk-toolbar__search{width:100%}}.tk-toolbar__actions{display:flex;align-items:center;gap:var(--tk-spacing-base-50, .5rem)}.tk-toolbar__actions>tk-button{width:2.5rem;height:2.5rem}.tk-toolbar__actions>tk-button ::ng-deep .p-button{width:100%;height:100%;padding:0;display:flex;align-items:center;justify-content:center}.tk-toolbar__reload-btn{border-radius:var(--tk-borderRadius-s, 8px);position:relative}.tk-toolbar__reload-btn--animating:before{content:\"\";position:absolute;inset:0;z-index:1;background:conic-gradient(var(--tk-color-base-sky-300, #92bada) var(--progress, 0%),transparent var(--progress, 0%));-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;padding:3px;border-radius:inherit;animation:draw-border var(--reload-interval, 5s) infinite linear;pointer-events:none}.tk-toolbar__reload-btn--spinning ::ng-deep tk-icon{display:inline-block;animation:spin 1s infinite linear}.tk-toolbar-selection-bar{display:flex;justify-content:space-between;align-items:center;width:100%;background-color:var(--tk-color-base-surface-50, #f8fafc);border:1px solid var(--tk-color-base-surface-200, #e2e8f0);border-radius:var(--tk-borderRadius-s, 8px);padding:var(--tk-spacing-base-75, .75rem) var(--tk-spacing-base-100, 1rem);box-sizing:border-box}.tk-toolbar-selection-bar__left{display:flex;align-items:center;gap:var(--tk-spacing-base-75, .75rem)}.tk-toolbar-selection-bar__count{font-size:1rem;font-weight:var(--tk-font-weight-600, 600);color:var(--tk-color-base-surface-900, #0f172a)}.tk-toolbar-selection-bar__right{display:flex;align-items:center;gap:var(--tk-spacing-base-50, .5rem)}.tk-toolbar-selection-bar--mobile{position:fixed;bottom:0;left:0;width:100%;max-width:none;transform:none;z-index:1000;background-color:var(--tk-color-base-surface-0, #ffffff);box-shadow:0 -4px 6px -1px #0000000d,0 -2px 4px -1px #00000008;border-radius:0;border:none;border-top:1px solid var(--tk-color-base-surface-200, #e2e8f0);padding:var(--tk-spacing-base-75, .75rem) var(--tk-spacing-base-100, 1rem)}.tk-toolbar-chips-bar{width:100%;border-top:none;padding-top:var(--tk-spacing-base-50, .5rem);display:flex;justify-content:space-between;align-items:center;gap:var(--tk-spacing-base-100, 1rem)}.tk-toolbar-chips-bar__scroll{display:flex;align-items:center;flex-wrap:wrap;gap:var(--tk-spacing-base-50, .5rem);flex-grow:1}.tk-toolbar-chips-bar__clear-btn{flex-shrink:0}.tk-toolbar-overlay{display:flex;flex-direction:column;width:20rem;max-width:100%;padding:var(--tk-spacing-base-100, 1rem);box-sizing:border-box}.tk-toolbar-overlay--sort{width:15rem;padding:var(--tk-spacing-base-50, .5rem)!important}.tk-toolbar-overlay--sort .tk-toolbar-overlay__header{padding:var(--tk-spacing-base-50, .5rem) var(--tk-spacing-base-50, .5rem) var(--tk-spacing-base-25, .25rem) var(--tk-spacing-base-50, .5rem)!important}.tk-toolbar-overlay--sort .tk-toolbar-overlay__body{padding:0!important;margin-bottom:0!important}.tk-toolbar-overlay__header{display:flex;justify-content:space-between;align-items:center;margin-bottom:0;padding:0 0 var(--tk-spacing-base-50, .5rem) 0}.tk-toolbar-overlay__title{font-size:1rem;font-weight:var(--tk-font-weight-600, 600);color:var(--tk-color-base-surface-900, #0f172a)}.tk-toolbar-overlay__close{background:none;border:none;padding:var(--tk-spacing-base-25, .25rem);color:var(--tk-color-base-surface-500, #64748b);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--tk-borderRadius-s, 8px);transition:background-color .2s}.tk-toolbar-overlay__close:hover{background-color:var(--tk-color-base-surface-100, #f1f5f9);color:var(--tk-color-base-surface-900, #0f172a)}.tk-toolbar-overlay__body{display:flex;flex-direction:column;gap:var(--tk-spacing-base-100, 1rem);padding-top:var(--tk-spacing-base-125, 1.25rem);margin-bottom:var(--tk-spacing-base-150, 1.5rem);max-height:24rem;overflow-y:auto}.tk-toolbar-overlay__field{display:flex;flex-direction:column;gap:var(--tk-spacing-base-25, .25rem)}.tk-toolbar-overlay__footer{display:flex;justify-content:flex-end;gap:var(--tk-spacing-base-50, .5rem);padding-top:var(--tk-spacing-base-100, 1rem)}.tk-toolbar-sort-options{display:flex;flex-direction:column;width:100%}.tk-toolbar-sort-option{display:flex;justify-content:space-between;align-items:center;padding:var(--tk-spacing-base-50, .5rem) var(--tk-spacing-base-50, .5rem);cursor:pointer;border-radius:var(--tk-borderRadius-s, 8px);font-size:.875rem;color:var(--tk-color-base-surface-700, #334155);transition:background-color .2s,color .2s;background:none;border:none;width:100%;font-family:inherit;text-align:left}.tk-toolbar-sort-option:hover{background-color:var(--tk-color-primary-muted, #e9e6f4);color:var(--tk-color-base-primary-500, #16006f)}.tk-toolbar-sort-option--active{font-weight:var(--tk-font-weight-600, 600);color:var(--tk-color-base-primary-500, #16006f);background-color:var(--tk-color-primary-muted, #e9e6f4)}@media(max-width:768px){.tk-toolbar{flex-direction:column;align-items:stretch;gap:var(--tk-spacing-base-50, .5rem)}.tk-toolbar__search{width:100%}.tk-toolbar__actions{width:100%;justify-content:flex-end;margin-left:0}}@property --progress{syntax: \"<percentage>\"; inherits: false; initial-value: 0%;}@keyframes draw-border{0%{--progress: 0%}to{--progress: 100%}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}:host ::ng-deep .tk-input-bottom{display:none}:host ::ng-deep .p-popover{border-radius:var(--tk-borderRadius-m, 12px);box-shadow:0 10px 15px -3px #0000001a;border:1px solid var(--tk-color-base-surface-200, #e2e8f0);overflow:hidden}:host ::ng-deep .tk-toolbar-popover .p-popover-content{padding:0!important}:host ::ng-deep tk-drawer .tk-toolbar-overlay__body{padding-top:var(--tk-spacing-base-75, .75rem)!important;margin-bottom:0!important}:host ::ng-deep tk-drawer .tk-toolbar-overlay__footer{padding-top:var(--tk-spacing-base-75, .75rem)!important}::ng-deep .tk-toolbar-multiselect-panel .p-multiselect-option span{color:var(--tk-color-primary-default, #16006f);display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}::ng-deep .tk-toolbar-multiselect-panel .p-multiselect-option-selected{background-color:var(--tk-color-primary-muted, #b7b0d2)}::ng-deep .tk-toolbar-multiselect-panel .p-multiselect-filter{border:none;border-radius:0;box-shadow:none;border-bottom:1px solid var(--tk-surface-300, #d2d2d2)}\n"] }]
442
+ ], template: "<div class=\"tk-toolbar-container\">\n <!-- 1. Selection Status Bar (Desktop replacement) -->\n @if (selectionCount() > 0 && !isMobile()) {\n <div class=\"tk-toolbar-selection-bar\" data-testid=\"selection-bar-desktop\">\n <div class=\"tk-toolbar-selection-bar__left\">\n <tk-checkbox\n [binary]=\"true\"\n [(model)]=\"allSelected\"\n [indeterminate]=\"indeterminate()\">\n </tk-checkbox>\n <span class=\"tk-toolbar-selection-bar__count\">\n {{ selectionCount() }} {{ selectionCount() === 1 ? selectedLabel() : selectedPluralLabel() }}\n </span>\n </div>\n <div class=\"tk-toolbar-selection-bar__right\">\n @for (action of visibleSelectionActions(); track action.label) {\n <tk-button\n [label]=\"action.label\"\n [icon]=\"action.icon\"\n [severity]=\"action.severity ?? 'secondary'\"\n [variant]=\"action.variant !== undefined ? action.variant : (action.severity === 'danger' ? undefined : 'text')\"\n [disabled]=\"action.disabled ?? false\"\n (clicked)=\"action.action()\">\n </tk-button>\n }\n @if (overflowSelectionActions().length > 0) {\n <tk-dropdown\n icon=\"ellipsis-vertical\"\n [model]=\"overflowSelectionActions()\">\n </tk-dropdown>\n }\n </div>\n </div>\n } @else {\n <!-- 2. Main Tools Bar -->\n <div class=\"tk-toolbar\" data-testid=\"main-toolbar\">\n <!-- Left part: search input (always visible if searchVisible is true) -->\n @if (searchVisible()) {\n <div class=\"tk-toolbar__search\">\n <tk-input-text\n [label]=\"searchFloatLabel()\"\n icon=\"magnifying-glass\"\n [clearable]=\"true\"\n [value]=\"searchModel()\"\n (valueChange)=\"searchModel.set($event)\">\n </tk-input-text>\n </div>\n }\n\n <!-- Right part: actions -->\n <div class=\"tk-toolbar__actions\">\n @if (viewToggleVisible()) {\n <tk-button\n [icon]=\"view() === 'table' ? 'table' : 'table-list'\"\n severity=\"secondary\"\n variant=\"text\"\n [tooltipText]=\"view() === 'table' ? viewCardsTooltip() : viewTableTooltip()\"\n (clicked)=\"toggleView()\">\n </tk-button>\n }\n\n @if (derivedFilters().length > 0 && filterVisible()) {\n <tk-button\n #filterBtn\n [icon]=\"'filter'\"\n [severity]=\"hasActiveFilters() ? 'primary' : 'secondary'\"\n [variant]=\"hasActiveFilters() ? undefined : 'text'\"\n [tooltipText]=\"filterLabel()\"\n (click)=\"openFilters($event)\"\n (keydown.enter)=\"openFilters($event)\"\n (keydown.space)=\"openFilters($event)\">\n </tk-button>\n }\n\n @if (sortOptions().length > 0) {\n <tk-button\n #sortBtn\n [icon]=\"'arrow-down-wide-short'\"\n [severity]=\"hasActiveSort() ? 'primary' : 'secondary'\"\n [variant]=\"hasActiveSort() ? undefined : 'text'\"\n [tooltipText]=\"sortTooltip()\"\n (click)=\"openSort($event)\"\n (keydown.enter)=\"openSort($event)\"\n (keydown.space)=\"openSort($event)\">\n </tk-button>\n }\n\n @if (shouldShowReload()) {\n <tk-button\n class=\"tk-toolbar__reload-btn\"\n [class.tk-toolbar__reload-btn--animating]=\"\n reloadInterval() && reloadInterval()! > 0 && !loading()\n \"\n [class.tk-toolbar__reload-btn--spinning]=\"loading()\"\n [style.--reload-interval]=\"(reloadInterval() ?? 0) + 'ms'\"\n [icon]=\"'arrows-rotate'\"\n severity=\"secondary\"\n variant=\"text\"\n [tooltipText]=\"reloadTooltip()\"\n (clicked)=\"onReload()\">\n </tk-button>\n }\n\n @if (globalActions().length > 0) {\n <tk-action-group\n [actions]=\"globalActions()\"\n [maxVisible]=\"0\">\n </tk-action-group>\n }\n </div>\n </div>\n }\n\n @if (shouldShowActiveFiltersBar()) {\n <div class=\"tk-toolbar-chips-bar\" data-testid=\"chips-bar\">\n <div class=\"tk-toolbar-chips-bar__scroll\">\n @for (chip of activeChips(); track chip.filterKey + '-' + chip.code) {\n <tk-chip\n [label]=\"chip.label\"\n [removable]=\"true\"\n (removed)=\"removeChip(chip)\">\n </tk-chip>\n }\n </div>\n <tk-button\n [link]=\"true\"\n [label]=\"clearLabel()\"\n class=\"tk-toolbar-chips-bar__clear-btn\"\n (clicked)=\"clearAllFilters()\">\n </tk-button>\n </div>\n }\n\n <!-- 4. Selection Status Bar (Mobile floating panel) -->\n @if (selectionCount() > 0 && isMobile()) {\n <div class=\"tk-toolbar-selection-bar tk-toolbar-selection-bar--mobile\" data-testid=\"selection-bar-mobile\">\n <div class=\"tk-toolbar-selection-bar__left\">\n <tk-checkbox\n [binary]=\"true\"\n [(model)]=\"allSelected\"\n [indeterminate]=\"indeterminate()\">\n </tk-checkbox>\n <span class=\"tk-toolbar-selection-bar__count\">\n {{ selectionCount() }} {{ selectionCount() === 1 ? selectedLabel() : selectedPluralLabel() }}\n </span>\n </div>\n <div class=\"tk-toolbar-selection-bar__right\">\n @for (action of visibleSelectionActions(); track action.label) {\n <tk-button\n [label]=\"action.label\"\n [icon]=\"action.icon\"\n [severity]=\"action.severity ?? 'secondary'\"\n [variant]=\"action.variant !== undefined ? action.variant : (action.severity === 'danger' ? undefined : 'text')\"\n [disabled]=\"action.disabled ?? false\"\n (clicked)=\"action.action()\">\n </tk-button>\n }\n @if (overflowSelectionActions().length > 0) {\n <tk-dropdown\n icon=\"ellipsis-vertical\"\n [model]=\"overflowSelectionActions()\">\n </tk-dropdown>\n }\n </div>\n </div>\n }\n</div>\n\n<!-- 5. Desktop Popovers -->\n@if (derivedFilters().length > 0 && filterVisible() && !isMobile()) {\n <p-popover #filterPopover styleClass=\"tk-toolbar-popover\">\n <div class=\"tk-toolbar-overlay\" data-testid=\"filter-popover\">\n <div class=\"tk-toolbar-overlay__header\">\n <span class=\"tk-toolbar-overlay__title\">{{ filterLabel() }}</span>\n <button type=\"button\" class=\"tk-toolbar-overlay__close\" (click)=\"filterPopover.hide()\">\n <tk-icon icon=\"xmark\" size=\"lg\"></tk-icon>\n </button>\n </div>\n <div class=\"tk-toolbar-overlay__body\">\n @for (filter of derivedFilters(); track filter.key) {\n <div class=\"tk-toolbar-overlay__field\">\n <tk-multiselect\n [id]=\"'filter-' + filter.key\"\n [options]=\"filter.options\"\n [labelText]=\"filter.label\"\n [model]=\"tempFilterValues()[filter.key] || []\"\n (modelChange)=\"onTempFilterChange(filter.key, $event || [])\"\n appendTo=\"body\"\n panelStyleClass=\"tk-toolbar-multiselect-panel\">\n </tk-multiselect>\n </div>\n }\n </div>\n <div class=\"tk-toolbar-overlay__footer\">\n <tk-button\n [label]=\"clearLabel()\"\n severity=\"secondary\"\n variant=\"outlined\"\n (clicked)=\"clearTempFilters()\">\n </tk-button>\n <tk-button\n [label]=\"applyLabel()\"\n severity=\"primary\"\n (clicked)=\"applyFilters()\">\n </tk-button>\n </div>\n </div>\n </p-popover>\n}\n\n@if (sortOptions().length > 0 && !isMobile()) {\n <p-popover #sortPopover styleClass=\"tk-toolbar-popover\">\n <div class=\"tk-toolbar-overlay tk-toolbar-overlay--sort\" data-testid=\"sort-popover\">\n <div class=\"tk-toolbar-overlay__header\">\n <span class=\"tk-toolbar-overlay__title\">{{ sortLabel() }}</span>\n <button type=\"button\" class=\"tk-toolbar-overlay__close\" (click)=\"sortPopover.hide()\">\n <tk-icon icon=\"xmark\" size=\"lg\"></tk-icon>\n </button>\n </div>\n <div class=\"tk-toolbar-overlay__body\">\n <div class=\"tk-toolbar-sort-options\">\n @for (option of sortOptions(); track option.value) {\n <button \n type=\"button\"\n class=\"tk-toolbar-sort-option\" \n [class.tk-toolbar-sort-option--active]=\"sortValue() === option.value\"\n (click)=\"selectSortOption(option.value)\">\n <span>{{ option.label }}</span>\n </button>\n }\n </div>\n </div>\n </div>\n </p-popover>\n}\n\n<!-- 6. Mobile Drawers -->\n@if (derivedFilters().length > 0 && filterVisible() && isMobile()) {\n <tk-drawer\n [(isOpened)]=\"showFilterDrawer\"\n [title]=\"filterLabel()\"\n direction=\"bottom\"\n [dismissible]=\"true\">\n <div class=\"tk-toolbar-overlay__body\">\n @for (filter of derivedFilters(); track filter.key) {\n <div class=\"tk-toolbar-overlay__field\">\n <tk-multiselect\n [id]=\"'filter-mob-' + filter.key\"\n [options]=\"filter.options\"\n [labelText]=\"filter.label\"\n [model]=\"tempFilterValues()[filter.key] || []\"\n (modelChange)=\"onTempFilterChange(filter.key, $event || [])\"\n appendTo=\"body\"\n panelStyleClass=\"tk-toolbar-multiselect-panel\">\n </tk-multiselect>\n </div>\n }\n </div>\n <div class=\"tk-toolbar-overlay__footer\">\n <tk-button\n [label]=\"clearLabel()\"\n severity=\"secondary\"\n variant=\"outlined\"\n (clicked)=\"clearTempFilters()\">\n </tk-button>\n <tk-button\n [label]=\"applyLabel()\"\n severity=\"primary\"\n (clicked)=\"applyFilters()\">\n </tk-button>\n </div>\n </tk-drawer>\n}\n\n@if (sortOptions().length > 0 && isMobile()) {\n <tk-drawer\n [(isOpened)]=\"showSortDrawer\"\n [title]=\"sortLabel()\"\n direction=\"bottom\"\n [dismissible]=\"true\">\n <div class=\"tk-toolbar-overlay__body\">\n <div class=\"tk-toolbar-sort-options\">\n @for (option of sortOptions(); track option.value) {\n <button \n type=\"button\"\n class=\"tk-toolbar-sort-option\" \n [class.tk-toolbar-sort-option--active]=\"tempSortValue() === option.value\"\n (click)=\"toggleSortOptionMobile(option.value)\">\n <span>{{ option.label }}</span>\n </button>\n }\n </div>\n </div>\n <div class=\"tk-toolbar-overlay__footer\">\n <tk-button\n [label]=\"applyLabel()\"\n severity=\"primary\"\n (clicked)=\"applySortMobile()\">\n </tk-button>\n </div>\n </tk-drawer>\n}\n", styles: [".tk-toolbar-container{display:flex;flex-direction:column;gap:var(--tk-spacing-base-50, .5rem);width:100%}.tk-toolbar{display:flex;justify-content:flex-end;align-items:center;flex-wrap:wrap;gap:var(--tk-spacing-base-100, 1rem);width:100%}.tk-toolbar__search{width:15rem;max-width:100%}@media(max-width:768px){.tk-toolbar__search{width:100%}}.tk-toolbar__actions{display:flex;align-items:center;gap:var(--tk-spacing-base-50, .5rem)}.tk-toolbar__actions>tk-button{width:2.5rem;height:2.5rem}.tk-toolbar__actions>tk-button ::ng-deep .p-button{width:100%;height:100%;padding:0;display:flex;align-items:center;justify-content:center}.tk-toolbar__reload-btn{border-radius:var(--tk-borderRadius-theme-s, var(--tk-borderRadius-s, .5rem))!important;position:relative}.tk-toolbar__reload-btn--animating:before{content:\"\";position:absolute;inset:0;z-index:1;background:conic-gradient(var(--tk-color-base-sky-300, #92bada) var(--progress, 0%),transparent var(--progress, 0%));-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;padding:3px;border-radius:inherit;animation:draw-border var(--reload-interval, 5s) infinite linear;pointer-events:none}.tk-toolbar__reload-btn--spinning ::ng-deep tk-icon{display:inline-block;animation:spin 1s infinite linear}.tk-toolbar-selection-bar{display:flex;justify-content:space-between;align-items:center;width:100%;background-color:var(--tk-color-base-surface-50, #f8fafc);border:1px solid var(--tk-color-base-surface-200, #e2e8f0);border-radius:var(--tk-borderRadius-s, 8px);padding:var(--tk-spacing-base-75, .75rem) var(--tk-spacing-base-100, 1rem);box-sizing:border-box}.tk-toolbar-selection-bar__left{display:flex;align-items:center;gap:var(--tk-spacing-base-75, .75rem)}.tk-toolbar-selection-bar__count{font-size:1rem;font-weight:var(--tk-font-weight-600, 600);color:var(--tk-color-base-surface-900, #0f172a)}.tk-toolbar-selection-bar__right{display:flex;align-items:center;gap:var(--tk-spacing-base-50, .5rem)}.tk-toolbar-selection-bar--mobile{position:fixed;bottom:0;left:0;width:100%;max-width:none;transform:none;z-index:1000;background-color:var(--tk-color-base-surface-0, #ffffff);box-shadow:0 -4px 6px -1px #0000000d,0 -2px 4px -1px #00000008;border-radius:0;border:none;border-top:1px solid var(--tk-color-base-surface-200, #e2e8f0);padding:var(--tk-spacing-base-75, .75rem) var(--tk-spacing-base-100, 1rem)}.tk-toolbar-chips-bar{width:100%;border-top:none;padding-top:var(--tk-spacing-base-50, .5rem);display:flex;justify-content:space-between;align-items:center;gap:var(--tk-spacing-base-100, 1rem)}.tk-toolbar-chips-bar__scroll{display:flex;align-items:center;flex-wrap:wrap;gap:var(--tk-spacing-base-50, .5rem);flex-grow:1}.tk-toolbar-chips-bar__clear-btn{flex-shrink:0}.tk-toolbar-overlay{display:flex;flex-direction:column;width:20rem;max-width:100%;padding:var(--tk-spacing-base-100, 1rem);box-sizing:border-box}.tk-toolbar-overlay--sort{width:15rem;padding:var(--tk-spacing-base-50, .5rem)!important}.tk-toolbar-overlay--sort .tk-toolbar-overlay__header{padding:var(--tk-spacing-base-50, .5rem) var(--tk-spacing-base-50, .5rem) var(--tk-spacing-base-25, .25rem) var(--tk-spacing-base-50, .5rem)!important}.tk-toolbar-overlay--sort .tk-toolbar-overlay__body{padding:0!important;margin-bottom:0!important}.tk-toolbar-overlay__header{display:flex;justify-content:space-between;align-items:center;margin-bottom:0;padding:0 0 var(--tk-spacing-base-50, .5rem) 0}.tk-toolbar-overlay__title{font-size:1rem;font-weight:var(--tk-font-weight-600, 600);color:var(--tk-color-base-surface-900, #0f172a)}.tk-toolbar-overlay__close{background:none;border:none;padding:var(--tk-spacing-base-25, .25rem);color:var(--tk-color-base-surface-500, #64748b);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--tk-borderRadius-s, 8px);transition:background-color .2s}.tk-toolbar-overlay__close:hover{background-color:var(--tk-color-base-surface-100, #f1f5f9);color:var(--tk-color-base-surface-900, #0f172a)}.tk-toolbar-overlay__body{display:flex;flex-direction:column;gap:var(--tk-spacing-base-100, 1rem);padding-top:var(--tk-spacing-base-125, 1.25rem);margin-bottom:var(--tk-spacing-base-150, 1.5rem);max-height:24rem;overflow-y:auto}.tk-toolbar-overlay__field{display:flex;flex-direction:column;gap:var(--tk-spacing-base-25, .25rem)}.tk-toolbar-overlay__footer{display:flex;justify-content:flex-end;gap:var(--tk-spacing-base-50, .5rem);padding-top:var(--tk-spacing-base-100, 1rem)}.tk-toolbar-sort-options{display:flex;flex-direction:column;width:100%}.tk-toolbar-sort-option{display:flex;justify-content:space-between;align-items:center;padding:var(--tk-spacing-base-50, .5rem) var(--tk-spacing-base-50, .5rem);cursor:pointer;border-radius:var(--tk-borderRadius-s, 8px);font-size:.875rem;color:var(--tk-color-base-surface-700, #334155);transition:background-color .2s,color .2s;background:none;border:none;width:100%;font-family:inherit;text-align:left}.tk-toolbar-sort-option:hover{background-color:var(--tk-color-primary-muted, #e9e6f4);color:var(--tk-color-base-primary-500, #16006f)}.tk-toolbar-sort-option--active{font-weight:var(--tk-font-weight-600, 600);color:var(--tk-color-base-primary-500, #16006f);background-color:var(--tk-color-primary-muted, #e9e6f4)}@media(max-width:768px){.tk-toolbar{flex-direction:column;align-items:stretch;gap:var(--tk-spacing-base-50, .5rem)}.tk-toolbar__search{width:100%}.tk-toolbar__actions{width:100%;justify-content:flex-end;margin-left:0}}@property --progress{syntax: \"<percentage>\"; inherits: false; initial-value: 0%;}@keyframes draw-border{0%{--progress: 0%}to{--progress: 100%}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}:host ::ng-deep .tk-input-bottom{display:none}:host ::ng-deep .p-popover{border-radius:var(--tk-borderRadius-m, 12px);box-shadow:0 10px 15px -3px #0000001a;border:1px solid var(--tk-color-base-surface-200, #e2e8f0);overflow:hidden}:host ::ng-deep .tk-toolbar-popover .p-popover-content{padding:0!important}:host ::ng-deep tk-drawer .tk-toolbar-overlay__body{padding-top:var(--tk-spacing-base-75, .75rem)!important;margin-bottom:0!important}:host ::ng-deep tk-drawer .tk-toolbar-overlay__footer{padding-top:var(--tk-spacing-base-75, .75rem)!important}::ng-deep .tk-toolbar-multiselect-panel .p-multiselect-option span{color:var(--tk-color-primary-default, #16006f);display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}::ng-deep .tk-toolbar-multiselect-panel .p-multiselect-option-selected{background-color:var(--tk-color-primary-muted, #b7b0d2)}::ng-deep .tk-toolbar-multiselect-panel .p-multiselect-filter{border:none;border-radius:0;box-shadow:none;border-bottom:1px solid var(--tk-surface-300, #d2d2d2)}\n"] }]
443
443
  }], ctorParameters: () => [], propDecorators: { searchModel: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchModel", required: false }] }, { type: i0.Output, args: ["searchModelChange"] }], searchFloatLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchFloatLabel", required: false }] }], searchVisible: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchVisible", required: false }] }], view: [{ type: i0.Input, args: [{ isSignal: true, alias: "view", required: false }] }, { type: i0.Output, args: ["viewChange"] }], viewToggleVisible: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewToggleVisible", required: false }] }], filters: [{ type: i0.Input, args: [{ isSignal: true, alias: "filters", required: false }] }], filterModel: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterModel", required: false }] }, { type: i0.Output, args: ["filterModelChange"] }], filterOptions: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterOptions", required: false }] }], filterOptionLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterOptionLabel", required: false }] }], filterFloatLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterFloatLabel", required: false }] }], filterVisible: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterVisible", required: false }] }], filterValues: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterValues", required: false }] }, { type: i0.Output, args: ["filterValuesChange"] }], clearLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "clearLabel", required: false }] }], deleteLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "deleteLabel", required: false }] }], filterLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterLabel", required: false }] }], selectedLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedLabel", required: false }] }], selectedPluralLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedPluralLabel", required: false }] }], applyLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "applyLabel", required: false }] }], reloadTooltip: [{ type: i0.Input, args: [{ isSignal: true, alias: "reloadTooltip", required: false }] }], sortTooltip: [{ type: i0.Input, args: [{ isSignal: true, alias: "sortTooltip", required: false }] }], viewCardsTooltip: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewCardsTooltip", required: false }] }], viewTableTooltip: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewTableTooltip", required: false }] }], sortOptions: [{ type: i0.Input, args: [{ isSignal: true, alias: "sortOptions", required: false }] }], sortLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "sortLabel", required: false }] }], sortValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "sortValue", required: false }] }, { type: i0.Output, args: ["sortValueChange"] }], reloadVisible: [{ type: i0.Input, args: [{ isSignal: true, alias: "reloadVisible", required: false }] }], reloadInterval: [{ type: i0.Input, args: [{ isSignal: true, alias: "reloadInterval", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], globalActions: [{ type: i0.Input, args: [{ isSignal: true, alias: "globalActions", required: false }] }], selectionCount: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectionCount", required: false }] }], allSelected: [{ type: i0.Input, args: [{ isSignal: true, alias: "allSelected", required: false }] }, { type: i0.Output, args: ["allSelectedChange"] }], indeterminate: [{ type: i0.Input, args: [{ isSignal: true, alias: "indeterminate", required: false }] }, { type: i0.Output, args: ["indeterminateChange"] }], selectionActions: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectionActions", required: false }] }], maxVisibleSelectionActions: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxVisibleSelectionActions", required: false }] }], reload: [{ type: i0.Output, args: ["reload"] }], appliedFilters: [{ type: i0.Output, args: ["appliedFilters"] }], appliedSort: [{ type: i0.Output, args: ["appliedSort"] }], filterPopover: [{ type: i0.ViewChild, args: ['filterPopover', { isSignal: true }] }], sortPopover: [{ type: i0.ViewChild, args: ['sortPopover', { isSignal: true }] }] } });
444
444
 
445
445
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"tekus-design-system-components-toolbar.mjs","sources":["../../../projects/design-system/components/toolbar/src/toolbar.component.ts","../../../projects/design-system/components/toolbar/src/toolbar.component.html","../../../projects/design-system/components/toolbar/tekus-design-system-components-toolbar.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, model, signal, input, output, computed, inject, viewChild, effect, untracked } from '@angular/core';\nimport { takeUntilDestroyed, toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { BreakpointObserver } from '@angular/cdk/layout';\nimport {\n combineLatest,\n distinctUntilChanged,\n EMPTY,\n map,\n switchMap,\n timer,\n} from 'rxjs';\nimport { MenuItem } from 'primeng/api';\nimport { Popover, PopoverModule } from 'primeng/popover';\nimport { ButtonComponent } from '@tekus/design-system/components/button';\nimport { InputTextComponent } from '@tekus/design-system/components/input-text';\nimport { CheckboxComponent } from '@tekus/design-system/components/checkbox';\nimport { ActionGroupComponent, TkAction } from '@tekus/design-system/components/action-group';\nimport { IconComponent } from '@tekus/design-system/components/icon';\nimport { DropdownComponent } from '@tekus/design-system/components/dropdown';\nimport { MultiselectComponent, MultiSelectOption } from '@tekus/design-system/components/multiselect';\nimport { ChipComponent } from '@tekus/design-system/components/chip';\nimport { DrawerComponent } from '@tekus/design-system/components/drawer';\nimport { TkToolbarFilterConfig, TkToolbarAction } from './toolbar.types';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'tk-toolbar',\n imports: [\n ButtonComponent,\n InputTextComponent,\n CheckboxComponent,\n ActionGroupComponent,\n IconComponent,\n DropdownComponent,\n MultiselectComponent,\n ChipComponent,\n DrawerComponent,\n PopoverModule,\n ],\n templateUrl: './toolbar.component.html',\n styleUrl: './toolbar.component.scss',\n})\nexport class ToolbarComponent {\n private readonly breakpointObserver = inject(BreakpointObserver);\n\n /** Responsive flag using BreakpointObserver */\n isMobile = toSignal(\n this.breakpointObserver.observe('(max-width: 768px)').pipe(map(r => r.matches)),\n { initialValue: false }\n );\n\n /**\n * Two-way bindable signal for the search input value.\n */\n searchModel = model<string>('');\n\n /**\n * Label/placeholder text displayed inside the search input.\n * @default 'Buscar'\n */\n searchFloatLabel = input<string>('Buscar');\n\n /**\n * Controls the visibility of the search input field.\n * @default true\n */\n searchVisible = input<boolean>(true);\n\n /**\n * Two-way bindable signal for the layout view toggle ('table' or 'cards').\n * @default 'table'\n */\n view = model<'table' | 'cards'>('table');\n\n /**\n * Controls the visibility of the layout view toggle button.\n * @default false\n */\n viewToggleVisible = input<boolean>(false);\n\n /**\n * Dynamic list of filters and their available selection options.\n * @default []\n */\n filters = input<TkToolbarFilterConfig[]>([]);\n\n /** Backwards compatibility: Writable model signal for the selected option in a single filter select (deprecated) */\n filterModel = model<Record<string, string> | null>(null);\n\n /** Backwards compatibility: Input for dropdown options (deprecated) */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n filterOptions = input<Array<any>>([\n { label: 'Option 1', value: 'option1' },\n { label: 'Option 2', value: 'option2' },\n { label: 'Option 3', value: 'option3' },\n ]);\n\n /** Backwards compatibility: Input for the option label key (deprecated) */\n filterOptionLabel = input<string>('label');\n\n /** Backwards compatibility: Input for the label of the single select dropdown (deprecated) */\n filterFloatLabel = input<string>('Filtrar');\n\n /** Backwards compatibility: Controls whether filter button is shown (deprecated) */\n filterVisible = input<boolean>(true);\n\n /**\n * Two-way bindable signal for currently selected filter values.\n * Format: { [filterKey]: MultiSelectOption[] }\n * @default {}\n */\n filterValues = model<Record<string, MultiSelectOption[]>>({});\n\n /**\n * Label/text for the clear button.\n * @default 'Limpiar'\n */\n clearLabel = input<string>('Limpiar');\n\n /**\n * Label/text for the delete action button.\n * @default 'Eliminar'\n */\n deleteLabel = input<string>('Eliminar');\n\n /**\n * Label/text for the filters header.\n * @default 'Filtros'\n */\n filterLabel = input<string>('Filtros');\n\n /** Label for selected item singular form (e.g. 'seleccionado') */\n selectedLabel = input<string>('seleccionado');\n\n /** Label for selected item plural form (e.g. 'seleccionados') */\n selectedPluralLabel = input<string>('seleccionados');\n\n /** Label/text for the apply button in overlays (e.g. 'Aplicar') */\n applyLabel = input<string>('Aplicar');\n\n /** Tooltip text for the reload action button (e.g. 'Actualizar') */\n reloadTooltip = input<string>('Actualizar');\n\n /** Tooltip text for the sort action button (e.g. 'Ordenar') */\n sortTooltip = input<string>('Ordenar');\n\n /** Tooltip text for view cards layout button (e.g. 'Vista tarjeta') */\n viewCardsTooltip = input<string>('Vista tarjeta');\n\n /** Tooltip text for view table layout button (e.g. 'Vista tabla') */\n viewTableTooltip = input<string>('Vista tabla');\n\n /**\n * Available list of sorting options.\n * @default []\n */\n sortOptions = input<Array<{ label: string; value: string }>>([]);\n\n /**\n * Label/text for the sorting header.\n * @default 'Ordenar por'\n */\n sortLabel = input<string>('Ordenar por');\n\n /**\n * Two-way bindable signal for the active sort option value.\n * @default null\n */\n sortValue = model<string | null>(null);\n\n /**\n * Controls the visibility of the reload button.\n * @default false\n */\n reloadVisible = input<boolean>(false);\n\n /**\n * Sets the interval for automatic reload in milliseconds.\n * If null, automatic reload is disabled.\n * @default null\n */\n reloadInterval = input<number | null>(null);\n\n /**\n * Controls the loading state of the reload button, triggering a rotation animation.\n * @default false\n */\n loading = input<boolean>(false);\n\n /**\n * Secondary or mass actions collapsed into the tk-action-group dropdown.\n * @default []\n */\n globalActions = input<TkAction[]>([]);\n\n /**\n * Number of items selected in the list.\n * @default 0\n */\n selectionCount = input<number>(0);\n\n /**\n * Two-way bindable signal for checking/unchecking the select-all checkbox.\n * @default false\n */\n allSelected = model<boolean>(false);\n\n /**\n * Two-way bindable signal for the indeterminate state of the select-all checkbox.\n * @default false\n */\n indeterminate = model<boolean>(false);\n\n /**\n * Actions available when one or more items are selected.\n * @default []\n */\n selectionActions = input<TkToolbarAction[]>([]);\n\n /**\n * Maximum number of selection action buttons visible directly before grouping the rest.\n * @default 1\n */\n maxVisibleSelectionActions = input<number>(1);\n\n /**\n * Emits an event when the reload button is clicked or the automatic interval is reached.\n */\n reload = output<void>();\n\n /**\n * Emits when filters are applied.\n */\n appliedFilters = output<Record<string, MultiSelectOption[]>>();\n\n /**\n * Emits when sorting changes.\n */\n appliedSort = output<string | null>();\n\n /** Temporary filter values held before the user clicks \"Aplicar\" */\n tempFilterValues = signal<Record<string, MultiSelectOption[]>>({});\n\n /** Temporary sort value held before the user clicks \"Aplicar\" in mobile drawer */\n tempSortValue = signal<string | null>(null);\n\n /** Controls visibility of mobile drawers */\n showFilterDrawer = signal<boolean>(false);\n showSortDrawer = signal<boolean>(false);\n\n filterPopover = viewChild<Popover>('filterPopover');\n sortPopover = viewChild<Popover>('sortPopover');\n\n /** Computes whether any filters are currently active */\n hasActiveFilters = computed(() => {\n const values = this.filterValues();\n return Object.values(values).some(arr => arr && arr.length > 0);\n });\n\n /** Computes whether sorting is active */\n hasActiveSort = computed(() => {\n return this.sortValue() !== null && this.sortValue() !== '';\n });\n\n /** Reload button visibility: only visible if reload is allowed AND filters or sorting is active */\n shouldShowReload = computed(() => {\n return this.reloadVisible();\n });\n\n /** Computes the final filters configuration, adapting old filterOptions format to the new filters schema */\n derivedFilters = computed<TkToolbarFilterConfig[]>(() => {\n const customFilters = this.filters();\n if (customFilters && customFilters.length > 0) {\n return customFilters;\n }\n\n const oldOptions = this.filterOptions();\n if (oldOptions && oldOptions.length > 0) {\n return [\n {\n key: 'default_filter',\n label: this.filterFloatLabel() || 'Filtrar',\n options: oldOptions.map(opt => ({\n name: opt[this.filterOptionLabel()] || opt['label'] || opt['value'],\n code: opt['value']\n }))\n }\n ];\n }\n\n return [];\n });\n\n /** Active chips representing individual filter selections */\n activeChips = computed(() => {\n const values = this.filterValues();\n const configs = this.derivedFilters();\n const chips: Array<{ filterKey: string; code: string; label: string }> = [];\n\n for (const config of configs) {\n const selected = values[config.key] || [];\n for (const item of selected) {\n chips.push({\n filterKey: config.key,\n code: item.code,\n label: item.name,\n });\n }\n }\n return chips;\n });\n\n /** Visibility of the active filters bar (below tools) */\n shouldShowActiveFiltersBar = computed(() => {\n return this.hasActiveFilters();\n });\n\n /** Visible selection actions as buttons */\n visibleSelectionActions = computed(() => {\n return this.selectionActions()\n .slice(0, this.maxVisibleSelectionActions())\n .map(action => {\n if (action.severity === 'danger') {\n return { ...action, label: this.deleteLabel() };\n }\n return action;\n });\n });\n\n /** Overflow selection actions as menu items for dropdown */\n overflowSelectionActions = computed<MenuItem[]>(() => {\n const list = this.selectionActions();\n const max = this.maxVisibleSelectionActions();\n if (list.length <= max) {\n return [];\n }\n return list.slice(max).map(action => {\n const label = action.severity === 'danger' ? this.deleteLabel() : action.label;\n return {\n label: label,\n icon: action.icon,\n command: () => action.action(),\n disabled: action.disabled ?? false,\n };\n });\n });\n\n constructor() {\n combineLatest([\n toObservable(this.reloadInterval).pipe(distinctUntilChanged()),\n toObservable(this.loading).pipe(distinctUntilChanged()),\n ])\n .pipe(\n switchMap(([interval, isLoading]) => {\n if (isLoading || !interval || interval <= 0) {\n return EMPTY;\n }\n return timer(interval, interval);\n }),\n takeUntilDestroyed()\n )\n .subscribe(() => this.onReload());\n\n effect(() => {\n const modelVal = this.filterModel();\n if (modelVal?.['value']) {\n const matchedOpt = this.filterOptions().find(opt => opt['value'] === modelVal['value']);\n if (matchedOpt) {\n const labelKey = this.filterOptionLabel();\n const label = matchedOpt[labelKey] || matchedOpt['label'] || matchedOpt['value'];\n untracked(() => {\n const current = this.filterValues();\n const currentSelections = current['default_filter'] || [];\n if (currentSelections.length !== 1 || currentSelections[0].code !== matchedOpt['value']) {\n this.filterValues.set({\n ...current,\n default_filter: [{ name: label, code: matchedOpt['value'] }]\n });\n }\n });\n }\n } else if (!modelVal) {\n untracked(() => {\n const current = this.filterValues();\n if (current['default_filter'] && current['default_filter'].length > 0) {\n const updated = { ...current };\n delete updated['default_filter'];\n this.filterValues.set(updated);\n }\n });\n }\n });\n\n // Sync filterValues (new) -> filterModel (old single-select)\n effect(() => {\n const values = this.filterValues();\n const defaultFilterSelections = values['default_filter'];\n if (defaultFilterSelections && defaultFilterSelections.length > 0) {\n const lastSelected = defaultFilterSelections[defaultFilterSelections.length - 1];\n const matchedOpt = this.filterOptions().find(opt => opt['value'] === lastSelected.code);\n if (matchedOpt) {\n untracked(() => {\n if (this.filterModel()?.[ 'value' ] !== matchedOpt['value']) {\n this.filterModel.set(matchedOpt);\n }\n });\n }\n } else {\n untracked(() => {\n if (this.filterModel() !== null) {\n this.filterModel.set(null);\n }\n });\n }\n });\n }\n\n /** Toggles filters overlay and initializes temporary state */\n openFilters(event: Event): void {\n const currentValues = this.filterValues();\n // Copy current filter selections into temporary state\n const copy: Record<string, MultiSelectOption[]> = {};\n for (const key of Object.keys(currentValues)) {\n copy[key] = [...(currentValues[key] || [])];\n }\n this.tempFilterValues.set(copy);\n\n if (this.isMobile()) {\n this.showFilterDrawer.set(true);\n } else {\n this.filterPopover()?.toggle(event);\n }\n }\n\n /** Updates temporary filter values for a specific filter key */\n onTempFilterChange(key: string, value: MultiSelectOption[]): void {\n this.tempFilterValues.update(prev => ({ ...prev, [key]: value }));\n }\n\n /** Saves temporary filter selections and triggers apply */\n applyFilters(): void {\n const temp = this.tempFilterValues();\n this.filterValues.set({ ...temp });\n this.appliedFilters.emit({ ...temp });\n\n if (this.isMobile()) {\n this.showFilterDrawer.set(false);\n } else {\n this.filterPopover()?.hide();\n }\n }\n\n /** Clears temporary filters inside popover/drawer */\n clearTempFilters(): void {\n const cleared: Record<string, MultiSelectOption[]> = {};\n for (const filter of this.derivedFilters()) {\n cleared[filter.key] = [];\n }\n this.tempFilterValues.set(cleared);\n }\n\n /** Clears all applied filters */\n clearAllFilters(): void {\n const cleared: Record<string, MultiSelectOption[]> = {};\n this.filterValues.set(cleared);\n this.appliedFilters.emit(cleared);\n }\n\n /** Removes a single filter chip */\n removeChip(chip: { filterKey: string; code: string }): void {\n const currentValues = { ...this.filterValues() };\n const list = currentValues[chip.filterKey] || [];\n currentValues[chip.filterKey] = list.filter(item => item.code !== chip.code);\n this.filterValues.set(currentValues);\n this.appliedFilters.emit(currentValues);\n }\n\n /** Toggles sorting overlay */\n openSort(event: Event): void {\n if (this.isMobile()) {\n this.tempSortValue.set(this.sortValue());\n this.showSortDrawer.set(true);\n } else {\n this.sortPopover()?.toggle(event);\n }\n }\n\n /** Selects a sort option (toggles if already selected) and hides overlay */\n selectSortOption(value: string, isMobileDrawer = false): void {\n const newValue = this.sortValue() === value ? null : value;\n this.sortValue.set(newValue);\n this.appliedSort.emit(newValue);\n\n if (isMobileDrawer) {\n this.showSortDrawer.set(false);\n } else {\n this.sortPopover()?.hide();\n }\n }\n\n /** Toggles temporary sorting selection on mobile drawer */\n toggleSortOptionMobile(value: string): void {\n this.tempSortValue.update(prev => prev === value ? null : value);\n }\n\n /** Applies selected sorting on mobile */\n applySortMobile(): void {\n const val = this.tempSortValue();\n this.sortValue.set(val);\n this.appliedSort.emit(val);\n this.showSortDrawer.set(false);\n }\n\n /** Toggle layout view */\n toggleView(): void {\n this.view.set(this.view() === 'table' ? 'cards' : 'table');\n }\n\n onReload(): void {\n this.reload.emit();\n }\n}\n","<div class=\"tk-toolbar-container\">\n <!-- 1. Selection Status Bar (Desktop replacement) -->\n @if (selectionCount() > 0 && !isMobile()) {\n <div class=\"tk-toolbar-selection-bar\" data-testid=\"selection-bar-desktop\">\n <div class=\"tk-toolbar-selection-bar__left\">\n <tk-checkbox\n [binary]=\"true\"\n [(model)]=\"allSelected\"\n [indeterminate]=\"indeterminate()\">\n </tk-checkbox>\n <span class=\"tk-toolbar-selection-bar__count\">\n {{ selectionCount() }} {{ selectionCount() === 1 ? selectedLabel() : selectedPluralLabel() }}\n </span>\n </div>\n <div class=\"tk-toolbar-selection-bar__right\">\n @for (action of visibleSelectionActions(); track action.label) {\n <tk-button\n [label]=\"action.label\"\n [icon]=\"action.icon\"\n [severity]=\"action.severity ?? 'secondary'\"\n [variant]=\"action.variant !== undefined ? action.variant : (action.severity === 'danger' ? undefined : 'text')\"\n [disabled]=\"action.disabled ?? false\"\n (clicked)=\"action.action()\">\n </tk-button>\n }\n @if (overflowSelectionActions().length > 0) {\n <tk-dropdown\n icon=\"ellipsis-vertical\"\n [model]=\"overflowSelectionActions()\">\n </tk-dropdown>\n }\n </div>\n </div>\n } @else {\n <!-- 2. Main Tools Bar -->\n <div class=\"tk-toolbar\" data-testid=\"main-toolbar\">\n <!-- Left part: search input (always visible if searchVisible is true) -->\n @if (searchVisible()) {\n <div class=\"tk-toolbar__search\">\n <tk-input-text\n [label]=\"searchFloatLabel()\"\n icon=\"magnifying-glass\"\n [clearable]=\"true\"\n [value]=\"searchModel()\"\n (valueChange)=\"searchModel.set($event)\">\n </tk-input-text>\n </div>\n }\n\n <!-- Right part: actions -->\n <div class=\"tk-toolbar__actions\">\n @if (viewToggleVisible()) {\n <tk-button\n [icon]=\"view() === 'table' ? 'table' : 'table-list'\"\n severity=\"secondary\"\n variant=\"text\"\n [tooltipText]=\"view() === 'table' ? viewCardsTooltip() : viewTableTooltip()\"\n (clicked)=\"toggleView()\">\n </tk-button>\n }\n\n @if (derivedFilters().length > 0 && filterVisible()) {\n <tk-button\n #filterBtn\n [icon]=\"'filter'\"\n [severity]=\"hasActiveFilters() ? 'primary' : 'secondary'\"\n [variant]=\"hasActiveFilters() ? undefined : 'text'\"\n [tooltipText]=\"filterLabel()\"\n (click)=\"openFilters($event)\"\n (keydown.enter)=\"openFilters($event)\"\n (keydown.space)=\"openFilters($event)\">\n </tk-button>\n }\n\n @if (sortOptions().length > 0) {\n <tk-button\n #sortBtn\n [icon]=\"'arrow-down-wide-short'\"\n [severity]=\"hasActiveSort() ? 'primary' : 'secondary'\"\n [variant]=\"hasActiveSort() ? undefined : 'text'\"\n [tooltipText]=\"sortTooltip()\"\n (click)=\"openSort($event)\"\n (keydown.enter)=\"openSort($event)\"\n (keydown.space)=\"openSort($event)\">\n </tk-button>\n }\n\n @if (shouldShowReload()) {\n <tk-button\n class=\"tk-toolbar__reload-btn\"\n [class.tk-toolbar__reload-btn--animating]=\"\n reloadInterval() && reloadInterval()! > 0 && !loading()\n \"\n [class.tk-toolbar__reload-btn--spinning]=\"loading()\"\n [style.--reload-interval]=\"(reloadInterval() ?? 0) + 'ms'\"\n [icon]=\"'arrows-rotate'\"\n severity=\"secondary\"\n variant=\"text\"\n [tooltipText]=\"reloadTooltip()\"\n (clicked)=\"onReload()\">\n </tk-button>\n }\n\n @if (globalActions().length > 0) {\n <tk-action-group\n [actions]=\"globalActions()\"\n [maxVisible]=\"0\">\n </tk-action-group>\n }\n </div>\n </div>\n }\n\n @if (shouldShowActiveFiltersBar()) {\n <div class=\"tk-toolbar-chips-bar\" data-testid=\"chips-bar\">\n <div class=\"tk-toolbar-chips-bar__scroll\">\n @for (chip of activeChips(); track chip.filterKey + '-' + chip.code) {\n <tk-chip\n [label]=\"chip.label\"\n [removable]=\"true\"\n (removed)=\"removeChip(chip)\">\n </tk-chip>\n }\n </div>\n <tk-button\n [link]=\"true\"\n [label]=\"clearLabel()\"\n class=\"tk-toolbar-chips-bar__clear-btn\"\n (clicked)=\"clearAllFilters()\">\n </tk-button>\n </div>\n }\n\n <!-- 4. Selection Status Bar (Mobile floating panel) -->\n @if (selectionCount() > 0 && isMobile()) {\n <div class=\"tk-toolbar-selection-bar tk-toolbar-selection-bar--mobile\" data-testid=\"selection-bar-mobile\">\n <div class=\"tk-toolbar-selection-bar__left\">\n <tk-checkbox\n [binary]=\"true\"\n [(model)]=\"allSelected\"\n [indeterminate]=\"indeterminate()\">\n </tk-checkbox>\n <span class=\"tk-toolbar-selection-bar__count\">\n {{ selectionCount() }} {{ selectionCount() === 1 ? selectedLabel() : selectedPluralLabel() }}\n </span>\n </div>\n <div class=\"tk-toolbar-selection-bar__right\">\n @for (action of visibleSelectionActions(); track action.label) {\n <tk-button\n [label]=\"action.label\"\n [icon]=\"action.icon\"\n [severity]=\"action.severity ?? 'secondary'\"\n [variant]=\"action.variant !== undefined ? action.variant : (action.severity === 'danger' ? undefined : 'text')\"\n [disabled]=\"action.disabled ?? false\"\n (clicked)=\"action.action()\">\n </tk-button>\n }\n @if (overflowSelectionActions().length > 0) {\n <tk-dropdown\n icon=\"ellipsis-vertical\"\n [model]=\"overflowSelectionActions()\">\n </tk-dropdown>\n }\n </div>\n </div>\n }\n</div>\n\n<!-- 5. Desktop Popovers -->\n@if (derivedFilters().length > 0 && filterVisible() && !isMobile()) {\n <p-popover #filterPopover styleClass=\"tk-toolbar-popover\">\n <div class=\"tk-toolbar-overlay\" data-testid=\"filter-popover\">\n <div class=\"tk-toolbar-overlay__header\">\n <span class=\"tk-toolbar-overlay__title\">{{ filterLabel() }}</span>\n <button type=\"button\" class=\"tk-toolbar-overlay__close\" (click)=\"filterPopover.hide()\">\n <tk-icon icon=\"xmark\" size=\"lg\"></tk-icon>\n </button>\n </div>\n <div class=\"tk-toolbar-overlay__body\">\n @for (filter of derivedFilters(); track filter.key) {\n <div class=\"tk-toolbar-overlay__field\">\n <tk-multiselect\n [id]=\"'filter-' + filter.key\"\n [options]=\"filter.options\"\n [labelText]=\"filter.label\"\n [model]=\"tempFilterValues()[filter.key] || []\"\n (modelChange)=\"onTempFilterChange(filter.key, $event || [])\"\n appendTo=\"body\"\n panelStyleClass=\"tk-toolbar-multiselect-panel\">\n </tk-multiselect>\n </div>\n }\n </div>\n <div class=\"tk-toolbar-overlay__footer\">\n <tk-button\n [label]=\"clearLabel()\"\n severity=\"secondary\"\n variant=\"outlined\"\n (clicked)=\"clearTempFilters()\">\n </tk-button>\n <tk-button\n [label]=\"applyLabel()\"\n severity=\"primary\"\n (clicked)=\"applyFilters()\">\n </tk-button>\n </div>\n </div>\n </p-popover>\n}\n\n@if (sortOptions().length > 0 && !isMobile()) {\n <p-popover #sortPopover styleClass=\"tk-toolbar-popover\">\n <div class=\"tk-toolbar-overlay tk-toolbar-overlay--sort\" data-testid=\"sort-popover\">\n <div class=\"tk-toolbar-overlay__header\">\n <span class=\"tk-toolbar-overlay__title\">{{ sortLabel() }}</span>\n <button type=\"button\" class=\"tk-toolbar-overlay__close\" (click)=\"sortPopover.hide()\">\n <tk-icon icon=\"xmark\" size=\"lg\"></tk-icon>\n </button>\n </div>\n <div class=\"tk-toolbar-overlay__body\">\n <div class=\"tk-toolbar-sort-options\">\n @for (option of sortOptions(); track option.value) {\n <button \n type=\"button\"\n class=\"tk-toolbar-sort-option\" \n [class.tk-toolbar-sort-option--active]=\"sortValue() === option.value\"\n (click)=\"selectSortOption(option.value)\">\n <span>{{ option.label }}</span>\n </button>\n }\n </div>\n </div>\n </div>\n </p-popover>\n}\n\n<!-- 6. Mobile Drawers -->\n@if (derivedFilters().length > 0 && filterVisible() && isMobile()) {\n <tk-drawer\n [(isOpened)]=\"showFilterDrawer\"\n [title]=\"filterLabel()\"\n direction=\"bottom\"\n [dismissible]=\"true\">\n <div class=\"tk-toolbar-overlay__body\">\n @for (filter of derivedFilters(); track filter.key) {\n <div class=\"tk-toolbar-overlay__field\">\n <tk-multiselect\n [id]=\"'filter-mob-' + filter.key\"\n [options]=\"filter.options\"\n [labelText]=\"filter.label\"\n [model]=\"tempFilterValues()[filter.key] || []\"\n (modelChange)=\"onTempFilterChange(filter.key, $event || [])\"\n appendTo=\"body\"\n panelStyleClass=\"tk-toolbar-multiselect-panel\">\n </tk-multiselect>\n </div>\n }\n </div>\n <div class=\"tk-toolbar-overlay__footer\">\n <tk-button\n [label]=\"clearLabel()\"\n severity=\"secondary\"\n variant=\"outlined\"\n (clicked)=\"clearTempFilters()\">\n </tk-button>\n <tk-button\n [label]=\"applyLabel()\"\n severity=\"primary\"\n (clicked)=\"applyFilters()\">\n </tk-button>\n </div>\n </tk-drawer>\n}\n\n@if (sortOptions().length > 0 && isMobile()) {\n <tk-drawer\n [(isOpened)]=\"showSortDrawer\"\n [title]=\"sortLabel()\"\n direction=\"bottom\"\n [dismissible]=\"true\">\n <div class=\"tk-toolbar-overlay__body\">\n <div class=\"tk-toolbar-sort-options\">\n @for (option of sortOptions(); track option.value) {\n <button \n type=\"button\"\n class=\"tk-toolbar-sort-option\" \n [class.tk-toolbar-sort-option--active]=\"tempSortValue() === option.value\"\n (click)=\"toggleSortOptionMobile(option.value)\">\n <span>{{ option.label }}</span>\n </button>\n }\n </div>\n </div>\n <div class=\"tk-toolbar-overlay__footer\">\n <tk-button\n [label]=\"applyLabel()\"\n severity=\"primary\"\n (clicked)=\"applySortMobile()\">\n </tk-button>\n </div>\n </tk-drawer>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tekus-design-system-components-toolbar.mjs","sources":["../../../projects/design-system/components/toolbar/src/toolbar.component.ts","../../../projects/design-system/components/toolbar/src/toolbar.component.html","../../../projects/design-system/components/toolbar/tekus-design-system-components-toolbar.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, model, signal, input, output, computed, inject, viewChild, effect, untracked } from '@angular/core';\nimport { takeUntilDestroyed, toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { BreakpointObserver } from '@angular/cdk/layout';\nimport {\n combineLatest,\n distinctUntilChanged,\n EMPTY,\n map,\n switchMap,\n timer,\n} from 'rxjs';\nimport { MenuItem } from 'primeng/api';\nimport { Popover, PopoverModule } from 'primeng/popover';\nimport { ButtonComponent } from '@tekus/design-system/components/button';\nimport { InputTextComponent } from '@tekus/design-system/components/input-text';\nimport { CheckboxComponent } from '@tekus/design-system/components/checkbox';\nimport { ActionGroupComponent, TkAction } from '@tekus/design-system/components/action-group';\nimport { IconComponent } from '@tekus/design-system/components/icon';\nimport { DropdownComponent } from '@tekus/design-system/components/dropdown';\nimport { MultiselectComponent, MultiSelectOption } from '@tekus/design-system/components/multiselect';\nimport { ChipComponent } from '@tekus/design-system/components/chip';\nimport { DrawerComponent } from '@tekus/design-system/components/drawer';\nimport { TkToolbarFilterConfig, TkToolbarAction } from './toolbar.types';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'tk-toolbar',\n imports: [\n ButtonComponent,\n InputTextComponent,\n CheckboxComponent,\n ActionGroupComponent,\n IconComponent,\n DropdownComponent,\n MultiselectComponent,\n ChipComponent,\n DrawerComponent,\n PopoverModule,\n ],\n templateUrl: './toolbar.component.html',\n styleUrl: './toolbar.component.scss',\n})\nexport class ToolbarComponent {\n private readonly breakpointObserver = inject(BreakpointObserver);\n\n /** Responsive flag using BreakpointObserver */\n isMobile = toSignal(\n this.breakpointObserver.observe('(max-width: 768px)').pipe(map(r => r.matches)),\n { initialValue: false }\n );\n\n /**\n * Two-way bindable signal for the search input value.\n */\n searchModel = model<string>('');\n\n /**\n * Label/placeholder text displayed inside the search input.\n * @default 'Buscar'\n */\n searchFloatLabel = input<string>('Buscar');\n\n /**\n * Controls the visibility of the search input field.\n * @default true\n */\n searchVisible = input<boolean>(true);\n\n /**\n * Two-way bindable signal for the layout view toggle ('table' or 'cards').\n * @default 'table'\n */\n view = model<'table' | 'cards'>('table');\n\n /**\n * Controls the visibility of the layout view toggle button.\n * @default false\n */\n viewToggleVisible = input<boolean>(false);\n\n /**\n * Dynamic list of filters and their available selection options.\n * @default []\n */\n filters = input<TkToolbarFilterConfig[]>([]);\n\n /** Backwards compatibility: Writable model signal for the selected option in a single filter select (deprecated) */\n filterModel = model<Record<string, string> | null>(null);\n\n /** Backwards compatibility: Input for dropdown options (deprecated) */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n filterOptions = input<Array<any>>([\n { label: 'Option 1', value: 'option1' },\n { label: 'Option 2', value: 'option2' },\n { label: 'Option 3', value: 'option3' },\n ]);\n\n /** Backwards compatibility: Input for the option label key (deprecated) */\n filterOptionLabel = input<string>('label');\n\n /** Backwards compatibility: Input for the label of the single select dropdown (deprecated) */\n filterFloatLabel = input<string>('Filtrar');\n\n /** Backwards compatibility: Controls whether filter button is shown (deprecated) */\n filterVisible = input<boolean>(true);\n\n /**\n * Two-way bindable signal for currently selected filter values.\n * Format: { [filterKey]: MultiSelectOption[] }\n * @default {}\n */\n filterValues = model<Record<string, MultiSelectOption[]>>({});\n\n /**\n * Label/text for the clear button.\n * @default 'Limpiar'\n */\n clearLabel = input<string>('Limpiar');\n\n /**\n * Label/text for the delete action button.\n * @default 'Eliminar'\n */\n deleteLabel = input<string>('Eliminar');\n\n /**\n * Label/text for the filters header.\n * @default 'Filtros'\n */\n filterLabel = input<string>('Filtros');\n\n /** Label for selected item singular form (e.g. 'seleccionado') */\n selectedLabel = input<string>('seleccionado');\n\n /** Label for selected item plural form (e.g. 'seleccionados') */\n selectedPluralLabel = input<string>('seleccionados');\n\n /** Label/text for the apply button in overlays (e.g. 'Aplicar') */\n applyLabel = input<string>('Aplicar');\n\n /** Tooltip text for the reload action button (e.g. 'Actualizar') */\n reloadTooltip = input<string>('Actualizar');\n\n /** Tooltip text for the sort action button (e.g. 'Ordenar') */\n sortTooltip = input<string>('Ordenar');\n\n /** Tooltip text for view cards layout button (e.g. 'Vista tarjeta') */\n viewCardsTooltip = input<string>('Vista tarjeta');\n\n /** Tooltip text for view table layout button (e.g. 'Vista tabla') */\n viewTableTooltip = input<string>('Vista tabla');\n\n /**\n * Available list of sorting options.\n * @default []\n */\n sortOptions = input<Array<{ label: string; value: string }>>([]);\n\n /**\n * Label/text for the sorting header.\n * @default 'Ordenar por'\n */\n sortLabel = input<string>('Ordenar por');\n\n /**\n * Two-way bindable signal for the active sort option value.\n * @default null\n */\n sortValue = model<string | null>(null);\n\n /**\n * Controls the visibility of the reload button.\n * @default false\n */\n reloadVisible = input<boolean>(false);\n\n /**\n * Sets the interval for automatic reload in milliseconds.\n * If null, automatic reload is disabled.\n * @default null\n */\n reloadInterval = input<number | null>(null);\n\n /**\n * Controls the loading state of the reload button, triggering a rotation animation.\n * @default false\n */\n loading = input<boolean>(false);\n\n /**\n * Secondary or mass actions collapsed into the tk-action-group dropdown.\n * @default []\n */\n globalActions = input<TkAction[]>([]);\n\n /**\n * Number of items selected in the list.\n * @default 0\n */\n selectionCount = input<number>(0);\n\n /**\n * Two-way bindable signal for checking/unchecking the select-all checkbox.\n * @default false\n */\n allSelected = model<boolean>(false);\n\n /**\n * Two-way bindable signal for the indeterminate state of the select-all checkbox.\n * @default false\n */\n indeterminate = model<boolean>(false);\n\n /**\n * Actions available when one or more items are selected.\n * @default []\n */\n selectionActions = input<TkToolbarAction[]>([]);\n\n /**\n * Maximum number of selection action buttons visible directly before grouping the rest.\n * @default 1\n */\n maxVisibleSelectionActions = input<number>(1);\n\n /**\n * Emits an event when the reload button is clicked or the automatic interval is reached.\n */\n reload = output<void>();\n\n /**\n * Emits when filters are applied.\n */\n appliedFilters = output<Record<string, MultiSelectOption[]>>();\n\n /**\n * Emits when sorting changes.\n */\n appliedSort = output<string | null>();\n\n /** Temporary filter values held before the user clicks \"Aplicar\" */\n tempFilterValues = signal<Record<string, MultiSelectOption[]>>({});\n\n /** Temporary sort value held before the user clicks \"Aplicar\" in mobile drawer */\n tempSortValue = signal<string | null>(null);\n\n /** Controls visibility of mobile drawers */\n showFilterDrawer = signal<boolean>(false);\n showSortDrawer = signal<boolean>(false);\n\n filterPopover = viewChild<Popover>('filterPopover');\n sortPopover = viewChild<Popover>('sortPopover');\n\n /** Computes whether any filters are currently active */\n hasActiveFilters = computed(() => {\n const values = this.filterValues();\n return Object.values(values).some(arr => arr && arr.length > 0);\n });\n\n /** Computes whether sorting is active */\n hasActiveSort = computed(() => {\n return this.sortValue() !== null && this.sortValue() !== '';\n });\n\n /** Reload button visibility: only visible if reload is allowed AND filters or sorting is active */\n shouldShowReload = computed(() => {\n return this.reloadVisible();\n });\n\n /** Computes the final filters configuration, adapting old filterOptions format to the new filters schema */\n derivedFilters = computed<TkToolbarFilterConfig[]>(() => {\n const customFilters = this.filters();\n if (customFilters && customFilters.length > 0) {\n return customFilters;\n }\n\n const oldOptions = this.filterOptions();\n if (oldOptions && oldOptions.length > 0) {\n return [\n {\n key: 'default_filter',\n label: this.filterFloatLabel() || 'Filtrar',\n options: oldOptions.map(opt => ({\n name: opt[this.filterOptionLabel()] || opt['label'] || opt['value'],\n code: opt['value']\n }))\n }\n ];\n }\n\n return [];\n });\n\n /** Active chips representing individual filter selections */\n activeChips = computed(() => {\n const values = this.filterValues();\n const configs = this.derivedFilters();\n const chips: Array<{ filterKey: string; code: string; label: string }> = [];\n\n for (const config of configs) {\n const selected = values[config.key] || [];\n for (const item of selected) {\n chips.push({\n filterKey: config.key,\n code: item.code,\n label: item.name,\n });\n }\n }\n return chips;\n });\n\n /** Visibility of the active filters bar (below tools) */\n shouldShowActiveFiltersBar = computed(() => {\n return this.hasActiveFilters();\n });\n\n /** Visible selection actions as buttons */\n visibleSelectionActions = computed(() => {\n return this.selectionActions()\n .slice(0, this.maxVisibleSelectionActions())\n .map(action => {\n if (action.severity === 'danger') {\n return { ...action, label: this.deleteLabel() };\n }\n return action;\n });\n });\n\n /** Overflow selection actions as menu items for dropdown */\n overflowSelectionActions = computed<MenuItem[]>(() => {\n const list = this.selectionActions();\n const max = this.maxVisibleSelectionActions();\n if (list.length <= max) {\n return [];\n }\n return list.slice(max).map(action => {\n const label = action.severity === 'danger' ? this.deleteLabel() : action.label;\n return {\n label: label,\n icon: action.icon,\n command: () => action.action(),\n disabled: action.disabled ?? false,\n };\n });\n });\n\n constructor() {\n combineLatest([\n toObservable(this.reloadInterval).pipe(distinctUntilChanged()),\n toObservable(this.loading).pipe(distinctUntilChanged()),\n ])\n .pipe(\n switchMap(([interval, isLoading]) => {\n if (isLoading || !interval || interval <= 0) {\n return EMPTY;\n }\n return timer(interval, interval);\n }),\n takeUntilDestroyed()\n )\n .subscribe(() => this.onReload());\n\n effect(() => {\n const modelVal = this.filterModel();\n if (modelVal?.['value']) {\n const matchedOpt = this.filterOptions().find(opt => opt['value'] === modelVal['value']);\n if (matchedOpt) {\n const labelKey = this.filterOptionLabel();\n const label = matchedOpt[labelKey] || matchedOpt['label'] || matchedOpt['value'];\n untracked(() => {\n const current = this.filterValues();\n const currentSelections = current['default_filter'] || [];\n if (currentSelections.length !== 1 || currentSelections[0].code !== matchedOpt['value']) {\n this.filterValues.set({\n ...current,\n default_filter: [{ name: label, code: matchedOpt['value'] }]\n });\n }\n });\n }\n } else if (!modelVal) {\n untracked(() => {\n const current = this.filterValues();\n if (current['default_filter'] && current['default_filter'].length > 0) {\n const updated = { ...current };\n delete updated['default_filter'];\n this.filterValues.set(updated);\n }\n });\n }\n });\n\n // Sync filterValues (new) -> filterModel (old single-select)\n effect(() => {\n const values = this.filterValues();\n const defaultFilterSelections = values['default_filter'];\n if (defaultFilterSelections && defaultFilterSelections.length > 0) {\n const lastSelected = defaultFilterSelections[defaultFilterSelections.length - 1];\n const matchedOpt = this.filterOptions().find(opt => opt['value'] === lastSelected.code);\n if (matchedOpt) {\n untracked(() => {\n if (this.filterModel()?.[ 'value' ] !== matchedOpt['value']) {\n this.filterModel.set(matchedOpt);\n }\n });\n }\n } else {\n untracked(() => {\n if (this.filterModel() !== null) {\n this.filterModel.set(null);\n }\n });\n }\n });\n }\n\n /** Toggles filters overlay and initializes temporary state */\n openFilters(event: Event): void {\n const currentValues = this.filterValues();\n // Copy current filter selections into temporary state\n const copy: Record<string, MultiSelectOption[]> = {};\n for (const key of Object.keys(currentValues)) {\n copy[key] = [...(currentValues[key] || [])];\n }\n this.tempFilterValues.set(copy);\n\n if (this.isMobile()) {\n this.showFilterDrawer.set(true);\n } else {\n this.filterPopover()?.toggle(event);\n }\n }\n\n /** Updates temporary filter values for a specific filter key */\n onTempFilterChange(key: string, value: MultiSelectOption[]): void {\n this.tempFilterValues.update(prev => ({ ...prev, [key]: value }));\n }\n\n /** Saves temporary filter selections and triggers apply */\n applyFilters(): void {\n const temp = this.tempFilterValues();\n this.filterValues.set({ ...temp });\n this.appliedFilters.emit({ ...temp });\n\n if (this.isMobile()) {\n this.showFilterDrawer.set(false);\n } else {\n this.filterPopover()?.hide();\n }\n }\n\n /** Clears temporary filters inside popover/drawer */\n clearTempFilters(): void {\n const cleared: Record<string, MultiSelectOption[]> = {};\n for (const filter of this.derivedFilters()) {\n cleared[filter.key] = [];\n }\n this.tempFilterValues.set(cleared);\n }\n\n /** Clears all applied filters */\n clearAllFilters(): void {\n const cleared: Record<string, MultiSelectOption[]> = {};\n this.filterValues.set(cleared);\n this.appliedFilters.emit(cleared);\n }\n\n /** Removes a single filter chip */\n removeChip(chip: { filterKey: string; code: string }): void {\n const currentValues = { ...this.filterValues() };\n const list = currentValues[chip.filterKey] || [];\n currentValues[chip.filterKey] = list.filter(item => item.code !== chip.code);\n this.filterValues.set(currentValues);\n this.appliedFilters.emit(currentValues);\n }\n\n /** Toggles sorting overlay */\n openSort(event: Event): void {\n if (this.isMobile()) {\n this.tempSortValue.set(this.sortValue());\n this.showSortDrawer.set(true);\n } else {\n this.sortPopover()?.toggle(event);\n }\n }\n\n /** Selects a sort option (toggles if already selected) and hides overlay */\n selectSortOption(value: string, isMobileDrawer = false): void {\n const newValue = this.sortValue() === value ? null : value;\n this.sortValue.set(newValue);\n this.appliedSort.emit(newValue);\n\n if (isMobileDrawer) {\n this.showSortDrawer.set(false);\n } else {\n this.sortPopover()?.hide();\n }\n }\n\n /** Toggles temporary sorting selection on mobile drawer */\n toggleSortOptionMobile(value: string): void {\n this.tempSortValue.update(prev => prev === value ? null : value);\n }\n\n /** Applies selected sorting on mobile */\n applySortMobile(): void {\n const val = this.tempSortValue();\n this.sortValue.set(val);\n this.appliedSort.emit(val);\n this.showSortDrawer.set(false);\n }\n\n /** Toggle layout view */\n toggleView(): void {\n this.view.set(this.view() === 'table' ? 'cards' : 'table');\n }\n\n onReload(): void {\n this.reload.emit();\n }\n}\n","<div class=\"tk-toolbar-container\">\n <!-- 1. Selection Status Bar (Desktop replacement) -->\n @if (selectionCount() > 0 && !isMobile()) {\n <div class=\"tk-toolbar-selection-bar\" data-testid=\"selection-bar-desktop\">\n <div class=\"tk-toolbar-selection-bar__left\">\n <tk-checkbox\n [binary]=\"true\"\n [(model)]=\"allSelected\"\n [indeterminate]=\"indeterminate()\">\n </tk-checkbox>\n <span class=\"tk-toolbar-selection-bar__count\">\n {{ selectionCount() }} {{ selectionCount() === 1 ? selectedLabel() : selectedPluralLabel() }}\n </span>\n </div>\n <div class=\"tk-toolbar-selection-bar__right\">\n @for (action of visibleSelectionActions(); track action.label) {\n <tk-button\n [label]=\"action.label\"\n [icon]=\"action.icon\"\n [severity]=\"action.severity ?? 'secondary'\"\n [variant]=\"action.variant !== undefined ? action.variant : (action.severity === 'danger' ? undefined : 'text')\"\n [disabled]=\"action.disabled ?? false\"\n (clicked)=\"action.action()\">\n </tk-button>\n }\n @if (overflowSelectionActions().length > 0) {\n <tk-dropdown\n icon=\"ellipsis-vertical\"\n [model]=\"overflowSelectionActions()\">\n </tk-dropdown>\n }\n </div>\n </div>\n } @else {\n <!-- 2. Main Tools Bar -->\n <div class=\"tk-toolbar\" data-testid=\"main-toolbar\">\n <!-- Left part: search input (always visible if searchVisible is true) -->\n @if (searchVisible()) {\n <div class=\"tk-toolbar__search\">\n <tk-input-text\n [label]=\"searchFloatLabel()\"\n icon=\"magnifying-glass\"\n [clearable]=\"true\"\n [value]=\"searchModel()\"\n (valueChange)=\"searchModel.set($event)\">\n </tk-input-text>\n </div>\n }\n\n <!-- Right part: actions -->\n <div class=\"tk-toolbar__actions\">\n @if (viewToggleVisible()) {\n <tk-button\n [icon]=\"view() === 'table' ? 'table' : 'table-list'\"\n severity=\"secondary\"\n variant=\"text\"\n [tooltipText]=\"view() === 'table' ? viewCardsTooltip() : viewTableTooltip()\"\n (clicked)=\"toggleView()\">\n </tk-button>\n }\n\n @if (derivedFilters().length > 0 && filterVisible()) {\n <tk-button\n #filterBtn\n [icon]=\"'filter'\"\n [severity]=\"hasActiveFilters() ? 'primary' : 'secondary'\"\n [variant]=\"hasActiveFilters() ? undefined : 'text'\"\n [tooltipText]=\"filterLabel()\"\n (click)=\"openFilters($event)\"\n (keydown.enter)=\"openFilters($event)\"\n (keydown.space)=\"openFilters($event)\">\n </tk-button>\n }\n\n @if (sortOptions().length > 0) {\n <tk-button\n #sortBtn\n [icon]=\"'arrow-down-wide-short'\"\n [severity]=\"hasActiveSort() ? 'primary' : 'secondary'\"\n [variant]=\"hasActiveSort() ? undefined : 'text'\"\n [tooltipText]=\"sortTooltip()\"\n (click)=\"openSort($event)\"\n (keydown.enter)=\"openSort($event)\"\n (keydown.space)=\"openSort($event)\">\n </tk-button>\n }\n\n @if (shouldShowReload()) {\n <tk-button\n class=\"tk-toolbar__reload-btn\"\n [class.tk-toolbar__reload-btn--animating]=\"\n reloadInterval() && reloadInterval()! > 0 && !loading()\n \"\n [class.tk-toolbar__reload-btn--spinning]=\"loading()\"\n [style.--reload-interval]=\"(reloadInterval() ?? 0) + 'ms'\"\n [icon]=\"'arrows-rotate'\"\n severity=\"secondary\"\n variant=\"text\"\n [tooltipText]=\"reloadTooltip()\"\n (clicked)=\"onReload()\">\n </tk-button>\n }\n\n @if (globalActions().length > 0) {\n <tk-action-group\n [actions]=\"globalActions()\"\n [maxVisible]=\"0\">\n </tk-action-group>\n }\n </div>\n </div>\n }\n\n @if (shouldShowActiveFiltersBar()) {\n <div class=\"tk-toolbar-chips-bar\" data-testid=\"chips-bar\">\n <div class=\"tk-toolbar-chips-bar__scroll\">\n @for (chip of activeChips(); track chip.filterKey + '-' + chip.code) {\n <tk-chip\n [label]=\"chip.label\"\n [removable]=\"true\"\n (removed)=\"removeChip(chip)\">\n </tk-chip>\n }\n </div>\n <tk-button\n [link]=\"true\"\n [label]=\"clearLabel()\"\n class=\"tk-toolbar-chips-bar__clear-btn\"\n (clicked)=\"clearAllFilters()\">\n </tk-button>\n </div>\n }\n\n <!-- 4. Selection Status Bar (Mobile floating panel) -->\n @if (selectionCount() > 0 && isMobile()) {\n <div class=\"tk-toolbar-selection-bar tk-toolbar-selection-bar--mobile\" data-testid=\"selection-bar-mobile\">\n <div class=\"tk-toolbar-selection-bar__left\">\n <tk-checkbox\n [binary]=\"true\"\n [(model)]=\"allSelected\"\n [indeterminate]=\"indeterminate()\">\n </tk-checkbox>\n <span class=\"tk-toolbar-selection-bar__count\">\n {{ selectionCount() }} {{ selectionCount() === 1 ? selectedLabel() : selectedPluralLabel() }}\n </span>\n </div>\n <div class=\"tk-toolbar-selection-bar__right\">\n @for (action of visibleSelectionActions(); track action.label) {\n <tk-button\n [label]=\"action.label\"\n [icon]=\"action.icon\"\n [severity]=\"action.severity ?? 'secondary'\"\n [variant]=\"action.variant !== undefined ? action.variant : (action.severity === 'danger' ? undefined : 'text')\"\n [disabled]=\"action.disabled ?? false\"\n (clicked)=\"action.action()\">\n </tk-button>\n }\n @if (overflowSelectionActions().length > 0) {\n <tk-dropdown\n icon=\"ellipsis-vertical\"\n [model]=\"overflowSelectionActions()\">\n </tk-dropdown>\n }\n </div>\n </div>\n }\n</div>\n\n<!-- 5. Desktop Popovers -->\n@if (derivedFilters().length > 0 && filterVisible() && !isMobile()) {\n <p-popover #filterPopover styleClass=\"tk-toolbar-popover\">\n <div class=\"tk-toolbar-overlay\" data-testid=\"filter-popover\">\n <div class=\"tk-toolbar-overlay__header\">\n <span class=\"tk-toolbar-overlay__title\">{{ filterLabel() }}</span>\n <button type=\"button\" class=\"tk-toolbar-overlay__close\" (click)=\"filterPopover.hide()\">\n <tk-icon icon=\"xmark\" size=\"lg\"></tk-icon>\n </button>\n </div>\n <div class=\"tk-toolbar-overlay__body\">\n @for (filter of derivedFilters(); track filter.key) {\n <div class=\"tk-toolbar-overlay__field\">\n <tk-multiselect\n [id]=\"'filter-' + filter.key\"\n [options]=\"filter.options\"\n [labelText]=\"filter.label\"\n [model]=\"tempFilterValues()[filter.key] || []\"\n (modelChange)=\"onTempFilterChange(filter.key, $event || [])\"\n appendTo=\"body\"\n panelStyleClass=\"tk-toolbar-multiselect-panel\">\n </tk-multiselect>\n </div>\n }\n </div>\n <div class=\"tk-toolbar-overlay__footer\">\n <tk-button\n [label]=\"clearLabel()\"\n severity=\"secondary\"\n variant=\"outlined\"\n (clicked)=\"clearTempFilters()\">\n </tk-button>\n <tk-button\n [label]=\"applyLabel()\"\n severity=\"primary\"\n (clicked)=\"applyFilters()\">\n </tk-button>\n </div>\n </div>\n </p-popover>\n}\n\n@if (sortOptions().length > 0 && !isMobile()) {\n <p-popover #sortPopover styleClass=\"tk-toolbar-popover\">\n <div class=\"tk-toolbar-overlay tk-toolbar-overlay--sort\" data-testid=\"sort-popover\">\n <div class=\"tk-toolbar-overlay__header\">\n <span class=\"tk-toolbar-overlay__title\">{{ sortLabel() }}</span>\n <button type=\"button\" class=\"tk-toolbar-overlay__close\" (click)=\"sortPopover.hide()\">\n <tk-icon icon=\"xmark\" size=\"lg\"></tk-icon>\n </button>\n </div>\n <div class=\"tk-toolbar-overlay__body\">\n <div class=\"tk-toolbar-sort-options\">\n @for (option of sortOptions(); track option.value) {\n <button \n type=\"button\"\n class=\"tk-toolbar-sort-option\" \n [class.tk-toolbar-sort-option--active]=\"sortValue() === option.value\"\n (click)=\"selectSortOption(option.value)\">\n <span>{{ option.label }}</span>\n </button>\n }\n </div>\n </div>\n </div>\n </p-popover>\n}\n\n<!-- 6. Mobile Drawers -->\n@if (derivedFilters().length > 0 && filterVisible() && isMobile()) {\n <tk-drawer\n [(isOpened)]=\"showFilterDrawer\"\n [title]=\"filterLabel()\"\n direction=\"bottom\"\n [dismissible]=\"true\">\n <div class=\"tk-toolbar-overlay__body\">\n @for (filter of derivedFilters(); track filter.key) {\n <div class=\"tk-toolbar-overlay__field\">\n <tk-multiselect\n [id]=\"'filter-mob-' + filter.key\"\n [options]=\"filter.options\"\n [labelText]=\"filter.label\"\n [model]=\"tempFilterValues()[filter.key] || []\"\n (modelChange)=\"onTempFilterChange(filter.key, $event || [])\"\n appendTo=\"body\"\n panelStyleClass=\"tk-toolbar-multiselect-panel\">\n </tk-multiselect>\n </div>\n }\n </div>\n <div class=\"tk-toolbar-overlay__footer\">\n <tk-button\n [label]=\"clearLabel()\"\n severity=\"secondary\"\n variant=\"outlined\"\n (clicked)=\"clearTempFilters()\">\n </tk-button>\n <tk-button\n [label]=\"applyLabel()\"\n severity=\"primary\"\n (clicked)=\"applyFilters()\">\n </tk-button>\n </div>\n </tk-drawer>\n}\n\n@if (sortOptions().length > 0 && isMobile()) {\n <tk-drawer\n [(isOpened)]=\"showSortDrawer\"\n [title]=\"sortLabel()\"\n direction=\"bottom\"\n [dismissible]=\"true\">\n <div class=\"tk-toolbar-overlay__body\">\n <div class=\"tk-toolbar-sort-options\">\n @for (option of sortOptions(); track option.value) {\n <button \n type=\"button\"\n class=\"tk-toolbar-sort-option\" \n [class.tk-toolbar-sort-option--active]=\"tempSortValue() === option.value\"\n (click)=\"toggleSortOptionMobile(option.value)\">\n <span>{{ option.label }}</span>\n </button>\n }\n </div>\n </div>\n <div class=\"tk-toolbar-overlay__footer\">\n <tk-button\n [label]=\"applyLabel()\"\n severity=\"primary\"\n (clicked)=\"applySortMobile()\">\n </tk-button>\n </div>\n </tk-drawer>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -28,11 +28,11 @@ class TopbarComponent {
28
28
  this.description = input(null, ...(ngDevMode ? [{ debugName: "description" }] : /* istanbul ignore next */ []));
29
29
  }
30
30
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: TopbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
31
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: TopbarComponent, isStandalone: true, selector: "tk-topbar", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null }, actions: { classPropertyName: "actions", publicName: "actions", isSignal: true, isRequired: false, transformFunction: null }, showBreadcrumbs: { classPropertyName: "showBreadcrumbs", publicName: "showBreadcrumbs", isSignal: true, isRequired: false, transformFunction: null }, breadcrumbItems: { classPropertyName: "breadcrumbItems", publicName: "breadcrumbItems", isSignal: true, isRequired: false, transformFunction: null }, breadcrumbSize: { classPropertyName: "breadcrumbSize", publicName: "breadcrumbSize", isSignal: true, isRequired: false, transformFunction: null }, tags: { classPropertyName: "tags", publicName: "tags", isSignal: true, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"tk-topbar\">\n <div class=\"tk-topbar__header\">\n @if (showBreadcrumbs()) {\n <tk-bread-crumps [items]=\"breadcrumbItems()\" [size]=\"breadcrumbSize()\"></tk-bread-crumps>\n } @else {\n <h2 class=\"tk-topbar__title\">{{ title() }}</h2>\n }\n\n @if (actions()?.length) {\n <div class=\"tk-topbar__actions\">\n @for (action of actions(); track $index) {\n @if (action.type === 'primary') {\n <tk-button\n [label]=\"action.label\"\n severity=\"primary\"\n [tooltipText]=\"action.tooltipText\"\n (clicked)=\"action.onClick()\">\n </tk-button>\n } @else {\n <tk-button\n [icon]=\"action.icon\"\n severity=\"secondary\"\n [tooltipText]=\"action.tooltipText\"\n (clicked)=\"action.onClick()\">\n </tk-button>\n }\n }\n </div>\n }\n </div>\n\n @if (tags()?.length || description()) {\n <div class=\"tk-topbar__meta\">\n @if (tags()?.length) {\n <div class=\"tk-topbar__tags\">\n @for (tag of tags(); track $index) {\n <tk-tag\n [value]=\"tag.label\"\n [severity]=\"tag.variant ?? 'secondary'\"></tk-tag>\n }\n </div>\n }\n @if (description()) {\n <p class=\"tk-topbar__description\">{{ description() }}</p>\n }\n </div>\n }\n</div>\n", styles: [".tk-topbar{display:flex;flex-direction:column;gap:var(--tk-spacing-gap-xs, .25rem);padding:var(--tk-spacing-padding-m, 1rem) var(--tk-spacing-padding-m, 1rem);background:var(--tk-color-background-soft, #f2f1f1);border-radius:var(--tk-borderRadius-s, .5rem)}.tk-topbar__header{display:flex;align-items:center;justify-content:space-between;flex-wrap:nowrap;gap:var(--tk-spacing-gap-m, 1rem);width:100%}.tk-topbar__title{margin:0;flex:1 1 auto;min-width:12.5rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--tk-font-size-headers-l, 2rem);font-weight:var(--tk-font-weight-600, 600);color:var(--tk-color-text-default, #191a1b)}.tk-topbar__actions{display:flex;align-items:center;gap:var(--tk-spacing-gap-xs, .25rem);margin-left:auto}@media(max-width:768px){.tk-topbar__header{flex-wrap:wrap}.tk-topbar__actions{width:100%;margin-left:0}}.tk-topbar__meta{display:flex;align-items:center;gap:var(--tk-spacing-gap-m, 1rem);width:100%}.tk-topbar__tags{display:flex;align-items:center;gap:var(--tk-spacing-gap-xs, .25rem)}.tk-topbar__description{margin:0;font-size:var(--tk-font-size-paragraph-s, .875rem);font-weight:var(--tk-font-weight-400, 400);color:var(--tk-color-text-default, #191a1b)}\n"], dependencies: [{ kind: "component", type: ButtonComponent, selector: "tk-button", inputs: ["label", "disabled", "type", "severity", "variant", "link", "icon", "iconPosition", "tooltipText", "full", "ariaLabel", "size"], outputs: ["clicked"] }, { kind: "component", type: TagComponent, selector: "tk-tag", inputs: ["value", "severity", "truncationLimit"] }, { kind: "component", type: BreadCrumpsComponent, selector: "tk-bread-crumps", inputs: ["items", "size", "onlyCurrent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
31
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: TopbarComponent, isStandalone: true, selector: "tk-topbar", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null }, actions: { classPropertyName: "actions", publicName: "actions", isSignal: true, isRequired: false, transformFunction: null }, showBreadcrumbs: { classPropertyName: "showBreadcrumbs", publicName: "showBreadcrumbs", isSignal: true, isRequired: false, transformFunction: null }, breadcrumbItems: { classPropertyName: "breadcrumbItems", publicName: "breadcrumbItems", isSignal: true, isRequired: false, transformFunction: null }, breadcrumbSize: { classPropertyName: "breadcrumbSize", publicName: "breadcrumbSize", isSignal: true, isRequired: false, transformFunction: null }, tags: { classPropertyName: "tags", publicName: "tags", isSignal: true, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"tk-topbar\">\n <div class=\"tk-topbar__header\">\n @if (showBreadcrumbs()) {\n <tk-bread-crumps [items]=\"breadcrumbItems()\" [size]=\"breadcrumbSize()\"></tk-bread-crumps>\n } @else {\n <h2 class=\"tk-topbar__title\">{{ title() }}</h2>\n }\n\n @if (actions()?.length) {\n <div class=\"tk-topbar__actions\">\n @for (action of actions(); track $index) {\n @if (action.type === 'primary') {\n <tk-button\n [label]=\"action.label\"\n severity=\"primary\"\n [tooltipText]=\"action.tooltipText\"\n (clicked)=\"action.onClick()\">\n </tk-button>\n } @else {\n <tk-button\n [icon]=\"action.icon\"\n severity=\"secondary\"\n [tooltipText]=\"action.tooltipText\"\n (clicked)=\"action.onClick()\">\n </tk-button>\n }\n }\n </div>\n }\n </div>\n\n @if (tags()?.length || description()) {\n <div class=\"tk-topbar__meta\">\n @if (tags()?.length) {\n <div class=\"tk-topbar__tags\">\n @for (tag of tags(); track $index) {\n <tk-tag\n [value]=\"tag.label\"\n [severity]=\"tag.variant ?? 'secondary'\"></tk-tag>\n }\n </div>\n }\n @if (description()) {\n <p class=\"tk-topbar__description\">{{ description() }}</p>\n }\n </div>\n }\n</div>\n", styles: [".tk-topbar{display:flex;flex-direction:column;gap:var(--tk-spacing-gap-xs, .25rem);padding:var(--tk-spacing-padding-m, 1rem) var(--tk-spacing-padding-m, 1rem);background:var(--tk-color-background-soft, #f2f1f1);border-radius:var(--tk-borderRadius-theme-s, var(--tk-borderRadius-s, .5rem))}.tk-topbar__header{display:flex;align-items:center;justify-content:space-between;flex-wrap:nowrap;gap:var(--tk-spacing-gap-m, 1rem);width:100%}.tk-topbar__title{margin:0;flex:1 1 auto;min-width:12.5rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--tk-font-size-headers-l, 2rem);font-weight:var(--tk-font-weight-600, 600);color:var(--tk-color-text-default, #191a1b)}.tk-topbar__actions{display:flex;align-items:center;gap:var(--tk-spacing-gap-xs, .25rem);margin-left:auto}@media(max-width:768px){.tk-topbar__header{flex-wrap:wrap}.tk-topbar__actions{width:100%;margin-left:0}}.tk-topbar__meta{display:flex;align-items:center;gap:var(--tk-spacing-gap-m, 1rem);width:100%}.tk-topbar__tags{display:flex;align-items:center;gap:var(--tk-spacing-gap-xs, .25rem)}.tk-topbar__description{margin:0;font-size:var(--tk-font-size-paragraph-s, .875rem);font-weight:var(--tk-font-weight-400, 400);color:var(--tk-color-text-default, #191a1b)}\n"], dependencies: [{ kind: "component", type: ButtonComponent, selector: "tk-button", inputs: ["label", "disabled", "type", "severity", "variant", "link", "icon", "iconPosition", "tooltipText", "full", "ariaLabel", "size"], outputs: ["clicked"] }, { kind: "component", type: TagComponent, selector: "tk-tag", inputs: ["value", "severity", "truncationLimit"] }, { kind: "component", type: BreadCrumpsComponent, selector: "tk-bread-crumps", inputs: ["items", "size", "onlyCurrent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
32
32
  }
33
33
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: TopbarComponent, decorators: [{
34
34
  type: Component,
35
- args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'tk-topbar', imports: [ButtonComponent, TagComponent, BreadCrumpsComponent], template: "<div class=\"tk-topbar\">\n <div class=\"tk-topbar__header\">\n @if (showBreadcrumbs()) {\n <tk-bread-crumps [items]=\"breadcrumbItems()\" [size]=\"breadcrumbSize()\"></tk-bread-crumps>\n } @else {\n <h2 class=\"tk-topbar__title\">{{ title() }}</h2>\n }\n\n @if (actions()?.length) {\n <div class=\"tk-topbar__actions\">\n @for (action of actions(); track $index) {\n @if (action.type === 'primary') {\n <tk-button\n [label]=\"action.label\"\n severity=\"primary\"\n [tooltipText]=\"action.tooltipText\"\n (clicked)=\"action.onClick()\">\n </tk-button>\n } @else {\n <tk-button\n [icon]=\"action.icon\"\n severity=\"secondary\"\n [tooltipText]=\"action.tooltipText\"\n (clicked)=\"action.onClick()\">\n </tk-button>\n }\n }\n </div>\n }\n </div>\n\n @if (tags()?.length || description()) {\n <div class=\"tk-topbar__meta\">\n @if (tags()?.length) {\n <div class=\"tk-topbar__tags\">\n @for (tag of tags(); track $index) {\n <tk-tag\n [value]=\"tag.label\"\n [severity]=\"tag.variant ?? 'secondary'\"></tk-tag>\n }\n </div>\n }\n @if (description()) {\n <p class=\"tk-topbar__description\">{{ description() }}</p>\n }\n </div>\n }\n</div>\n", styles: [".tk-topbar{display:flex;flex-direction:column;gap:var(--tk-spacing-gap-xs, .25rem);padding:var(--tk-spacing-padding-m, 1rem) var(--tk-spacing-padding-m, 1rem);background:var(--tk-color-background-soft, #f2f1f1);border-radius:var(--tk-borderRadius-s, .5rem)}.tk-topbar__header{display:flex;align-items:center;justify-content:space-between;flex-wrap:nowrap;gap:var(--tk-spacing-gap-m, 1rem);width:100%}.tk-topbar__title{margin:0;flex:1 1 auto;min-width:12.5rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--tk-font-size-headers-l, 2rem);font-weight:var(--tk-font-weight-600, 600);color:var(--tk-color-text-default, #191a1b)}.tk-topbar__actions{display:flex;align-items:center;gap:var(--tk-spacing-gap-xs, .25rem);margin-left:auto}@media(max-width:768px){.tk-topbar__header{flex-wrap:wrap}.tk-topbar__actions{width:100%;margin-left:0}}.tk-topbar__meta{display:flex;align-items:center;gap:var(--tk-spacing-gap-m, 1rem);width:100%}.tk-topbar__tags{display:flex;align-items:center;gap:var(--tk-spacing-gap-xs, .25rem)}.tk-topbar__description{margin:0;font-size:var(--tk-font-size-paragraph-s, .875rem);font-weight:var(--tk-font-weight-400, 400);color:var(--tk-color-text-default, #191a1b)}\n"] }]
35
+ args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'tk-topbar', imports: [ButtonComponent, TagComponent, BreadCrumpsComponent], template: "<div class=\"tk-topbar\">\n <div class=\"tk-topbar__header\">\n @if (showBreadcrumbs()) {\n <tk-bread-crumps [items]=\"breadcrumbItems()\" [size]=\"breadcrumbSize()\"></tk-bread-crumps>\n } @else {\n <h2 class=\"tk-topbar__title\">{{ title() }}</h2>\n }\n\n @if (actions()?.length) {\n <div class=\"tk-topbar__actions\">\n @for (action of actions(); track $index) {\n @if (action.type === 'primary') {\n <tk-button\n [label]=\"action.label\"\n severity=\"primary\"\n [tooltipText]=\"action.tooltipText\"\n (clicked)=\"action.onClick()\">\n </tk-button>\n } @else {\n <tk-button\n [icon]=\"action.icon\"\n severity=\"secondary\"\n [tooltipText]=\"action.tooltipText\"\n (clicked)=\"action.onClick()\">\n </tk-button>\n }\n }\n </div>\n }\n </div>\n\n @if (tags()?.length || description()) {\n <div class=\"tk-topbar__meta\">\n @if (tags()?.length) {\n <div class=\"tk-topbar__tags\">\n @for (tag of tags(); track $index) {\n <tk-tag\n [value]=\"tag.label\"\n [severity]=\"tag.variant ?? 'secondary'\"></tk-tag>\n }\n </div>\n }\n @if (description()) {\n <p class=\"tk-topbar__description\">{{ description() }}</p>\n }\n </div>\n }\n</div>\n", styles: [".tk-topbar{display:flex;flex-direction:column;gap:var(--tk-spacing-gap-xs, .25rem);padding:var(--tk-spacing-padding-m, 1rem) var(--tk-spacing-padding-m, 1rem);background:var(--tk-color-background-soft, #f2f1f1);border-radius:var(--tk-borderRadius-theme-s, var(--tk-borderRadius-s, .5rem))}.tk-topbar__header{display:flex;align-items:center;justify-content:space-between;flex-wrap:nowrap;gap:var(--tk-spacing-gap-m, 1rem);width:100%}.tk-topbar__title{margin:0;flex:1 1 auto;min-width:12.5rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--tk-font-size-headers-l, 2rem);font-weight:var(--tk-font-weight-600, 600);color:var(--tk-color-text-default, #191a1b)}.tk-topbar__actions{display:flex;align-items:center;gap:var(--tk-spacing-gap-xs, .25rem);margin-left:auto}@media(max-width:768px){.tk-topbar__header{flex-wrap:wrap}.tk-topbar__actions{width:100%;margin-left:0}}.tk-topbar__meta{display:flex;align-items:center;gap:var(--tk-spacing-gap-m, 1rem);width:100%}.tk-topbar__tags{display:flex;align-items:center;gap:var(--tk-spacing-gap-xs, .25rem)}.tk-topbar__description{margin:0;font-size:var(--tk-font-size-paragraph-s, .875rem);font-weight:var(--tk-font-weight-400, 400);color:var(--tk-color-text-default, #191a1b)}\n"] }]
36
36
  }], propDecorators: { title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: true }] }], actions: [{ type: i0.Input, args: [{ isSignal: true, alias: "actions", required: false }] }], showBreadcrumbs: [{ type: i0.Input, args: [{ isSignal: true, alias: "showBreadcrumbs", required: false }] }], breadcrumbItems: [{ type: i0.Input, args: [{ isSignal: true, alias: "breadcrumbItems", required: false }] }], breadcrumbSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "breadcrumbSize", required: false }] }], tags: [{ type: i0.Input, args: [{ isSignal: true, alias: "tags", required: false }] }], description: [{ type: i0.Input, args: [{ isSignal: true, alias: "description", required: false }] }] } });
37
37
 
38
38
  /**