@tekus/design-system 5.41.0 → 5.42.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/tekus-design-system-components-carousel.mjs +17 -3
- package/fesm2022/tekus-design-system-components-carousel.mjs.map +1 -1
- package/fesm2022/tekus-design-system-components-checkbox.mjs +2 -2
- package/fesm2022/tekus-design-system-components-checkbox.mjs.map +1 -1
- package/fesm2022/tekus-design-system-components-color-picker.mjs +119 -71
- package/fesm2022/tekus-design-system-components-color-picker.mjs.map +1 -1
- package/fesm2022/tekus-design-system-components-column-picker.mjs +210 -0
- package/fesm2022/tekus-design-system-components-column-picker.mjs.map +1 -0
- package/fesm2022/tekus-design-system-components-dropdown.mjs +1 -1
- package/fesm2022/tekus-design-system-components-dropdown.mjs.map +1 -1
- package/fesm2022/tekus-design-system-components-icon.mjs +10 -0
- package/fesm2022/tekus-design-system-components-icon.mjs.map +1 -1
- package/fesm2022/tekus-design-system-components-link-group.mjs +74 -0
- package/fesm2022/tekus-design-system-components-link-group.mjs.map +1 -0
- package/fesm2022/tekus-design-system-components-panel.mjs +1 -1
- package/fesm2022/tekus-design-system-components-panel.mjs.map +1 -1
- package/fesm2022/tekus-design-system-components-skeleton.mjs +79 -0
- package/fesm2022/tekus-design-system-components-skeleton.mjs.map +1 -0
- package/fesm2022/tekus-design-system-components-table.mjs +234 -11
- package/fesm2022/tekus-design-system-components-table.mjs.map +1 -1
- package/fesm2022/tekus-design-system-components-tabs.mjs +1 -1
- package/fesm2022/tekus-design-system-components-tabs.mjs.map +1 -1
- package/fesm2022/tekus-design-system-components-toolbar.mjs +33 -3
- package/fesm2022/tekus-design-system-components-toolbar.mjs.map +1 -1
- package/fesm2022/tekus-design-system-components-tooltip.mjs +16 -3
- package/fesm2022/tekus-design-system-components-tooltip.mjs.map +1 -1
- package/package.json +13 -1
- package/types/tekus-design-system-components-carousel.d.ts +8 -1
- package/types/tekus-design-system-components-color-picker.d.ts +41 -7
- package/types/tekus-design-system-components-column-picker.d.ts +116 -0
- package/types/tekus-design-system-components-link-group.d.ts +119 -0
- package/types/tekus-design-system-components-skeleton.d.ts +68 -0
- package/types/tekus-design-system-components-table.d.ts +186 -10
- package/types/tekus-design-system-components-toolbar.d.ts +37 -2
- package/types/tekus-design-system-components-tooltip.d.ts +12 -1
|
@@ -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 { ColumnPickerComponent } from '@tekus/design-system/components/column-picker';\nimport { TkToolbarFilterConfig, TkToolbarAction, TkToolbarColumnConfig } 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 ColumnPickerComponent,\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 * Optional. Columns listed in the embedded `tk-column-picker`.\n * The picker button is only shown when this list is not empty.\n * @default []\n */\n readonly columns = input<TkToolbarColumnConfig[]>([]);\n\n /**\n * Two-way bindable list of hidden column keys, forwarded to the embedded\n * `tk-column-picker`. Bind the same list to `tk-table`'s `[hiddenColumns]`.\n * Its initial value preloads a saved selection; locked keys are removed from it.\n * @default []\n */\n readonly hiddenColumns = model<string[]>([]);\n\n /**\n * Title/tooltip for the column visibility picker.\n * @default 'Columnas'\n */\n readonly columnsLabel = input<string>('Columnas');\n\n /**\n * Label for the button that shows every column again.\n * @default 'Restablecer'\n */\n readonly resetColumnsLabel = input<string>('Restablecer');\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 /**\n * Emits the hidden column keys when the user applies the column picker,\n * so the consumer can store the selection and preload it next time.\n */\n readonly appliedColumns = output<string[]>();\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 <tk-column-picker\n [columns]=\"columns()\"\n [(hiddenColumns)]=\"hiddenColumns\"\n [label]=\"columnsLabel()\"\n [resetLabel]=\"resetColumnsLabel()\"\n [applyLabel]=\"applyLabel()\"\n (appliedColumns)=\"appliedColumns.emit($event)\">\n </tk-column-picker>\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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"}
|
|
@@ -20,14 +20,27 @@ class TooltipComponent {
|
|
|
20
20
|
* @default 'top'
|
|
21
21
|
*/
|
|
22
22
|
this.position = input('top', ...(ngDevMode ? [{ debugName: "position" }] : /* istanbul ignore next */ []));
|
|
23
|
+
/**
|
|
24
|
+
* @property {number | null} lineClamp
|
|
25
|
+
* @description
|
|
26
|
+
* Optional. Truncates the projected content to this number of lines with an
|
|
27
|
+
* ellipsis (long words without spaces break too) and only shows the tooltip
|
|
28
|
+
* when the content is actually truncated. Use it with `content` set to the
|
|
29
|
+
* full text. Without it the content is not truncated and the tooltip always shows.
|
|
30
|
+
*
|
|
31
|
+
* @default null
|
|
32
|
+
*/
|
|
33
|
+
this.lineClamp = input(null, ...(ngDevMode ? [{ debugName: "lineClamp" }] : /* istanbul ignore next */ []));
|
|
23
34
|
}
|
|
24
35
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: TooltipComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.17", type: TooltipComponent, isStandalone: true, selector: "tk-tooltip", inputs: { content: { classPropertyName: "content", publicName: "content", isSignal: true, isRequired: true, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<span
|
|
36
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.17", type: TooltipComponent, isStandalone: true, selector: "tk-tooltip", inputs: { content: { classPropertyName: "content", publicName: "content", isSignal: true, isRequired: true, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, lineClamp: { classPropertyName: "lineClamp", publicName: "lineClamp", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.tk-tooltip--clamp": "!!lineClamp()" } }, ngImport: i0, template: "<span\n [pTooltip]=\"content()\"\n [tooltipPosition]=\"position()\"\n [showOnEllipsis]=\"!!lineClamp()\"\n [class.tk-tooltip-wrapper--clamp]=\"!!lineClamp()\"\n [style.--tk-tooltip-line-clamp]=\"lineClamp()\"\n class=\"tk-tooltip-wrapper\">\n <ng-content></ng-content>\n</span>\n", styles: [":host{display:inline-block}.tk-tooltip-wrapper{display:inline-block}:host(.tk-tooltip--clamp){display:block;min-width:0}.tk-tooltip-wrapper--clamp{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:var(--tk-tooltip-line-clamp);line-clamp:var(--tk-tooltip-line-clamp);overflow:hidden;overflow-wrap:anywhere}\n"], dependencies: [{ kind: "directive", type: Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "showOnEllipsis", "pTooltip", "tooltipDisabled", "tooltipOptions", "appendTo", "ptTooltip", "pTooltipPT", "pTooltipUnstyled"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
26
37
|
}
|
|
27
38
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: TooltipComponent, decorators: [{
|
|
28
39
|
type: Component,
|
|
29
|
-
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'tk-tooltip', imports: [Tooltip],
|
|
30
|
-
|
|
40
|
+
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'tk-tooltip', imports: [Tooltip], host: {
|
|
41
|
+
'[class.tk-tooltip--clamp]': '!!lineClamp()',
|
|
42
|
+
}, template: "<span\n [pTooltip]=\"content()\"\n [tooltipPosition]=\"position()\"\n [showOnEllipsis]=\"!!lineClamp()\"\n [class.tk-tooltip-wrapper--clamp]=\"!!lineClamp()\"\n [style.--tk-tooltip-line-clamp]=\"lineClamp()\"\n class=\"tk-tooltip-wrapper\">\n <ng-content></ng-content>\n</span>\n", styles: [":host{display:inline-block}.tk-tooltip-wrapper{display:inline-block}:host(.tk-tooltip--clamp){display:block;min-width:0}.tk-tooltip-wrapper--clamp{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:var(--tk-tooltip-line-clamp);line-clamp:var(--tk-tooltip-line-clamp);overflow:hidden;overflow-wrap:anywhere}\n"] }]
|
|
43
|
+
}], propDecorators: { content: [{ type: i0.Input, args: [{ isSignal: true, alias: "content", required: true }] }], position: [{ type: i0.Input, args: [{ isSignal: true, alias: "position", required: false }] }], lineClamp: [{ type: i0.Input, args: [{ isSignal: true, alias: "lineClamp", required: false }] }] } });
|
|
31
44
|
|
|
32
45
|
/**
|
|
33
46
|
* Generated bundle index. Do not edit.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tekus-design-system-components-tooltip.mjs","sources":["../../../projects/design-system/components/tooltip/src/tooltip.component.ts","../../../projects/design-system/components/tooltip/src/tooltip.component.html","../../../projects/design-system/components/tooltip/tekus-design-system-components-tooltip.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { Tooltip } from 'primeng/tooltip';\n\n/**\n * @component TooltipComponent\n * @description\n * Wrapper component that applies a PrimeNG tooltip to its projected content.\n * It allows defining the tooltip text and its position relative to the content.\n *\n * @usage\n * ```html\n * <tk-tooltip content=\"Tooltip text\" position=\"top\">\n * <button>Hover me</button>\n * </tk-tooltip>\n * ```\n */\nexport type TooltipPosition = 'top' | 'bottom' | 'left' | 'right';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'tk-tooltip',\n imports: [Tooltip],\n templateUrl: './tooltip.component.html',\n styleUrl: './tooltip.component.scss'\n})\nexport class TooltipComponent {\n /**\n * @property {string} content\n * @description\n * The text to be displayed in the tooltip.\n *\n * @required\n */\n content = input.required<string>();\n\n /**\n * @property {TooltipPosition} position\n * @description\n * Position of the tooltip relative to the element.\n *\n * @default 'top'\n */\n position = input<TooltipPosition>('top');\n}\n","<span
|
|
1
|
+
{"version":3,"file":"tekus-design-system-components-tooltip.mjs","sources":["../../../projects/design-system/components/tooltip/src/tooltip.component.ts","../../../projects/design-system/components/tooltip/src/tooltip.component.html","../../../projects/design-system/components/tooltip/tekus-design-system-components-tooltip.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { Tooltip } from 'primeng/tooltip';\n\n/**\n * @component TooltipComponent\n * @description\n * Wrapper component that applies a PrimeNG tooltip to its projected content.\n * It allows defining the tooltip text and its position relative to the content.\n *\n * @usage\n * ```html\n * <tk-tooltip content=\"Tooltip text\" position=\"top\">\n * <button>Hover me</button>\n * </tk-tooltip>\n * ```\n */\nexport type TooltipPosition = 'top' | 'bottom' | 'left' | 'right';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'tk-tooltip',\n imports: [Tooltip],\n templateUrl: './tooltip.component.html',\n styleUrl: './tooltip.component.scss',\n host: {\n '[class.tk-tooltip--clamp]': '!!lineClamp()',\n },\n})\nexport class TooltipComponent {\n /**\n * @property {string} content\n * @description\n * The text to be displayed in the tooltip.\n *\n * @required\n */\n content = input.required<string>();\n\n /**\n * @property {TooltipPosition} position\n * @description\n * Position of the tooltip relative to the element.\n *\n * @default 'top'\n */\n position = input<TooltipPosition>('top');\n\n /**\n * @property {number | null} lineClamp\n * @description\n * Optional. Truncates the projected content to this number of lines with an\n * ellipsis (long words without spaces break too) and only shows the tooltip\n * when the content is actually truncated. Use it with `content` set to the\n * full text. Without it the content is not truncated and the tooltip always shows.\n *\n * @default null\n */\n readonly lineClamp = input<number | null>(null);\n}\n","<span\n [pTooltip]=\"content()\"\n [tooltipPosition]=\"position()\"\n [showOnEllipsis]=\"!!lineClamp()\"\n [class.tk-tooltip-wrapper--clamp]=\"!!lineClamp()\"\n [style.--tk-tooltip-line-clamp]=\"lineClamp()\"\n class=\"tk-tooltip-wrapper\">\n <ng-content></ng-content>\n</span>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;MA4Ba,gBAAgB,CAAA;AAV7B,IAAA,WAAA,GAAA;AAWE;;;;;;AAMG;AACH,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,6EAAU;AAElC;;;;;;AAMG;AACH,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAkB,KAAK,+EAAC;AAExC;;;;;;;;;AASG;AACM,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAgB,IAAI,gFAAC;AAChD,IAAA;+GA9BY,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,yBAAA,EAAA,eAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5B7B,gSASA,EAAA,MAAA,EAAA,CAAA,sUAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDYY,OAAO,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,aAAA,EAAA,cAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,WAAA,EAAA,YAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAON,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAV5B,SAAS;sCACS,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,YAAY,WACb,CAAC,OAAO,CAAC,EAAA,IAAA,EAGZ;AACJ,wBAAA,2BAA2B,EAAE,eAAe;AAC7C,qBAAA,EAAA,QAAA,EAAA,gSAAA,EAAA,MAAA,EAAA,CAAA,sUAAA,CAAA,EAAA;;;AE1BH;;AAEG;;;;"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tekus/design-system",
|
|
3
3
|
"description": "Tekus design system library",
|
|
4
|
-
"version": "5.
|
|
4
|
+
"version": "5.42.0",
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"peerDependencies": {
|
|
7
7
|
"@angular/core": "^21.0.0",
|
|
@@ -88,6 +88,10 @@
|
|
|
88
88
|
"types": "./types/tekus-design-system-components-color-picker.d.ts",
|
|
89
89
|
"default": "./fesm2022/tekus-design-system-components-color-picker.mjs"
|
|
90
90
|
},
|
|
91
|
+
"./components/column-picker": {
|
|
92
|
+
"types": "./types/tekus-design-system-components-column-picker.d.ts",
|
|
93
|
+
"default": "./fesm2022/tekus-design-system-components-column-picker.mjs"
|
|
94
|
+
},
|
|
91
95
|
"./components/counter": {
|
|
92
96
|
"types": "./types/tekus-design-system-components-counter.d.ts",
|
|
93
97
|
"default": "./fesm2022/tekus-design-system-components-counter.mjs"
|
|
@@ -132,6 +136,10 @@
|
|
|
132
136
|
"types": "./types/tekus-design-system-components-input-text.d.ts",
|
|
133
137
|
"default": "./fesm2022/tekus-design-system-components-input-text.mjs"
|
|
134
138
|
},
|
|
139
|
+
"./components/link-group": {
|
|
140
|
+
"types": "./types/tekus-design-system-components-link-group.d.ts",
|
|
141
|
+
"default": "./fesm2022/tekus-design-system-components-link-group.mjs"
|
|
142
|
+
},
|
|
135
143
|
"./components/menu": {
|
|
136
144
|
"types": "./types/tekus-design-system-components-menu.d.ts",
|
|
137
145
|
"default": "./fesm2022/tekus-design-system-components-menu.mjs"
|
|
@@ -184,6 +192,10 @@
|
|
|
184
192
|
"types": "./types/tekus-design-system-components-sidebar-layout.d.ts",
|
|
185
193
|
"default": "./fesm2022/tekus-design-system-components-sidebar-layout.mjs"
|
|
186
194
|
},
|
|
195
|
+
"./components/skeleton": {
|
|
196
|
+
"types": "./types/tekus-design-system-components-skeleton.d.ts",
|
|
197
|
+
"default": "./fesm2022/tekus-design-system-components-skeleton.mjs"
|
|
198
|
+
},
|
|
187
199
|
"./components/stat": {
|
|
188
200
|
"types": "./types/tekus-design-system-components-stat.d.ts",
|
|
189
201
|
"default": "./fesm2022/tekus-design-system-components-stat.mjs"
|
|
@@ -184,7 +184,14 @@ declare class CarouselComponent {
|
|
|
184
184
|
primeCarousel: _angular_core.Signal<Carousel | undefined>;
|
|
185
185
|
/** Zero-based index of the active slide within the visible slides. */
|
|
186
186
|
currentIndex: _angular_core.WritableSignal<number>;
|
|
187
|
-
/**
|
|
187
|
+
/**
|
|
188
|
+
* Ids of the slides whose image failed to load. Pruned whenever `slides`
|
|
189
|
+
* changes: ids no longer present are dropped, and ids that are still
|
|
190
|
+
* present keep their failure status (no pointless reload of a slide that
|
|
191
|
+
* hasn't changed and is already known to fail). An id that is new to the
|
|
192
|
+
* list — e.g. a replaced media assignment — was never in this set to
|
|
193
|
+
* begin with, so it always gets a normal, unblocked first attempt.
|
|
194
|
+
*/
|
|
188
195
|
failedSlideIds: _angular_core.WritableSignal<ReadonlySet<string | number>>;
|
|
189
196
|
/** Whether the autoplay preset is active. */
|
|
190
197
|
isAutoplay: _angular_core.Signal<boolean>;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
|
+
import { AfterContentInit } from '@angular/core';
|
|
2
3
|
import { ControlValueAccessor, NgControl, FormControl } from '@angular/forms';
|
|
3
4
|
import { Popover } from 'primeng/popover';
|
|
4
5
|
import { ContrastResult } from '@tekus/design-system/utils/wcag-contrast';
|
|
@@ -57,8 +58,6 @@ interface ColorPickerTexts {
|
|
|
57
58
|
contrastSampleText?: string;
|
|
58
59
|
contrastSampleLabel?: string;
|
|
59
60
|
contrastLowLabel?: string;
|
|
60
|
-
invalidHexError?: string;
|
|
61
|
-
requiredError?: string;
|
|
62
61
|
eyedropperLabel?: string;
|
|
63
62
|
addCustomColorLabel?: string;
|
|
64
63
|
removeCustomColorLabel?: string;
|
|
@@ -67,6 +66,11 @@ interface ColorPickerTexts {
|
|
|
67
66
|
hueLabel?: string;
|
|
68
67
|
dialogLabel?: string;
|
|
69
68
|
}
|
|
69
|
+
interface EyeDropperLike {
|
|
70
|
+
open(): Promise<{
|
|
71
|
+
sRGBHex: string;
|
|
72
|
+
}>;
|
|
73
|
+
}
|
|
70
74
|
|
|
71
75
|
/**
|
|
72
76
|
* @component ColorPickerComponent
|
|
@@ -89,7 +93,7 @@ interface ColorPickerTexts {
|
|
|
89
93
|
* </tk-color-picker>
|
|
90
94
|
* ```
|
|
91
95
|
*/
|
|
92
|
-
declare class ColorPickerComponent implements ControlValueAccessor {
|
|
96
|
+
declare class ColorPickerComponent implements ControlValueAccessor, AfterContentInit {
|
|
93
97
|
readonly ngControl: NgControl | null;
|
|
94
98
|
private readonly destroyRef;
|
|
95
99
|
private readonly el;
|
|
@@ -177,7 +181,8 @@ declare class ColorPickerComponent implements ControlValueAccessor {
|
|
|
177
181
|
/**
|
|
178
182
|
* @property {string} errorMessage
|
|
179
183
|
* @description
|
|
180
|
-
*
|
|
184
|
+
* Message to display when the field is invalid (required and empty, or an
|
|
185
|
+
* invalid hex). The component has no built-in error texts.
|
|
181
186
|
* @default `''`
|
|
182
187
|
*/
|
|
183
188
|
errorMessage: _angular_core.InputSignal<string>;
|
|
@@ -284,7 +289,22 @@ declare class ColorPickerComponent implements ControlValueAccessor {
|
|
|
284
289
|
private readonly cvaDisabled;
|
|
285
290
|
protected readonly isDisabled: _angular_core.Signal<boolean>;
|
|
286
291
|
protected readonly resolvedSections: _angular_core.Signal<Required<ColorPickerSections>>;
|
|
287
|
-
protected readonly
|
|
292
|
+
protected readonly resolvedTexts: _angular_core.Signal<{
|
|
293
|
+
hexLabel: string;
|
|
294
|
+
contrastSampleText: string;
|
|
295
|
+
swatchesLabel?: string;
|
|
296
|
+
customColorsLabel?: string;
|
|
297
|
+
contrastLabel?: string;
|
|
298
|
+
contrastSampleLabel?: string;
|
|
299
|
+
contrastLowLabel?: string;
|
|
300
|
+
eyedropperLabel?: string;
|
|
301
|
+
addCustomColorLabel?: string;
|
|
302
|
+
removeCustomColorLabel?: string;
|
|
303
|
+
openPickerLabel?: string;
|
|
304
|
+
spectrumLabel?: string;
|
|
305
|
+
hueLabel?: string;
|
|
306
|
+
dialogLabel?: string;
|
|
307
|
+
}>;
|
|
288
308
|
/** Valid draft hex to paint swatches, or null → neutral fallback via CSS. */
|
|
289
309
|
/**
|
|
290
310
|
* Always reflects `draftHex()`, not `value()` — independent of `emitMode`
|
|
@@ -306,6 +326,7 @@ declare class ColorPickerComponent implements ControlValueAccessor {
|
|
|
306
326
|
protected readonly showEyedropper: _angular_core.Signal<boolean>;
|
|
307
327
|
protected readonly canAddCustom: _angular_core.Signal<boolean>;
|
|
308
328
|
protected readonly errorText: _angular_core.Signal<string>;
|
|
329
|
+
protected readonly isInvalid: _angular_core.Signal<boolean>;
|
|
309
330
|
protected readonly fieldId: string;
|
|
310
331
|
protected readonly panelFieldId: string;
|
|
311
332
|
protected readonly errorId: string;
|
|
@@ -315,9 +336,16 @@ declare class ColorPickerComponent implements ControlValueAccessor {
|
|
|
315
336
|
private suppressNextHideCommit;
|
|
316
337
|
private readonly customColorWritePtr;
|
|
317
338
|
private readonly hexInput$;
|
|
339
|
+
private readonly controlState;
|
|
318
340
|
onChange: (value: string) => void;
|
|
319
341
|
onTouched: () => void;
|
|
320
342
|
constructor();
|
|
343
|
+
/**
|
|
344
|
+
* Subscribes to the host form control's events. Runs here and not in
|
|
345
|
+
* ngOnInit: with `formControlName`, the directive only sets up its control
|
|
346
|
+
* in its own ngOnChanges, which runs after this component's ngOnInit.
|
|
347
|
+
*/
|
|
348
|
+
ngAfterContentInit(): void;
|
|
321
349
|
/**
|
|
322
350
|
* @method writeValue
|
|
323
351
|
* @description Hydrates the picker from the form model without emitting.
|
|
@@ -386,8 +414,14 @@ declare class ColorPickerComponent implements ControlValueAccessor {
|
|
|
386
414
|
/** Strips non-hex chars from pasted text before it reaches the input model. */
|
|
387
415
|
protected onHexPaste(event: ClipboardEvent): void;
|
|
388
416
|
protected onHexBlur(): void;
|
|
417
|
+
/**
|
|
418
|
+
* Synchronously applies what's currently in the HEX field (normalized) and
|
|
419
|
+
* cancels the pending debounced emission, so it can't re-validate the same
|
|
420
|
+
* text later as "still typing" and clear the error this flush just set.
|
|
421
|
+
* Never commits: callers own the emit via commitDraft().
|
|
422
|
+
*/
|
|
423
|
+
private flushHexInput;
|
|
389
424
|
private processHexInput;
|
|
390
|
-
private parseHex;
|
|
391
425
|
private applyValidHex;
|
|
392
426
|
private applyInvalidHex;
|
|
393
427
|
private setValid;
|
|
@@ -416,4 +450,4 @@ declare class ColorPickerComponent implements ControlValueAccessor {
|
|
|
416
450
|
}
|
|
417
451
|
|
|
418
452
|
export { ColorPickerComponent };
|
|
419
|
-
export type { ColorPickerCloseReason, ColorPickerEmitMode, ColorPickerSections, ColorPickerTexts, ColorPickerVariant };
|
|
453
|
+
export type { ColorPickerCloseReason, ColorPickerEmitMode, ColorPickerSections, ColorPickerTexts, ColorPickerVariant, EyeDropperLike };
|