@shival99/z-vnetcity 1.4.13 → 1.4.17
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/shival99-z-vnetcity-components-z-calendar.mjs +1 -0
- package/fesm2022/shival99-z-vnetcity-components-z-calendar.mjs.map +1 -1
- package/fesm2022/shival99-z-vnetcity-components-z-editor.mjs +1 -0
- package/fesm2022/shival99-z-vnetcity-components-z-editor.mjs.map +1 -1
- package/fesm2022/shival99-z-vnetcity-components-z-input.mjs +1 -0
- package/fesm2022/shival99-z-vnetcity-components-z-input.mjs.map +1 -1
- package/fesm2022/shival99-z-vnetcity-components-z-select.mjs +1 -0
- package/fesm2022/shival99-z-vnetcity-components-z-select.mjs.map +1 -1
- package/fesm2022/shival99-z-vnetcity-components-z-table.mjs +4 -3
- package/fesm2022/shival99-z-vnetcity-components-z-table.mjs.map +1 -1
- package/fesm2022/shival99-z-vnetcity-components-z-upload.mjs +1 -0
- package/fesm2022/shival99-z-vnetcity-components-z-upload.mjs.map +1 -1
- package/fesm2022/shival99-z-vnetcity-services.mjs +1 -0
- package/fesm2022/shival99-z-vnetcity-services.mjs.map +1 -1
- package/package.json +1 -1
- package/types/shival99-z-vnetcity-components-z-calendar.d.ts +6 -6
- package/types/shival99-z-vnetcity-components-z-editor.d.ts +3 -3
- package/types/shival99-z-vnetcity-components-z-input.d.ts +4 -4
- package/types/shival99-z-vnetcity-components-z-select.d.ts +3 -3
- package/types/shival99-z-vnetcity-components-z-table.d.ts +1 -1
- package/types/shival99-z-vnetcity-components-z-upload.d.ts +5 -5
- package/types/shival99-z-vnetcity-services.d.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shival99-z-vnetcity-components-z-table.mjs","sources":["../../../../libs/core-ui/components/z-table/z-table.types.ts","../../../../libs/core-ui/components/z-table/components/z-table-actions.component.ts","../../../../libs/core-ui/components/z-table/components/z-table-edit-cell.component.ts","../../../../libs/core-ui/components/z-table/components/z-table-filter.component.ts","../../../../libs/core-ui/components/z-table/z-table.util.ts","../../../../libs/core-ui/components/z-table/components/z-table-icon-text.component.ts","../../../../libs/core-ui/components/z-table/directives/z-table-row-hover.directive.ts","../../../../libs/core-ui/components/z-table/directives/z-table-resizer.directive.ts","../../../../libs/core-ui/components/z-table/pipes/z-table-cell-bottom.pipe.ts","../../../../libs/core-ui/components/z-table/pipes/z-table-cell-clickable.pipe.ts","../../../../libs/core-ui/components/z-table/pipes/z-table-cell-config.pipe.ts","../../../../libs/core-ui/components/z-table/pipes/z-table-cell-edit.pipe.ts","../../../../libs/core-ui/components/z-table/pipes/z-table-cell-offset.pipe.ts","../../../../libs/core-ui/components/z-table/pipes/z-table-cell-pin.pipe.ts","../../../../libs/core-ui/components/z-table/pipes/z-table-cell-render.pipe.ts","../../../../libs/core-ui/components/z-table/pipes/z-table-column-config.pipe.ts","../../../../libs/core-ui/components/z-table/pipes/z-table-column-header.pipe.ts","../../../../libs/core-ui/components/z-table/pipes/z-table-column-parents.pipe.ts","../../../../libs/core-ui/components/z-table/pipes/z-table-footer-content.pipe.ts","../../../../libs/core-ui/components/z-table/pipes/z-table-has-icon.pipe.ts","../../../../libs/core-ui/components/z-table/pipes/z-table-pinning-styles.pipe.ts","../../../../libs/core-ui/components/z-table/pipes/z-table-row.pipe.ts","../../../../libs/core-ui/components/z-table/pipes/z-table-span.pipe.ts","../../../../libs/core-ui/components/z-table/pipes/z-table-is-template-ref.pipe.ts","../../../../libs/core-ui/components/z-table/z-table.component.ts","../../../../libs/core-ui/components/z-table/z-table.component.html","../../../../libs/core-ui/components/z-table/shival99-z-vnetcity-components-z-table.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable @typescript-eslint/naming-convention */\n/* eslint-disable unused-imports/no-unused-vars */\nimport { type TemplateRef, type Type } from '@angular/core';\nimport { type ZButtonVariants } from '@shival99/z-vnetcity/components/z-button';\nimport { type ZIconVariants, type ZIcon } from '@shival99/z-vnetcity/components/z-icon';\nimport { type ZInputSize } from '@shival99/z-vnetcity/components/z-input';\nimport { type ZSelectOption } from '@shival99/z-vnetcity/components/z-select';\nimport { type ZTooltipConfig, type ZTooltipContent } from '@shival99/z-vnetcity/components/z-tooltip';\nimport {\n type CellContext,\n type ColumnFiltersState,\n type ColumnPinningState,\n type ExpandedState,\n type FlexRenderComponent,\n type HeaderContext,\n type PaginationState,\n type Row,\n type RowData,\n type RowPinningState,\n type RowSelectionState,\n type SortingState,\n type VisibilityState,\n} from '@tanstack/angular-table';\n\nexport const Z_DEFAULT_ROW_HEIGHT = 40;\nexport const Z_DEFAULT_VIRTUAL_OVERSCAN = 5;\nexport const Z_DEFAULT_GROUP_SIZE = 1;\nexport const Z_DEFAULT_COLUMN_MIN_SIZE = 100;\nexport const Z_DEFAULT_DEBOUNCE_TIME = 150;\nexport const Z_SKELETON_ROW_HEIGHT = 60;\nexport const Z_TABLE_DEFAULT_ACTION_BUTTON_WIDTH = 32;\nexport const Z_TABLE_DEFAULT_MAX_VISIBLE_ACTIONS = 3;\nexport const Z_TABLE_DEFAULT_DROPDOWN_BUTTON_SIZE = 'sm' as const;\n\nexport type ZTableCellPinProperty = 'isLastLeftPinned' | 'isFirstRightPinned' | 'isLastRightPinned';\nexport type ZTableCellType = 'header' | 'footer';\nexport type ZTableCellRenderType = 'header' | 'footer' | 'body';\n\nexport interface ZPinningStyles {\n left?: string;\n right?: string;\n position: 'sticky' | 'relative';\n zIndex: number;\n [key: string]: string | number | undefined;\n}\n\nexport interface ZVirtualGroup {\n startIndex: number;\n endIndex: number;\n rowCount: number;\n height: number | null;\n}\n\nexport interface ZTableIconPart {\n type: 'text' | 'icon';\n value: string;\n size?: number;\n class?: string;\n strokeWidth?: number;\n}\n\nexport interface ZTableExtendedColumnDef {\n filterType?: ZTableFilterType;\n filterOptions?: ZSelectOption[];\n}\n\nexport type ZTableAlign = 'left' | 'center' | 'right';\nexport type ZTableBorderType = 'none' | 'full' | 'horizontal' | 'vertical';\nexport type ZTableCellContent<T> =\n | string\n | number\n | TemplateRef<{ $implicit: CellContext<T, unknown> }>\n | Type<unknown>\n | FlexRenderComponent<unknown>\n | ((info: CellContext<T, unknown>) => string | number | TemplateRef<unknown> | FlexRenderComponent<unknown>);\n\nexport type ZTableHeaderContent<T> =\n | string\n | TemplateRef<unknown>\n | Type<unknown>\n | (() => string)\n | ((info: HeaderContext<T, unknown>) => string);\n\nexport type ZTableColumn<T = unknown> = ZTableColumnConfig<T>;\n\nexport type ZTableFilterType = 'text' | 'number' | 'select' | 'multi-select' | 'date' | 'date-range' | 'range' | 'tags';\nexport type ZTableEditType = 'text' | 'number' | 'select' | 'date' | 'checkbox' | 'textarea';\nexport type ZTableMode = 'local' | 'server';\n\nexport interface ZTableSortConfig<T> {\n enabled?: boolean;\n mode?: ZTableMode;\n sortKey?: string;\n sortFn?: (rowA: Row<T>, rowB: Row<T>, columnId: string) => number;\n}\n\nexport type ZTableBuiltInFilterFn =\n | 'equalsString'\n | 'includesString'\n | 'includesStringSensitive'\n | 'arrIncludes'\n | 'arrIncludesAll'\n | 'arrIncludesSome'\n | 'equals'\n | 'weakEquals'\n | 'inNumberRange';\n\nexport type ZTableCustomFilterFn<T> = (\n row: Row<T>,\n columnId: string,\n filterValue: unknown,\n addMeta: (meta: unknown) => void\n) => boolean;\n\nexport interface ZTableFilterConfig<T = unknown> {\n enabled?: boolean;\n mode?: ZTableMode;\n type?: ZTableFilterType;\n options?: ZSelectOption[];\n allowClear?: boolean;\n placeholder?: string;\n filterFn?: ZTableBuiltInFilterFn | ZTableCustomFilterFn<T>;\n}\n\nexport type ZTableEditSize = 'sm' | 'default' | 'lg';\n\nexport interface ZTableEditConfig<T = unknown> {\n enabled?: boolean;\n type?: ZTableEditType;\n options?: ZSelectOption[];\n placeholder?: string;\n min?: number;\n max?: number;\n step?: number;\n rows?: number;\n disabled?: boolean | ((row: T) => boolean);\n onChange?: (value: unknown, row: T, columnId: string) => void;\n /** Size of the edit input. Default: 'sm' */\n size?: ZTableEditSize;\n}\n\nexport interface ZTableSavedColumnInfo {\n id: string;\n accessorKey?: string;\n}\n\nexport interface ZTableSavedConfig {\n columnOrder: string[];\n columnSizing: Record<string, number>;\n columnPinning: { left?: string[]; right?: string[] };\n columnVisibility: Record<string, boolean>;\n columnInfo: ZTableSavedColumnInfo[];\n showHeaderFooterShadow: boolean;\n showHorizontalBorder: boolean;\n showVerticalBorder: boolean;\n}\n\nexport interface ZTableControl<T> {\n updateConfig: (config: Partial<ZTableConfig<T>>) => void;\n toggleSettings: () => void;\n resetFilters: () => void;\n resetSorting: () => void;\n addItem: (item: T) => void;\n updateItem: (id: string | number, updates: Partial<T>, fieldKey?: keyof T) => void;\n deleteItem: (id: string | number, fieldKey?: keyof T) => void;\n getItems: () => T[];\n}\n\nexport interface ZTableHeaderColumnConfig<T> {\n content?: ZTableHeaderContent<T>;\n class?: string;\n style?: Record<string, string>;\n align?: ZTableAlign;\n rowSpan?: number;\n colSpan?: number;\n contentClass?: string | ((info: HeaderContext<T, unknown>) => string);\n contentStyle?: Record<string, string> | ((info: HeaderContext<T, unknown>) => Record<string, string>);\n tooltip?: string | ZTooltipConfig;\n}\n\nexport interface ZTableBodyColumnConfig<T> {\n content?: ZTableCellContent<T>;\n class?: string | ((info: CellContext<T, unknown>) => string);\n style?: Record<string, string> | ((info: CellContext<T, unknown>) => Record<string, string>);\n align?: ZTableAlign;\n rowSpan?: number | ((info: CellContext<T, unknown>) => number);\n colSpan?: number | ((info: CellContext<T, unknown>) => number);\n contentClass?: string | ((info: CellContext<T, unknown>) => string);\n contentStyle?: Record<string, string> | ((info: CellContext<T, unknown>) => Record<string, string>);\n tooltip?: string | ZTooltipConfig | ((info: CellContext<T, unknown>) => string | ZTooltipConfig);\n actions?: ZTableActionColumnConfig<T>;\n enabledClick?: boolean;\n edit?: ZTableEditConfig<T> | boolean;\n}\n\nexport interface ZTableFooterColumnConfig<T> {\n content?: ZTableHeaderContent<T>;\n class?: string;\n style?: Record<string, string>;\n align?: ZTableAlign;\n rowSpan?: number;\n colSpan?: number;\n contentClass?: string | ((info: HeaderContext<T, unknown>) => string);\n contentStyle?: Record<string, string> | ((info: HeaderContext<T, unknown>) => Record<string, string>);\n tooltip?: string | ZTooltipConfig;\n}\n\nexport interface ZTableColumnConfig<T> {\n id: string;\n visible?: boolean | (() => boolean);\n accessorKey?: keyof T & string;\n accessorFn?: (row: T) => unknown;\n header?: ZTableHeaderColumnConfig<T> | ZTableHeaderContent<T>;\n body?: ZTableBodyColumnConfig<T> | ZTableCellContent<T>;\n footer?: ZTableFooterColumnConfig<T> | ZTableHeaderContent<T>;\n size?: number;\n minSize?: number;\n maxSize?: number;\n sort?: ZTableSortConfig<T> | boolean;\n filter?: ZTableFilterConfig<T> | boolean;\n enableResizing?: boolean;\n enablePinning?: boolean;\n enableHiding?: boolean;\n enableOrdering?: boolean;\n pinned?: 'left' | 'right' | false;\n columns?: ZTableColumnConfig<T>[];\n}\n\nexport interface ZTablePaginationConfig {\n enabled?: boolean;\n pageSize?: number;\n pageIndex?: number;\n pageSizeOptions?: number[];\n showSizeChanger?: boolean;\n showQuickJumper?: boolean;\n showTotal?: boolean;\n totalLabel?: string;\n disabled?: boolean;\n}\n\nexport type ZTableEmitType = 'user' | 'auto';\n\nexport interface ZTablePageChangeEvent {\n pageIndex: number;\n pageSize: number;\n emitType: ZTableEmitType;\n}\n\nexport interface ZTableRowSelectEvent<T> {\n row: T;\n rowId: string;\n selected: boolean;\n selectedRows: T[];\n selectedRowIds: string[];\n}\n\nexport interface ZTableRowSelectAllEvent<T> {\n selected: boolean;\n selectedRows: T[];\n selectedRowIds: string[];\n}\n\nexport interface ZTableRowExpandEvent<T> {\n row: T;\n rowId: string;\n expanded: boolean;\n}\n\nexport interface ZTableCellClickEvent<T> {\n row: T;\n rowId: string;\n columnId: string;\n value: unknown;\n}\n\nexport interface ZTableCellEditEvent<T> {\n row: T;\n rowId: string;\n rowIndex: number;\n columnId: string;\n oldValue: unknown;\n newValue: unknown;\n}\n\nexport interface ZTableSortChangeEvent {\n sorting: SortingState;\n}\n\nexport interface ZTableFilterChangeEvent {\n filters: ColumnFiltersState;\n search: string;\n}\n\nexport interface ZTableSearchChangeEvent {\n search: string;\n filters: ColumnFiltersState;\n sorting: SortingState;\n pagination: PaginationState;\n}\n\nexport interface ZActionTooltipState {\n content: ZTooltipContent;\n alwaysShow: boolean;\n position?: string;\n arrow?: boolean;\n offset?: number;\n maxWidth?: string;\n}\n\nexport interface ZTableActionItem<T = unknown> {\n key: string;\n label?: string;\n icon?: ZIcon;\n iconSize?: ZIconVariants['zSize'];\n tooltip?: string | ZTooltipConfig;\n type?: ZButtonVariants['zType'];\n size?: ZButtonVariants['zSize'];\n class?: string;\n disabled?: boolean | ((row: T) => boolean);\n hidden?: boolean | ((row: T) => boolean);\n divide?: 'before' | 'after';\n}\n\nexport interface ZTableActionClickEvent<T = unknown> {\n key: string;\n row: T;\n rowId: string;\n action: ZTableActionItem<T>;\n}\n\nexport interface ZTableActionColumnConfig<T = unknown> {\n actions: ZTableActionItem<T>[];\n maxVisible?: number;\n}\n\nexport type ZTableChangeType =\n | 'page'\n | 'sort'\n | 'filter'\n | 'search'\n | 'select'\n | 'expand'\n | 'rowSelect'\n | 'rowSelectAll'\n | 'rowExpand'\n | 'cellClick'\n | 'cellEdit'\n | 'action';\n\nexport interface ZTableChangeEventBase {\n type: ZTableChangeType;\n}\n\nexport interface ZTablePageChange extends ZTableChangeEventBase {\n type: 'page';\n data: ZTablePageChangeEvent;\n}\n\nexport interface ZTableSortChange extends ZTableChangeEventBase {\n type: 'sort';\n data: ZTableSortChangeEvent;\n}\n\nexport interface ZTableFilterChange extends ZTableChangeEventBase {\n type: 'filter';\n data: ZTableFilterChangeEvent;\n}\n\nexport interface ZTableRowSelectChange<T> extends ZTableChangeEventBase {\n type: 'rowSelect';\n data: ZTableRowSelectEvent<T>;\n}\n\nexport interface ZTableRowSelectAllChange<T> extends ZTableChangeEventBase {\n type: 'rowSelectAll';\n data: ZTableRowSelectAllEvent<T>;\n}\n\nexport interface ZTableRowExpandChange<T> extends ZTableChangeEventBase {\n type: 'rowExpand';\n data: ZTableRowExpandEvent<T>;\n}\n\nexport interface ZTableCellClickChange<T> extends ZTableChangeEventBase {\n type: 'cellClick';\n data: ZTableCellClickEvent<T>;\n}\n\nexport interface ZTableSearchChange extends ZTableChangeEventBase {\n type: 'search';\n data: ZTableSearchChangeEvent;\n}\n\nexport interface ZTableSelectChange extends ZTableChangeEventBase {\n type: 'select';\n data: { selection: RowSelectionState };\n}\n\nexport interface ZTableExpandChange extends ZTableChangeEventBase {\n type: 'expand';\n data: { expanded: ExpandedState };\n}\n\nexport interface ZTableActionChange<T> extends ZTableChangeEventBase {\n type: 'action';\n data: ZTableActionClickEvent<T>;\n}\n\nexport interface ZTableCellEditChange<T> extends ZTableChangeEventBase {\n type: 'cellEdit';\n data: ZTableCellEditEvent<T>;\n}\n\nexport type ZTableChangeEvent<T> =\n | ZTablePageChange\n | ZTableSortChange\n | ZTableFilterChange\n | ZTableSearchChange\n | ZTableSelectChange\n | ZTableExpandChange\n | ZTableRowSelectChange<T>\n | ZTableRowSelectAllChange<T>\n | ZTableRowExpandChange<T>\n | ZTableCellClickChange<T>\n | ZTableCellEditChange<T>\n | ZTableActionChange<T>;\n\nexport interface ZTableInitialState {\n columnPinning?: ColumnPinningState;\n rowPinning?: RowPinningState;\n sorting?: SortingState;\n columnFilters?: ColumnFiltersState;\n globalFilter?: string;\n expanded?: ExpandedState;\n rowSelection?: RowSelectionState;\n columnVisibility?: VisibilityState;\n pagination?: PaginationState;\n}\n\nexport interface ZTableVirtualConfig {\n /** Enable virtual scrolling */\n enabled: boolean;\n /** Row height in pixels (default: 40). Used as estimate for dynamic sizing. */\n size?: number;\n /** Number of items to render outside visible area (default: 5) */\n overscan?: number;\n /** Number of rows per virtual group (default: 1) */\n groupSize?: number;\n /**\n * Enable dynamic row height measurement.\n * When true, each row's height is measured dynamically after render.\n * The virtualizer uses `height: auto` for all rows, allowing content\n * to determine the actual height, which is then captured via measureElement().\n * The `size` property is used as an initial estimate before measurement.\n */\n dynamicSize?: boolean;\n}\n\nexport interface ZTableSearchConfig {\n enabled?: boolean;\n placeholder?: string;\n debounceTime?: number;\n width?: string;\n size?: ZInputSize;\n}\n\nexport interface ZTableConfig<T> {\n mode?: ZTableMode;\n data: T[];\n totalCount?: number;\n columns: ZTableColumnConfig<T>[];\n getRowId?: (row: T, index: number, parent: T | undefined, data: T[]) => string;\n getSubRows?: (row: T, index: number, parent: T | undefined, data: T[]) => T[] | undefined;\n totalRows?: number;\n virtual?: ZTableVirtualConfig | boolean;\n showHorizontalBorder?: boolean;\n showVerticalBorder?: boolean;\n showHeaderShadow?: boolean;\n showFooterShadow?: boolean;\n enableSettings?: boolean;\n enableColumnResizing?: boolean;\n enableMultiSort?: boolean;\n search?: ZTableSearchConfig | boolean;\n enableRowPinning?: boolean;\n enableColumnPinning?: boolean;\n enableColumnOrdering?: boolean;\n enableColumnSorting?: boolean;\n pagination?: ZTablePaginationConfig;\n initialState?: ZTableInitialState;\n loading?: boolean;\n expandedRowTemplate?: TemplateRef<{ $implicit: Row<T> }>;\n emptyTemplate?: TemplateRef<void>;\n loadingTemplate?: TemplateRef<void>;\n getRowCanExpand?: (row: Row<T>) => boolean;\n maxHeight?: string;\n minHeight?: string;\n debounceTime?: number;\n useSkeleton?: boolean;\n}\n\nexport interface ZTableEditCellChangeEvent<T = unknown> {\n row: T;\n rowId: string;\n rowIndex: number;\n columnId: string;\n oldValue: unknown;\n newValue: unknown;\n}\n\ndeclare module '@tanstack/angular-table' {\n interface TableMeta<TData extends RowData> {\n updateData?: (rowIndex: number, columnId: string, value: unknown) => void;\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport { ZButtonComponent, ZButtonVariants } from '@shival99/z-vnetcity/components/z-button';\nimport { ZDropdownMenuComponent } from '@shival99/z-vnetcity/components/z-dropdown-menu';\nimport type { ZDropdownMenuItem } from '@shival99/z-vnetcity/components/z-dropdown-menu';\nimport { ZIconComponent } from '@shival99/z-vnetcity/components/z-icon';\nimport { ZTooltipDirective, ZTooltipConfig } from '@shival99/z-vnetcity/components/z-tooltip';\nimport {\n Z_TABLE_DEFAULT_DROPDOWN_BUTTON_SIZE,\n Z_TABLE_DEFAULT_MAX_VISIBLE_ACTIONS,\n ZActionTooltipState,\n ZTableActionClickEvent,\n ZTableActionColumnConfig,\n ZTableActionItem,\n} from '../z-table.types';\n\n@Component({\n selector: 'z-table-actions',\n imports: [ZButtonComponent, ZIconComponent, ZTooltipDirective, ZDropdownMenuComponent],\n standalone: true,\n template: `\n <div class=\"z-table-actions flex items-center justify-center gap-1\">\n @if (shouldShowAsButtons()) {\n @for (action of allActions(); track action.key) {\n @if (actionStates()[action.key]?.visible) {\n <button\n type=\"button\"\n z-button\n z-tooltip\n [zType]=\"action.type ?? 'outline'\"\n [zSize]=\"action.size ?? 'sm'\"\n [zDisabled]=\"actionStates()[action.key]?.disabled ?? false\"\n [class]=\"action.class ?? ''\"\n [zContent]=\"actionStates()[action.key]?.tooltipState?.content ?? ''\"\n [zAlwaysShow]=\"actionStates()[action.key]?.tooltipState?.alwaysShow ?? false\"\n [zArrow]=\"actionStates()[action.key]?.tooltipState?.arrow ?? true\"\n [zOffset]=\"actionStates()[action.key]?.tooltipState?.offset ?? 8\"\n [zMaxWidth]=\"actionStates()[action.key]?.tooltipState?.maxWidth ?? '250px'\"\n (click)=\"_onActionClick(action, $event)\"\n >\n @if (action.icon && action.label) {\n <div class=\"flex items-center gap-2\">\n <z-icon [zType]=\"action.icon\" zSize=\"14\" />\n {{ action.label }}\n </div>\n } @else if (action.icon) {\n <z-icon [zType]=\"action.icon\" zSize=\"14\" />\n } @else if (action.label) {\n {{ action.label }}\n }\n </button>\n }\n }\n } @else {\n <z-dropdown-menu\n [zItems]=\"dropdownItems()\"\n zPosition=\"bottom-right\"\n [zButtonSize]=\"zDropdownButtonSize()\"\n [zMinWidth]=\"160\"\n (zOnItemClick)=\"_onDropdownItemClick($event)\"\n >\n <button\n type=\"button\"\n z-button\n zTypeIcon=\"lucideEllipsis\"\n [zSize]=\"zDropdownButtonSize()\"\n zType=\"outline\"\n [zWave]=\"false\"\n ></button>\n </z-dropdown-menu>\n }\n </div>\n `,\n styles: `\n :host {\n display: block;\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ZTableActionsComponent<T = unknown> {\n public readonly zConfig = input.required<ZTableActionColumnConfig<T>>();\n public readonly zRow = input.required<T>();\n public readonly zRowId = input.required<string>();\n public readonly zDropdownButtonSize = input<ZButtonVariants['zSize']>(Z_TABLE_DEFAULT_DROPDOWN_BUTTON_SIZE);\n public readonly zActionClick = output<ZTableActionClickEvent<T>>();\n\n protected readonly allActions = computed(() => {\n const config = this.zConfig();\n const row = this.zRow();\n return config.actions.filter(action => {\n if (typeof action.hidden === 'function') {\n return !action.hidden(row);\n }\n return !action.hidden;\n });\n });\n\n protected readonly shouldShowAsButtons = computed(() => {\n const actions = this.allActions();\n const maxVisible = this.zConfig().maxVisible ?? Z_TABLE_DEFAULT_MAX_VISIBLE_ACTIONS;\n return actions.length <= maxVisible;\n });\n\n protected readonly actionStates = computed(() => {\n const row = this.zRow();\n const actions = this.allActions();\n const states: Record<string, { visible: boolean; disabled: boolean; tooltipState: ZActionTooltipState }> = {};\n\n for (const action of actions) {\n const isHidden = typeof action.hidden === 'function' ? action.hidden(row) : (action.hidden ?? false);\n const isDisabled = typeof action.disabled === 'function' ? action.disabled(row) : (action.disabled ?? false);\n\n states[action.key] = {\n visible: !isHidden,\n disabled: isDisabled,\n tooltipState: this._getTooltipState(action.tooltip),\n };\n }\n\n return states;\n });\n\n protected readonly dropdownItems = computed((): ZDropdownMenuItem[] => {\n const row = this.zRow();\n return this.allActions().map(action => {\n const isDisabled = typeof action.disabled === 'function' ? action.disabled(row) : (action.disabled ?? false);\n return {\n label: action.label ?? action.key,\n icon: action.icon,\n iconSize: action?.iconSize || '18',\n disabled: isDisabled,\n class: action.class,\n divide: action.divide,\n onClick: () => this._emitActionClick(action),\n };\n });\n });\n\n private _getTooltipState(tooltip: string | ZTooltipConfig | undefined): ZActionTooltipState {\n if (!tooltip) {\n return { content: '', alwaysShow: false };\n }\n\n if (typeof tooltip === 'string') {\n return { content: tooltip, alwaysShow: true };\n }\n\n return {\n content: tooltip.content ?? '',\n alwaysShow: tooltip.alwaysShow ?? true,\n position: tooltip.position,\n arrow: tooltip.arrow,\n offset: tooltip.offset,\n maxWidth: tooltip.maxWidth,\n };\n }\n\n protected _onActionClick(action: ZTableActionItem<T>, event: Event): void {\n event.stopPropagation();\n const states = this.actionStates();\n if (states[action.key]?.disabled) {\n return;\n }\n this._emitActionClick(action);\n }\n\n protected _onDropdownItemClick(item: ZDropdownMenuItem): void {\n const action = this.allActions().find(a => (a.label ?? a.key) === item.label);\n if (action) {\n this._emitActionClick(action);\n }\n }\n\n private _emitActionClick(action: ZTableActionItem<T>): void {\n this.zActionClick.emit({\n key: action.key,\n row: this.zRow(),\n rowId: this.zRowId(),\n action,\n });\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input, output, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ZCalendarComponent } from '@shival99/z-vnetcity/components/z-calendar';\nimport { ZCheckboxComponent } from '@shival99/z-vnetcity/components/z-checkbox';\nimport { ZInputComponent } from '@shival99/z-vnetcity/components/z-input';\nimport { ZSelectComponent } from '@shival99/z-vnetcity/components/z-select';\nimport type { ZSelectOption } from '@shival99/z-vnetcity/components/z-select';\nimport type { ZTableEditConfig, ZTableEditType, ZTableEditCellChangeEvent, ZTableEditSize } from '../z-table.types';\n\n@Component({\n selector: 'z-table-edit-cell',\n imports: [FormsModule, ZInputComponent, ZSelectComponent, ZCalendarComponent, ZCheckboxComponent],\n standalone: true,\n template: `\n @switch (editType()) {\n @case ('checkbox') {\n <div class=\"flex items-center justify-center\">\n <z-checkbox\n [zSize]=\"size()\"\n [zChecked]=\"booleanValue()\"\n [zDisabled]=\"isDisabled()\"\n (zChange)=\"onCheckboxChange($event)\"\n />\n </div>\n }\n @case ('number') {\n <z-input\n zType=\"number\"\n [zSize]=\"size()\"\n [zPlaceholder]=\"placeholder()\"\n [zMin]=\"editConfig().min\"\n [zMax]=\"editConfig().max\"\n [zStep]=\"editConfig().step ?? 1\"\n [zDisabled]=\"isDisabled()\"\n [ngModel]=\"numericValue()\"\n (ngModelChange)=\"onValueChange($event)\"\n class=\"w-full\"\n />\n }\n @case ('select') {\n <z-select\n [zSize]=\"size()\"\n [zWrap]=\"false\"\n [zScrollClose]=\"true\"\n [zOptions]=\"selectOptions()\"\n [zDisabled]=\"isDisabled()\"\n [ngModel]=\"value()\"\n [zPlaceholder]=\"placeholder()\"\n (ngModelChange)=\"onSelectChange($event)\"\n class=\"w-full min-w-0\"\n />\n }\n @case ('date') {\n <z-calendar\n zMode=\"single\"\n [zSize]=\"size()\"\n zAllowClear\n zValueType=\"date\"\n [zScrollClose]=\"true\"\n [zDisabled]=\"isDisabled()\"\n [zPlaceholder]=\"placeholder()\"\n [ngModel]=\"dateValue()\"\n (ngModelChange)=\"onDateChange($event)\"\n class=\"w-full\"\n />\n }\n @case ('textarea') {\n <z-input\n zType=\"textarea\"\n [zSize]=\"size()\"\n [zPlaceholder]=\"placeholder()\"\n [zRows]=\"editConfig().rows ?? 2\"\n [zDisabled]=\"isDisabled()\"\n [ngModel]=\"stringValue()\"\n (ngModelChange)=\"onValueChange($event)\"\n class=\"w-full\"\n />\n }\n @default {\n <z-input\n zType=\"text\"\n [zSize]=\"size()\"\n [zPlaceholder]=\"placeholder()\"\n [zDisabled]=\"isDisabled()\"\n [ngModel]=\"stringValue()\"\n (ngModelChange)=\"onValueChange($event)\"\n class=\"w-full\"\n />\n }\n }\n `,\n styles: `\n :host {\n display: block;\n width: 100%;\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'z-table-edit-cell block',\n },\n})\nexport class ZTableEditCellComponent<T = unknown> {\n public readonly zRow = input.required<T>();\n public readonly zRowId = input.required<string>();\n public readonly zRowIndex = input.required<number>();\n public readonly zColumnId = input.required<string>();\n public readonly zValue = input<unknown>();\n public readonly zEditConfig = input<ZTableEditConfig<T>>();\n public readonly zChange = output<ZTableEditCellChangeEvent<T>>();\n\n private readonly _currentValue = signal<unknown>(undefined);\n private _initialized = false;\n\n protected readonly editConfig = computed(() => {\n const config = this.zEditConfig();\n if (!config || typeof config === 'boolean') {\n return { enabled: true, type: 'text' as ZTableEditType };\n }\n return config;\n });\n\n protected readonly editType = computed(() => this.editConfig()?.type ?? 'text');\n\n protected readonly size = computed<ZTableEditSize>(() => {\n const config = this.editConfig();\n return config?.size ?? 'default';\n });\n\n protected readonly placeholder = computed(() => {\n const config = this.editConfig();\n return config?.placeholder ?? '';\n });\n\n protected readonly selectOptions = computed<ZSelectOption[]>(() => {\n const config = this.editConfig();\n return config?.options ?? [];\n });\n\n protected readonly isDisabled = computed(() => {\n const config = this.editConfig();\n if (!config?.disabled) {\n return false;\n }\n\n if (typeof config.disabled === 'function') {\n return config.disabled(this.zRow());\n }\n\n return config.disabled;\n });\n\n protected readonly value = computed(() => {\n if (this._initialized) {\n return this._currentValue();\n }\n\n return this.zValue();\n });\n\n protected readonly stringValue = computed(() => {\n const val = this.value();\n if (val === null || val === undefined) {\n return '';\n }\n\n return String(val);\n });\n\n protected readonly numericValue = computed(() => {\n const val = this.value();\n if (val === null || val === undefined || val === '') {\n return null;\n }\n\n const num = Number(val);\n return isNaN(num) ? null : num;\n });\n\n protected readonly booleanValue = computed(() => {\n const val = this.value();\n return Boolean(val);\n });\n\n protected readonly dateValue = computed(() => {\n const val = this.value();\n if (val instanceof Date) {\n return val;\n }\n\n if (typeof val === 'string' && val) {\n const date = new Date(val);\n return isNaN(date.getTime()) ? null : date;\n }\n\n return null;\n });\n\n protected onValueChange(newValue: unknown): void {\n const oldValue = this.zValue();\n this._currentValue.set(newValue);\n this._initialized = true;\n\n this._emitChange(oldValue, newValue);\n }\n\n protected onSelectChange(newValue: unknown): void {\n const oldValue = this.zValue();\n let finalValue = newValue;\n if (typeof newValue === 'object' && newValue !== null && 'value' in newValue) {\n finalValue = (newValue as { value: unknown }).value;\n }\n\n this._currentValue.set(finalValue);\n this._initialized = true;\n\n this._emitChange(oldValue, finalValue);\n }\n\n protected onDateChange(newValue: unknown): void {\n const oldValue = this.zValue();\n this._currentValue.set(newValue);\n this._initialized = true;\n\n this._emitChange(oldValue, newValue);\n }\n\n protected onCheckboxChange(checked: boolean): void {\n const oldValue = this.zValue();\n this._currentValue.set(checked);\n this._initialized = true;\n\n this._emitChange(oldValue, checked);\n }\n\n private _emitChange(oldValue: unknown, newValue: unknown): void {\n const config = this.editConfig();\n if (config?.onChange) {\n config.onChange(newValue, this.zRow(), this.zColumnId());\n }\n\n this.zChange.emit({\n row: this.zRow(),\n rowId: this.zRowId(),\n rowIndex: this.zRowIndex(),\n columnId: this.zColumnId(),\n oldValue,\n newValue,\n });\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input, OnDestroy } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { ZCalendarComponent } from '@shival99/z-vnetcity/components/z-calendar';\nimport type { ZDateRange } from '@shival99/z-vnetcity/components/z-calendar';\nimport { ZInputComponent } from '@shival99/z-vnetcity/components/z-input';\nimport { ZSelectComponent } from '@shival99/z-vnetcity/components/z-select';\nimport type { Column, Table } from '@tanstack/angular-table';\nimport type { ZTableExtendedColumnDef } from '../z-table.types';\n\n@Component({\n selector: 'z-table-filter',\n imports: [FormsModule, ZInputComponent, ZSelectComponent, ZCalendarComponent, TranslatePipe],\n standalone: true,\n template: `\n @switch (filterType()) {\n @case ('range') {\n <div class=\"flex gap-1\">\n <z-input\n zType=\"number\"\n zSize=\"sm\"\n [zPlaceholder]=\"'i18n_z_ui_table_filter_min' | translate\"\n [ngModel]=\"rangeMinValue()\"\n (ngModelChange)=\"onMinChangeDebounced($event)\"\n class=\"min-w-0 flex-1\"\n />\n <z-input\n zType=\"number\"\n zSize=\"sm\"\n [zPlaceholder]=\"'i18n_z_ui_table_filter_max' | translate\"\n [ngModel]=\"rangeMaxValue()\"\n (ngModelChange)=\"onMaxChangeDebounced($event)\"\n class=\"min-w-0 flex-1\"\n />\n </div>\n }\n @case ('date') {\n <z-calendar\n zMode=\"single\"\n zSize=\"sm\"\n zAllowClear\n zValueType=\"date\"\n [zScrollClose]=\"true\"\n [zPlaceholder]=\"'i18n_z_ui_table_filter_date' | translate\"\n [ngModel]=\"dateValue()\"\n (ngModelChange)=\"onDateChange($event)\"\n class=\"w-full\"\n />\n }\n @case ('date-range') {\n <z-calendar\n zMode=\"range\"\n zSize=\"sm\"\n zAllowClear\n zValueType=\"date\"\n [zScrollClose]=\"true\"\n [zPlaceholder]=\"'i18n_z_ui_table_filter_date_range' | translate\"\n [ngModel]=\"dateRangeValue()\"\n (ngModelChange)=\"onDateRangeChange($event)\"\n class=\"w-full\"\n />\n }\n @case ('select') {\n <z-select\n zSize=\"sm\"\n zAllowClear\n [zWrap]=\"false\"\n [zScrollClose]=\"true\"\n [zOptions]=\"selectOptions()\"\n [ngModel]=\"selectValue()\"\n [zMaxVisible]=\"30\"\n [zPlaceholder]=\"'i18n_z_ui_common_select' | translate\"\n (ngModelChange)=\"onSelectChange($event)\"\n class=\"w-full min-w-0\"\n />\n }\n @case ('multi-select') {\n <z-select\n zMode=\"multiple\"\n zSize=\"sm\"\n zAllowClear\n [zWrap]=\"false\"\n [zScrollClose]=\"true\"\n [zOptions]=\"selectOptions()\"\n [zMaxTagCount]=\"1\"\n [zMaxVisible]=\"30\"\n [ngModel]=\"multiSelectValue()\"\n [zPlaceholder]=\"'i18n_z_ui_common_select' | translate\"\n (ngModelChange)=\"onMultiSelectChange($event)\"\n class=\"w-full min-w-0\"\n />\n }\n @case ('tags') {\n <z-select\n zMode=\"tags\"\n zSize=\"sm\"\n [zOptions]=\"selectOptions()\"\n [zWrap]=\"false\"\n [zScrollClose]=\"true\"\n [zMaxTagCount]=\"1\"\n [zMaxVisible]=\"30\"\n [zPlaceholder]=\"'i18n_z_ui_common_select' | translate\"\n class=\"w-full min-w-0\"\n [zAllowClear]=\"true\"\n (ngModelChange)=\"onMultiSelectChange($event)\"\n [ngModel]=\"multiSelectValue()\"\n />\n }\n @case ('number') {\n <z-input\n zType=\"number\"\n zSize=\"sm\"\n zAllowClear\n [zPlaceholder]=\"'i18n_z_ui_table_filter_search' | translate\"\n [ngModel]=\"columnFilterValue()?.toString() ?? ''\"\n (ngModelChange)=\"onTextChangeDebounced($event)\"\n class=\"w-full\"\n />\n }\n @default {\n <z-input\n zType=\"text\"\n zSize=\"sm\"\n zAllowClear\n [zPlaceholder]=\"'i18n_z_ui_table_filter_search' | translate\"\n [ngModel]=\"(columnFilterValue() ?? '').toString()\"\n (ngModelChange)=\"onTextChangeDebounced($event)\"\n class=\"w-full\"\n />\n }\n }\n `,\n styles: `\n :host {\n color: var(--foreground);\n font-weight: 450;\n font-style: normal;\n text-decoration: none;\n text-transform: none;\n letter-spacing: normal;\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'z-table-filter block',\n },\n})\nexport class ZTableFilterComponent<T> implements OnDestroy {\n public readonly zColumn = input.required<Column<unknown, unknown>>();\n public readonly zTable = input.required<Table<T>>();\n\n private _debounceTimeout: ReturnType<typeof setTimeout> | null = null;\n private readonly _debounceMs = 300;\n private readonly _columnDef = computed(() => this.zColumn().columnDef as ZTableExtendedColumnDef);\n\n public readonly filterType = computed(() => this._columnDef().filterType);\n public readonly columnFilterValue = computed<unknown>(() => this.zColumn().getFilterValue());\n public readonly minValue = computed(() => this.zColumn().getFacetedMinMaxValues()?.[0] ?? '');\n public readonly maxValue = computed(() => this.zColumn().getFacetedMinMaxValues()?.[1] ?? '');\n\n public readonly rangeMinValue = computed(() => {\n const value = this.columnFilterValue();\n if (!Array.isArray(value)) {\n return '';\n }\n\n return value[0] ?? '';\n });\n\n public readonly rangeMaxValue = computed(() => {\n const value = this.columnFilterValue();\n if (!Array.isArray(value)) {\n return '';\n }\n\n return value[1] ?? '';\n });\n\n public readonly dateValue = computed(() => {\n const value = this.columnFilterValue();\n if (value instanceof Date) {\n return value;\n }\n return null;\n });\n\n public readonly dateRangeValue = computed(() => {\n const value = this.columnFilterValue();\n if (value && typeof value === 'object' && 'start' in value && 'end' in value) {\n return value as ZDateRange;\n }\n return null;\n });\n\n public readonly selectValue = computed(() => {\n const value = this.columnFilterValue();\n if (value === null || value === undefined || value === '') {\n return null;\n }\n return value;\n });\n\n public readonly multiSelectValue = computed(() => {\n const value = this.columnFilterValue();\n if (Array.isArray(value)) {\n return value;\n }\n return [];\n });\n\n public readonly selectOptions = computed(() => {\n const columnDef = this._columnDef();\n if (columnDef.filterOptions && columnDef.filterOptions.length > 0) {\n return columnDef.filterOptions;\n }\n\n const facetedValues = this.zColumn().getFacetedUniqueValues();\n if (facetedValues && facetedValues.size > 0) {\n const uniqueValues = Array.from(facetedValues.keys()).sort().slice(0, 5000);\n return uniqueValues.map(v => ({ label: String(v), value: String(v) }));\n }\n\n const table = this.zTable();\n const column = this.zColumn();\n const { rows } = table.getRowModel();\n\n if (rows.length === 0) {\n return [];\n }\n\n const uniqueValues = new Set<string>();\n for (const row of rows) {\n const value = row.getValue(column.id);\n if (value !== null && value !== undefined && value !== '') {\n uniqueValues.add(String(value));\n }\n }\n\n const sortedValues = Array.from(uniqueValues).sort();\n return sortedValues.map(v => ({ label: String(v), value: String(v) }));\n });\n\n ngOnDestroy(): void {\n if (this._debounceTimeout) {\n clearTimeout(this._debounceTimeout);\n }\n }\n\n public onMinChangeDebounced(value: string | number | null): void {\n this._debounce(() => {\n const numValue = value === null || value === '' ? undefined : Number(value);\n this.zColumn().setFilterValue((old: [number, number]) => [numValue, old?.[1]]);\n });\n }\n\n public onMaxChangeDebounced(value: string | number | null): void {\n this._debounce(() => {\n const numValue = value === null || value === '' ? undefined : Number(value);\n this.zColumn().setFilterValue((old: [number, number]) => [old?.[0], numValue]);\n });\n }\n\n public onTextChangeDebounced(value: string | number | null): void {\n this._debounce(() => {\n this.zColumn().setFilterValue(value);\n });\n }\n\n public onSelectChange(value: unknown): void {\n if (typeof value === 'object' && value !== null && 'value' in value) {\n this.zColumn().setFilterValue((value as { value: string }).value || undefined);\n return;\n }\n\n this.zColumn().setFilterValue(value || undefined);\n }\n\n public onMultiSelectChange(value: unknown[]): void {\n if (!value || (Array.isArray(value) && value.length === 0)) {\n this.zColumn().setFilterValue(undefined);\n return;\n }\n this.zColumn().setFilterValue(value);\n }\n\n public onDateChange(value: Date | null): void {\n this.zColumn().setFilterValue(value || undefined);\n }\n\n public onDateRangeChange(value: ZDateRange | null): void {\n if (value && (value.start || value.end)) {\n this.zColumn().setFilterValue(value);\n return;\n }\n this.zColumn().setFilterValue(undefined);\n }\n\n private _debounce(fn: () => void): void {\n if (this._debounceTimeout) {\n clearTimeout(this._debounceTimeout);\n }\n\n this._debounceTimeout = setTimeout(fn, this._debounceMs);\n }\n}\n","import type { ZSelectOption } from '@shival99/z-vnetcity/components/z-select';\nimport { type Header, type ColumnDef, type CellContext, type Cell, type Row } from '@tanstack/angular-table';\nimport {\n type ZTableColumnConfig,\n type ZTableFilterType,\n type ZTableHeaderContent,\n type ZTableCellContent,\n type ZTableIconPart,\n type ZTableHeaderColumnConfig,\n type ZTableBodyColumnConfig,\n type ZTableFooterColumnConfig,\n type ZTableCellType,\n Z_DEFAULT_COLUMN_MIN_SIZE,\n} from './z-table.types';\n\nexport const filterVisibleColumns = <T>(columns: ZTableColumnConfig<T>[]): ZTableColumnConfig<T>[] =>\n columns\n .filter(col => {\n const { visible } = col;\n if (visible === undefined) {\n return true;\n }\n return typeof visible === 'function' ? visible() : visible;\n })\n .map(col => {\n if (col.columns && col.columns.length > 0) {\n return {\n ...col,\n columns: filterVisibleColumns(col.columns),\n };\n }\n return col;\n });\n\nconst isObjectConfig = (config: unknown): boolean => {\n if (!config || typeof config !== 'object') {\n return false;\n }\n return config.constructor === Object;\n};\n\nexport const isHeaderConfig = <T>(\n config: ZTableHeaderColumnConfig<T> | ZTableHeaderContent<T> | undefined\n): config is ZTableHeaderColumnConfig<T> => isObjectConfig(config);\n\nexport const isBodyConfig = <T>(\n config: ZTableBodyColumnConfig<T> | ZTableCellContent<T> | undefined\n): config is ZTableBodyColumnConfig<T> => isObjectConfig(config);\n\nexport const isFooterConfig = <T>(\n config: ZTableFooterColumnConfig<T> | ZTableHeaderContent<T> | undefined\n): config is ZTableFooterColumnConfig<T> => isObjectConfig(config);\n\nconst getHeaderOrFooterConfigInternal = <T>(col: ZTableColumnConfig<T> | undefined, type: 'header' | 'footer') => {\n const empty = {\n content: undefined as ZTableHeaderContent<T> | undefined,\n class: undefined as string | undefined,\n style: undefined as Record<string, string> | undefined,\n align: undefined as string | undefined,\n tooltip: undefined as string | object | undefined,\n rowSpan: undefined as number | undefined,\n colSpan: undefined as number | undefined,\n contentClass: undefined as string | ((info: unknown) => string) | undefined,\n contentStyle: undefined as Record<string, string> | ((info: unknown) => Record<string, string>) | undefined,\n };\n\n if (!col) {\n return empty;\n }\n\n const config = type === 'header' ? col.header : col.footer;\n const isConfigFn = type === 'header' ? isHeaderConfig : isFooterConfig;\n\n if (!isConfigFn(config)) {\n return { ...empty, content: config as ZTableHeaderContent<T> | undefined };\n }\n\n const typedConfig = config as ZTableHeaderColumnConfig<T> | ZTableFooterColumnConfig<T>;\n\n return {\n content: typedConfig.content,\n class: typedConfig.class,\n style: typedConfig.style,\n align: typedConfig.align,\n tooltip: typedConfig.tooltip,\n rowSpan: typedConfig.rowSpan,\n colSpan: typedConfig.colSpan,\n contentClass: typedConfig.contentClass,\n contentStyle: typedConfig.contentStyle,\n };\n};\n\nexport const getHeaderConfig = <T>(col: ZTableColumnConfig<T> | undefined) =>\n getHeaderOrFooterConfigInternal(col, 'header');\n\nexport const getBodyConfig = <T>(col: ZTableColumnConfig<T> | undefined, ctx?: CellContext<T, unknown>) => {\n const empty = {\n content: undefined as ZTableCellContent<T> | undefined,\n class: undefined as string | undefined,\n style: undefined as Record<string, string> | undefined,\n align: undefined as string | undefined,\n rowSpan: undefined as number | undefined,\n colSpan: undefined as number | undefined,\n contentClass: undefined as string | undefined,\n contentStyle: undefined as Record<string, string> | undefined,\n tooltip: undefined as string | object | undefined,\n };\n\n if (!col) {\n return empty;\n }\n\n if (!isBodyConfig(col.body)) {\n return { ...empty, content: col.body };\n }\n\n const { body } = col;\n const rowSpan = typeof body.rowSpan === 'function' && ctx ? body.rowSpan(ctx) : body.rowSpan;\n const colSpan = typeof body.colSpan === 'function' && ctx ? body.colSpan(ctx) : body.colSpan;\n const classValue = typeof body.class === 'function' && ctx ? body.class(ctx) : body.class;\n const styleValue = typeof body.style === 'function' && ctx ? body.style(ctx) : body.style;\n const contentClass = typeof body.contentClass === 'function' && ctx ? body.contentClass(ctx) : body.contentClass;\n const contentStyle = typeof body.contentStyle === 'function' && ctx ? body.contentStyle(ctx) : body.contentStyle;\n const tooltip = typeof body.tooltip === 'function' && ctx ? body.tooltip(ctx) : body.tooltip;\n\n return {\n content: body.content,\n class: classValue,\n style: styleValue as Record<string, string> | undefined,\n align: body.align,\n rowSpan: typeof rowSpan === 'number' ? rowSpan : undefined,\n colSpan: typeof colSpan === 'number' ? colSpan : undefined,\n contentClass,\n contentStyle: contentStyle as Record<string, string> | undefined,\n tooltip,\n };\n};\n\nexport const getFooterConfig = <T>(col: ZTableColumnConfig<T> | undefined) =>\n getHeaderOrFooterConfigInternal(col, 'footer');\n\nexport const getHeaderContent = <T>(col: ZTableColumnConfig<T> | undefined) => getHeaderConfig(col).content;\nexport const getBodyContent = <T>(col: ZTableColumnConfig<T> | undefined) => {\n if (!col?.body) {\n return undefined;\n }\n return isBodyConfig(col.body) ? col.body.content : col.body;\n};\nexport const getFooterContent = <T>(col: ZTableColumnConfig<T> | undefined) => getFooterConfig(col).content;\nexport const getBodyRowSpan = <T>(col: ZTableColumnConfig<T> | undefined, ctx?: CellContext<T, unknown>) =>\n getBodyConfig(col, ctx).rowSpan;\nexport const getBodyColSpan = <T>(col: ZTableColumnConfig<T> | undefined, ctx?: CellContext<T, unknown>) =>\n getBodyConfig(col, ctx).colSpan;\nexport const getHeaderRowSpan = <T>(col: ZTableColumnConfig<T> | undefined) => getHeaderConfig(col).rowSpan;\nexport const getHeaderColSpan = <T>(col: ZTableColumnConfig<T> | undefined) => getHeaderConfig(col).colSpan;\nexport const getFooterRowSpan = <T>(col: ZTableColumnConfig<T> | undefined) => getFooterConfig(col).rowSpan;\nexport const getFooterColSpan = <T>(col: ZTableColumnConfig<T> | undefined) => getFooterConfig(col).colSpan;\n\nexport function parseIconString(content: string): ZTableIconPart[] {\n if (!content || typeof content !== 'string') {\n return [{ type: 'text', value: content || '' }];\n }\n\n const parts: ZTableIconPart[] = [];\n const iconRegex = /\\[icon:([^\\]]+)\\]/g;\n let lastIndex = 0;\n let match: RegExpExecArray | null;\n\n while ((match = iconRegex.exec(content)) !== null) {\n if (match.index > lastIndex) {\n const textPart = content.slice(lastIndex, match.index);\n if (textPart) {\n parts.push({ type: 'text', value: textPart });\n }\n }\n\n const iconContent = match[1];\n const attrs = iconContent.split('|');\n const iconName = attrs[0];\n const iconPart: ZTableIconPart = { type: 'icon', value: iconName };\n\n for (let i = 1; i < attrs.length; i++) {\n const [key, val] = attrs[i].split(':');\n if (key === 'size') {\n iconPart.size = parseInt(val, 10);\n }\n if (key === 'class') {\n iconPart.class = val;\n }\n if (key === 'strokeWidth') {\n iconPart.strokeWidth = parseFloat(val);\n }\n }\n\n parts.push(iconPart);\n lastIndex = match.index + match[0].length;\n }\n\n if (lastIndex < content.length) {\n parts.push({ type: 'text', value: content.slice(lastIndex) });\n }\n\n return parts.length > 0 ? parts : [{ type: 'text', value: content }];\n}\n\nexport function stripIconSyntax(content: string): string {\n if (!content || typeof content !== 'string') {\n return content || '';\n }\n return content.replace(/\\[icon:[^\\]]+\\]/g, '').trim();\n}\n\nexport function hasIconSyntax(content: unknown): boolean {\n if (!content || typeof content !== 'string') {\n return false;\n }\n return /\\[icon:[^\\]]+\\]/.test(content);\n}\n\nexport const findColumnConfig = <T>(\n columnId: string,\n columns: ZTableColumnConfig<T>[]\n): ZTableColumnConfig<T> | undefined => {\n for (const col of columns) {\n if (col.id === columnId) {\n return col;\n }\n if (col.columns) {\n const found = findColumnConfig(columnId, col.columns);\n if (found) {\n return found;\n }\n }\n }\n return undefined;\n};\n\nexport const deepestHeader = <D, V>(header: Header<D, V>): Header<D, V> | null => {\n let last = header;\n while (true) {\n const next = last.isPlaceholder && last.colSpan === 1 && last.subHeaders.length === 1 ? last.subHeaders[0] : null;\n if (!next) {\n return last === header ? null : last;\n }\n\n last = next;\n }\n};\n\nexport const tableHeaderRowSpan = <D, V>(header: Header<D, V>): number | null => {\n const deepest = deepestHeader(header);\n const rowSpan = (deepest ? deepest.depth - header.depth : 0) + 1;\n const above = header.depth - header.column.depth;\n return above > 1 ? null : rowSpan;\n};\n\nexport const calculateCellRowSpan = <T>(\n cell: Cell<T, unknown>,\n columnConfig: ZTableColumnConfig<T> | undefined,\n allRows: Row<T>[]\n): number | null => {\n if (!columnConfig?.body || !isBodyConfig(columnConfig.body)) {\n return null;\n }\n const rowSpanValue = columnConfig.body.rowSpan;\n if (!rowSpanValue) {\n return null;\n }\n\n if (typeof rowSpanValue === 'function') {\n const rowSpan = rowSpanValue(cell.getContext());\n return rowSpan > 1 ? rowSpan : null;\n }\n\n if (rowSpanValue > 1) {\n const currentRowId = cell.row.id;\n const filteredIndex = allRows.findIndex(r => r.id === currentRowId);\n\n if (filteredIndex === -1) {\n return null;\n }\n\n if (filteredIndex % rowSpanValue !== 0) {\n return null;\n }\n\n const remainingRows = allRows.length - filteredIndex;\n const actualRowSpan = Math.min(rowSpanValue, remainingRows);\n\n return actualRowSpan > 1 ? actualRowSpan : null;\n }\n\n return null;\n};\n\nexport const calculateCellColSpan = <T>(\n cell: Cell<T, unknown>,\n columnConfig: ZTableColumnConfig<T> | undefined\n): number | null => {\n if (!columnConfig?.body || !isBodyConfig(columnConfig.body)) {\n return null;\n }\n const colSpanValue = columnConfig.body.colSpan;\n if (!colSpanValue) {\n return null;\n }\n const colSpan = typeof colSpanValue === 'function' ? colSpanValue(cell.getContext()) : colSpanValue;\n return colSpan > 1 ? colSpan : null;\n};\n\nexport const calculateHeaderRowSpan = <T>(\n header: Header<T, unknown>,\n columnConfig: ZTableColumnConfig<T> | undefined,\n columns?: ZTableColumnConfig<T>[]\n): number | null => {\n const configRowSpan = getHeaderRowSpan(columnConfig);\n if (configRowSpan !== undefined && configRowSpan !== null) {\n return configRowSpan;\n }\n\n if (columns && header.column.parent) {\n const parentConfig = findColumnConfig(header.column.parent.id, columns);\n const parentRowSpan = getHeaderRowSpan(parentConfig);\n if (parentRowSpan && parentRowSpan >= 2) {\n return null;\n }\n }\n\n const deepest = deepestHeader(header);\n const rowSpan = (deepest ? deepest.depth - header.depth : 0) + 1;\n const above = header.depth - header.column.depth;\n return above > 1 ? null : rowSpan;\n};\n\nexport const calculateHeaderColSpan = <T>(\n header: Header<T, unknown>,\n columnConfig: ZTableColumnConfig<T> | undefined\n): number | null => {\n const configColSpan = getHeaderColSpan(columnConfig);\n const isPinned = header.column.getIsPinned();\n\n if (isPinned === 'left' && configColSpan !== undefined && configColSpan !== null) {\n const allHeaders = header.headerGroup.headers;\n const currentIndex = allHeaders.findIndex(h => h.id === header.id);\n\n if (currentIndex === -1) {\n return configColSpan;\n }\n\n let effectiveColSpan = 0;\n for (let i = 0; i < configColSpan && currentIndex + i < allHeaders.length; i++) {\n const targetHeader = allHeaders[currentIndex + i];\n const targetLeafHeaders = targetHeader.getLeafHeaders();\n const allLeafsPinned = targetLeafHeaders.every(lh => lh.column.getIsPinned() === 'left');\n if (allLeafsPinned) {\n effectiveColSpan++;\n }\n if (!allLeafsPinned) {\n break;\n }\n }\n\n return effectiveColSpan > 1 ? effectiveColSpan : null;\n }\n\n if (configColSpan !== undefined && configColSpan !== null) {\n return configColSpan;\n }\n\n return header.colSpan > 1 ? header.colSpan : null;\n};\n\nexport const calculateFooterRowSpan = <T>(\n header: Header<T, unknown>,\n columnConfig: ZTableColumnConfig<T> | undefined\n): number | null => {\n const configRowSpan = getFooterRowSpan(columnConfig);\n if (configRowSpan !== undefined && configRowSpan !== null) {\n return configRowSpan;\n }\n\n const footerContent = getFooterContent(columnConfig);\n if (footerContent !== undefined) {\n return 1;\n }\n\n if (header.colSpan > 1) {\n return 1;\n }\n\n return 1;\n};\n\nexport const calculateFooterColSpan = <T>(\n header: Header<T, unknown>,\n columnConfig: ZTableColumnConfig<T> | undefined\n): number | null => {\n const configColSpan = getFooterColSpan(columnConfig);\n const isPinned = header.column.getIsPinned();\n\n if (isPinned === 'left' && configColSpan !== undefined && configColSpan !== null) {\n const allHeaders = header.headerGroup.headers;\n const currentIndex = allHeaders.findIndex(h => h.id === header.id);\n\n if (currentIndex === -1) {\n return configColSpan;\n }\n\n let effectiveColSpan = 0;\n for (let i = 0; i < configColSpan && currentIndex + i < allHeaders.length; i++) {\n const targetHeader = allHeaders[currentIndex + i];\n const targetLeafHeaders = targetHeader.getLeafHeaders();\n const allLeafsPinned = targetLeafHeaders.every(lh => lh.column.getIsPinned() === 'left');\n if (allLeafsPinned) {\n effectiveColSpan++;\n }\n if (!allLeafsPinned) {\n break;\n }\n }\n\n return effectiveColSpan > 1 ? effectiveColSpan : null;\n }\n\n if (configColSpan !== undefined && configColSpan !== null) {\n return configColSpan;\n }\n\n return header.colSpan > 1 ? header.colSpan : null;\n};\n\nexport const shouldCellRenderUtil = <T>(\n cell: Cell<T, unknown>,\n columnConfig: ZTableColumnConfig<T> | undefined,\n allRows: Row<T>[]\n): boolean => {\n if (!columnConfig?.body || !isBodyConfig(columnConfig.body)) {\n return true;\n }\n const rowSpanValue = columnConfig.body.rowSpan;\n if (!rowSpanValue) {\n return true;\n }\n\n if (typeof rowSpanValue === 'function') {\n const rowSpan = rowSpanValue(cell.getContext());\n return rowSpan !== 0;\n }\n\n if (rowSpanValue > 1) {\n const currentRowId = cell.row.id;\n const filteredIndex = allRows.findIndex(r => r.id === currentRowId);\n\n if (filteredIndex === -1) {\n return true;\n }\n\n return filteredIndex % rowSpanValue === 0;\n }\n\n return true;\n};\n\nconst shouldHeaderOrFooterRender = <T>(\n header: Header<T, unknown>,\n allHeaders: Header<T, unknown>[],\n columns: ZTableColumnConfig<T>[],\n type: ZTableCellType\n): boolean => {\n const currentIndex = allHeaders.findIndex(h => h.id === header.id);\n if (currentIndex <= 0) {\n return true;\n }\n\n const getConfigColSpanFn = type === 'header' ? getHeaderColSpan : getFooterColSpan;\n\n for (let i = 0; i < currentIndex; i++) {\n const prevHeader = allHeaders[i];\n const prevConfig = findColumnConfig(prevHeader.column.id, columns);\n const configColSpan = getConfigColSpanFn(prevConfig);\n\n if (!configColSpan || configColSpan <= 1) {\n continue;\n }\n\n const isPinned = prevHeader.column.getIsPinned();\n let effectiveColSpan = configColSpan;\n\n if (isPinned === 'left') {\n const headersInGroup = prevHeader.headerGroup.headers;\n const prevIdx = headersInGroup.findIndex(h => h.id === prevHeader.id);\n\n if (prevIdx !== -1) {\n effectiveColSpan = 0;\n for (let j = 0; j < configColSpan && prevIdx + j < headersInGroup.length; j++) {\n const targetHeader = headersInGroup[prevIdx + j];\n const targetLeafHeaders = targetHeader.getLeafHeaders();\n const allLeafsPinned = targetLeafHeaders.every(lh => lh.column.getIsPinned() === 'left');\n if (allLeafsPinned) {\n effectiveColSpan++;\n }\n if (!allLeafsPinned) {\n break;\n }\n }\n }\n }\n\n if (effectiveColSpan > 1 && i + effectiveColSpan > currentIndex) {\n return false;\n }\n }\n\n return true;\n};\n\nexport const shouldBodyCellRenderColSpan = <T>(\n cell: Cell<T, unknown>,\n allCells: Cell<T, unknown>[],\n columns: ZTableColumnConfig<T>[]\n): boolean => {\n const currentIndex = allCells.findIndex(c => c.id === cell.id);\n if (currentIndex <= 0) {\n return true;\n }\n\n for (let i = 0; i < currentIndex; i++) {\n const prevCell = allCells[i];\n const prevConfig = findColumnConfig(prevCell.column.id, columns);\n const prevColSpan = getBodyColSpan(prevConfig, prevCell.getContext());\n\n if (prevColSpan && prevColSpan > 1 && i + prevColSpan > currentIndex) {\n return false;\n }\n }\n\n return true;\n};\n\nexport const shouldFooterRender = <T>(\n header: Header<T, unknown>,\n allHeaders: Header<T, unknown>[],\n columns: ZTableColumnConfig<T>[]\n): boolean => shouldHeaderOrFooterRender(header, allHeaders, columns, 'footer');\n\nexport const shouldHeaderRender = <T>(\n header: Header<T, unknown>,\n allHeaders: Header<T, unknown>[],\n columns: ZTableColumnConfig<T>[]\n): boolean => shouldHeaderOrFooterRender(header, allHeaders, columns, 'header');\n\nexport function columnConfigToColumnDef<T>(config: ZTableColumnConfig<T>): ColumnDef<T> {\n const sortConfig = typeof config.sort === 'boolean' ? (config.sort ? { enabled: true } : undefined) : config.sort;\n const filterConfig =\n typeof config.filter === 'boolean' ? (config.filter ? { enabled: true } : undefined) : config.filter;\n\n const resolveHeaderOrFooter = (content: unknown): ((info: unknown) => unknown) | string | undefined => {\n if (!content) {\n return undefined;\n }\n if (typeof content === 'string' || typeof content === 'number') {\n return String(content);\n }\n if (typeof content === 'function') {\n return content as (info: unknown) => unknown;\n }\n return undefined;\n };\n\n const columnDef = {\n id: config.id,\n size: config.size,\n minSize: config.minSize ?? Z_DEFAULT_COLUMN_MIN_SIZE,\n maxSize: config.maxSize,\n enableSorting: sortConfig?.enabled ?? false,\n enableColumnFilter: filterConfig?.enabled ?? false,\n enableResizing: config.enableResizing,\n enablePinning: config.enablePinning,\n enableHiding: config.enableHiding,\n filterType: filterConfig?.type,\n filterOptions: filterConfig?.options,\n } as ColumnDef<T> & { filterType?: ZTableFilterType; filterOptions?: (ZSelectOption | Record<string, unknown>)[] };\n\n if (config.accessorKey) {\n (columnDef as ColumnDef<T> & { accessorKey: string }).accessorKey = config.accessorKey;\n }\n\n if (config.accessorFn) {\n (columnDef as ColumnDef<T> & { accessorFn: (row: T) => unknown }).accessorFn = config.accessorFn;\n }\n\n columnDef.header = resolveHeaderOrFooter(getHeaderContent(config));\n const bodyContent = getBodyContent(config);\n if (typeof bodyContent === 'string' || typeof bodyContent === 'number') {\n columnDef.cell = () => bodyContent as string;\n }\n\n if (typeof bodyContent === 'function') {\n columnDef.cell = bodyContent as (info: CellContext<T, unknown>) => unknown;\n }\n\n columnDef.footer = resolveHeaderOrFooter(getFooterContent(config));\n\n const isLocalFilterMode = !filterConfig?.mode || filterConfig.mode === 'local';\n const isLocalSortMode = !sortConfig?.mode || sortConfig.mode === 'local';\n\n if (isLocalSortMode && sortConfig?.sortFn) {\n columnDef.sortingFn = sortConfig.sortFn as ColumnDef<T>['sortingFn'];\n }\n\n if (!isLocalSortMode) {\n columnDef.sortingFn = () => 0;\n }\n\n if (isLocalFilterMode && filterConfig?.filterFn) {\n columnDef.filterFn = filterConfig.filterFn as ColumnDef<T>['filterFn'];\n }\n\n if (!isLocalFilterMode) {\n columnDef.filterFn = () => true;\n }\n\n if (isLocalFilterMode && !filterConfig?.filterFn && filterConfig?.type) {\n switch (filterConfig.type) {\n case 'select':\n columnDef.filterFn = (row, columnId, filterValue) => {\n if (!filterValue || (Array.isArray(filterValue) && filterValue.length === 0)) {\n return true;\n }\n const cellValue = row.getValue(columnId);\n if (Array.isArray(filterValue)) {\n return filterValue.includes(cellValue);\n }\n return cellValue === filterValue;\n };\n break;\n\n case 'multi-select':\n case 'tags':\n columnDef.filterFn = (row, columnId, filterValue) => {\n if (!filterValue || (Array.isArray(filterValue) && filterValue.length === 0)) {\n return true;\n }\n const cellValue = row.getValue(columnId);\n if (!Array.isArray(filterValue)) {\n return cellValue === filterValue;\n }\n const filterSet = new Set(filterValue);\n if (Array.isArray(cellValue)) {\n return cellValue.some(cv => filterSet.has(cv));\n }\n return filterSet.has(cellValue);\n };\n break;\n\n case 'date':\n columnDef.filterFn = (row, columnId, filterValue) => {\n if (!filterValue) {\n return true;\n }\n const cellValue = row.getValue(columnId);\n if (!cellValue) {\n return false;\n }\n\n const cellDate = cellValue instanceof Date ? cellValue : new Date(cellValue as string | number);\n const filterDate = filterValue instanceof Date ? filterValue : new Date(filterValue as string | number);\n\n if (isNaN(cellDate.getTime()) || isNaN(filterDate.getTime())) {\n return false;\n }\n\n return (\n cellDate.getFullYear() === filterDate.getFullYear() &&\n cellDate.getMonth() === filterDate.getMonth() &&\n cellDate.getDate() === filterDate.getDate()\n );\n };\n break;\n\n case 'date-range':\n columnDef.filterFn = (row, columnId, filterValue) => {\n if (!filterValue || typeof filterValue !== 'object') {\n return true;\n }\n\n const { start, end } = filterValue as { start?: Date | null; end?: Date | null };\n if (!start && !end) {\n return true;\n }\n\n const cellValue = row.getValue(columnId);\n if (!cellValue) {\n return false;\n }\n\n const cellDate = cellValue instanceof Date ? cellValue : new Date(cellValue as string | number);\n if (isNaN(cellDate.getTime())) {\n return false;\n }\n\n const cellDateOnly = new Date(cellDate.getFullYear(), cellDate.getMonth(), cellDate.getDate());\n\n if (start) {\n const startDate = start instanceof Date ? start : new Date(start as unknown as string | number);\n if (!isNaN(startDate.getTime())) {\n const startDateOnly = new Date(startDate.getFullYear(), startDate.getMonth(), startDate.getDate());\n if (cellDateOnly < startDateOnly) {\n return false;\n }\n }\n }\n\n if (end) {\n const endDate = end instanceof Date ? end : new Date(end as unknown as string | number);\n if (!isNaN(endDate.getTime())) {\n const endDateOnly = new Date(endDate.getFullYear(), endDate.getMonth(), endDate.getDate());\n if (cellDateOnly > endDateOnly) {\n return false;\n }\n }\n }\n\n return true;\n };\n break;\n\n case 'range':\n columnDef.filterFn = (row, columnId, filterValue) => {\n if (!filterValue || !Array.isArray(filterValue)) {\n return true;\n }\n\n const [min, max] = filterValue as [number | undefined, number | undefined];\n if (min === undefined && max === undefined) {\n return true;\n }\n\n const cellValue = row.getValue(columnId);\n if (cellValue === null || cellValue === undefined) {\n return false;\n }\n\n const numValue = typeof cellValue === 'number' ? cellValue : Number(cellValue);\n if (isNaN(numValue)) {\n return false;\n }\n\n if (min !== undefined && numValue < min) {\n return false;\n }\n\n if (max !== undefined && numValue > max) {\n return false;\n }\n\n return true;\n };\n break;\n }\n }\n\n if (config.columns && config.columns.length > 0) {\n (columnDef as ColumnDef<T> & { columns: ColumnDef<T>[] }).columns = config.columns.map(subConfig =>\n columnConfigToColumnDef(subConfig)\n );\n }\n\n return columnDef;\n}\n","import { NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, ElementRef, inject, input } from '@angular/core';\nimport { ZIconComponent } from '@shival99/z-vnetcity/components/z-icon';\nimport { ZTooltipDirective } from '@shival99/z-vnetcity/components/z-tooltip';\nimport { type ZTooltipConfig } from '@shival99/z-vnetcity/components/z-tooltip';\nimport { ZSafeHtmlPipe } from '@shival99/z-vnetcity/pipes';\nimport { ZTranslateService } from '@shival99/z-vnetcity/services';\nimport { type ZTableIconPart } from '../z-table.types';\nimport { parseIconString, stripIconSyntax } from '../z-table.util';\n\n@Component({\n selector: 'z-table-icon-text',\n imports: [NgClass, ZIconComponent, ZTooltipDirective, ZSafeHtmlPipe],\n standalone: true,\n template: `\n <span class=\"z-table-icon-text-inner\">\n @for (part of translatedParts(); track $index) {\n @if (part.type === 'icon') {\n <z-icon\n class=\"shrink-0\"\n [zType]=\"$any(part.value)\"\n [zSize]=\"$any(part.size ?? 14)\"\n [zStrokeWidth]=\"part.strokeWidth ?? 1.5\"\n [ngClass]=\"part.class ?? ''\"\n />\n } @else {\n <span\n class=\"truncate select-text\"\n z-tooltip\n [zContent]=\"tooltipContent()\"\n [zTriggerElement]=\"triggerEl()\"\n [innerHTML]=\"part.value | zSafeHtml\"\n ></span>\n }\n }\n </span>\n `,\n styles: `\n :host {\n display: inline-flex;\n align-items: center;\n min-width: 0;\n max-width: 100%;\n }\n\n .z-table-icon-text-inner {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n line-height: 1.2;\n min-width: 0;\n max-width: 100%;\n }\n\n span.truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ZTableIconTextComponent {\n public readonly zText = input<string>('');\n public readonly zTooltip = input<string | ZTooltipConfig>('');\n public readonly zTriggerElement = input<HTMLElement | null>(null);\n\n private readonly _hostEl = inject(ElementRef).nativeElement;\n private readonly _zTranslate = inject(ZTranslateService);\n\n protected readonly triggerEl = computed(() => this.zTriggerElement() ?? this._hostEl);\n protected readonly translatedParts = computed<ZTableIconPart[]>(() => {\n this._zTranslate.currentLang();\n const parts = parseIconString(this.zText());\n return parts.map(part => {\n if (part.type === 'text') {\n const trimmedValue = part.value.trim();\n return { ...part, value: this._zTranslate.instant(trimmedValue) };\n }\n return part;\n });\n });\n\n protected readonly tooltipContent = computed(() => {\n this._zTranslate.currentLang();\n const tooltip = this.zTooltip();\n if (tooltip) {\n if (typeof tooltip === 'string') {\n return stripIconSyntax(this._zTranslate.instant(tooltip.trim()));\n }\n if (tooltip.content && typeof tooltip.content === 'string') {\n return stripIconSyntax(this._zTranslate.instant(tooltip.content.trim()));\n }\n }\n return stripIconSyntax(this._zTranslate.instant(this.zText().trim()));\n });\n}\n","import { Directive, ElementRef, Renderer2, input, inject } from '@angular/core';\n\n@Directive({\n selector: '[z-table-row-hover], [zTableRowHover]',\n standalone: true,\n host: {\n '(mouseenter)': 'onMouseEnter()',\n '(mouseleave)': 'onMouseLeave()',\n },\n})\nexport class ZTableRowHoverDirective {\n public readonly zTableRowHover = input<HTMLTableElement | null>(null);\n\n private readonly _elementRef = inject(ElementRef<HTMLTableRowElement>);\n private readonly _renderer = inject(Renderer2);\n public onMouseEnter(): void {\n this._handleHover(true);\n }\n\n public onMouseLeave(): void {\n this._handleHover(false);\n }\n\n private _handleHover(isHover: boolean): void {\n const row = this._elementRef.nativeElement;\n const table = this.zTableRowHover() || this._findParentTable(row);\n\n if (!table) {\n return;\n }\n\n const cellsInCurrentRow = Array.from(row.children) as HTMLTableCellElement[];\n cellsInCurrentRow.forEach(cell => {\n this._toggleCellHover(cell, isHover);\n });\n\n const tbody = table.querySelector('tbody');\n if (!tbody) {\n return;\n }\n\n const allRows = Array.from(tbody.querySelectorAll('tr')) as HTMLTableRowElement[];\n const currentRowIndex = allRows.indexOf(row);\n\n if (currentRowIndex === -1) {\n return;\n }\n\n const grid: {\n cell: HTMLTableCellElement;\n rowStart: number;\n rowEnd: number;\n }[] = [];\n\n for (let rowIdx = 0; rowIdx < allRows.length; rowIdx++) {\n const r = allRows[rowIdx];\n const cellsInRow = Array.from(r.children) as HTMLTableCellElement[];\n\n cellsInRow.forEach(cell => {\n const rowSpan = parseInt(cell.getAttribute('rowspan') || '1', 10);\n const rowEnd = rowIdx + rowSpan - 1;\n grid.push({\n cell,\n rowStart: rowIdx,\n rowEnd: rowEnd,\n });\n });\n }\n\n grid.forEach(item => {\n const coverCurrentRow = item.rowStart < currentRowIndex && item.rowEnd >= currentRowIndex;\n if (!coverCurrentRow) {\n return;\n }\n\n this._toggleCellHover(item.cell, isHover);\n });\n }\n\n private _toggleCellHover(cell: HTMLTableCellElement, isHover: boolean): void {\n if (isHover) {\n this._renderer.addClass(cell, 'z-row-hover');\n return;\n }\n\n this._renderer.removeClass(cell, 'z-row-hover');\n }\n\n private _findParentTable(element: HTMLElement): HTMLTableElement | null {\n let current = element.parentElement;\n while (current) {\n if (current.tagName === 'TABLE') {\n return current as HTMLTableElement;\n }\n current = current.parentElement;\n }\n return null;\n }\n}\n","import { Directive, ElementRef, inject, input, OnDestroy, AfterViewInit, NgZone } from '@angular/core';\nimport { Header } from '@tanstack/angular-table';\n\n@Directive({\n selector: '[z-table-resize],[zTableResize]',\n standalone: true,\n})\nexport class ZTableResizeDirective<T> implements AfterViewInit, OnDestroy {\n public readonly zTableResize = input.required<Header<T, unknown>>();\n\n private readonly _elementRef = inject(ElementRef<HTMLElement>);\n private readonly _ngZone = inject(NgZone);\n\n private _mousedownHandler: ((event: MouseEvent) => void) | null = null;\n private _touchstartHandler: ((event: TouchEvent) => void) | null = null;\n\n ngAfterViewInit(): void {\n const element = this._elementRef.nativeElement;\n const header = this.zTableResize();\n this._mousedownHandler = (event: MouseEvent) => {\n this._ngZone.run(() => {\n const resizeHandler = header.getResizeHandler();\n resizeHandler(event);\n });\n };\n\n this._touchstartHandler = (event: TouchEvent) => {\n this._ngZone.run(() => {\n const resizeHandler = header.getResizeHandler();\n resizeHandler(event);\n });\n };\n\n element.addEventListener('mousedown', this._mousedownHandler);\n element.addEventListener('touchstart', this._touchstartHandler, { passive: true });\n }\n\n ngOnDestroy(): void {\n const element = this._elementRef.nativeElement;\n\n if (this._mousedownHandler) {\n element.removeEventListener('mousedown', this._mousedownHandler);\n this._mousedownHandler = null;\n }\n\n if (this._touchstartHandler) {\n element.removeEventListener('touchstart', this._touchstartHandler);\n this._touchstartHandler = null;\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport type { Cell, CellContext, Row } from '@tanstack/angular-table';\nimport type { ZTableColumnConfig } from '../z-table.types';\nimport { findColumnConfig, isBodyConfig } from '../z-table.util';\n\n@Pipe({\n name: 'zTableCellBottom',\n standalone: true,\n pure: true,\n})\nexport class ZTableCellBottomPipe implements PipeTransform {\n transform<T>(cell: Cell<T, unknown>, columns: ZTableColumnConfig<T>[], allRows: Row<T>[]): boolean {\n if (allRows.length === 0) {\n return false;\n }\n\n const currentRowIndex = allRows.findIndex(r => r.id === cell.row.id);\n if (currentRowIndex === -1) {\n return false;\n }\n\n const lastRowIndex = allRows.length - 1;\n if (currentRowIndex === lastRowIndex) {\n return true;\n }\n\n const columnConfig = findColumnConfig(cell.column.id, columns);\n if (!columnConfig?.body || !isBodyConfig(columnConfig.body)) {\n return false;\n }\n\n const rowSpanValue = columnConfig.body.rowSpan;\n if (!rowSpanValue) {\n return false;\n }\n\n const actualRowSpan = this._getActualRowSpan(cell, currentRowIndex, rowSpanValue, allRows.length);\n if (actualRowSpan === 0) {\n return false;\n }\n\n return currentRowIndex + actualRowSpan - 1 >= lastRowIndex;\n }\n\n private _getActualRowSpan<T>(\n cell: Cell<T, unknown>,\n currentRowIndex: number,\n rowSpanValue: number | ((ctx: CellContext<T, unknown>) => number),\n totalRows: number\n ): number {\n if (typeof rowSpanValue === 'function') {\n return rowSpanValue(cell.getContext());\n }\n\n if (currentRowIndex % rowSpanValue !== 0) {\n return 0;\n }\n\n return Math.min(rowSpanValue, totalRows - currentRowIndex);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport type { ZTableColumnConfig } from '../z-table.types';\nimport { findColumnConfig, isBodyConfig } from '../z-table.util';\n\n@Pipe({\n name: 'zTableCellClickable',\n standalone: true,\n pure: true,\n})\nexport class ZTableCellClickablePipe implements PipeTransform {\n public transform<T>(columnId: string, columns: ZTableColumnConfig<T>[]): boolean {\n const columnConfig = findColumnConfig(columnId, columns);\n if (!columnConfig) {\n return false;\n }\n\n if (!isBodyConfig(columnConfig.body)) {\n return false;\n }\n\n return columnConfig.body.enabledClick === true;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport type { ZTooltipConfig } from '@shival99/z-vnetcity/components/z-tooltip';\nimport type { Cell } from '@tanstack/angular-table';\nimport type { ZTableColumnConfig } from '../z-table.types';\nimport { findColumnConfig, getBodyConfig } from '../z-table.util';\n\nconst Z_TABLE_BODY_ALIGN_MAP: Record<string, string> = {\n left: 'text-left',\n center: 'text-center',\n right: 'text-right',\n};\n\n@Pipe({\n name: 'zTableCellConfig',\n standalone: true,\n pure: true,\n})\nexport class ZTableCellConfigPipe implements PipeTransform {\n transform<T>(\n cell: Cell<T, unknown>,\n columns: ZTableColumnConfig<T>[],\n property: 'cellClass' | 'contentClass'\n ): string;\n transform<T>(\n cell: Cell<T, unknown>,\n columns: ZTableColumnConfig<T>[],\n property: 'cellStyle' | 'contentStyle'\n ): Record<string, string>;\n transform<T>(\n cell: Cell<T, unknown>,\n columns: ZTableColumnConfig<T>[],\n property: 'contentTooltip'\n ): string | ZTooltipConfig;\n transform<T>(\n cell: Cell<T, unknown>,\n columns: ZTableColumnConfig<T>[],\n property: 'cellClass' | 'cellStyle' | 'contentClass' | 'contentStyle' | 'contentTooltip'\n ): string | Record<string, string> | ZTooltipConfig {\n const columnConfig = findColumnConfig(cell.column.id, columns);\n const bodyConfig = getBodyConfig(columnConfig, cell.getContext());\n\n switch (property) {\n case 'cellClass':\n return this._getCellClass(bodyConfig);\n\n case 'cellStyle':\n return bodyConfig.style || {};\n\n case 'contentClass':\n return (bodyConfig.contentClass as string) || '';\n\n case 'contentStyle':\n return bodyConfig.contentStyle || {};\n\n case 'contentTooltip':\n return (bodyConfig.tooltip as string | ZTooltipConfig | undefined) || '';\n\n default:\n return '';\n }\n }\n\n private _getCellClass<T>(bodyConfig: ReturnType<typeof getBodyConfig<T>>): string {\n const classes: string[] = [];\n\n if (bodyConfig.align) {\n const alignClass = Z_TABLE_BODY_ALIGN_MAP[bodyConfig.align];\n if (alignClass) {\n classes.push(alignClass);\n }\n }\n\n if (bodyConfig.class) {\n classes.push(bodyConfig.class as string);\n }\n\n return classes.join(' ');\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport type { CellContext } from '@tanstack/angular-table';\nimport type { ZTableColumnConfig, ZTableEditConfig, ZTableEditType } from '../z-table.types';\nimport { isBodyConfig, findColumnConfig } from '../z-table.util';\n\nexport interface ZTableEditCellInfo {\n enabled: boolean;\n type: ZTableEditType;\n config: ZTableEditConfig<unknown> | null;\n}\n\n@Pipe({\n name: 'zTableCellEdit',\n standalone: true,\n pure: true,\n})\nexport class ZTableCellEditPipe implements PipeTransform {\n transform<T>(cell: CellContext<T, unknown>, columns: ZTableColumnConfig<T>[]): ZTableEditCellInfo {\n const columnConfig = findColumnConfig(cell.column.id, columns);\n if (!columnConfig) {\n return { enabled: false, type: 'text', config: null };\n }\n\n const { body } = columnConfig;\n if (!isBodyConfig(body)) {\n return { enabled: false, type: 'text', config: null };\n }\n\n const { edit } = body;\n if (!edit) {\n return { enabled: false, type: 'text', config: null };\n }\n\n if (typeof edit === 'boolean') {\n return {\n enabled: edit,\n type: 'text',\n config: { enabled: edit, type: 'text' },\n };\n }\n\n return {\n enabled: edit.enabled !== false,\n type: edit.type ?? 'text',\n config: edit as ZTableEditConfig<unknown>,\n };\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport type { Cell, Column, Header } from '@tanstack/angular-table';\n\n@Pipe({\n name: 'zTableCellOffset',\n standalone: true,\n pure: true,\n})\nexport class ZTableCellOffsetPipe implements PipeTransform {\n /**\n * Calculate if a cell/header is at the left edge (offset = 0)\n * Returns true if the cell should have no border-left (it's at the leftmost position)\n */\n transform<T>(item: Cell<T, unknown> | Header<T, unknown>, orderedColumns: Column<T>[]): boolean {\n const columnId = item.column.id;\n // Find the index of this column in the ordered columns list\n const columnIndex = orderedColumns.findIndex(col => col.id === columnId);\n // If it's the first column (index 0), it's at the left edge\n if (columnIndex === 0) {\n return true;\n }\n // For headers with colSpan, check if any of its leaf columns is the first\n if ('getLeafHeaders' in item) {\n const header = item as Header<T, unknown>;\n const leafHeaders = header.getLeafHeaders();\n\n for (const leaf of leafHeaders) {\n const leafIndex = orderedColumns.findIndex(col => col.id === leaf.column.id);\n if (leafIndex === 0) {\n return true;\n }\n }\n }\n\n return false;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport type { Header } from '@tanstack/angular-table';\nimport type { ZTableColumnConfig, ZTableCellPinProperty, ZTableCellType } from '../z-table.types';\nimport { findColumnConfig, getHeaderColSpan, getFooterColSpan } from '../z-table.util';\n\n@Pipe({\n name: 'zTableCellPin',\n standalone: true,\n pure: true,\n})\nexport class ZTableCellPinPipe implements PipeTransform {\n transform<T>(\n item: Header<T, unknown>,\n property: ZTableCellPinProperty,\n columns?: ZTableColumnConfig<T>[],\n cellType: ZTableCellType = 'header'\n ): boolean {\n switch (property) {\n case 'isLastLeftPinned':\n return this._isLastLeftPinned(item, columns ?? [], cellType);\n\n case 'isFirstRightPinned':\n return this._isFirstRightPinned(item, columns ?? [], cellType);\n\n case 'isLastRightPinned':\n return this._isLastRightPinned(item, columns ?? [], cellType);\n\n default:\n return false;\n }\n }\n\n private _isLastLeftPinned<T>(\n header: Header<T, unknown>,\n columns: ZTableColumnConfig<T>[],\n cellType: ZTableCellType\n ): boolean {\n const leafHeaders = header.getLeafHeaders();\n const hasLastLeftPinnedLeaf = leafHeaders.some(\n lh => lh.column.getIsPinned() === 'left' && lh.column.getIsLastColumn('left')\n );\n\n if (hasLastLeftPinnedLeaf) {\n return true;\n }\n\n const columnConfig = findColumnConfig(header.column.id, columns);\n const configColSpan = cellType === 'footer' ? getFooterColSpan(columnConfig) : getHeaderColSpan(columnConfig);\n if (!configColSpan || configColSpan <= 1) {\n return false;\n }\n\n const { headers: allHeadersInGroup } = header.headerGroup;\n const currentIndex = allHeadersInGroup.findIndex(h => h.id === header.id);\n\n if (currentIndex === -1) {\n return false;\n }\n\n for (let i = 0; i < configColSpan && currentIndex + i < allHeadersInGroup.length; i++) {\n const targetHeader = allHeadersInGroup[currentIndex + i];\n const targetLeafHeaders = targetHeader.getLeafHeaders();\n const hasLastLeft = targetLeafHeaders.some(\n lh => lh.column.getIsPinned() === 'left' && lh.column.getIsLastColumn('left')\n );\n\n if (hasLastLeft) {\n return true;\n }\n }\n\n return false;\n }\n\n private _isFirstRightPinned<T>(\n header: Header<T, unknown>,\n columns: ZTableColumnConfig<T>[],\n cellType: ZTableCellType\n ): boolean {\n const leafHeaders = header.getLeafHeaders();\n const hasFirstRightPinnedLeaf = leafHeaders.some(\n lh => lh.column.getIsPinned() === 'right' && lh.column.getIsFirstColumn('right')\n );\n if (hasFirstRightPinnedLeaf) {\n return true;\n }\n\n const columnConfig = findColumnConfig(header.column.id, columns);\n const configColSpan = cellType === 'footer' ? getFooterColSpan(columnConfig) : getHeaderColSpan(columnConfig);\n\n if (!configColSpan || configColSpan <= 1) {\n return false;\n }\n\n const { headers: allHeadersInGroup } = header.headerGroup;\n const currentIndex = allHeadersInGroup.findIndex(h => h.id === header.id);\n\n if (currentIndex === -1) {\n return false;\n }\n\n for (let i = 0; i < configColSpan && currentIndex + i < allHeadersInGroup.length; i++) {\n const targetHeader = allHeadersInGroup[currentIndex + i];\n const targetLeafHeaders = targetHeader.getLeafHeaders();\n const hasFirst = targetLeafHeaders.some(\n lh => lh.column.getIsPinned() === 'right' && lh.column.getIsFirstColumn('right')\n );\n if (hasFirst) {\n return true;\n }\n }\n\n return false;\n }\n\n private _isLastRightPinned<T>(\n header: Header<T, unknown>,\n columns: ZTableColumnConfig<T>[],\n cellType: ZTableCellType\n ): boolean {\n const leafHeaders = header.getLeafHeaders();\n const hasLastRightPinnedLeaf = leafHeaders.some(\n lh => lh.column.getIsPinned() === 'right' && lh.column.getIsLastColumn('right')\n );\n if (hasLastRightPinnedLeaf) {\n return true;\n }\n\n const columnConfig = findColumnConfig(header.column.id, columns);\n const configColSpan = cellType === 'footer' ? getFooterColSpan(columnConfig) : getHeaderColSpan(columnConfig);\n\n if (!configColSpan || configColSpan <= 1) {\n return false;\n }\n\n const { headers: allHeadersInGroup } = header.headerGroup;\n const currentIndex = allHeadersInGroup.findIndex(h => h.id === header.id);\n\n if (currentIndex === -1) {\n return false;\n }\n\n const endIndex = currentIndex + configColSpan - 1;\n if (endIndex >= allHeadersInGroup.length) {\n return false;\n }\n\n const targetHeader = allHeadersInGroup[endIndex];\n const targetLeafHeaders = targetHeader.getLeafHeaders();\n return targetLeafHeaders.some(lh => lh.column.getIsPinned() === 'right' && lh.column.getIsLastColumn('right'));\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport type { Cell, Header } from '@tanstack/angular-table';\nimport type { ZTableCellRenderType, ZTableColumnConfig } from '../z-table.types';\nimport { shouldBodyCellRenderColSpan, shouldHeaderRender, shouldFooterRender } from '../z-table.util';\n\n@Pipe({\n name: 'zTableCellRender',\n standalone: true,\n pure: true,\n})\nexport class ZTableCellRenderPipe implements PipeTransform {\n transform<T>(\n cellOrHeader: Cell<T, unknown> | Header<T, unknown>,\n allCellsOrHeaders: Cell<T, unknown>[] | Header<T, unknown>[],\n columns: ZTableColumnConfig<T>[],\n type: ZTableCellRenderType\n ): boolean {\n switch (type) {\n case 'header':\n return shouldHeaderRender(\n cellOrHeader as Header<T, unknown>,\n allCellsOrHeaders as Header<T, unknown>[],\n columns\n );\n case 'footer':\n return shouldFooterRender(\n cellOrHeader as Header<T, unknown>,\n allCellsOrHeaders as Header<T, unknown>[],\n columns\n );\n case 'body':\n return shouldBodyCellRenderColSpan(\n cellOrHeader as Cell<T, unknown>,\n allCellsOrHeaders as Cell<T, unknown>[],\n columns\n );\n default:\n return true;\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport type { ZTooltipConfig } from '@shival99/z-vnetcity/components/z-tooltip';\nimport type { ZTableColumnConfig } from '../z-table.types';\nimport { findColumnConfig, getHeaderConfig, getFooterConfig, isBodyConfig } from '../z-table.util';\n\nconst Z_TABLE_ALIGN_MAP: Record<string, string> = {\n left: 'text-left',\n center: 'text-center',\n right: 'text-right',\n};\n\n@Pipe({\n name: 'zTableColumnConfig',\n standalone: true,\n pure: true,\n})\nexport class ZTableColumnConfigPipe implements PipeTransform {\n transform<T>(\n columnId: string,\n columns: ZTableColumnConfig<T>[],\n property:\n | 'headerClass'\n | 'headerAlignClass'\n | 'headerContentClass'\n | 'footerClass'\n | 'footerAlignClass'\n | 'footerContentClass'\n ): string;\n transform<T>(\n columnId: string,\n columns: ZTableColumnConfig<T>[],\n property: 'headerStyle' | 'headerContentStyle' | 'footerStyle' | 'footerContentStyle'\n ): Record<string, string>;\n transform<T>(\n columnId: string,\n columns: ZTableColumnConfig<T>[],\n property: 'headerTooltip' | 'footerTooltip'\n ): string | ZTooltipConfig;\n transform<T>(\n columnId: string,\n columns: ZTableColumnConfig<T>[],\n property: 'hasBodyRowSpan' | 'enableOrdering' | 'enablePinning'\n ): boolean;\n transform<T>(columnId: string, columns: ZTableColumnConfig<T>[], property: 'footerContent'): unknown;\n transform<T>(\n columnId: string,\n columns: ZTableColumnConfig<T>[],\n property:\n | 'headerClass'\n | 'headerStyle'\n | 'headerTooltip'\n | 'headerAlignClass'\n | 'headerContentClass'\n | 'headerContentStyle'\n | 'footerClass'\n | 'footerStyle'\n | 'footerTooltip'\n | 'footerAlignClass'\n | 'footerContentClass'\n | 'footerContentStyle'\n | 'hasBodyRowSpan'\n | 'footerContent'\n | 'enableOrdering'\n | 'enablePinning'\n ): string | Record<string, string> | ZTooltipConfig | boolean | unknown {\n const columnConfig = findColumnConfig(columnId, columns);\n\n switch (property) {\n case 'headerClass': {\n const headerConfig = getHeaderConfig(columnConfig);\n return headerConfig.class || '';\n }\n\n case 'headerStyle': {\n const headerConfig = getHeaderConfig(columnConfig);\n return headerConfig.style || {};\n }\n\n case 'headerTooltip': {\n const headerConfig = getHeaderConfig(columnConfig);\n return (headerConfig.tooltip as string | ZTooltipConfig) || '';\n }\n\n case 'headerAlignClass': {\n const headerConfig = getHeaderConfig(columnConfig);\n return headerConfig.align ? Z_TABLE_ALIGN_MAP[headerConfig.align] || '' : '';\n }\n\n case 'headerContentClass': {\n const headerConfig = getHeaderConfig(columnConfig);\n const { contentClass } = headerConfig;\n if (typeof contentClass === 'function') {\n return '';\n }\n return contentClass || '';\n }\n\n case 'headerContentStyle': {\n const headerConfig = getHeaderConfig(columnConfig);\n const { contentStyle } = headerConfig;\n if (typeof contentStyle === 'function') {\n return {};\n }\n return contentStyle || {};\n }\n\n case 'footerClass': {\n const footerConfig = getFooterConfig(columnConfig);\n return footerConfig.class || '';\n }\n\n case 'footerStyle': {\n const footerConfig = getFooterConfig(columnConfig);\n return footerConfig.style || {};\n }\n\n case 'footerTooltip': {\n const footerConfig = getFooterConfig(columnConfig);\n return (footerConfig.tooltip as string | ZTooltipConfig) || '';\n }\n\n case 'footerAlignClass': {\n const footerConfig = getFooterConfig(columnConfig);\n return footerConfig.align ? Z_TABLE_ALIGN_MAP[footerConfig.align] || '' : '';\n }\n\n case 'footerContentClass': {\n const footerConfig = getFooterConfig(columnConfig);\n const { contentClass } = footerConfig;\n if (typeof contentClass === 'function') {\n return '';\n }\n return contentClass || '';\n }\n\n case 'footerContentStyle': {\n const footerConfig = getFooterConfig(columnConfig);\n const { contentStyle } = footerConfig;\n if (typeof contentStyle === 'function') {\n return {};\n }\n return contentStyle || {};\n }\n\n case 'hasBodyRowSpan':\n return columnConfig ? isBodyConfig(columnConfig.body) && columnConfig.body.rowSpan !== undefined : false;\n\n case 'enableOrdering':\n return columnConfig?.enableOrdering !== false;\n\n case 'enablePinning':\n return columnConfig?.enablePinning !== false;\n\n case 'footerContent': {\n const footerConfig = getFooterConfig(columnConfig);\n return footerConfig.content || '';\n }\n\n default:\n return '';\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport type { ZTableColumnConfig } from '../z-table.types';\nimport { findColumnConfig, getHeaderConfig, stripIconSyntax } from '../z-table.util';\n\n@Pipe({\n name: 'zTableColumnHeader',\n standalone: true,\n pure: true,\n})\nexport class ZTableColumnHeaderPipe implements PipeTransform {\n transform<T>(columnId: string, columns: ZTableColumnConfig<T>[]): string {\n const columnConfig = findColumnConfig(columnId, columns);\n if (!columnConfig) {\n return columnId;\n }\n\n const headerConfig = getHeaderConfig(columnConfig);\n if (typeof headerConfig.content === 'string') {\n return stripIconSyntax(headerConfig.content);\n }\n\n return columnId;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport type { ZTableColumnConfig } from '../z-table.types';\nimport { getHeaderConfig, stripIconSyntax } from '../z-table.util';\n\n@Pipe({\n name: 'zTableColumnParents',\n standalone: true,\n pure: true,\n})\nexport class ZTableColumnParentsPipe implements PipeTransform {\n transform<T>(columnId: string, columns: ZTableColumnConfig<T>[]): string {\n const parents: string[] = [];\n this._findParents(columnId, columns, parents);\n return parents.length > 0 ? parents.join(' › ') : '';\n }\n\n private _findParents<T>(\n columnId: string,\n columns: ZTableColumnConfig<T>[],\n parents: string[],\n currentParents: string[] = []\n ): boolean {\n for (const col of columns) {\n if (col.id === columnId) {\n parents.push(...currentParents);\n return true;\n }\n\n if (col.columns && col.columns.length > 0) {\n const parentName = this._getColumnName(col);\n const found = this._findParents(columnId, col.columns, parents, [...currentParents, parentName]);\n if (found) {\n return true;\n }\n }\n }\n\n return false;\n }\n\n private _getColumnName<T>(col: ZTableColumnConfig<T>): string {\n const headerConfig = getHeaderConfig(col);\n if (typeof headerConfig.content === 'string') {\n return stripIconSyntax(headerConfig.content);\n }\n return col.id;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport type { Header } from '@tanstack/angular-table';\nimport type { ZTableColumnConfig } from '../z-table.types';\nimport { findColumnConfig } from '../z-table.util';\n\n@Pipe({\n name: 'zTableFooterContent',\n standalone: true,\n pure: true,\n})\nexport class ZTableFooterContentPipe implements PipeTransform {\n transform<T>(footerGroup: { headers: Header<T, unknown>[] }, columns: ZTableColumnConfig<T>[]): boolean {\n return footerGroup.headers.some(header => {\n const columnConfig = findColumnConfig(header.column.id, columns);\n return columnConfig?.footer !== undefined;\n });\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { hasIconSyntax } from '../z-table.util';\n\n@Pipe({\n name: 'zTableHasIcon',\n standalone: true,\n pure: true,\n})\nexport class ZTableHasIconPipe implements PipeTransform {\n transform(content: unknown): boolean {\n if (typeof content !== 'string') {\n return false;\n }\n\n return hasIconSyntax(content);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport type { Column, Cell, Header, Table } from '@tanstack/angular-table';\nimport type { ZPinningStyles, ZTableColumnConfig } from '../z-table.types';\nimport {\n shouldHeaderRender,\n getHeaderColSpan,\n getFooterColSpan,\n findColumnConfig,\n getBodyColSpan,\n shouldBodyCellRenderColSpan,\n shouldFooterRender,\n} from '../z-table.util';\n\n@Pipe({\n name: 'zTablePinningStyles',\n standalone: true,\n pure: false,\n})\nexport class ZTablePinningStylesPipe implements PipeTransform {\n /**\n * Main transform method - routes to appropriate calculation based on type\n *\n * @param column - The column being styled\n * @param item - The cell or header item\n * @param type - 'header' | 'body' | 'footer'\n * @param tableOrCells - Table instance or array of cells\n * @param columns - Column configuration array\n * @param _sizingTrigger - Optional sizing trigger to force recalculation on resize\n * @returns CSS style object for sticky positioning\n */\n transform<T>(\n column: Column<T, unknown>,\n item: Cell<T, unknown> | Header<T, unknown> | null,\n type: 'header' | 'body' | 'footer',\n tableOrCells?: Table<T> | Cell<T, unknown>[],\n columns?: ZTableColumnConfig<T>[],\n _sizingTrigger?: unknown\n ): Record<string, string | number | undefined> {\n if (type === 'body') {\n const allCells = Array.isArray(tableOrCells) ? tableOrCells : undefined;\n return this._getBodyPinningStyles(column, item as Cell<T, unknown>, allCells, columns || []);\n }\n\n if (type === 'footer' && item && tableOrCells && !Array.isArray(tableOrCells)) {\n return this._getFooterPinningStyles(column, item as Header<T, unknown>, tableOrCells, columns || []);\n }\n\n if (type === 'header' && item && tableOrCells && !Array.isArray(tableOrCells)) {\n return this._getHeaderPinningStyles(column, item as Header<T, unknown>, tableOrCells, columns || []);\n }\n\n return {};\n }\n\n private _getBodyPinningStyles<T>(\n column: Column<T, unknown>,\n cell: Cell<T, unknown> | null,\n allCells: Cell<T, unknown>[] | undefined,\n columns: ZTableColumnConfig<T>[]\n ): ZPinningStyles {\n const isPinned = column.getIsPinned();\n let leftOffset = column.getStart('left');\n let rightOffset = column.getAfter('right');\n\n if (allCells && cell && isPinned === 'left') {\n leftOffset = this._calculateBodyLeftOffset(cell, allCells, columns);\n }\n\n if (allCells && cell && isPinned === 'right') {\n rightOffset = this._calculateBodyRightOffset(cell, allCells, columns);\n }\n\n return this._buildPinningResult(isPinned, leftOffset, rightOffset);\n }\n\n /**\n * Calculates left offset for a body cell considering colspan.\n * Sums widths of all cells before the current cell.\n */\n private _calculateBodyLeftOffset<T>(\n cell: Cell<T, unknown>,\n allCells: Cell<T, unknown>[],\n columns: ZTableColumnConfig<T>[]\n ): number {\n const currentIdx = allCells.findIndex(c => c.id === cell.id);\n if (currentIdx <= 0) {\n return 0;\n }\n\n let calculatedOffset = 0;\n for (let i = 0; i < currentIdx; i++) {\n const prevCell = allCells[i];\n // Skip cells that are covered by colspan from previous cells\n if (!shouldBodyCellRenderColSpan(prevCell, allCells, columns)) {\n continue;\n }\n\n calculatedOffset += this._getCellWidthWithColspan(prevCell, allCells, i, columns);\n }\n\n return calculatedOffset;\n }\n\n /**\n * Calculates right offset for a body cell considering colspan.\n * Sums widths of all cells after the current cell.\n */\n private _calculateBodyRightOffset<T>(\n cell: Cell<T, unknown>,\n allCells: Cell<T, unknown>[],\n columns: ZTableColumnConfig<T>[]\n ): number {\n const currentIdx = allCells.findIndex(c => c.id === cell.id);\n // Last cell has 0 right offset\n if (currentIdx === allCells.length - 1) {\n return 0;\n }\n\n if (currentIdx < 0) {\n return 0;\n }\n\n let calculatedOffset = 0;\n for (let i = currentIdx + 1; i < allCells.length; i++) {\n const nextCell = allCells[i];\n\n // Skip cells that are covered by colspan\n if (!shouldBodyCellRenderColSpan(nextCell, allCells, columns)) {\n continue;\n }\n\n calculatedOffset += this._getCellWidthWithColspan(nextCell, allCells, i, columns);\n }\n\n return calculatedOffset;\n }\n\n /**\n * Gets cell width including any colspan expansion.\n * If cell has colspan > 1, adds widths of covered cells.\n */\n private _getCellWidthWithColspan<T>(\n cell: Cell<T, unknown>,\n allCells: Cell<T, unknown>[],\n cellIndex: number,\n columns: ZTableColumnConfig<T>[]\n ): number {\n const config = findColumnConfig(cell.column.id, columns);\n const colSpan = getBodyColSpan(config, cell.getContext());\n\n if (colSpan && colSpan > 1) {\n let spanWidth = cell.column.getSize();\n for (let j = 1; j < colSpan && cellIndex + j < allCells.length; j++) {\n spanWidth += allCells[cellIndex + j].column.getSize();\n }\n return spanWidth;\n }\n\n return cell.column.getSize();\n }\n\n private _getHeaderPinningStyles<T>(\n column: Column<T, unknown>,\n headerCurrent: Header<T, unknown>,\n table: Table<T>,\n columns: ZTableColumnConfig<T>[]\n ): ZPinningStyles {\n const isPinnedColumn = column.getIsPinned();\n if (!isPinnedColumn) {\n return this._buildPinningResult(undefined, 0, 0);\n }\n\n const isChildPinned = this._determineChildPinDirection(column, headerCurrent);\n const headerGroups = headerCurrent.headerGroup.headers;\n\n let leftOffset: number | undefined;\n let rightOffset: number | undefined;\n\n if (isChildPinned === 'left') {\n leftOffset = this._calculateHeaderLeftOffset(headerCurrent, headerGroups, columns);\n }\n\n if (isChildPinned === 'right') {\n rightOffset = this._calculateHeaderRightOffset(headerCurrent, headerGroups, columns);\n }\n\n return {\n position: isChildPinned ? 'sticky' : 'relative',\n zIndex: isChildPinned ? 1 : 0,\n left: leftOffset !== undefined ? `${leftOffset}px` : undefined,\n right: rightOffset !== undefined ? `${rightOffset}px` : undefined,\n };\n }\n\n /**\n * Determines if any child header is pinned and returns the direction.\n * Checks leaf headers to find pinning status.\n */\n private _determineChildPinDirection<T>(\n column: Column<T, unknown>,\n header: Header<T, unknown>\n ): 'left' | 'right' | undefined {\n const isPinnedColumn = column.getIsPinned();\n const leafHeaders = header.getLeafHeaders();\n const filterChild = leafHeaders.filter(h => h.column.id !== column.id);\n\n // No children - use column's own pin status\n if (filterChild.length === 0) {\n return isPinnedColumn || undefined;\n }\n\n // Check if any child is pinned\n for (const child of filterChild) {\n const isPinned = child.column.getIsPinned();\n if (isPinned) {\n return isPinned;\n }\n }\n\n return undefined;\n }\n\n /**\n * Calculates left offset for a header cell.\n * Sums widths of all left-pinned headers before current header.\n */\n private _calculateHeaderLeftOffset<T>(\n headerCurrent: Header<T, unknown>,\n headerGroups: Header<T, unknown>[],\n columns: ZTableColumnConfig<T>[]\n ): number {\n const headersBeforeCurrent = this._getLeftPinnedHeadersBefore(headerCurrent, headerGroups);\n\n return headersBeforeCurrent.reduce((sum, h) => {\n if (!shouldHeaderRender(h, headerGroups, columns)) {\n return sum;\n }\n return sum + this._getHeaderWidthWithColspan(h, headerGroups, columns, 'header');\n }, 0);\n }\n\n /**\n * Calculates right offset for a header cell.\n * Sums widths of all right-pinned headers after current header.\n */\n private _calculateHeaderRightOffset<T>(\n headerCurrent: Header<T, unknown>,\n headerGroups: Header<T, unknown>[],\n columns: ZTableColumnConfig<T>[]\n ): number {\n const headersAfterCurrent = this._getRightPinnedHeadersAfter(headerCurrent, headerGroups);\n\n return headersAfterCurrent.reduce((sum, h) => {\n if (!shouldHeaderRender(h, headerGroups, columns)) {\n return sum;\n }\n return sum + this._getHeaderWidthWithColspan(h, headerGroups, columns, 'header');\n }, 0);\n }\n\n /**\n * Gets all left-pinned headers that appear before the current header.\n */\n private _getLeftPinnedHeadersBefore<T>(\n headerCurrent: Header<T, unknown>,\n headerGroups: Header<T, unknown>[]\n ): Header<T, unknown>[] {\n const result: Header<T, unknown>[] = [];\n const indexOfHeader = headerGroups.findIndex(h => h.id === headerCurrent.id);\n\n for (let i = 0; i < indexOfHeader; i++) {\n const leafs = headerGroups[i].getLeafHeaders();\n const hasLeftPinned = leafs.some(lh => lh.column.getIsPinned() === 'left');\n if (hasLeftPinned) {\n result.push(headerGroups[i]);\n }\n }\n\n return result;\n }\n\n /**\n * Gets all headers that appear after the current header (for right pinning).\n */\n private _getRightPinnedHeadersAfter<T>(\n headerCurrent: Header<T, unknown>,\n headerGroups: Header<T, unknown>[]\n ): Header<T, unknown>[] {\n const result: Header<T, unknown>[] = [];\n const reversed = [...headerGroups].reverse();\n const indexOfHeader = reversed.findIndex(h => h.id === headerCurrent.id);\n\n for (let i = 0; i < indexOfHeader; i++) {\n result.push(reversed[i]);\n }\n\n return result;\n }\n\n private _getFooterPinningStyles<T>(\n column: Column<T, unknown>,\n footerCurrent: Header<T, unknown>,\n table: Table<T>,\n columns: ZTableColumnConfig<T>[]\n ): ZPinningStyles {\n const isPinnedColumn = column.getIsPinned();\n if (!isPinnedColumn) {\n return this._buildPinningResult(undefined, 0, 0);\n }\n\n const isChildPinned = this._determineChildPinDirection(column, footerCurrent);\n const footerHeaders = footerCurrent.headerGroup.headers;\n\n let leftOffset: number | undefined;\n let rightOffset: number | undefined;\n\n if (isChildPinned === 'left') {\n leftOffset = this._calculateFooterLeftOffset(footerCurrent, footerHeaders, columns);\n }\n\n if (isChildPinned === 'right') {\n rightOffset = this._calculateFooterRightOffset(footerCurrent, footerHeaders, columns);\n }\n\n return {\n position: isChildPinned ? 'sticky' : 'relative',\n zIndex: isChildPinned ? 1 : 0,\n left: leftOffset !== undefined ? `${leftOffset}px` : undefined,\n right: rightOffset !== undefined ? `${rightOffset}px` : undefined,\n };\n }\n\n /**\n * Calculates left offset for a footer cell.\n * Sums widths of all left-pinned footers before current footer.\n */\n private _calculateFooterLeftOffset<T>(\n footerCurrent: Header<T, unknown>,\n footerHeaders: Header<T, unknown>[],\n columns: ZTableColumnConfig<T>[]\n ): number {\n const footersBeforeCurrent = this._getLeftPinnedHeadersBefore(footerCurrent, footerHeaders);\n\n return footersBeforeCurrent.reduce((sum, h) => {\n if (!shouldFooterRender(h, footerHeaders, columns)) {\n return sum;\n }\n return sum + this._getHeaderWidthWithColspan(h, footerHeaders, columns, 'footer');\n }, 0);\n }\n\n /**\n * Calculates right offset for a footer cell.\n * Handles colspan coverage to exclude covered cells from calculation.\n */\n private _calculateFooterRightOffset<T>(\n footerCurrent: Header<T, unknown>,\n footerHeaders: Header<T, unknown>[],\n columns: ZTableColumnConfig<T>[]\n ): number {\n const footersAfterCurrent = this._getRightPinnedHeadersAfter(footerCurrent, footerHeaders);\n // Check if current footer has colspan\n const currentConfig = findColumnConfig(footerCurrent.column.id, columns);\n const currentColSpan = getFooterColSpan(currentConfig);\n\n if (currentColSpan && currentColSpan > 1) {\n return this._calculateRightOffsetWithColspan(\n footerCurrent,\n footerHeaders,\n footersAfterCurrent,\n currentColSpan,\n columns\n );\n }\n\n // No colspan - sum all footers after\n return footersAfterCurrent.reduce((sum, h) => {\n if (!shouldFooterRender(h, footerHeaders, columns)) {\n return sum;\n }\n return sum + this._getHeaderWidthWithColspan(h, footerHeaders, columns, 'footer');\n }, 0);\n }\n\n /**\n * Calculates right offset when current footer has colspan.\n * Excludes cells that are covered by the colspan.\n */\n private _calculateRightOffsetWithColspan<T>(\n footerCurrent: Header<T, unknown>,\n footerHeaders: Header<T, unknown>[],\n footersAfterCurrent: Header<T, unknown>[],\n colSpan: number,\n columns: ZTableColumnConfig<T>[]\n ): number {\n const currentIdx = footerHeaders.findIndex(h => h.id === footerCurrent.id);\n const coveredCount = Math.min(colSpan - 1, footerHeaders.length - currentIdx - 1);\n\n // Build set of covered column IDs\n const coveredColumnIds = new Set<string>();\n for (let j = 1; j <= coveredCount && currentIdx + j < footerHeaders.length; j++) {\n coveredColumnIds.add(footerHeaders[currentIdx + j].id);\n }\n\n // Only sum uncovered footers\n const uncoveredFooters = footersAfterCurrent.filter(h => !coveredColumnIds.has(h.id));\n\n return uncoveredFooters.reduce((sum, h) => {\n if (!shouldFooterRender(h, footerHeaders, columns)) {\n return sum;\n }\n return sum + h.column.getSize();\n }, 0);\n }\n\n private _getHeaderWidthWithColspan<T>(\n header: Header<T, unknown>,\n allHeaders: Header<T, unknown>[],\n columns: ZTableColumnConfig<T>[],\n type: 'header' | 'footer'\n ): number {\n const getColSpan = type === 'header' ? getHeaderColSpan : getFooterColSpan;\n const shouldRender = type === 'header' ? shouldHeaderRender : shouldFooterRender;\n if (header.subHeaders.length > 0) {\n const pinDirection = type === 'header' ? 'left' : 'right';\n return header.subHeaders\n .filter(subH => subH.column.getIsPinned() === pinDirection || subH.column.getIsPinned())\n .filter(subH => shouldRender(subH, header.subHeaders, columns))\n .reduce((subAcc, subH) => subAcc + this._getSingleHeaderWidth(subH, header.subHeaders, columns, getColSpan), 0);\n }\n\n return this._getSingleHeaderWidth(header, allHeaders, columns, getColSpan);\n }\n\n /**\n * Gets width of a single header considering its colspan.\n */\n private _getSingleHeaderWidth<T>(\n header: Header<T, unknown>,\n allHeaders: Header<T, unknown>[],\n columns: ZTableColumnConfig<T>[],\n getColSpanFn: (config: ZTableColumnConfig<T> | undefined) => number | undefined\n ): number {\n const config = findColumnConfig(header.column.id, columns);\n const colSpan = getColSpanFn(config);\n\n if (colSpan && colSpan > 1) {\n const currentIdx = allHeaders.findIndex(h => h.id === header.id);\n let totalWidth = header.column.getSize();\n\n for (let j = 1; j < colSpan && currentIdx + j < allHeaders.length; j++) {\n totalWidth += allHeaders[currentIdx + j].column.getSize();\n }\n\n return totalWidth;\n }\n\n return header.column.getSize();\n }\n\n /**\n * Builds the final pinning styles result object.\n */\n private _buildPinningResult(\n isPinned: 'left' | 'right' | false | undefined,\n leftOffset: number,\n rightOffset: number\n ): ZPinningStyles {\n return {\n left: isPinned === 'left' ? `${leftOffset}px` : undefined,\n right: isPinned === 'right' ? `${rightOffset}px` : undefined,\n position: isPinned ? 'sticky' : 'relative',\n zIndex: isPinned ? 1 : 0,\n };\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport type { Row, Table } from '@tanstack/angular-table';\n\n@Pipe({\n name: 'zTableRow',\n standalone: true,\n pure: true,\n})\nexport class ZTableRowPipe implements PipeTransform {\n transform<T>(row: Row<T>, table: Table<T>, property: 'isLastTopPinned' | 'isFirstBottomPinned'): boolean;\n transform<T>(\n row: Row<T>,\n table: Table<T>,\n property: 'pinningStyles',\n virtualRowHeight?: number\n ): Record<string, string | number>;\n transform<T>(\n row: Row<T>,\n table: Table<T>,\n property: 'isLastTopPinned' | 'isFirstBottomPinned' | 'pinningStyles',\n virtualRowHeight?: number\n ): boolean | Record<string, string | number> {\n switch (property) {\n case 'isLastTopPinned':\n return this._isLastTopPinnedRow(row, table);\n\n case 'isFirstBottomPinned':\n return this._isFirstBottomPinnedRow(row, table);\n\n case 'pinningStyles':\n return this._getRowPinningStyles(row, table, virtualRowHeight ?? 40);\n\n default:\n return false;\n }\n }\n\n private _isLastTopPinnedRow<T>(row: Row<T>, table: Table<T>): boolean {\n const topRows = table.getTopRows();\n if (topRows.length === 0) {\n return false;\n }\n return row.getPinnedIndex() === topRows.length - 1;\n }\n\n private _isFirstBottomPinnedRow<T>(row: Row<T>, table: Table<T>): boolean {\n const bottomRows = table.getBottomRows();\n if (bottomRows.length === 0) {\n return false;\n }\n return row.getPinnedIndex() === bottomRows.length - 1;\n }\n\n private _getRowPinningStyles<T>(\n row: Row<T>,\n table: Table<T>,\n virtualRowHeight: number\n ): Record<string, string | number> {\n const pinned = row.getIsPinned();\n if (!pinned) {\n return {};\n }\n\n const pinnedIndex = row.getPinnedIndex();\n const defaultHeight = virtualRowHeight + 2;\n\n if (pinned === 'top') {\n let offset = 0;\n const topRows = table.getTopRows();\n for (let i = 0; i < pinnedIndex; i++) {\n const rowEl = document.querySelector(`tr[data-row-id=\"${topRows[i].id}\"]`) as HTMLElement;\n offset += rowEl ? rowEl.getBoundingClientRect().height : defaultHeight;\n }\n\n return { position: 'sticky', top: `${offset}px`, zIndex: 2 };\n }\n\n if (pinned === 'bottom') {\n let offset = 0;\n const bottomRows = table.getBottomRows();\n for (let i = 0; i < pinnedIndex; i++) {\n const rowEl = document.querySelector(`tr[data-row-id=\"${bottomRows[i].id}\"]`) as HTMLElement;\n offset += rowEl ? rowEl.getBoundingClientRect().height : defaultHeight;\n }\n\n return { position: 'sticky', bottom: `${offset}px`, zIndex: 2 };\n }\n\n return {};\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport type { Cell, Header, Row } from '@tanstack/angular-table';\nimport type { ZTableColumnConfig } from '../z-table.types';\nimport {\n findColumnConfig,\n calculateCellRowSpan,\n calculateCellColSpan,\n calculateHeaderRowSpan,\n calculateHeaderColSpan,\n calculateFooterRowSpan,\n calculateFooterColSpan,\n shouldCellRenderUtil,\n} from '../z-table.util';\n\n@Pipe({\n name: 'zTableSpan',\n standalone: true,\n pure: true,\n})\nexport class ZTableSpanPipe implements PipeTransform {\n transform<T>(\n item: Cell<T, unknown> | Header<T, unknown>,\n columns: ZTableColumnConfig<T>[],\n property: 'cellRowSpan' | 'cellColSpan' | 'headerRowSpan' | 'headerColSpan' | 'footerRowSpan' | 'footerColSpan',\n allRows?: Row<T>[]\n ): number | null;\n transform<T>(\n item: Cell<T, unknown>,\n columns: ZTableColumnConfig<T>[],\n property: 'shouldRender',\n allRows?: Row<T>[]\n ): boolean;\n transform<T>(\n item: Cell<T, unknown> | Header<T, unknown>,\n columns: ZTableColumnConfig<T>[],\n property:\n | 'cellRowSpan'\n | 'cellColSpan'\n | 'headerRowSpan'\n | 'headerColSpan'\n | 'footerRowSpan'\n | 'footerColSpan'\n | 'shouldRender',\n allRows?: Row<T>[]\n ): number | null | boolean {\n const columnConfig = findColumnConfig(item.column.id, columns);\n\n switch (property) {\n case 'cellRowSpan':\n return calculateCellRowSpan(item as Cell<T, unknown>, columnConfig, allRows ?? []);\n\n case 'cellColSpan':\n return calculateCellColSpan(item as Cell<T, unknown>, columnConfig);\n\n case 'headerRowSpan':\n return calculateHeaderRowSpan(item as Header<T, unknown>, columnConfig, columns);\n\n case 'headerColSpan':\n return calculateHeaderColSpan(item as Header<T, unknown>, columnConfig);\n\n case 'footerRowSpan':\n return calculateFooterRowSpan(item as Header<T, unknown>, columnConfig);\n\n case 'footerColSpan':\n return calculateFooterColSpan(item as Header<T, unknown>, columnConfig);\n\n case 'shouldRender':\n return shouldCellRenderUtil(item as Cell<T, unknown>, columnConfig, allRows ?? []);\n\n default:\n return null;\n }\n }\n}\n","import { Pipe, PipeTransform, TemplateRef } from '@angular/core';\n\n@Pipe({\n name: 'zTableIsTemplateRef',\n standalone: true,\n pure: true,\n})\nexport class ZTableIsTemplateRefPipe implements PipeTransform {\n transform(value: unknown): value is TemplateRef<unknown> {\n return value instanceof TemplateRef;\n }\n}\n","/* eslint-disable @stylistic/indent */\nimport { CdkDrag, CdkDropList, type CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { NgClass, NgStyle, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n input,\n output,\n signal,\n TemplateRef,\n untracked,\n viewChild,\n viewChildren,\n afterNextRender,\n} from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { injectVirtualizer } from '@shival99/angular-virtual';\nimport { ZButtonComponent } from '@shival99/z-vnetcity/components/z-button';\nimport { ZCheckboxComponent } from '@shival99/z-vnetcity/components/z-checkbox';\nimport { ZDrawerComponent } from '@shival99/z-vnetcity/components/z-drawer';\nimport { ZEmptyComponent } from '@shival99/z-vnetcity/components/z-empty';\nimport { ZIconComponent } from '@shival99/z-vnetcity/components/z-icon';\nimport { ZInputComponent } from '@shival99/z-vnetcity/components/z-input';\nimport { ZLoadingComponent } from '@shival99/z-vnetcity/components/z-loading';\nimport { ZPaginationComponent } from '@shival99/z-vnetcity/components/z-pagination';\nimport { ZPopoverDirective } from '@shival99/z-vnetcity/components/z-popover';\nimport { ZSkeletonComponent } from '@shival99/z-vnetcity/components/z-skeleton';\nimport { ZTooltipDirective } from '@shival99/z-vnetcity/components/z-tooltip';\nimport { ZSafeHtmlPipe } from '@shival99/z-vnetcity/pipes';\nimport { ZCacheService, ZTranslateService } from '@shival99/z-vnetcity/services';\nimport {\n ColumnDef,\n ColumnFiltersState,\n ColumnOrderState,\n ColumnPinningState,\n createAngularTable,\n ExpandedState,\n FlexRenderDirective,\n getCoreRowModel,\n getExpandedRowModel,\n getFacetedMinMaxValues,\n getFacetedRowModel,\n getFacetedUniqueValues,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n PaginationState,\n Row,\n RowPinningState,\n RowSelectionState,\n SortingState,\n VisibilityState,\n} from '@tanstack/angular-table';\nimport { NgScrollbar } from 'ngx-scrollbar';\nimport { explicitEffect } from 'ngxtension/explicit-effect';\nimport { injectDestroy } from 'ngxtension/inject-destroy';\nimport { ZTableActionsComponent } from './components/z-table-actions.component';\nimport { ZTableEditCellComponent } from './components/z-table-edit-cell.component';\nimport { ZTableFilterComponent } from './components/z-table-filter.component';\nimport { ZTableIconTextComponent } from './components/z-table-icon-text.component';\nimport { ZTableResizeDirective, ZTableRowHoverDirective } from './directives';\nimport {\n ZTableCellBottomPipe,\n ZTableCellClickablePipe,\n ZTableCellConfigPipe,\n ZTableCellEditPipe,\n ZTableCellOffsetPipe,\n ZTableCellPinPipe,\n ZTableColumnConfigPipe,\n ZTableColumnParentsPipe,\n ZTableFooterContentPipe,\n ZTablePinningStylesPipe,\n ZTableRowPipe,\n ZTableSpanPipe,\n ZTableIsTemplateRefPipe,\n ZTableHasIconPipe,\n ZTableColumnHeaderPipe,\n} from './pipes';\nimport { ZTableCellRenderPipe } from './pipes/z-table-cell-render.pipe';\nimport {\n Z_DEFAULT_DEBOUNCE_TIME,\n Z_DEFAULT_GROUP_SIZE,\n Z_DEFAULT_ROW_HEIGHT,\n Z_DEFAULT_VIRTUAL_OVERSCAN,\n Z_SKELETON_ROW_HEIGHT,\n Z_TABLE_DEFAULT_ACTION_BUTTON_WIDTH,\n ZTableActionClickEvent,\n ZTableActionColumnConfig,\n ZTableChangeEvent,\n ZTableColumnConfig,\n ZTableConfig,\n ZTableControl,\n ZTableEditCellChangeEvent,\n ZTableSavedColumnInfo,\n ZTableSavedConfig,\n ZTableVirtualConfig,\n ZVirtualGroup,\n} from './z-table.types';\nimport {\n columnConfigToColumnDef,\n isBodyConfig,\n getBodyRowSpan,\n getHeaderColSpan,\n filterVisibleColumns,\n} from './z-table.util';\n\n@Component({\n selector: 'z-table',\n imports: [\n NgClass,\n NgStyle,\n NgTemplateOutlet,\n ScrollingModule,\n NgScrollbar,\n FlexRenderDirective,\n CdkDropList,\n CdkDrag,\n ZCheckboxComponent,\n ZEmptyComponent,\n ZIconComponent,\n ZInputComponent,\n ZLoadingComponent,\n ZSkeletonComponent,\n ZDrawerComponent,\n ZPaginationComponent,\n ZTableFilterComponent,\n ZTableEditCellComponent,\n ZPopoverDirective,\n ZButtonComponent,\n ZTooltipDirective,\n ZTableResizeDirective,\n ZTableRowHoverDirective,\n ZTableIsTemplateRefPipe,\n ZTableHasIconPipe,\n ZTableCellBottomPipe,\n ZTableCellClickablePipe,\n ZTableCellConfigPipe,\n ZTableCellEditPipe,\n ZTableCellOffsetPipe,\n ZTableCellPinPipe,\n ZTableColumnConfigPipe,\n ZTableColumnHeaderPipe,\n ZTableColumnParentsPipe,\n ZTableFooterContentPipe,\n ZTablePinningStylesPipe,\n ZTableRowPipe,\n ZTableSpanPipe,\n ZTableCellRenderPipe,\n ZTableIconTextComponent,\n ZTableActionsComponent,\n ZSafeHtmlPipe,\n TranslatePipe,\n ],\n standalone: true,\n templateUrl: './z-table.component.html',\n styleUrl: './z-table.component.scss',\n providers: [TranslatePipe],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'z-table block relative py-1',\n },\n exportAs: 'zTable',\n})\nexport class ZTableComponent<T> implements AfterViewInit {\n public readonly zChange = output<ZTableChangeEvent<T>>();\n public readonly zControl = output<ZTableControl<T>>();\n\n public readonly zConfig = input<ZTableConfig<T>>({ data: [], columns: [], mode: 'local' });\n public readonly zLoading = input(false);\n public readonly zKey = input<string>('');\n\n private readonly _destroy$ = injectDestroy();\n private readonly _zTranslate = inject(ZTranslateService);\n\n private readonly _isSyncingScroll = signal(false);\n private readonly _savedScrollLeft = signal(0);\n private _resizeObserver: ResizeObserver | null = null;\n private _settingsDebounceTimeout: ReturnType<typeof setTimeout> | null = null;\n private _filterEmitDebounceTimeout: ReturnType<typeof setTimeout> | null = null;\n\n protected readonly isLoading = computed(() => this.zConfig().loading ?? this.zLoading());\n protected readonly isProcessing = signal(false);\n protected readonly theadWrapper = viewChild<ElementRef<HTMLDivElement>>('theadWrapper');\n protected readonly tbodyContainer = viewChild<ElementRef<HTMLDivElement>>('tbodyContainer');\n protected readonly tbodyWrapper = viewChild<ElementRef<HTMLDivElement>>('tbodyWrapper');\n protected readonly tbodyScrollbar = viewChild<NgScrollbar>('tbodyWrapper');\n protected readonly tfootWrapper = viewChild<ElementRef<HTMLDivElement>>('tfootWrapper');\n protected readonly expandedRowTemplate = viewChild<TemplateRef<unknown>>('expandedRowTemplate');\n protected readonly virtualRowElements = viewChildren<ElementRef<HTMLDivElement>>('virtualRow');\n\n protected readonly columnPinning = signal<ColumnPinningState>({ left: [], right: [] });\n protected readonly columnVisibility = signal<VisibilityState>({});\n protected readonly columnOrder = signal<ColumnOrderState>([]);\n protected readonly expanded = signal<ExpandedState>({});\n protected readonly rowSelection = signal<RowSelectionState>({});\n protected readonly rowPinning = signal<RowPinningState>({ top: [], bottom: [] });\n protected readonly columnFilters = signal<ColumnFiltersState>([]);\n protected readonly globalFilter = signal<string>('');\n protected readonly pagination = signal<PaginationState>({ pageIndex: 1, pageSize: 10 });\n protected readonly sorting = signal<SortingState>([]);\n private readonly _tanstackPagination = computed(() => ({\n ...this.pagination(),\n pageIndex: Math.max(0, this.pagination().pageIndex - 1),\n }));\n\n private readonly _configPagination = computed(() => {\n const config = this.zConfig();\n if (config.mode === 'server' && config.initialState?.pagination) {\n return config.initialState.pagination;\n }\n return null;\n });\n\n protected readonly hasVerticalScroll = signal(false);\n protected readonly hasHorizontalScroll = signal(false);\n protected readonly lastRowTouchesBottom = signal(true);\n protected readonly showSettingsDrawer = signal(false);\n protected readonly showHorizontalBorder = signal(true);\n protected readonly showVerticalBorder = signal(true);\n protected readonly showHeaderFooterShadow = signal(true);\n\n protected readonly hasScrollLeft = signal(false);\n protected readonly hasScrollRight = signal(false);\n\n private readonly _columnPinVersion = signal(0);\n private readonly _dataForceUpdate = signal(0);\n\n private _columnConfigCache = new Map<string, ZTableColumnConfig<T> | undefined>();\n private _lastColumnsRef: ZTableColumnConfig<T>[] | null = null;\n\n protected readonly pinnedColumnIds = computed(() => {\n this._columnPinVersion();\n return this.columnOrder().filter(id => {\n if (id === 'expand' || id === 'select') {\n return false;\n }\n\n const column = this.table.getColumn(id);\n return column && column.getIsPinned();\n });\n });\n\n protected readonly pendingVisibleColumns = signal<string[]>([]);\n protected readonly pendingColumnOrder = signal<string[]>([]);\n protected readonly pendingShowHeaderFooterShadow = signal(true);\n\n protected readonly hasBodyRowSpan = computed(() => {\n const columns = this.zConfig().columns ?? [];\n const checkRowSpan = (col: ZTableColumnConfig<T>): boolean => {\n if (isBodyConfig(col.body) && col.body.rowSpan !== undefined) {\n return true;\n }\n\n if (col.columns?.length) {\n return col.columns.some(c => checkRowSpan(c));\n }\n\n return false;\n };\n\n return columns.some(c => checkRowSpan(c));\n });\n\n protected readonly hasSelectColumn = computed(() => {\n const columns = this.zConfig().columns ?? [];\n return columns.some(c => c.id === 'select');\n });\n\n protected readonly hasExpandColumn = computed(() => {\n const columns = this.zConfig().columns ?? [];\n return columns.some(c => c.id === 'expand');\n });\n\n protected readonly actionColumnInfo = computed<{\n columnId: string;\n config: ZTableActionColumnConfig<T>;\n width: number;\n } | null>(() => {\n const columns = this.zConfig().columns ?? [];\n\n const findActionColumn = (\n cols: ZTableColumnConfig<T>[]\n ): { columnId: string; config: ZTableActionColumnConfig<T> } | null => {\n for (const col of cols) {\n if (isBodyConfig(col.body) && col.body.actions && col.body.actions.actions?.length > 0) {\n return { columnId: col.id, config: col.body.actions };\n }\n if (col.columns?.length) {\n const found = findActionColumn(col.columns);\n if (found) {\n return found;\n }\n }\n }\n return null;\n };\n\n const actionCol = findActionColumn(columns);\n if (!actionCol) {\n return null;\n }\n\n const { config } = actionCol;\n const maxVisible = config.maxVisible ?? 3;\n const totalActions = config.actions.filter(a => !a.hidden).length;\n const visibleCount = Math.min(totalActions, maxVisible);\n const hasOverflow = totalActions > maxVisible;\n const buttonCount = hasOverflow ? visibleCount + 1 : visibleCount;\n const buttonWidth = Z_TABLE_DEFAULT_ACTION_BUTTON_WIDTH;\n const gap = 4;\n const padding = 16;\n const width = buttonCount * buttonWidth + (buttonCount - 1) * gap + padding;\n\n return {\n columnId: actionCol.columnId,\n config: actionCol.config,\n width,\n };\n });\n\n protected readonly hasActionColumn = computed(() => this.actionColumnInfo() !== null);\n protected readonly hasFiltering = computed(() => {\n const columns = this.zConfig().columns ?? [];\n const checkFilter = (col: ZTableColumnConfig<T>): boolean => {\n const filterConfig = typeof col.filter === 'boolean' ? { enabled: col.filter } : col.filter;\n if (filterConfig?.enabled) {\n return true;\n }\n\n if (col.columns?.length) {\n return col.columns.some(c => checkFilter(c));\n }\n\n return false;\n };\n return columns.some(c => checkFilter(c));\n });\n\n protected readonly hasLocalFiltering = computed(() => {\n const columns = this.zConfig().columns ?? [];\n const checkLocalFilter = (col: ZTableColumnConfig<T>): boolean => {\n const filterConfig = typeof col.filter === 'boolean' ? { enabled: col.filter } : col.filter;\n if (filterConfig?.enabled) {\n const filterMode = filterConfig.mode ?? 'local';\n if (filterMode === 'local') {\n return true;\n }\n }\n\n if (col.columns?.length) {\n return col.columns.some(c => checkLocalFilter(c));\n }\n\n return false;\n };\n return columns.some(c => checkLocalFilter(c));\n });\n\n protected readonly hasSorting = computed(() => {\n const config = this.zConfig();\n if (config.enableColumnSorting === false) {\n return false;\n }\n\n if (config.enableColumnSorting === true) {\n return true;\n }\n\n const columns = config.columns ?? [];\n const checkSorting = (col: ZTableColumnConfig<T>): boolean => {\n const sortConfig = typeof col.sort === 'boolean' ? { enabled: col.sort } : col.sort;\n if (sortConfig?.enabled) {\n return true;\n }\n\n if (col.columns?.length) {\n return col.columns.some(c => checkSorting(c));\n }\n\n return false;\n };\n return columns.some(c => checkSorting(c));\n });\n\n protected readonly hasLocalSorting = computed(() => {\n const config = this.zConfig();\n if (config.enableColumnSorting === false) {\n return false;\n }\n\n const columns = config.columns ?? [];\n const checkLocalSorting = (col: ZTableColumnConfig<T>): boolean => {\n const sortConfig = typeof col.sort === 'boolean' ? { enabled: col.sort } : col.sort;\n if (sortConfig?.enabled) {\n const sortMode = sortConfig.mode ?? 'local';\n if (sortMode === 'local') {\n return true;\n }\n }\n\n if (col.columns?.length) {\n return col.columns.some(c => checkLocalSorting(c));\n }\n\n return false;\n };\n return columns.some(c => checkLocalSorting(c));\n });\n\n protected readonly hasServerFiltering = computed(() => {\n const columns = this.zConfig().columns ?? [];\n const checkServerFilter = (col: ZTableColumnConfig<T>): boolean => {\n const filterConfig = typeof col.filter === 'boolean' ? { enabled: col.filter } : col.filter;\n if (filterConfig?.enabled) {\n const filterMode = filterConfig.mode ?? 'local';\n if (filterMode === 'server') {\n return true;\n }\n }\n\n if (col.columns?.length) {\n return col.columns.some(c => checkServerFilter(c));\n }\n\n return false;\n };\n return columns.some(c => checkServerFilter(c));\n });\n\n protected readonly hasServerSorting = computed(() => {\n const config = this.zConfig();\n if (config.enableColumnSorting === false) {\n return false;\n }\n\n const columns = config.columns ?? [];\n const checkServerSorting = (col: ZTableColumnConfig<T>): boolean => {\n const sortConfig = typeof col.sort === 'boolean' ? { enabled: col.sort } : col.sort;\n if (sortConfig?.enabled) {\n const sortMode = sortConfig.mode ?? 'local';\n if (sortMode === 'server') {\n return true;\n }\n }\n\n if (col.columns?.length) {\n return col.columns.some(c => checkServerSorting(c));\n }\n\n return false;\n };\n return columns.some(c => checkServerSorting(c));\n });\n\n protected readonly searchConfig = computed(() => {\n const { search } = this.zConfig();\n if (!search) {\n return null;\n }\n\n if (typeof search === 'boolean') {\n return search\n ? {\n enabled: true,\n placeholder: 'i18n_z_ui_table_search',\n debounceTime: 300,\n width: 'w-64',\n size: 'sm' as const,\n }\n : null;\n }\n\n return {\n enabled: search.enabled ?? true,\n placeholder: search.placeholder ?? 'i18n_z_ui_table_search',\n debounceTime: search.debounceTime ?? 300,\n width: search.width ?? 'w-64',\n size: search.size ?? ('sm' as const),\n };\n });\n\n protected readonly isSearchEnabled = computed(() => {\n const config = this.searchConfig();\n return config !== null && config.enabled;\n });\n\n private readonly _data = computed(() => {\n this._dataForceUpdate();\n return this.zConfig().data ?? [];\n });\n\n private readonly _columns = computed<ColumnDef<T>[]>(() => {\n let cols = this.zConfig().columns ?? [];\n cols = filterVisibleColumns(cols);\n if (this.hasBodyRowSpan()) {\n cols = cols.filter(c => c.id !== 'expand');\n }\n\n const hasExpandColumn = cols.some(c => c.id === 'expand');\n const hasSelectColumn = cols.some(c => c.id === 'select');\n const needsRowPinActionsColumn =\n this.zConfig().enableRowPinning && !hasExpandColumn && !hasSelectColumn && !this.hasBodyRowSpan();\n\n if (needsRowPinActionsColumn) {\n cols = [\n {\n id: 'actionRowPin',\n header: '',\n cell: '',\n size: 30,\n minSize: 30,\n maxSize: 30,\n enableResizing: false,\n enableHiding: false,\n } as ZTableColumnConfig<T>,\n ...cols,\n ];\n }\n\n return cols.map(c => {\n const colDef = columnConfigToColumnDef(c);\n if (colDef.id === 'select') {\n colDef.size = 50;\n colDef.minSize = 50;\n colDef.maxSize = 50;\n colDef.enableResizing = false;\n }\n\n if (colDef.id === 'expand' || colDef.id === 'actionRowPin') {\n colDef.size = 50;\n colDef.minSize = 50;\n colDef.maxSize = 50;\n colDef.enableResizing = false;\n }\n\n const actionInfo = this.actionColumnInfo();\n if (actionInfo && colDef.id === actionInfo.columnId) {\n const defaultWidth = actionInfo.width + 15;\n const width = c.size ?? c.minSize ?? c.maxSize ?? defaultWidth;\n\n colDef.size = width;\n colDef.minSize = width;\n colDef.maxSize = width;\n colDef.enableResizing = c.enableResizing ?? false;\n colDef.enableSorting = false;\n colDef.enablePinning = false;\n }\n\n return colDef;\n });\n });\n\n protected readonly isVirtual = computed(() => {\n const { virtual } = this.zConfig();\n if (!virtual) {\n return false;\n }\n\n if (typeof virtual === 'boolean') {\n return virtual;\n }\n\n return virtual.enabled;\n });\n\n private readonly _virtualConfig = computed<ZTableVirtualConfig>(() => {\n const { virtual } = this.zConfig();\n if (!virtual || typeof virtual === 'boolean') {\n return {\n enabled: !!virtual,\n size: Z_DEFAULT_ROW_HEIGHT,\n overscan: Z_DEFAULT_VIRTUAL_OVERSCAN,\n groupSize: Z_DEFAULT_GROUP_SIZE,\n dynamicSize: false,\n };\n }\n\n return {\n enabled: virtual.enabled,\n size: virtual.size ?? Z_DEFAULT_ROW_HEIGHT,\n overscan: virtual.overscan ?? Z_DEFAULT_VIRTUAL_OVERSCAN,\n groupSize: virtual.groupSize ?? Z_DEFAULT_GROUP_SIZE,\n dynamicSize: virtual.dynamicSize ?? false,\n };\n });\n\n protected readonly virtualRowHeight = computed(() => this._virtualConfig().size ?? Z_DEFAULT_ROW_HEIGHT);\n protected readonly dynamicSize = computed(() => this._virtualConfig().dynamicSize ?? false);\n protected readonly groupSize = computed(() => this._virtualConfig().groupSize ?? Z_DEFAULT_GROUP_SIZE);\n protected readonly groupHeight = computed(() => this.groupSize() * this.virtualRowHeight());\n private readonly _dynamicGroupsVersion = signal(0);\n\n protected readonly dynamicGroups = computed<ZVirtualGroup[]>(() => {\n if (!this.isVirtual()) {\n return [];\n }\n\n this._dynamicGroupsVersion();\n const { rows } = this.table.getRowModel();\n const rowHeight = this.virtualRowHeight();\n const isDynamic = this.dynamicSize();\n\n if (!this.hasBodyRowSpan()) {\n const size = this.groupSize();\n const groups: ZVirtualGroup[] = [];\n const totalGroups = Math.ceil(rows.length / size);\n\n for (let j = 0; j < totalGroups; j++) {\n const startIndex = j * size;\n const endIndex = Math.min(startIndex + size - 1, rows.length - 1);\n const rowCount = endIndex - startIndex + 1;\n groups.push({\n startIndex,\n endIndex,\n rowCount,\n height: isDynamic ? null : rowCount * rowHeight,\n });\n }\n return groups;\n }\n\n const groups: ZVirtualGroup[] = [];\n let i = 0;\n\n while (i < rows.length) {\n const startIndex = i;\n let maxRowSpan = 1;\n const row = rows[i];\n const cells = row.getAllCells();\n\n for (const cell of cells) {\n const columnConfig = this._findColumnConfig(cell.column.id);\n const rowSpanValue = getBodyRowSpan(columnConfig, cell.getContext());\n if (rowSpanValue && rowSpanValue > maxRowSpan) {\n maxRowSpan = rowSpanValue;\n }\n }\n\n const groupRowCount = Math.max(1, maxRowSpan);\n const endIndex = Math.min(i + groupRowCount - 1, rows.length - 1);\n const rowCount = endIndex - startIndex + 1;\n groups.push({\n startIndex,\n endIndex,\n rowCount,\n height: isDynamic ? null : rowCount * rowHeight,\n });\n\n i = endIndex + 1;\n }\n\n return groups;\n });\n\n protected readonly hasFooter = computed(() => {\n const columns = this.zConfig().columns ?? [];\n const checkFooter = (col: (typeof columns)[0]): boolean => {\n if (col.footer) {\n return true;\n }\n\n if (col.columns?.length) {\n return col.columns.some(c => checkFooter(c as (typeof columns)[0]));\n }\n\n return false;\n };\n\n return columns.some(c => checkFooter(c));\n });\n\n protected readonly isEmpty = computed(() => this.table.getRowModel().rows.length === 0);\n protected readonly isEmptyData = computed(() => this._data().length === 0);\n protected readonly isNoSearchResults = computed(() => {\n const isServerMode = this.zConfig().mode === 'server';\n const hasActiveFilter = this.globalFilter().trim() !== '' || this.columnFilters().length > 0;\n const noFilteredResults = this.isEmpty();\n\n if (isServerMode) {\n const totalCount = this.zConfig().totalCount ?? 0;\n const hasPotentialData = totalCount > 0 || hasActiveFilter;\n return hasPotentialData && noFilteredResults && hasActiveFilter;\n }\n\n const hasSourceData = this._data().length > 0;\n return hasSourceData && noFilteredResults && hasActiveFilter;\n });\n\n protected readonly orderedLeafColumns = computed(() => {\n const leftCols = this.table.getLeftLeafColumns();\n const centerCols = this.table.getCenterLeafColumns();\n const rightCols = this.table.getRightLeafColumns();\n return [...leftCols, ...centerCols, ...rightCols];\n });\n\n protected readonly orderedHeaderGroups = computed(() => {\n void this.columnPinning();\n void this.columnOrder();\n\n const leftGroups = this.table.getLeftHeaderGroups();\n const centerGroups = this.table.getCenterHeaderGroups();\n const rightGroups = this.table.getRightHeaderGroups();\n\n const maxRows = Math.max(leftGroups.length, centerGroups.length, rightGroups.length);\n const result: { id: string; headers: (typeof leftGroups)[0]['headers'] }[] = [];\n\n for (let i = 0; i < maxRows; i++) {\n const leftHeaders = leftGroups[i]?.headers ?? [];\n const centerHeaders = centerGroups[i]?.headers ?? [];\n const rightHeaders = rightGroups[i]?.headers ?? [];\n\n result.push({\n id: `row-${i}`,\n headers: [...leftHeaders, ...centerHeaders, ...rightHeaders],\n });\n }\n\n return result;\n });\n\n protected readonly orderedFooterGroups = computed(() => {\n void this.columnPinning();\n void this.columnOrder();\n\n const leftGroups = this.table.getLeftFooterGroups();\n const centerGroups = this.table.getCenterFooterGroups();\n const rightGroups = this.table.getRightFooterGroups();\n\n const maxRows = Math.max(leftGroups.length, centerGroups.length, rightGroups.length);\n const result: { id: string; depth: number; headers: (typeof leftGroups)[0]['headers'] }[] = [];\n\n for (let i = 0; i < maxRows; i++) {\n const leftHeaders = leftGroups[i]?.headers ?? [];\n const centerHeaders = centerGroups[i]?.headers ?? [];\n const rightHeaders = rightGroups[i]?.headers ?? [];\n const depth = leftGroups[i]?.depth ?? centerGroups[i]?.depth ?? rightGroups[i]?.depth ?? i;\n\n result.push({\n id: `footer-row-${i}`,\n depth,\n headers: [...leftHeaders, ...centerHeaders, ...rightHeaders],\n });\n }\n\n return result;\n });\n\n protected readonly bottomRowsReversed = computed(() => [...this.table.getBottomRows()].reverse());\n protected readonly totalWidth = computed(() => {\n const columns = this.table.getAllLeafColumns();\n return columns.reduce((sum, col) => sum + col.getSize(), 0);\n });\n\n protected readonly shouldHeaderShowShadow = computed(\n () => this.showHeaderFooterShadow() && this.table.getTopRows().length === 0\n );\n\n protected readonly shouldFooterShowShadow = computed(\n () => this.showHeaderFooterShadow() && this.table.getBottomRows().length === 0\n );\n\n protected readonly tbodyContainerHeight = signal(0);\n protected readonly skeletonRowHeight = signal<number>(Z_SKELETON_ROW_HEIGHT);\n\n protected readonly skeletonRowCount = computed(() => {\n const containerHeight = this.tbodyContainerHeight();\n const baseRowHeight = this.skeletonRowHeight();\n\n if (containerHeight > 0) {\n return Math.max(3, Math.floor(containerHeight / baseRowHeight));\n }\n\n const { minHeight } = this.zConfig();\n if (minHeight) {\n const heightValue = parseInt(minHeight, 10);\n if (!isNaN(heightValue)) {\n return Math.max(3, Math.floor(heightValue / baseRowHeight));\n }\n }\n\n return Math.min(this.pagination().pageSize || 10, 10);\n });\n\n protected readonly actualSkeletonRowHeight = computed(() => {\n const containerHeight = this.tbodyContainerHeight();\n const rowCount = this.skeletonRowCount();\n\n if (containerHeight > 0 && rowCount > 0) {\n return containerHeight / rowCount;\n }\n\n return this.skeletonRowHeight();\n });\n\n protected readonly skeletonRows = computed(() => {\n const count = this.skeletonRowCount();\n return Array.from({ length: count }, (_, i) => i);\n });\n\n protected readonly dynamicGroupRows = computed(() => {\n const rows = this.table.getRowModel().rows as Row<T>[];\n const groups = this.dynamicGroups();\n const size = this.groupSize();\n const result: Row<T>[][] = [];\n\n if (groups.length > 0) {\n for (const group of groups) {\n result.push(rows.slice(group.startIndex, group.endIndex + 1));\n }\n return result;\n }\n\n const totalGroups = Math.ceil(rows.length / size);\n for (let i = 0; i < totalGroups; i++) {\n const startIndex = i * size;\n const endIndex = Math.min(startIndex + size, rows.length);\n result.push(rows.slice(startIndex, endIndex));\n }\n\n return result;\n });\n\n protected readonly dynamicGroupHeights = computed(() => {\n const groups = this.dynamicGroups();\n const rowHeight = this.virtualRowHeight();\n const defaultHeight = this.groupSize() * rowHeight;\n const isDynamic = this.dynamicSize();\n\n if (groups.length > 0) {\n return groups.map(group => (isDynamic ? null : (group.height ?? defaultHeight)));\n }\n\n const rows = this.table.getRowModel().rows as Row<T>[];\n const size = this.groupSize();\n const totalGroups = Math.ceil(rows.length / size);\n return Array(totalGroups).fill(isDynamic ? null : defaultHeight);\n });\n\n protected readonly columnSizing = computed(() => this.table.getState().columnSizing);\n protected readonly columnSizingInfo = computed(() => this.table.getState().columnSizingInfo);\n\n protected readonly columnSizeVars = computed(() => {\n void this.columnSizing();\n void this.columnSizingInfo();\n void this.columnOrder();\n void this.columnVisibility();\n void this.columnPinning();\n void this._columns();\n\n const headers = untracked(() => this.table.getFlatHeaders());\n const colSizes: Record<string, number> = {};\n\n for (const header of headers) {\n colSizes[`--header-${header.id}-size`] = header.getSize();\n colSizes[`--col-${header.column.id}-size`] = header.column.getSize();\n }\n\n return colSizes;\n });\n\n protected readonly table = createAngularTable<T>(() => {\n const config = this.zConfig();\n const isServerMode = config.mode === 'server';\n const pageSize = this.pagination().pageSize || 10;\n const pageCount = isServerMode && config.totalRows ? Math.ceil(config.totalRows / pageSize) : undefined;\n\n const hasAnyLocalFiltering = this.hasLocalFiltering();\n const hasAnyLocalSorting = this.hasLocalSorting();\n const shouldEnableLocalFiltering = !isServerMode || hasAnyLocalFiltering;\n const shouldEnableLocalSorting = !isServerMode || hasAnyLocalSorting;\n\n return {\n data: this._data(),\n columns: this._columns(),\n getCoreRowModel: getCoreRowModel(),\n getExpandedRowModel: this.hasExpandColumn() ? getExpandedRowModel() : undefined,\n getFilteredRowModel: shouldEnableLocalFiltering && this.hasFiltering() ? getFilteredRowModel() : undefined,\n getSortedRowModel: shouldEnableLocalSorting && this.hasSorting() ? getSortedRowModel() : undefined,\n getPaginationRowModel: !isServerMode && config.pagination?.enabled ? getPaginationRowModel() : undefined,\n getFacetedRowModel: shouldEnableLocalFiltering && this.hasFiltering() ? getFacetedRowModel() : undefined,\n getFacetedUniqueValues: shouldEnableLocalFiltering && this.hasFiltering() ? getFacetedUniqueValues() : undefined,\n getFacetedMinMaxValues: shouldEnableLocalFiltering && this.hasFiltering() ? getFacetedMinMaxValues() : undefined,\n manualFiltering: isServerMode && !hasAnyLocalFiltering,\n manualSorting: isServerMode && !hasAnyLocalSorting,\n manualPagination: isServerMode,\n pageCount: pageCount,\n columnResizeMode: 'onChange',\n enableRowSelection: this.hasSelectColumn(),\n enableSubRowSelection: this.hasSelectColumn() && !!config.getSubRows,\n enableRowPinning: config.enableRowPinning ?? false,\n enableMultiSort: config.enableMultiSort ?? false,\n keepPinnedRows: true,\n getRowId: config.getRowId\n ? (originalRow: T, index: number, parent?: Row<T>) =>\n config.getRowId?.(originalRow, index, parent?.original, this._data()) ?? `${index}`\n : (_row: T, index: number) => `${index}`,\n getSubRows: config.getSubRows\n ? (originalRow: T, index: number) => config.getSubRows?.(originalRow, index, undefined, this._data())\n : undefined,\n getRowCanExpand: config.getRowCanExpand ?? (() => true),\n state: {\n columnPinning: this.columnPinning(),\n columnVisibility: this.columnVisibility(),\n columnOrder: this.columnOrder(),\n expanded: this.expanded(),\n rowSelection: this.rowSelection(),\n rowPinning: this.rowPinning(),\n columnFilters: this.columnFilters(),\n globalFilter: this.globalFilter(),\n pagination: this._tanstackPagination(),\n sorting: this.sorting(),\n },\n onColumnPinningChange: updater => {\n const newState = typeof updater === 'function' ? updater(this.columnPinning()) : updater;\n this.columnPinning.set(newState);\n },\n onColumnVisibilityChange: updater => {\n const newState = typeof updater === 'function' ? updater(this.columnVisibility()) : updater;\n this.columnVisibility.set(newState);\n },\n onColumnOrderChange: updater => {\n const newState = typeof updater === 'function' ? updater(this.columnOrder()) : updater;\n this.columnOrder.set(newState);\n },\n onExpandedChange: updater => {\n const newState = typeof updater === 'function' ? updater(this.expanded()) : updater;\n this.expanded.set(newState);\n this.zChange.emit({\n type: 'expand',\n data: { expanded: newState },\n });\n },\n onRowSelectionChange: updater => {\n const currentState = this.rowSelection();\n const newState = typeof updater === 'function' ? updater(currentState) : updater;\n this._handleRowSelectionWithParents(newState);\n },\n onColumnFiltersChange: updater => {\n const oldState = this.columnFilters();\n const newState = typeof updater === 'function' ? updater(oldState) : updater;\n\n const changedColumnIds = this._getChangedFilterColumnIds(oldState, newState);\n const hasAnyLocalChange = changedColumnIds.some(id => this._isColumnFilterModeLocal(id));\n const hasAnyServerChange = changedColumnIds.some(id => !this._isColumnFilterModeLocal(id));\n const serverModeFilters = this._filterServerModeColumnFilters(newState);\n\n this.columnFilters.set(newState);\n\n if (hasAnyLocalChange) {\n this._runAsyncStateUpdate(() => {\n this.pagination.update(p => ({ ...p, pageIndex: 1 }));\n }, true);\n }\n\n if (hasAnyServerChange) {\n this.zChange.emit({\n type: 'filter',\n data: { filters: serverModeFilters, search: this.globalFilter() },\n });\n }\n },\n onGlobalFilterChange: updater => {\n const newState = typeof updater === 'function' ? updater(this.globalFilter()) : updater;\n const hasLocalFilter = this.hasLocalFiltering();\n const serverModeFilters = this._filterServerModeColumnFilters(this.columnFilters());\n\n this._runAsyncStateUpdate(() => {\n this.globalFilter.set(newState);\n if (hasLocalFilter) {\n this.pagination.update(p => ({ ...p, pageIndex: 1 }));\n }\n if (serverModeFilters.length > 0 || this.hasServerFiltering()) {\n this._emitFilterChangeDebounced(serverModeFilters, newState);\n }\n }, hasLocalFilter);\n },\n onPaginationChange: updater => {\n const newState = typeof updater === 'function' ? updater(this._tanstackPagination()) : updater;\n const adjustedState = { ...newState, pageIndex: newState.pageIndex + 1 };\n this.pagination.set(adjustedState);\n this.zChange.emit({\n type: 'page',\n data: { pageIndex: adjustedState.pageIndex, pageSize: adjustedState.pageSize, emitType: 'auto' },\n });\n },\n onSortingChange: updater => {\n const oldState = this.sorting();\n const newState = typeof updater === 'function' ? updater(oldState) : updater;\n\n const changedColumnIds = this._getChangedSortColumnIds(oldState, newState);\n const hasAnyLocalChange = changedColumnIds.some(id => this._isColumnSortModeLocal(id));\n const hasAnyServerChange = changedColumnIds.some(id => !this._isColumnSortModeLocal(id));\n const serverModeSorting = this._filterServerModeSorting(newState);\n\n this.sorting.set(newState);\n\n if (hasAnyLocalChange) {\n this._runAsyncStateUpdate(() => {\n this.pagination.update(p => ({ ...p, pageIndex: 1 }));\n }, true);\n }\n\n if (hasAnyServerChange) {\n this.zChange.emit({ type: 'sort', data: { sorting: serverModeSorting } });\n }\n },\n onRowPinningChange: updater => {\n const newState = typeof updater === 'function' ? updater(this.rowPinning()) : updater;\n this.rowPinning.set(newState);\n },\n meta: {\n updateData: (rowIndex: number, columnId: string, value: unknown) => {\n const row = this.table.getRowModel().rows[rowIndex];\n if (row) {\n this.zChange.emit({\n type: 'cellClick',\n data: {\n row: row.original,\n rowId: row.id,\n columnId,\n value,\n },\n });\n }\n },\n },\n debugTable: false,\n };\n }) as ReturnType<typeof createAngularTable<T>>;\n\n private readonly _virtualGroupCount = computed(() => {\n if (!this.isVirtual()) {\n return 0;\n }\n\n const totalRows = untracked(() => this.table.getRowModel().rows.length);\n return Math.ceil(totalRows / this.groupSize());\n });\n\n protected readonly virtualizer = injectVirtualizer(() => {\n const groups = this.dynamicGroups();\n const rowHeight = this.virtualRowHeight();\n const groupSize = this.groupSize();\n const scrollElement = this.tbodyWrapper()?.nativeElement;\n\n return {\n scrollElement,\n count: groups.length > 0 ? groups.length : this._virtualGroupCount(),\n estimateSize: (index: number) => {\n if (groups.length > 0 && groups[index]) {\n const groupHeight = groups[index].height;\n if (groupHeight !== null) {\n return groupHeight;\n }\n return groups[index].rowCount * rowHeight;\n }\n return groupSize * rowHeight;\n },\n measureElement: (element: Element) => element.getBoundingClientRect().height,\n overscan: this._virtualConfig().overscan ?? Z_DEFAULT_VIRTUAL_OVERSCAN,\n };\n });\n\n private readonly _measureVirtualItems = effect(() => {\n if (!this.dynamicSize()) {\n return;\n }\n\n const elements = this.virtualRowElements();\n for (const el of elements) {\n this.virtualizer.measureElement(el.nativeElement);\n }\n });\n\n constructor() {\n explicitEffect([this._zTranslate.currentLang], () => {\n this._dataForceUpdate.update(v => v + 1);\n });\n\n explicitEffect([this.zKey, this.zConfig], ([key, cfg]) => {\n if (!cfg.columns || cfg.columns.length === 0) {\n return;\n }\n\n const cacheLoaded = key ? this._loadConfigCache(key) : false;\n const initial = cfg.initialState;\n if (initial) {\n if (!cacheLoaded) {\n if (initial.columnPinning) {\n this.columnPinning.set(initial.columnPinning);\n }\n if (initial.columnVisibility) {\n this.columnVisibility.set(initial.columnVisibility);\n }\n }\n\n if (initial.sorting) {\n this.sorting.set(initial.sorting);\n }\n if (initial.columnFilters) {\n this.columnFilters.set(initial.columnFilters);\n }\n if (initial.globalFilter) {\n this.globalFilter.set(initial.globalFilter);\n }\n if (initial.expanded) {\n this.expanded.set(initial.expanded);\n }\n if (initial.rowSelection) {\n this.rowSelection.set(initial.rowSelection);\n }\n if (initial.rowPinning) {\n this.rowPinning.set(initial.rowPinning);\n }\n if (initial.pagination) {\n this.pagination.set(initial.pagination);\n }\n }\n\n if (!cacheLoaded) {\n this.showHeaderFooterShadow.set(cfg.showHeaderShadow ?? cfg.showFooterShadow ?? true);\n if (typeof cfg.showHorizontalBorder === 'boolean') {\n this.showHorizontalBorder.set(cfg.showHorizontalBorder);\n }\n if (typeof cfg.showVerticalBorder === 'boolean') {\n this.showVerticalBorder.set(cfg.showVerticalBorder);\n }\n }\n\n const cols = cfg.columns ?? [];\n const leftPinned: string[] = [...(initial?.columnPinning?.left ?? [])];\n const rightPinned: string[] = [...(initial?.columnPinning?.right ?? [])];\n\n const collectPinnedColumns = (columns: typeof cols): void => {\n for (const col of columns) {\n if (col.pinned === 'left' && !leftPinned.includes(col.id)) {\n leftPinned.push(col.id);\n }\n if (col.pinned === 'right' && !rightPinned.includes(col.id)) {\n rightPinned.push(col.id);\n }\n if (col.columns) {\n collectPinnedColumns(col.columns);\n }\n }\n };\n\n collectPinnedColumns(cols);\n if (!cacheLoaded && (leftPinned.length > 0 || rightPinned.length > 0)) {\n this.columnPinning.set({ left: leftPinned, right: rightPinned });\n }\n });\n\n explicitEffect([this.zConfig], ([cfg]) => {\n if (cfg.enableRowPinning && !this.hasBodyRowSpan()) {\n const cols = cfg.columns ?? [];\n const hasSelect = cols.some(c => c.id === 'select');\n const hasExpand = cols.some(c => c.id === 'expand');\n const currentPinning = this.columnPinning();\n const leftPinned = [...(currentPinning.left || [])];\n if (hasSelect && !leftPinned.includes('select')) {\n leftPinned.unshift('select');\n this.columnPinning.set({ ...currentPinning, left: leftPinned });\n }\n\n if (!hasSelect && !hasExpand && !leftPinned.includes('actions')) {\n leftPinned.unshift('actions');\n this.columnPinning.set({ ...currentPinning, left: leftPinned });\n }\n }\n });\n\n afterNextRender(() => {\n const containerEl = this.tbodyContainer()?.nativeElement;\n if (containerEl && !this._resizeObserver) {\n this._resizeObserver = new ResizeObserver(entries => {\n for (const entry of entries) {\n this.tbodyContainerHeight.set(entry.contentRect.height);\n }\n this._checkVerticalScroll();\n this._checkHorizontalScroll();\n });\n\n this._resizeObserver.observe(containerEl);\n this.tbodyContainerHeight.set(containerEl.clientHeight);\n\n this._destroy$.subscribe(() => {\n if (this._resizeObserver) {\n this._resizeObserver.disconnect();\n this._resizeObserver = null;\n }\n });\n }\n });\n\n explicitEffect([this._configPagination], ([configPagination]) => {\n if (configPagination) {\n this.pagination.set(configPagination);\n }\n });\n\n explicitEffect([this.columnFilters, this.globalFilter, this.pagination, this.sorting, this._data], () => {\n if (this.isVirtual()) {\n const wrapperEl = this.tbodyWrapper()?.nativeElement;\n if (wrapperEl) {\n wrapperEl.scrollTop = 0;\n }\n\n this.virtualizer.scrollToOffset(0);\n }\n\n queueMicrotask(() => {\n this._checkVerticalScroll();\n this._checkHorizontalScroll();\n if (this.isVirtual()) {\n this._dynamicGroupsVersion.update(v => v + 1);\n }\n });\n });\n\n explicitEffect([this.virtualizer.getVirtualItems], () => {\n if (!this.isVirtual()) {\n return;\n }\n\n queueMicrotask(() => {\n this._checkLastRowTouchesBottom();\n });\n });\n\n explicitEffect([this.isLoading, this.isProcessing], () => {\n const loading = this.isLoading();\n const processing = this.isProcessing();\n\n if (loading || processing) {\n const wrapperEl = this.tbodyWrapper()?.nativeElement;\n if (wrapperEl) {\n this._savedScrollLeft.set(wrapperEl.scrollLeft);\n }\n\n return;\n }\n\n queueMicrotask(() => {\n const wrapperEl = this.tbodyWrapper()?.nativeElement;\n if (wrapperEl) {\n wrapperEl.scrollTop = 0;\n wrapperEl.scrollLeft = this._savedScrollLeft();\n }\n\n this._checkScrollState();\n });\n });\n\n explicitEffect(\n [\n this.columnOrder,\n this.columnSizing,\n this.columnPinning,\n this.columnVisibility,\n this.showHeaderFooterShadow,\n this.showHorizontalBorder,\n this.showVerticalBorder,\n ],\n () => {\n this._saveConfig();\n },\n { defer: true }\n );\n }\n\n ngAfterViewInit(): void {\n queueMicrotask(() => this._checkScrollState());\n this.zControl.emit({\n updateConfig: (config: Partial<ZTableConfig<T>>) => {\n const current = this.zConfig();\n Object.assign(current, config);\n },\n toggleSettings: () => {\n this.showSettingsDrawer.set(!this.showSettingsDrawer());\n },\n resetFilters: () => {\n this.columnFilters.set([]);\n this.globalFilter.set('');\n },\n resetSorting: () => {\n this.sorting.set([]);\n },\n addItem: (item: T) => {\n const current = this.zConfig();\n current.data = [...current.data, item];\n this._dataForceUpdate.update(v => v + 1);\n },\n updateItem: (id: string | number, updates: Partial<T>, fieldKey?: keyof T) => {\n const current = this.zConfig();\n current.data = current.data.map((row, index) => {\n const rowId = fieldKey\n ? (row[fieldKey] as string | number)\n : current.getRowId\n ? current.getRowId(row, index, undefined, current.data)\n : ((row as Record<string, unknown>)['id'] as string | number);\n\n return rowId === id ? { ...row, ...updates } : row;\n });\n this._dataForceUpdate.update(v => v + 1);\n },\n deleteItem: (id: string | number, fieldKey?: keyof T) => {\n const current = this.zConfig();\n current.data = current.data.filter((row, index) => {\n const rowId = fieldKey\n ? (row[fieldKey] as string | number)\n : current.getRowId\n ? current.getRowId(row, index, undefined, current.data)\n : ((row as Record<string, unknown>)['id'] as string | number);\n\n return rowId !== id;\n });\n this._dataForceUpdate.update(v => v + 1);\n },\n getItems: () => this.zConfig().data,\n });\n }\n\n private _handleRowSelectionWithParents(newState: RowSelectionState): void {\n const stateRecord = newState as Record<string, boolean>;\n const finalState: Record<string, boolean> = { ...stateRecord };\n\n const allRows = this.table.getRowModel().rows;\n allRows.forEach(row => {\n if (!row.subRows || row.subRows.length === 0) {\n return;\n }\n\n const allChildrenSelected = row.subRows.every(child => finalState[child.id] === true);\n if (allChildrenSelected) {\n finalState[row.id] = true;\n return;\n }\n\n const someChildrenSelected = row.subRows.some(child => finalState[child.id] === true);\n if (!someChildrenSelected) {\n delete finalState[row.id];\n }\n });\n\n this.rowSelection.set(finalState as RowSelectionState);\n this.zChange.emit({\n type: 'select',\n data: { selection: finalState as RowSelectionState },\n });\n }\n\n private _runAsyncStateUpdate(updateFn: () => void, forceLocal = false): void {\n const isServerMode = this.zConfig().mode === 'server';\n const hasLocalFiltering = this.hasLocalFiltering();\n const hasLocalSorting = this.hasLocalSorting();\n const shouldRunAsync = !isServerMode || forceLocal || hasLocalFiltering || hasLocalSorting;\n\n if (!shouldRunAsync) {\n updateFn();\n return;\n }\n\n this.isProcessing.set(true);\n setTimeout(() => {\n updateFn();\n this.isProcessing.set(false);\n }, this.zConfig().debounceTime ?? Z_DEFAULT_DEBOUNCE_TIME);\n }\n\n private _emitFilterChangeDebounced(filters: ColumnFiltersState, search: string): void {\n if (this._filterEmitDebounceTimeout) {\n clearTimeout(this._filterEmitDebounceTimeout);\n }\n\n this._filterEmitDebounceTimeout = setTimeout(() => {\n this.zChange.emit({\n type: 'filter',\n data: { filters, search },\n });\n }, 300);\n }\n\n private _checkScrollState(): void {\n this._checkVerticalScroll();\n this._checkHorizontalScroll();\n }\n\n private _checkVerticalScroll(): void {\n const tbodyWrapperEl = this.tbodyWrapper()?.nativeElement;\n if (tbodyWrapperEl) {\n const hasScroll = tbodyWrapperEl.scrollHeight > tbodyWrapperEl.clientHeight;\n this.hasVerticalScroll.set(hasScroll);\n this._checkLastRowTouchesBottom();\n }\n }\n\n private _checkLastRowTouchesBottom(): void {\n const tbodyWrapperEl = this.tbodyWrapper()?.nativeElement;\n if (!tbodyWrapperEl) {\n return;\n }\n\n const hasScroll = tbodyWrapperEl.scrollHeight > tbodyWrapperEl.clientHeight;\n if (hasScroll) {\n this.lastRowTouchesBottom.set(true);\n return;\n }\n\n if (this.isVirtual()) {\n const virtualScrollInner = tbodyWrapperEl.querySelector('.z-virtual-scroll-inner');\n if (!virtualScrollInner) {\n this.lastRowTouchesBottom.set(true);\n return;\n }\n\n const virtualRows = virtualScrollInner.querySelectorAll('.z-virtual-row');\n if (virtualRows.length === 0) {\n this.lastRowTouchesBottom.set(true);\n return;\n }\n\n const lastVirtualRow = virtualRows[virtualRows.length - 1];\n const lastTr = lastVirtualRow.querySelector('tbody tr:last-child');\n if (!lastTr) {\n this.lastRowTouchesBottom.set(true);\n return;\n }\n\n const wrapperRect = tbodyWrapperEl.getBoundingClientRect();\n const rowRect = lastTr.getBoundingClientRect();\n const gap = wrapperRect.bottom - rowRect.bottom;\n this.lastRowTouchesBottom.set(gap <= 2);\n return;\n }\n\n const tbody = tbodyWrapperEl.querySelector('tbody');\n if (!tbody) {\n this.lastRowTouchesBottom.set(true);\n return;\n }\n\n const lastRow = tbody.querySelector('tr:last-child');\n if (!lastRow) {\n this.lastRowTouchesBottom.set(true);\n return;\n }\n\n const wrapperRect = tbodyWrapperEl.getBoundingClientRect();\n const rowRect = lastRow.getBoundingClientRect();\n const gap = wrapperRect.bottom - rowRect.bottom;\n this.lastRowTouchesBottom.set(gap <= 2);\n }\n\n private _checkHorizontalScroll(): void {\n const containerEl = this.tbodyContainer()?.nativeElement;\n if (containerEl) {\n const tableWidth = this.table.getTotalSize();\n const containerWidth = containerEl.clientWidth;\n const hasScroll = tableWidth > containerWidth;\n this.hasHorizontalScroll.set(hasScroll);\n\n const scrollableEl = this.tbodyWrapper()?.nativeElement;\n if (scrollableEl) {\n this._updateScrollShadowState(scrollableEl);\n }\n }\n }\n\n private _updateScrollShadowState(element: HTMLElement): void {\n const { scrollLeft, scrollWidth, clientWidth } = element;\n const hasScrollLeft = scrollLeft > 0;\n\n const hasRightPinned = this.hasRightPinnedColumns();\n const isAtEnd = scrollLeft + clientWidth >= scrollWidth - 1;\n const hasScrollRight = hasRightPinned && !isAtEnd;\n\n this.hasScrollLeft.set(hasScrollLeft);\n this.hasScrollRight.set(hasScrollRight);\n }\n\n public hasRightPinnedColumns(): boolean {\n return this.table.getRightLeafColumns().length > 0;\n }\n\n public onTbodyScroll(event: Event): void {\n if (this._isSyncingScroll()) {\n return;\n }\n const target = event.target as HTMLElement;\n this._syncScrollLeft(target.scrollLeft);\n this._updateScrollShadowState(target);\n }\n\n private _syncScrollLeft(scrollLeft: number): void {\n untracked(() => {\n this._isSyncingScroll.set(true);\n });\n const thead = this.theadWrapper()?.nativeElement;\n const tbody = this.tbodyWrapper()?.nativeElement;\n const tfoot = this.tfootWrapper()?.nativeElement;\n\n if (thead) {\n thead.scrollLeft = scrollLeft;\n }\n if (tbody) {\n tbody.scrollLeft = scrollLeft;\n }\n if (tfoot) {\n tfoot.scrollLeft = scrollLeft;\n }\n\n untracked(() => {\n this._isSyncingScroll.set(false);\n });\n }\n\n public handleSort(event: Event, handler?: (event: unknown) => void): void {\n event.preventDefault();\n if (this.zConfig().enableMultiSort) {\n const multiSortEvent = new MouseEvent('click', { shiftKey: true });\n handler?.(multiSortEvent);\n return;\n }\n\n handler?.(event);\n }\n\n public onColumnDrop(event: CdkDragDrop<string[]>): void {\n const allColumns = this.table.getAllLeafColumns();\n const columnIds = allColumns.filter(c => c.id !== 'select' && c.id !== 'expand').map(c => c.id);\n moveItemInArray(columnIds, event.previousIndex, event.currentIndex);\n const finalOrder = ['select', 'expand', ...columnIds];\n this.table.setColumnOrder(finalOrder);\n }\n\n public onToggleAllColumns(): void {\n this.table.toggleAllColumnsVisible();\n }\n\n public onPageChange(event: { pageIndex: number; pageSize: number }, emitType: 'user' | 'auto' = 'user'): void {\n if (emitType === 'user') {\n this.isProcessing.set(true);\n this._runAsyncStateUpdate(() => {\n this.pagination.set({ pageIndex: event.pageIndex, pageSize: event.pageSize });\n this.isProcessing.set(false);\n\n this.zChange.emit({\n type: 'page',\n data: { ...event, emitType },\n });\n });\n\n return;\n }\n\n this.pagination.set({ pageIndex: event.pageIndex, pageSize: event.pageSize });\n this.zChange.emit({\n type: 'page',\n data: { ...event, emitType },\n });\n }\n\n public onSearchChange(value: string | number | null): void {\n const searchValue = value === null ? '' : String(value);\n this.globalFilter.set(searchValue);\n this._runAsyncStateUpdate(() => {\n this.zChange.emit({\n type: 'search' as const,\n data: {\n search: searchValue,\n filters: this.columnFilters(),\n sorting: this.sorting(),\n pagination: this.pagination(),\n },\n });\n\n this._checkVerticalScroll();\n this._checkHorizontalScroll();\n });\n }\n\n public toggleHeaderFooterShadow(): void {\n this.showHeaderFooterShadow.update(v => !v);\n }\n\n public onActionClick(event: ZTableActionClickEvent<T>): void {\n this.zChange.emit({\n type: 'action',\n data: event,\n });\n }\n\n public onCellClick(row: Row<T>, columnId: string, value: unknown): void {\n this.zChange.emit({\n type: 'cellClick',\n data: {\n row: row.original,\n rowId: row.id,\n columnId,\n value,\n },\n });\n }\n\n public onCellEdit(event: ZTableEditCellChangeEvent<T>): void {\n this.zChange.emit({\n type: 'cellEdit',\n data: {\n row: event.row,\n rowId: event.rowId,\n rowIndex: event.rowIndex,\n columnId: event.columnId,\n oldValue: event.oldValue,\n newValue: event.newValue,\n },\n });\n }\n\n public openSettingsDrawer(): void {\n if (this.columnOrder().length === 0) {\n this.columnOrder.set(this.table.getAllLeafColumns().map(col => col.id));\n }\n\n this.pendingVisibleColumns.set(\n this.table\n .getAllLeafColumns()\n .filter(col => col.getIsVisible())\n .map(col => col.id)\n );\n\n this.pendingColumnOrder.set(this.columnOrder());\n this.pendingShowHeaderFooterShadow.set(this.showHeaderFooterShadow());\n this.showSettingsDrawer.set(true);\n }\n\n public onPendingColumnDrop(event: CdkDragDrop<string[]>): void {\n const fullOrder = this.columnOrder();\n const unpinnedColumns = fullOrder.filter(id => {\n if (id === 'expand' || id === 'select') {\n return false;\n }\n\n const column = this.table.getColumn(id);\n return !column?.getIsPinned();\n });\n\n const movedItem = unpinnedColumns[event.previousIndex];\n unpinnedColumns.splice(event.previousIndex, 1);\n unpinnedColumns.splice(event.currentIndex, 0, movedItem);\n\n const expandSelect = fullOrder.filter(id => id === 'expand' || id === 'select');\n const pinnedLeft = fullOrder.filter(id => {\n const col = this.table.getColumn(id);\n return col?.getIsPinned() === 'left' && id !== 'expand' && id !== 'select';\n });\n const pinnedRight = fullOrder.filter(id => {\n const col = this.table.getColumn(id);\n return col?.getIsPinned() === 'right';\n });\n\n const newOrder = [...expandSelect, ...pinnedLeft, ...unpinnedColumns, ...pinnedRight];\n this.columnOrder.set(newOrder);\n }\n\n public onVisibleColumnsChange(values: (string | number)[]): void {\n if (values.length >= 2) {\n this.pendingVisibleColumns.set(values.map(v => String(v)));\n }\n }\n\n public onToggleColumnVisibility(columnId: string): void {\n const currentVisibility = this.columnVisibility();\n const isVisible = currentVisibility[columnId] !== false;\n\n const allColumnIds = this.columnOrder().filter(id => id !== 'expand' && id !== 'select');\n const visibleCount = allColumnIds.filter(id => currentVisibility[id] !== false).length;\n\n if (isVisible) {\n if (visibleCount <= 2) {\n return;\n }\n }\n\n if (this._settingsDebounceTimeout) {\n clearTimeout(this._settingsDebounceTimeout);\n }\n\n this._settingsDebounceTimeout = setTimeout(() => {\n this.columnVisibility.set({ ...this.columnVisibility(), [columnId]: !isVisible });\n }, 100);\n }\n\n public onToggleColumnPin(columnId: string, position: 'left' | 'right'): void {\n const column = this.table.getColumn(columnId);\n if (!column) {\n return;\n }\n\n const currentPin = column.getIsPinned();\n const newPosition = currentPin === position ? false : position;\n\n if (this._settingsDebounceTimeout) {\n clearTimeout(this._settingsDebounceTimeout);\n }\n this._settingsDebounceTimeout = setTimeout(() => {\n column.pin(newPosition);\n\n if (newPosition) {\n const columnConfig = this._findColumnConfig(columnId);\n if (columnConfig) {\n const colSpan = getHeaderColSpan(columnConfig);\n if (colSpan && colSpan > 1) {\n const allColumns = this.table.getAllLeafColumns();\n const currentIdx = allColumns.findIndex(c => c.id === columnId);\n if (currentIdx !== -1) {\n for (let i = 1; i < colSpan && currentIdx + i < allColumns.length; i++) {\n const coveredColumn = allColumns[currentIdx + i];\n coveredColumn.pin(newPosition);\n }\n }\n }\n }\n }\n\n this._columnPinVersion.update(v => v + 1);\n this._checkHorizontalScroll();\n }, 100);\n }\n\n public handleColumnPin(columnId: string, position: 'left' | 'right' | false): void {\n const column = this.table.getColumn(columnId);\n if (!column) {\n return;\n }\n\n column.pin(position);\n if (position) {\n const columnConfig = this._findColumnConfig(columnId);\n if (columnConfig) {\n const colSpan = getHeaderColSpan(columnConfig);\n if (colSpan && colSpan > 1) {\n const allColumns = this.table.getAllLeafColumns();\n const currentIdx = allColumns.findIndex(c => c.id === columnId);\n if (currentIdx !== -1) {\n for (let i = 1; i < colSpan && currentIdx + i < allColumns.length; i++) {\n const coveredColumn = allColumns[currentIdx + i];\n coveredColumn.pin(position);\n }\n }\n }\n }\n }\n\n this._columnPinVersion.update(v => v + 1);\n this._checkHorizontalScroll();\n }\n\n public moveColumnLeft(columnId: string): void {\n const currentOrder = this.columnOrder();\n if (currentOrder.length === 0) {\n this.columnOrder.set(this.table.getAllLeafColumns().map(col => col.id));\n }\n\n const order = [...this.columnOrder()];\n const currentIndex = order.indexOf(columnId);\n\n if (currentIndex <= 0) {\n return;\n }\n\n const prevIndex = currentIndex - 1;\n if (order[prevIndex] === 'select' || order[prevIndex] === 'expand' || order[prevIndex] === 'actions') {\n return;\n }\n\n [order[currentIndex], order[prevIndex]] = [order[prevIndex], order[currentIndex]];\n this.columnOrder.set(order);\n }\n\n public moveColumnRight(columnId: string): void {\n const currentOrder = this.columnOrder();\n if (currentOrder.length === 0) {\n this.columnOrder.set(this.table.getAllLeafColumns().map(col => col.id));\n }\n\n const order = [...this.columnOrder()];\n const currentIndex = order.indexOf(columnId);\n\n if (currentIndex < 0 || currentIndex >= order.length - 1) {\n return;\n }\n\n [order[currentIndex], order[currentIndex + 1]] = [order[currentIndex + 1], order[currentIndex]];\n this.columnOrder.set(order);\n }\n\n public isFirstMovableColumn(columnId: string): boolean {\n const order =\n this.columnOrder().length > 0 ? this.columnOrder() : this.table.getAllLeafColumns().map(col => col.id);\n const movableColumns = order.filter(id => id !== 'select' && id !== 'expand' && id !== 'actions');\n return movableColumns.length > 0 && movableColumns[0] === columnId;\n }\n\n public isLastMovableColumn(columnId: string): boolean {\n const order =\n this.columnOrder().length > 0 ? this.columnOrder() : this.table.getAllLeafColumns().map(col => col.id);\n const movableColumns = order.filter(id => id !== 'select' && id !== 'expand' && id !== 'actions');\n return movableColumns.length > 0 && movableColumns[movableColumns.length - 1] === columnId;\n }\n\n private _saveConfig(): void {\n const key = this.zKey();\n if (!key) {\n return;\n }\n\n const columnInfo = this._collectColumnInfo();\n const config: ZTableSavedConfig = {\n columnOrder: this.columnOrder(),\n columnSizing: this.columnSizing(),\n columnPinning: {\n left: this.columnPinning().left,\n right: this.columnPinning().right,\n },\n columnVisibility: this.columnVisibility(),\n columnInfo,\n showHeaderFooterShadow: this.showHeaderFooterShadow(),\n showHorizontalBorder: this.showHorizontalBorder(),\n showVerticalBorder: this.showVerticalBorder(),\n };\n\n try {\n ZCacheService.set(`table-config-${key}`, config);\n } catch (error) {\n console.error('Failed to save table config:', error);\n }\n }\n\n private _collectColumnInfo(): ZTableSavedColumnInfo[] {\n const columns = this.zConfig().columns ?? [];\n const result: ZTableSavedColumnInfo[] = [];\n const collect = (cols: ZTableColumnConfig<T>[]): void => {\n for (const col of cols) {\n result.push({\n id: col.id,\n accessorKey: col.accessorKey,\n });\n if (col.columns) {\n collect(col.columns);\n }\n }\n };\n\n collect(columns);\n return result;\n }\n\n private _loadConfigCache(key: string): boolean {\n if (!key) {\n return false;\n }\n\n try {\n const config = ZCacheService.get<ZTableSavedConfig>(`table-config-${key}`);\n if (!config) {\n return false;\n }\n\n if (!this._isColumnConfigValid(config.columnInfo)) {\n ZCacheService.delete(`table-config-${key}`);\n return false;\n }\n\n if (config.columnOrder && config.columnOrder.length > 0) {\n this.columnOrder.set(config.columnOrder);\n }\n\n if (config.columnPinning) {\n this.columnPinning.set(config.columnPinning);\n }\n\n if (config.columnVisibility) {\n this.columnVisibility.set(config.columnVisibility);\n }\n\n if (typeof config.showHeaderFooterShadow === 'boolean') {\n this.showHeaderFooterShadow.set(config.showHeaderFooterShadow);\n }\n\n if (typeof config.showHorizontalBorder === 'boolean') {\n this.showHorizontalBorder.set(config.showHorizontalBorder);\n }\n\n if (typeof config.showVerticalBorder === 'boolean') {\n this.showVerticalBorder.set(config.showVerticalBorder);\n }\n\n if (config.columnSizing) {\n this.table.setColumnSizing(config.columnSizing!);\n }\n\n return true;\n } catch (error) {\n console.error('Failed to load table config:', error);\n return false;\n }\n }\n\n private _isColumnConfigValid(cachedColumnInfo?: ZTableSavedColumnInfo[]): boolean {\n if (!cachedColumnInfo || cachedColumnInfo.length === 0) {\n return true;\n }\n\n const currentColumnMap = new Map<string, string | undefined>();\n const columns = this.zConfig().columns ?? [];\n\n const collectColumns = (cols: ZTableColumnConfig<T>[]): void => {\n for (const col of cols) {\n currentColumnMap.set(col.id, col.accessorKey);\n if (col.columns) {\n collectColumns(col.columns);\n }\n }\n };\n\n collectColumns(columns);\n for (const cached of cachedColumnInfo) {\n if (!currentColumnMap.has(cached.id)) {\n return false;\n }\n if (currentColumnMap.get(cached.id) !== cached.accessorKey) {\n return false;\n }\n }\n\n return true;\n }\n\n private _getChangedFilterColumnIds(oldState: ColumnFiltersState, newState: ColumnFiltersState): string[] {\n const changedIds: string[] = [];\n const oldMap = new Map(oldState.map(f => [f.id, f.value]));\n const newMap = new Map(newState.map(f => [f.id, f.value]));\n\n for (const filter of newState) {\n const oldValue = oldMap.get(filter.id);\n if (JSON.stringify(oldValue) !== JSON.stringify(filter.value)) {\n changedIds.push(filter.id);\n }\n }\n\n for (const filter of oldState) {\n if (!newMap.has(filter.id)) {\n changedIds.push(filter.id);\n }\n }\n\n return [...new Set(changedIds)];\n }\n\n private _getChangedSortColumnIds(oldState: SortingState, newState: SortingState): string[] {\n const changedIds: string[] = [];\n const oldMap = new Map(oldState.map(s => [s.id, s.desc]));\n const newMap = new Map(newState.map(s => [s.id, s.desc]));\n\n for (const sort of newState) {\n const oldDesc = oldMap.get(sort.id);\n if (oldDesc !== sort.desc) {\n changedIds.push(sort.id);\n }\n }\n\n for (const sort of oldState) {\n if (!newMap.has(sort.id)) {\n changedIds.push(sort.id);\n }\n }\n\n return [...new Set(changedIds)];\n }\n\n private _isColumnFilterModeLocal(columnId: string): boolean {\n const columnConfig = this._findColumnConfig(columnId);\n if (!columnConfig) {\n return true;\n }\n\n const filterConfig =\n typeof columnConfig.filter === 'boolean' ? { enabled: columnConfig.filter } : columnConfig.filter;\n const filterMode = filterConfig?.mode ?? 'local';\n return filterMode === 'local';\n }\n\n private _isColumnSortModeLocal(columnId: string): boolean {\n const columnConfig = this._findColumnConfig(columnId);\n if (!columnConfig) {\n return true;\n }\n\n const sortConfig = typeof columnConfig.sort === 'boolean' ? { enabled: columnConfig.sort } : columnConfig.sort;\n const sortMode = sortConfig?.mode ?? 'local';\n return sortMode === 'local';\n }\n\n private _filterServerModeColumnFilters(filters: ColumnFiltersState): ColumnFiltersState {\n return filters.filter(filter => !this._isColumnFilterModeLocal(filter.id));\n }\n\n private _filterServerModeSorting(sorting: SortingState): SortingState {\n return sorting.filter(sort => !this._isColumnSortModeLocal(sort.id));\n }\n\n private _findColumnConfig(columnId: string): ZTableColumnConfig<T> | undefined {\n const { columns } = this.zConfig();\n if (columns !== this._lastColumnsRef) {\n this._columnConfigCache.clear();\n this._lastColumnsRef = columns;\n }\n\n if (this._columnConfigCache.has(columnId)) {\n return this._columnConfigCache.get(columnId);\n }\n\n const findInColumns = (cols: ZTableColumnConfig<T>[]): ZTableColumnConfig<T> | undefined => {\n for (const col of cols) {\n if (col.id === columnId) {\n return col;\n }\n if (col.columns) {\n const found = findInColumns(col.columns);\n if (found) {\n return found;\n }\n }\n }\n return undefined;\n };\n\n const result = findInColumns(columns);\n this._columnConfigCache.set(columnId, result);\n return result;\n }\n}\n","<!-- Toolbar: Search & Settings -->\n@if (isSearchEnabled() || zConfig().enableSettings) {\n <div class=\"z-table-toolbar mb-2 flex items-center justify-between gap-4\">\n <!-- Search -->\n @if (isSearchEnabled()) {\n @let config = searchConfig();\n <z-input\n [class]=\"config?.width ?? 'w-64'\"\n [zSize]=\"config?.size ?? 'sm'\"\n [zPlaceholder]=\"config?.placeholder ?? 'i18n_z_ui_table_search' | translate\"\n [zSearch]=\"true\"\n [zDebounce]=\"config?.debounceTime ?? 300\"\n (zOnSearch)=\"onSearchChange($event)\" />\n } @else {\n <div></div>\n }\n\n <!-- Settings Button -->\n @if (zConfig().enableSettings) {\n <z-button zType=\"outline\" zSize=\"sm\" zTypeIcon=\"lucideSettings\" (click)=\"openSettingsDrawer()\">\n {{ 'i18n_z_ui_table_settings' | translate }}\n </z-button>\n }\n </div>\n}\n\n<div\n class=\"z-table-container shadow-xs\"\n [class.z-hide-horizontal-border]=\"!showHorizontalBorder()\"\n [class.z-hide-vertical-border]=\"!showVerticalBorder()\"\n [style.max-height]=\"zConfig().maxHeight\"\n [style.min-height]=\"zConfig().minHeight\">\n <!-- Shared colgroup template -->\n <ng-template #colGroupTpl>\n <colgroup>\n @for (column of orderedLeafColumns(); track column.id) {\n @if (column.getIsVisible()) {\n <col [style.width]=\"'calc(var(--col-' + column.id + '-size) * 1px)'\" />\n }\n }\n </colgroup>\n </ng-template>\n\n <!-- Header table -->\n <div\n class=\"z-thead-wrapper shadow-xs\"\n [class.z-shadow-header]=\"shouldHeaderShowShadow()\"\n [class.z-scroll-left]=\"hasScrollLeft()\"\n [class.z-scroll-right]=\"hasScrollRight()\"\n #theadWrapper>\n <table [ngStyle]=\"columnSizeVars()\" [style.width.px]=\"table.getTotalSize()\">\n <ng-container *ngTemplateOutlet=\"colGroupTpl\" />\n <thead>\n @for (headerGroup of orderedHeaderGroups(); track headerGroup.id) {\n <tr>\n @for (header of headerGroup.headers; track header.id) {\n @let rowSpan = header | zTableSpan: zConfig().columns : 'headerRowSpan';\n @let shouldRender = header | zTableCellRender: headerGroup.headers : zConfig().columns : 'header';\n @if (rowSpan && shouldRender) {\n <th\n [attr.id]=\"header.column.id\"\n [ngStyle]=\"\n header.column\n | zTablePinningStyles: header : 'header' : table : zConfig().columns : columnSizingInfo()\n \"\n [class]=\"\n (header.column.id | zTableColumnConfig: zConfig().columns : 'headerClass') +\n ' ' +\n (header.column.id | zTableColumnConfig: zConfig().columns : 'headerAlignClass')\n \"\n [style]=\"header.column.id | zTableColumnConfig: zConfig().columns : 'headerStyle'\"\n [class.z-sticky-left]=\"header.column.getIsPinned() === 'left'\"\n [class.z-sticky-right]=\"header.column.getIsPinned() === 'right'\"\n [class.z-sticky-left-last]=\"header | zTableCellPin: 'isLastLeftPinned' : zConfig().columns\"\n [class.z-sticky-right-first]=\"header | zTableCellPin: 'isFirstRightPinned' : zConfig().columns\"\n [class.z-sticky-right-last]=\"header | zTableCellPin: 'isLastRightPinned' : zConfig().columns\"\n [class.z-at-left-edge]=\"header | zTableCellOffset: orderedLeafColumns()\"\n [class.z-col-select]=\"header.column.id === 'select'\"\n [class.z-col-expand]=\"header.column.id === 'expand'\"\n [class.z-col-actions]=\"\n header.column.id === 'actions' || header.column.id === actionColumnInfo()?.columnId\n \"\n [attr.rowspan]=\"rowSpan\"\n [attr.colspan]=\"header | zTableSpan: zConfig().columns : 'headerColSpan'\">\n @if (header.column.id === 'select') {\n <!-- Header Checkbox -->\n <div class=\"flex items-center justify-center\">\n <z-checkbox\n [zChecked]=\"table.getIsAllRowsSelected()\"\n [zIndeterminate]=\"table.getIsSomeRowsSelected() && !table.getIsAllRowsSelected()\"\n (zChange)=\"table.toggleAllRowsSelected()\" />\n </div>\n } @else if (header.column.id === 'expand') {\n <!-- Expand All Button -->\n <div class=\"flex items-center justify-center\">\n <button\n type=\"button\"\n (click)=\"table.toggleAllRowsExpanded()\"\n class=\"hover:bg-muted flex h-6 w-6 cursor-pointer items-center justify-center rounded\">\n <z-icon\n zType=\"lucideChevronRight\"\n zSize=\"14\"\n class=\"transition-transform duration-200\"\n [class.rotate-90]=\"table.getIsSomeRowsExpanded()\" />\n </button>\n </div>\n } @else {\n <!-- Header Content with Sort and Pin -->\n <div\n class=\"flex w-full items-center gap-1\"\n [class.justify-center]=\"\n (header.column.id | zTableColumnConfig: zConfig().columns : 'headerAlignClass') ===\n 'text-center'\n \"\n [class.justify-end]=\"\n (header.column.id | zTableColumnConfig: zConfig().columns : 'headerAlignClass') === 'text-right'\n \">\n <!-- Column Options Popover Template -->\n @let columnEnableOrdering =\n header.column.id | zTableColumnConfig: zConfig().columns : 'enableOrdering';\n @let columnEnablePinning =\n header.column.id | zTableColumnConfig: zConfig().columns : 'enablePinning';\n @let effectiveEnableOrdering = columnEnableOrdering || zConfig().enableColumnOrdering;\n @let effectiveEnablePinning = columnEnablePinning || zConfig().enableColumnPinning;\n <ng-template #colOptionsPopoverContent>\n <div class=\"flex flex-col gap-0.5 p-0.5\">\n @if (effectiveEnableOrdering) {\n <button\n type=\"button\"\n [disabled]=\"isFirstMovableColumn(header.column.id) || header.column.getIsPinned()\"\n (click)=\"moveColumnLeft(header.column.id); colOptionsPopover.hideImmediate()\"\n class=\"text-foreground hover:bg-muted flex cursor-pointer items-center gap-1.5 rounded px-2 py-1 text-xs disabled:pointer-events-none disabled:opacity-40\">\n <z-icon zType=\"lucideArrowLeft\" zSize=\"12\" />\n <span>{{ 'i18n_z_ui_table_move_left' | translate }}</span>\n </button>\n <button\n type=\"button\"\n [disabled]=\"isLastMovableColumn(header.column.id) || header.column.getIsPinned()\"\n (click)=\"moveColumnRight(header.column.id); colOptionsPopover.hideImmediate()\"\n class=\"text-foreground hover:bg-muted flex cursor-pointer items-center gap-1.5 rounded px-2 py-1 text-xs disabled:pointer-events-none disabled:opacity-40\">\n <z-icon zType=\"lucideArrowRight\" zSize=\"12\" />\n <span>{{ 'i18n_z_ui_table_move_right' | translate }}</span>\n </button>\n }\n @if (effectiveEnableOrdering && header.column.getCanPin() && effectiveEnablePinning) {\n <div class=\"border-border my-0.5 border-t\"></div>\n }\n @if (header.column.getCanPin() && effectiveEnablePinning) {\n @if (header.column.getIsPinned() !== 'left') {\n <button\n type=\"button\"\n (click)=\"handleColumnPin(header.column.id, 'left'); colOptionsPopover.hideImmediate()\"\n class=\"text-foreground hover:bg-muted flex cursor-pointer items-center gap-1.5 rounded px-2 py-1 text-xs\">\n <z-icon zType=\"lucidePin\" zSize=\"12\" class=\"rotate-90\" />\n <span>{{ 'i18n_z_ui_table_pin_left' | translate }}</span>\n </button>\n }\n @if (header.column.getIsPinned() !== 'right') {\n <button\n type=\"button\"\n (click)=\"handleColumnPin(header.column.id, 'right'); colOptionsPopover.hideImmediate()\"\n class=\"text-foreground hover:bg-muted flex cursor-pointer items-center gap-1.5 rounded px-2 py-1 text-xs\">\n <z-icon zType=\"lucidePin\" zSize=\"12\" class=\"-rotate-90\" />\n <span>{{ 'i18n_z_ui_table_pin_right' | translate }}</span>\n </button>\n }\n @if (header.column.getIsPinned()) {\n <button\n type=\"button\"\n (click)=\"handleColumnPin(header.column.id, false); colOptionsPopover.hideImmediate()\"\n class=\"text-destructive hover:bg-destructive/10 flex cursor-pointer items-center gap-1.5 rounded px-2 py-1 text-xs\">\n <z-icon zType=\"lucideX\" zSize=\"12\" />\n <span>{{ 'i18n_z_ui_table_unpin' | translate }}</span>\n </button>\n }\n }\n </div>\n </ng-template>\n\n <!-- Header Text with Popover Trigger -->\n @let hasColumnOptions =\n (header.column.getCanPin() && effectiveEnablePinning) || effectiveEnableOrdering;\n <div\n class=\"z-header-text-wrapper inline-flex max-w-full items-center gap-1 rounded px-1.5 py-1\"\n [class.cursor-pointer]=\"hasColumnOptions\"\n [class.z-has-options]=\"hasColumnOptions\"\n [attr.z-popover]=\"hasColumnOptions ? '' : null\"\n #colOptionsPopover=\"zPopover\"\n #headerTextWrapper\n z-popover\n [zPopoverContent]=\"hasColumnOptions ? colOptionsPopoverContent : null\"\n zTrigger=\"click\"\n zPosition=\"bottom\"\n [zOffset]=\"5\">\n <ng-container\n *flexRender=\"header.column.columnDef.header; props: header.getContext(); let headerContent\">\n @if (headerContent | zTableIsTemplateRef) {\n <div\n [ngClass]=\"\n header.column.id | zTableColumnConfig: zConfig().columns : 'headerContentClass'\n \"\n [ngStyle]=\"\n header.column.id | zTableColumnConfig: zConfig().columns : 'headerContentStyle'\n \">\n <ng-container\n *ngTemplateOutlet=\"headerContent; context: { $implicit: header.getContext() }\" />\n </div>\n } @else if (headerContent | zTableHasIcon) {\n <z-table-icon-text\n class=\"min-w-0 truncate\"\n [zText]=\"headerContent\"\n [zTooltip]=\"header.column.id | zTableColumnConfig: zConfig().columns : 'headerTooltip'\"\n [zTriggerElement]=\"headerTextWrapper\"\n [ngClass]=\"\n header.column.id | zTableColumnConfig: zConfig().columns : 'headerContentClass'\n \"\n [ngStyle]=\"\n header.column.id | zTableColumnConfig: zConfig().columns : 'headerContentStyle'\n \" />\n } @else {\n <span\n class=\"z-table-cell-text\"\n z-tooltip\n [zContent]=\"\n (header.column.id | zTableColumnConfig: zConfig().columns : 'headerTooltip') ||\n headerContent\n \"\n [zTriggerElement]=\"headerTextWrapper\"\n [innerHTML]=\"headerContent | translate | zSafeHtml\"\n [ngClass]=\"\n header.column.id | zTableColumnConfig: zConfig().columns : 'headerContentClass'\n \"\n [ngStyle]=\"\n header.column.id | zTableColumnConfig: zConfig().columns : 'headerContentStyle'\n \"></span>\n }\n </ng-container>\n <!-- Dropdown indicator when has options (between text and sort icon) -->\n @if (hasColumnOptions) {\n <z-icon\n zType=\"lucideChevronDown\"\n zSize=\"12\"\n class=\"text-muted-foreground shrink-0 opacity-50\" />\n }\n </div>\n <!-- Sort Icon (outside wrapper, no hover background) -->\n @if (header.column.getCanSort() && !hasBodyRowSpan()) {\n <span\n class=\"z-sort-icon shrink-0 cursor-pointer text-gray-500 hover:text-gray-700\"\n (click)=\"handleSort($event, header.column.getToggleSortingHandler())\">\n @if (header.column.getIsSorted() === 'asc') {\n <z-icon zType=\"lucideArrowUp\" zSize=\"12\" />\n } @else if (header.column.getIsSorted() === 'desc') {\n <z-icon zType=\"lucideArrowDown\" zSize=\"12\" />\n } @else {\n <z-icon zType=\"lucideArrowDownUp\" zSize=\"12\" class=\"opacity-30\" />\n }\n </span>\n }\n </div>\n }\n <!-- Column Filter -->\n @if (header.column.getCanFilter() && hasFiltering()) {\n <div class=\"mt-1\">\n <z-table-filter [zColumn]=\"$any(header.column)\" [zTable]=\"$any(table)\" />\n </div>\n }\n <!-- Column Resizer -->\n @if (\n header.column.id !== 'select' &&\n header.column.id !== 'expand' &&\n zConfig().enableColumnResizing !== false\n ) {\n <div\n class=\"z-resizer\"\n [class.z-is-resizing]=\"header.column.getIsResizing()\"\n [class.z-resizer-left]=\"\n header.column.getIsPinned() === 'right' || header.column.getIsLastColumn()\n \"\n (dblclick)=\"header.column.resetSize()\"\n [zTableResize]=\"header\"></div>\n }\n </th>\n }\n }\n </tr>\n }\n </thead>\n </table>\n </div>\n\n <!-- Body table -->\n <div\n class=\"z-tbody-wrapper relative\"\n #tbodyContainer\n [class.z-scroll-left]=\"hasScrollLeft()\"\n [class.z-scroll-right]=\"hasScrollRight()\">\n @if (isLoading() || isProcessing()) {\n <!-- Loading State -->\n @if (zConfig().useSkeleton) {\n <!-- Skeleton Loading -->\n <div class=\"animate-in fade-in flex h-full flex-col duration-200\">\n @for (i of skeletonRows(); track $index; let last = $last) {\n <div\n class=\"border-border box-border flex flex-1 flex-col items-start justify-center gap-1.5 px-2\"\n [class.border-b]=\"!last\">\n <z-skeleton zType=\"bar\" zWidth=\"100%\" zHeight=\"22px\" zRadius=\"4px\" />\n <z-skeleton zType=\"bar\" zWidth=\"50%\" zHeight=\"14px\" zRadius=\"4px\" />\n </div>\n }\n </div>\n } @else {\n <!-- Spinner Loading -->\n <div class=\"z-loading-state\">\n <z-loading [zLoading]=\"true\" zSize=\"lg\" [zText]=\"'i18n_z_ui_table_loading' | translate\" />\n </div>\n }\n } @else if (isEmpty()) {\n <div class=\"z-empty-state\">\n @if (isNoSearchResults()) {\n <z-empty zIcon=\"lucideSearchX\" zSize=\"sm\" [zMessage]=\"'i18n_z_ui_table_no_results' | translate\" />\n } @else {\n <z-empty zIcon=\"lucidePackageOpen\" zSize=\"sm\" [zMessage]=\"'i18n_z_ui_table_no_data' | translate\" />\n }\n </div>\n } @else {\n <ng-scrollbar class=\"z-tbody-scrollbar\" #tbodyWrapper track=\"all\" (scroll)=\"onTbodyScroll($event)\">\n @if (isVirtual()) {\n <!-- Virtual Scroll Mode -->\n <div\n class=\"z-virtual-scroll-inner\"\n [style.height.px]=\"virtualizer.getTotalSize()\"\n [style.min-width.px]=\"table.getTotalSize()\">\n @for (virtualItem of virtualizer.getVirtualItems(); track virtualItem.index) {\n @let groupRows = dynamicGroupRows()[virtualItem.index] || [];\n <div\n #virtualRow\n class=\"z-virtual-row\"\n [attr.data-index]=\"virtualItem.index\"\n [style.height.px]=\"\n dynamicSize() ? null : (dynamicGroupHeights()[virtualItem.index] ?? groupSize() * virtualRowHeight())\n \"\n [style.transform]=\"'translate3d(0,' + virtualItem.start + 'px,0)'\">\n <table [ngStyle]=\"columnSizeVars()\" [style.width.px]=\"table.getTotalSize()\">\n <ng-container *ngTemplateOutlet=\"colGroupTpl\" />\n <tbody\n [class.z-has-vertical-scroll]=\"hasVerticalScroll()\"\n [class.z-last-row-touches-bottom]=\"lastRowTouchesBottom()\">\n @for (row of groupRows; track row.id) {\n <tr\n z-table-row-hover\n [style.height.px]=\"dynamicSize() ? null : virtualRowHeight()\"\n [style.min-height.px]=\"dynamicSize() ? virtualRowHeight() : null\"\n [class.z-child-row]=\"row.depth > 0\"\n [class.z-selected]=\"row.getIsSelected()\"\n [class.z-indeterminate-selected]=\"row.getIsSomeSelected() && !row.getIsSelected()\">\n @for (cell of row.getVisibleCells(); track cell.id) {\n @let shouldRenderRowSpan =\n cell | zTableSpan: zConfig().columns : 'shouldRender' : table.getRowModel().rows;\n @let shouldRenderColSpan =\n cell | zTableCellRender: row.getVisibleCells() : zConfig().columns : 'body';\n @if (shouldRenderRowSpan && shouldRenderColSpan) {\n <td\n [ngStyle]=\"\n cell.column\n | zTablePinningStyles\n : cell\n : 'body'\n : row.getVisibleCells()\n : zConfig().columns\n : columnSizingInfo()\n \"\n [class.z-sticky-left]=\"cell.column.getIsPinned() === 'left'\"\n [class.z-sticky-right]=\"cell.column.getIsPinned() === 'right'\"\n [class.z-sticky-left-last]=\"\n cell.column.getIsPinned() === 'left' && cell.column.getIsLastColumn('left')\n \"\n [class.z-sticky-right-first]=\"\n cell.column.getIsPinned() === 'right' && cell.column.getIsFirstColumn('right')\n \"\n [class.z-sticky-right-last]=\"\n cell.column.getIsPinned() === 'right' && cell.column.getIsLastColumn('right')\n \"\n [class.z-at-left-edge]=\"cell | zTableCellOffset: orderedLeafColumns()\"\n [class.z-col-select]=\"cell.column.id === 'select'\"\n [class.z-col-expand]=\"cell.column.id === 'expand'\"\n [class.z-col-actions]=\"cell.column.id === actionColumnInfo()?.columnId\"\n [class.z-at-bottom]=\"\n cell | zTableCellBottom: zConfig().columns : table.getRowModel().rows\n \"\n [attr.rowspan]=\"\n cell | zTableSpan: zConfig().columns : 'cellRowSpan' : table.getRowModel().rows\n \"\n [attr.colspan]=\"cell | zTableSpan: zConfig().columns : 'cellColSpan'\"\n [class]=\"cell | zTableCellConfig: zConfig().columns : 'cellClass'\"\n [style]=\"cell | zTableCellConfig: zConfig().columns : 'cellStyle'\">\n @if (cell.column.id === 'select') {\n <!-- Row Checkbox -->\n <div class=\"flex items-center justify-center\">\n <z-checkbox\n [zChecked]=\"cell.row.getIsSelected()\"\n [zIndeterminate]=\"cell.row.getIsSomeSelected() && !cell.row.getIsSelected()\"\n [zDisabled]=\"!cell.row.getCanSelect()\"\n (zChange)=\"cell.row.toggleSelected()\" />\n </div>\n } @else if (cell.column.id === 'expand') {\n <!-- Expand Button -->\n <div class=\"flex items-center justify-center\">\n @if (cell.row.subRows && cell.row.subRows.length > 0) {\n <button\n type=\"button\"\n (click)=\"cell.row.toggleExpanded()\"\n class=\"hover:bg-muted flex h-6 w-6 cursor-pointer items-center justify-center rounded\">\n <z-icon\n zType=\"lucideChevronRight\"\n zSize=\"14\"\n class=\"transition-transform duration-200\"\n [class.rotate-90]=\"cell.row.getIsExpanded()\" />\n </button>\n }\n </div>\n } @else if (cell.column.id === actionColumnInfo()?.columnId && actionColumnInfo()) {\n <z-table-actions\n [zConfig]=\"$any(actionColumnInfo()!.config)\"\n [zRow]=\"cell.row.original\"\n [zRowId]=\"cell.row.id\"\n (zActionClick)=\"onActionClick($event)\" />\n } @else {\n @let editInfoVirtual = cell.getContext() | zTableCellEdit: zConfig().columns;\n @if (editInfoVirtual.enabled) {\n <!-- Editable Cell (Virtual) -->\n <z-table-edit-cell\n [zRow]=\"cell.row.original\"\n [zRowId]=\"cell.row.id\"\n [zRowIndex]=\"cell.row.index\"\n [zColumnId]=\"cell.column.id\"\n [zValue]=\"cell.getValue()\"\n [zEditConfig]=\"$any(editInfoVirtual.config)\"\n (zChange)=\"onCellEdit($any($event))\" />\n } @else {\n <ng-container\n *flexRender=\"cell.column.columnDef.cell; props: cell.getContext(); let cellContent\">\n @if (cellContent | zTableIsTemplateRef) {\n <!-- TemplateRef rendering -->\n @let isClickable = cell.column.id | zTableCellClickable: zConfig().columns;\n <div\n [ngClass]=\"cell | zTableCellConfig: zConfig().columns : 'contentClass'\"\n [ngStyle]=\"cell | zTableCellConfig: zConfig().columns : 'contentStyle'\"\n (click)=\"isClickable && onCellClick(row, cell.column.id, cell.getValue())\">\n <ng-container\n *ngTemplateOutlet=\"cellContent; context: { $implicit: cell.getContext() }\" />\n </div>\n } @else if (cellContent | zTableHasIcon) {\n <!-- Icon syntax rendering -->\n @let isClickableIcon = cell.column.id | zTableCellClickable: zConfig().columns;\n <z-table-icon-text\n [zText]=\"cellContent\"\n [zTooltip]=\"cell | zTableCellConfig: zConfig().columns : 'contentTooltip'\"\n [ngClass]=\"cell | zTableCellConfig: zConfig().columns : 'contentClass'\"\n [ngStyle]=\"cell | zTableCellConfig: zConfig().columns : 'contentStyle'\"\n (click)=\"\n isClickableIcon && onCellClick(row, cell.column.id, cell.getValue())\n \" />\n } @else {\n <!-- Default/innerHTML rendering -->\n @let isClickableDefault = cell.column.id | zTableCellClickable: zConfig().columns;\n <div\n class=\"z-table-cell-text\"\n z-tooltip\n [zContent]=\"\n (cell | zTableCellConfig: zConfig().columns : 'contentTooltip') || cellContent\n \"\n [innerHTML]=\"cellContent | translate | zSafeHtml\"\n [ngClass]=\"cell | zTableCellConfig: zConfig().columns : 'contentClass'\"\n [ngStyle]=\"cell | zTableCellConfig: zConfig().columns : 'contentStyle'\"\n (click)=\"\n isClickableDefault && onCellClick(row, cell.column.id, cell.getValue())\n \"></div>\n }\n </ng-container>\n }\n }\n </td>\n }\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n </div>\n } @else {\n <!-- Normal Scroll Mode -->\n <table [ngStyle]=\"columnSizeVars()\" [style.width.px]=\"table.getTotalSize()\">\n <ng-container *ngTemplateOutlet=\"colGroupTpl\" />\n <tbody\n [class.z-has-vertical-scroll]=\"hasVerticalScroll()\"\n [class.z-last-row-touches-bottom]=\"lastRowTouchesBottom()\">\n <!-- Row Template -->\n <ng-template #rowTemplate let-row>\n <tr\n z-table-row-hover\n [attr.data-row-id]=\"row.id\"\n [ngStyle]=\"row | zTableRow: table : 'pinningStyles' : virtualRowHeight()\"\n [class.z-child-row]=\"row.depth > 0\"\n [class.z-selected]=\"row.getIsSelected()\"\n [class.z-indeterminate-selected]=\"row.getIsSomeSelected() && !row.getIsSelected()\"\n [class.z-pinned-top]=\"row.getIsPinned() === 'top'\"\n [class.z-pinned-bottom]=\"row.getIsPinned() === 'bottom'\"\n [class.z-shadow-bottom]=\"\n showHeaderFooterShadow() &&\n row.getIsPinned() === 'top' &&\n (row | zTableRow: table : 'isLastTopPinned')\n \"\n [class.z-shadow-top]=\"\n showHeaderFooterShadow() &&\n row.getIsPinned() === 'bottom' &&\n (row | zTableRow: table : 'isFirstBottomPinned')\n \"\n [attr.data-depth]=\"row.depth\">\n @for (cell of row.getVisibleCells(); track cell.id) {\n @let shouldRenderRowSpan =\n cell | zTableSpan: zConfig().columns : 'shouldRender' : table.getRowModel().rows;\n @let shouldRenderColSpan =\n cell | zTableCellRender: row.getVisibleCells() : zConfig().columns : 'body';\n @if (shouldRenderRowSpan && shouldRenderColSpan) {\n <td\n [ngStyle]=\"\n cell.column\n | zTablePinningStyles\n : cell\n : 'body'\n : row.getVisibleCells()\n : zConfig().columns\n : columnSizingInfo()\n \"\n [class]=\"cell | zTableCellConfig: zConfig().columns : 'cellClass'\"\n [style]=\"cell | zTableCellConfig: zConfig().columns : 'cellStyle'\"\n [class.z-sticky-left]=\"cell.column.getIsPinned() === 'left'\"\n [class.z-sticky-right]=\"cell.column.getIsPinned() === 'right'\"\n [class.z-sticky-left-last]=\"\n cell.column.getIsPinned() === 'left' && cell.column.getIsLastColumn('left')\n \"\n [class.z-sticky-right-first]=\"\n cell.column.getIsPinned() === 'right' && cell.column.getIsFirstColumn('right')\n \"\n [class.z-sticky-right-last]=\"\n cell.column.getIsPinned() === 'right' && cell.column.getIsLastColumn('right')\n \"\n [class.z-at-left-edge]=\"cell | zTableCellOffset: orderedLeafColumns()\"\n [class.z-col-select]=\"cell.column.id === 'select'\"\n [class.z-col-expand]=\"cell.column.id === 'expand'\"\n [class.z-col-actions]=\"\n cell.column.id === 'actions' || cell.column.id === actionColumnInfo()?.columnId\n \"\n [class.z-at-bottom]=\"cell | zTableCellBottom: zConfig().columns : table.getRowModel().rows\"\n [attr.rowspan]=\"cell | zTableSpan: zConfig().columns : 'cellRowSpan' : table.getRowModel().rows\"\n [attr.colspan]=\"cell | zTableSpan: zConfig().columns : 'cellColSpan'\">\n @if (cell.column.id === 'select') {\n <!-- Row Checkbox with Pin Button -->\n <div class=\"flex items-center justify-center gap-1\">\n <z-checkbox\n [zChecked]=\"cell.row.getIsSelected()\"\n [zIndeterminate]=\"cell.row.getIsSomeSelected() && !cell.row.getIsSelected()\"\n [zDisabled]=\"!cell.row.getCanSelect()\"\n (zChange)=\"cell.row.toggleSelected()\" />\n @if (zConfig().enableRowPinning && cell.row.depth === 0 && !hasBodyRowSpan()) {\n <ng-template #rowPinPopoverContent>\n <div class=\"flex flex-col gap-0.5 p-0.5\">\n @if (cell.row.getIsPinned() !== 'top') {\n <button\n type=\"button\"\n (click)=\"cell.row.pin('top'); rowPinPopover.hideImmediate()\"\n class=\"text-foreground hover:bg-muted flex cursor-pointer items-center gap-1.5 rounded px-2 py-1 text-xs\">\n <z-icon zType=\"lucideArrowUp\" zSize=\"12\" />\n <span>{{ 'i18n_z_ui_table_pin_top' | translate }}</span>\n </button>\n }\n @if (cell.row.getIsPinned() !== 'bottom') {\n <button\n type=\"button\"\n (click)=\"cell.row.pin('bottom'); rowPinPopover.hideImmediate()\"\n class=\"text-foreground hover:bg-muted flex cursor-pointer items-center gap-1.5 rounded px-2 py-1 text-xs\">\n <z-icon zType=\"lucideArrowDown\" zSize=\"12\" />\n <span>{{ 'i18n_z_ui_table_pin_bottom' | translate }}</span>\n </button>\n }\n @if (cell.row.getIsPinned()) {\n <button\n type=\"button\"\n (click)=\"cell.row.pin(false); rowPinPopover.hideImmediate()\"\n class=\"text-destructive hover:bg-destructive/10 flex cursor-pointer items-center gap-1.5 rounded px-2 py-1 text-xs\">\n <z-icon zType=\"lucideX\" zSize=\"12\" />\n <span>{{ 'i18n_z_ui_table_unpin' | translate }}</span>\n </button>\n }\n </div>\n </ng-template>\n <button\n type=\"button\"\n z-popover\n #rowPinPopover=\"zPopover\"\n [zPopoverContent]=\"rowPinPopoverContent\"\n zTrigger=\"click\"\n zPosition=\"bottom\"\n class=\"z-row-pin-trigger text-muted-foreground hover:bg-muted hover:text-foreground flex cursor-pointer items-center justify-center rounded p-1\"\n [class.text-primary]=\"cell.row.getIsPinned()\">\n <z-icon zType=\"lucideEllipsis\" zSize=\"14\" class=\"rotate-90\" />\n </button>\n }\n </div>\n } @else if (cell.column.id === 'expand') {\n <!-- Expand Button with Row Pin Popover -->\n <div class=\"flex items-center justify-center gap-1\">\n @if (cell.row.subRows && cell.row.subRows.length > 0) {\n <button\n type=\"button\"\n (click)=\"cell.row.toggleExpanded()\"\n class=\"hover:bg-muted flex h-6 w-6 cursor-pointer items-center justify-center rounded\">\n <z-icon\n zType=\"lucideChevronRight\"\n zSize=\"14\"\n class=\"transition-transform duration-200\"\n [class.rotate-90]=\"cell.row.getIsExpanded()\" />\n </button>\n }\n @if (\n zConfig().enableRowPinning &&\n cell.row.depth === 0 &&\n !(cell.row.subRows && cell.row.subRows.length > 0) &&\n !hasBodyRowSpan()\n ) {\n <ng-template #rowPinPopoverContent>\n <div class=\"flex flex-col gap-0.5 p-0.5\">\n @if (cell.row.getIsPinned() !== 'top') {\n <button\n type=\"button\"\n (click)=\"cell.row.pin('top'); rowPinPopover.hideImmediate()\"\n class=\"text-foreground hover:bg-muted flex cursor-pointer items-center gap-1.5 rounded px-2 py-1 text-xs\">\n <z-icon zType=\"lucideArrowUp\" zSize=\"12\" />\n <span>{{ 'i18n_z_ui_table_pin_top' | translate }}</span>\n </button>\n }\n @if (cell.row.getIsPinned() !== 'bottom') {\n <button\n type=\"button\"\n (click)=\"cell.row.pin('bottom'); rowPinPopover.hideImmediate()\"\n class=\"text-foreground hover:bg-muted flex cursor-pointer items-center gap-1.5 rounded px-2 py-1 text-xs\">\n <z-icon zType=\"lucideArrowDown\" zSize=\"12\" />\n <span>{{ 'i18n_z_ui_table_pin_bottom' | translate }}</span>\n </button>\n }\n @if (cell.row.getIsPinned()) {\n <button\n type=\"button\"\n (click)=\"cell.row.pin(false); rowPinPopover.hideImmediate()\"\n class=\"text-destructive hover:bg-destructive/10 flex cursor-pointer items-center gap-1.5 rounded px-2 py-1 text-xs\">\n <z-icon zType=\"lucideX\" zSize=\"12\" />\n <span>{{ 'i18n_z_ui_table_unpin' | translate }}</span>\n </button>\n }\n </div>\n </ng-template>\n <button\n type=\"button\"\n z-popover\n #rowPinPopover=\"zPopover\"\n [zPopoverContent]=\"rowPinPopoverContent\"\n zTrigger=\"click\"\n zPosition=\"bottom\"\n class=\"z-row-pin-trigger text-muted-foreground hover:bg-muted hover:text-foreground flex cursor-pointer items-center justify-center rounded p-1\"\n [class.text-primary]=\"cell.row.getIsPinned()\">\n <z-icon zType=\"lucideEllipsis\" zSize=\"14\" class=\"rotate-90\" />\n </button>\n }\n </div>\n } @else if (cell.column.id === 'actions') {\n <!-- Actions Column - Row Pin Only (for parent rows) -->\n @if (cell.row.depth === 0 && !hasBodyRowSpan()) {\n <div class=\"flex items-center justify-center\">\n <ng-template #rowPinPopoverContent>\n <div class=\"flex flex-col gap-0.5 p-0.5\">\n @if (cell.row.getIsPinned() !== 'top') {\n <button\n type=\"button\"\n (click)=\"cell.row.pin('top'); rowPinPopover.hideImmediate()\"\n class=\"text-foreground hover:bg-muted flex cursor-pointer items-center gap-1.5 rounded px-2 py-1 text-xs\">\n <z-icon zType=\"lucideArrowUp\" zSize=\"12\" />\n <span>{{ 'i18n_z_ui_table_pin_top' | translate }}</span>\n </button>\n }\n @if (cell.row.getIsPinned() !== 'bottom') {\n <button\n type=\"button\"\n (click)=\"cell.row.pin('bottom'); rowPinPopover.hideImmediate()\"\n class=\"text-foreground hover:bg-muted flex cursor-pointer items-center gap-1.5 rounded px-2 py-1 text-xs\">\n <z-icon zType=\"lucideArrowDown\" zSize=\"12\" />\n <span>{{ 'i18n_z_ui_table_pin_bottom' | translate }}</span>\n </button>\n }\n @if (cell.row.getIsPinned()) {\n <button\n type=\"button\"\n (click)=\"cell.row.pin(false); rowPinPopover.hideImmediate()\"\n class=\"text-destructive hover:bg-destructive/10 flex cursor-pointer items-center gap-1.5 rounded px-2 py-1 text-xs\">\n <z-icon zType=\"lucideX\" zSize=\"12\" />\n <span>{{ 'i18n_z_ui_table_unpin' | translate }}</span>\n </button>\n }\n </div>\n </ng-template>\n <button\n type=\"button\"\n z-popover\n #rowPinPopover=\"zPopover\"\n [zPopoverContent]=\"rowPinPopoverContent\"\n zTrigger=\"click\"\n zPosition=\"bottom\"\n class=\"z-row-pin-trigger text-muted-foreground hover:bg-muted hover:text-foreground flex cursor-pointer items-center justify-center rounded p-1\"\n [class.text-primary]=\"cell.row.getIsPinned()\">\n <z-icon zType=\"lucideEllipsis\" zSize=\"14\" class=\"rotate-90\" />\n </button>\n </div>\n }\n } @else if (cell.column.id === actionColumnInfo()?.columnId && actionColumnInfo()) {\n <z-table-actions\n [zConfig]=\"$any(actionColumnInfo()!.config)\"\n [zRow]=\"cell.row.original\"\n [zRowId]=\"cell.row.id\"\n (zActionClick)=\"onActionClick($event)\" />\n } @else {\n @let editInfo = cell.getContext() | zTableCellEdit: zConfig().columns;\n @if (editInfo.enabled) {\n <!-- Editable Cell -->\n <z-table-edit-cell\n [zRow]=\"cell.row.original\"\n [zRowId]=\"cell.row.id\"\n [zRowIndex]=\"cell.row.index\"\n [zColumnId]=\"cell.column.id\"\n [zValue]=\"cell.getValue()\"\n [zEditConfig]=\"$any(editInfo.config)\"\n (zChange)=\"onCellEdit($any($event))\" />\n } @else {\n <ng-container\n *flexRender=\"cell.column.columnDef.cell; props: cell.getContext(); let cellContent\">\n @if (cellContent | zTableIsTemplateRef) {\n <!-- TemplateRef rendering -->\n @let isClickableTpl = cell.column.id | zTableCellClickable: zConfig().columns;\n <div\n [ngClass]=\"cell | zTableCellConfig: zConfig().columns : 'contentClass'\"\n [ngStyle]=\"cell | zTableCellConfig: zConfig().columns : 'contentStyle'\"\n (click)=\"isClickableTpl && onCellClick(row, cell.column.id, cell.getValue())\">\n <ng-container\n *ngTemplateOutlet=\"cellContent; context: { $implicit: cell.getContext() }\" />\n </div>\n } @else if (cellContent | zTableHasIcon) {\n <!-- Icon syntax rendering -->\n @let isClickableIconTpl = cell.column.id | zTableCellClickable: zConfig().columns;\n <z-table-icon-text\n [zText]=\"cellContent\"\n [zTooltip]=\"cell | zTableCellConfig: zConfig().columns : 'contentTooltip'\"\n [ngClass]=\"cell | zTableCellConfig: zConfig().columns : 'contentClass'\"\n [ngStyle]=\"cell | zTableCellConfig: zConfig().columns : 'contentStyle'\"\n (click)=\"isClickableIconTpl && onCellClick(row, cell.column.id, cell.getValue())\" />\n } @else {\n <!-- Default/innerHTML rendering -->\n @let isClickableDefaultTpl = cell.column.id | zTableCellClickable: zConfig().columns;\n <div\n class=\"z-table-cell-text\"\n z-tooltip\n [zContent]=\"\n (cell | zTableCellConfig: zConfig().columns : 'contentTooltip') || cellContent\n \"\n [innerHTML]=\"cellContent | translate | zSafeHtml\"\n [ngClass]=\"cell | zTableCellConfig: zConfig().columns : 'contentClass'\"\n [ngStyle]=\"cell | zTableCellConfig: zConfig().columns : 'contentStyle'\"\n (click)=\"\n isClickableDefaultTpl && onCellClick(row, cell.column.id, cell.getValue())\n \"></div>\n }\n </ng-container>\n }\n }\n </td>\n }\n }\n </tr>\n\n <!-- Expanded Row Detail -->\n @if (row.getIsExpanded() && row.depth === 0 && !row.subRows?.length && zConfig().expandedRowTemplate) {\n <tr class=\"z-expanded-row\">\n <td [attr.colspan]=\"row.getVisibleCells().length\" class=\"p-0\">\n <ng-container *ngTemplateOutlet=\"zConfig().expandedRowTemplate!; context: { $implicit: row }\" />\n </td>\n </tr>\n }\n </ng-template>\n\n <!-- Render Top Pinned Rows (hidden when filtered data is empty) -->\n @if (!isEmpty()) {\n @for (row of table.getTopRows(); track row.id) {\n <ng-container *ngTemplateOutlet=\"rowTemplate; context: { $implicit: row }\" />\n }\n }\n\n <!-- Render Center Rows -->\n @for (row of table.getCenterRows(); track row.id) {\n <ng-container *ngTemplateOutlet=\"rowTemplate; context: { $implicit: row }\" />\n }\n\n <!-- Render Bottom Pinned Rows (hidden when filtered data is empty) -->\n @if (!isEmpty()) {\n @for (row of bottomRowsReversed(); track row.id) {\n <ng-container *ngTemplateOutlet=\"rowTemplate; context: { $implicit: row }\" />\n }\n }\n </tbody>\n </table>\n }\n </ng-scrollbar>\n }\n <!-- end @else -->\n </div>\n\n <!-- Footer table -->\n @if (hasFooter()) {\n <div\n class=\"z-tfoot-wrapper\"\n [class.z-shadow-footer]=\"shouldFooterShowShadow()\"\n [class.z-scroll-left]=\"hasScrollLeft()\"\n [class.z-scroll-right]=\"hasScrollRight()\"\n #tfootWrapper>\n <table [ngStyle]=\"columnSizeVars()\" [style.width.px]=\"table.getTotalSize()\">\n <ng-container *ngTemplateOutlet=\"colGroupTpl\" />\n <tfoot>\n @for (footerGroup of orderedFooterGroups(); track footerGroup.id) {\n @if (footerGroup | zTableFooterContent: zConfig().columns) {\n <tr>\n @for (footer of footerGroup.headers; track footer.id) {\n @let rowSpan = footer | zTableSpan: zConfig().columns : 'footerRowSpan';\n @let shouldRender = footer | zTableCellRender: footerGroup.headers : zConfig().columns : 'footer';\n @if (rowSpan && shouldRender) {\n <th\n [ngStyle]=\"\n footer.column\n | zTablePinningStyles: footer : 'footer' : table : zConfig().columns : columnSizingInfo()\n \"\n [class]=\"\n (footer.column.id | zTableColumnConfig: zConfig().columns : 'footerClass') +\n ' ' +\n (footer.column.id | zTableColumnConfig: zConfig().columns : 'footerAlignClass')\n \"\n [style]=\"footer.column.id | zTableColumnConfig: zConfig().columns : 'footerStyle'\"\n [class.z-sticky-left]=\"footer.column.getIsPinned() === 'left'\"\n [class.z-sticky-right]=\"footer.column.getIsPinned() === 'right'\"\n [class.z-sticky-left-last]=\"\n footer | zTableCellPin: 'isLastLeftPinned' : zConfig().columns : 'footer'\n \"\n [class.z-sticky-right-first]=\"\n footer | zTableCellPin: 'isFirstRightPinned' : zConfig().columns : 'footer'\n \"\n [class.z-sticky-right-last]=\"\n footer | zTableCellPin: 'isLastRightPinned' : zConfig().columns : 'footer'\n \"\n [class.z-at-left-edge]=\"footer | zTableCellOffset: orderedLeafColumns()\"\n [attr.rowspan]=\"rowSpan\"\n [attr.colspan]=\"footer | zTableSpan: zConfig().columns : 'footerColSpan'\">\n @let configFooterContent =\n footer.column.id | zTableColumnConfig: zConfig().columns : 'footerContent';\n @if (footer.column.columnDef.footer) {\n <ng-container\n *flexRender=\"footer.column.columnDef.footer; props: footer.getContext(); let footerContent\">\n <div\n class=\"flex w-full items-center\"\n [class.justify-center]=\"\n (footer.column.id | zTableColumnConfig: zConfig().columns : 'footerAlignClass') ===\n 'text-center'\n \"\n [class.justify-end]=\"\n (footer.column.id | zTableColumnConfig: zConfig().columns : 'footerAlignClass') ===\n 'text-right'\n \">\n @if (footerContent | zTableIsTemplateRef) {\n <!-- TemplateRef rendering -->\n <div\n [ngClass]=\"\n footer.column.id | zTableColumnConfig: zConfig().columns : 'footerContentClass'\n \"\n [ngStyle]=\"\n footer.column.id | zTableColumnConfig: zConfig().columns : 'footerContentStyle'\n \">\n <ng-container\n *ngTemplateOutlet=\"footerContent; context: { $implicit: footer.getContext() }\" />\n </div>\n } @else if (footerContent | zTableHasIcon) {\n <!-- Icon syntax rendering -->\n <z-table-icon-text\n [zText]=\"footerContent\"\n [zTooltip]=\"footer.column.id | zTableColumnConfig: zConfig().columns : 'footerTooltip'\"\n [ngClass]=\"\n footer.column.id | zTableColumnConfig: zConfig().columns : 'footerContentClass'\n \"\n [ngStyle]=\"\n footer.column.id | zTableColumnConfig: zConfig().columns : 'footerContentStyle'\n \" />\n } @else {\n <!-- Default/string rendering -->\n <span\n class=\"z-table-cell-text\"\n z-tooltip\n [zContent]=\"\n (footer.column.id | zTableColumnConfig: zConfig().columns : 'footerTooltip') ||\n footerContent\n \"\n [ngClass]=\"\n footer.column.id | zTableColumnConfig: zConfig().columns : 'footerContentClass'\n \"\n [ngStyle]=\"\n footer.column.id | zTableColumnConfig: zConfig().columns : 'footerContentStyle'\n \">\n {{ footerContent | translate }}\n </span>\n }\n </div>\n </ng-container>\n } @else if (configFooterContent) {\n <!-- Fallback for group columns without TanStack footer -->\n <div\n class=\"flex w-full items-center\"\n [class.justify-center]=\"\n (footer.column.id | zTableColumnConfig: zConfig().columns : 'footerAlignClass') ===\n 'text-center'\n \"\n [class.justify-end]=\"\n (footer.column.id | zTableColumnConfig: zConfig().columns : 'footerAlignClass') ===\n 'text-right'\n \">\n <span\n class=\"z-table-cell-text\"\n z-tooltip\n [zContent]=\"\n (footer.column.id | zTableColumnConfig: zConfig().columns : 'footerTooltip') ||\n $any(configFooterContent)\n \"\n [ngClass]=\"footer.column.id | zTableColumnConfig: zConfig().columns : 'footerContentClass'\"\n [ngStyle]=\"footer.column.id | zTableColumnConfig: zConfig().columns : 'footerContentStyle'\">\n {{ $any(configFooterContent) | translate }}\n </span>\n </div>\n }\n </th>\n }\n }\n </tr>\n }\n }\n </tfoot>\n </table>\n </div>\n }\n</div>\n\n<!-- Pagination -->\n@if (zConfig().pagination?.enabled !== false) {\n @let totalRows = table.getFilteredRowModel().rows.length;\n <div class=\"mt-4 flex items-center justify-between gap-4\">\n <div class=\"truncate text-sm text-gray-500\">\n {{\n ('i18n_z_ui_table_total_rows' | translate).replace(\n '{total}',\n zConfig().totalCount?.toString() || totalRows.toString()\n )\n }}\n </div>\n <z-pagination\n [zTotal]=\"zConfig().totalCount ?? totalRows\"\n [(zPageIndex)]=\"pagination().pageIndex\"\n [(zPageSize)]=\"pagination().pageSize\"\n [zPageSizeOptions]=\"zConfig().pagination?.pageSizeOptions ?? [10, 20, 50, 100]\"\n [zShowSizeChanger]=\"zConfig().pagination?.showSizeChanger ?? true\"\n [zShowQuickJumper]=\"zConfig().pagination?.showQuickJumper ?? false\"\n [zShowTotal]=\"false\"\n [zDisabled]=\"zConfig().pagination?.disabled || isLoading() || isProcessing()\"\n (zOnPageChange)=\"onPageChange($event)\" />\n </div>\n}\n\n<!-- Settings Drawer -->\n<z-drawer\n [(zVisible)]=\"showSettingsDrawer\"\n [zTitle]=\"'i18n_z_ui_table_settings_title' | translate\"\n zPlacement=\"right\"\n zWidth=\"500px\"\n [zShadow]=\"true\"\n [zOkText]=\"null\"\n [zCancelText]=\"'i18n_z_ui_drawer_close' | translate\">\n <div class=\"z-table-settings-drawer px-4\">\n <!-- Display Settings -->\n <div class=\"mb-4\">\n <h4 class=\"text-foreground mb-2 text-sm font-semibold\">{{ 'i18n_z_ui_table_display_settings' | translate }}</h4>\n <p class=\"text-muted-foreground mb-3 text-xs\">{{ 'i18n_z_ui_table_display_settings_desc' | translate }}</p>\n <div class=\"grid grid-cols-2 gap-x-4 gap-y-3\">\n <z-checkbox\n [zChecked]=\"showHorizontalBorder()\"\n [zText]=\"'i18n_z_ui_table_horizontal_border' | translate\"\n (zChange)=\"showHorizontalBorder.set(!showHorizontalBorder())\" />\n <z-checkbox\n [zChecked]=\"showVerticalBorder()\"\n [zText]=\"'i18n_z_ui_table_vertical_border' | translate\"\n (zChange)=\"showVerticalBorder.set(!showVerticalBorder())\" />\n <z-checkbox\n [zChecked]=\"showHeaderFooterShadow()\"\n [zText]=\"'i18n_z_ui_table_header_footer_shadow' | translate\"\n (zChange)=\"showHeaderFooterShadow.set(!showHeaderFooterShadow())\" />\n </div>\n </div>\n\n <!-- Divider -->\n <div class=\"border-border my-4 border-t\"></div>\n\n <!-- Unified Column Settings -->\n @if (zConfig().enableSettings) {\n <div class=\"mb-4\">\n <h4 class=\"text-foreground mb-2 text-sm font-semibold\">{{ 'i18n_z_ui_table_column_settings' | translate }}</h4>\n <p class=\"text-muted-foreground mb-3 text-xs\">{{ 'i18n_z_ui_table_column_settings_desc' | translate }}</p>\n\n <!-- Unpinned Columns (Draggable) -->\n <div\n cdkDropList\n #columnDropList=\"cdkDropList\"\n (cdkDropListDropped)=\"onPendingColumnDrop($event)\"\n class=\"z-column-drop-list space-y-1.5\">\n @for (columnId of columnOrder(); track columnId; let i = $index) {\n @if (columnId !== 'expand' && columnId !== 'select') {\n @let column = table.getColumn(columnId);\n @let isPinned = column?.getIsPinned();\n @let isVisible = columnVisibility()[columnId] !== false;\n @let canPin = column?.getCanPin() !== false && zConfig().enableColumnPinning;\n @if (!isPinned) {\n <div\n cdkDrag\n [cdkDragData]=\"columnId\"\n cdkDragLockAxis=\"y\"\n cdkDragBoundary=\".z-column-drop-list\"\n cdkDragPreviewClass=\"z-drag-preview\"\n class=\"z-drag-item border-border bg-card hover:border-primary flex cursor-grab items-center gap-2 rounded border px-2 py-1.5 text-sm active:cursor-grabbing\"\n [class.opacity-60]=\"!isVisible\">\n <!-- Drag Handle -->\n <z-icon\n cdkDragHandle\n zType=\"lucideGripVertical\"\n zSize=\"14\"\n class=\"text-muted-foreground shrink-0 cursor-grab active:cursor-grabbing\" />\n\n <!-- Visibility Checkbox -->\n <input\n type=\"checkbox\"\n [checked]=\"isVisible\"\n (change)=\"onToggleColumnVisibility(columnId)\"\n (mousedown)=\"$event.stopPropagation()\"\n class=\"border-input h-4 w-4 shrink-0 cursor-pointer rounded\" />\n\n <!-- Column Name -->\n <span class=\"flex min-w-0 flex-1 flex-col\">\n <span class=\"truncate\" [class.text-muted-foreground]=\"!isVisible\">\n {{ columnId | zTableColumnHeader: zConfig().columns | translate }}\n </span>\n @let parents = columnId | zTableColumnParents: zConfig().columns;\n @if (parents) {\n <span class=\"text-muted-foreground truncate text-[10px]\">({{ parents | translate }})</span>\n }\n </span>\n\n <!-- Pin Buttons -->\n @if (canPin) {\n <div class=\"flex shrink-0 items-center gap-0.5\" (mousedown)=\"$event.stopPropagation()\">\n <button\n type=\"button\"\n [disabled]=\"!isVisible\"\n (click)=\"onToggleColumnPin(columnId, 'left')\"\n class=\"text-muted-foreground hover:bg-muted cursor-pointer rounded p-1 text-xs transition-colors disabled:cursor-not-allowed disabled:opacity-40\"\n title=\"Pin Left\">\n <z-icon zType=\"lucideArrowLeft\" zSize=\"12\" />\n </button>\n <button\n type=\"button\"\n [disabled]=\"!isVisible\"\n (click)=\"onToggleColumnPin(columnId, 'right')\"\n class=\"text-muted-foreground hover:bg-muted cursor-pointer rounded p-1 text-xs transition-colors disabled:cursor-not-allowed disabled:opacity-40\"\n title=\"Pin Right\">\n <z-icon zType=\"lucideArrowRight\" zSize=\"12\" />\n </button>\n </div>\n }\n </div>\n }\n }\n }\n </div>\n\n <!-- Pinned Columns Section -->\n @if (zConfig().enableColumnPinning) {\n @if (pinnedColumnIds().length > 0) {\n <div class=\"border-border mt-4 border-t pt-4\">\n <h5 class=\"text-muted-foreground mb-2 text-xs font-medium\">\n {{ 'i18n_z_ui_table_pinned_columns' | translate }}\n </h5>\n <div class=\"space-y-1.5\">\n @for (columnId of pinnedColumnIds(); track columnId) {\n @let column = table.getColumn(columnId);\n @let isPinned = column?.getIsPinned();\n @let isVisible = columnVisibility()[columnId] !== false;\n <div\n class=\"border-border bg-muted/30 flex items-center gap-2 rounded border px-2 py-1.5 text-sm\"\n [class.opacity-60]=\"!isVisible\">\n <!-- Pin Icon -->\n <z-icon zType=\"lucidePin\" zSize=\"14\" class=\"text-primary shrink-0\" />\n\n <!-- Visibility Checkbox -->\n <input\n type=\"checkbox\"\n [checked]=\"isVisible\"\n (change)=\"onToggleColumnVisibility(columnId)\"\n class=\"border-input h-4 w-4 shrink-0 cursor-pointer rounded\" />\n\n <!-- Column Name -->\n <span class=\"flex min-w-0 flex-1 flex-col\">\n <span class=\"truncate\" [class.text-muted-foreground]=\"!isVisible\">\n {{ columnId | zTableColumnHeader: zConfig().columns | translate }}\n </span>\n @let pinnedParents = columnId | zTableColumnParents: zConfig().columns;\n @if (pinnedParents) {\n <span class=\"text-muted-foreground truncate text-[10px]\">\n ({{ pinnedParents | translate }})\n </span>\n }\n </span>\n\n <!-- Position Badge -->\n <span class=\"bg-primary/10 text-primary shrink-0 rounded px-1.5 py-0.5 text-[10px] font-medium\">\n {{\n isPinned === 'left'\n ? ('i18n_z_ui_table_left' | translate)\n : ('i18n_z_ui_table_right' | translate)\n }}\n </span>\n\n <!-- Unpin Button -->\n <button\n type=\"button\"\n (click)=\"onToggleColumnPin(columnId, isPinned === 'left' ? 'left' : 'right')\"\n class=\"text-muted-foreground hover:bg-muted hover:text-foreground cursor-pointer rounded p-1 text-xs transition-colors\"\n title=\"Unpin\">\n <z-icon zType=\"lucideX\" zSize=\"12\" />\n </button>\n </div>\n }\n </div>\n </div>\n }\n }\n </div>\n }\n </div>\n</z-drawer>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"shival99-z-vnetcity-components-z-table.mjs","sources":["../../../../libs/core-ui/components/z-table/z-table.types.ts","../../../../libs/core-ui/components/z-table/components/z-table-actions.component.ts","../../../../libs/core-ui/components/z-table/components/z-table-edit-cell.component.ts","../../../../libs/core-ui/components/z-table/components/z-table-filter.component.ts","../../../../libs/core-ui/components/z-table/z-table.util.ts","../../../../libs/core-ui/components/z-table/components/z-table-icon-text.component.ts","../../../../libs/core-ui/components/z-table/directives/z-table-row-hover.directive.ts","../../../../libs/core-ui/components/z-table/directives/z-table-resizer.directive.ts","../../../../libs/core-ui/components/z-table/pipes/z-table-cell-bottom.pipe.ts","../../../../libs/core-ui/components/z-table/pipes/z-table-cell-clickable.pipe.ts","../../../../libs/core-ui/components/z-table/pipes/z-table-cell-config.pipe.ts","../../../../libs/core-ui/components/z-table/pipes/z-table-cell-edit.pipe.ts","../../../../libs/core-ui/components/z-table/pipes/z-table-cell-offset.pipe.ts","../../../../libs/core-ui/components/z-table/pipes/z-table-cell-pin.pipe.ts","../../../../libs/core-ui/components/z-table/pipes/z-table-cell-render.pipe.ts","../../../../libs/core-ui/components/z-table/pipes/z-table-column-config.pipe.ts","../../../../libs/core-ui/components/z-table/pipes/z-table-column-header.pipe.ts","../../../../libs/core-ui/components/z-table/pipes/z-table-column-parents.pipe.ts","../../../../libs/core-ui/components/z-table/pipes/z-table-footer-content.pipe.ts","../../../../libs/core-ui/components/z-table/pipes/z-table-has-icon.pipe.ts","../../../../libs/core-ui/components/z-table/pipes/z-table-pinning-styles.pipe.ts","../../../../libs/core-ui/components/z-table/pipes/z-table-row.pipe.ts","../../../../libs/core-ui/components/z-table/pipes/z-table-span.pipe.ts","../../../../libs/core-ui/components/z-table/pipes/z-table-is-template-ref.pipe.ts","../../../../libs/core-ui/components/z-table/z-table.component.ts","../../../../libs/core-ui/components/z-table/z-table.component.html","../../../../libs/core-ui/components/z-table/shival99-z-vnetcity-components-z-table.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable @typescript-eslint/naming-convention */\n/* eslint-disable unused-imports/no-unused-vars */\nimport { type TemplateRef, type Type } from '@angular/core';\nimport { type ZButtonVariants } from '@shival99/z-vnetcity/components/z-button';\nimport { type ZIconVariants, type ZIcon } from '@shival99/z-vnetcity/components/z-icon';\nimport { type ZInputSize } from '@shival99/z-vnetcity/components/z-input';\nimport { type ZSelectOption } from '@shival99/z-vnetcity/components/z-select';\nimport { type ZTooltipConfig, type ZTooltipContent } from '@shival99/z-vnetcity/components/z-tooltip';\nimport {\n type CellContext,\n type ColumnFiltersState,\n type ColumnPinningState,\n type ExpandedState,\n type FlexRenderComponent,\n type HeaderContext,\n type PaginationState,\n type Row,\n type RowData,\n type RowPinningState,\n type RowSelectionState,\n type SortingState,\n type VisibilityState,\n} from '@tanstack/angular-table';\n\nexport const Z_DEFAULT_ROW_HEIGHT = 40;\nexport const Z_DEFAULT_VIRTUAL_OVERSCAN = 5;\nexport const Z_DEFAULT_GROUP_SIZE = 1;\nexport const Z_DEFAULT_COLUMN_MIN_SIZE = 100;\nexport const Z_DEFAULT_DEBOUNCE_TIME = 150;\nexport const Z_SKELETON_ROW_HEIGHT = 60;\nexport const Z_TABLE_DEFAULT_ACTION_BUTTON_WIDTH = 32;\nexport const Z_TABLE_DEFAULT_MAX_VISIBLE_ACTIONS = 3;\nexport const Z_TABLE_DEFAULT_DROPDOWN_BUTTON_SIZE = 'sm' as const;\n\nexport type ZTableCellPinProperty = 'isLastLeftPinned' | 'isFirstRightPinned' | 'isLastRightPinned';\nexport type ZTableCellType = 'header' | 'footer';\nexport type ZTableCellRenderType = 'header' | 'footer' | 'body';\n\nexport interface ZPinningStyles {\n left?: string;\n right?: string;\n position: 'sticky' | 'relative';\n zIndex: number;\n [key: string]: string | number | undefined;\n}\n\nexport interface ZVirtualGroup {\n startIndex: number;\n endIndex: number;\n rowCount: number;\n height: number | null;\n}\n\nexport interface ZTableIconPart {\n type: 'text' | 'icon';\n value: string;\n size?: number;\n class?: string;\n strokeWidth?: number;\n}\n\nexport interface ZTableExtendedColumnDef {\n filterType?: ZTableFilterType;\n filterOptions?: ZSelectOption[];\n}\n\nexport type ZTableAlign = 'left' | 'center' | 'right';\nexport type ZTableBorderType = 'none' | 'full' | 'horizontal' | 'vertical';\nexport type ZTableCellContent<T> =\n | string\n | number\n | TemplateRef<{ $implicit: CellContext<T, unknown> }>\n | Type<unknown>\n | FlexRenderComponent<unknown>\n | ((info: CellContext<T, unknown>) => string | number | TemplateRef<unknown> | FlexRenderComponent<unknown>);\n\nexport type ZTableHeaderContent<T> =\n | string\n | TemplateRef<unknown>\n | Type<unknown>\n | (() => string)\n | ((info: HeaderContext<T, unknown>) => string);\n\nexport type ZTableColumn<T = unknown> = ZTableColumnConfig<T>;\n\nexport type ZTableFilterType = 'text' | 'number' | 'select' | 'multi-select' | 'date' | 'date-range' | 'range' | 'tags';\nexport type ZTableEditType = 'text' | 'number' | 'select' | 'date' | 'checkbox' | 'textarea';\nexport type ZTableMode = 'local' | 'server';\n\nexport interface ZTableSortConfig<T> {\n enabled?: boolean;\n mode?: ZTableMode;\n sortKey?: string;\n sortFn?: (rowA: Row<T>, rowB: Row<T>, columnId: string) => number;\n}\n\nexport type ZTableBuiltInFilterFn =\n | 'equalsString'\n | 'includesString'\n | 'includesStringSensitive'\n | 'arrIncludes'\n | 'arrIncludesAll'\n | 'arrIncludesSome'\n | 'equals'\n | 'weakEquals'\n | 'inNumberRange';\n\nexport type ZTableCustomFilterFn<T> = (\n row: Row<T>,\n columnId: string,\n filterValue: unknown,\n addMeta: (meta: unknown) => void\n) => boolean;\n\nexport interface ZTableFilterConfig<T = unknown> {\n enabled?: boolean;\n mode?: ZTableMode;\n type?: ZTableFilterType;\n options?: ZSelectOption[];\n allowClear?: boolean;\n placeholder?: string;\n filterFn?: ZTableBuiltInFilterFn | ZTableCustomFilterFn<T>;\n}\n\nexport type ZTableEditSize = 'sm' | 'default' | 'lg';\n\nexport interface ZTableEditConfig<T = unknown> {\n enabled?: boolean;\n type?: ZTableEditType;\n options?: ZSelectOption[];\n placeholder?: string;\n min?: number;\n max?: number;\n step?: number;\n rows?: number;\n disabled?: boolean | ((row: T) => boolean);\n onChange?: (value: unknown, row: T, columnId: string) => void;\n /** Size of the edit input. Default: 'sm' */\n size?: ZTableEditSize;\n}\n\nexport interface ZTableSavedColumnInfo {\n id: string;\n accessorKey?: string;\n}\n\nexport interface ZTableSavedConfig {\n columnOrder: string[];\n columnSizing: Record<string, number>;\n columnPinning: { left?: string[]; right?: string[] };\n columnVisibility: Record<string, boolean>;\n columnInfo: ZTableSavedColumnInfo[];\n showHeaderFooterShadow: boolean;\n showHorizontalBorder: boolean;\n showVerticalBorder: boolean;\n}\n\nexport interface ZTableControl<T> {\n updateConfig: (config: Partial<ZTableConfig<T>>) => void;\n toggleSettings: () => void;\n resetFilters: () => void;\n resetSorting: () => void;\n addItem: (item: T) => void;\n updateItem: (id: string | number, updates: Partial<T>, fieldKey?: keyof T) => void;\n deleteItem: (id: string | number, fieldKey?: keyof T) => void;\n getItems: () => T[];\n}\n\nexport interface ZTableHeaderColumnConfig<T> {\n content?: ZTableHeaderContent<T>;\n class?: string;\n style?: Record<string, string>;\n align?: ZTableAlign;\n rowSpan?: number;\n colSpan?: number;\n contentClass?: string | ((info: HeaderContext<T, unknown>) => string);\n contentStyle?: Record<string, string> | ((info: HeaderContext<T, unknown>) => Record<string, string>);\n tooltip?: string | ZTooltipConfig;\n}\n\nexport interface ZTableBodyColumnConfig<T> {\n content?: ZTableCellContent<T>;\n class?: string | ((info: CellContext<T, unknown>) => string);\n style?: Record<string, string> | ((info: CellContext<T, unknown>) => Record<string, string>);\n align?: ZTableAlign;\n rowSpan?: number | ((info: CellContext<T, unknown>) => number);\n colSpan?: number | ((info: CellContext<T, unknown>) => number);\n contentClass?: string | ((info: CellContext<T, unknown>) => string);\n contentStyle?: Record<string, string> | ((info: CellContext<T, unknown>) => Record<string, string>);\n tooltip?: string | ZTooltipConfig | ((info: CellContext<T, unknown>) => string | ZTooltipConfig);\n actions?: ZTableActionColumnConfig<T>;\n enabledClick?: boolean;\n edit?: ZTableEditConfig<T> | boolean;\n}\n\nexport interface ZTableFooterColumnConfig<T> {\n content?: ZTableHeaderContent<T>;\n class?: string;\n style?: Record<string, string>;\n align?: ZTableAlign;\n rowSpan?: number;\n colSpan?: number;\n contentClass?: string | ((info: HeaderContext<T, unknown>) => string);\n contentStyle?: Record<string, string> | ((info: HeaderContext<T, unknown>) => Record<string, string>);\n tooltip?: string | ZTooltipConfig;\n}\n\nexport interface ZTableColumnConfig<T> {\n id: string;\n visible?: boolean | (() => boolean);\n accessorKey?: keyof T & string;\n accessorFn?: (row: T) => unknown;\n header?: ZTableHeaderColumnConfig<T> | ZTableHeaderContent<T>;\n body?: ZTableBodyColumnConfig<T> | ZTableCellContent<T>;\n footer?: ZTableFooterColumnConfig<T> | ZTableHeaderContent<T>;\n size?: number;\n minSize?: number;\n maxSize?: number;\n sort?: ZTableSortConfig<T> | boolean;\n filter?: ZTableFilterConfig<T> | boolean;\n enableResizing?: boolean;\n enablePinning?: boolean;\n enableHiding?: boolean;\n enableOrdering?: boolean;\n pinned?: 'left' | 'right' | false;\n columns?: ZTableColumnConfig<T>[];\n}\n\nexport interface ZTablePaginationConfig {\n enabled?: boolean;\n pageSize?: number;\n pageIndex?: number;\n pageSizeOptions?: number[];\n showSizeChanger?: boolean;\n showQuickJumper?: boolean;\n showTotal?: boolean;\n totalLabel?: string;\n disabled?: boolean;\n}\n\nexport type ZTableEmitType = 'user' | 'auto';\n\nexport interface ZTablePageChangeEvent {\n pageIndex: number;\n pageSize: number;\n emitType: ZTableEmitType;\n}\n\nexport interface ZTableRowSelectEvent<T> {\n row: T;\n rowId: string;\n selected: boolean;\n selectedRows: T[];\n selectedRowIds: string[];\n}\n\nexport interface ZTableRowSelectAllEvent<T> {\n selected: boolean;\n selectedRows: T[];\n selectedRowIds: string[];\n}\n\nexport interface ZTableRowExpandEvent<T> {\n row: T;\n rowId: string;\n expanded: boolean;\n}\n\nexport interface ZTableCellClickEvent<T> {\n row: T;\n rowId: string;\n columnId: string;\n value: unknown;\n}\n\nexport interface ZTableCellEditEvent<T> {\n row: T;\n rowId: string;\n rowIndex: number;\n columnId: string;\n oldValue: unknown;\n newValue: unknown;\n}\n\nexport interface ZTableSortChangeEvent {\n sorting: SortingState;\n}\n\nexport interface ZTableFilterChangeEvent {\n filters: ColumnFiltersState;\n search: string;\n}\n\nexport interface ZTableSearchChangeEvent {\n search: string;\n filters: ColumnFiltersState;\n sorting: SortingState;\n pagination: PaginationState;\n}\n\nexport interface ZActionTooltipState {\n content: ZTooltipContent;\n alwaysShow: boolean;\n position?: string;\n arrow?: boolean;\n offset?: number;\n maxWidth?: string;\n}\n\nexport interface ZTableActionItem<T = unknown> {\n key: string;\n label?: string;\n icon?: ZIcon;\n iconSize?: ZIconVariants['zSize'];\n tooltip?: string | ZTooltipConfig;\n type?: ZButtonVariants['zType'];\n size?: ZButtonVariants['zSize'];\n class?: string;\n disabled?: boolean | ((row: T) => boolean);\n hidden?: boolean | ((row: T) => boolean);\n divide?: 'before' | 'after';\n}\n\nexport interface ZTableActionClickEvent<T = unknown> {\n key: string;\n row: T;\n rowId: string;\n action: ZTableActionItem<T>;\n}\n\nexport interface ZTableActionColumnConfig<T = unknown> {\n actions: ZTableActionItem<T>[];\n maxVisible?: number;\n}\n\nexport type ZTableChangeType =\n | 'page'\n | 'sort'\n | 'filter'\n | 'search'\n | 'select'\n | 'expand'\n | 'rowSelect'\n | 'rowSelectAll'\n | 'rowExpand'\n | 'cellClick'\n | 'cellEdit'\n | 'action';\n\nexport interface ZTableChangeEventBase {\n type: ZTableChangeType;\n}\n\nexport interface ZTablePageChange extends ZTableChangeEventBase {\n type: 'page';\n data: ZTablePageChangeEvent;\n}\n\nexport interface ZTableSortChange extends ZTableChangeEventBase {\n type: 'sort';\n data: ZTableSortChangeEvent;\n}\n\nexport interface ZTableFilterChange extends ZTableChangeEventBase {\n type: 'filter';\n data: ZTableFilterChangeEvent;\n}\n\nexport interface ZTableRowSelectChange<T> extends ZTableChangeEventBase {\n type: 'rowSelect';\n data: ZTableRowSelectEvent<T>;\n}\n\nexport interface ZTableRowSelectAllChange<T> extends ZTableChangeEventBase {\n type: 'rowSelectAll';\n data: ZTableRowSelectAllEvent<T>;\n}\n\nexport interface ZTableRowExpandChange<T> extends ZTableChangeEventBase {\n type: 'rowExpand';\n data: ZTableRowExpandEvent<T>;\n}\n\nexport interface ZTableCellClickChange<T> extends ZTableChangeEventBase {\n type: 'cellClick';\n data: ZTableCellClickEvent<T>;\n}\n\nexport interface ZTableSearchChange extends ZTableChangeEventBase {\n type: 'search';\n data: ZTableSearchChangeEvent;\n}\n\nexport interface ZTableSelectChange extends ZTableChangeEventBase {\n type: 'select';\n data: { selection: RowSelectionState };\n}\n\nexport interface ZTableExpandChange extends ZTableChangeEventBase {\n type: 'expand';\n data: { expanded: ExpandedState };\n}\n\nexport interface ZTableActionChange<T> extends ZTableChangeEventBase {\n type: 'action';\n data: ZTableActionClickEvent<T>;\n}\n\nexport interface ZTableCellEditChange<T> extends ZTableChangeEventBase {\n type: 'cellEdit';\n data: ZTableCellEditEvent<T>;\n}\n\nexport type ZTableChangeEvent<T> =\n | ZTablePageChange\n | ZTableSortChange\n | ZTableFilterChange\n | ZTableSearchChange\n | ZTableSelectChange\n | ZTableExpandChange\n | ZTableRowSelectChange<T>\n | ZTableRowSelectAllChange<T>\n | ZTableRowExpandChange<T>\n | ZTableCellClickChange<T>\n | ZTableCellEditChange<T>\n | ZTableActionChange<T>;\n\nexport interface ZTableInitialState {\n columnPinning?: ColumnPinningState;\n rowPinning?: RowPinningState;\n sorting?: SortingState;\n columnFilters?: ColumnFiltersState;\n globalFilter?: string;\n expanded?: ExpandedState;\n rowSelection?: RowSelectionState;\n columnVisibility?: VisibilityState;\n pagination?: PaginationState;\n}\n\nexport interface ZTableVirtualConfig {\n /** Enable virtual scrolling */\n enabled: boolean;\n /** Row height in pixels (default: 40). Used as estimate for dynamic sizing. */\n size?: number;\n /** Number of items to render outside visible area (default: 5) */\n overscan?: number;\n /** Number of rows per virtual group (default: 1) */\n groupSize?: number;\n /**\n * Enable dynamic row height measurement.\n * When true, each row's height is measured dynamically after render.\n * The virtualizer uses `height: auto` for all rows, allowing content\n * to determine the actual height, which is then captured via measureElement().\n * The `size` property is used as an initial estimate before measurement.\n */\n dynamicSize?: boolean;\n}\n\nexport interface ZTableSearchConfig {\n enabled?: boolean;\n placeholder?: string;\n debounceTime?: number;\n width?: string;\n size?: ZInputSize;\n}\n\nexport interface ZTableConfig<T> {\n mode?: ZTableMode;\n data: T[];\n totalCount?: number;\n columns: ZTableColumnConfig<T>[];\n getRowId?: (row: T, index: number, parent: T | undefined, data: T[]) => string;\n getSubRows?: (row: T, index: number, parent: T | undefined, data: T[]) => T[] | undefined;\n totalRows?: number;\n virtual?: ZTableVirtualConfig | boolean;\n showHorizontalBorder?: boolean;\n showVerticalBorder?: boolean;\n showHeaderShadow?: boolean;\n showFooterShadow?: boolean;\n enableSettings?: boolean;\n enableColumnResizing?: boolean;\n enableMultiSort?: boolean;\n search?: ZTableSearchConfig | boolean;\n enableRowPinning?: boolean;\n enableColumnPinning?: boolean;\n enableColumnOrdering?: boolean;\n enableColumnSorting?: boolean;\n pagination?: ZTablePaginationConfig;\n initialState?: ZTableInitialState;\n loading?: boolean;\n expandedRowTemplate?: TemplateRef<{ $implicit: Row<T> }>;\n emptyTemplate?: TemplateRef<void>;\n loadingTemplate?: TemplateRef<void>;\n getRowCanExpand?: (row: Row<T>) => boolean;\n maxHeight?: string;\n minHeight?: string;\n debounceTime?: number;\n useSkeleton?: boolean;\n}\n\nexport interface ZTableEditCellChangeEvent<T = unknown> {\n row: T;\n rowId: string;\n rowIndex: number;\n columnId: string;\n oldValue: unknown;\n newValue: unknown;\n}\n\ndeclare module '@tanstack/angular-table' {\n interface TableMeta<TData extends RowData> {\n updateData?: (rowIndex: number, columnId: string, value: unknown) => void;\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport { ZButtonComponent, ZButtonVariants } from '@shival99/z-vnetcity/components/z-button';\nimport { ZDropdownMenuComponent } from '@shival99/z-vnetcity/components/z-dropdown-menu';\nimport type { ZDropdownMenuItem } from '@shival99/z-vnetcity/components/z-dropdown-menu';\nimport { ZIconComponent } from '@shival99/z-vnetcity/components/z-icon';\nimport { ZTooltipDirective, ZTooltipConfig } from '@shival99/z-vnetcity/components/z-tooltip';\nimport {\n Z_TABLE_DEFAULT_DROPDOWN_BUTTON_SIZE,\n Z_TABLE_DEFAULT_MAX_VISIBLE_ACTIONS,\n ZActionTooltipState,\n ZTableActionClickEvent,\n ZTableActionColumnConfig,\n ZTableActionItem,\n} from '../z-table.types';\n\n@Component({\n selector: 'z-table-actions',\n imports: [ZButtonComponent, ZIconComponent, ZTooltipDirective, ZDropdownMenuComponent],\n standalone: true,\n template: `\n <div class=\"z-table-actions flex items-center justify-center gap-1\">\n @if (shouldShowAsButtons()) {\n @for (action of allActions(); track action.key) {\n @if (actionStates()[action.key]?.visible) {\n <button\n type=\"button\"\n z-button\n z-tooltip\n [zType]=\"action.type ?? 'outline'\"\n [zSize]=\"action.size ?? 'sm'\"\n [zDisabled]=\"actionStates()[action.key]?.disabled ?? false\"\n [class]=\"action.class ?? ''\"\n [zContent]=\"actionStates()[action.key]?.tooltipState?.content ?? ''\"\n [zAlwaysShow]=\"actionStates()[action.key]?.tooltipState?.alwaysShow ?? false\"\n [zArrow]=\"actionStates()[action.key]?.tooltipState?.arrow ?? true\"\n [zOffset]=\"actionStates()[action.key]?.tooltipState?.offset ?? 8\"\n [zMaxWidth]=\"actionStates()[action.key]?.tooltipState?.maxWidth ?? '250px'\"\n (click)=\"_onActionClick(action, $event)\"\n >\n @if (action.icon && action.label) {\n <div class=\"flex items-center gap-2\">\n <z-icon [zType]=\"action.icon\" zSize=\"14\" />\n {{ action.label }}\n </div>\n } @else if (action.icon) {\n <z-icon [zType]=\"action.icon\" zSize=\"14\" />\n } @else if (action.label) {\n {{ action.label }}\n }\n </button>\n }\n }\n } @else {\n <z-dropdown-menu\n [zItems]=\"dropdownItems()\"\n zPosition=\"bottom-right\"\n [zButtonSize]=\"zDropdownButtonSize()\"\n [zMinWidth]=\"160\"\n (zOnItemClick)=\"_onDropdownItemClick($event)\"\n >\n <button\n type=\"button\"\n z-button\n zTypeIcon=\"lucideEllipsis\"\n [zSize]=\"zDropdownButtonSize()\"\n zType=\"outline\"\n [zWave]=\"false\"\n ></button>\n </z-dropdown-menu>\n }\n </div>\n `,\n styles: `\n :host {\n display: block;\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ZTableActionsComponent<T = unknown> {\n public readonly zConfig = input.required<ZTableActionColumnConfig<T>>();\n public readonly zRow = input.required<T>();\n public readonly zRowId = input.required<string>();\n public readonly zDropdownButtonSize = input<ZButtonVariants['zSize']>(Z_TABLE_DEFAULT_DROPDOWN_BUTTON_SIZE);\n public readonly zActionClick = output<ZTableActionClickEvent<T>>();\n\n protected readonly allActions = computed(() => {\n const config = this.zConfig();\n const row = this.zRow();\n return config.actions.filter(action => {\n if (typeof action.hidden === 'function') {\n return !action.hidden(row);\n }\n return !action.hidden;\n });\n });\n\n protected readonly shouldShowAsButtons = computed(() => {\n const actions = this.allActions();\n const maxVisible = this.zConfig().maxVisible ?? Z_TABLE_DEFAULT_MAX_VISIBLE_ACTIONS;\n return actions.length <= maxVisible;\n });\n\n protected readonly actionStates = computed(() => {\n const row = this.zRow();\n const actions = this.allActions();\n const states: Record<string, { visible: boolean; disabled: boolean; tooltipState: ZActionTooltipState }> = {};\n\n for (const action of actions) {\n const isHidden = typeof action.hidden === 'function' ? action.hidden(row) : (action.hidden ?? false);\n const isDisabled = typeof action.disabled === 'function' ? action.disabled(row) : (action.disabled ?? false);\n\n states[action.key] = {\n visible: !isHidden,\n disabled: isDisabled,\n tooltipState: this._getTooltipState(action.tooltip),\n };\n }\n\n return states;\n });\n\n protected readonly dropdownItems = computed((): ZDropdownMenuItem[] => {\n const row = this.zRow();\n return this.allActions().map(action => {\n const isDisabled = typeof action.disabled === 'function' ? action.disabled(row) : (action.disabled ?? false);\n return {\n label: action.label ?? action.key,\n icon: action.icon,\n iconSize: action?.iconSize || '18',\n disabled: isDisabled,\n class: action.class,\n divide: action.divide,\n onClick: () => this._emitActionClick(action),\n };\n });\n });\n\n private _getTooltipState(tooltip: string | ZTooltipConfig | undefined): ZActionTooltipState {\n if (!tooltip) {\n return { content: '', alwaysShow: false };\n }\n\n if (typeof tooltip === 'string') {\n return { content: tooltip, alwaysShow: true };\n }\n\n return {\n content: tooltip.content ?? '',\n alwaysShow: tooltip.alwaysShow ?? true,\n position: tooltip.position,\n arrow: tooltip.arrow,\n offset: tooltip.offset,\n maxWidth: tooltip.maxWidth,\n };\n }\n\n protected _onActionClick(action: ZTableActionItem<T>, event: Event): void {\n event.stopPropagation();\n const states = this.actionStates();\n if (states[action.key]?.disabled) {\n return;\n }\n this._emitActionClick(action);\n }\n\n protected _onDropdownItemClick(item: ZDropdownMenuItem): void {\n const action = this.allActions().find(a => (a.label ?? a.key) === item.label);\n if (action) {\n this._emitActionClick(action);\n }\n }\n\n private _emitActionClick(action: ZTableActionItem<T>): void {\n this.zActionClick.emit({\n key: action.key,\n row: this.zRow(),\n rowId: this.zRowId(),\n action,\n });\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input, output, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ZCalendarComponent } from '@shival99/z-vnetcity/components/z-calendar';\nimport { ZCheckboxComponent } from '@shival99/z-vnetcity/components/z-checkbox';\nimport { ZInputComponent } from '@shival99/z-vnetcity/components/z-input';\nimport { ZSelectComponent } from '@shival99/z-vnetcity/components/z-select';\nimport type { ZSelectOption } from '@shival99/z-vnetcity/components/z-select';\nimport type { ZTableEditConfig, ZTableEditType, ZTableEditCellChangeEvent, ZTableEditSize } from '../z-table.types';\n\n@Component({\n selector: 'z-table-edit-cell',\n imports: [FormsModule, ZInputComponent, ZSelectComponent, ZCalendarComponent, ZCheckboxComponent],\n standalone: true,\n template: `\n @switch (editType()) {\n @case ('checkbox') {\n <div class=\"flex items-center justify-center\">\n <z-checkbox\n [zSize]=\"size()\"\n [zChecked]=\"booleanValue()\"\n [zDisabled]=\"isDisabled()\"\n (zChange)=\"onCheckboxChange($event)\"\n />\n </div>\n }\n @case ('number') {\n <z-input\n zType=\"number\"\n [zSize]=\"size()\"\n [zPlaceholder]=\"placeholder()\"\n [zMin]=\"editConfig().min\"\n [zMax]=\"editConfig().max\"\n [zStep]=\"editConfig().step ?? 1\"\n [zDisabled]=\"isDisabled()\"\n [ngModel]=\"numericValue()\"\n (ngModelChange)=\"onValueChange($event)\"\n class=\"w-full\"\n />\n }\n @case ('select') {\n <z-select\n [zSize]=\"size()\"\n [zWrap]=\"false\"\n [zScrollClose]=\"true\"\n [zOptions]=\"selectOptions()\"\n [zDisabled]=\"isDisabled()\"\n [ngModel]=\"value()\"\n [zPlaceholder]=\"placeholder()\"\n (ngModelChange)=\"onSelectChange($event)\"\n class=\"w-full min-w-0\"\n />\n }\n @case ('date') {\n <z-calendar\n zMode=\"single\"\n [zSize]=\"size()\"\n zAllowClear\n zValueType=\"date\"\n [zScrollClose]=\"true\"\n [zDisabled]=\"isDisabled()\"\n [zPlaceholder]=\"placeholder()\"\n [ngModel]=\"dateValue()\"\n (ngModelChange)=\"onDateChange($event)\"\n class=\"w-full\"\n />\n }\n @case ('textarea') {\n <z-input\n zType=\"textarea\"\n [zSize]=\"size()\"\n [zPlaceholder]=\"placeholder()\"\n [zRows]=\"editConfig().rows ?? 2\"\n [zDisabled]=\"isDisabled()\"\n [ngModel]=\"stringValue()\"\n (ngModelChange)=\"onValueChange($event)\"\n class=\"w-full\"\n />\n }\n @default {\n <z-input\n zType=\"text\"\n [zSize]=\"size()\"\n [zPlaceholder]=\"placeholder()\"\n [zDisabled]=\"isDisabled()\"\n [ngModel]=\"stringValue()\"\n (ngModelChange)=\"onValueChange($event)\"\n class=\"w-full\"\n />\n }\n }\n `,\n styles: `\n :host {\n display: block;\n width: 100%;\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'z-table-edit-cell block',\n },\n})\nexport class ZTableEditCellComponent<T = unknown> {\n public readonly zRow = input.required<T>();\n public readonly zRowId = input.required<string>();\n public readonly zRowIndex = input.required<number>();\n public readonly zColumnId = input.required<string>();\n public readonly zValue = input<unknown>();\n public readonly zEditConfig = input<ZTableEditConfig<T>>();\n public readonly zChange = output<ZTableEditCellChangeEvent<T>>();\n\n private readonly _currentValue = signal<unknown>(undefined);\n private _initialized = false;\n\n protected readonly editConfig = computed(() => {\n const config = this.zEditConfig();\n if (!config || typeof config === 'boolean') {\n return { enabled: true, type: 'text' as ZTableEditType };\n }\n return config;\n });\n\n protected readonly editType = computed(() => this.editConfig()?.type ?? 'text');\n\n protected readonly size = computed<ZTableEditSize>(() => {\n const config = this.editConfig();\n return config?.size ?? 'default';\n });\n\n protected readonly placeholder = computed(() => {\n const config = this.editConfig();\n return config?.placeholder ?? '';\n });\n\n protected readonly selectOptions = computed<ZSelectOption[]>(() => {\n const config = this.editConfig();\n return config?.options ?? [];\n });\n\n protected readonly isDisabled = computed(() => {\n const config = this.editConfig();\n if (!config?.disabled) {\n return false;\n }\n\n if (typeof config.disabled === 'function') {\n return config.disabled(this.zRow());\n }\n\n return config.disabled;\n });\n\n protected readonly value = computed(() => {\n if (this._initialized) {\n return this._currentValue();\n }\n\n return this.zValue();\n });\n\n protected readonly stringValue = computed(() => {\n const val = this.value();\n if (val === null || val === undefined) {\n return '';\n }\n\n return String(val);\n });\n\n protected readonly numericValue = computed(() => {\n const val = this.value();\n if (val === null || val === undefined || val === '') {\n return null;\n }\n\n const num = Number(val);\n return isNaN(num) ? null : num;\n });\n\n protected readonly booleanValue = computed(() => {\n const val = this.value();\n return Boolean(val);\n });\n\n protected readonly dateValue = computed(() => {\n const val = this.value();\n if (val instanceof Date) {\n return val;\n }\n\n if (typeof val === 'string' && val) {\n const date = new Date(val);\n return isNaN(date.getTime()) ? null : date;\n }\n\n return null;\n });\n\n protected onValueChange(newValue: unknown): void {\n const oldValue = this.zValue();\n this._currentValue.set(newValue);\n this._initialized = true;\n\n this._emitChange(oldValue, newValue);\n }\n\n protected onSelectChange(newValue: unknown): void {\n const oldValue = this.zValue();\n let finalValue = newValue;\n if (typeof newValue === 'object' && newValue !== null && 'value' in newValue) {\n finalValue = (newValue as { value: unknown }).value;\n }\n\n this._currentValue.set(finalValue);\n this._initialized = true;\n\n this._emitChange(oldValue, finalValue);\n }\n\n protected onDateChange(newValue: unknown): void {\n const oldValue = this.zValue();\n this._currentValue.set(newValue);\n this._initialized = true;\n\n this._emitChange(oldValue, newValue);\n }\n\n protected onCheckboxChange(checked: boolean): void {\n const oldValue = this.zValue();\n this._currentValue.set(checked);\n this._initialized = true;\n\n this._emitChange(oldValue, checked);\n }\n\n private _emitChange(oldValue: unknown, newValue: unknown): void {\n const config = this.editConfig();\n if (config?.onChange) {\n config.onChange(newValue, this.zRow(), this.zColumnId());\n }\n\n this.zChange.emit({\n row: this.zRow(),\n rowId: this.zRowId(),\n rowIndex: this.zRowIndex(),\n columnId: this.zColumnId(),\n oldValue,\n newValue,\n });\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input, OnDestroy } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { ZCalendarComponent } from '@shival99/z-vnetcity/components/z-calendar';\nimport type { ZDateRange } from '@shival99/z-vnetcity/components/z-calendar';\nimport { ZInputComponent } from '@shival99/z-vnetcity/components/z-input';\nimport { ZSelectComponent } from '@shival99/z-vnetcity/components/z-select';\nimport type { Column, Table } from '@tanstack/angular-table';\nimport type { ZTableExtendedColumnDef } from '../z-table.types';\n\n@Component({\n selector: 'z-table-filter',\n imports: [FormsModule, ZInputComponent, ZSelectComponent, ZCalendarComponent, TranslatePipe],\n standalone: true,\n template: `\n @switch (filterType()) {\n @case ('range') {\n <div class=\"flex gap-1\">\n <z-input\n zType=\"number\"\n zSize=\"sm\"\n [zPlaceholder]=\"'i18n_z_ui_table_filter_min' | translate\"\n [ngModel]=\"rangeMinValue()\"\n (ngModelChange)=\"onMinChangeDebounced($event)\"\n class=\"min-w-0 flex-1\"\n />\n <z-input\n zType=\"number\"\n zSize=\"sm\"\n [zPlaceholder]=\"'i18n_z_ui_table_filter_max' | translate\"\n [ngModel]=\"rangeMaxValue()\"\n (ngModelChange)=\"onMaxChangeDebounced($event)\"\n class=\"min-w-0 flex-1\"\n />\n </div>\n }\n @case ('date') {\n <z-calendar\n zMode=\"single\"\n zSize=\"sm\"\n zAllowClear\n zValueType=\"date\"\n [zScrollClose]=\"true\"\n [zPlaceholder]=\"'i18n_z_ui_table_filter_date' | translate\"\n [ngModel]=\"dateValue()\"\n (ngModelChange)=\"onDateChange($event)\"\n class=\"w-full\"\n />\n }\n @case ('date-range') {\n <z-calendar\n zMode=\"range\"\n zSize=\"sm\"\n zAllowClear\n zValueType=\"date\"\n [zScrollClose]=\"true\"\n [zPlaceholder]=\"'i18n_z_ui_table_filter_date_range' | translate\"\n [ngModel]=\"dateRangeValue()\"\n (ngModelChange)=\"onDateRangeChange($event)\"\n class=\"w-full\"\n />\n }\n @case ('select') {\n <z-select\n zSize=\"sm\"\n zAllowClear\n [zWrap]=\"false\"\n [zScrollClose]=\"true\"\n [zOptions]=\"selectOptions()\"\n [ngModel]=\"selectValue()\"\n [zMaxVisible]=\"30\"\n [zPlaceholder]=\"'i18n_z_ui_common_select' | translate\"\n (ngModelChange)=\"onSelectChange($event)\"\n class=\"w-full min-w-0\"\n />\n }\n @case ('multi-select') {\n <z-select\n zMode=\"multiple\"\n zSize=\"sm\"\n zAllowClear\n [zWrap]=\"false\"\n [zScrollClose]=\"true\"\n [zOptions]=\"selectOptions()\"\n [zMaxTagCount]=\"1\"\n [zMaxVisible]=\"30\"\n [ngModel]=\"multiSelectValue()\"\n [zPlaceholder]=\"'i18n_z_ui_common_select' | translate\"\n (ngModelChange)=\"onMultiSelectChange($event)\"\n class=\"w-full min-w-0\"\n />\n }\n @case ('tags') {\n <z-select\n zMode=\"tags\"\n zSize=\"sm\"\n [zOptions]=\"selectOptions()\"\n [zWrap]=\"false\"\n [zScrollClose]=\"true\"\n [zMaxTagCount]=\"1\"\n [zMaxVisible]=\"30\"\n [zPlaceholder]=\"'i18n_z_ui_common_select' | translate\"\n class=\"w-full min-w-0\"\n [zAllowClear]=\"true\"\n (ngModelChange)=\"onMultiSelectChange($event)\"\n [ngModel]=\"multiSelectValue()\"\n />\n }\n @case ('number') {\n <z-input\n zType=\"number\"\n zSize=\"sm\"\n zAllowClear\n [zPlaceholder]=\"'i18n_z_ui_table_filter_search' | translate\"\n [ngModel]=\"columnFilterValue()?.toString() ?? ''\"\n (ngModelChange)=\"onTextChangeDebounced($event)\"\n class=\"w-full\"\n />\n }\n @default {\n <z-input\n zType=\"text\"\n zSize=\"sm\"\n zAllowClear\n [zPlaceholder]=\"'i18n_z_ui_table_filter_search' | translate\"\n [ngModel]=\"(columnFilterValue() ?? '').toString()\"\n (ngModelChange)=\"onTextChangeDebounced($event)\"\n class=\"w-full\"\n />\n }\n }\n `,\n styles: `\n :host {\n color: var(--foreground);\n font-weight: 450;\n font-style: normal;\n text-decoration: none;\n text-transform: none;\n letter-spacing: normal;\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'z-table-filter block',\n },\n})\nexport class ZTableFilterComponent<T> implements OnDestroy {\n public readonly zColumn = input.required<Column<unknown, unknown>>();\n public readonly zTable = input.required<Table<T>>();\n\n private _debounceTimeout: ReturnType<typeof setTimeout> | null = null;\n private readonly _debounceMs = 300;\n private readonly _columnDef = computed(() => this.zColumn().columnDef as ZTableExtendedColumnDef);\n\n public readonly filterType = computed(() => this._columnDef().filterType);\n public readonly columnFilterValue = computed<unknown>(() => this.zColumn().getFilterValue());\n public readonly minValue = computed(() => this.zColumn().getFacetedMinMaxValues()?.[0] ?? '');\n public readonly maxValue = computed(() => this.zColumn().getFacetedMinMaxValues()?.[1] ?? '');\n\n public readonly rangeMinValue = computed(() => {\n const value = this.columnFilterValue();\n if (!Array.isArray(value)) {\n return '';\n }\n\n return value[0] ?? '';\n });\n\n public readonly rangeMaxValue = computed(() => {\n const value = this.columnFilterValue();\n if (!Array.isArray(value)) {\n return '';\n }\n\n return value[1] ?? '';\n });\n\n public readonly dateValue = computed(() => {\n const value = this.columnFilterValue();\n if (value instanceof Date) {\n return value;\n }\n return null;\n });\n\n public readonly dateRangeValue = computed(() => {\n const value = this.columnFilterValue();\n if (value && typeof value === 'object' && 'start' in value && 'end' in value) {\n return value as ZDateRange;\n }\n return null;\n });\n\n public readonly selectValue = computed(() => {\n const value = this.columnFilterValue();\n if (value === null || value === undefined || value === '') {\n return null;\n }\n return value;\n });\n\n public readonly multiSelectValue = computed(() => {\n const value = this.columnFilterValue();\n if (Array.isArray(value)) {\n return value;\n }\n return [];\n });\n\n public readonly selectOptions = computed(() => {\n const columnDef = this._columnDef();\n if (columnDef.filterOptions && columnDef.filterOptions.length > 0) {\n return columnDef.filterOptions;\n }\n\n const facetedValues = this.zColumn().getFacetedUniqueValues();\n if (facetedValues && facetedValues.size > 0) {\n const uniqueValues = Array.from(facetedValues.keys()).sort().slice(0, 5000);\n return uniqueValues.map(v => ({ label: String(v), value: String(v) }));\n }\n\n const table = this.zTable();\n const column = this.zColumn();\n const { rows } = table.getRowModel();\n\n if (rows.length === 0) {\n return [];\n }\n\n const uniqueValues = new Set<string>();\n for (const row of rows) {\n const value = row.getValue(column.id);\n if (value !== null && value !== undefined && value !== '') {\n uniqueValues.add(String(value));\n }\n }\n\n const sortedValues = Array.from(uniqueValues).sort();\n return sortedValues.map(v => ({ label: String(v), value: String(v) }));\n });\n\n ngOnDestroy(): void {\n if (this._debounceTimeout) {\n clearTimeout(this._debounceTimeout);\n }\n }\n\n public onMinChangeDebounced(value: string | number | null): void {\n this._debounce(() => {\n const numValue = value === null || value === '' ? undefined : Number(value);\n this.zColumn().setFilterValue((old: [number, number]) => [numValue, old?.[1]]);\n });\n }\n\n public onMaxChangeDebounced(value: string | number | null): void {\n this._debounce(() => {\n const numValue = value === null || value === '' ? undefined : Number(value);\n this.zColumn().setFilterValue((old: [number, number]) => [old?.[0], numValue]);\n });\n }\n\n public onTextChangeDebounced(value: string | number | null): void {\n this._debounce(() => {\n this.zColumn().setFilterValue(value);\n });\n }\n\n public onSelectChange(value: unknown): void {\n if (typeof value === 'object' && value !== null && 'value' in value) {\n this.zColumn().setFilterValue((value as { value: string }).value || undefined);\n return;\n }\n\n this.zColumn().setFilterValue(value || undefined);\n }\n\n public onMultiSelectChange(value: unknown[]): void {\n if (!value || (Array.isArray(value) && value.length === 0)) {\n this.zColumn().setFilterValue(undefined);\n return;\n }\n this.zColumn().setFilterValue(value);\n }\n\n public onDateChange(value: Date | null): void {\n this.zColumn().setFilterValue(value || undefined);\n }\n\n public onDateRangeChange(value: ZDateRange | null): void {\n if (value && (value.start || value.end)) {\n this.zColumn().setFilterValue(value);\n return;\n }\n this.zColumn().setFilterValue(undefined);\n }\n\n private _debounce(fn: () => void): void {\n if (this._debounceTimeout) {\n clearTimeout(this._debounceTimeout);\n }\n\n this._debounceTimeout = setTimeout(fn, this._debounceMs);\n }\n}\n","import type { ZSelectOption } from '@shival99/z-vnetcity/components/z-select';\nimport { type Header, type ColumnDef, type CellContext, type Cell, type Row } from '@tanstack/angular-table';\nimport {\n type ZTableColumnConfig,\n type ZTableFilterType,\n type ZTableHeaderContent,\n type ZTableCellContent,\n type ZTableIconPart,\n type ZTableHeaderColumnConfig,\n type ZTableBodyColumnConfig,\n type ZTableFooterColumnConfig,\n type ZTableCellType,\n Z_DEFAULT_COLUMN_MIN_SIZE,\n} from './z-table.types';\n\nexport const filterVisibleColumns = <T>(columns: ZTableColumnConfig<T>[]): ZTableColumnConfig<T>[] =>\n columns\n .filter(col => {\n const { visible } = col;\n if (visible === undefined) {\n return true;\n }\n return typeof visible === 'function' ? visible() : visible;\n })\n .map(col => {\n if (col.columns && col.columns.length > 0) {\n return {\n ...col,\n columns: filterVisibleColumns(col.columns),\n };\n }\n return col;\n });\n\nconst isObjectConfig = (config: unknown): boolean => {\n if (!config || typeof config !== 'object') {\n return false;\n }\n return config.constructor === Object;\n};\n\nexport const isHeaderConfig = <T>(\n config: ZTableHeaderColumnConfig<T> | ZTableHeaderContent<T> | undefined\n): config is ZTableHeaderColumnConfig<T> => isObjectConfig(config);\n\nexport const isBodyConfig = <T>(\n config: ZTableBodyColumnConfig<T> | ZTableCellContent<T> | undefined\n): config is ZTableBodyColumnConfig<T> => isObjectConfig(config);\n\nexport const isFooterConfig = <T>(\n config: ZTableFooterColumnConfig<T> | ZTableHeaderContent<T> | undefined\n): config is ZTableFooterColumnConfig<T> => isObjectConfig(config);\n\nconst getHeaderOrFooterConfigInternal = <T>(col: ZTableColumnConfig<T> | undefined, type: 'header' | 'footer') => {\n const empty = {\n content: undefined as ZTableHeaderContent<T> | undefined,\n class: undefined as string | undefined,\n style: undefined as Record<string, string> | undefined,\n align: undefined as string | undefined,\n tooltip: undefined as string | object | undefined,\n rowSpan: undefined as number | undefined,\n colSpan: undefined as number | undefined,\n contentClass: undefined as string | ((info: unknown) => string) | undefined,\n contentStyle: undefined as Record<string, string> | ((info: unknown) => Record<string, string>) | undefined,\n };\n\n if (!col) {\n return empty;\n }\n\n const config = type === 'header' ? col.header : col.footer;\n const isConfigFn = type === 'header' ? isHeaderConfig : isFooterConfig;\n\n if (!isConfigFn(config)) {\n return { ...empty, content: config as ZTableHeaderContent<T> | undefined };\n }\n\n const typedConfig = config as ZTableHeaderColumnConfig<T> | ZTableFooterColumnConfig<T>;\n\n return {\n content: typedConfig.content,\n class: typedConfig.class,\n style: typedConfig.style,\n align: typedConfig.align,\n tooltip: typedConfig.tooltip,\n rowSpan: typedConfig.rowSpan,\n colSpan: typedConfig.colSpan,\n contentClass: typedConfig.contentClass,\n contentStyle: typedConfig.contentStyle,\n };\n};\n\nexport const getHeaderConfig = <T>(col: ZTableColumnConfig<T> | undefined) =>\n getHeaderOrFooterConfigInternal(col, 'header');\n\nexport const getBodyConfig = <T>(col: ZTableColumnConfig<T> | undefined, ctx?: CellContext<T, unknown>) => {\n const empty = {\n content: undefined as ZTableCellContent<T> | undefined,\n class: undefined as string | undefined,\n style: undefined as Record<string, string> | undefined,\n align: undefined as string | undefined,\n rowSpan: undefined as number | undefined,\n colSpan: undefined as number | undefined,\n contentClass: undefined as string | undefined,\n contentStyle: undefined as Record<string, string> | undefined,\n tooltip: undefined as string | object | undefined,\n };\n\n if (!col) {\n return empty;\n }\n\n if (!isBodyConfig(col.body)) {\n return { ...empty, content: col.body };\n }\n\n const { body } = col;\n const rowSpan = typeof body.rowSpan === 'function' && ctx ? body.rowSpan(ctx) : body.rowSpan;\n const colSpan = typeof body.colSpan === 'function' && ctx ? body.colSpan(ctx) : body.colSpan;\n const classValue = typeof body.class === 'function' && ctx ? body.class(ctx) : body.class;\n const styleValue = typeof body.style === 'function' && ctx ? body.style(ctx) : body.style;\n const contentClass = typeof body.contentClass === 'function' && ctx ? body.contentClass(ctx) : body.contentClass;\n const contentStyle = typeof body.contentStyle === 'function' && ctx ? body.contentStyle(ctx) : body.contentStyle;\n const tooltip = typeof body.tooltip === 'function' && ctx ? body.tooltip(ctx) : body.tooltip;\n\n return {\n content: body.content,\n class: classValue,\n style: styleValue as Record<string, string> | undefined,\n align: body.align,\n rowSpan: typeof rowSpan === 'number' ? rowSpan : undefined,\n colSpan: typeof colSpan === 'number' ? colSpan : undefined,\n contentClass,\n contentStyle: contentStyle as Record<string, string> | undefined,\n tooltip,\n };\n};\n\nexport const getFooterConfig = <T>(col: ZTableColumnConfig<T> | undefined) =>\n getHeaderOrFooterConfigInternal(col, 'footer');\n\nexport const getHeaderContent = <T>(col: ZTableColumnConfig<T> | undefined) => getHeaderConfig(col).content;\nexport const getBodyContent = <T>(col: ZTableColumnConfig<T> | undefined) => {\n if (!col?.body) {\n return undefined;\n }\n return isBodyConfig(col.body) ? col.body.content : col.body;\n};\nexport const getFooterContent = <T>(col: ZTableColumnConfig<T> | undefined) => getFooterConfig(col).content;\nexport const getBodyRowSpan = <T>(col: ZTableColumnConfig<T> | undefined, ctx?: CellContext<T, unknown>) =>\n getBodyConfig(col, ctx).rowSpan;\nexport const getBodyColSpan = <T>(col: ZTableColumnConfig<T> | undefined, ctx?: CellContext<T, unknown>) =>\n getBodyConfig(col, ctx).colSpan;\nexport const getHeaderRowSpan = <T>(col: ZTableColumnConfig<T> | undefined) => getHeaderConfig(col).rowSpan;\nexport const getHeaderColSpan = <T>(col: ZTableColumnConfig<T> | undefined) => getHeaderConfig(col).colSpan;\nexport const getFooterRowSpan = <T>(col: ZTableColumnConfig<T> | undefined) => getFooterConfig(col).rowSpan;\nexport const getFooterColSpan = <T>(col: ZTableColumnConfig<T> | undefined) => getFooterConfig(col).colSpan;\n\nexport function parseIconString(content: string): ZTableIconPart[] {\n if (!content || typeof content !== 'string') {\n return [{ type: 'text', value: content || '' }];\n }\n\n const parts: ZTableIconPart[] = [];\n const iconRegex = /\\[icon:([^\\]]+)\\]/g;\n let lastIndex = 0;\n let match: RegExpExecArray | null;\n\n while ((match = iconRegex.exec(content)) !== null) {\n if (match.index > lastIndex) {\n const textPart = content.slice(lastIndex, match.index);\n if (textPart) {\n parts.push({ type: 'text', value: textPart });\n }\n }\n\n const iconContent = match[1];\n const attrs = iconContent.split('|');\n const iconName = attrs[0];\n const iconPart: ZTableIconPart = { type: 'icon', value: iconName };\n\n for (let i = 1; i < attrs.length; i++) {\n const [key, val] = attrs[i].split(':');\n if (key === 'size') {\n iconPart.size = parseInt(val, 10);\n }\n if (key === 'class') {\n iconPart.class = val;\n }\n if (key === 'strokeWidth') {\n iconPart.strokeWidth = parseFloat(val);\n }\n }\n\n parts.push(iconPart);\n lastIndex = match.index + match[0].length;\n }\n\n if (lastIndex < content.length) {\n parts.push({ type: 'text', value: content.slice(lastIndex) });\n }\n\n return parts.length > 0 ? parts : [{ type: 'text', value: content }];\n}\n\nexport function stripIconSyntax(content: string): string {\n if (!content || typeof content !== 'string') {\n return content || '';\n }\n return content.replace(/\\[icon:[^\\]]+\\]/g, '').trim();\n}\n\nexport function hasIconSyntax(content: unknown): boolean {\n if (!content || typeof content !== 'string') {\n return false;\n }\n return /\\[icon:[^\\]]+\\]/.test(content);\n}\n\nexport const findColumnConfig = <T>(\n columnId: string,\n columns: ZTableColumnConfig<T>[]\n): ZTableColumnConfig<T> | undefined => {\n for (const col of columns) {\n if (col.id === columnId) {\n return col;\n }\n if (col.columns) {\n const found = findColumnConfig(columnId, col.columns);\n if (found) {\n return found;\n }\n }\n }\n return undefined;\n};\n\nexport const deepestHeader = <D, V>(header: Header<D, V>): Header<D, V> | null => {\n let last = header;\n while (true) {\n const next = last.isPlaceholder && last.colSpan === 1 && last.subHeaders.length === 1 ? last.subHeaders[0] : null;\n if (!next) {\n return last === header ? null : last;\n }\n\n last = next;\n }\n};\n\nexport const tableHeaderRowSpan = <D, V>(header: Header<D, V>): number | null => {\n const deepest = deepestHeader(header);\n const rowSpan = (deepest ? deepest.depth - header.depth : 0) + 1;\n const above = header.depth - header.column.depth;\n return above > 1 ? null : rowSpan;\n};\n\nexport const calculateCellRowSpan = <T>(\n cell: Cell<T, unknown>,\n columnConfig: ZTableColumnConfig<T> | undefined,\n allRows: Row<T>[]\n): number | null => {\n if (!columnConfig?.body || !isBodyConfig(columnConfig.body)) {\n return null;\n }\n const rowSpanValue = columnConfig.body.rowSpan;\n if (!rowSpanValue) {\n return null;\n }\n\n if (typeof rowSpanValue === 'function') {\n const rowSpan = rowSpanValue(cell.getContext());\n return rowSpan > 1 ? rowSpan : null;\n }\n\n if (rowSpanValue > 1) {\n const currentRowId = cell.row.id;\n const filteredIndex = allRows.findIndex(r => r.id === currentRowId);\n\n if (filteredIndex === -1) {\n return null;\n }\n\n if (filteredIndex % rowSpanValue !== 0) {\n return null;\n }\n\n const remainingRows = allRows.length - filteredIndex;\n const actualRowSpan = Math.min(rowSpanValue, remainingRows);\n\n return actualRowSpan > 1 ? actualRowSpan : null;\n }\n\n return null;\n};\n\nexport const calculateCellColSpan = <T>(\n cell: Cell<T, unknown>,\n columnConfig: ZTableColumnConfig<T> | undefined\n): number | null => {\n if (!columnConfig?.body || !isBodyConfig(columnConfig.body)) {\n return null;\n }\n const colSpanValue = columnConfig.body.colSpan;\n if (!colSpanValue) {\n return null;\n }\n const colSpan = typeof colSpanValue === 'function' ? colSpanValue(cell.getContext()) : colSpanValue;\n return colSpan > 1 ? colSpan : null;\n};\n\nexport const calculateHeaderRowSpan = <T>(\n header: Header<T, unknown>,\n columnConfig: ZTableColumnConfig<T> | undefined,\n columns?: ZTableColumnConfig<T>[]\n): number | null => {\n const configRowSpan = getHeaderRowSpan(columnConfig);\n if (configRowSpan !== undefined && configRowSpan !== null) {\n return configRowSpan;\n }\n\n if (columns && header.column.parent) {\n const parentConfig = findColumnConfig(header.column.parent.id, columns);\n const parentRowSpan = getHeaderRowSpan(parentConfig);\n if (parentRowSpan && parentRowSpan >= 2) {\n return null;\n }\n }\n\n const deepest = deepestHeader(header);\n const rowSpan = (deepest ? deepest.depth - header.depth : 0) + 1;\n const above = header.depth - header.column.depth;\n return above > 1 ? null : rowSpan;\n};\n\nexport const calculateHeaderColSpan = <T>(\n header: Header<T, unknown>,\n columnConfig: ZTableColumnConfig<T> | undefined\n): number | null => {\n const configColSpan = getHeaderColSpan(columnConfig);\n const isPinned = header.column.getIsPinned();\n\n if (isPinned === 'left' && configColSpan !== undefined && configColSpan !== null) {\n const allHeaders = header.headerGroup.headers;\n const currentIndex = allHeaders.findIndex(h => h.id === header.id);\n\n if (currentIndex === -1) {\n return configColSpan;\n }\n\n let effectiveColSpan = 0;\n for (let i = 0; i < configColSpan && currentIndex + i < allHeaders.length; i++) {\n const targetHeader = allHeaders[currentIndex + i];\n const targetLeafHeaders = targetHeader.getLeafHeaders();\n const allLeafsPinned = targetLeafHeaders.every(lh => lh.column.getIsPinned() === 'left');\n if (allLeafsPinned) {\n effectiveColSpan++;\n }\n if (!allLeafsPinned) {\n break;\n }\n }\n\n return effectiveColSpan > 1 ? effectiveColSpan : null;\n }\n\n if (configColSpan !== undefined && configColSpan !== null) {\n return configColSpan;\n }\n\n return header.colSpan > 1 ? header.colSpan : null;\n};\n\nexport const calculateFooterRowSpan = <T>(\n header: Header<T, unknown>,\n columnConfig: ZTableColumnConfig<T> | undefined\n): number | null => {\n const configRowSpan = getFooterRowSpan(columnConfig);\n if (configRowSpan !== undefined && configRowSpan !== null) {\n return configRowSpan;\n }\n\n const footerContent = getFooterContent(columnConfig);\n if (footerContent !== undefined) {\n return 1;\n }\n\n if (header.colSpan > 1) {\n return 1;\n }\n\n return 1;\n};\n\nexport const calculateFooterColSpan = <T>(\n header: Header<T, unknown>,\n columnConfig: ZTableColumnConfig<T> | undefined\n): number | null => {\n const configColSpan = getFooterColSpan(columnConfig);\n const isPinned = header.column.getIsPinned();\n\n if (isPinned === 'left' && configColSpan !== undefined && configColSpan !== null) {\n const allHeaders = header.headerGroup.headers;\n const currentIndex = allHeaders.findIndex(h => h.id === header.id);\n\n if (currentIndex === -1) {\n return configColSpan;\n }\n\n let effectiveColSpan = 0;\n for (let i = 0; i < configColSpan && currentIndex + i < allHeaders.length; i++) {\n const targetHeader = allHeaders[currentIndex + i];\n const targetLeafHeaders = targetHeader.getLeafHeaders();\n const allLeafsPinned = targetLeafHeaders.every(lh => lh.column.getIsPinned() === 'left');\n if (allLeafsPinned) {\n effectiveColSpan++;\n }\n if (!allLeafsPinned) {\n break;\n }\n }\n\n return effectiveColSpan > 1 ? effectiveColSpan : null;\n }\n\n if (configColSpan !== undefined && configColSpan !== null) {\n return configColSpan;\n }\n\n return header.colSpan > 1 ? header.colSpan : null;\n};\n\nexport const shouldCellRenderUtil = <T>(\n cell: Cell<T, unknown>,\n columnConfig: ZTableColumnConfig<T> | undefined,\n allRows: Row<T>[]\n): boolean => {\n if (!columnConfig?.body || !isBodyConfig(columnConfig.body)) {\n return true;\n }\n const rowSpanValue = columnConfig.body.rowSpan;\n if (!rowSpanValue) {\n return true;\n }\n\n if (typeof rowSpanValue === 'function') {\n const rowSpan = rowSpanValue(cell.getContext());\n return rowSpan !== 0;\n }\n\n if (rowSpanValue > 1) {\n const currentRowId = cell.row.id;\n const filteredIndex = allRows.findIndex(r => r.id === currentRowId);\n\n if (filteredIndex === -1) {\n return true;\n }\n\n return filteredIndex % rowSpanValue === 0;\n }\n\n return true;\n};\n\nconst shouldHeaderOrFooterRender = <T>(\n header: Header<T, unknown>,\n allHeaders: Header<T, unknown>[],\n columns: ZTableColumnConfig<T>[],\n type: ZTableCellType\n): boolean => {\n const currentIndex = allHeaders.findIndex(h => h.id === header.id);\n if (currentIndex <= 0) {\n return true;\n }\n\n const getConfigColSpanFn = type === 'header' ? getHeaderColSpan : getFooterColSpan;\n\n for (let i = 0; i < currentIndex; i++) {\n const prevHeader = allHeaders[i];\n const prevConfig = findColumnConfig(prevHeader.column.id, columns);\n const configColSpan = getConfigColSpanFn(prevConfig);\n\n if (!configColSpan || configColSpan <= 1) {\n continue;\n }\n\n const isPinned = prevHeader.column.getIsPinned();\n let effectiveColSpan = configColSpan;\n\n if (isPinned === 'left') {\n const headersInGroup = prevHeader.headerGroup.headers;\n const prevIdx = headersInGroup.findIndex(h => h.id === prevHeader.id);\n\n if (prevIdx !== -1) {\n effectiveColSpan = 0;\n for (let j = 0; j < configColSpan && prevIdx + j < headersInGroup.length; j++) {\n const targetHeader = headersInGroup[prevIdx + j];\n const targetLeafHeaders = targetHeader.getLeafHeaders();\n const allLeafsPinned = targetLeafHeaders.every(lh => lh.column.getIsPinned() === 'left');\n if (allLeafsPinned) {\n effectiveColSpan++;\n }\n if (!allLeafsPinned) {\n break;\n }\n }\n }\n }\n\n if (effectiveColSpan > 1 && i + effectiveColSpan > currentIndex) {\n return false;\n }\n }\n\n return true;\n};\n\nexport const shouldBodyCellRenderColSpan = <T>(\n cell: Cell<T, unknown>,\n allCells: Cell<T, unknown>[],\n columns: ZTableColumnConfig<T>[]\n): boolean => {\n const currentIndex = allCells.findIndex(c => c.id === cell.id);\n if (currentIndex <= 0) {\n return true;\n }\n\n for (let i = 0; i < currentIndex; i++) {\n const prevCell = allCells[i];\n const prevConfig = findColumnConfig(prevCell.column.id, columns);\n const prevColSpan = getBodyColSpan(prevConfig, prevCell.getContext());\n\n if (prevColSpan && prevColSpan > 1 && i + prevColSpan > currentIndex) {\n return false;\n }\n }\n\n return true;\n};\n\nexport const shouldFooterRender = <T>(\n header: Header<T, unknown>,\n allHeaders: Header<T, unknown>[],\n columns: ZTableColumnConfig<T>[]\n): boolean => shouldHeaderOrFooterRender(header, allHeaders, columns, 'footer');\n\nexport const shouldHeaderRender = <T>(\n header: Header<T, unknown>,\n allHeaders: Header<T, unknown>[],\n columns: ZTableColumnConfig<T>[]\n): boolean => shouldHeaderOrFooterRender(header, allHeaders, columns, 'header');\n\nexport function columnConfigToColumnDef<T>(config: ZTableColumnConfig<T>): ColumnDef<T> {\n const sortConfig = typeof config.sort === 'boolean' ? (config.sort ? { enabled: true } : undefined) : config.sort;\n const filterConfig =\n typeof config.filter === 'boolean' ? (config.filter ? { enabled: true } : undefined) : config.filter;\n\n const resolveHeaderOrFooter = (content: unknown): ((info: unknown) => unknown) | string | undefined => {\n if (!content) {\n return undefined;\n }\n if (typeof content === 'string' || typeof content === 'number') {\n return String(content);\n }\n if (typeof content === 'function') {\n return content as (info: unknown) => unknown;\n }\n return undefined;\n };\n\n const columnDef = {\n id: config.id,\n size: config.size,\n minSize: config.minSize ?? Z_DEFAULT_COLUMN_MIN_SIZE,\n maxSize: config.maxSize,\n enableSorting: sortConfig?.enabled ?? false,\n enableColumnFilter: filterConfig?.enabled ?? false,\n enableResizing: config.enableResizing,\n enablePinning: config.enablePinning,\n enableHiding: config.enableHiding,\n filterType: filterConfig?.type,\n filterOptions: filterConfig?.options,\n } as ColumnDef<T> & { filterType?: ZTableFilterType; filterOptions?: (ZSelectOption | Record<string, unknown>)[] };\n\n if (config.accessorKey) {\n (columnDef as ColumnDef<T> & { accessorKey: string }).accessorKey = config.accessorKey;\n }\n\n if (config.accessorFn) {\n (columnDef as ColumnDef<T> & { accessorFn: (row: T) => unknown }).accessorFn = config.accessorFn;\n }\n\n columnDef.header = resolveHeaderOrFooter(getHeaderContent(config));\n const bodyContent = getBodyContent(config);\n if (typeof bodyContent === 'string' || typeof bodyContent === 'number') {\n columnDef.cell = () => bodyContent as string;\n }\n\n if (typeof bodyContent === 'function') {\n columnDef.cell = bodyContent as (info: CellContext<T, unknown>) => unknown;\n }\n\n columnDef.footer = resolveHeaderOrFooter(getFooterContent(config));\n\n const isLocalFilterMode = !filterConfig?.mode || filterConfig.mode === 'local';\n const isLocalSortMode = !sortConfig?.mode || sortConfig.mode === 'local';\n\n if (isLocalSortMode && sortConfig?.sortFn) {\n columnDef.sortingFn = sortConfig.sortFn as ColumnDef<T>['sortingFn'];\n }\n\n if (!isLocalSortMode) {\n columnDef.sortingFn = () => 0;\n }\n\n if (isLocalFilterMode && filterConfig?.filterFn) {\n columnDef.filterFn = filterConfig.filterFn as ColumnDef<T>['filterFn'];\n }\n\n if (!isLocalFilterMode) {\n columnDef.filterFn = () => true;\n }\n\n if (isLocalFilterMode && !filterConfig?.filterFn && filterConfig?.type) {\n switch (filterConfig.type) {\n case 'select':\n columnDef.filterFn = (row, columnId, filterValue) => {\n if (!filterValue || (Array.isArray(filterValue) && filterValue.length === 0)) {\n return true;\n }\n const cellValue = row.getValue(columnId);\n if (Array.isArray(filterValue)) {\n return filterValue.includes(cellValue);\n }\n return cellValue === filterValue;\n };\n break;\n\n case 'multi-select':\n case 'tags':\n columnDef.filterFn = (row, columnId, filterValue) => {\n if (!filterValue || (Array.isArray(filterValue) && filterValue.length === 0)) {\n return true;\n }\n const cellValue = row.getValue(columnId);\n if (!Array.isArray(filterValue)) {\n return cellValue === filterValue;\n }\n const filterSet = new Set(filterValue);\n if (Array.isArray(cellValue)) {\n return cellValue.some(cv => filterSet.has(cv));\n }\n return filterSet.has(cellValue);\n };\n break;\n\n case 'date':\n columnDef.filterFn = (row, columnId, filterValue) => {\n if (!filterValue) {\n return true;\n }\n const cellValue = row.getValue(columnId);\n if (!cellValue) {\n return false;\n }\n\n const cellDate = cellValue instanceof Date ? cellValue : new Date(cellValue as string | number);\n const filterDate = filterValue instanceof Date ? filterValue : new Date(filterValue as string | number);\n\n if (isNaN(cellDate.getTime()) || isNaN(filterDate.getTime())) {\n return false;\n }\n\n return (\n cellDate.getFullYear() === filterDate.getFullYear() &&\n cellDate.getMonth() === filterDate.getMonth() &&\n cellDate.getDate() === filterDate.getDate()\n );\n };\n break;\n\n case 'date-range':\n columnDef.filterFn = (row, columnId, filterValue) => {\n if (!filterValue || typeof filterValue !== 'object') {\n return true;\n }\n\n const { start, end } = filterValue as { start?: Date | null; end?: Date | null };\n if (!start && !end) {\n return true;\n }\n\n const cellValue = row.getValue(columnId);\n if (!cellValue) {\n return false;\n }\n\n const cellDate = cellValue instanceof Date ? cellValue : new Date(cellValue as string | number);\n if (isNaN(cellDate.getTime())) {\n return false;\n }\n\n const cellDateOnly = new Date(cellDate.getFullYear(), cellDate.getMonth(), cellDate.getDate());\n\n if (start) {\n const startDate = start instanceof Date ? start : new Date(start as unknown as string | number);\n if (!isNaN(startDate.getTime())) {\n const startDateOnly = new Date(startDate.getFullYear(), startDate.getMonth(), startDate.getDate());\n if (cellDateOnly < startDateOnly) {\n return false;\n }\n }\n }\n\n if (end) {\n const endDate = end instanceof Date ? end : new Date(end as unknown as string | number);\n if (!isNaN(endDate.getTime())) {\n const endDateOnly = new Date(endDate.getFullYear(), endDate.getMonth(), endDate.getDate());\n if (cellDateOnly > endDateOnly) {\n return false;\n }\n }\n }\n\n return true;\n };\n break;\n\n case 'range':\n columnDef.filterFn = (row, columnId, filterValue) => {\n if (!filterValue || !Array.isArray(filterValue)) {\n return true;\n }\n\n const [min, max] = filterValue as [number | undefined, number | undefined];\n if (min === undefined && max === undefined) {\n return true;\n }\n\n const cellValue = row.getValue(columnId);\n if (cellValue === null || cellValue === undefined) {\n return false;\n }\n\n const numValue = typeof cellValue === 'number' ? cellValue : Number(cellValue);\n if (isNaN(numValue)) {\n return false;\n }\n\n if (min !== undefined && numValue < min) {\n return false;\n }\n\n if (max !== undefined && numValue > max) {\n return false;\n }\n\n return true;\n };\n break;\n }\n }\n\n if (config.columns && config.columns.length > 0) {\n (columnDef as ColumnDef<T> & { columns: ColumnDef<T>[] }).columns = config.columns.map(subConfig =>\n columnConfigToColumnDef(subConfig)\n );\n }\n\n return columnDef;\n}\n","import { NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, ElementRef, inject, input } from '@angular/core';\nimport { ZIconComponent } from '@shival99/z-vnetcity/components/z-icon';\nimport { ZTooltipDirective } from '@shival99/z-vnetcity/components/z-tooltip';\nimport { type ZTooltipConfig } from '@shival99/z-vnetcity/components/z-tooltip';\nimport { ZSafeHtmlPipe } from '@shival99/z-vnetcity/pipes';\nimport { ZTranslateService } from '@shival99/z-vnetcity/services';\nimport { type ZTableIconPart } from '../z-table.types';\nimport { parseIconString, stripIconSyntax } from '../z-table.util';\n\n@Component({\n selector: 'z-table-icon-text',\n imports: [NgClass, ZIconComponent, ZTooltipDirective, ZSafeHtmlPipe],\n standalone: true,\n template: `\n <span class=\"z-table-icon-text-inner\">\n @for (part of translatedParts(); track $index) {\n @if (part.type === 'icon') {\n <z-icon\n class=\"shrink-0\"\n [zType]=\"$any(part.value)\"\n [zSize]=\"$any(part.size ?? 14)\"\n [zStrokeWidth]=\"part.strokeWidth ?? 1.5\"\n [ngClass]=\"part.class ?? ''\"\n />\n } @else {\n <span\n class=\"truncate select-text\"\n z-tooltip\n [zContent]=\"tooltipContent()\"\n [zTriggerElement]=\"triggerEl()\"\n [innerHTML]=\"part.value | zSafeHtml\"\n ></span>\n }\n }\n </span>\n `,\n styles: `\n :host {\n display: inline-flex;\n align-items: center;\n min-width: 0;\n max-width: 100%;\n }\n\n .z-table-icon-text-inner {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n line-height: 1.2;\n min-width: 0;\n max-width: 100%;\n }\n\n span.truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ZTableIconTextComponent {\n public readonly zText = input<string>('');\n public readonly zTooltip = input<string | ZTooltipConfig>('');\n public readonly zTriggerElement = input<HTMLElement | null>(null);\n\n private readonly _hostEl = inject(ElementRef).nativeElement;\n private readonly _zTranslate = inject(ZTranslateService);\n\n protected readonly triggerEl = computed(() => this.zTriggerElement() ?? this._hostEl);\n protected readonly translatedParts = computed<ZTableIconPart[]>(() => {\n this._zTranslate.currentLang();\n const parts = parseIconString(this.zText());\n return parts.map(part => {\n if (part.type === 'text') {\n const trimmedValue = part.value.trim();\n return { ...part, value: this._zTranslate.instant(trimmedValue) };\n }\n return part;\n });\n });\n\n protected readonly tooltipContent = computed(() => {\n this._zTranslate.currentLang();\n const tooltip = this.zTooltip();\n if (tooltip) {\n if (typeof tooltip === 'string') {\n return stripIconSyntax(this._zTranslate.instant(tooltip.trim()));\n }\n if (tooltip.content && typeof tooltip.content === 'string') {\n return stripIconSyntax(this._zTranslate.instant(tooltip.content.trim()));\n }\n }\n return stripIconSyntax(this._zTranslate.instant(this.zText().trim()));\n });\n}\n","import { Directive, ElementRef, Renderer2, input, inject } from '@angular/core';\n\n@Directive({\n selector: '[z-table-row-hover], [zTableRowHover]',\n standalone: true,\n host: {\n '(mouseenter)': 'onMouseEnter()',\n '(mouseleave)': 'onMouseLeave()',\n },\n})\nexport class ZTableRowHoverDirective {\n public readonly zTableRowHover = input<HTMLTableElement | null>(null);\n\n private readonly _elementRef = inject(ElementRef<HTMLTableRowElement>);\n private readonly _renderer = inject(Renderer2);\n public onMouseEnter(): void {\n this._handleHover(true);\n }\n\n public onMouseLeave(): void {\n this._handleHover(false);\n }\n\n private _handleHover(isHover: boolean): void {\n const row = this._elementRef.nativeElement;\n const table = this.zTableRowHover() || this._findParentTable(row);\n\n if (!table) {\n return;\n }\n\n const cellsInCurrentRow = Array.from(row.children) as HTMLTableCellElement[];\n cellsInCurrentRow.forEach(cell => {\n this._toggleCellHover(cell, isHover);\n });\n\n const tbody = table.querySelector('tbody');\n if (!tbody) {\n return;\n }\n\n const allRows = Array.from(tbody.querySelectorAll('tr')) as HTMLTableRowElement[];\n const currentRowIndex = allRows.indexOf(row);\n\n if (currentRowIndex === -1) {\n return;\n }\n\n const grid: {\n cell: HTMLTableCellElement;\n rowStart: number;\n rowEnd: number;\n }[] = [];\n\n for (let rowIdx = 0; rowIdx < allRows.length; rowIdx++) {\n const r = allRows[rowIdx];\n const cellsInRow = Array.from(r.children) as HTMLTableCellElement[];\n\n cellsInRow.forEach(cell => {\n const rowSpan = parseInt(cell.getAttribute('rowspan') || '1', 10);\n const rowEnd = rowIdx + rowSpan - 1;\n grid.push({\n cell,\n rowStart: rowIdx,\n rowEnd: rowEnd,\n });\n });\n }\n\n grid.forEach(item => {\n const coverCurrentRow = item.rowStart < currentRowIndex && item.rowEnd >= currentRowIndex;\n if (!coverCurrentRow) {\n return;\n }\n\n this._toggleCellHover(item.cell, isHover);\n });\n }\n\n private _toggleCellHover(cell: HTMLTableCellElement, isHover: boolean): void {\n if (isHover) {\n this._renderer.addClass(cell, 'z-row-hover');\n return;\n }\n\n this._renderer.removeClass(cell, 'z-row-hover');\n }\n\n private _findParentTable(element: HTMLElement): HTMLTableElement | null {\n let current = element.parentElement;\n while (current) {\n if (current.tagName === 'TABLE') {\n return current as HTMLTableElement;\n }\n current = current.parentElement;\n }\n return null;\n }\n}\n","import { Directive, ElementRef, inject, input, OnDestroy, AfterViewInit, NgZone } from '@angular/core';\nimport { Header } from '@tanstack/angular-table';\n\n@Directive({\n selector: '[z-table-resize],[zTableResize]',\n standalone: true,\n})\nexport class ZTableResizeDirective<T> implements AfterViewInit, OnDestroy {\n public readonly zTableResize = input.required<Header<T, unknown>>();\n\n private readonly _elementRef = inject(ElementRef<HTMLElement>);\n private readonly _ngZone = inject(NgZone);\n\n private _mousedownHandler: ((event: MouseEvent) => void) | null = null;\n private _touchstartHandler: ((event: TouchEvent) => void) | null = null;\n\n ngAfterViewInit(): void {\n const element = this._elementRef.nativeElement;\n const header = this.zTableResize();\n this._mousedownHandler = (event: MouseEvent) => {\n this._ngZone.run(() => {\n const resizeHandler = header.getResizeHandler();\n resizeHandler(event);\n });\n };\n\n this._touchstartHandler = (event: TouchEvent) => {\n this._ngZone.run(() => {\n const resizeHandler = header.getResizeHandler();\n resizeHandler(event);\n });\n };\n\n element.addEventListener('mousedown', this._mousedownHandler);\n element.addEventListener('touchstart', this._touchstartHandler, { passive: true });\n }\n\n ngOnDestroy(): void {\n const element = this._elementRef.nativeElement;\n\n if (this._mousedownHandler) {\n element.removeEventListener('mousedown', this._mousedownHandler);\n this._mousedownHandler = null;\n }\n\n if (this._touchstartHandler) {\n element.removeEventListener('touchstart', this._touchstartHandler);\n this._touchstartHandler = null;\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport type { Cell, CellContext, Row } from '@tanstack/angular-table';\nimport type { ZTableColumnConfig } from '../z-table.types';\nimport { findColumnConfig, isBodyConfig } from '../z-table.util';\n\n@Pipe({\n name: 'zTableCellBottom',\n standalone: true,\n pure: true,\n})\nexport class ZTableCellBottomPipe implements PipeTransform {\n transform<T>(cell: Cell<T, unknown>, columns: ZTableColumnConfig<T>[], allRows: Row<T>[]): boolean {\n if (allRows.length === 0) {\n return false;\n }\n\n const currentRowIndex = allRows.findIndex(r => r.id === cell.row.id);\n if (currentRowIndex === -1) {\n return false;\n }\n\n const lastRowIndex = allRows.length - 1;\n if (currentRowIndex === lastRowIndex) {\n return true;\n }\n\n const columnConfig = findColumnConfig(cell.column.id, columns);\n if (!columnConfig?.body || !isBodyConfig(columnConfig.body)) {\n return false;\n }\n\n const rowSpanValue = columnConfig.body.rowSpan;\n if (!rowSpanValue) {\n return false;\n }\n\n const actualRowSpan = this._getActualRowSpan(cell, currentRowIndex, rowSpanValue, allRows.length);\n if (actualRowSpan === 0) {\n return false;\n }\n\n return currentRowIndex + actualRowSpan - 1 >= lastRowIndex;\n }\n\n private _getActualRowSpan<T>(\n cell: Cell<T, unknown>,\n currentRowIndex: number,\n rowSpanValue: number | ((ctx: CellContext<T, unknown>) => number),\n totalRows: number\n ): number {\n if (typeof rowSpanValue === 'function') {\n return rowSpanValue(cell.getContext());\n }\n\n if (currentRowIndex % rowSpanValue !== 0) {\n return 0;\n }\n\n return Math.min(rowSpanValue, totalRows - currentRowIndex);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport type { ZTableColumnConfig } from '../z-table.types';\nimport { findColumnConfig, isBodyConfig } from '../z-table.util';\n\n@Pipe({\n name: 'zTableCellClickable',\n standalone: true,\n pure: true,\n})\nexport class ZTableCellClickablePipe implements PipeTransform {\n public transform<T>(columnId: string, columns: ZTableColumnConfig<T>[]): boolean {\n const columnConfig = findColumnConfig(columnId, columns);\n if (!columnConfig) {\n return false;\n }\n\n if (!isBodyConfig(columnConfig.body)) {\n return false;\n }\n\n return columnConfig.body.enabledClick === true;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport type { ZTooltipConfig } from '@shival99/z-vnetcity/components/z-tooltip';\nimport type { Cell } from '@tanstack/angular-table';\nimport type { ZTableColumnConfig } from '../z-table.types';\nimport { findColumnConfig, getBodyConfig } from '../z-table.util';\n\nconst Z_TABLE_BODY_ALIGN_MAP: Record<string, string> = {\n left: 'text-left',\n center: 'text-center',\n right: 'text-right',\n};\n\n@Pipe({\n name: 'zTableCellConfig',\n standalone: true,\n pure: true,\n})\nexport class ZTableCellConfigPipe implements PipeTransform {\n transform<T>(\n cell: Cell<T, unknown>,\n columns: ZTableColumnConfig<T>[],\n property: 'cellClass' | 'contentClass'\n ): string;\n transform<T>(\n cell: Cell<T, unknown>,\n columns: ZTableColumnConfig<T>[],\n property: 'cellStyle' | 'contentStyle'\n ): Record<string, string>;\n transform<T>(\n cell: Cell<T, unknown>,\n columns: ZTableColumnConfig<T>[],\n property: 'contentTooltip'\n ): string | ZTooltipConfig;\n transform<T>(\n cell: Cell<T, unknown>,\n columns: ZTableColumnConfig<T>[],\n property: 'cellClass' | 'cellStyle' | 'contentClass' | 'contentStyle' | 'contentTooltip'\n ): string | Record<string, string> | ZTooltipConfig {\n const columnConfig = findColumnConfig(cell.column.id, columns);\n const bodyConfig = getBodyConfig(columnConfig, cell.getContext());\n\n switch (property) {\n case 'cellClass':\n return this._getCellClass(bodyConfig);\n\n case 'cellStyle':\n return bodyConfig.style || {};\n\n case 'contentClass':\n return (bodyConfig.contentClass as string) || '';\n\n case 'contentStyle':\n return bodyConfig.contentStyle || {};\n\n case 'contentTooltip':\n return (bodyConfig.tooltip as string | ZTooltipConfig | undefined) || '';\n\n default:\n return '';\n }\n }\n\n private _getCellClass<T>(bodyConfig: ReturnType<typeof getBodyConfig<T>>): string {\n const classes: string[] = [];\n\n if (bodyConfig.align) {\n const alignClass = Z_TABLE_BODY_ALIGN_MAP[bodyConfig.align];\n if (alignClass) {\n classes.push(alignClass);\n }\n }\n\n if (bodyConfig.class) {\n classes.push(bodyConfig.class as string);\n }\n\n return classes.join(' ');\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport type { CellContext } from '@tanstack/angular-table';\nimport type { ZTableColumnConfig, ZTableEditConfig, ZTableEditType } from '../z-table.types';\nimport { isBodyConfig, findColumnConfig } from '../z-table.util';\n\nexport interface ZTableEditCellInfo {\n enabled: boolean;\n type: ZTableEditType;\n config: ZTableEditConfig<unknown> | null;\n}\n\n@Pipe({\n name: 'zTableCellEdit',\n standalone: true,\n pure: true,\n})\nexport class ZTableCellEditPipe implements PipeTransform {\n transform<T>(cell: CellContext<T, unknown>, columns: ZTableColumnConfig<T>[]): ZTableEditCellInfo {\n const columnConfig = findColumnConfig(cell.column.id, columns);\n if (!columnConfig) {\n return { enabled: false, type: 'text', config: null };\n }\n\n const { body } = columnConfig;\n if (!isBodyConfig(body)) {\n return { enabled: false, type: 'text', config: null };\n }\n\n const { edit } = body;\n if (!edit) {\n return { enabled: false, type: 'text', config: null };\n }\n\n if (typeof edit === 'boolean') {\n return {\n enabled: edit,\n type: 'text',\n config: { enabled: edit, type: 'text' },\n };\n }\n\n return {\n enabled: edit.enabled !== false,\n type: edit.type ?? 'text',\n config: edit as ZTableEditConfig<unknown>,\n };\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport type { Cell, Column, Header } from '@tanstack/angular-table';\n\n@Pipe({\n name: 'zTableCellOffset',\n standalone: true,\n pure: true,\n})\nexport class ZTableCellOffsetPipe implements PipeTransform {\n /**\n * Calculate if a cell/header is at the left edge (offset = 0)\n * Returns true if the cell should have no border-left (it's at the leftmost position)\n */\n transform<T>(item: Cell<T, unknown> | Header<T, unknown>, orderedColumns: Column<T>[]): boolean {\n const columnId = item.column.id;\n // Find the index of this column in the ordered columns list\n const columnIndex = orderedColumns.findIndex(col => col.id === columnId);\n // If it's the first column (index 0), it's at the left edge\n if (columnIndex === 0) {\n return true;\n }\n // For headers with colSpan, check if any of its leaf columns is the first\n if ('getLeafHeaders' in item) {\n const header = item as Header<T, unknown>;\n const leafHeaders = header.getLeafHeaders();\n\n for (const leaf of leafHeaders) {\n const leafIndex = orderedColumns.findIndex(col => col.id === leaf.column.id);\n if (leafIndex === 0) {\n return true;\n }\n }\n }\n\n return false;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport type { Header } from '@tanstack/angular-table';\nimport type { ZTableColumnConfig, ZTableCellPinProperty, ZTableCellType } from '../z-table.types';\nimport { findColumnConfig, getHeaderColSpan, getFooterColSpan } from '../z-table.util';\n\n@Pipe({\n name: 'zTableCellPin',\n standalone: true,\n pure: true,\n})\nexport class ZTableCellPinPipe implements PipeTransform {\n transform<T>(\n item: Header<T, unknown>,\n property: ZTableCellPinProperty,\n columns?: ZTableColumnConfig<T>[],\n cellType: ZTableCellType = 'header'\n ): boolean {\n switch (property) {\n case 'isLastLeftPinned':\n return this._isLastLeftPinned(item, columns ?? [], cellType);\n\n case 'isFirstRightPinned':\n return this._isFirstRightPinned(item, columns ?? [], cellType);\n\n case 'isLastRightPinned':\n return this._isLastRightPinned(item, columns ?? [], cellType);\n\n default:\n return false;\n }\n }\n\n private _isLastLeftPinned<T>(\n header: Header<T, unknown>,\n columns: ZTableColumnConfig<T>[],\n cellType: ZTableCellType\n ): boolean {\n const leafHeaders = header.getLeafHeaders();\n const hasLastLeftPinnedLeaf = leafHeaders.some(\n lh => lh.column.getIsPinned() === 'left' && lh.column.getIsLastColumn('left')\n );\n\n if (hasLastLeftPinnedLeaf) {\n return true;\n }\n\n const columnConfig = findColumnConfig(header.column.id, columns);\n const configColSpan = cellType === 'footer' ? getFooterColSpan(columnConfig) : getHeaderColSpan(columnConfig);\n if (!configColSpan || configColSpan <= 1) {\n return false;\n }\n\n const { headers: allHeadersInGroup } = header.headerGroup;\n const currentIndex = allHeadersInGroup.findIndex(h => h.id === header.id);\n\n if (currentIndex === -1) {\n return false;\n }\n\n for (let i = 0; i < configColSpan && currentIndex + i < allHeadersInGroup.length; i++) {\n const targetHeader = allHeadersInGroup[currentIndex + i];\n const targetLeafHeaders = targetHeader.getLeafHeaders();\n const hasLastLeft = targetLeafHeaders.some(\n lh => lh.column.getIsPinned() === 'left' && lh.column.getIsLastColumn('left')\n );\n\n if (hasLastLeft) {\n return true;\n }\n }\n\n return false;\n }\n\n private _isFirstRightPinned<T>(\n header: Header<T, unknown>,\n columns: ZTableColumnConfig<T>[],\n cellType: ZTableCellType\n ): boolean {\n const leafHeaders = header.getLeafHeaders();\n const hasFirstRightPinnedLeaf = leafHeaders.some(\n lh => lh.column.getIsPinned() === 'right' && lh.column.getIsFirstColumn('right')\n );\n if (hasFirstRightPinnedLeaf) {\n return true;\n }\n\n const columnConfig = findColumnConfig(header.column.id, columns);\n const configColSpan = cellType === 'footer' ? getFooterColSpan(columnConfig) : getHeaderColSpan(columnConfig);\n\n if (!configColSpan || configColSpan <= 1) {\n return false;\n }\n\n const { headers: allHeadersInGroup } = header.headerGroup;\n const currentIndex = allHeadersInGroup.findIndex(h => h.id === header.id);\n\n if (currentIndex === -1) {\n return false;\n }\n\n for (let i = 0; i < configColSpan && currentIndex + i < allHeadersInGroup.length; i++) {\n const targetHeader = allHeadersInGroup[currentIndex + i];\n const targetLeafHeaders = targetHeader.getLeafHeaders();\n const hasFirst = targetLeafHeaders.some(\n lh => lh.column.getIsPinned() === 'right' && lh.column.getIsFirstColumn('right')\n );\n if (hasFirst) {\n return true;\n }\n }\n\n return false;\n }\n\n private _isLastRightPinned<T>(\n header: Header<T, unknown>,\n columns: ZTableColumnConfig<T>[],\n cellType: ZTableCellType\n ): boolean {\n const leafHeaders = header.getLeafHeaders();\n const hasLastRightPinnedLeaf = leafHeaders.some(\n lh => lh.column.getIsPinned() === 'right' && lh.column.getIsLastColumn('right')\n );\n if (hasLastRightPinnedLeaf) {\n return true;\n }\n\n const columnConfig = findColumnConfig(header.column.id, columns);\n const configColSpan = cellType === 'footer' ? getFooterColSpan(columnConfig) : getHeaderColSpan(columnConfig);\n\n if (!configColSpan || configColSpan <= 1) {\n return false;\n }\n\n const { headers: allHeadersInGroup } = header.headerGroup;\n const currentIndex = allHeadersInGroup.findIndex(h => h.id === header.id);\n\n if (currentIndex === -1) {\n return false;\n }\n\n const endIndex = currentIndex + configColSpan - 1;\n if (endIndex >= allHeadersInGroup.length) {\n return false;\n }\n\n const targetHeader = allHeadersInGroup[endIndex];\n const targetLeafHeaders = targetHeader.getLeafHeaders();\n return targetLeafHeaders.some(lh => lh.column.getIsPinned() === 'right' && lh.column.getIsLastColumn('right'));\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport type { Cell, Header } from '@tanstack/angular-table';\nimport type { ZTableCellRenderType, ZTableColumnConfig } from '../z-table.types';\nimport { shouldBodyCellRenderColSpan, shouldHeaderRender, shouldFooterRender } from '../z-table.util';\n\n@Pipe({\n name: 'zTableCellRender',\n standalone: true,\n pure: true,\n})\nexport class ZTableCellRenderPipe implements PipeTransform {\n transform<T>(\n cellOrHeader: Cell<T, unknown> | Header<T, unknown>,\n allCellsOrHeaders: Cell<T, unknown>[] | Header<T, unknown>[],\n columns: ZTableColumnConfig<T>[],\n type: ZTableCellRenderType\n ): boolean {\n switch (type) {\n case 'header':\n return shouldHeaderRender(\n cellOrHeader as Header<T, unknown>,\n allCellsOrHeaders as Header<T, unknown>[],\n columns\n );\n case 'footer':\n return shouldFooterRender(\n cellOrHeader as Header<T, unknown>,\n allCellsOrHeaders as Header<T, unknown>[],\n columns\n );\n case 'body':\n return shouldBodyCellRenderColSpan(\n cellOrHeader as Cell<T, unknown>,\n allCellsOrHeaders as Cell<T, unknown>[],\n columns\n );\n default:\n return true;\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport type { ZTooltipConfig } from '@shival99/z-vnetcity/components/z-tooltip';\nimport type { ZTableColumnConfig } from '../z-table.types';\nimport { findColumnConfig, getHeaderConfig, getFooterConfig, isBodyConfig } from '../z-table.util';\n\nconst Z_TABLE_ALIGN_MAP: Record<string, string> = {\n left: 'text-left',\n center: 'text-center',\n right: 'text-right',\n};\n\n@Pipe({\n name: 'zTableColumnConfig',\n standalone: true,\n pure: true,\n})\nexport class ZTableColumnConfigPipe implements PipeTransform {\n transform<T>(\n columnId: string,\n columns: ZTableColumnConfig<T>[],\n property:\n | 'headerClass'\n | 'headerAlignClass'\n | 'headerContentClass'\n | 'footerClass'\n | 'footerAlignClass'\n | 'footerContentClass'\n ): string;\n transform<T>(\n columnId: string,\n columns: ZTableColumnConfig<T>[],\n property: 'headerStyle' | 'headerContentStyle' | 'footerStyle' | 'footerContentStyle'\n ): Record<string, string>;\n transform<T>(\n columnId: string,\n columns: ZTableColumnConfig<T>[],\n property: 'headerTooltip' | 'footerTooltip'\n ): string | ZTooltipConfig;\n transform<T>(\n columnId: string,\n columns: ZTableColumnConfig<T>[],\n property: 'hasBodyRowSpan' | 'enableOrdering' | 'enablePinning'\n ): boolean;\n transform<T>(columnId: string, columns: ZTableColumnConfig<T>[], property: 'footerContent'): unknown;\n transform<T>(\n columnId: string,\n columns: ZTableColumnConfig<T>[],\n property:\n | 'headerClass'\n | 'headerStyle'\n | 'headerTooltip'\n | 'headerAlignClass'\n | 'headerContentClass'\n | 'headerContentStyle'\n | 'footerClass'\n | 'footerStyle'\n | 'footerTooltip'\n | 'footerAlignClass'\n | 'footerContentClass'\n | 'footerContentStyle'\n | 'hasBodyRowSpan'\n | 'footerContent'\n | 'enableOrdering'\n | 'enablePinning'\n ): string | Record<string, string> | ZTooltipConfig | boolean | unknown {\n const columnConfig = findColumnConfig(columnId, columns);\n\n switch (property) {\n case 'headerClass': {\n const headerConfig = getHeaderConfig(columnConfig);\n return headerConfig.class || '';\n }\n\n case 'headerStyle': {\n const headerConfig = getHeaderConfig(columnConfig);\n return headerConfig.style || {};\n }\n\n case 'headerTooltip': {\n const headerConfig = getHeaderConfig(columnConfig);\n return (headerConfig.tooltip as string | ZTooltipConfig) || '';\n }\n\n case 'headerAlignClass': {\n const headerConfig = getHeaderConfig(columnConfig);\n return headerConfig.align ? Z_TABLE_ALIGN_MAP[headerConfig.align] || '' : '';\n }\n\n case 'headerContentClass': {\n const headerConfig = getHeaderConfig(columnConfig);\n const { contentClass } = headerConfig;\n if (typeof contentClass === 'function') {\n return '';\n }\n return contentClass || '';\n }\n\n case 'headerContentStyle': {\n const headerConfig = getHeaderConfig(columnConfig);\n const { contentStyle } = headerConfig;\n if (typeof contentStyle === 'function') {\n return {};\n }\n return contentStyle || {};\n }\n\n case 'footerClass': {\n const footerConfig = getFooterConfig(columnConfig);\n return footerConfig.class || '';\n }\n\n case 'footerStyle': {\n const footerConfig = getFooterConfig(columnConfig);\n return footerConfig.style || {};\n }\n\n case 'footerTooltip': {\n const footerConfig = getFooterConfig(columnConfig);\n return (footerConfig.tooltip as string | ZTooltipConfig) || '';\n }\n\n case 'footerAlignClass': {\n const footerConfig = getFooterConfig(columnConfig);\n return footerConfig.align ? Z_TABLE_ALIGN_MAP[footerConfig.align] || '' : '';\n }\n\n case 'footerContentClass': {\n const footerConfig = getFooterConfig(columnConfig);\n const { contentClass } = footerConfig;\n if (typeof contentClass === 'function') {\n return '';\n }\n return contentClass || '';\n }\n\n case 'footerContentStyle': {\n const footerConfig = getFooterConfig(columnConfig);\n const { contentStyle } = footerConfig;\n if (typeof contentStyle === 'function') {\n return {};\n }\n return contentStyle || {};\n }\n\n case 'hasBodyRowSpan':\n return columnConfig ? isBodyConfig(columnConfig.body) && columnConfig.body.rowSpan !== undefined : false;\n\n case 'enableOrdering':\n return columnConfig?.enableOrdering !== false;\n\n case 'enablePinning':\n return columnConfig?.enablePinning !== false;\n\n case 'footerContent': {\n const footerConfig = getFooterConfig(columnConfig);\n return footerConfig.content || '';\n }\n\n default:\n return '';\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport type { ZTableColumnConfig } from '../z-table.types';\nimport { findColumnConfig, getHeaderConfig, stripIconSyntax } from '../z-table.util';\n\n@Pipe({\n name: 'zTableColumnHeader',\n standalone: true,\n pure: true,\n})\nexport class ZTableColumnHeaderPipe implements PipeTransform {\n transform<T>(columnId: string, columns: ZTableColumnConfig<T>[]): string {\n const columnConfig = findColumnConfig(columnId, columns);\n if (!columnConfig) {\n return columnId;\n }\n\n const headerConfig = getHeaderConfig(columnConfig);\n if (typeof headerConfig.content === 'string') {\n return stripIconSyntax(headerConfig.content);\n }\n\n return columnId;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport type { ZTableColumnConfig } from '../z-table.types';\nimport { getHeaderConfig, stripIconSyntax } from '../z-table.util';\n\n@Pipe({\n name: 'zTableColumnParents',\n standalone: true,\n pure: true,\n})\nexport class ZTableColumnParentsPipe implements PipeTransform {\n transform<T>(columnId: string, columns: ZTableColumnConfig<T>[]): string {\n const parents: string[] = [];\n this._findParents(columnId, columns, parents);\n return parents.length > 0 ? parents.join(' › ') : '';\n }\n\n private _findParents<T>(\n columnId: string,\n columns: ZTableColumnConfig<T>[],\n parents: string[],\n currentParents: string[] = []\n ): boolean {\n for (const col of columns) {\n if (col.id === columnId) {\n parents.push(...currentParents);\n return true;\n }\n\n if (col.columns && col.columns.length > 0) {\n const parentName = this._getColumnName(col);\n const found = this._findParents(columnId, col.columns, parents, [...currentParents, parentName]);\n if (found) {\n return true;\n }\n }\n }\n\n return false;\n }\n\n private _getColumnName<T>(col: ZTableColumnConfig<T>): string {\n const headerConfig = getHeaderConfig(col);\n if (typeof headerConfig.content === 'string') {\n return stripIconSyntax(headerConfig.content);\n }\n return col.id;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport type { Header } from '@tanstack/angular-table';\nimport type { ZTableColumnConfig } from '../z-table.types';\nimport { findColumnConfig } from '../z-table.util';\n\n@Pipe({\n name: 'zTableFooterContent',\n standalone: true,\n pure: true,\n})\nexport class ZTableFooterContentPipe implements PipeTransform {\n transform<T>(footerGroup: { headers: Header<T, unknown>[] }, columns: ZTableColumnConfig<T>[]): boolean {\n return footerGroup.headers.some(header => {\n const columnConfig = findColumnConfig(header.column.id, columns);\n return columnConfig?.footer !== undefined;\n });\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { hasIconSyntax } from '../z-table.util';\n\n@Pipe({\n name: 'zTableHasIcon',\n standalone: true,\n pure: true,\n})\nexport class ZTableHasIconPipe implements PipeTransform {\n transform(content: unknown): boolean {\n if (typeof content !== 'string') {\n return false;\n }\n\n return hasIconSyntax(content);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport type { Column, Cell, Header, Table } from '@tanstack/angular-table';\nimport type { ZPinningStyles, ZTableColumnConfig } from '../z-table.types';\nimport {\n shouldHeaderRender,\n getHeaderColSpan,\n getFooterColSpan,\n findColumnConfig,\n getBodyColSpan,\n shouldBodyCellRenderColSpan,\n shouldFooterRender,\n} from '../z-table.util';\n\n@Pipe({\n name: 'zTablePinningStyles',\n standalone: true,\n pure: false,\n})\nexport class ZTablePinningStylesPipe implements PipeTransform {\n /**\n * Main transform method - routes to appropriate calculation based on type\n *\n * @param column - The column being styled\n * @param item - The cell or header item\n * @param type - 'header' | 'body' | 'footer'\n * @param tableOrCells - Table instance or array of cells\n * @param columns - Column configuration array\n * @param _sizingTrigger - Optional sizing trigger to force recalculation on resize\n * @returns CSS style object for sticky positioning\n */\n transform<T>(\n column: Column<T, unknown>,\n item: Cell<T, unknown> | Header<T, unknown> | null,\n type: 'header' | 'body' | 'footer',\n tableOrCells?: Table<T> | Cell<T, unknown>[],\n columns?: ZTableColumnConfig<T>[],\n _sizingTrigger?: unknown\n ): Record<string, string | number | undefined> {\n if (type === 'body') {\n const allCells = Array.isArray(tableOrCells) ? tableOrCells : undefined;\n return this._getBodyPinningStyles(column, item as Cell<T, unknown>, allCells, columns || []);\n }\n\n if (type === 'footer' && item && tableOrCells && !Array.isArray(tableOrCells)) {\n return this._getFooterPinningStyles(column, item as Header<T, unknown>, tableOrCells, columns || []);\n }\n\n if (type === 'header' && item && tableOrCells && !Array.isArray(tableOrCells)) {\n return this._getHeaderPinningStyles(column, item as Header<T, unknown>, tableOrCells, columns || []);\n }\n\n return {};\n }\n\n private _getBodyPinningStyles<T>(\n column: Column<T, unknown>,\n cell: Cell<T, unknown> | null,\n allCells: Cell<T, unknown>[] | undefined,\n columns: ZTableColumnConfig<T>[]\n ): ZPinningStyles {\n const isPinned = column.getIsPinned();\n let leftOffset = column.getStart('left');\n let rightOffset = column.getAfter('right');\n\n if (allCells && cell && isPinned === 'left') {\n leftOffset = this._calculateBodyLeftOffset(cell, allCells, columns);\n }\n\n if (allCells && cell && isPinned === 'right') {\n rightOffset = this._calculateBodyRightOffset(cell, allCells, columns);\n }\n\n return this._buildPinningResult(isPinned, leftOffset, rightOffset);\n }\n\n /**\n * Calculates left offset for a body cell considering colspan.\n * Sums widths of all cells before the current cell.\n */\n private _calculateBodyLeftOffset<T>(\n cell: Cell<T, unknown>,\n allCells: Cell<T, unknown>[],\n columns: ZTableColumnConfig<T>[]\n ): number {\n const currentIdx = allCells.findIndex(c => c.id === cell.id);\n if (currentIdx <= 0) {\n return 0;\n }\n\n let calculatedOffset = 0;\n for (let i = 0; i < currentIdx; i++) {\n const prevCell = allCells[i];\n // Skip cells that are covered by colspan from previous cells\n if (!shouldBodyCellRenderColSpan(prevCell, allCells, columns)) {\n continue;\n }\n\n calculatedOffset += this._getCellWidthWithColspan(prevCell, allCells, i, columns);\n }\n\n return calculatedOffset;\n }\n\n /**\n * Calculates right offset for a body cell considering colspan.\n * Sums widths of all cells after the current cell.\n */\n private _calculateBodyRightOffset<T>(\n cell: Cell<T, unknown>,\n allCells: Cell<T, unknown>[],\n columns: ZTableColumnConfig<T>[]\n ): number {\n const currentIdx = allCells.findIndex(c => c.id === cell.id);\n // Last cell has 0 right offset\n if (currentIdx === allCells.length - 1) {\n return 0;\n }\n\n if (currentIdx < 0) {\n return 0;\n }\n\n let calculatedOffset = 0;\n for (let i = currentIdx + 1; i < allCells.length; i++) {\n const nextCell = allCells[i];\n\n // Skip cells that are covered by colspan\n if (!shouldBodyCellRenderColSpan(nextCell, allCells, columns)) {\n continue;\n }\n\n calculatedOffset += this._getCellWidthWithColspan(nextCell, allCells, i, columns);\n }\n\n return calculatedOffset;\n }\n\n /**\n * Gets cell width including any colspan expansion.\n * If cell has colspan > 1, adds widths of covered cells.\n */\n private _getCellWidthWithColspan<T>(\n cell: Cell<T, unknown>,\n allCells: Cell<T, unknown>[],\n cellIndex: number,\n columns: ZTableColumnConfig<T>[]\n ): number {\n const config = findColumnConfig(cell.column.id, columns);\n const colSpan = getBodyColSpan(config, cell.getContext());\n\n if (colSpan && colSpan > 1) {\n let spanWidth = cell.column.getSize();\n for (let j = 1; j < colSpan && cellIndex + j < allCells.length; j++) {\n spanWidth += allCells[cellIndex + j].column.getSize();\n }\n return spanWidth;\n }\n\n return cell.column.getSize();\n }\n\n private _getHeaderPinningStyles<T>(\n column: Column<T, unknown>,\n headerCurrent: Header<T, unknown>,\n table: Table<T>,\n columns: ZTableColumnConfig<T>[]\n ): ZPinningStyles {\n const isPinnedColumn = column.getIsPinned();\n if (!isPinnedColumn) {\n return this._buildPinningResult(undefined, 0, 0);\n }\n\n const isChildPinned = this._determineChildPinDirection(column, headerCurrent);\n const headerGroups = headerCurrent.headerGroup.headers;\n\n let leftOffset: number | undefined;\n let rightOffset: number | undefined;\n\n if (isChildPinned === 'left') {\n leftOffset = this._calculateHeaderLeftOffset(headerCurrent, headerGroups, columns);\n }\n\n if (isChildPinned === 'right') {\n rightOffset = this._calculateHeaderRightOffset(headerCurrent, headerGroups, columns);\n }\n\n return {\n position: isChildPinned ? 'sticky' : 'relative',\n zIndex: isChildPinned ? 1 : 0,\n left: leftOffset !== undefined ? `${leftOffset}px` : undefined,\n right: rightOffset !== undefined ? `${rightOffset}px` : undefined,\n };\n }\n\n /**\n * Determines if any child header is pinned and returns the direction.\n * Checks leaf headers to find pinning status.\n */\n private _determineChildPinDirection<T>(\n column: Column<T, unknown>,\n header: Header<T, unknown>\n ): 'left' | 'right' | undefined {\n const isPinnedColumn = column.getIsPinned();\n const leafHeaders = header.getLeafHeaders();\n const filterChild = leafHeaders.filter(h => h.column.id !== column.id);\n\n // No children - use column's own pin status\n if (filterChild.length === 0) {\n return isPinnedColumn || undefined;\n }\n\n // Check if any child is pinned\n for (const child of filterChild) {\n const isPinned = child.column.getIsPinned();\n if (isPinned) {\n return isPinned;\n }\n }\n\n return undefined;\n }\n\n /**\n * Calculates left offset for a header cell.\n * Sums widths of all left-pinned headers before current header.\n */\n private _calculateHeaderLeftOffset<T>(\n headerCurrent: Header<T, unknown>,\n headerGroups: Header<T, unknown>[],\n columns: ZTableColumnConfig<T>[]\n ): number {\n const headersBeforeCurrent = this._getLeftPinnedHeadersBefore(headerCurrent, headerGroups);\n\n return headersBeforeCurrent.reduce((sum, h) => {\n if (!shouldHeaderRender(h, headerGroups, columns)) {\n return sum;\n }\n return sum + this._getHeaderWidthWithColspan(h, headerGroups, columns, 'header');\n }, 0);\n }\n\n /**\n * Calculates right offset for a header cell.\n * Sums widths of all right-pinned headers after current header.\n */\n private _calculateHeaderRightOffset<T>(\n headerCurrent: Header<T, unknown>,\n headerGroups: Header<T, unknown>[],\n columns: ZTableColumnConfig<T>[]\n ): number {\n const headersAfterCurrent = this._getRightPinnedHeadersAfter(headerCurrent, headerGroups);\n\n return headersAfterCurrent.reduce((sum, h) => {\n if (!shouldHeaderRender(h, headerGroups, columns)) {\n return sum;\n }\n return sum + this._getHeaderWidthWithColspan(h, headerGroups, columns, 'header');\n }, 0);\n }\n\n /**\n * Gets all left-pinned headers that appear before the current header.\n */\n private _getLeftPinnedHeadersBefore<T>(\n headerCurrent: Header<T, unknown>,\n headerGroups: Header<T, unknown>[]\n ): Header<T, unknown>[] {\n const result: Header<T, unknown>[] = [];\n const indexOfHeader = headerGroups.findIndex(h => h.id === headerCurrent.id);\n\n for (let i = 0; i < indexOfHeader; i++) {\n const leafs = headerGroups[i].getLeafHeaders();\n const hasLeftPinned = leafs.some(lh => lh.column.getIsPinned() === 'left');\n if (hasLeftPinned) {\n result.push(headerGroups[i]);\n }\n }\n\n return result;\n }\n\n /**\n * Gets all headers that appear after the current header (for right pinning).\n */\n private _getRightPinnedHeadersAfter<T>(\n headerCurrent: Header<T, unknown>,\n headerGroups: Header<T, unknown>[]\n ): Header<T, unknown>[] {\n const result: Header<T, unknown>[] = [];\n const reversed = [...headerGroups].reverse();\n const indexOfHeader = reversed.findIndex(h => h.id === headerCurrent.id);\n\n for (let i = 0; i < indexOfHeader; i++) {\n result.push(reversed[i]);\n }\n\n return result;\n }\n\n private _getFooterPinningStyles<T>(\n column: Column<T, unknown>,\n footerCurrent: Header<T, unknown>,\n table: Table<T>,\n columns: ZTableColumnConfig<T>[]\n ): ZPinningStyles {\n const isPinnedColumn = column.getIsPinned();\n if (!isPinnedColumn) {\n return this._buildPinningResult(undefined, 0, 0);\n }\n\n const isChildPinned = this._determineChildPinDirection(column, footerCurrent);\n const footerHeaders = footerCurrent.headerGroup.headers;\n\n let leftOffset: number | undefined;\n let rightOffset: number | undefined;\n\n if (isChildPinned === 'left') {\n leftOffset = this._calculateFooterLeftOffset(footerCurrent, footerHeaders, columns);\n }\n\n if (isChildPinned === 'right') {\n rightOffset = this._calculateFooterRightOffset(footerCurrent, footerHeaders, columns);\n }\n\n return {\n position: isChildPinned ? 'sticky' : 'relative',\n zIndex: isChildPinned ? 1 : 0,\n left: leftOffset !== undefined ? `${leftOffset}px` : undefined,\n right: rightOffset !== undefined ? `${rightOffset}px` : undefined,\n };\n }\n\n /**\n * Calculates left offset for a footer cell.\n * Sums widths of all left-pinned footers before current footer.\n */\n private _calculateFooterLeftOffset<T>(\n footerCurrent: Header<T, unknown>,\n footerHeaders: Header<T, unknown>[],\n columns: ZTableColumnConfig<T>[]\n ): number {\n const footersBeforeCurrent = this._getLeftPinnedHeadersBefore(footerCurrent, footerHeaders);\n\n return footersBeforeCurrent.reduce((sum, h) => {\n if (!shouldFooterRender(h, footerHeaders, columns)) {\n return sum;\n }\n return sum + this._getHeaderWidthWithColspan(h, footerHeaders, columns, 'footer');\n }, 0);\n }\n\n /**\n * Calculates right offset for a footer cell.\n * Handles colspan coverage to exclude covered cells from calculation.\n */\n private _calculateFooterRightOffset<T>(\n footerCurrent: Header<T, unknown>,\n footerHeaders: Header<T, unknown>[],\n columns: ZTableColumnConfig<T>[]\n ): number {\n const footersAfterCurrent = this._getRightPinnedHeadersAfter(footerCurrent, footerHeaders);\n // Check if current footer has colspan\n const currentConfig = findColumnConfig(footerCurrent.column.id, columns);\n const currentColSpan = getFooterColSpan(currentConfig);\n\n if (currentColSpan && currentColSpan > 1) {\n return this._calculateRightOffsetWithColspan(\n footerCurrent,\n footerHeaders,\n footersAfterCurrent,\n currentColSpan,\n columns\n );\n }\n\n // No colspan - sum all footers after\n return footersAfterCurrent.reduce((sum, h) => {\n if (!shouldFooterRender(h, footerHeaders, columns)) {\n return sum;\n }\n return sum + this._getHeaderWidthWithColspan(h, footerHeaders, columns, 'footer');\n }, 0);\n }\n\n /**\n * Calculates right offset when current footer has colspan.\n * Excludes cells that are covered by the colspan.\n */\n private _calculateRightOffsetWithColspan<T>(\n footerCurrent: Header<T, unknown>,\n footerHeaders: Header<T, unknown>[],\n footersAfterCurrent: Header<T, unknown>[],\n colSpan: number,\n columns: ZTableColumnConfig<T>[]\n ): number {\n const currentIdx = footerHeaders.findIndex(h => h.id === footerCurrent.id);\n const coveredCount = Math.min(colSpan - 1, footerHeaders.length - currentIdx - 1);\n\n // Build set of covered column IDs\n const coveredColumnIds = new Set<string>();\n for (let j = 1; j <= coveredCount && currentIdx + j < footerHeaders.length; j++) {\n coveredColumnIds.add(footerHeaders[currentIdx + j].id);\n }\n\n // Only sum uncovered footers\n const uncoveredFooters = footersAfterCurrent.filter(h => !coveredColumnIds.has(h.id));\n\n return uncoveredFooters.reduce((sum, h) => {\n if (!shouldFooterRender(h, footerHeaders, columns)) {\n return sum;\n }\n return sum + h.column.getSize();\n }, 0);\n }\n\n private _getHeaderWidthWithColspan<T>(\n header: Header<T, unknown>,\n allHeaders: Header<T, unknown>[],\n columns: ZTableColumnConfig<T>[],\n type: 'header' | 'footer'\n ): number {\n const getColSpan = type === 'header' ? getHeaderColSpan : getFooterColSpan;\n const shouldRender = type === 'header' ? shouldHeaderRender : shouldFooterRender;\n if (header.subHeaders.length > 0) {\n const pinDirection = type === 'header' ? 'left' : 'right';\n return header.subHeaders\n .filter(subH => subH.column.getIsPinned() === pinDirection || subH.column.getIsPinned())\n .filter(subH => shouldRender(subH, header.subHeaders, columns))\n .reduce((subAcc, subH) => subAcc + this._getSingleHeaderWidth(subH, header.subHeaders, columns, getColSpan), 0);\n }\n\n return this._getSingleHeaderWidth(header, allHeaders, columns, getColSpan);\n }\n\n /**\n * Gets width of a single header considering its colspan.\n */\n private _getSingleHeaderWidth<T>(\n header: Header<T, unknown>,\n allHeaders: Header<T, unknown>[],\n columns: ZTableColumnConfig<T>[],\n getColSpanFn: (config: ZTableColumnConfig<T> | undefined) => number | undefined\n ): number {\n const config = findColumnConfig(header.column.id, columns);\n const colSpan = getColSpanFn(config);\n\n if (colSpan && colSpan > 1) {\n const currentIdx = allHeaders.findIndex(h => h.id === header.id);\n let totalWidth = header.column.getSize();\n\n for (let j = 1; j < colSpan && currentIdx + j < allHeaders.length; j++) {\n totalWidth += allHeaders[currentIdx + j].column.getSize();\n }\n\n return totalWidth;\n }\n\n return header.column.getSize();\n }\n\n /**\n * Builds the final pinning styles result object.\n */\n private _buildPinningResult(\n isPinned: 'left' | 'right' | false | undefined,\n leftOffset: number,\n rightOffset: number\n ): ZPinningStyles {\n return {\n left: isPinned === 'left' ? `${leftOffset}px` : undefined,\n right: isPinned === 'right' ? `${rightOffset}px` : undefined,\n position: isPinned ? 'sticky' : 'relative',\n zIndex: isPinned ? 1 : 0,\n };\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport type { Row, Table } from '@tanstack/angular-table';\n\n@Pipe({\n name: 'zTableRow',\n standalone: true,\n pure: true,\n})\nexport class ZTableRowPipe implements PipeTransform {\n transform<T>(row: Row<T>, table: Table<T>, property: 'isLastTopPinned' | 'isFirstBottomPinned'): boolean;\n transform<T>(\n row: Row<T>,\n table: Table<T>,\n property: 'pinningStyles',\n virtualRowHeight?: number\n ): Record<string, string | number>;\n transform<T>(\n row: Row<T>,\n table: Table<T>,\n property: 'isLastTopPinned' | 'isFirstBottomPinned' | 'pinningStyles',\n virtualRowHeight?: number\n ): boolean | Record<string, string | number> {\n switch (property) {\n case 'isLastTopPinned':\n return this._isLastTopPinnedRow(row, table);\n\n case 'isFirstBottomPinned':\n return this._isFirstBottomPinnedRow(row, table);\n\n case 'pinningStyles':\n return this._getRowPinningStyles(row, table, virtualRowHeight ?? 40);\n\n default:\n return false;\n }\n }\n\n private _isLastTopPinnedRow<T>(row: Row<T>, table: Table<T>): boolean {\n const topRows = table.getTopRows();\n if (topRows.length === 0) {\n return false;\n }\n return row.getPinnedIndex() === topRows.length - 1;\n }\n\n private _isFirstBottomPinnedRow<T>(row: Row<T>, table: Table<T>): boolean {\n const bottomRows = table.getBottomRows();\n if (bottomRows.length === 0) {\n return false;\n }\n return row.getPinnedIndex() === bottomRows.length - 1;\n }\n\n private _getRowPinningStyles<T>(\n row: Row<T>,\n table: Table<T>,\n virtualRowHeight: number\n ): Record<string, string | number> {\n const pinned = row.getIsPinned();\n if (!pinned) {\n return {};\n }\n\n const pinnedIndex = row.getPinnedIndex();\n const defaultHeight = virtualRowHeight + 2;\n\n if (pinned === 'top') {\n let offset = 0;\n const topRows = table.getTopRows();\n for (let i = 0; i < pinnedIndex; i++) {\n const rowEl = document.querySelector(`tr[data-row-id=\"${topRows[i].id}\"]`) as HTMLElement;\n offset += rowEl ? rowEl.getBoundingClientRect().height : defaultHeight;\n }\n\n return { position: 'sticky', top: `${offset}px`, zIndex: 2 };\n }\n\n if (pinned === 'bottom') {\n let offset = 0;\n const bottomRows = table.getBottomRows();\n for (let i = 0; i < pinnedIndex; i++) {\n const rowEl = document.querySelector(`tr[data-row-id=\"${bottomRows[i].id}\"]`) as HTMLElement;\n offset += rowEl ? rowEl.getBoundingClientRect().height : defaultHeight;\n }\n\n return { position: 'sticky', bottom: `${offset}px`, zIndex: 2 };\n }\n\n return {};\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport type { Cell, Header, Row } from '@tanstack/angular-table';\nimport type { ZTableColumnConfig } from '../z-table.types';\nimport {\n findColumnConfig,\n calculateCellRowSpan,\n calculateCellColSpan,\n calculateHeaderRowSpan,\n calculateHeaderColSpan,\n calculateFooterRowSpan,\n calculateFooterColSpan,\n shouldCellRenderUtil,\n} from '../z-table.util';\n\n@Pipe({\n name: 'zTableSpan',\n standalone: true,\n pure: true,\n})\nexport class ZTableSpanPipe implements PipeTransform {\n transform<T>(\n item: Cell<T, unknown> | Header<T, unknown>,\n columns: ZTableColumnConfig<T>[],\n property: 'cellRowSpan' | 'cellColSpan' | 'headerRowSpan' | 'headerColSpan' | 'footerRowSpan' | 'footerColSpan',\n allRows?: Row<T>[]\n ): number | null;\n transform<T>(\n item: Cell<T, unknown>,\n columns: ZTableColumnConfig<T>[],\n property: 'shouldRender',\n allRows?: Row<T>[]\n ): boolean;\n transform<T>(\n item: Cell<T, unknown> | Header<T, unknown>,\n columns: ZTableColumnConfig<T>[],\n property:\n | 'cellRowSpan'\n | 'cellColSpan'\n | 'headerRowSpan'\n | 'headerColSpan'\n | 'footerRowSpan'\n | 'footerColSpan'\n | 'shouldRender',\n allRows?: Row<T>[]\n ): number | null | boolean {\n const columnConfig = findColumnConfig(item.column.id, columns);\n\n switch (property) {\n case 'cellRowSpan':\n return calculateCellRowSpan(item as Cell<T, unknown>, columnConfig, allRows ?? []);\n\n case 'cellColSpan':\n return calculateCellColSpan(item as Cell<T, unknown>, columnConfig);\n\n case 'headerRowSpan':\n return calculateHeaderRowSpan(item as Header<T, unknown>, columnConfig, columns);\n\n case 'headerColSpan':\n return calculateHeaderColSpan(item as Header<T, unknown>, columnConfig);\n\n case 'footerRowSpan':\n return calculateFooterRowSpan(item as Header<T, unknown>, columnConfig);\n\n case 'footerColSpan':\n return calculateFooterColSpan(item as Header<T, unknown>, columnConfig);\n\n case 'shouldRender':\n return shouldCellRenderUtil(item as Cell<T, unknown>, columnConfig, allRows ?? []);\n\n default:\n return null;\n }\n }\n}\n","import { Pipe, PipeTransform, TemplateRef } from '@angular/core';\n\n@Pipe({\n name: 'zTableIsTemplateRef',\n standalone: true,\n pure: true,\n})\nexport class ZTableIsTemplateRefPipe implements PipeTransform {\n transform(value: unknown): value is TemplateRef<unknown> {\n return value instanceof TemplateRef;\n }\n}\n","/* eslint-disable @stylistic/indent */\nimport { CdkDrag, CdkDropList, moveItemInArray, type CdkDragDrop } from '@angular/cdk/drag-drop';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { NgClass, NgStyle, NgTemplateOutlet } from '@angular/common';\nimport {\n afterNextRender,\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n input,\n output,\n signal,\n TemplateRef,\n untracked,\n viewChild,\n viewChildren,\n} from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { injectVirtualizer } from '@shival99/angular-virtual';\nimport { ZButtonComponent } from '@shival99/z-vnetcity/components/z-button';\nimport { ZCheckboxComponent } from '@shival99/z-vnetcity/components/z-checkbox';\nimport { ZDrawerComponent } from '@shival99/z-vnetcity/components/z-drawer';\nimport { ZEmptyComponent } from '@shival99/z-vnetcity/components/z-empty';\nimport { ZIconComponent } from '@shival99/z-vnetcity/components/z-icon';\nimport { ZInputComponent } from '@shival99/z-vnetcity/components/z-input';\nimport { ZLoadingComponent } from '@shival99/z-vnetcity/components/z-loading';\nimport { ZPaginationComponent } from '@shival99/z-vnetcity/components/z-pagination';\nimport { ZPopoverDirective } from '@shival99/z-vnetcity/components/z-popover';\nimport { ZSkeletonComponent } from '@shival99/z-vnetcity/components/z-skeleton';\nimport { ZTooltipDirective } from '@shival99/z-vnetcity/components/z-tooltip';\nimport { ZSafeHtmlPipe, ZFormatNumPipe } from '@shival99/z-vnetcity/pipes';\nimport { ZCacheService, ZTranslateService } from '@shival99/z-vnetcity/services';\nimport {\n ColumnDef,\n ColumnFiltersState,\n ColumnOrderState,\n ColumnPinningState,\n createAngularTable,\n ExpandedState,\n FlexRenderDirective,\n getCoreRowModel,\n getExpandedRowModel,\n getFacetedMinMaxValues,\n getFacetedRowModel,\n getFacetedUniqueValues,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n PaginationState,\n Row,\n RowPinningState,\n RowSelectionState,\n SortingState,\n VisibilityState,\n} from '@tanstack/angular-table';\nimport { NgScrollbar } from 'ngx-scrollbar';\nimport { explicitEffect } from 'ngxtension/explicit-effect';\nimport { injectDestroy } from 'ngxtension/inject-destroy';\nimport { ZTableActionsComponent } from './components/z-table-actions.component';\nimport { ZTableEditCellComponent } from './components/z-table-edit-cell.component';\nimport { ZTableFilterComponent } from './components/z-table-filter.component';\nimport { ZTableIconTextComponent } from './components/z-table-icon-text.component';\nimport { ZTableResizeDirective, ZTableRowHoverDirective } from './directives';\nimport {\n ZTableCellBottomPipe,\n ZTableCellClickablePipe,\n ZTableCellConfigPipe,\n ZTableCellEditPipe,\n ZTableCellOffsetPipe,\n ZTableCellPinPipe,\n ZTableColumnConfigPipe,\n ZTableColumnHeaderPipe,\n ZTableColumnParentsPipe,\n ZTableFooterContentPipe,\n ZTableHasIconPipe,\n ZTableIsTemplateRefPipe,\n ZTablePinningStylesPipe,\n ZTableRowPipe,\n ZTableSpanPipe,\n} from './pipes';\nimport { ZTableCellRenderPipe } from './pipes/z-table-cell-render.pipe';\nimport {\n Z_DEFAULT_DEBOUNCE_TIME,\n Z_DEFAULT_GROUP_SIZE,\n Z_DEFAULT_ROW_HEIGHT,\n Z_DEFAULT_VIRTUAL_OVERSCAN,\n Z_SKELETON_ROW_HEIGHT,\n Z_TABLE_DEFAULT_ACTION_BUTTON_WIDTH,\n ZTableActionClickEvent,\n ZTableActionColumnConfig,\n ZTableChangeEvent,\n ZTableColumnConfig,\n ZTableConfig,\n ZTableControl,\n ZTableEditCellChangeEvent,\n ZTableSavedColumnInfo,\n ZTableSavedConfig,\n ZTableVirtualConfig,\n ZVirtualGroup,\n} from './z-table.types';\nimport {\n columnConfigToColumnDef,\n filterVisibleColumns,\n getBodyRowSpan,\n getHeaderColSpan,\n isBodyConfig,\n} from './z-table.util';\n\n@Component({\n selector: 'z-table',\n imports: [\n NgClass,\n NgStyle,\n NgTemplateOutlet,\n ScrollingModule,\n NgScrollbar,\n FlexRenderDirective,\n CdkDropList,\n CdkDrag,\n ZCheckboxComponent,\n ZEmptyComponent,\n ZIconComponent,\n ZInputComponent,\n ZLoadingComponent,\n ZSkeletonComponent,\n ZDrawerComponent,\n ZPaginationComponent,\n ZTableFilterComponent,\n ZTableEditCellComponent,\n ZPopoverDirective,\n ZButtonComponent,\n ZTooltipDirective,\n ZTableResizeDirective,\n ZTableRowHoverDirective,\n ZTableIsTemplateRefPipe,\n ZTableHasIconPipe,\n ZTableCellBottomPipe,\n ZTableCellClickablePipe,\n ZTableCellConfigPipe,\n ZTableCellEditPipe,\n ZTableCellOffsetPipe,\n ZTableCellPinPipe,\n ZTableColumnConfigPipe,\n ZTableColumnHeaderPipe,\n ZTableColumnParentsPipe,\n ZTableFooterContentPipe,\n ZTablePinningStylesPipe,\n ZTableRowPipe,\n ZTableSpanPipe,\n ZTableCellRenderPipe,\n ZTableIconTextComponent,\n ZTableActionsComponent,\n ZFormatNumPipe,\n ZSafeHtmlPipe,\n TranslatePipe,\n ],\n standalone: true,\n templateUrl: './z-table.component.html',\n styleUrl: './z-table.component.scss',\n providers: [TranslatePipe],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'z-table block relative py-1',\n },\n exportAs: 'zTable',\n})\nexport class ZTableComponent<T> implements AfterViewInit {\n public readonly zChange = output<ZTableChangeEvent<T>>();\n public readonly zControl = output<ZTableControl<T>>();\n\n public readonly zConfig = input<ZTableConfig<T>>({ data: [], columns: [], mode: 'local' });\n public readonly zLoading = input(false);\n public readonly zKey = input<string>('');\n\n private readonly _destroy$ = injectDestroy();\n private readonly _zTranslate = inject(ZTranslateService);\n\n private readonly _isSyncingScroll = signal(false);\n private readonly _savedScrollLeft = signal(0);\n private _resizeObserver: ResizeObserver | null = null;\n private _settingsDebounceTimeout: ReturnType<typeof setTimeout> | null = null;\n private _filterEmitDebounceTimeout: ReturnType<typeof setTimeout> | null = null;\n\n protected readonly isLoading = computed(() => this.zConfig().loading ?? this.zLoading());\n protected readonly isProcessing = signal(false);\n protected readonly theadWrapper = viewChild<ElementRef<HTMLDivElement>>('theadWrapper');\n protected readonly tbodyContainer = viewChild<ElementRef<HTMLDivElement>>('tbodyContainer');\n protected readonly tbodyWrapper = viewChild<ElementRef<HTMLDivElement>>('tbodyWrapper');\n protected readonly tbodyScrollbar = viewChild<NgScrollbar>('tbodyWrapper');\n protected readonly tfootWrapper = viewChild<ElementRef<HTMLDivElement>>('tfootWrapper');\n protected readonly expandedRowTemplate = viewChild<TemplateRef<unknown>>('expandedRowTemplate');\n protected readonly virtualRowElements = viewChildren<ElementRef<HTMLDivElement>>('virtualRow');\n\n protected readonly columnPinning = signal<ColumnPinningState>({ left: [], right: [] });\n protected readonly columnVisibility = signal<VisibilityState>({});\n protected readonly columnOrder = signal<ColumnOrderState>([]);\n protected readonly expanded = signal<ExpandedState>({});\n protected readonly rowSelection = signal<RowSelectionState>({});\n protected readonly rowPinning = signal<RowPinningState>({ top: [], bottom: [] });\n protected readonly columnFilters = signal<ColumnFiltersState>([]);\n protected readonly globalFilter = signal<string>('');\n protected readonly pagination = signal<PaginationState>({ pageIndex: 1, pageSize: 10 });\n protected readonly sorting = signal<SortingState>([]);\n private readonly _tanstackPagination = computed(() => ({\n ...this.pagination(),\n pageIndex: Math.max(0, this.pagination().pageIndex - 1),\n }));\n\n private readonly _configPagination = computed(() => {\n const config = this.zConfig();\n if (config.mode === 'server' && config.initialState?.pagination) {\n return config.initialState.pagination;\n }\n return null;\n });\n\n protected readonly hasVerticalScroll = signal(false);\n protected readonly hasHorizontalScroll = signal(false);\n protected readonly lastRowTouchesBottom = signal(true);\n protected readonly showSettingsDrawer = signal(false);\n protected readonly showHorizontalBorder = signal(true);\n protected readonly showVerticalBorder = signal(true);\n protected readonly showHeaderFooterShadow = signal(true);\n\n protected readonly hasScrollLeft = signal(false);\n protected readonly hasScrollRight = signal(false);\n\n private readonly _columnPinVersion = signal(0);\n private readonly _dataForceUpdate = signal(0);\n\n private _columnConfigCache = new Map<string, ZTableColumnConfig<T> | undefined>();\n private _lastColumnsRef: ZTableColumnConfig<T>[] | null = null;\n\n protected readonly pinnedColumnIds = computed(() => {\n this._columnPinVersion();\n return this.columnOrder().filter(id => {\n if (id === 'expand' || id === 'select') {\n return false;\n }\n\n const column = this.table.getColumn(id);\n return column && column.getIsPinned();\n });\n });\n\n protected readonly pendingVisibleColumns = signal<string[]>([]);\n protected readonly pendingColumnOrder = signal<string[]>([]);\n protected readonly pendingShowHeaderFooterShadow = signal(true);\n\n protected readonly hasBodyRowSpan = computed(() => {\n const columns = this.zConfig().columns ?? [];\n const checkRowSpan = (col: ZTableColumnConfig<T>): boolean => {\n if (isBodyConfig(col.body) && col.body.rowSpan !== undefined) {\n return true;\n }\n\n if (col.columns?.length) {\n return col.columns.some(c => checkRowSpan(c));\n }\n\n return false;\n };\n\n return columns.some(c => checkRowSpan(c));\n });\n\n protected readonly hasSelectColumn = computed(() => {\n const columns = this.zConfig().columns ?? [];\n return columns.some(c => c.id === 'select');\n });\n\n protected readonly hasExpandColumn = computed(() => {\n const columns = this.zConfig().columns ?? [];\n return columns.some(c => c.id === 'expand');\n });\n\n protected readonly actionColumnInfo = computed<{\n columnId: string;\n config: ZTableActionColumnConfig<T>;\n width: number;\n } | null>(() => {\n const columns = this.zConfig().columns ?? [];\n\n const findActionColumn = (\n cols: ZTableColumnConfig<T>[]\n ): { columnId: string; config: ZTableActionColumnConfig<T> } | null => {\n for (const col of cols) {\n if (isBodyConfig(col.body) && col.body.actions && col.body.actions.actions?.length > 0) {\n return { columnId: col.id, config: col.body.actions };\n }\n if (col.columns?.length) {\n const found = findActionColumn(col.columns);\n if (found) {\n return found;\n }\n }\n }\n return null;\n };\n\n const actionCol = findActionColumn(columns);\n if (!actionCol) {\n return null;\n }\n\n const { config } = actionCol;\n const maxVisible = config.maxVisible ?? 3;\n const totalActions = config.actions.filter(a => !a.hidden).length;\n const visibleCount = Math.min(totalActions, maxVisible);\n const hasOverflow = totalActions > maxVisible;\n const buttonCount = hasOverflow ? visibleCount + 1 : visibleCount;\n const buttonWidth = Z_TABLE_DEFAULT_ACTION_BUTTON_WIDTH;\n const gap = 4;\n const padding = 16;\n const width = buttonCount * buttonWidth + (buttonCount - 1) * gap + padding;\n\n return {\n columnId: actionCol.columnId,\n config: actionCol.config,\n width,\n };\n });\n\n protected readonly hasActionColumn = computed(() => this.actionColumnInfo() !== null);\n protected readonly hasFiltering = computed(() => {\n const columns = this.zConfig().columns ?? [];\n const checkFilter = (col: ZTableColumnConfig<T>): boolean => {\n const filterConfig = typeof col.filter === 'boolean' ? { enabled: col.filter } : col.filter;\n if (filterConfig?.enabled) {\n return true;\n }\n\n if (col.columns?.length) {\n return col.columns.some(c => checkFilter(c));\n }\n\n return false;\n };\n return columns.some(c => checkFilter(c));\n });\n\n protected readonly hasLocalFiltering = computed(() => {\n const columns = this.zConfig().columns ?? [];\n const checkLocalFilter = (col: ZTableColumnConfig<T>): boolean => {\n const filterConfig = typeof col.filter === 'boolean' ? { enabled: col.filter } : col.filter;\n if (filterConfig?.enabled) {\n const filterMode = filterConfig.mode ?? 'local';\n if (filterMode === 'local') {\n return true;\n }\n }\n\n if (col.columns?.length) {\n return col.columns.some(c => checkLocalFilter(c));\n }\n\n return false;\n };\n return columns.some(c => checkLocalFilter(c));\n });\n\n protected readonly hasSorting = computed(() => {\n const config = this.zConfig();\n if (config.enableColumnSorting === false) {\n return false;\n }\n\n if (config.enableColumnSorting === true) {\n return true;\n }\n\n const columns = config.columns ?? [];\n const checkSorting = (col: ZTableColumnConfig<T>): boolean => {\n const sortConfig = typeof col.sort === 'boolean' ? { enabled: col.sort } : col.sort;\n if (sortConfig?.enabled) {\n return true;\n }\n\n if (col.columns?.length) {\n return col.columns.some(c => checkSorting(c));\n }\n\n return false;\n };\n return columns.some(c => checkSorting(c));\n });\n\n protected readonly hasLocalSorting = computed(() => {\n const config = this.zConfig();\n if (config.enableColumnSorting === false) {\n return false;\n }\n\n const columns = config.columns ?? [];\n const checkLocalSorting = (col: ZTableColumnConfig<T>): boolean => {\n const sortConfig = typeof col.sort === 'boolean' ? { enabled: col.sort } : col.sort;\n if (sortConfig?.enabled) {\n const sortMode = sortConfig.mode ?? 'local';\n if (sortMode === 'local') {\n return true;\n }\n }\n\n if (col.columns?.length) {\n return col.columns.some(c => checkLocalSorting(c));\n }\n\n return false;\n };\n return columns.some(c => checkLocalSorting(c));\n });\n\n protected readonly hasServerFiltering = computed(() => {\n const columns = this.zConfig().columns ?? [];\n const checkServerFilter = (col: ZTableColumnConfig<T>): boolean => {\n const filterConfig = typeof col.filter === 'boolean' ? { enabled: col.filter } : col.filter;\n if (filterConfig?.enabled) {\n const filterMode = filterConfig.mode ?? 'local';\n if (filterMode === 'server') {\n return true;\n }\n }\n\n if (col.columns?.length) {\n return col.columns.some(c => checkServerFilter(c));\n }\n\n return false;\n };\n return columns.some(c => checkServerFilter(c));\n });\n\n protected readonly hasServerSorting = computed(() => {\n const config = this.zConfig();\n if (config.enableColumnSorting === false) {\n return false;\n }\n\n const columns = config.columns ?? [];\n const checkServerSorting = (col: ZTableColumnConfig<T>): boolean => {\n const sortConfig = typeof col.sort === 'boolean' ? { enabled: col.sort } : col.sort;\n if (sortConfig?.enabled) {\n const sortMode = sortConfig.mode ?? 'local';\n if (sortMode === 'server') {\n return true;\n }\n }\n\n if (col.columns?.length) {\n return col.columns.some(c => checkServerSorting(c));\n }\n\n return false;\n };\n return columns.some(c => checkServerSorting(c));\n });\n\n protected readonly searchConfig = computed(() => {\n const { search } = this.zConfig();\n if (!search) {\n return null;\n }\n\n if (typeof search === 'boolean') {\n return search\n ? {\n enabled: true,\n placeholder: 'i18n_z_ui_table_search',\n debounceTime: 300,\n width: 'w-64',\n size: 'sm' as const,\n }\n : null;\n }\n\n return {\n enabled: search.enabled ?? true,\n placeholder: search.placeholder ?? 'i18n_z_ui_table_search',\n debounceTime: search.debounceTime ?? 300,\n width: search.width ?? 'w-64',\n size: search.size ?? ('sm' as const),\n };\n });\n\n protected readonly isSearchEnabled = computed(() => {\n const config = this.searchConfig();\n return config !== null && config.enabled;\n });\n\n private readonly _data = computed(() => {\n this._dataForceUpdate();\n return this.zConfig().data ?? [];\n });\n\n private readonly _columns = computed<ColumnDef<T>[]>(() => {\n let cols = this.zConfig().columns ?? [];\n cols = filterVisibleColumns(cols);\n if (this.hasBodyRowSpan()) {\n cols = cols.filter(c => c.id !== 'expand');\n }\n\n const hasExpandColumn = cols.some(c => c.id === 'expand');\n const hasSelectColumn = cols.some(c => c.id === 'select');\n const needsRowPinActionsColumn =\n this.zConfig().enableRowPinning && !hasExpandColumn && !hasSelectColumn && !this.hasBodyRowSpan();\n\n if (needsRowPinActionsColumn) {\n cols = [\n {\n id: 'actionRowPin',\n header: '',\n cell: '',\n size: 30,\n minSize: 30,\n maxSize: 30,\n enableResizing: false,\n enableHiding: false,\n } as ZTableColumnConfig<T>,\n ...cols,\n ];\n }\n\n return cols.map(c => {\n const colDef = columnConfigToColumnDef(c);\n if (colDef.id === 'select') {\n colDef.size = 50;\n colDef.minSize = 50;\n colDef.maxSize = 50;\n colDef.enableResizing = false;\n }\n\n if (colDef.id === 'expand' || colDef.id === 'actionRowPin') {\n colDef.size = 50;\n colDef.minSize = 50;\n colDef.maxSize = 50;\n colDef.enableResizing = false;\n }\n\n const actionInfo = this.actionColumnInfo();\n if (actionInfo && colDef.id === actionInfo.columnId) {\n const defaultWidth = actionInfo.width + 15;\n const width = c.size ?? c.minSize ?? c.maxSize ?? defaultWidth;\n\n colDef.size = width;\n colDef.minSize = width;\n colDef.maxSize = width;\n colDef.enableResizing = c.enableResizing ?? false;\n colDef.enableSorting = false;\n colDef.enablePinning = false;\n }\n\n return colDef;\n });\n });\n\n protected readonly isVirtual = computed(() => {\n const { virtual } = this.zConfig();\n if (!virtual) {\n return false;\n }\n\n if (typeof virtual === 'boolean') {\n return virtual;\n }\n\n return virtual.enabled;\n });\n\n private readonly _virtualConfig = computed<ZTableVirtualConfig>(() => {\n const { virtual } = this.zConfig();\n if (!virtual || typeof virtual === 'boolean') {\n return {\n enabled: !!virtual,\n size: Z_DEFAULT_ROW_HEIGHT,\n overscan: Z_DEFAULT_VIRTUAL_OVERSCAN,\n groupSize: Z_DEFAULT_GROUP_SIZE,\n dynamicSize: false,\n };\n }\n\n return {\n enabled: virtual.enabled,\n size: virtual.size ?? Z_DEFAULT_ROW_HEIGHT,\n overscan: virtual.overscan ?? Z_DEFAULT_VIRTUAL_OVERSCAN,\n groupSize: virtual.groupSize ?? Z_DEFAULT_GROUP_SIZE,\n dynamicSize: virtual.dynamicSize ?? false,\n };\n });\n\n protected readonly virtualRowHeight = computed(() => this._virtualConfig().size ?? Z_DEFAULT_ROW_HEIGHT);\n protected readonly dynamicSize = computed(() => this._virtualConfig().dynamicSize ?? false);\n protected readonly groupSize = computed(() => this._virtualConfig().groupSize ?? Z_DEFAULT_GROUP_SIZE);\n protected readonly groupHeight = computed(() => this.groupSize() * this.virtualRowHeight());\n private readonly _dynamicGroupsVersion = signal(0);\n\n protected readonly dynamicGroups = computed<ZVirtualGroup[]>(() => {\n if (!this.isVirtual()) {\n return [];\n }\n\n this._dynamicGroupsVersion();\n const { rows } = this.table.getRowModel();\n const rowHeight = this.virtualRowHeight();\n const isDynamic = this.dynamicSize();\n\n if (!this.hasBodyRowSpan()) {\n const size = this.groupSize();\n const groups: ZVirtualGroup[] = [];\n const totalGroups = Math.ceil(rows.length / size);\n\n for (let j = 0; j < totalGroups; j++) {\n const startIndex = j * size;\n const endIndex = Math.min(startIndex + size - 1, rows.length - 1);\n const rowCount = endIndex - startIndex + 1;\n groups.push({\n startIndex,\n endIndex,\n rowCount,\n height: isDynamic ? null : rowCount * rowHeight,\n });\n }\n return groups;\n }\n\n const groups: ZVirtualGroup[] = [];\n let i = 0;\n\n while (i < rows.length) {\n const startIndex = i;\n let maxRowSpan = 1;\n const row = rows[i];\n const cells = row.getAllCells();\n\n for (const cell of cells) {\n const columnConfig = this._findColumnConfig(cell.column.id);\n const rowSpanValue = getBodyRowSpan(columnConfig, cell.getContext());\n if (rowSpanValue && rowSpanValue > maxRowSpan) {\n maxRowSpan = rowSpanValue;\n }\n }\n\n const groupRowCount = Math.max(1, maxRowSpan);\n const endIndex = Math.min(i + groupRowCount - 1, rows.length - 1);\n const rowCount = endIndex - startIndex + 1;\n groups.push({\n startIndex,\n endIndex,\n rowCount,\n height: isDynamic ? null : rowCount * rowHeight,\n });\n\n i = endIndex + 1;\n }\n\n return groups;\n });\n\n protected readonly hasFooter = computed(() => {\n const columns = this.zConfig().columns ?? [];\n const checkFooter = (col: (typeof columns)[0]): boolean => {\n if (col.footer) {\n return true;\n }\n\n if (col.columns?.length) {\n return col.columns.some(c => checkFooter(c as (typeof columns)[0]));\n }\n\n return false;\n };\n\n return columns.some(c => checkFooter(c));\n });\n\n protected readonly isEmpty = computed(() => this.table.getRowModel().rows.length === 0);\n protected readonly isEmptyData = computed(() => this._data().length === 0);\n protected readonly isNoSearchResults = computed(() => {\n const isServerMode = this.zConfig().mode === 'server';\n const hasActiveFilter = this.globalFilter().trim() !== '' || this.columnFilters().length > 0;\n const noFilteredResults = this.isEmpty();\n\n if (isServerMode) {\n const totalCount = this.zConfig().totalCount ?? 0;\n const hasPotentialData = totalCount > 0 || hasActiveFilter;\n return hasPotentialData && noFilteredResults && hasActiveFilter;\n }\n\n const hasSourceData = this._data().length > 0;\n return hasSourceData && noFilteredResults && hasActiveFilter;\n });\n\n protected readonly orderedLeafColumns = computed(() => {\n const leftCols = this.table.getLeftLeafColumns();\n const centerCols = this.table.getCenterLeafColumns();\n const rightCols = this.table.getRightLeafColumns();\n return [...leftCols, ...centerCols, ...rightCols];\n });\n\n protected readonly orderedHeaderGroups = computed(() => {\n void this.columnPinning();\n void this.columnOrder();\n\n const leftGroups = this.table.getLeftHeaderGroups();\n const centerGroups = this.table.getCenterHeaderGroups();\n const rightGroups = this.table.getRightHeaderGroups();\n\n const maxRows = Math.max(leftGroups.length, centerGroups.length, rightGroups.length);\n const result: { id: string; headers: (typeof leftGroups)[0]['headers'] }[] = [];\n\n for (let i = 0; i < maxRows; i++) {\n const leftHeaders = leftGroups[i]?.headers ?? [];\n const centerHeaders = centerGroups[i]?.headers ?? [];\n const rightHeaders = rightGroups[i]?.headers ?? [];\n\n result.push({\n id: `row-${i}`,\n headers: [...leftHeaders, ...centerHeaders, ...rightHeaders],\n });\n }\n\n return result;\n });\n\n protected readonly orderedFooterGroups = computed(() => {\n void this.columnPinning();\n void this.columnOrder();\n\n const leftGroups = this.table.getLeftFooterGroups();\n const centerGroups = this.table.getCenterFooterGroups();\n const rightGroups = this.table.getRightFooterGroups();\n\n const maxRows = Math.max(leftGroups.length, centerGroups.length, rightGroups.length);\n const result: { id: string; depth: number; headers: (typeof leftGroups)[0]['headers'] }[] = [];\n\n for (let i = 0; i < maxRows; i++) {\n const leftHeaders = leftGroups[i]?.headers ?? [];\n const centerHeaders = centerGroups[i]?.headers ?? [];\n const rightHeaders = rightGroups[i]?.headers ?? [];\n const depth = leftGroups[i]?.depth ?? centerGroups[i]?.depth ?? rightGroups[i]?.depth ?? i;\n\n result.push({\n id: `footer-row-${i}`,\n depth,\n headers: [...leftHeaders, ...centerHeaders, ...rightHeaders],\n });\n }\n\n return result;\n });\n\n protected readonly bottomRowsReversed = computed(() => [...this.table.getBottomRows()].reverse());\n protected readonly totalWidth = computed(() => {\n const columns = this.table.getAllLeafColumns();\n return columns.reduce((sum, col) => sum + col.getSize(), 0);\n });\n\n protected readonly shouldHeaderShowShadow = computed(\n () => this.showHeaderFooterShadow() && this.table.getTopRows().length === 0\n );\n\n protected readonly shouldFooterShowShadow = computed(\n () => this.showHeaderFooterShadow() && this.table.getBottomRows().length === 0\n );\n\n protected readonly tbodyContainerHeight = signal(0);\n protected readonly skeletonRowHeight = signal<number>(Z_SKELETON_ROW_HEIGHT);\n\n protected readonly skeletonRowCount = computed(() => {\n const containerHeight = this.tbodyContainerHeight();\n const baseRowHeight = this.skeletonRowHeight();\n\n if (containerHeight > 0) {\n return Math.max(3, Math.floor(containerHeight / baseRowHeight));\n }\n\n const { minHeight } = this.zConfig();\n if (minHeight) {\n const heightValue = parseInt(minHeight, 10);\n if (!isNaN(heightValue)) {\n return Math.max(3, Math.floor(heightValue / baseRowHeight));\n }\n }\n\n return Math.min(this.pagination().pageSize || 10, 10);\n });\n\n protected readonly actualSkeletonRowHeight = computed(() => {\n const containerHeight = this.tbodyContainerHeight();\n const rowCount = this.skeletonRowCount();\n\n if (containerHeight > 0 && rowCount > 0) {\n return containerHeight / rowCount;\n }\n\n return this.skeletonRowHeight();\n });\n\n protected readonly skeletonRows = computed(() => {\n const count = this.skeletonRowCount();\n return Array.from({ length: count }, (_, i) => i);\n });\n\n protected readonly dynamicGroupRows = computed(() => {\n const rows = this.table.getRowModel().rows as Row<T>[];\n const groups = this.dynamicGroups();\n const size = this.groupSize();\n const result: Row<T>[][] = [];\n\n if (groups.length > 0) {\n for (const group of groups) {\n result.push(rows.slice(group.startIndex, group.endIndex + 1));\n }\n return result;\n }\n\n const totalGroups = Math.ceil(rows.length / size);\n for (let i = 0; i < totalGroups; i++) {\n const startIndex = i * size;\n const endIndex = Math.min(startIndex + size, rows.length);\n result.push(rows.slice(startIndex, endIndex));\n }\n\n return result;\n });\n\n protected readonly dynamicGroupHeights = computed(() => {\n const groups = this.dynamicGroups();\n const rowHeight = this.virtualRowHeight();\n const defaultHeight = this.groupSize() * rowHeight;\n const isDynamic = this.dynamicSize();\n\n if (groups.length > 0) {\n return groups.map(group => (isDynamic ? null : (group.height ?? defaultHeight)));\n }\n\n const rows = this.table.getRowModel().rows as Row<T>[];\n const size = this.groupSize();\n const totalGroups = Math.ceil(rows.length / size);\n return Array(totalGroups).fill(isDynamic ? null : defaultHeight);\n });\n\n protected readonly columnSizing = computed(() => this.table.getState().columnSizing);\n protected readonly columnSizingInfo = computed(() => this.table.getState().columnSizingInfo);\n\n protected readonly columnSizeVars = computed(() => {\n void this.columnSizing();\n void this.columnSizingInfo();\n void this.columnOrder();\n void this.columnVisibility();\n void this.columnPinning();\n void this._columns();\n\n const headers = untracked(() => this.table.getFlatHeaders());\n const colSizes: Record<string, number> = {};\n\n for (const header of headers) {\n colSizes[`--header-${header.id}-size`] = header.getSize();\n colSizes[`--col-${header.column.id}-size`] = header.column.getSize();\n }\n\n return colSizes;\n });\n\n protected readonly table = createAngularTable<T>(() => {\n const config = this.zConfig();\n const isServerMode = config.mode === 'server';\n const pageSize = this.pagination().pageSize || 10;\n const pageCount = isServerMode && config.totalRows ? Math.ceil(config.totalRows / pageSize) : undefined;\n\n const hasAnyLocalFiltering = this.hasLocalFiltering();\n const hasAnyLocalSorting = this.hasLocalSorting();\n const shouldEnableLocalFiltering = !isServerMode || hasAnyLocalFiltering;\n const shouldEnableLocalSorting = !isServerMode || hasAnyLocalSorting;\n\n return {\n data: this._data(),\n columns: this._columns(),\n getCoreRowModel: getCoreRowModel(),\n getExpandedRowModel: this.hasExpandColumn() ? getExpandedRowModel() : undefined,\n getFilteredRowModel: shouldEnableLocalFiltering && this.hasFiltering() ? getFilteredRowModel() : undefined,\n getSortedRowModel: shouldEnableLocalSorting && this.hasSorting() ? getSortedRowModel() : undefined,\n getPaginationRowModel: !isServerMode && config.pagination?.enabled ? getPaginationRowModel() : undefined,\n getFacetedRowModel: shouldEnableLocalFiltering && this.hasFiltering() ? getFacetedRowModel() : undefined,\n getFacetedUniqueValues: shouldEnableLocalFiltering && this.hasFiltering() ? getFacetedUniqueValues() : undefined,\n getFacetedMinMaxValues: shouldEnableLocalFiltering && this.hasFiltering() ? getFacetedMinMaxValues() : undefined,\n manualFiltering: isServerMode && !hasAnyLocalFiltering,\n manualSorting: isServerMode && !hasAnyLocalSorting,\n manualPagination: isServerMode,\n pageCount: pageCount,\n columnResizeMode: 'onChange',\n enableRowSelection: this.hasSelectColumn(),\n enableSubRowSelection: this.hasSelectColumn() && !!config.getSubRows,\n enableRowPinning: config.enableRowPinning ?? false,\n enableMultiSort: config.enableMultiSort ?? false,\n keepPinnedRows: true,\n getRowId: config.getRowId\n ? (originalRow: T, index: number, parent?: Row<T>) =>\n config.getRowId?.(originalRow, index, parent?.original, this._data()) ?? `${index}`\n : (_row: T, index: number) => `${index}`,\n getSubRows: config.getSubRows\n ? (originalRow: T, index: number) => config.getSubRows?.(originalRow, index, undefined, this._data())\n : undefined,\n getRowCanExpand: config.getRowCanExpand ?? (() => true),\n state: {\n columnPinning: this.columnPinning(),\n columnVisibility: this.columnVisibility(),\n columnOrder: this.columnOrder(),\n expanded: this.expanded(),\n rowSelection: this.rowSelection(),\n rowPinning: this.rowPinning(),\n columnFilters: this.columnFilters(),\n globalFilter: this.globalFilter(),\n pagination: this._tanstackPagination(),\n sorting: this.sorting(),\n },\n onColumnPinningChange: updater => {\n const newState = typeof updater === 'function' ? updater(this.columnPinning()) : updater;\n this.columnPinning.set(newState);\n },\n onColumnVisibilityChange: updater => {\n const newState = typeof updater === 'function' ? updater(this.columnVisibility()) : updater;\n this.columnVisibility.set(newState);\n },\n onColumnOrderChange: updater => {\n const newState = typeof updater === 'function' ? updater(this.columnOrder()) : updater;\n this.columnOrder.set(newState);\n },\n onExpandedChange: updater => {\n const newState = typeof updater === 'function' ? updater(this.expanded()) : updater;\n this.expanded.set(newState);\n this.zChange.emit({\n type: 'expand',\n data: { expanded: newState },\n });\n },\n onRowSelectionChange: updater => {\n const currentState = this.rowSelection();\n const newState = typeof updater === 'function' ? updater(currentState) : updater;\n this._handleRowSelectionWithParents(newState);\n },\n onColumnFiltersChange: updater => {\n const oldState = this.columnFilters();\n const newState = typeof updater === 'function' ? updater(oldState) : updater;\n\n const changedColumnIds = this._getChangedFilterColumnIds(oldState, newState);\n const hasAnyLocalChange = changedColumnIds.some(id => this._isColumnFilterModeLocal(id));\n const hasAnyServerChange = changedColumnIds.some(id => !this._isColumnFilterModeLocal(id));\n const serverModeFilters = this._filterServerModeColumnFilters(newState);\n\n this.columnFilters.set(newState);\n\n if (hasAnyLocalChange) {\n this._runAsyncStateUpdate(() => {\n this.pagination.update(p => ({ ...p, pageIndex: 1 }));\n }, true);\n }\n\n if (hasAnyServerChange) {\n this.zChange.emit({\n type: 'filter',\n data: { filters: serverModeFilters, search: this.globalFilter() },\n });\n }\n },\n onGlobalFilterChange: updater => {\n const newState = typeof updater === 'function' ? updater(this.globalFilter()) : updater;\n const hasLocalFilter = this.hasLocalFiltering();\n const serverModeFilters = this._filterServerModeColumnFilters(this.columnFilters());\n\n this._runAsyncStateUpdate(() => {\n this.globalFilter.set(newState);\n if (hasLocalFilter) {\n this.pagination.update(p => ({ ...p, pageIndex: 1 }));\n }\n if (serverModeFilters.length > 0 || this.hasServerFiltering()) {\n this._emitFilterChangeDebounced(serverModeFilters, newState);\n }\n }, hasLocalFilter);\n },\n onPaginationChange: updater => {\n const newState = typeof updater === 'function' ? updater(this._tanstackPagination()) : updater;\n const adjustedState = { ...newState, pageIndex: newState.pageIndex + 1 };\n this.pagination.set(adjustedState);\n this.zChange.emit({\n type: 'page',\n data: { pageIndex: adjustedState.pageIndex, pageSize: adjustedState.pageSize, emitType: 'auto' },\n });\n },\n onSortingChange: updater => {\n const oldState = this.sorting();\n const newState = typeof updater === 'function' ? updater(oldState) : updater;\n\n const changedColumnIds = this._getChangedSortColumnIds(oldState, newState);\n const hasAnyLocalChange = changedColumnIds.some(id => this._isColumnSortModeLocal(id));\n const hasAnyServerChange = changedColumnIds.some(id => !this._isColumnSortModeLocal(id));\n const serverModeSorting = this._filterServerModeSorting(newState);\n\n this.sorting.set(newState);\n\n if (hasAnyLocalChange) {\n this._runAsyncStateUpdate(() => {\n this.pagination.update(p => ({ ...p, pageIndex: 1 }));\n }, true);\n }\n\n if (hasAnyServerChange) {\n this.zChange.emit({ type: 'sort', data: { sorting: serverModeSorting } });\n }\n },\n onRowPinningChange: updater => {\n const newState = typeof updater === 'function' ? updater(this.rowPinning()) : updater;\n this.rowPinning.set(newState);\n },\n meta: {\n updateData: (rowIndex: number, columnId: string, value: unknown) => {\n const row = this.table.getRowModel().rows[rowIndex];\n if (row) {\n this.zChange.emit({\n type: 'cellClick',\n data: {\n row: row.original,\n rowId: row.id,\n columnId,\n value,\n },\n });\n }\n },\n },\n debugTable: false,\n };\n }) as ReturnType<typeof createAngularTable<T>>;\n\n private readonly _virtualGroupCount = computed(() => {\n if (!this.isVirtual()) {\n return 0;\n }\n\n const totalRows = untracked(() => this.table.getRowModel().rows.length);\n return Math.ceil(totalRows / this.groupSize());\n });\n\n protected readonly virtualizer = injectVirtualizer(() => {\n const groups = this.dynamicGroups();\n const rowHeight = this.virtualRowHeight();\n const groupSize = this.groupSize();\n const scrollElement = this.tbodyWrapper()?.nativeElement;\n\n return {\n scrollElement,\n count: groups.length > 0 ? groups.length : this._virtualGroupCount(),\n estimateSize: (index: number) => {\n if (groups.length > 0 && groups[index]) {\n const groupHeight = groups[index].height;\n if (groupHeight !== null) {\n return groupHeight;\n }\n return groups[index].rowCount * rowHeight;\n }\n return groupSize * rowHeight;\n },\n measureElement: (element: Element) => element.getBoundingClientRect().height,\n overscan: this._virtualConfig().overscan ?? Z_DEFAULT_VIRTUAL_OVERSCAN,\n };\n });\n\n private readonly _measureVirtualItems = effect(() => {\n if (!this.dynamicSize()) {\n return;\n }\n\n const elements = this.virtualRowElements();\n for (const el of elements) {\n this.virtualizer.measureElement(el.nativeElement);\n }\n });\n\n constructor() {\n explicitEffect([this._zTranslate.currentLang], () => {\n this._dataForceUpdate.update(v => v + 1);\n });\n\n explicitEffect([this.zKey, this.zConfig], ([key, cfg]) => {\n if (!cfg.columns || cfg.columns.length === 0) {\n return;\n }\n\n const cacheLoaded = key ? this._loadConfigCache(key) : false;\n const initial = cfg.initialState;\n if (initial) {\n if (!cacheLoaded) {\n if (initial.columnPinning) {\n this.columnPinning.set(initial.columnPinning);\n }\n if (initial.columnVisibility) {\n this.columnVisibility.set(initial.columnVisibility);\n }\n }\n\n if (initial.sorting) {\n this.sorting.set(initial.sorting);\n }\n if (initial.columnFilters) {\n this.columnFilters.set(initial.columnFilters);\n }\n if (initial.globalFilter) {\n this.globalFilter.set(initial.globalFilter);\n }\n if (initial.expanded) {\n this.expanded.set(initial.expanded);\n }\n if (initial.rowSelection) {\n this.rowSelection.set(initial.rowSelection);\n }\n if (initial.rowPinning) {\n this.rowPinning.set(initial.rowPinning);\n }\n if (initial.pagination) {\n this.pagination.set(initial.pagination);\n }\n }\n\n if (!cacheLoaded) {\n this.showHeaderFooterShadow.set(cfg.showHeaderShadow ?? cfg.showFooterShadow ?? true);\n if (typeof cfg.showHorizontalBorder === 'boolean') {\n this.showHorizontalBorder.set(cfg.showHorizontalBorder);\n }\n if (typeof cfg.showVerticalBorder === 'boolean') {\n this.showVerticalBorder.set(cfg.showVerticalBorder);\n }\n }\n\n const cols = cfg.columns ?? [];\n const leftPinned: string[] = [...(initial?.columnPinning?.left ?? [])];\n const rightPinned: string[] = [...(initial?.columnPinning?.right ?? [])];\n\n const collectPinnedColumns = (columns: typeof cols): void => {\n for (const col of columns) {\n if (col.pinned === 'left' && !leftPinned.includes(col.id)) {\n leftPinned.push(col.id);\n }\n if (col.pinned === 'right' && !rightPinned.includes(col.id)) {\n rightPinned.push(col.id);\n }\n if (col.columns) {\n collectPinnedColumns(col.columns);\n }\n }\n };\n\n collectPinnedColumns(cols);\n if (!cacheLoaded && (leftPinned.length > 0 || rightPinned.length > 0)) {\n this.columnPinning.set({ left: leftPinned, right: rightPinned });\n }\n });\n\n explicitEffect([this.zConfig], ([cfg]) => {\n if (cfg.enableRowPinning && !this.hasBodyRowSpan()) {\n const cols = cfg.columns ?? [];\n const hasSelect = cols.some(c => c.id === 'select');\n const hasExpand = cols.some(c => c.id === 'expand');\n const currentPinning = this.columnPinning();\n const leftPinned = [...(currentPinning.left || [])];\n if (hasSelect && !leftPinned.includes('select')) {\n leftPinned.unshift('select');\n this.columnPinning.set({ ...currentPinning, left: leftPinned });\n }\n\n if (!hasSelect && !hasExpand && !leftPinned.includes('actions')) {\n leftPinned.unshift('actions');\n this.columnPinning.set({ ...currentPinning, left: leftPinned });\n }\n }\n });\n\n afterNextRender(() => {\n const containerEl = this.tbodyContainer()?.nativeElement;\n if (containerEl && !this._resizeObserver) {\n this._resizeObserver = new ResizeObserver(entries => {\n for (const entry of entries) {\n this.tbodyContainerHeight.set(entry.contentRect.height);\n }\n this._checkVerticalScroll();\n this._checkHorizontalScroll();\n });\n\n this._resizeObserver.observe(containerEl);\n this.tbodyContainerHeight.set(containerEl.clientHeight);\n\n this._destroy$.subscribe(() => {\n if (this._resizeObserver) {\n this._resizeObserver.disconnect();\n this._resizeObserver = null;\n }\n });\n }\n });\n\n explicitEffect([this._configPagination], ([configPagination]) => {\n if (configPagination) {\n this.pagination.set(configPagination);\n }\n });\n\n explicitEffect([this.columnFilters, this.globalFilter, this.pagination, this.sorting, this._data], () => {\n if (this.isVirtual()) {\n const wrapperEl = this.tbodyWrapper()?.nativeElement;\n if (wrapperEl) {\n wrapperEl.scrollTop = 0;\n }\n\n this.virtualizer.scrollToOffset(0);\n }\n\n queueMicrotask(() => {\n this._checkVerticalScroll();\n this._checkHorizontalScroll();\n if (this.isVirtual()) {\n this._dynamicGroupsVersion.update(v => v + 1);\n }\n });\n });\n\n explicitEffect([this.virtualizer.getVirtualItems], () => {\n if (!this.isVirtual()) {\n return;\n }\n\n queueMicrotask(() => {\n this._checkLastRowTouchesBottom();\n });\n });\n\n explicitEffect([this.isLoading, this.isProcessing], () => {\n const loading = this.isLoading();\n const processing = this.isProcessing();\n\n if (loading || processing) {\n const wrapperEl = this.tbodyWrapper()?.nativeElement;\n if (wrapperEl) {\n this._savedScrollLeft.set(wrapperEl.scrollLeft);\n }\n\n return;\n }\n\n queueMicrotask(() => {\n const wrapperEl = this.tbodyWrapper()?.nativeElement;\n if (wrapperEl) {\n wrapperEl.scrollTop = 0;\n wrapperEl.scrollLeft = this._savedScrollLeft();\n }\n\n this._checkScrollState();\n });\n });\n\n explicitEffect(\n [\n this.columnOrder,\n this.columnSizing,\n this.columnPinning,\n this.columnVisibility,\n this.showHeaderFooterShadow,\n this.showHorizontalBorder,\n this.showVerticalBorder,\n ],\n () => {\n this._saveConfig();\n },\n { defer: true }\n );\n }\n\n ngAfterViewInit(): void {\n queueMicrotask(() => this._checkScrollState());\n this.zControl.emit({\n updateConfig: (config: Partial<ZTableConfig<T>>) => {\n const current = this.zConfig();\n Object.assign(current, config);\n },\n toggleSettings: () => {\n this.showSettingsDrawer.set(!this.showSettingsDrawer());\n },\n resetFilters: () => {\n this.columnFilters.set([]);\n this.globalFilter.set('');\n },\n resetSorting: () => {\n this.sorting.set([]);\n },\n addItem: (item: T) => {\n const current = this.zConfig();\n current.data = [...current.data, item];\n this._dataForceUpdate.update(v => v + 1);\n },\n updateItem: (id: string | number, updates: Partial<T>, fieldKey?: keyof T) => {\n const current = this.zConfig();\n current.data = current.data.map((row, index) => {\n const rowId = fieldKey\n ? (row[fieldKey] as string | number)\n : current.getRowId\n ? current.getRowId(row, index, undefined, current.data)\n : ((row as Record<string, unknown>)['id'] as string | number);\n\n return rowId === id ? { ...row, ...updates } : row;\n });\n this._dataForceUpdate.update(v => v + 1);\n },\n deleteItem: (id: string | number, fieldKey?: keyof T) => {\n const current = this.zConfig();\n current.data = current.data.filter((row, index) => {\n const rowId = fieldKey\n ? (row[fieldKey] as string | number)\n : current.getRowId\n ? current.getRowId(row, index, undefined, current.data)\n : ((row as Record<string, unknown>)['id'] as string | number);\n\n return rowId !== id;\n });\n this._dataForceUpdate.update(v => v + 1);\n },\n getItems: () => this.zConfig().data,\n });\n }\n\n private _handleRowSelectionWithParents(newState: RowSelectionState): void {\n const stateRecord = newState as Record<string, boolean>;\n const finalState: Record<string, boolean> = { ...stateRecord };\n\n const allRows = this.table.getRowModel().rows;\n allRows.forEach(row => {\n if (!row.subRows || row.subRows.length === 0) {\n return;\n }\n\n const allChildrenSelected = row.subRows.every(child => finalState[child.id] === true);\n if (allChildrenSelected) {\n finalState[row.id] = true;\n return;\n }\n\n const someChildrenSelected = row.subRows.some(child => finalState[child.id] === true);\n if (!someChildrenSelected) {\n delete finalState[row.id];\n }\n });\n\n this.rowSelection.set(finalState as RowSelectionState);\n this.zChange.emit({\n type: 'select',\n data: { selection: finalState as RowSelectionState },\n });\n }\n\n private _runAsyncStateUpdate(updateFn: () => void, forceLocal = false): void {\n const isServerMode = this.zConfig().mode === 'server';\n const hasLocalFiltering = this.hasLocalFiltering();\n const hasLocalSorting = this.hasLocalSorting();\n const shouldRunAsync = !isServerMode || forceLocal || hasLocalFiltering || hasLocalSorting;\n\n if (!shouldRunAsync) {\n updateFn();\n return;\n }\n\n this.isProcessing.set(true);\n setTimeout(() => {\n updateFn();\n this.isProcessing.set(false);\n }, this.zConfig().debounceTime ?? Z_DEFAULT_DEBOUNCE_TIME);\n }\n\n private _emitFilterChangeDebounced(filters: ColumnFiltersState, search: string): void {\n if (this._filterEmitDebounceTimeout) {\n clearTimeout(this._filterEmitDebounceTimeout);\n }\n\n this._filterEmitDebounceTimeout = setTimeout(() => {\n this.zChange.emit({\n type: 'filter',\n data: { filters, search },\n });\n }, 300);\n }\n\n private _checkScrollState(): void {\n this._checkVerticalScroll();\n this._checkHorizontalScroll();\n }\n\n private _checkVerticalScroll(): void {\n const tbodyWrapperEl = this.tbodyWrapper()?.nativeElement;\n if (tbodyWrapperEl) {\n const hasScroll = tbodyWrapperEl.scrollHeight > tbodyWrapperEl.clientHeight;\n this.hasVerticalScroll.set(hasScroll);\n this._checkLastRowTouchesBottom();\n }\n }\n\n private _checkLastRowTouchesBottom(): void {\n const tbodyWrapperEl = this.tbodyWrapper()?.nativeElement;\n if (!tbodyWrapperEl) {\n return;\n }\n\n const hasScroll = tbodyWrapperEl.scrollHeight > tbodyWrapperEl.clientHeight;\n if (hasScroll) {\n this.lastRowTouchesBottom.set(true);\n return;\n }\n\n if (this.isVirtual()) {\n const virtualScrollInner = tbodyWrapperEl.querySelector('.z-virtual-scroll-inner');\n if (!virtualScrollInner) {\n this.lastRowTouchesBottom.set(true);\n return;\n }\n\n const virtualRows = virtualScrollInner.querySelectorAll('.z-virtual-row');\n if (virtualRows.length === 0) {\n this.lastRowTouchesBottom.set(true);\n return;\n }\n\n const lastVirtualRow = virtualRows[virtualRows.length - 1];\n const lastTr = lastVirtualRow.querySelector('tbody tr:last-child');\n if (!lastTr) {\n this.lastRowTouchesBottom.set(true);\n return;\n }\n\n const wrapperRect = tbodyWrapperEl.getBoundingClientRect();\n const rowRect = lastTr.getBoundingClientRect();\n const gap = wrapperRect.bottom - rowRect.bottom;\n this.lastRowTouchesBottom.set(gap <= 2);\n return;\n }\n\n const tbody = tbodyWrapperEl.querySelector('tbody');\n if (!tbody) {\n this.lastRowTouchesBottom.set(true);\n return;\n }\n\n const lastRow = tbody.querySelector('tr:last-child');\n if (!lastRow) {\n this.lastRowTouchesBottom.set(true);\n return;\n }\n\n const wrapperRect = tbodyWrapperEl.getBoundingClientRect();\n const rowRect = lastRow.getBoundingClientRect();\n const gap = wrapperRect.bottom - rowRect.bottom;\n this.lastRowTouchesBottom.set(gap <= 2);\n }\n\n private _checkHorizontalScroll(): void {\n const containerEl = this.tbodyContainer()?.nativeElement;\n if (containerEl) {\n const tableWidth = this.table.getTotalSize();\n const containerWidth = containerEl.clientWidth;\n const hasScroll = tableWidth > containerWidth;\n this.hasHorizontalScroll.set(hasScroll);\n\n const scrollableEl = this.tbodyWrapper()?.nativeElement;\n if (scrollableEl) {\n this._updateScrollShadowState(scrollableEl);\n }\n }\n }\n\n private _updateScrollShadowState(element: HTMLElement): void {\n const { scrollLeft, scrollWidth, clientWidth } = element;\n const hasScrollLeft = scrollLeft > 0;\n\n const hasRightPinned = this.hasRightPinnedColumns();\n const isAtEnd = scrollLeft + clientWidth >= scrollWidth - 1;\n const hasScrollRight = hasRightPinned && !isAtEnd;\n\n this.hasScrollLeft.set(hasScrollLeft);\n this.hasScrollRight.set(hasScrollRight);\n }\n\n public hasRightPinnedColumns(): boolean {\n return this.table.getRightLeafColumns().length > 0;\n }\n\n public onTbodyScroll(event: Event): void {\n if (this._isSyncingScroll()) {\n return;\n }\n const target = event.target as HTMLElement;\n this._syncScrollLeft(target.scrollLeft);\n this._updateScrollShadowState(target);\n }\n\n private _syncScrollLeft(scrollLeft: number): void {\n untracked(() => {\n this._isSyncingScroll.set(true);\n });\n const thead = this.theadWrapper()?.nativeElement;\n const tbody = this.tbodyWrapper()?.nativeElement;\n const tfoot = this.tfootWrapper()?.nativeElement;\n\n if (thead) {\n thead.scrollLeft = scrollLeft;\n }\n if (tbody) {\n tbody.scrollLeft = scrollLeft;\n }\n if (tfoot) {\n tfoot.scrollLeft = scrollLeft;\n }\n\n untracked(() => {\n this._isSyncingScroll.set(false);\n });\n }\n\n public handleSort(event: Event, handler?: (event: unknown) => void): void {\n event.preventDefault();\n if (this.zConfig().enableMultiSort) {\n const multiSortEvent = new MouseEvent('click', { shiftKey: true });\n handler?.(multiSortEvent);\n return;\n }\n\n handler?.(event);\n }\n\n public onColumnDrop(event: CdkDragDrop<string[]>): void {\n const allColumns = this.table.getAllLeafColumns();\n const columnIds = allColumns.filter(c => c.id !== 'select' && c.id !== 'expand').map(c => c.id);\n moveItemInArray(columnIds, event.previousIndex, event.currentIndex);\n const finalOrder = ['select', 'expand', ...columnIds];\n this.table.setColumnOrder(finalOrder);\n }\n\n public onToggleAllColumns(): void {\n this.table.toggleAllColumnsVisible();\n }\n\n public onPageChange(event: { pageIndex: number; pageSize: number }, emitType: 'user' | 'auto' = 'user'): void {\n if (emitType === 'user') {\n this.isProcessing.set(true);\n this._runAsyncStateUpdate(() => {\n this.pagination.set({ pageIndex: event.pageIndex, pageSize: event.pageSize });\n this.isProcessing.set(false);\n\n this.zChange.emit({\n type: 'page',\n data: { ...event, emitType },\n });\n });\n\n return;\n }\n\n this.pagination.set({ pageIndex: event.pageIndex, pageSize: event.pageSize });\n this.zChange.emit({\n type: 'page',\n data: { ...event, emitType },\n });\n }\n\n public onSearchChange(value: string | number | null): void {\n const searchValue = value === null ? '' : String(value);\n this.globalFilter.set(searchValue);\n this._runAsyncStateUpdate(() => {\n this.zChange.emit({\n type: 'search' as const,\n data: {\n search: searchValue,\n filters: this.columnFilters(),\n sorting: this.sorting(),\n pagination: this.pagination(),\n },\n });\n\n this._checkVerticalScroll();\n this._checkHorizontalScroll();\n });\n }\n\n public toggleHeaderFooterShadow(): void {\n this.showHeaderFooterShadow.update(v => !v);\n }\n\n public onActionClick(event: ZTableActionClickEvent<T>): void {\n this.zChange.emit({\n type: 'action',\n data: event,\n });\n }\n\n public onCellClick(row: Row<T>, columnId: string, value: unknown): void {\n this.zChange.emit({\n type: 'cellClick',\n data: {\n row: row.original,\n rowId: row.id,\n columnId,\n value,\n },\n });\n }\n\n public onCellEdit(event: ZTableEditCellChangeEvent<T>): void {\n this.zChange.emit({\n type: 'cellEdit',\n data: {\n row: event.row,\n rowId: event.rowId,\n rowIndex: event.rowIndex,\n columnId: event.columnId,\n oldValue: event.oldValue,\n newValue: event.newValue,\n },\n });\n }\n\n public openSettingsDrawer(): void {\n if (this.columnOrder().length === 0) {\n this.columnOrder.set(this.table.getAllLeafColumns().map(col => col.id));\n }\n\n this.pendingVisibleColumns.set(\n this.table\n .getAllLeafColumns()\n .filter(col => col.getIsVisible())\n .map(col => col.id)\n );\n\n this.pendingColumnOrder.set(this.columnOrder());\n this.pendingShowHeaderFooterShadow.set(this.showHeaderFooterShadow());\n this.showSettingsDrawer.set(true);\n }\n\n public onPendingColumnDrop(event: CdkDragDrop<string[]>): void {\n const fullOrder = this.columnOrder();\n const unpinnedColumns = fullOrder.filter(id => {\n if (id === 'expand' || id === 'select') {\n return false;\n }\n\n const column = this.table.getColumn(id);\n return !column?.getIsPinned();\n });\n\n const movedItem = unpinnedColumns[event.previousIndex];\n unpinnedColumns.splice(event.previousIndex, 1);\n unpinnedColumns.splice(event.currentIndex, 0, movedItem);\n\n const expandSelect = fullOrder.filter(id => id === 'expand' || id === 'select');\n const pinnedLeft = fullOrder.filter(id => {\n const col = this.table.getColumn(id);\n return col?.getIsPinned() === 'left' && id !== 'expand' && id !== 'select';\n });\n const pinnedRight = fullOrder.filter(id => {\n const col = this.table.getColumn(id);\n return col?.getIsPinned() === 'right';\n });\n\n const newOrder = [...expandSelect, ...pinnedLeft, ...unpinnedColumns, ...pinnedRight];\n this.columnOrder.set(newOrder);\n }\n\n public onVisibleColumnsChange(values: (string | number)[]): void {\n if (values.length >= 2) {\n this.pendingVisibleColumns.set(values.map(v => String(v)));\n }\n }\n\n public onToggleColumnVisibility(columnId: string): void {\n const currentVisibility = this.columnVisibility();\n const isVisible = currentVisibility[columnId] !== false;\n\n const allColumnIds = this.columnOrder().filter(id => id !== 'expand' && id !== 'select');\n const visibleCount = allColumnIds.filter(id => currentVisibility[id] !== false).length;\n\n if (isVisible) {\n if (visibleCount <= 2) {\n return;\n }\n }\n\n if (this._settingsDebounceTimeout) {\n clearTimeout(this._settingsDebounceTimeout);\n }\n\n this._settingsDebounceTimeout = setTimeout(() => {\n this.columnVisibility.set({ ...this.columnVisibility(), [columnId]: !isVisible });\n }, 100);\n }\n\n public onToggleColumnPin(columnId: string, position: 'left' | 'right'): void {\n const column = this.table.getColumn(columnId);\n if (!column) {\n return;\n }\n\n const currentPin = column.getIsPinned();\n const newPosition = currentPin === position ? false : position;\n\n if (this._settingsDebounceTimeout) {\n clearTimeout(this._settingsDebounceTimeout);\n }\n this._settingsDebounceTimeout = setTimeout(() => {\n column.pin(newPosition);\n\n if (newPosition) {\n const columnConfig = this._findColumnConfig(columnId);\n if (columnConfig) {\n const colSpan = getHeaderColSpan(columnConfig);\n if (colSpan && colSpan > 1) {\n const allColumns = this.table.getAllLeafColumns();\n const currentIdx = allColumns.findIndex(c => c.id === columnId);\n if (currentIdx !== -1) {\n for (let i = 1; i < colSpan && currentIdx + i < allColumns.length; i++) {\n const coveredColumn = allColumns[currentIdx + i];\n coveredColumn.pin(newPosition);\n }\n }\n }\n }\n }\n\n this._columnPinVersion.update(v => v + 1);\n this._checkHorizontalScroll();\n }, 100);\n }\n\n public handleColumnPin(columnId: string, position: 'left' | 'right' | false): void {\n const column = this.table.getColumn(columnId);\n if (!column) {\n return;\n }\n\n column.pin(position);\n if (position) {\n const columnConfig = this._findColumnConfig(columnId);\n if (columnConfig) {\n const colSpan = getHeaderColSpan(columnConfig);\n if (colSpan && colSpan > 1) {\n const allColumns = this.table.getAllLeafColumns();\n const currentIdx = allColumns.findIndex(c => c.id === columnId);\n if (currentIdx !== -1) {\n for (let i = 1; i < colSpan && currentIdx + i < allColumns.length; i++) {\n const coveredColumn = allColumns[currentIdx + i];\n coveredColumn.pin(position);\n }\n }\n }\n }\n }\n\n this._columnPinVersion.update(v => v + 1);\n this._checkHorizontalScroll();\n }\n\n public moveColumnLeft(columnId: string): void {\n const currentOrder = this.columnOrder();\n if (currentOrder.length === 0) {\n this.columnOrder.set(this.table.getAllLeafColumns().map(col => col.id));\n }\n\n const order = [...this.columnOrder()];\n const currentIndex = order.indexOf(columnId);\n\n if (currentIndex <= 0) {\n return;\n }\n\n const prevIndex = currentIndex - 1;\n if (order[prevIndex] === 'select' || order[prevIndex] === 'expand' || order[prevIndex] === 'actions') {\n return;\n }\n\n [order[currentIndex], order[prevIndex]] = [order[prevIndex], order[currentIndex]];\n this.columnOrder.set(order);\n }\n\n public moveColumnRight(columnId: string): void {\n const currentOrder = this.columnOrder();\n if (currentOrder.length === 0) {\n this.columnOrder.set(this.table.getAllLeafColumns().map(col => col.id));\n }\n\n const order = [...this.columnOrder()];\n const currentIndex = order.indexOf(columnId);\n\n if (currentIndex < 0 || currentIndex >= order.length - 1) {\n return;\n }\n\n [order[currentIndex], order[currentIndex + 1]] = [order[currentIndex + 1], order[currentIndex]];\n this.columnOrder.set(order);\n }\n\n public isFirstMovableColumn(columnId: string): boolean {\n const order =\n this.columnOrder().length > 0 ? this.columnOrder() : this.table.getAllLeafColumns().map(col => col.id);\n const movableColumns = order.filter(id => id !== 'select' && id !== 'expand' && id !== 'actions');\n return movableColumns.length > 0 && movableColumns[0] === columnId;\n }\n\n public isLastMovableColumn(columnId: string): boolean {\n const order =\n this.columnOrder().length > 0 ? this.columnOrder() : this.table.getAllLeafColumns().map(col => col.id);\n const movableColumns = order.filter(id => id !== 'select' && id !== 'expand' && id !== 'actions');\n return movableColumns.length > 0 && movableColumns[movableColumns.length - 1] === columnId;\n }\n\n private _saveConfig(): void {\n const key = this.zKey();\n if (!key) {\n return;\n }\n\n const columnInfo = this._collectColumnInfo();\n const config: ZTableSavedConfig = {\n columnOrder: this.columnOrder(),\n columnSizing: this.columnSizing(),\n columnPinning: {\n left: this.columnPinning().left,\n right: this.columnPinning().right,\n },\n columnVisibility: this.columnVisibility(),\n columnInfo,\n showHeaderFooterShadow: this.showHeaderFooterShadow(),\n showHorizontalBorder: this.showHorizontalBorder(),\n showVerticalBorder: this.showVerticalBorder(),\n };\n\n try {\n ZCacheService.set(`table-config-${key}`, config);\n } catch (error) {\n console.error('Failed to save table config:', error);\n }\n }\n\n private _collectColumnInfo(): ZTableSavedColumnInfo[] {\n const columns = this.zConfig().columns ?? [];\n const result: ZTableSavedColumnInfo[] = [];\n const collect = (cols: ZTableColumnConfig<T>[]): void => {\n for (const col of cols) {\n result.push({\n id: col.id,\n accessorKey: col.accessorKey,\n });\n if (col.columns) {\n collect(col.columns);\n }\n }\n };\n\n collect(columns);\n return result;\n }\n\n private _loadConfigCache(key: string): boolean {\n if (!key) {\n return false;\n }\n\n try {\n const config = ZCacheService.get<ZTableSavedConfig>(`table-config-${key}`);\n if (!config) {\n return false;\n }\n\n if (!this._isColumnConfigValid(config.columnInfo)) {\n ZCacheService.delete(`table-config-${key}`);\n return false;\n }\n\n if (config.columnOrder && config.columnOrder.length > 0) {\n this.columnOrder.set(config.columnOrder);\n }\n\n if (config.columnPinning) {\n this.columnPinning.set(config.columnPinning);\n }\n\n if (config.columnVisibility) {\n this.columnVisibility.set(config.columnVisibility);\n }\n\n if (typeof config.showHeaderFooterShadow === 'boolean') {\n this.showHeaderFooterShadow.set(config.showHeaderFooterShadow);\n }\n\n if (typeof config.showHorizontalBorder === 'boolean') {\n this.showHorizontalBorder.set(config.showHorizontalBorder);\n }\n\n if (typeof config.showVerticalBorder === 'boolean') {\n this.showVerticalBorder.set(config.showVerticalBorder);\n }\n\n if (config.columnSizing) {\n this.table.setColumnSizing(config.columnSizing!);\n }\n\n return true;\n } catch (error) {\n console.error('Failed to load table config:', error);\n return false;\n }\n }\n\n private _isColumnConfigValid(cachedColumnInfo?: ZTableSavedColumnInfo[]): boolean {\n if (!cachedColumnInfo || cachedColumnInfo.length === 0) {\n return true;\n }\n\n const currentColumnMap = new Map<string, string | undefined>();\n const columns = this.zConfig().columns ?? [];\n\n const collectColumns = (cols: ZTableColumnConfig<T>[]): void => {\n for (const col of cols) {\n currentColumnMap.set(col.id, col.accessorKey);\n if (col.columns) {\n collectColumns(col.columns);\n }\n }\n };\n\n collectColumns(columns);\n for (const cached of cachedColumnInfo) {\n if (!currentColumnMap.has(cached.id)) {\n return false;\n }\n if (currentColumnMap.get(cached.id) !== cached.accessorKey) {\n return false;\n }\n }\n\n return true;\n }\n\n private _getChangedFilterColumnIds(oldState: ColumnFiltersState, newState: ColumnFiltersState): string[] {\n const changedIds: string[] = [];\n const oldMap = new Map(oldState.map(f => [f.id, f.value]));\n const newMap = new Map(newState.map(f => [f.id, f.value]));\n\n for (const filter of newState) {\n const oldValue = oldMap.get(filter.id);\n if (JSON.stringify(oldValue) !== JSON.stringify(filter.value)) {\n changedIds.push(filter.id);\n }\n }\n\n for (const filter of oldState) {\n if (!newMap.has(filter.id)) {\n changedIds.push(filter.id);\n }\n }\n\n return [...new Set(changedIds)];\n }\n\n private _getChangedSortColumnIds(oldState: SortingState, newState: SortingState): string[] {\n const changedIds: string[] = [];\n const oldMap = new Map(oldState.map(s => [s.id, s.desc]));\n const newMap = new Map(newState.map(s => [s.id, s.desc]));\n\n for (const sort of newState) {\n const oldDesc = oldMap.get(sort.id);\n if (oldDesc !== sort.desc) {\n changedIds.push(sort.id);\n }\n }\n\n for (const sort of oldState) {\n if (!newMap.has(sort.id)) {\n changedIds.push(sort.id);\n }\n }\n\n return [...new Set(changedIds)];\n }\n\n private _isColumnFilterModeLocal(columnId: string): boolean {\n const columnConfig = this._findColumnConfig(columnId);\n if (!columnConfig) {\n return true;\n }\n\n const filterConfig =\n typeof columnConfig.filter === 'boolean' ? { enabled: columnConfig.filter } : columnConfig.filter;\n const filterMode = filterConfig?.mode ?? 'local';\n return filterMode === 'local';\n }\n\n private _isColumnSortModeLocal(columnId: string): boolean {\n const columnConfig = this._findColumnConfig(columnId);\n if (!columnConfig) {\n return true;\n }\n\n const sortConfig = typeof columnConfig.sort === 'boolean' ? { enabled: columnConfig.sort } : columnConfig.sort;\n const sortMode = sortConfig?.mode ?? 'local';\n return sortMode === 'local';\n }\n\n private _filterServerModeColumnFilters(filters: ColumnFiltersState): ColumnFiltersState {\n return filters.filter(filter => !this._isColumnFilterModeLocal(filter.id));\n }\n\n private _filterServerModeSorting(sorting: SortingState): SortingState {\n return sorting.filter(sort => !this._isColumnSortModeLocal(sort.id));\n }\n\n private _findColumnConfig(columnId: string): ZTableColumnConfig<T> | undefined {\n const { columns } = this.zConfig();\n if (columns !== this._lastColumnsRef) {\n this._columnConfigCache.clear();\n this._lastColumnsRef = columns;\n }\n\n if (this._columnConfigCache.has(columnId)) {\n return this._columnConfigCache.get(columnId);\n }\n\n const findInColumns = (cols: ZTableColumnConfig<T>[]): ZTableColumnConfig<T> | undefined => {\n for (const col of cols) {\n if (col.id === columnId) {\n return col;\n }\n if (col.columns) {\n const found = findInColumns(col.columns);\n if (found) {\n return found;\n }\n }\n }\n return undefined;\n };\n\n const result = findInColumns(columns);\n this._columnConfigCache.set(columnId, result);\n return result;\n }\n}\n","<!-- Toolbar: Search & Settings -->\n@if (isSearchEnabled() || zConfig().enableSettings) {\n <div class=\"z-table-toolbar mb-2 flex items-center justify-between gap-4\">\n <!-- Search -->\n @if (isSearchEnabled()) {\n @let config = searchConfig();\n <z-input\n [class]=\"config?.width ?? 'w-64'\"\n [zSize]=\"config?.size ?? 'sm'\"\n [zPlaceholder]=\"config?.placeholder ?? 'i18n_z_ui_table_search' | translate\"\n [zSearch]=\"true\"\n [zDebounce]=\"config?.debounceTime ?? 300\"\n (zOnSearch)=\"onSearchChange($event)\" />\n } @else {\n <div></div>\n }\n\n <!-- Settings Button -->\n @if (zConfig().enableSettings) {\n <z-button zType=\"outline\" zSize=\"sm\" zTypeIcon=\"lucideSettings\" (click)=\"openSettingsDrawer()\">\n {{ 'i18n_z_ui_table_settings' | translate }}\n </z-button>\n }\n </div>\n}\n\n<div\n class=\"z-table-container shadow-xs\"\n [class.z-hide-horizontal-border]=\"!showHorizontalBorder()\"\n [class.z-hide-vertical-border]=\"!showVerticalBorder()\"\n [style.max-height]=\"zConfig().maxHeight\"\n [style.min-height]=\"zConfig().minHeight\">\n <!-- Shared colgroup template -->\n <ng-template #colGroupTpl>\n <colgroup>\n @for (column of orderedLeafColumns(); track column.id) {\n @if (column.getIsVisible()) {\n <col [style.width]=\"'calc(var(--col-' + column.id + '-size) * 1px)'\" />\n }\n }\n </colgroup>\n </ng-template>\n\n <!-- Header table -->\n <div\n class=\"z-thead-wrapper shadow-xs\"\n [class.z-shadow-header]=\"shouldHeaderShowShadow()\"\n [class.z-scroll-left]=\"hasScrollLeft()\"\n [class.z-scroll-right]=\"hasScrollRight()\"\n #theadWrapper>\n <table [ngStyle]=\"columnSizeVars()\" [style.width.px]=\"table.getTotalSize()\">\n <ng-container *ngTemplateOutlet=\"colGroupTpl\" />\n <thead>\n @for (headerGroup of orderedHeaderGroups(); track headerGroup.id) {\n <tr>\n @for (header of headerGroup.headers; track header.id) {\n @let rowSpan = header | zTableSpan: zConfig().columns : 'headerRowSpan';\n @let shouldRender = header | zTableCellRender: headerGroup.headers : zConfig().columns : 'header';\n @if (rowSpan && shouldRender) {\n <th\n [attr.id]=\"header.column.id\"\n [ngStyle]=\"\n header.column\n | zTablePinningStyles: header : 'header' : table : zConfig().columns : columnSizingInfo()\n \"\n [class]=\"\n (header.column.id | zTableColumnConfig: zConfig().columns : 'headerClass') +\n ' ' +\n (header.column.id | zTableColumnConfig: zConfig().columns : 'headerAlignClass')\n \"\n [style]=\"header.column.id | zTableColumnConfig: zConfig().columns : 'headerStyle'\"\n [class.z-sticky-left]=\"header.column.getIsPinned() === 'left'\"\n [class.z-sticky-right]=\"header.column.getIsPinned() === 'right'\"\n [class.z-sticky-left-last]=\"header | zTableCellPin: 'isLastLeftPinned' : zConfig().columns\"\n [class.z-sticky-right-first]=\"header | zTableCellPin: 'isFirstRightPinned' : zConfig().columns\"\n [class.z-sticky-right-last]=\"header | zTableCellPin: 'isLastRightPinned' : zConfig().columns\"\n [class.z-at-left-edge]=\"header | zTableCellOffset: orderedLeafColumns()\"\n [class.z-col-select]=\"header.column.id === 'select'\"\n [class.z-col-expand]=\"header.column.id === 'expand'\"\n [class.z-col-actions]=\"\n header.column.id === 'actions' || header.column.id === actionColumnInfo()?.columnId\n \"\n [attr.rowspan]=\"rowSpan\"\n [attr.colspan]=\"header | zTableSpan: zConfig().columns : 'headerColSpan'\">\n @if (header.column.id === 'select') {\n <!-- Header Checkbox -->\n <div class=\"flex items-center justify-center\">\n <z-checkbox\n [zChecked]=\"table.getIsAllRowsSelected()\"\n [zIndeterminate]=\"table.getIsSomeRowsSelected() && !table.getIsAllRowsSelected()\"\n (zChange)=\"table.toggleAllRowsSelected()\" />\n </div>\n } @else if (header.column.id === 'expand') {\n <!-- Expand All Button -->\n <div class=\"flex items-center justify-center\">\n <button\n type=\"button\"\n (click)=\"table.toggleAllRowsExpanded()\"\n class=\"hover:bg-muted flex h-6 w-6 cursor-pointer items-center justify-center rounded\">\n <z-icon\n zType=\"lucideChevronRight\"\n zSize=\"14\"\n class=\"transition-transform duration-200\"\n [class.rotate-90]=\"table.getIsSomeRowsExpanded()\" />\n </button>\n </div>\n } @else {\n <!-- Header Content with Sort and Pin -->\n <div\n class=\"flex w-full items-center gap-1\"\n [class.justify-center]=\"\n (header.column.id | zTableColumnConfig: zConfig().columns : 'headerAlignClass') ===\n 'text-center'\n \"\n [class.justify-end]=\"\n (header.column.id | zTableColumnConfig: zConfig().columns : 'headerAlignClass') === 'text-right'\n \">\n <!-- Column Options Popover Template -->\n @let columnEnableOrdering =\n header.column.id | zTableColumnConfig: zConfig().columns : 'enableOrdering';\n @let columnEnablePinning =\n header.column.id | zTableColumnConfig: zConfig().columns : 'enablePinning';\n @let effectiveEnableOrdering = columnEnableOrdering || zConfig().enableColumnOrdering;\n @let effectiveEnablePinning = columnEnablePinning || zConfig().enableColumnPinning;\n <ng-template #colOptionsPopoverContent>\n <div class=\"flex flex-col gap-0.5 p-0.5\">\n @if (effectiveEnableOrdering) {\n <button\n type=\"button\"\n [disabled]=\"isFirstMovableColumn(header.column.id) || header.column.getIsPinned()\"\n (click)=\"moveColumnLeft(header.column.id); colOptionsPopover.hideImmediate()\"\n class=\"text-foreground hover:bg-muted flex cursor-pointer items-center gap-1.5 rounded px-2 py-1 text-xs disabled:pointer-events-none disabled:opacity-40\">\n <z-icon zType=\"lucideArrowLeft\" zSize=\"12\" />\n <span>{{ 'i18n_z_ui_table_move_left' | translate }}</span>\n </button>\n <button\n type=\"button\"\n [disabled]=\"isLastMovableColumn(header.column.id) || header.column.getIsPinned()\"\n (click)=\"moveColumnRight(header.column.id); colOptionsPopover.hideImmediate()\"\n class=\"text-foreground hover:bg-muted flex cursor-pointer items-center gap-1.5 rounded px-2 py-1 text-xs disabled:pointer-events-none disabled:opacity-40\">\n <z-icon zType=\"lucideArrowRight\" zSize=\"12\" />\n <span>{{ 'i18n_z_ui_table_move_right' | translate }}</span>\n </button>\n }\n @if (effectiveEnableOrdering && header.column.getCanPin() && effectiveEnablePinning) {\n <div class=\"border-border my-0.5 border-t\"></div>\n }\n @if (header.column.getCanPin() && effectiveEnablePinning) {\n @if (header.column.getIsPinned() !== 'left') {\n <button\n type=\"button\"\n (click)=\"handleColumnPin(header.column.id, 'left'); colOptionsPopover.hideImmediate()\"\n class=\"text-foreground hover:bg-muted flex cursor-pointer items-center gap-1.5 rounded px-2 py-1 text-xs\">\n <z-icon zType=\"lucidePin\" zSize=\"12\" class=\"rotate-90\" />\n <span>{{ 'i18n_z_ui_table_pin_left' | translate }}</span>\n </button>\n }\n @if (header.column.getIsPinned() !== 'right') {\n <button\n type=\"button\"\n (click)=\"handleColumnPin(header.column.id, 'right'); colOptionsPopover.hideImmediate()\"\n class=\"text-foreground hover:bg-muted flex cursor-pointer items-center gap-1.5 rounded px-2 py-1 text-xs\">\n <z-icon zType=\"lucidePin\" zSize=\"12\" class=\"-rotate-90\" />\n <span>{{ 'i18n_z_ui_table_pin_right' | translate }}</span>\n </button>\n }\n @if (header.column.getIsPinned()) {\n <button\n type=\"button\"\n (click)=\"handleColumnPin(header.column.id, false); colOptionsPopover.hideImmediate()\"\n class=\"text-destructive hover:bg-destructive/10 flex cursor-pointer items-center gap-1.5 rounded px-2 py-1 text-xs\">\n <z-icon zType=\"lucideX\" zSize=\"12\" />\n <span>{{ 'i18n_z_ui_table_unpin' | translate }}</span>\n </button>\n }\n }\n </div>\n </ng-template>\n\n <!-- Header Text with Popover Trigger -->\n @let hasColumnOptions =\n (header.column.getCanPin() && effectiveEnablePinning) || effectiveEnableOrdering;\n <div\n class=\"z-header-text-wrapper inline-flex max-w-full items-center gap-1 rounded px-1.5 py-1\"\n [class.cursor-pointer]=\"hasColumnOptions\"\n [class.z-has-options]=\"hasColumnOptions\"\n [attr.z-popover]=\"hasColumnOptions ? '' : null\"\n #colOptionsPopover=\"zPopover\"\n #headerTextWrapper\n z-popover\n [zPopoverContent]=\"hasColumnOptions ? colOptionsPopoverContent : null\"\n zTrigger=\"click\"\n zPosition=\"bottom\"\n [zOffset]=\"5\">\n <ng-container\n *flexRender=\"header.column.columnDef.header; props: header.getContext(); let headerContent\">\n @if (headerContent | zTableIsTemplateRef) {\n <div\n [ngClass]=\"\n header.column.id | zTableColumnConfig: zConfig().columns : 'headerContentClass'\n \"\n [ngStyle]=\"\n header.column.id | zTableColumnConfig: zConfig().columns : 'headerContentStyle'\n \">\n <ng-container\n *ngTemplateOutlet=\"headerContent; context: { $implicit: header.getContext() }\" />\n </div>\n } @else if (headerContent | zTableHasIcon) {\n <z-table-icon-text\n class=\"min-w-0 truncate\"\n [zText]=\"headerContent\"\n [zTooltip]=\"header.column.id | zTableColumnConfig: zConfig().columns : 'headerTooltip'\"\n [zTriggerElement]=\"headerTextWrapper\"\n [ngClass]=\"\n header.column.id | zTableColumnConfig: zConfig().columns : 'headerContentClass'\n \"\n [ngStyle]=\"\n header.column.id | zTableColumnConfig: zConfig().columns : 'headerContentStyle'\n \" />\n } @else {\n <span\n class=\"z-table-cell-text\"\n z-tooltip\n [zContent]=\"\n (header.column.id | zTableColumnConfig: zConfig().columns : 'headerTooltip') ||\n headerContent\n \"\n [zTriggerElement]=\"headerTextWrapper\"\n [innerHTML]=\"headerContent | translate | zSafeHtml\"\n [ngClass]=\"\n header.column.id | zTableColumnConfig: zConfig().columns : 'headerContentClass'\n \"\n [ngStyle]=\"\n header.column.id | zTableColumnConfig: zConfig().columns : 'headerContentStyle'\n \"></span>\n }\n </ng-container>\n <!-- Dropdown indicator when has options (between text and sort icon) -->\n @if (hasColumnOptions) {\n <z-icon\n zType=\"lucideChevronDown\"\n zSize=\"12\"\n class=\"text-muted-foreground shrink-0 opacity-50\" />\n }\n </div>\n <!-- Sort Icon (outside wrapper, no hover background) -->\n @if (header.column.getCanSort() && !hasBodyRowSpan()) {\n <span\n class=\"z-sort-icon shrink-0 cursor-pointer text-gray-500 hover:text-gray-700\"\n (click)=\"handleSort($event, header.column.getToggleSortingHandler())\">\n @if (header.column.getIsSorted() === 'asc') {\n <z-icon zType=\"lucideArrowUp\" zSize=\"12\" />\n } @else if (header.column.getIsSorted() === 'desc') {\n <z-icon zType=\"lucideArrowDown\" zSize=\"12\" />\n } @else {\n <z-icon zType=\"lucideArrowDownUp\" zSize=\"12\" class=\"opacity-30\" />\n }\n </span>\n }\n </div>\n }\n <!-- Column Filter -->\n @if (header.column.getCanFilter() && hasFiltering()) {\n <div class=\"mt-1\">\n <z-table-filter [zColumn]=\"$any(header.column)\" [zTable]=\"$any(table)\" />\n </div>\n }\n <!-- Column Resizer -->\n @if (\n header.column.id !== 'select' &&\n header.column.id !== 'expand' &&\n zConfig().enableColumnResizing !== false\n ) {\n <div\n class=\"z-resizer\"\n [class.z-is-resizing]=\"header.column.getIsResizing()\"\n [class.z-resizer-left]=\"\n header.column.getIsPinned() === 'right' || header.column.getIsLastColumn()\n \"\n (dblclick)=\"header.column.resetSize()\"\n [zTableResize]=\"header\"></div>\n }\n </th>\n }\n }\n </tr>\n }\n </thead>\n </table>\n </div>\n\n <!-- Body table -->\n <div\n class=\"z-tbody-wrapper relative\"\n #tbodyContainer\n [class.z-scroll-left]=\"hasScrollLeft()\"\n [class.z-scroll-right]=\"hasScrollRight()\">\n @if (isLoading() || isProcessing()) {\n <!-- Loading State -->\n @if (zConfig().useSkeleton) {\n <!-- Skeleton Loading -->\n <div class=\"animate-in fade-in flex h-full flex-col duration-200\">\n @for (i of skeletonRows(); track $index; let last = $last) {\n <div\n class=\"border-border box-border flex flex-1 flex-col items-start justify-center gap-1.5 px-2\"\n [class.border-b]=\"!last\">\n <z-skeleton zType=\"bar\" zWidth=\"100%\" zHeight=\"22px\" zRadius=\"4px\" />\n <z-skeleton zType=\"bar\" zWidth=\"50%\" zHeight=\"14px\" zRadius=\"4px\" />\n </div>\n }\n </div>\n } @else {\n <!-- Spinner Loading -->\n <div class=\"z-loading-state\">\n <z-loading [zLoading]=\"true\" zSize=\"lg\" [zText]=\"'i18n_z_ui_table_loading' | translate\" />\n </div>\n }\n } @else if (isEmpty()) {\n <div class=\"z-empty-state\">\n @if (isNoSearchResults()) {\n <z-empty zIcon=\"lucideSearchX\" zSize=\"sm\" [zMessage]=\"'i18n_z_ui_table_no_results' | translate\" />\n } @else {\n <z-empty zIcon=\"lucidePackageOpen\" zSize=\"sm\" [zMessage]=\"'i18n_z_ui_table_no_data' | translate\" />\n }\n </div>\n } @else {\n <ng-scrollbar class=\"z-tbody-scrollbar\" #tbodyWrapper track=\"all\" (scroll)=\"onTbodyScroll($event)\">\n @if (isVirtual()) {\n <!-- Virtual Scroll Mode -->\n <div\n class=\"z-virtual-scroll-inner\"\n [style.height.px]=\"virtualizer.getTotalSize()\"\n [style.min-width.px]=\"table.getTotalSize()\">\n @for (virtualItem of virtualizer.getVirtualItems(); track virtualItem.index) {\n @let groupRows = dynamicGroupRows()[virtualItem.index] || [];\n <div\n #virtualRow\n class=\"z-virtual-row\"\n [attr.data-index]=\"virtualItem.index\"\n [style.height.px]=\"\n dynamicSize() ? null : (dynamicGroupHeights()[virtualItem.index] ?? groupSize() * virtualRowHeight())\n \"\n [style.transform]=\"'translate3d(0,' + virtualItem.start + 'px,0)'\">\n <table [ngStyle]=\"columnSizeVars()\" [style.width.px]=\"table.getTotalSize()\">\n <ng-container *ngTemplateOutlet=\"colGroupTpl\" />\n <tbody\n [class.z-has-vertical-scroll]=\"hasVerticalScroll()\"\n [class.z-last-row-touches-bottom]=\"lastRowTouchesBottom()\">\n @for (row of groupRows; track row.id) {\n <tr\n z-table-row-hover\n [style.height.px]=\"dynamicSize() ? null : virtualRowHeight()\"\n [style.min-height.px]=\"dynamicSize() ? virtualRowHeight() : null\"\n [class.z-child-row]=\"row.depth > 0\"\n [class.z-selected]=\"row.getIsSelected()\"\n [class.z-indeterminate-selected]=\"row.getIsSomeSelected() && !row.getIsSelected()\">\n @for (cell of row.getVisibleCells(); track cell.id) {\n @let shouldRenderRowSpan =\n cell | zTableSpan: zConfig().columns : 'shouldRender' : table.getRowModel().rows;\n @let shouldRenderColSpan =\n cell | zTableCellRender: row.getVisibleCells() : zConfig().columns : 'body';\n @if (shouldRenderRowSpan && shouldRenderColSpan) {\n <td\n [ngStyle]=\"\n cell.column\n | zTablePinningStyles\n : cell\n : 'body'\n : row.getVisibleCells()\n : zConfig().columns\n : columnSizingInfo()\n \"\n [class.z-sticky-left]=\"cell.column.getIsPinned() === 'left'\"\n [class.z-sticky-right]=\"cell.column.getIsPinned() === 'right'\"\n [class.z-sticky-left-last]=\"\n cell.column.getIsPinned() === 'left' && cell.column.getIsLastColumn('left')\n \"\n [class.z-sticky-right-first]=\"\n cell.column.getIsPinned() === 'right' && cell.column.getIsFirstColumn('right')\n \"\n [class.z-sticky-right-last]=\"\n cell.column.getIsPinned() === 'right' && cell.column.getIsLastColumn('right')\n \"\n [class.z-at-left-edge]=\"cell | zTableCellOffset: orderedLeafColumns()\"\n [class.z-col-select]=\"cell.column.id === 'select'\"\n [class.z-col-expand]=\"cell.column.id === 'expand'\"\n [class.z-col-actions]=\"cell.column.id === actionColumnInfo()?.columnId\"\n [class.z-at-bottom]=\"\n cell | zTableCellBottom: zConfig().columns : table.getRowModel().rows\n \"\n [attr.rowspan]=\"\n cell | zTableSpan: zConfig().columns : 'cellRowSpan' : table.getRowModel().rows\n \"\n [attr.colspan]=\"cell | zTableSpan: zConfig().columns : 'cellColSpan'\"\n [class]=\"cell | zTableCellConfig: zConfig().columns : 'cellClass'\"\n [style]=\"cell | zTableCellConfig: zConfig().columns : 'cellStyle'\">\n @if (cell.column.id === 'select') {\n <!-- Row Checkbox -->\n <div class=\"flex items-center justify-center\">\n <z-checkbox\n [zChecked]=\"cell.row.getIsSelected()\"\n [zIndeterminate]=\"cell.row.getIsSomeSelected() && !cell.row.getIsSelected()\"\n [zDisabled]=\"!cell.row.getCanSelect()\"\n (zChange)=\"cell.row.toggleSelected()\" />\n </div>\n } @else if (cell.column.id === 'expand') {\n <!-- Expand Button -->\n <div class=\"flex items-center justify-center\">\n @if (cell.row.subRows && cell.row.subRows.length > 0) {\n <button\n type=\"button\"\n (click)=\"cell.row.toggleExpanded()\"\n class=\"hover:bg-muted flex h-6 w-6 cursor-pointer items-center justify-center rounded\">\n <z-icon\n zType=\"lucideChevronRight\"\n zSize=\"14\"\n class=\"transition-transform duration-200\"\n [class.rotate-90]=\"cell.row.getIsExpanded()\" />\n </button>\n }\n </div>\n } @else if (cell.column.id === actionColumnInfo()?.columnId && actionColumnInfo()) {\n <z-table-actions\n [zConfig]=\"$any(actionColumnInfo()!.config)\"\n [zRow]=\"cell.row.original\"\n [zRowId]=\"cell.row.id\"\n (zActionClick)=\"onActionClick($event)\" />\n } @else {\n @let editInfoVirtual = cell.getContext() | zTableCellEdit: zConfig().columns;\n @if (editInfoVirtual.enabled) {\n <!-- Editable Cell (Virtual) -->\n <z-table-edit-cell\n [zRow]=\"cell.row.original\"\n [zRowId]=\"cell.row.id\"\n [zRowIndex]=\"cell.row.index\"\n [zColumnId]=\"cell.column.id\"\n [zValue]=\"cell.getValue()\"\n [zEditConfig]=\"$any(editInfoVirtual.config)\"\n (zChange)=\"onCellEdit($any($event))\" />\n } @else {\n <ng-container\n *flexRender=\"cell.column.columnDef.cell; props: cell.getContext(); let cellContent\">\n @if (cellContent | zTableIsTemplateRef) {\n <!-- TemplateRef rendering -->\n @let isClickable = cell.column.id | zTableCellClickable: zConfig().columns;\n <div\n [ngClass]=\"cell | zTableCellConfig: zConfig().columns : 'contentClass'\"\n [ngStyle]=\"cell | zTableCellConfig: zConfig().columns : 'contentStyle'\"\n (click)=\"isClickable && onCellClick(row, cell.column.id, cell.getValue())\">\n <ng-container\n *ngTemplateOutlet=\"cellContent; context: { $implicit: cell.getContext() }\" />\n </div>\n } @else if (cellContent | zTableHasIcon) {\n <!-- Icon syntax rendering -->\n @let isClickableIcon = cell.column.id | zTableCellClickable: zConfig().columns;\n <z-table-icon-text\n [zText]=\"cellContent\"\n [zTooltip]=\"cell | zTableCellConfig: zConfig().columns : 'contentTooltip'\"\n [ngClass]=\"cell | zTableCellConfig: zConfig().columns : 'contentClass'\"\n [ngStyle]=\"cell | zTableCellConfig: zConfig().columns : 'contentStyle'\"\n (click)=\"\n isClickableIcon && onCellClick(row, cell.column.id, cell.getValue())\n \" />\n } @else {\n <!-- Default/innerHTML rendering -->\n @let isClickableDefault = cell.column.id | zTableCellClickable: zConfig().columns;\n <div\n class=\"z-table-cell-text\"\n z-tooltip\n [zContent]=\"\n (cell | zTableCellConfig: zConfig().columns : 'contentTooltip') || cellContent\n \"\n [innerHTML]=\"cellContent | translate | zSafeHtml\"\n [ngClass]=\"cell | zTableCellConfig: zConfig().columns : 'contentClass'\"\n [ngStyle]=\"cell | zTableCellConfig: zConfig().columns : 'contentStyle'\"\n (click)=\"\n isClickableDefault && onCellClick(row, cell.column.id, cell.getValue())\n \"></div>\n }\n </ng-container>\n }\n }\n </td>\n }\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n </div>\n } @else {\n <!-- Normal Scroll Mode -->\n <table [ngStyle]=\"columnSizeVars()\" [style.width.px]=\"table.getTotalSize()\">\n <ng-container *ngTemplateOutlet=\"colGroupTpl\" />\n <tbody\n [class.z-has-vertical-scroll]=\"hasVerticalScroll()\"\n [class.z-last-row-touches-bottom]=\"lastRowTouchesBottom()\">\n <!-- Row Template -->\n <ng-template #rowTemplate let-row>\n <tr\n z-table-row-hover\n [attr.data-row-id]=\"row.id\"\n [ngStyle]=\"row | zTableRow: table : 'pinningStyles' : virtualRowHeight()\"\n [class.z-child-row]=\"row.depth > 0\"\n [class.z-selected]=\"row.getIsSelected()\"\n [class.z-indeterminate-selected]=\"row.getIsSomeSelected() && !row.getIsSelected()\"\n [class.z-pinned-top]=\"row.getIsPinned() === 'top'\"\n [class.z-pinned-bottom]=\"row.getIsPinned() === 'bottom'\"\n [class.z-shadow-bottom]=\"\n showHeaderFooterShadow() &&\n row.getIsPinned() === 'top' &&\n (row | zTableRow: table : 'isLastTopPinned')\n \"\n [class.z-shadow-top]=\"\n showHeaderFooterShadow() &&\n row.getIsPinned() === 'bottom' &&\n (row | zTableRow: table : 'isFirstBottomPinned')\n \"\n [attr.data-depth]=\"row.depth\">\n @for (cell of row.getVisibleCells(); track cell.id) {\n @let shouldRenderRowSpan =\n cell | zTableSpan: zConfig().columns : 'shouldRender' : table.getRowModel().rows;\n @let shouldRenderColSpan =\n cell | zTableCellRender: row.getVisibleCells() : zConfig().columns : 'body';\n @if (shouldRenderRowSpan && shouldRenderColSpan) {\n <td\n [ngStyle]=\"\n cell.column\n | zTablePinningStyles\n : cell\n : 'body'\n : row.getVisibleCells()\n : zConfig().columns\n : columnSizingInfo()\n \"\n [class]=\"cell | zTableCellConfig: zConfig().columns : 'cellClass'\"\n [style]=\"cell | zTableCellConfig: zConfig().columns : 'cellStyle'\"\n [class.z-sticky-left]=\"cell.column.getIsPinned() === 'left'\"\n [class.z-sticky-right]=\"cell.column.getIsPinned() === 'right'\"\n [class.z-sticky-left-last]=\"\n cell.column.getIsPinned() === 'left' && cell.column.getIsLastColumn('left')\n \"\n [class.z-sticky-right-first]=\"\n cell.column.getIsPinned() === 'right' && cell.column.getIsFirstColumn('right')\n \"\n [class.z-sticky-right-last]=\"\n cell.column.getIsPinned() === 'right' && cell.column.getIsLastColumn('right')\n \"\n [class.z-at-left-edge]=\"cell | zTableCellOffset: orderedLeafColumns()\"\n [class.z-col-select]=\"cell.column.id === 'select'\"\n [class.z-col-expand]=\"cell.column.id === 'expand'\"\n [class.z-col-actions]=\"\n cell.column.id === 'actions' || cell.column.id === actionColumnInfo()?.columnId\n \"\n [class.z-at-bottom]=\"cell | zTableCellBottom: zConfig().columns : table.getRowModel().rows\"\n [attr.rowspan]=\"cell | zTableSpan: zConfig().columns : 'cellRowSpan' : table.getRowModel().rows\"\n [attr.colspan]=\"cell | zTableSpan: zConfig().columns : 'cellColSpan'\">\n @if (cell.column.id === 'select') {\n <!-- Row Checkbox with Pin Button -->\n <div class=\"flex items-center justify-center gap-1\">\n <z-checkbox\n [zChecked]=\"cell.row.getIsSelected()\"\n [zIndeterminate]=\"cell.row.getIsSomeSelected() && !cell.row.getIsSelected()\"\n [zDisabled]=\"!cell.row.getCanSelect()\"\n (zChange)=\"cell.row.toggleSelected()\" />\n @if (zConfig().enableRowPinning && cell.row.depth === 0 && !hasBodyRowSpan()) {\n <ng-template #rowPinPopoverContent>\n <div class=\"flex flex-col gap-0.5 p-0.5\">\n @if (cell.row.getIsPinned() !== 'top') {\n <button\n type=\"button\"\n (click)=\"cell.row.pin('top'); rowPinPopover.hideImmediate()\"\n class=\"text-foreground hover:bg-muted flex cursor-pointer items-center gap-1.5 rounded px-2 py-1 text-xs\">\n <z-icon zType=\"lucideArrowUp\" zSize=\"12\" />\n <span>{{ 'i18n_z_ui_table_pin_top' | translate }}</span>\n </button>\n }\n @if (cell.row.getIsPinned() !== 'bottom') {\n <button\n type=\"button\"\n (click)=\"cell.row.pin('bottom'); rowPinPopover.hideImmediate()\"\n class=\"text-foreground hover:bg-muted flex cursor-pointer items-center gap-1.5 rounded px-2 py-1 text-xs\">\n <z-icon zType=\"lucideArrowDown\" zSize=\"12\" />\n <span>{{ 'i18n_z_ui_table_pin_bottom' | translate }}</span>\n </button>\n }\n @if (cell.row.getIsPinned()) {\n <button\n type=\"button\"\n (click)=\"cell.row.pin(false); rowPinPopover.hideImmediate()\"\n class=\"text-destructive hover:bg-destructive/10 flex cursor-pointer items-center gap-1.5 rounded px-2 py-1 text-xs\">\n <z-icon zType=\"lucideX\" zSize=\"12\" />\n <span>{{ 'i18n_z_ui_table_unpin' | translate }}</span>\n </button>\n }\n </div>\n </ng-template>\n <button\n type=\"button\"\n z-popover\n #rowPinPopover=\"zPopover\"\n [zPopoverContent]=\"rowPinPopoverContent\"\n zTrigger=\"click\"\n zPosition=\"bottom\"\n class=\"z-row-pin-trigger text-muted-foreground hover:bg-muted hover:text-foreground flex cursor-pointer items-center justify-center rounded p-1\"\n [class.text-primary]=\"cell.row.getIsPinned()\">\n <z-icon zType=\"lucideEllipsis\" zSize=\"14\" class=\"rotate-90\" />\n </button>\n }\n </div>\n } @else if (cell.column.id === 'expand') {\n <!-- Expand Button with Row Pin Popover -->\n <div class=\"flex items-center justify-center gap-1\">\n @if (cell.row.subRows && cell.row.subRows.length > 0) {\n <button\n type=\"button\"\n (click)=\"cell.row.toggleExpanded()\"\n class=\"hover:bg-muted flex h-6 w-6 cursor-pointer items-center justify-center rounded\">\n <z-icon\n zType=\"lucideChevronRight\"\n zSize=\"14\"\n class=\"transition-transform duration-200\"\n [class.rotate-90]=\"cell.row.getIsExpanded()\" />\n </button>\n }\n @if (\n zConfig().enableRowPinning &&\n cell.row.depth === 0 &&\n !(cell.row.subRows && cell.row.subRows.length > 0) &&\n !hasBodyRowSpan()\n ) {\n <ng-template #rowPinPopoverContent>\n <div class=\"flex flex-col gap-0.5 p-0.5\">\n @if (cell.row.getIsPinned() !== 'top') {\n <button\n type=\"button\"\n (click)=\"cell.row.pin('top'); rowPinPopover.hideImmediate()\"\n class=\"text-foreground hover:bg-muted flex cursor-pointer items-center gap-1.5 rounded px-2 py-1 text-xs\">\n <z-icon zType=\"lucideArrowUp\" zSize=\"12\" />\n <span>{{ 'i18n_z_ui_table_pin_top' | translate }}</span>\n </button>\n }\n @if (cell.row.getIsPinned() !== 'bottom') {\n <button\n type=\"button\"\n (click)=\"cell.row.pin('bottom'); rowPinPopover.hideImmediate()\"\n class=\"text-foreground hover:bg-muted flex cursor-pointer items-center gap-1.5 rounded px-2 py-1 text-xs\">\n <z-icon zType=\"lucideArrowDown\" zSize=\"12\" />\n <span>{{ 'i18n_z_ui_table_pin_bottom' | translate }}</span>\n </button>\n }\n @if (cell.row.getIsPinned()) {\n <button\n type=\"button\"\n (click)=\"cell.row.pin(false); rowPinPopover.hideImmediate()\"\n class=\"text-destructive hover:bg-destructive/10 flex cursor-pointer items-center gap-1.5 rounded px-2 py-1 text-xs\">\n <z-icon zType=\"lucideX\" zSize=\"12\" />\n <span>{{ 'i18n_z_ui_table_unpin' | translate }}</span>\n </button>\n }\n </div>\n </ng-template>\n <button\n type=\"button\"\n z-popover\n #rowPinPopover=\"zPopover\"\n [zPopoverContent]=\"rowPinPopoverContent\"\n zTrigger=\"click\"\n zPosition=\"bottom\"\n class=\"z-row-pin-trigger text-muted-foreground hover:bg-muted hover:text-foreground flex cursor-pointer items-center justify-center rounded p-1\"\n [class.text-primary]=\"cell.row.getIsPinned()\">\n <z-icon zType=\"lucideEllipsis\" zSize=\"14\" class=\"rotate-90\" />\n </button>\n }\n </div>\n } @else if (cell.column.id === 'actions') {\n <!-- Actions Column - Row Pin Only (for parent rows) -->\n @if (cell.row.depth === 0 && !hasBodyRowSpan()) {\n <div class=\"flex items-center justify-center\">\n <ng-template #rowPinPopoverContent>\n <div class=\"flex flex-col gap-0.5 p-0.5\">\n @if (cell.row.getIsPinned() !== 'top') {\n <button\n type=\"button\"\n (click)=\"cell.row.pin('top'); rowPinPopover.hideImmediate()\"\n class=\"text-foreground hover:bg-muted flex cursor-pointer items-center gap-1.5 rounded px-2 py-1 text-xs\">\n <z-icon zType=\"lucideArrowUp\" zSize=\"12\" />\n <span>{{ 'i18n_z_ui_table_pin_top' | translate }}</span>\n </button>\n }\n @if (cell.row.getIsPinned() !== 'bottom') {\n <button\n type=\"button\"\n (click)=\"cell.row.pin('bottom'); rowPinPopover.hideImmediate()\"\n class=\"text-foreground hover:bg-muted flex cursor-pointer items-center gap-1.5 rounded px-2 py-1 text-xs\">\n <z-icon zType=\"lucideArrowDown\" zSize=\"12\" />\n <span>{{ 'i18n_z_ui_table_pin_bottom' | translate }}</span>\n </button>\n }\n @if (cell.row.getIsPinned()) {\n <button\n type=\"button\"\n (click)=\"cell.row.pin(false); rowPinPopover.hideImmediate()\"\n class=\"text-destructive hover:bg-destructive/10 flex cursor-pointer items-center gap-1.5 rounded px-2 py-1 text-xs\">\n <z-icon zType=\"lucideX\" zSize=\"12\" />\n <span>{{ 'i18n_z_ui_table_unpin' | translate }}</span>\n </button>\n }\n </div>\n </ng-template>\n <button\n type=\"button\"\n z-popover\n #rowPinPopover=\"zPopover\"\n [zPopoverContent]=\"rowPinPopoverContent\"\n zTrigger=\"click\"\n zPosition=\"bottom\"\n class=\"z-row-pin-trigger text-muted-foreground hover:bg-muted hover:text-foreground flex cursor-pointer items-center justify-center rounded p-1\"\n [class.text-primary]=\"cell.row.getIsPinned()\">\n <z-icon zType=\"lucideEllipsis\" zSize=\"14\" class=\"rotate-90\" />\n </button>\n </div>\n }\n } @else if (cell.column.id === actionColumnInfo()?.columnId && actionColumnInfo()) {\n <z-table-actions\n [zConfig]=\"$any(actionColumnInfo()!.config)\"\n [zRow]=\"cell.row.original\"\n [zRowId]=\"cell.row.id\"\n (zActionClick)=\"onActionClick($event)\" />\n } @else {\n @let editInfo = cell.getContext() | zTableCellEdit: zConfig().columns;\n @if (editInfo.enabled) {\n <!-- Editable Cell -->\n <z-table-edit-cell\n [zRow]=\"cell.row.original\"\n [zRowId]=\"cell.row.id\"\n [zRowIndex]=\"cell.row.index\"\n [zColumnId]=\"cell.column.id\"\n [zValue]=\"cell.getValue()\"\n [zEditConfig]=\"$any(editInfo.config)\"\n (zChange)=\"onCellEdit($any($event))\" />\n } @else {\n <ng-container\n *flexRender=\"cell.column.columnDef.cell; props: cell.getContext(); let cellContent\">\n @if (cellContent | zTableIsTemplateRef) {\n <!-- TemplateRef rendering -->\n @let isClickableTpl = cell.column.id | zTableCellClickable: zConfig().columns;\n <div\n [ngClass]=\"cell | zTableCellConfig: zConfig().columns : 'contentClass'\"\n [ngStyle]=\"cell | zTableCellConfig: zConfig().columns : 'contentStyle'\"\n (click)=\"isClickableTpl && onCellClick(row, cell.column.id, cell.getValue())\">\n <ng-container\n *ngTemplateOutlet=\"cellContent; context: { $implicit: cell.getContext() }\" />\n </div>\n } @else if (cellContent | zTableHasIcon) {\n <!-- Icon syntax rendering -->\n @let isClickableIconTpl = cell.column.id | zTableCellClickable: zConfig().columns;\n <z-table-icon-text\n [zText]=\"cellContent\"\n [zTooltip]=\"cell | zTableCellConfig: zConfig().columns : 'contentTooltip'\"\n [ngClass]=\"cell | zTableCellConfig: zConfig().columns : 'contentClass'\"\n [ngStyle]=\"cell | zTableCellConfig: zConfig().columns : 'contentStyle'\"\n (click)=\"isClickableIconTpl && onCellClick(row, cell.column.id, cell.getValue())\" />\n } @else {\n <!-- Default/innerHTML rendering -->\n @let isClickableDefaultTpl = cell.column.id | zTableCellClickable: zConfig().columns;\n <div\n class=\"z-table-cell-text\"\n z-tooltip\n [zContent]=\"\n (cell | zTableCellConfig: zConfig().columns : 'contentTooltip') || cellContent\n \"\n [innerHTML]=\"cellContent | translate | zSafeHtml\"\n [ngClass]=\"cell | zTableCellConfig: zConfig().columns : 'contentClass'\"\n [ngStyle]=\"cell | zTableCellConfig: zConfig().columns : 'contentStyle'\"\n (click)=\"\n isClickableDefaultTpl && onCellClick(row, cell.column.id, cell.getValue())\n \"></div>\n }\n </ng-container>\n }\n }\n </td>\n }\n }\n </tr>\n\n <!-- Expanded Row Detail -->\n @if (row.getIsExpanded() && row.depth === 0 && !row.subRows?.length && zConfig().expandedRowTemplate) {\n <tr class=\"z-expanded-row\">\n <td [attr.colspan]=\"row.getVisibleCells().length\" class=\"p-0\">\n <ng-container *ngTemplateOutlet=\"zConfig().expandedRowTemplate!; context: { $implicit: row }\" />\n </td>\n </tr>\n }\n </ng-template>\n\n <!-- Render Top Pinned Rows (hidden when filtered data is empty) -->\n @if (!isEmpty()) {\n @for (row of table.getTopRows(); track row.id) {\n <ng-container *ngTemplateOutlet=\"rowTemplate; context: { $implicit: row }\" />\n }\n }\n\n <!-- Render Center Rows -->\n @for (row of table.getCenterRows(); track row.id) {\n <ng-container *ngTemplateOutlet=\"rowTemplate; context: { $implicit: row }\" />\n }\n\n <!-- Render Bottom Pinned Rows (hidden when filtered data is empty) -->\n @if (!isEmpty()) {\n @for (row of bottomRowsReversed(); track row.id) {\n <ng-container *ngTemplateOutlet=\"rowTemplate; context: { $implicit: row }\" />\n }\n }\n </tbody>\n </table>\n }\n </ng-scrollbar>\n }\n <!-- end @else -->\n </div>\n\n <!-- Footer table -->\n @if (hasFooter()) {\n <div\n class=\"z-tfoot-wrapper\"\n [class.z-shadow-footer]=\"shouldFooterShowShadow()\"\n [class.z-scroll-left]=\"hasScrollLeft()\"\n [class.z-scroll-right]=\"hasScrollRight()\"\n #tfootWrapper>\n <table [ngStyle]=\"columnSizeVars()\" [style.width.px]=\"table.getTotalSize()\">\n <ng-container *ngTemplateOutlet=\"colGroupTpl\" />\n <tfoot>\n @for (footerGroup of orderedFooterGroups(); track footerGroup.id) {\n @if (footerGroup | zTableFooterContent: zConfig().columns) {\n <tr>\n @for (footer of footerGroup.headers; track footer.id) {\n @let rowSpan = footer | zTableSpan: zConfig().columns : 'footerRowSpan';\n @let shouldRender = footer | zTableCellRender: footerGroup.headers : zConfig().columns : 'footer';\n @if (rowSpan && shouldRender) {\n <th\n [ngStyle]=\"\n footer.column\n | zTablePinningStyles: footer : 'footer' : table : zConfig().columns : columnSizingInfo()\n \"\n [class]=\"\n (footer.column.id | zTableColumnConfig: zConfig().columns : 'footerClass') +\n ' ' +\n (footer.column.id | zTableColumnConfig: zConfig().columns : 'footerAlignClass')\n \"\n [style]=\"footer.column.id | zTableColumnConfig: zConfig().columns : 'footerStyle'\"\n [class.z-sticky-left]=\"footer.column.getIsPinned() === 'left'\"\n [class.z-sticky-right]=\"footer.column.getIsPinned() === 'right'\"\n [class.z-sticky-left-last]=\"\n footer | zTableCellPin: 'isLastLeftPinned' : zConfig().columns : 'footer'\n \"\n [class.z-sticky-right-first]=\"\n footer | zTableCellPin: 'isFirstRightPinned' : zConfig().columns : 'footer'\n \"\n [class.z-sticky-right-last]=\"\n footer | zTableCellPin: 'isLastRightPinned' : zConfig().columns : 'footer'\n \"\n [class.z-at-left-edge]=\"footer | zTableCellOffset: orderedLeafColumns()\"\n [attr.rowspan]=\"rowSpan\"\n [attr.colspan]=\"footer | zTableSpan: zConfig().columns : 'footerColSpan'\">\n @let configFooterContent =\n footer.column.id | zTableColumnConfig: zConfig().columns : 'footerContent';\n @if (footer.column.columnDef.footer) {\n <ng-container\n *flexRender=\"footer.column.columnDef.footer; props: footer.getContext(); let footerContent\">\n <div\n class=\"flex w-full items-center\"\n [class.justify-center]=\"\n (footer.column.id | zTableColumnConfig: zConfig().columns : 'footerAlignClass') ===\n 'text-center'\n \"\n [class.justify-end]=\"\n (footer.column.id | zTableColumnConfig: zConfig().columns : 'footerAlignClass') ===\n 'text-right'\n \">\n @if (footerContent | zTableIsTemplateRef) {\n <!-- TemplateRef rendering -->\n <div\n [ngClass]=\"\n footer.column.id | zTableColumnConfig: zConfig().columns : 'footerContentClass'\n \"\n [ngStyle]=\"\n footer.column.id | zTableColumnConfig: zConfig().columns : 'footerContentStyle'\n \">\n <ng-container\n *ngTemplateOutlet=\"footerContent; context: { $implicit: footer.getContext() }\" />\n </div>\n } @else if (footerContent | zTableHasIcon) {\n <!-- Icon syntax rendering -->\n <z-table-icon-text\n [zText]=\"footerContent\"\n [zTooltip]=\"footer.column.id | zTableColumnConfig: zConfig().columns : 'footerTooltip'\"\n [ngClass]=\"\n footer.column.id | zTableColumnConfig: zConfig().columns : 'footerContentClass'\n \"\n [ngStyle]=\"\n footer.column.id | zTableColumnConfig: zConfig().columns : 'footerContentStyle'\n \" />\n } @else {\n <!-- Default/string rendering -->\n <span\n class=\"z-table-cell-text\"\n z-tooltip\n [zContent]=\"\n (footer.column.id | zTableColumnConfig: zConfig().columns : 'footerTooltip') ||\n footerContent\n \"\n [ngClass]=\"\n footer.column.id | zTableColumnConfig: zConfig().columns : 'footerContentClass'\n \"\n [ngStyle]=\"\n footer.column.id | zTableColumnConfig: zConfig().columns : 'footerContentStyle'\n \">\n {{ footerContent | translate }}\n </span>\n }\n </div>\n </ng-container>\n } @else if (configFooterContent) {\n <!-- Fallback for group columns without TanStack footer -->\n <div\n class=\"flex w-full items-center\"\n [class.justify-center]=\"\n (footer.column.id | zTableColumnConfig: zConfig().columns : 'footerAlignClass') ===\n 'text-center'\n \"\n [class.justify-end]=\"\n (footer.column.id | zTableColumnConfig: zConfig().columns : 'footerAlignClass') ===\n 'text-right'\n \">\n <span\n class=\"z-table-cell-text\"\n z-tooltip\n [zContent]=\"\n (footer.column.id | zTableColumnConfig: zConfig().columns : 'footerTooltip') ||\n $any(configFooterContent)\n \"\n [ngClass]=\"footer.column.id | zTableColumnConfig: zConfig().columns : 'footerContentClass'\"\n [ngStyle]=\"footer.column.id | zTableColumnConfig: zConfig().columns : 'footerContentStyle'\">\n {{ $any(configFooterContent) | translate }}\n </span>\n </div>\n }\n </th>\n }\n }\n </tr>\n }\n }\n </tfoot>\n </table>\n </div>\n }\n</div>\n\n<!-- Pagination -->\n@if (zConfig().pagination?.enabled !== false) {\n @let totalRows = table.getFilteredRowModel().rows.length;\n <div class=\"mt-4 flex items-center justify-between gap-4\">\n <div class=\"truncate text-sm text-gray-500\">\n {{ 'i18n_z_ui_table_total_rows' | translate: { total: (zConfig().totalCount ?? totalRows | zFormatNum) } }}\n </div>\n <z-pagination\n [zTotal]=\"zConfig().totalCount ?? totalRows\"\n [(zPageIndex)]=\"pagination().pageIndex\"\n [(zPageSize)]=\"pagination().pageSize\"\n [zPageSizeOptions]=\"zConfig().pagination?.pageSizeOptions ?? [10, 20, 50, 100]\"\n [zShowSizeChanger]=\"zConfig().pagination?.showSizeChanger ?? true\"\n [zShowQuickJumper]=\"zConfig().pagination?.showQuickJumper ?? false\"\n [zShowTotal]=\"false\"\n [zDisabled]=\"zConfig().pagination?.disabled || isLoading() || isProcessing()\"\n (zOnPageChange)=\"onPageChange($event)\" />\n </div>\n}\n\n<!-- Settings Drawer -->\n<z-drawer\n [(zVisible)]=\"showSettingsDrawer\"\n [zTitle]=\"'i18n_z_ui_table_settings_title' | translate\"\n zPlacement=\"right\"\n zWidth=\"500px\"\n [zShadow]=\"true\"\n [zOkText]=\"null\"\n [zCancelText]=\"'i18n_z_ui_drawer_close' | translate\">\n <div class=\"z-table-settings-drawer px-4\">\n <!-- Display Settings -->\n <div class=\"mb-4\">\n <h4 class=\"text-foreground mb-2 text-sm font-semibold\">{{ 'i18n_z_ui_table_display_settings' | translate }}</h4>\n <p class=\"text-muted-foreground mb-3 text-xs\">{{ 'i18n_z_ui_table_display_settings_desc' | translate }}</p>\n <div class=\"grid grid-cols-2 gap-x-4 gap-y-3\">\n <z-checkbox\n [zChecked]=\"showHorizontalBorder()\"\n [zText]=\"'i18n_z_ui_table_horizontal_border' | translate\"\n (zChange)=\"showHorizontalBorder.set(!showHorizontalBorder())\" />\n <z-checkbox\n [zChecked]=\"showVerticalBorder()\"\n [zText]=\"'i18n_z_ui_table_vertical_border' | translate\"\n (zChange)=\"showVerticalBorder.set(!showVerticalBorder())\" />\n <z-checkbox\n [zChecked]=\"showHeaderFooterShadow()\"\n [zText]=\"'i18n_z_ui_table_header_footer_shadow' | translate\"\n (zChange)=\"showHeaderFooterShadow.set(!showHeaderFooterShadow())\" />\n </div>\n </div>\n\n <!-- Divider -->\n <div class=\"border-border my-4 border-t\"></div>\n\n <!-- Unified Column Settings -->\n @if (zConfig().enableSettings) {\n <div class=\"mb-4\">\n <h4 class=\"text-foreground mb-2 text-sm font-semibold\">{{ 'i18n_z_ui_table_column_settings' | translate }}</h4>\n <p class=\"text-muted-foreground mb-3 text-xs\">{{ 'i18n_z_ui_table_column_settings_desc' | translate }}</p>\n\n <!-- Unpinned Columns (Draggable) -->\n <div\n cdkDropList\n #columnDropList=\"cdkDropList\"\n (cdkDropListDropped)=\"onPendingColumnDrop($event)\"\n class=\"z-column-drop-list space-y-1.5\">\n @for (columnId of columnOrder(); track columnId; let i = $index) {\n @if (columnId !== 'expand' && columnId !== 'select') {\n @let column = table.getColumn(columnId);\n @let isPinned = column?.getIsPinned();\n @let isVisible = columnVisibility()[columnId] !== false;\n @let canPin = column?.getCanPin() !== false && zConfig().enableColumnPinning;\n @if (!isPinned) {\n <div\n cdkDrag\n [cdkDragData]=\"columnId\"\n cdkDragLockAxis=\"y\"\n cdkDragBoundary=\".z-column-drop-list\"\n cdkDragPreviewClass=\"z-drag-preview\"\n class=\"z-drag-item border-border bg-card hover:border-primary flex cursor-grab items-center gap-2 rounded border px-2 py-1.5 text-sm active:cursor-grabbing\"\n [class.opacity-60]=\"!isVisible\">\n <!-- Drag Handle -->\n <z-icon\n cdkDragHandle\n zType=\"lucideGripVertical\"\n zSize=\"14\"\n class=\"text-muted-foreground shrink-0 cursor-grab active:cursor-grabbing\" />\n\n <!-- Visibility Checkbox -->\n <input\n type=\"checkbox\"\n [checked]=\"isVisible\"\n (change)=\"onToggleColumnVisibility(columnId)\"\n (mousedown)=\"$event.stopPropagation()\"\n class=\"border-input h-4 w-4 shrink-0 cursor-pointer rounded\" />\n\n <!-- Column Name -->\n <span class=\"flex min-w-0 flex-1 flex-col\">\n <span class=\"truncate\" [class.text-muted-foreground]=\"!isVisible\">\n {{ columnId | zTableColumnHeader: zConfig().columns | translate }}\n </span>\n @let parents = columnId | zTableColumnParents: zConfig().columns;\n @if (parents) {\n <span class=\"text-muted-foreground truncate text-[10px]\">({{ parents | translate }})</span>\n }\n </span>\n\n <!-- Pin Buttons -->\n @if (canPin) {\n <div class=\"flex shrink-0 items-center gap-0.5\" (mousedown)=\"$event.stopPropagation()\">\n <button\n type=\"button\"\n [disabled]=\"!isVisible\"\n (click)=\"onToggleColumnPin(columnId, 'left')\"\n class=\"text-muted-foreground hover:bg-muted cursor-pointer rounded p-1 text-xs transition-colors disabled:cursor-not-allowed disabled:opacity-40\"\n title=\"Pin Left\">\n <z-icon zType=\"lucideArrowLeft\" zSize=\"12\" />\n </button>\n <button\n type=\"button\"\n [disabled]=\"!isVisible\"\n (click)=\"onToggleColumnPin(columnId, 'right')\"\n class=\"text-muted-foreground hover:bg-muted cursor-pointer rounded p-1 text-xs transition-colors disabled:cursor-not-allowed disabled:opacity-40\"\n title=\"Pin Right\">\n <z-icon zType=\"lucideArrowRight\" zSize=\"12\" />\n </button>\n </div>\n }\n </div>\n }\n }\n }\n </div>\n\n <!-- Pinned Columns Section -->\n @if (zConfig().enableColumnPinning) {\n @if (pinnedColumnIds().length > 0) {\n <div class=\"border-border mt-4 border-t pt-4\">\n <h5 class=\"text-muted-foreground mb-2 text-xs font-medium\">\n {{ 'i18n_z_ui_table_pinned_columns' | translate }}\n </h5>\n <div class=\"space-y-1.5\">\n @for (columnId of pinnedColumnIds(); track columnId) {\n @let column = table.getColumn(columnId);\n @let isPinned = column?.getIsPinned();\n @let isVisible = columnVisibility()[columnId] !== false;\n <div\n class=\"border-border bg-muted/30 flex items-center gap-2 rounded border px-2 py-1.5 text-sm\"\n [class.opacity-60]=\"!isVisible\">\n <!-- Pin Icon -->\n <z-icon zType=\"lucidePin\" zSize=\"14\" class=\"text-primary shrink-0\" />\n\n <!-- Visibility Checkbox -->\n <input\n type=\"checkbox\"\n [checked]=\"isVisible\"\n (change)=\"onToggleColumnVisibility(columnId)\"\n class=\"border-input h-4 w-4 shrink-0 cursor-pointer rounded\" />\n\n <!-- Column Name -->\n <span class=\"flex min-w-0 flex-1 flex-col\">\n <span class=\"truncate\" [class.text-muted-foreground]=\"!isVisible\">\n {{ columnId | zTableColumnHeader: zConfig().columns | translate }}\n </span>\n @let pinnedParents = columnId | zTableColumnParents: zConfig().columns;\n @if (pinnedParents) {\n <span class=\"text-muted-foreground truncate text-[10px]\">\n ({{ pinnedParents | translate }})\n </span>\n }\n </span>\n\n <!-- Position Badge -->\n <span class=\"bg-primary/10 text-primary shrink-0 rounded px-1.5 py-0.5 text-[10px] font-medium\">\n {{\n isPinned === 'left'\n ? ('i18n_z_ui_table_left' | translate)\n : ('i18n_z_ui_table_right' | translate)\n }}\n </span>\n\n <!-- Unpin Button -->\n <button\n type=\"button\"\n (click)=\"onToggleColumnPin(columnId, isPinned === 'left' ? 'left' : 'right')\"\n class=\"text-muted-foreground hover:bg-muted hover:text-foreground cursor-pointer rounded p-1 text-xs transition-colors\"\n title=\"Unpin\">\n <z-icon zType=\"lucideX\" zSize=\"12\" />\n </button>\n </div>\n }\n </div>\n </div>\n }\n }\n </div>\n }\n </div>\n</z-drawer>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|