@tociva/tailng-ui 0.12.0 → 0.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/tociva-tailng-ui-buttons-indicators.mjs +497 -16
- package/fesm2022/tociva-tailng-ui-buttons-indicators.mjs.map +1 -1
- package/fesm2022/tociva-tailng-ui-data-table-structure.mjs +802 -17
- package/fesm2022/tociva-tailng-ui-data-table-structure.mjs.map +1 -1
- package/fesm2022/tociva-tailng-ui-form-controls.mjs +3096 -17
- package/fesm2022/tociva-tailng-ui-form-controls.mjs.map +1 -1
- package/fesm2022/tociva-tailng-ui-layout.mjs +438 -17
- package/fesm2022/tociva-tailng-ui-layout.mjs.map +1 -1
- package/fesm2022/tociva-tailng-ui-navigation.mjs +780 -17
- package/fesm2022/tociva-tailng-ui-navigation.mjs.map +1 -1
- package/fesm2022/tociva-tailng-ui-popups-overlays.mjs +1115 -17
- package/fesm2022/tociva-tailng-ui-popups-overlays.mjs.map +1 -1
- package/fesm2022/tociva-tailng-ui-utilities.mjs +129 -16
- package/fesm2022/tociva-tailng-ui-utilities.mjs.map +1 -1
- package/fesm2022/tociva-tailng-ui.mjs +15 -17
- package/fesm2022/tociva-tailng-ui.mjs.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tociva-tailng-ui-data-table-structure.mjs","sources":["../../../../libs/ui/data-table-structure/src/public-api.ts","../../../../libs/ui/data-table-structure/src/tociva-tailng-ui-data-table-structure.ts"],"sourcesContent":["export * from './lib';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,YAAA,CAAA,OAAA,CAAA,OAAA,CAAA,EAAA,OAAA,CAAA;;ACAA;;AAEG"}
|
|
1
|
+
{"version":3,"file":"tociva-tailng-ui-data-table-structure.mjs","sources":["../../../../libs/ui/data-table-structure/src/lib/table/core/tokens/table.token.ts","../../../../libs/ui/data-table-structure/src/lib/table/defs/cell.def.ts","../../../../libs/ui/data-table-structure/src/lib/table/defs/header.def.ts","../../../../libs/ui/data-table-structure/src/lib/table/ui/column/col.component.ts","../../../../libs/ui/data-table-structure/src/lib/table/features/sort.feature.ts","../../../../libs/ui/data-table-structure/src/lib/table/core/controller/sort.controller.ts","../../../../libs/ui/data-table-structure/src/lib/table/features/filter.feature.ts","../../../../libs/ui/data-table-structure/src/lib/table/core/controller/filter.controller.ts","../../../../libs/ui/data-table-structure/src/lib/table/core/controller/column-meta.controller.ts","../../../../libs/ui/data-table-structure/src/lib/table/core/controller/table.controller.ts","../../../../libs/ui/data-table-structure/src/lib/table/ui/table/table.component.ts","../../../../libs/ui/data-table-structure/src/lib/table/ui/table/table.component.html","../../../../libs/ui/data-table-structure/src/lib/table/directives/sort-header.directive.ts","../../../../libs/ui/data-table-structure/src/lib/table/ui/sort/sort-icon.component.ts","../../../../libs/ui/data-table-structure/src/lib/table/directives/filter-trigger.directive.ts","../../../../libs/ui/data-table-structure/src/lib/table/ui/filter/filter-panel.component.ts","../../../../libs/ui/data-table-structure/src/lib/table/ui/filter/filter-panel.component.html","../../../../libs/ui/data-table-structure/src/lib/sort-header/sort-header.component.ts","../../../../libs/ui/data-table-structure/src/lib/sort-header/sort-header.component.html","../../../../libs/ui/data-table-structure/src/lib/tree/tree.component.ts","../../../../libs/ui/data-table-structure/src/lib/tree/tree.component.html","../../../../libs/ui/data-table-structure/src/lib/empty-state/empty-state.component.ts","../../../../libs/ui/data-table-structure/src/lib/empty-state/empty-state.component.html","../../../../libs/ui/data-table-structure/src/lib/virtual-scroll/virtual-scroll.component.ts","../../../../libs/ui/data-table-structure/src/lib/virtual-scroll/virtual-scroll.component.html","../../../../libs/ui/data-table-structure/src/lib/index.ts","../../../../libs/ui/data-table-structure/src/tociva-tailng-ui-data-table-structure.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { TngTableController } from '../controller/table.controller';\n\nexport const TNG_TABLE = new InjectionToken<TngTableController>('TNG_TABLE');\n","import { Directive, TemplateRef } from '@angular/core';\nimport { TngCellContext } from '../core/types';\n\n@Directive({\n selector: 'ng-template[tngCell]',\n standalone: true,\n})\nexport class TngCellDef<T = unknown> {\n constructor(public readonly tpl: TemplateRef<TngCellContext<T>>) {}\n}\n","import { Directive, TemplateRef } from '@angular/core';\nimport { TngHeaderContext } from '../core/types';\n\n@Directive({\n selector: 'ng-template[tngHeader]',\n standalone: true,\n})\nexport class TngHeaderDef {\n constructor(public readonly tpl: TemplateRef<TngHeaderContext>) {}\n}\n","import { Component, ContentChild, TemplateRef, effect, inject, input } from '@angular/core';\nimport { TNG_TABLE } from '../../core/tokens/table.token';\nimport type { TngAlign, TngColumnFilterMeta } from '../../core/types';\nimport { TngCellDef } from '../../defs/cell.def';\nimport { TngHeaderDef } from '../../defs/header.def';\n\n@Component({\n selector: 'tng-col',\n standalone: true,\n template: '',\n})\nexport class TngCol<T> {\n /** unique column id */\n readonly id = input.required<string>();\n\n /** header label (fallback when no tngHeader template is provided) */\n readonly header = input<string>('');\n\n /** optional value resolver */\n readonly value = input<((row: T) => unknown) | null>(null);\n\n /** width (e.g. '120px', '10rem', '20%') */\n readonly width = input<string | null>(null);\n\n /** alignment */\n readonly align = input<TngAlign>('left');\n\n /** extra CSS classes applied to th/td */\n readonly klass = input<string | null>(null);\n\n /** default filter meta (used by tng-filter-panel) */\n readonly filter = input<TngColumnFilterMeta | null>(null);\n\n private readonly table = inject(TNG_TABLE);\n\n // Projected templates\n @ContentChild(TngCellDef)\n cellDef?: TngCellDef<T>;\n\n @ContentChild(TngHeaderDef)\n headerDef?: TngHeaderDef;\n\n constructor() {\n // Register column meta for default filter panel + any future features\n effect((onCleanup) => {\n const id = this.id();\n\n this.table.registerColumn({\n id,\n label: this.resolveHeader(),\n filter: this.filter() ?? undefined,\n });\n\n onCleanup(() => this.table.unregisterColumn(id));\n });\n }\n\n resolveHeader(): string {\n return this.header() || this.id();\n }\n\n resolveValue(row: T): unknown {\n const valueFn = this.value();\n return valueFn ? valueFn(row) : (row as any)?.[this.id()];\n }\n\n resolveCellTpl(): TemplateRef<any> | undefined {\n return this.cellDef?.tpl;\n }\n\n resolveHeaderTpl(): TemplateRef<any> | undefined {\n return this.headerDef?.tpl;\n }\n}\n","// core/features/sort.feature.ts\nimport { signal } from '@angular/core';\nimport type { TngSort, TngSortDir } from '../core/types';\n\nexport class TngTableSortFeature {\n readonly sort = signal<TngSort>({ active: '', direction: '' });\n\n toggleSort(active: string): void {\n const cur = this.sort();\n const same = cur.active === active;\n\n const nextDir: TngSortDir =\n !same ? 'asc' : cur.direction === 'asc' ? 'desc' : cur.direction === 'desc' ? '' : 'asc';\n\n this.sort.set({\n active: nextDir ? active : '',\n direction: nextDir,\n });\n }\n\n setSort(sort: TngSort): void {\n this.sort.set(sort);\n }\n\n clearSort(): void {\n this.sort.set({ active: '', direction: '' });\n }\n\n directionFor(colId: string): TngSortDir {\n const s = this.sort();\n return s.active === colId ? s.direction : '';\n }\n\n isSorted(colId: string): boolean {\n return this.directionFor(colId) !== '';\n }\n}\n","import { TngTableSortFeature } from '../../features/sort.feature';\nimport type { TngSort, TngSortDir } from '../types';\nimport type { TngControllerFeature } from './controller-feature';\n\nexport class TngSortController implements TngControllerFeature {\n\n readonly featureId = 'sort';\n \n private readonly feature = new TngTableSortFeature();\n\n readonly sort = this.feature.sort;\n\n toggleSort(active: string): void {\n this.feature.toggleSort(active);\n }\n setSort(sort: TngSort): void {\n this.feature.setSort(sort);\n }\n clearSort(): void {\n this.feature.clearSort();\n }\n directionFor(colId: string): TngSortDir {\n return this.feature.directionFor(colId);\n }\n isSorted(colId: string): boolean {\n return this.feature.isSorted(colId);\n }\n}\n","import { signal } from '@angular/core';\nimport type { TngFilterValue, TngFilters } from '../core/types';\n\nexport class TngTableFilterFeature {\n readonly filters = signal<TngFilters>({});\n\n /** Active filter UI column id ('' means closed) */\n readonly openFilterColId = signal<string>('');\n\n /** Anchor element for positioning the overlay */\n readonly anchorEl = signal<HTMLElement | null>(null);\n\n openFilter(colId: string, anchorEl?: HTMLElement | null): void {\n this.openFilterColId.set(colId);\n this.anchorEl.set(anchorEl ?? null);\n }\n\n closeFilter(): void {\n this.openFilterColId.set('');\n this.anchorEl.set(null);\n }\n\n toggleFilter(colId: string, anchorEl?: HTMLElement | null): void {\n if (this.openFilterColId() === colId) {\n this.closeFilter();\n return;\n }\n this.openFilter(colId, anchorEl);\n }\n\n isFilterOpenFor(colId: string): boolean {\n return this.openFilterColId() === colId;\n }\n\n setFilter(colId: string, value: TngFilterValue): void {\n this.filters.update((cur) => ({ ...cur, [colId]: value }));\n }\n\n clearFilter(colId: string): void {\n this.filters.update((cur) => {\n if (!(colId in cur)) return cur;\n const next = { ...cur };\n delete next[colId];\n return next;\n });\n\n if (this.openFilterColId() === colId) this.closeFilter();\n }\n\n clearAllFilters(): void {\n this.filters.set({});\n this.closeFilter();\n }\n\n filterValueFor(colId: string): TngFilterValue | undefined {\n return this.filters()[colId];\n }\n\n isFiltered(colId: string): boolean {\n return colId in this.filters();\n }\n}\n","import { signal } from '@angular/core';\nimport { TngTableFilterFeature } from '../../features/filter.feature';\nimport type { TngFilterValue, TngFilters } from '../types';\nimport type { TngControllerFeature } from './controller-feature';\n\nexport class TngFilterController implements TngControllerFeature {\n \n readonly featureId = 'filter';\n \n private readonly feature = new TngTableFilterFeature();\n\n readonly filters = this.feature.filters;\n readonly openFilterColId = this.feature.openFilterColId;\n readonly filterAnchorEl = this.feature.anchorEl;\n\n private readonly _filterPanelKlass = signal<string>('');\n\n setFilterPanelKlass(v: string): void {\n this._filterPanelKlass.set(v);\n }\n filterPanelKlass(): string {\n return this._filterPanelKlass();\n }\n\n openFilter(colId: string, anchorEl?: HTMLElement | null): void {\n this.feature.openFilter(colId, anchorEl);\n }\n closeFilter(): void {\n this.feature.closeFilter();\n }\n toggleFilter(colId: string, anchorEl?: HTMLElement | null): void {\n this.feature.toggleFilter(colId, anchorEl);\n }\n isFilterOpenFor(colId: string): boolean {\n return this.feature.isFilterOpenFor(colId);\n }\n\n setFilter(colId: string, value: TngFilterValue): void {\n this.feature.setFilter(colId, value);\n }\n clearFilter(colId: string): void {\n this.feature.clearFilter(colId);\n }\n clearAllFilters(): void {\n this.feature.clearAllFilters();\n }\n\n filterValueFor(colId: string): TngFilterValue | undefined {\n return this.feature.filterValueFor(colId);\n }\n isFiltered(colId: string): boolean {\n return this.feature.isFiltered(colId);\n }\n\n setFilters(filters: TngFilters): void {\n this.filters.set(filters);\n }\n}\n","import { signal } from '@angular/core';\nimport type { TngColumnMeta } from '../types';\nimport type { TngControllerFeature } from './controller-feature';\n\nexport class TngColumnMetaController implements TngControllerFeature {\n\n readonly featureId = 'column-meta';\n \n private readonly colMeta = signal<Record<string, TngColumnMeta>>({});\n\n registerColumn(meta: TngColumnMeta): void {\n this.colMeta.update((cur) => ({ ...cur, [meta.id]: meta }));\n }\n\n unregisterColumn(colId: string): void {\n this.colMeta.update((cur) => {\n if (!(colId in cur)) return cur;\n const next = { ...cur };\n delete next[colId];\n return next;\n });\n }\n\n metaFor(colId: string): TngColumnMeta | undefined {\n return this.colMeta()[colId];\n }\n}\n","import type { TngControllerFeature } from './controller-feature';\nimport { TngSortController } from './sort.controller';\nimport { TngFilterController } from './filter.controller';\nimport { TngColumnMetaController } from './column-meta.controller';\n\nexport class TngTableController {\n\n readonly _featureId = 'table';\n // Keep references to run lifecycle hooks if you need them later\n private readonly features: TngControllerFeature[] = [];\n\n readonly sortCtrl = new TngSortController();\n readonly filterCtrl = new TngFilterController();\n readonly colMetaCtrl = new TngColumnMetaController();\n\n constructor() {\n this.features = [this.sortCtrl, this.filterCtrl, this.colMetaCtrl];\n this.features.forEach((f) => f.onInit?.());\n }\n\n destroy(): void {\n this.features.forEach((f) => f.onDestroy?.());\n }\n\n // Optional: re-expose a flat API (so existing code doesn't change)\n readonly sort = this.sortCtrl.sort;\n\n toggleSort = this.sortCtrl.toggleSort.bind(this.sortCtrl);\n setSort = this.sortCtrl.setSort.bind(this.sortCtrl);\n clearSort = this.sortCtrl.clearSort.bind(this.sortCtrl);\n directionFor = this.sortCtrl.directionFor.bind(this.sortCtrl);\n isSorted = this.sortCtrl.isSorted.bind(this.sortCtrl);\n\n readonly filters = this.filterCtrl.filters;\n readonly openFilterColId = this.filterCtrl.openFilterColId;\n readonly filterAnchorEl = this.filterCtrl.filterAnchorEl;\n\n setFilterPanelKlass = this.filterCtrl.setFilterPanelKlass.bind(this.filterCtrl);\n filterPanelKlass = this.filterCtrl.filterPanelKlass.bind(this.filterCtrl);\n\n openFilter = this.filterCtrl.openFilter.bind(this.filterCtrl);\n closeFilter = this.filterCtrl.closeFilter.bind(this.filterCtrl);\n toggleFilter = this.filterCtrl.toggleFilter.bind(this.filterCtrl);\n isFilterOpenFor = this.filterCtrl.isFilterOpenFor.bind(this.filterCtrl);\n\n setFilter = this.filterCtrl.setFilter.bind(this.filterCtrl);\n clearFilter = this.filterCtrl.clearFilter.bind(this.filterCtrl);\n clearAllFilters = this.filterCtrl.clearAllFilters.bind(this.filterCtrl);\n filterValueFor = this.filterCtrl.filterValueFor.bind(this.filterCtrl);\n isFiltered = this.filterCtrl.isFiltered.bind(this.filterCtrl);\n setFilters = this.filterCtrl.setFilters.bind(this.filterCtrl);\n\n registerColumn = this.colMetaCtrl.registerColumn.bind(this.colMetaCtrl);\n unregisterColumn = this.colMetaCtrl.unregisterColumn.bind(this.colMetaCtrl);\n metaFor = this.colMetaCtrl.metaFor.bind(this.colMetaCtrl);\n}\n","import { NgStyle, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterContentInit,\n Component,\n ContentChildren,\n EventEmitter,\n Output,\n QueryList,\n computed,\n effect,\n inject,\n input,\n signal,\n} from '@angular/core';\n\nimport { TngCol } from '../column/col.component';\n\nimport { TngTableController } from '../../core/controller/table.controller';\nimport type { TngSort, TngAlign, TngResolvedColumn, TngCellContext, TngHeaderContext } from '../../core/types';\nimport { TNG_TABLE } from '../../core/tokens/table.token';\n\n@Component({\n selector: 'tng-table',\n standalone: true,\n imports: [NgTemplateOutlet, NgStyle],\n templateUrl: './table.component.html',\n providers: [{ provide: TNG_TABLE, useFactory: () => new TngTableController() }],\n})\nexport class TngTable<T extends Record<string, any> = any> implements AfterContentInit {\n @ContentChildren(TngCol)\n private colDefs!: QueryList<TngCol<T>>;\n\n private readonly controller = inject(TNG_TABLE);\n\n /** Emits on any sort change (both client & server modes). */\n @Output() readonly sortChange = new EventEmitter<TngSort>();\n\n /* =====================\n * Inputs\n * ===================== */\n readonly rows = input<T[]>([]);\n readonly rowKey = input<string | null>(null);\n\n /** Default: client (static) sort */\n readonly sortMode = input<'client' | 'server'>('client');\n\n /** styling */\n readonly tableKlass = input<string>('w-full text-sm');\n readonly theadKlass = input<string>('bg-alternate-background');\n readonly thKlass = input<string>('px-3 py-2 text-left font-semibold border-b border-border');\n readonly tdKlass = input<string>('px-3 py-2 border-b border-border align-middle');\n readonly tbodyKlass = input<string>('bg-bg');\n\n /** empty */\n readonly emptyText = input<string>('No data');\n\n /* =====================\n * Internal projected columns signal\n * ===================== */\n private readonly projectedCols = signal<TngCol<T>[]>([]);\n\n constructor() {\n // Emit sortChange whenever controller.sort changes (skip initial emission)\n let first = true;\n effect(() => {\n const s = this.controller.sort();\n if (first) {\n first = false;\n return;\n }\n this.sortChange.emit(s);\n });\n }\n\n ngAfterContentInit(): void {\n const sync = () => this.projectedCols.set(this.colDefs?.toArray() ?? []);\n sync();\n this.colDefs.changes.subscribe(sync);\n }\n\n /* =====================\n * Columns\n * ===================== */\n readonly columns = computed<TngResolvedColumn<T>[]>(() =>\n this.projectedCols().map((c) => ({\n id: c.id(),\n header: c.resolveHeader(),\n align: c.align(),\n width: c.width() ?? undefined,\n klass: c.klass() ?? undefined,\n value: (row: T) => c.resolveValue(row),\n headerTpl: c.resolveHeaderTpl() as any,\n cellTpl: c.resolveCellTpl() as any,\n }))\n );\n\n /* =====================\n * Rows view (client sorting)\n * ===================== */\n readonly viewRows = computed<T[]>(() => {\n const rows = this.rows();\n const mode = this.sortMode();\n const sort = this.controller.sort();\n\n if (mode !== 'client') return rows;\n if (!sort.active || !sort.direction) return rows;\n\n const dir = sort.direction === 'asc' ? 1 : -1;\n const colId = sort.active;\n\n // stable sort\n return rows\n .map((row, i) => ({ row, i, key: this.sortValue(row, colId) }))\n .sort((a, b) => {\n const c = this.compare(a.key, b.key);\n return c !== 0 ? c * dir : a.i - b.i;\n })\n .map((x) => x.row);\n });\n\n readonly hasRows = computed(() => (this.viewRows()?.length ?? 0) > 0);\n\n trackRow = (index: number, row: T) => {\n const key = this.rowKey();\n return key ? (row as any)?.[key] ?? index : index;\n };\n\n /* =====================\n * Rendering helpers\n * ===================== */\n alignClass(align?: TngAlign): string {\n switch (align) {\n case 'right':\n return 'text-right';\n case 'center':\n return 'text-center';\n default:\n return 'text-left';\n }\n }\n\n styleWidth(col: TngResolvedColumn<T>): Record<string, string> | null {\n return col.width ? { width: col.width } : null;\n }\n\n cellCtx(row: T, rowIndex: number, col: TngResolvedColumn<T>): TngCellContext<T> {\n const value = col.value ? col.value(row) : (row as any)?.[col.id];\n return { $implicit: row, row, rowIndex, colId: col.id, value };\n }\n\n headerCtx(col: TngResolvedColumn<T>): TngHeaderContext {\n return { colId: col.id, header: col.header };\n }\n\n /* =====================\n * Sort helpers\n * ===================== */\n private sortValue(row: T, colId: string): unknown {\n const col = this.columns().find((c) => c.id === colId);\n if (col?.value) return col.value(row);\n return (row as any)?.[colId];\n }\n\n private compare(a: unknown, b: unknown): number {\n // null/undefined first\n if (a == null && b == null) return 0;\n if (a == null) return -1;\n if (b == null) return 1;\n\n // numbers (avoid booleans)\n if (typeof a === 'number' && typeof b === 'number') {\n return a === b ? 0 : a < b ? -1 : 1;\n }\n\n const an = typeof a === 'string' ? Number(a) : NaN;\n const bn = typeof b === 'string' ? Number(b) : NaN;\n if (Number.isFinite(an) && Number.isFinite(bn)) {\n return an === bn ? 0 : an < bn ? -1 : 1;\n }\n\n // ISO-ish dates (string)\n if (typeof a === 'string' && typeof b === 'string') {\n const at = Date.parse(a);\n const bt = Date.parse(b);\n if (!Number.isNaN(at) && !Number.isNaN(bt)) {\n return at === bt ? 0 : at < bt ? -1 : 1;\n }\n }\n\n // fallback: locale string\n return String(a).localeCompare(String(b));\n }\n}\n","<div class=\"relative\">\n <table [class]=\"tableKlass()\">\n <thead [class]=\"theadKlass()\">\n <tr>\n @for (col of columns(); track col.id) {\n <th\n scope=\"col\"\n [class]=\"(thKlass() + ' ' + alignClass(col.align) + (col.klass ? ' ' + col.klass : '')).trim()\"\n [ngStyle]=\"styleWidth(col)\"\n >\n @if (col.headerTpl) {\n <ng-container\n [ngTemplateOutlet]=\"col.headerTpl\"\n [ngTemplateOutletContext]=\"headerCtx(col)\"\n />\n } @else {\n {{ col.header }}\n }\n </th>\n }\n </tr>\n </thead>\n\n <tbody [class]=\"tbodyKlass()\">\n @if (hasRows()) {\n @for (row of viewRows(); let rowIndex = $index; track row?.[rowKey()] ?? rowIndex) {\n <tr>\n @for (col of columns(); track col.id) {\n <td\n [class]=\"(tdKlass() + ' ' + alignClass(col.align) + (col.klass ? ' ' + col.klass : '')).trim()\"\n >\n @if (col.cellTpl) {\n <ng-container\n [ngTemplateOutlet]=\"col.cellTpl\"\n [ngTemplateOutletContext]=\"cellCtx(row, rowIndex, col)\"\n />\n } @else {\n {{ col.value?.(row) }}\n }\n </td>\n }\n </tr>\n }\n } @else {\n <tr>\n <td [attr.colspan]=\"columns().length || 1\" class=\"px-3 py-8 text-center text-disable\">\n {{ emptyText() }}\n </td>\n </tr>\n }\n </tbody>\n </table>\n\n <!-- Render projected extras like filter panel -->\n <ng-content />\n</div>\n","import {\n Directive,\n HostBinding,\n HostListener,\n computed,\n input,\n inject,\n} from '@angular/core';\nimport { TNG_TABLE } from '../core/tokens/table.token';\nimport type { TngSortDir } from '../core/types';\n\n@Directive({\n selector: '[tngSortHeader]',\n standalone: true,\n})\nexport class TngSortHeaderDirective {\n readonly colId = input.required<string>();\n\n private readonly table = inject(TNG_TABLE);\n\n readonly direction = computed<TngSortDir>(() => this.table.directionFor(this.colId()));\n readonly isSorted = computed(() => this.direction() !== '');\n\n // a11y\n @HostBinding('attr.role') role = 'button';\n @HostBinding('attr.tabindex') tabindex = 0;\n\n @HostBinding('attr.aria-sort')\n get ariaSort(): 'none' | 'ascending' | 'descending' {\n const dir = this.direction();\n if (dir === 'asc') return 'ascending';\n if (dir === 'desc') return 'descending';\n return 'none';\n }\n\n @HostListener('click')\n onClick() {\n this.table.toggleSort(this.colId());\n }\n\n @HostListener('keydown.enter', ['$event'])\n @HostListener('keydown.space', ['$event'])\n onKey(ev: KeyboardEvent) {\n ev.preventDefault();\n this.table.toggleSort(this.colId());\n }\n}\n","import { Component, inject } from '@angular/core';\nimport { TngSortHeaderDirective } from '../../directives/sort-header.directive';\n\n@Component({\n selector: 'tng-sort-icon',\n standalone: true,\n template: `\n @switch (dir()) {\n @case ('asc') { <span aria-hidden=\"true\">▲</span> }\n @case ('desc') { <span aria-hidden=\"true\">▼</span> }\n @default { <span aria-hidden=\"true\" class=\"opacity-40\">↕</span> }\n }\n `,\n})\nexport class TngSortIcon {\n private readonly host = inject(TngSortHeaderDirective);\n readonly dir = this.host.direction;\n}","\nimport {\n Directive,\n ElementRef,\n HostBinding,\n HostListener,\n computed,\n inject,\n input,\n} from '@angular/core';\nimport { TNG_TABLE } from '../core/tokens/table.token';\n\n@Directive({\n selector: '[tngFilterTrigger]',\n standalone: true,\n})\nexport class TngFilterTrigger {\n readonly colId = input.required<string>();\n\n private readonly table = inject(TNG_TABLE);\n private readonly el = inject(ElementRef<HTMLElement>);\n\n readonly panelKlass = input<string>('');\n\n readonly isFiltered = computed(() => this.table.isFiltered(this.colId()));\n readonly isOpen = computed(() => this.table.isFilterOpenFor(this.colId()));\n\n // a11y\n @HostBinding('attr.role') role = 'button';\n @HostBinding('attr.tabindex') tabindex = 0;\n @HostBinding('attr.aria-haspopup') ariaHaspopup: 'dialog' | 'menu' = 'dialog';\n\n @HostBinding('attr.aria-expanded')\n get ariaExpanded(): 'true' | 'false' {\n return this.isOpen() ? 'true' : 'false';\n }\n\n @HostListener('click')\n onClick(): void {\n this.table.setFilterPanelKlass(this.panelKlass()); // store it\n this.table.toggleFilter(this.colId(), this.el.nativeElement);\n }\n\n @HostListener('keydown.enter', ['$event'])\n @HostListener('keydown.space', ['$event'])\n onKey(ev: KeyboardEvent): void {\n ev.preventDefault();\n this.table.setFilterPanelKlass(this.panelKlass()); // store it\n this.table.toggleFilter(this.colId(), this.el.nativeElement);\n }\n}\n","import { Component, computed, inject } from '@angular/core';\nimport { TNG_TABLE } from '../../core/tokens/table.token';\nimport type {\n TngColumnMeta,\n TngDateFilter,\n TngEnumFilter,\n TngNumberFilter,\n TngTextFilter,\n TngEnumOption,\n} from '../../core/types';\n\nimport {\n TngOverlayRef,\n TngConnectedOverlay,\n TngOverlayPanel,\n} from '@tociva/tailng-ui/popups-overlays';\n\n@Component({\n selector: 'tng-filter-panel',\n standalone: true,\n imports: [TngOverlayRef, TngConnectedOverlay, TngOverlayPanel],\n templateUrl: './filter-panel.component.html',\n})\nexport class TngFilterPanel {\n private readonly table = inject(TNG_TABLE);\n\n readonly activeColId = computed(() => this.table.openFilterColId());\n readonly isOpen = computed(() => this.activeColId() !== '');\n readonly anchorEl = computed(() => this.table.filterAnchorEl());\n\n readonly meta = computed<TngColumnMeta | undefined>(() => {\n const id = this.activeColId();\n return id ? this.table.metaFor(id) : undefined;\n });\n\n readonly filterType = computed(() => this.meta()?.filter?.type ?? 'text');\n\n readonly titleSuffix = computed(() => {\n const label = this.meta()?.label;\n return label ? ` • ${label}` : '';\n });\n\n readonly panelKlass = computed(() => {\n const base = 'min-w-80 max-w-[360px] p-0';\n const fromTrigger = this.table.filterPanelKlass();\n return `${base} ${fromTrigger}`.trim();\n });\n \n // ---- open/close wiring ----\n onOverlayOpenChange(open: boolean): void {\n // if overlay closes, reflect that back to controller\n if (!open && this.isOpen()) this.close();\n }\n\n onOverlayClosed(): void {\n // overlay stack says it's closed (outside click / escape)\n if (this.isOpen()) this.close();\n }\n\n close(): void {\n this.table.closeFilter();\n }\n\n clear(): void {\n const id = this.activeColId();\n if (id) this.table.clearFilter(id);\n }\n\n // ---------------- TEXT ----------------\n readonly textPlaceholder = computed(() => {\n const f = this.meta()?.filter;\n return f?.type === 'text' ? f.placeholder ?? 'Type to filter…' : 'Type to filter…';\n });\n\n textValue(): string {\n const id = this.activeColId();\n const v = id ? (this.table.filterValueFor(id) as TngTextFilter | undefined) : undefined;\n return typeof v === 'string' ? v : '';\n }\n\n onTextInput(ev: Event): void {\n const value = (ev.target as HTMLInputElement | null)?.value ?? '';\n const id = this.activeColId();\n if (!id) return;\n\n const trimmed = value.trim();\n if (!trimmed) this.table.clearFilter(id);\n else this.table.setFilter(id, trimmed);\n }\n\n // ---------------- NUMBER ----------------\n private numberValue(): TngNumberFilter {\n const id = this.activeColId();\n const v = id ? (this.table.filterValueFor(id) as TngNumberFilter | undefined) : undefined;\n return v && typeof v === 'object' && !Array.isArray(v) ? v : {};\n }\n\n numberMin(): string {\n const v = this.numberValue().min;\n return typeof v === 'number' && Number.isFinite(v) ? String(v) : '';\n }\n\n numberMax(): string {\n const v = this.numberValue().max;\n return typeof v === 'number' && Number.isFinite(v) ? String(v) : '';\n }\n\n onNumberMinInput(ev: Event): void {\n const raw = (ev.target as HTMLInputElement | null)?.value ?? '';\n const id = this.activeColId();\n if (!id) return;\n\n const cur = this.numberValue();\n const n = raw === '' ? undefined : Number(raw);\n\n const next: TngNumberFilter = { ...cur, min: Number.isFinite(n as number) ? (n as number) : undefined };\n if (!next.min && !next.max) this.table.clearFilter(id);\n else this.table.setFilter(id, next);\n }\n\n onNumberMaxInput(ev: Event): void {\n const raw = (ev.target as HTMLInputElement | null)?.value ?? '';\n const id = this.activeColId();\n if (!id) return;\n\n const cur = this.numberValue();\n const n = raw === '' ? undefined : Number(raw);\n\n const next: TngNumberFilter = { ...cur, max: Number.isFinite(n as number) ? (n as number) : undefined };\n if (!next.min && !next.max) this.table.clearFilter(id);\n else this.table.setFilter(id, next);\n }\n\n // ---------------- DATE ----------------\n private dateValue(): TngDateFilter {\n const id = this.activeColId();\n const v = id ? (this.table.filterValueFor(id) as TngDateFilter | undefined) : undefined;\n return v && typeof v === 'object' && !Array.isArray(v) ? v : {};\n }\n\n dateFrom(): string {\n return this.dateValue().from ?? '';\n }\n\n dateTo(): string {\n return this.dateValue().to ?? '';\n }\n\n onDateFromInput(ev: Event): void {\n const from = (ev.target as HTMLInputElement | null)?.value ?? '';\n const id = this.activeColId();\n if (!id) return;\n\n const cur = this.dateValue();\n const next: TngDateFilter = { ...cur, from: from || undefined };\n if (!next.from && !next.to) this.table.clearFilter(id);\n else this.table.setFilter(id, next);\n }\n\n onDateToInput(ev: Event): void {\n const to = (ev.target as HTMLInputElement | null)?.value ?? '';\n const id = this.activeColId();\n if (!id) return;\n\n const cur = this.dateValue();\n const next: TngDateFilter = { ...cur, to: to || undefined };\n if (!next.from && !next.to) this.table.clearFilter(id);\n else this.table.setFilter(id, next);\n }\n\n // ---------------- ENUM ----------------\n enumOptions(): TngEnumOption[] {\n const f = this.meta()?.filter;\n return f?.type === 'enum' ? f.options : [];\n }\n\n private enumValue(): TngEnumFilter {\n const id = this.activeColId();\n const v = id ? (this.table.filterValueFor(id) as TngEnumFilter | undefined) : undefined;\n return Array.isArray(v) ? v : [];\n }\n\n enumChecked(value: string): boolean {\n return this.enumValue().includes(value);\n }\n\n toggleEnum(value: string): void {\n const id = this.activeColId();\n if (!id) return;\n\n const cur = this.enumValue();\n const next = cur.includes(value) ? cur.filter((v) => v !== value) : [...cur, value];\n\n if (next.length === 0) this.table.clearFilter(id);\n else this.table.setFilter(id, next);\n }\n}\n","<tng-overlay-ref\n #overlayRef=\"tngOverlayRef\"\n [open]=\"isOpen()\"\n (openChange)=\"onOverlayOpenChange($event)\"\n (closed)=\"onOverlayClosed()\"\n>\n <tng-connected-overlay\n [open]=\"overlayRef.isOpen()\"\n [anchor]=\"anchorEl()\"\n placement=\"bottom-start\"\n (closed)=\"overlayRef.close($event)\"\n [closeOnInsideClick]=\"false\"\n >\n <!-- set width at panel level (menu-style) -->\n <tng-overlay-panel [klass]=\"panelKlass()\">\n <div class=\"w-full\">\n <div class=\"flex items-center justify-between gap-3 border-b border-slate-200 px-3 py-2\">\n <div class=\"min-w-0\">\n <div class=\"truncate text-sm font-semibold text-slate-900\">\n Filter{{ titleSuffix() }}\n </div>\n <div class=\"truncate text-xs text-slate-500\">{{ activeColId() }}</div>\n </div>\n\n <div class=\"flex items-center gap-2\">\n <button\n type=\"button\"\n class=\"rounded px-2 py-1 text-xs text-slate-600 hover:bg-slate-50\"\n (click)=\"clear()\"\n >\n Clear\n </button>\n <button\n type=\"button\"\n class=\"rounded px-2 py-1 text-xs text-slate-600 hover:bg-slate-50\"\n (click)=\"close()\"\n aria-label=\"Close filter\"\n >\n ✕\n </button>\n </div>\n </div>\n\n <div class=\"p-3\">\n @switch (filterType()) {\n @case ('text') {\n <label class=\"text-xs font-medium text-slate-700\">Contains</label>\n <input\n class=\"mt-2 w-full rounded border border-slate-200 px-2 py-1 text-sm outline-none focus:border-slate-400\"\n [placeholder]=\"textPlaceholder()\"\n [value]=\"textValue()\"\n (input)=\"onTextInput($event)\"\n />\n }\n\n @case ('number') {\n <div class=\"grid grid-cols-2 gap-3\">\n <div>\n <label class=\"text-xs font-medium text-slate-700\">Min</label>\n <input\n type=\"number\"\n class=\"mt-2 w-full rounded border border-slate-200 px-2 py-1 text-sm outline-none focus:border-slate-400\"\n [value]=\"numberMin()\"\n (input)=\"onNumberMinInput($event)\"\n />\n </div>\n <div>\n <label class=\"text-xs font-medium text-slate-700\">Max</label>\n <input\n type=\"number\"\n class=\"mt-2 w-full rounded border border-slate-200 px-2 py-1 text-sm outline-none focus:border-slate-400\"\n [value]=\"numberMax()\"\n (input)=\"onNumberMaxInput($event)\"\n />\n </div>\n </div>\n }\n\n @case ('date') {\n <div class=\"grid grid-cols-2 gap-3\">\n <div>\n <label class=\"text-xs font-medium text-slate-700\">From</label>\n <input\n type=\"date\"\n class=\"mt-2 w-full rounded border border-slate-200 px-2 py-1 text-sm outline-none focus:border-slate-400\"\n [value]=\"dateFrom()\"\n (input)=\"onDateFromInput($event)\"\n />\n </div>\n <div>\n <label class=\"text-xs font-medium text-slate-700\">To</label>\n <input\n type=\"date\"\n class=\"mt-2 w-full rounded border border-slate-200 px-2 py-1 text-sm outline-none focus:border-slate-400\"\n [value]=\"dateTo()\"\n (input)=\"onDateToInput($event)\"\n />\n </div>\n </div>\n }\n\n @case ('enum') {\n <div class=\"space-y-2\">\n <div class=\"text-xs font-medium text-slate-700\">Select</div>\n\n <div class=\"max-h-56 overflow-auto rounded border border-slate-200\">\n @for (opt of enumOptions(); track opt.value) {\n <label class=\"flex cursor-pointer items-center gap-2 px-2 py-1 text-sm hover:bg-slate-50\">\n <input\n type=\"checkbox\"\n class=\"h-4 w-4\"\n [checked]=\"enumChecked(opt.value)\"\n (change)=\"toggleEnum(opt.value)\"\n />\n <span class=\"truncate\">{{ opt.label }}</span>\n </label>\n }\n </div>\n </div>\n }\n\n @default {\n <div class=\"text-sm text-slate-600\">\n No default filter configured for this column.\n </div>\n }\n }\n </div>\n </div>\n </tng-overlay-panel>\n </tng-connected-overlay>\n</tng-overlay-ref>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'tng-sort-header',\n standalone: true,\n templateUrl: './sort-header.component.html',\n})\nexport class TngSortHeader {\n // Welcome hello component - placeholder for Sort Header\n}\n","<div class=\"p-4 border border-gray-200 rounded-md\">\n <p class=\"text-gray-600\">Welcome hello component - Sort Header</p>\n</div>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'tng-tree',\n standalone: true,\n templateUrl: './tree.component.html',\n})\nexport class TngTree {\n // Welcome hello component - placeholder for Tree\n}\n","<div class=\"p-4 border border-gray-200 rounded-md\">\n <p class=\"text-gray-600\">Welcome hello component - Tree</p>\n</div>\n","import { Component, input } from '@angular/core';\n\n@Component({\n selector: 'tng-empty-state',\n standalone: true,\n templateUrl: './empty-state.component.html',\n})\nexport class TngEmptyState {\n title = input<string>('No data available');\n message = input<string>('');\n icon = input<string>('');\n}\n","<div class=\"flex flex-col items-center justify-center p-8 text-center\">\n @if (icon()) {\n <div class=\"mb-4 text-4xl text-gray-400\">{{ icon() }}</div>\n }\n <h3 class=\"text-lg font-semibold text-gray-900 mb-2\">{{ title() }}</h3>\n @if (message()) {\n <p class=\"text-sm text-gray-600\">{{ message() }}</p>\n }\n</div>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'tng-virtual-scroll',\n standalone: true,\n templateUrl: './virtual-scroll.component.html',\n})\nexport class TngVirtualScroll {\n // Placeholder for Virtual Scroll component\n}\n","<div class=\"p-4 border border-gray-200 rounded-md\">\n <p class=\"text-gray-600\">Virtual Scroll component - placeholder</p>\n</div>\n","// Table (components, defs, types, controllers, directives, features)\nexport * from './table/ui/table/table.component';\nexport * from './table/ui/column/col.component';\nexport * from './table/ui/sort/sort-icon.component';\nexport * from './table/defs/cell.def';\nexport * from './table/defs/header.def';\nexport * from './table/core/types';\n\nexport * from './table/core/controller/column-meta.controller';\nexport * from './table/core/controller/controller-feature';\nexport * from './table/core/controller/filter.controller';\nexport * from './table/core/controller/sort.controller';\nexport * from './table/core/controller/table.controller';\n\nexport * from './table/core/tokens/table.token';\n\nexport * from './table/directives/sort-header.directive';\nexport * from './table/directives/filter-trigger.directive';\n\nexport * from './table/ui/filter/filter-panel.component';\n\nexport * from './table/features/sort.feature';\nexport * from './table/features/filter.feature';\n\n// Sort header, tree, empty state, virtual scroll\nexport * from './sort-header/sort-header.component';\nexport * from './tree/tree.component';\nexport * from './empty-state/empty-state.component';\nexport * from './virtual-scroll/virtual-scroll.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|