@ship-ui/core 0.22.16 → 0.22.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/assets/mcp/components.json +181 -39
- package/bin/src/subset.ts +6 -6
- package/bin/src/utilities.ts +14 -14
- package/fesm2022/ship-ui-core-ship-a11y-keybindings.mjs +4 -87
- package/fesm2022/ship-ui-core-ship-a11y-keybindings.mjs.map +1 -1
- package/fesm2022/ship-ui-core-ship-accordion.mjs +4 -3
- package/fesm2022/ship-ui-core-ship-accordion.mjs.map +1 -1
- package/fesm2022/ship-ui-core-ship-alert.mjs +1 -4
- package/fesm2022/ship-ui-core-ship-alert.mjs.map +1 -1
- package/fesm2022/ship-ui-core-ship-blueprint.mjs +8 -10
- package/fesm2022/ship-ui-core-ship-blueprint.mjs.map +1 -1
- package/fesm2022/ship-ui-core-ship-checkbox.mjs +3 -2
- package/fesm2022/ship-ui-core-ship-checkbox.mjs.map +1 -1
- package/fesm2022/ship-ui-core-ship-color-picker.mjs +66 -62
- package/fesm2022/ship-ui-core-ship-color-picker.mjs.map +1 -1
- package/fesm2022/ship-ui-core-ship-datepicker.mjs +8 -12
- package/fesm2022/ship-ui-core-ship-datepicker.mjs.map +1 -1
- package/fesm2022/ship-ui-core-ship-editor.mjs +0 -42
- package/fesm2022/ship-ui-core-ship-editor.mjs.map +1 -1
- package/fesm2022/ship-ui-core-ship-form-field.mjs +0 -1
- package/fesm2022/ship-ui-core-ship-form-field.mjs.map +1 -1
- package/fesm2022/ship-ui-core-ship-kbd.mjs +0 -6
- package/fesm2022/ship-ui-core-ship-kbd.mjs.map +1 -1
- package/fesm2022/ship-ui-core-ship-list-item-swipe.mjs +241 -0
- package/fesm2022/ship-ui-core-ship-list-item-swipe.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-menu.mjs +7 -10
- package/fesm2022/ship-ui-core-ship-menu.mjs.map +1 -1
- package/fesm2022/ship-ui-core-ship-popover.mjs +1 -20
- package/fesm2022/ship-ui-core-ship-popover.mjs.map +1 -1
- package/fesm2022/ship-ui-core-ship-radio.mjs +3 -2
- package/fesm2022/ship-ui-core-ship-radio.mjs.map +1 -1
- package/fesm2022/ship-ui-core-ship-range-slider.mjs +7 -9
- package/fesm2022/ship-ui-core-ship-range-slider.mjs.map +1 -1
- package/fesm2022/ship-ui-core-ship-select.mjs.map +1 -1
- package/fesm2022/ship-ui-core-ship-sidenav.mjs +2 -2
- package/fesm2022/ship-ui-core-ship-sidenav.mjs.map +1 -1
- package/fesm2022/ship-ui-core-ship-sortable.mjs +262 -68
- package/fesm2022/ship-ui-core-ship-sortable.mjs.map +1 -1
- package/fesm2022/ship-ui-core-ship-spotlight.mjs +0 -11
- package/fesm2022/ship-ui-core-ship-spotlight.mjs.map +1 -1
- package/fesm2022/ship-ui-core-ship-stepper.mjs +1 -1
- package/fesm2022/ship-ui-core-ship-stepper.mjs.map +1 -1
- package/fesm2022/ship-ui-core-ship-table.mjs +4 -5
- package/fesm2022/ship-ui-core-ship-table.mjs.map +1 -1
- package/fesm2022/ship-ui-core-ship-toggle.mjs +3 -2
- package/fesm2022/ship-ui-core-ship-toggle.mjs.map +1 -1
- package/fesm2022/ship-ui-core-ship-tree.mjs +1 -9
- package/fesm2022/ship-ui-core-ship-tree.mjs.map +1 -1
- package/fesm2022/ship-ui-core.mjs +37 -53
- package/fesm2022/ship-ui-core.mjs.map +1 -1
- package/package.json +5 -1
- package/types/ship-ui-core-ship-a11y-keybindings.d.ts +0 -55
- package/types/ship-ui-core-ship-accordion.d.ts +7 -7
- package/types/ship-ui-core-ship-blueprint.d.ts +1 -1
- package/types/ship-ui-core-ship-checkbox.d.ts +2 -3
- package/types/ship-ui-core-ship-color-picker.d.ts +1 -25
- package/types/ship-ui-core-ship-datepicker.d.ts +0 -3
- package/types/ship-ui-core-ship-editor.d.ts +10 -10
- package/types/ship-ui-core-ship-list-item-swipe.d.ts +25 -0
- package/types/ship-ui-core-ship-menu.d.ts +1 -2
- package/types/ship-ui-core-ship-radio.d.ts +2 -3
- package/types/ship-ui-core-ship-range-slider.d.ts +6 -6
- package/types/ship-ui-core-ship-sortable.d.ts +31 -9
- package/types/ship-ui-core-ship-toggle.d.ts +2 -3
- package/types/ship-ui-core-ship-tree.d.ts +20 -25
- package/types/ship-ui-core.d.ts +17 -24
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ship-ui-core-ship-stepper.mjs","sources":["../../../projects/ship-ui/ship-stepper/ship-stepper.ts","../../../projects/ship-ui/ship-stepper/ship-ui-core-ship-stepper.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n effect,\n inject,\n input,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ShipColor, shipComponentClasses, ShipSelectionGroup } from '@ship-ui/core';\n\n@Component({\n selector: 'sh-stepper',\n styleUrl: './ship-stepper.scss',\n encapsulation: ViewEncapsulation.None,\n imports: [],\n template: `\n <ng-content />\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n },\n})\nexport class ShipStepper extends ShipSelectionGroup<string> {\n color = input<ShipColor | null>(null);\n\n constructor() {\n super('[value], [step], [routerLinkActive], button, a', 'active', { hostRole: 'tablist', itemRole: 'tab' });\n\n const destroyRef = inject(DestroyRef);\n\n effect(() => {\n this.items().forEach((item) => {\n if (!item.querySelector('.sh-radio')) {\n const shRadio = document.createElement('div');\n shRadio.className = 'sh-radio';\n\n const shRadioContent = document.createElement('div');\n shRadioContent.className = 'radio sh-sheet';\n\n shRadio.append(shRadioContent);\n item.prepend(shRadio);\n }\n });\n });\n\n effect(() => {\n this.items();
|
|
1
|
+
{"version":3,"file":"ship-ui-core-ship-stepper.mjs","sources":["../../../projects/ship-ui/ship-stepper/ship-stepper.ts","../../../projects/ship-ui/ship-stepper/ship-ui-core-ship-stepper.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n effect,\n inject,\n input,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ShipColor, shipComponentClasses, ShipSelectionGroup } from '@ship-ui/core';\n\n@Component({\n selector: 'sh-stepper',\n styleUrl: './ship-stepper.scss',\n encapsulation: ViewEncapsulation.None,\n imports: [],\n template: `\n <ng-content />\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n },\n})\nexport class ShipStepper extends ShipSelectionGroup<string> {\n color = input<ShipColor | null>(null);\n\n constructor() {\n super('[value], [step], [routerLinkActive], button, a', 'active', { hostRole: 'tablist', itemRole: 'tab' });\n\n const destroyRef = inject(DestroyRef);\n\n effect(() => {\n this.items().forEach((item) => {\n if (!item.querySelector('.sh-radio')) {\n const shRadio = document.createElement('div');\n shRadio.className = 'sh-radio';\n\n const shRadioContent = document.createElement('div');\n shRadioContent.className = 'radio sh-sheet';\n\n shRadio.append(shRadioContent);\n item.prepend(shRadio);\n }\n });\n });\n\n effect(() => {\n this.items(); \n this.updateProgress();\n });\n\n if (typeof MutationObserver !== 'undefined') {\n const observer = new MutationObserver(() => {\n this.updateProgress();\n });\n\n observer.observe(this.hostElement, {\n attributes: true,\n subtree: true,\n attributeFilter: ['class'],\n });\n\n destroyRef.onDestroy(() => {\n observer.disconnect();\n });\n }\n }\n\n updateProgress() {\n const items = Array.from(\n this.hostElement.querySelectorAll('[value], [step], [routerLinkActive], button, a')\n ) as HTMLElement[];\n let activeIndex = items.findIndex((item) => item.classList.contains(this.activeClass));\n\n if (activeIndex === -1) {\n activeIndex = 0;\n }\n\n const totalItems = items.length;\n let progress = 0;\n if (totalItems > 1) {\n progress = (activeIndex / (totalItems - 1)) * 100;\n }\n\n this.hostElement.style.setProperty('--stepper-progress', `${progress}%`);\n }\n\n hostClasses = shipComponentClasses('stepper', {\n color: this.color,\n });\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -17,7 +17,7 @@ class ShipResize {
|
|
|
17
17
|
#startX;
|
|
18
18
|
#startWidth;
|
|
19
19
|
#resizing;
|
|
20
|
-
#animationFrameRequest;
|
|
20
|
+
#animationFrameRequest;
|
|
21
21
|
constructor() {
|
|
22
22
|
this.#el = inject(ElementRef);
|
|
23
23
|
this.#renderer = inject(Renderer2);
|
|
@@ -35,7 +35,7 @@ class ShipResize {
|
|
|
35
35
|
this.resizingClass = signal(false, /* @ts-ignore */
|
|
36
36
|
...(ngDevMode ? [{ debugName: "resizingClass" }] : /* istanbul ignore next */ []));
|
|
37
37
|
this.#resizing = false;
|
|
38
|
-
this.#animationFrameRequest = null;
|
|
38
|
+
this.#animationFrameRequest = null;
|
|
39
39
|
effect(() => {
|
|
40
40
|
if (this.#sort())
|
|
41
41
|
return;
|
|
@@ -70,7 +70,6 @@ class ShipResize {
|
|
|
70
70
|
return;
|
|
71
71
|
}
|
|
72
72
|
const hostEl = this.#el.nativeElement;
|
|
73
|
-
// Resolve ShipSort lazily to avoid circular DI instantiation issues
|
|
74
73
|
this.#sort.set(this.#injector.get(ShipSort, null, { optional: true, self: true }));
|
|
75
74
|
if (this.resizable()) {
|
|
76
75
|
const resizer = this.#renderer.createElement('div');
|
|
@@ -877,7 +876,7 @@ class ShipTable {
|
|
|
877
876
|
<ng-content select="[table-no-rows]" />
|
|
878
877
|
</div>
|
|
879
878
|
}
|
|
880
|
-
`, isInline: true, styles: ["sh-table{--table-bc: var(--base-4);--table-th-bg: var(--base-2);--table-tr-bg: var(--base-1);--table-td-bg: var(--base-1);--table-th-c: var(--base-8);--table-th-f: var(--paragraph-30);--table-td-c: var(--base-8);--table-td-f: var(--paragraph-30);--table-th-p: 0 1.25rem;--table-td-p: 0 1.25rem;--table-th-mh: 3rem;--table-td-mh: 4.875rem;--table-th-g: .25rem;--table-td-g: .5rem;--table-ws: nowrap;--table-th-bw: 0;--table-td-bw: .0625rem 0 0;--table-columns: 1fr 1fr 1fr max-content;--table-sticky-bw: .0625rem}sh-table.type-a tbody>th,sh-table.type-a tbody>td,sh-table.type-a thead>th,sh-table.type-a thead>td{padding-right:0}sh-table.type-a tbody>th:first-child,sh-table.type-a tbody>td:first-child,sh-table.type-a thead>th:first-child,sh-table.type-a thead>td:first-child{padding:0}sh-table.type-b{--table-th-p: 0 .75rem;--table-td-p: 0 .75rem;--table-th-mh: 2.25rem;--table-td-mh: 3.5rem;--table-th-bw: .0625rem 0 .0625rem .0625rem;--table-td-bw: 0 0 .0625rem .0625rem;--table-sticky-bw: .0625rem}sh-table.type-b th:first-child{border-left-width:0;padding:var(--table-th-p)}sh-table.type-b td:first-child{border-left-width:0;padding:var(--table-td-p)}sh-table.type-b td.sticky,sh-table.type-b th.sticky{border-left-width:0;border-right:var(--table-sticky-bw) solid var(--table-bc)}sh-table.type-b [shStickyColumns] th,sh-table.type-b [shStickyColumns] td{border-right:var(--table-sticky-bw) solid var(--table-bc)}sh-table.type-b th.sticky-end,sh-table.type-b td.sticky-end,sh-table.type-b [shStickyColumns=end] th,sh-table.type-b [shStickyColumns=end] td{border-left:var(--table-sticky-bw) solid var(--table-bc);border-right:0}sh-table.type-b .sticky+th,sh-table.type-b .sticky+td,sh-table.type-b [shStickyColumns]+th,sh-table.type-b [shStickyColumns]+td{border-left-width:0}sh-table.type-b tr:hover td{background-color:var(--base-2)}sh-table.type-b div[table-header] tr:first-child th{border-bottom:0}sh-table.type-b tbody tr:last-child td{border-bottom-width:0}sh-table.type-b .actionbar{background-color:var(--base-2);border-width:.0625rem 0 0}sh-table{width:100%;display:grid;overflow:auto;overscroll-behavior-x:none;grid-template-columns:var(--table-columns);position:relative;container-type:inline-size}sh-table.resizing{-webkit-user-select:none;user-select:none}sh-table:has([shTableResize]) td{overflow:auto}sh-table.no-resize .sh-resizer{display:none}sh-table.no-resize td{overflow:initial}sh-table .actionbar{display:flex;align-items:center;gap:.5rem;grid-column:1/-1;position:sticky;left:0;z-index:10;background-color:var(--base-1);width:100cqw;box-sizing:border-box;padding:.5rem;border:var(--border-10);border-width:.0625rem 0;opacity:1;transition:padding .3s ease-out,border-width .3s ease-out,opacity .3s ease-out;overflow:hidden}sh-table .actionbar:empty,sh-table .actionbar:not(:has(>:not(.actionbar-right))):has(>.actionbar-right:empty){display:none}sh-table .actionbar>*{min-height:0}sh-table .actionbar .actionbar-right{display:flex;align-items:center;gap:.5rem;margin-left:auto;flex-shrink:0}sh-table .actionbar .actionbar-right:empty{display:none}sh-table tbody{position:relative}sh-table tbody:has(tr.sticky){position:sticky;top:0;z-index:1}sh-table thead{position:relative}sh-table thead:has(tr.sticky){position:sticky;top:0;z-index:2}sh-table sh-progress-bar{grid-column:1/-1;position:absolute;top:100%;transform:translateY(-50%);z-index:200}sh-table tbody,sh-table thead,sh-table tr{display:grid;grid-column:1/-1;grid-template-columns:subgrid}sh-table tr{background:var(--table-tr-bg);position:relative;z-index:0}sh-table tr.sticky{position:sticky;top:0;z-index:1}sh-table tr.sticky-end{position:sticky;bottom:0;z-index:3}sh-table tr:has(th.sticky-end) th:nth-last-child(2){padding:var(--table-th-p)}sh-table tr:has(td.sticky-end) td:nth-last-child(2){padding:var(--table-td-p)}sh-table th{display:flex;align-items:center;padding:var(--table-th-p);min-height:var(--table-th-mh);font:var(--table-th-f);line-height:1em;white-space:var(--table-ws);color:var(--table-th-c);border:0;border-color:var(--table-bc);border-style:solid;border-width:var(--table-th-bw);background:var(--table-th-bg);gap:var(--table-th-g);z-index:auto}sh-table th:focus-visible{outline:.125rem solid var(--primary-8);outline-offset:-.125rem}sh-table th:hover,sh-table th.resizing{z-index:10}sh-table th:has(.sh-resizer){position:relative;z-index:2}sh-table th.sortable{--caret-color: var(--base-10);--caret-size: .375rem;cursor:pointer;-webkit-user-select:none;user-select:none}sh-table th.sortable sh-icon{opacity:.35;transition:opacity 125ms ease-in-out}sh-table th.sortable:hover sh-icon{opacity:.7}sh-table th.sortable.sort-asc sh-icon,sh-table th.sortable.sort-desc sh-icon{opacity:1}sh-table th.sortable:not(:has(sh-icon)):after{content:\"\";border:var(--caret-size) solid transparent;width:0;height:0;opacity:0;transition:opacity 125ms ease-in-out}sh-table th.sortable:not(:has(sh-icon)).sort-desc:after{opacity:1;transform:translateY(-4px);border-bottom-color:var(--caret-color)}sh-table th.sortable:not(:has(sh-icon)).sort-asc:after{opacity:1;transform:translateY(4px);border-top-color:var(--caret-color)}sh-table th .sh-resizer{width:.75rem;height:100%;position:absolute;top:0;right:-.375rem;cursor:col-resize;z-index:5}sh-table th .sh-resizer:after{content:\"\";position:absolute;top:.3125rem;bottom:.3125rem;border-radius:.125rem;
|
|
879
|
+
`, isInline: true, styles: ["sh-table{--table-bc: var(--base-4);--table-th-bg: var(--base-2);--table-tr-bg: var(--base-1);--table-td-bg: var(--base-1);--table-th-c: var(--base-8);--table-th-f: var(--paragraph-30);--table-td-c: var(--base-8);--table-td-f: var(--paragraph-30);--table-th-p: 0 1.25rem;--table-td-p: 0 1.25rem;--table-th-mh: 3rem;--table-td-mh: 4.875rem;--table-th-g: .25rem;--table-td-g: .5rem;--table-ws: nowrap;--table-th-bw: 0;--table-td-bw: .0625rem 0 0;--table-columns: 1fr 1fr 1fr max-content;--table-sticky-bw: .0625rem}sh-table.type-a tbody>th,sh-table.type-a tbody>td,sh-table.type-a thead>th,sh-table.type-a thead>td{padding-right:0}sh-table.type-a tbody>th:first-child,sh-table.type-a tbody>td:first-child,sh-table.type-a thead>th:first-child,sh-table.type-a thead>td:first-child{padding:0}sh-table.type-b{--table-th-p: 0 .75rem;--table-td-p: 0 .75rem;--table-th-mh: 2.25rem;--table-td-mh: 3.5rem;--table-th-bw: .0625rem 0 .0625rem .0625rem;--table-td-bw: 0 0 .0625rem .0625rem;--table-sticky-bw: .0625rem}sh-table.type-b th:first-child{border-left-width:0;padding:var(--table-th-p)}sh-table.type-b td:first-child{border-left-width:0;padding:var(--table-td-p)}sh-table.type-b td.sticky,sh-table.type-b th.sticky{border-left-width:0;border-right:var(--table-sticky-bw) solid var(--table-bc)}sh-table.type-b [shStickyColumns] th,sh-table.type-b [shStickyColumns] td{border-right:var(--table-sticky-bw) solid var(--table-bc)}sh-table.type-b th.sticky-end,sh-table.type-b td.sticky-end,sh-table.type-b [shStickyColumns=end] th,sh-table.type-b [shStickyColumns=end] td{border-left:var(--table-sticky-bw) solid var(--table-bc);border-right:0}sh-table.type-b .sticky+th,sh-table.type-b .sticky+td,sh-table.type-b [shStickyColumns]+th,sh-table.type-b [shStickyColumns]+td{border-left-width:0}sh-table.type-b tr:hover td{background-color:var(--base-2)}sh-table.type-b div[table-header] tr:first-child th{border-bottom:0}sh-table.type-b tbody tr:last-child td{border-bottom-width:0}sh-table.type-b .actionbar{background-color:var(--base-2);border-width:.0625rem 0 0}sh-table{width:100%;display:grid;overflow:auto;overscroll-behavior-x:none;grid-template-columns:var(--table-columns);position:relative;container-type:inline-size}sh-table.resizing{-webkit-user-select:none;user-select:none}sh-table:has([shTableResize]) td{overflow:auto}sh-table.no-resize .sh-resizer{display:none}sh-table.no-resize td{overflow:initial}sh-table .actionbar{display:flex;align-items:center;gap:.5rem;grid-column:1/-1;position:sticky;left:0;z-index:10;background-color:var(--base-1);width:100cqw;box-sizing:border-box;padding:.5rem;border:var(--border-10);border-width:.0625rem 0;opacity:1;transition:padding .3s ease-out,border-width .3s ease-out,opacity .3s ease-out;overflow:hidden}sh-table .actionbar:empty,sh-table .actionbar:not(:has(>:not(.actionbar-right))):has(>.actionbar-right:empty){display:none}sh-table .actionbar>*{min-height:0}sh-table .actionbar .actionbar-right{display:flex;align-items:center;gap:.5rem;margin-left:auto;flex-shrink:0}sh-table .actionbar .actionbar-right:empty{display:none}sh-table tbody{position:relative}sh-table tbody:has(tr.sticky){position:sticky;top:0;z-index:1}sh-table thead{position:relative}sh-table thead:has(tr.sticky){position:sticky;top:0;z-index:2}sh-table sh-progress-bar{grid-column:1/-1;position:absolute;top:100%;transform:translateY(-50%);z-index:200}sh-table tbody,sh-table thead,sh-table tr{display:grid;grid-column:1/-1;grid-template-columns:subgrid}sh-table tr{background:var(--table-tr-bg);position:relative;z-index:0}sh-table tr.sticky{position:sticky;top:0;z-index:1}sh-table tr.sticky-end{position:sticky;bottom:0;z-index:3}sh-table tr:has(th.sticky-end) th:nth-last-child(2){padding:var(--table-th-p)}sh-table tr:has(td.sticky-end) td:nth-last-child(2){padding:var(--table-td-p)}sh-table th{display:flex;align-items:center;padding:var(--table-th-p);min-height:var(--table-th-mh);font:var(--table-th-f);line-height:1em;white-space:var(--table-ws);color:var(--table-th-c);border:0;border-color:var(--table-bc);border-style:solid;border-width:var(--table-th-bw);background:var(--table-th-bg);gap:var(--table-th-g);z-index:auto}sh-table th:focus-visible{outline:.125rem solid var(--primary-8);outline-offset:-.125rem}sh-table th:hover,sh-table th.resizing{z-index:10}sh-table th:has(.sh-resizer){position:relative;z-index:2}sh-table th.sortable{--caret-color: var(--base-10);--caret-size: .375rem;cursor:pointer;-webkit-user-select:none;user-select:none}sh-table th.sortable sh-icon{opacity:.35;transition:opacity 125ms ease-in-out}sh-table th.sortable:hover sh-icon{opacity:.7}sh-table th.sortable.sort-asc sh-icon,sh-table th.sortable.sort-desc sh-icon{opacity:1}sh-table th.sortable:not(:has(sh-icon)):after{content:\"\";border:var(--caret-size) solid transparent;width:0;height:0;opacity:0;transition:opacity 125ms ease-in-out}sh-table th.sortable:not(:has(sh-icon)).sort-desc:after{opacity:1;transform:translateY(-4px);border-bottom-color:var(--caret-color)}sh-table th.sortable:not(:has(sh-icon)).sort-asc:after{opacity:1;transform:translateY(4px);border-top-color:var(--caret-color)}sh-table th .sh-resizer{width:.75rem;height:100%;position:absolute;top:0;right:-.375rem;cursor:col-resize;z-index:5}sh-table th .sh-resizer:after{content:\"\";position:absolute;top:.3125rem;bottom:.3125rem;border-radius:.125rem;left:50%;transform:translate(-50%);width:.1875rem;background-color:var(--base-4);transition:width .15s ease,background-color .15s ease}sh-table th .sh-resizer:hover:after{width:.3125rem;background-color:var(--primary-8)}@media(pointer:coarse){sh-table th .sh-resizer{width:1.5rem;right:-.75rem}}sh-table th.resizing .sh-resizer:after{width:.3125rem;background-color:var(--primary-8)}sh-table td{display:flex;align-items:center;padding:var(--table-td-p);min-height:var(--table-td-mh);gap:var(--table-td-g);color:var(--table-td-c);font:var(--table-td-f);white-space:var(--table-ws);border-color:var(--table-bc);border-style:solid;border-width:var(--table-td-bw);background:var(--table-td-bg)}sh-table td+td.sticky-end:last-child{padding:var(--table-td-p)}sh-table th.sticky,sh-table th.sticky-end,sh-table td.sticky,sh-table td.sticky-end{position:sticky;overflow:hidden;right:auto;left:0;z-index:1;padding:var(--table-td-p)}sh-table th.sticky:first-child,sh-table th.sticky-end:first-child,sh-table td.sticky:first-child,sh-table td.sticky-end:first-child{padding:var(--table-th-p)}sh-table th.sticky-end,sh-table td.sticky-end{right:0;left:auto}sh-table th.sticky,sh-table th.sticky-end{background:var(--base-1);padding:var(--table-th-p);z-index:101}sh-table th.sticky:first-child,sh-table th.sticky-end:first-child{padding:var(--table-th-p)}sh-table [shStickyColumns]{display:grid;grid-template-columns:subgrid;position:sticky;left:0;z-index:1000;border:0;border-color:var(--table-bc);border-style:solid}sh-table [shStickyColumns] th{background-color:var(--base-1)}sh-table [shStickyColumns=end]{left:auto;right:0}sh-table .span-all{grid-column:1/-1;white-space:initial;align-items:flex-start;padding:0;border-left-width:0;position:sticky;left:0;width:100cqw;box-sizing:border-box}sh-table .no-rows{display:none;grid-column:1/-1}sh-table tbody:empty+.no-rows{display:block}\n"], dependencies: [{ kind: "component", type: ShipProgressBar, selector: "sh-progress-bar", inputs: ["value", "color", "variant"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
881
880
|
}
|
|
882
881
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: ShipTable, decorators: [{
|
|
883
882
|
type: Component,
|
|
@@ -926,7 +925,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.0", ngImpor
|
|
|
926
925
|
'[class.scrolled-x-end]': 'scrollXState() === 1',
|
|
927
926
|
'[class.scrolled-y]': 'scrollYState() >= 0',
|
|
928
927
|
'[class.scrolled-y-end]': 'scrollYState() === 1',
|
|
929
|
-
}, styles: ["sh-table{--table-bc: var(--base-4);--table-th-bg: var(--base-2);--table-tr-bg: var(--base-1);--table-td-bg: var(--base-1);--table-th-c: var(--base-8);--table-th-f: var(--paragraph-30);--table-td-c: var(--base-8);--table-td-f: var(--paragraph-30);--table-th-p: 0 1.25rem;--table-td-p: 0 1.25rem;--table-th-mh: 3rem;--table-td-mh: 4.875rem;--table-th-g: .25rem;--table-td-g: .5rem;--table-ws: nowrap;--table-th-bw: 0;--table-td-bw: .0625rem 0 0;--table-columns: 1fr 1fr 1fr max-content;--table-sticky-bw: .0625rem}sh-table.type-a tbody>th,sh-table.type-a tbody>td,sh-table.type-a thead>th,sh-table.type-a thead>td{padding-right:0}sh-table.type-a tbody>th:first-child,sh-table.type-a tbody>td:first-child,sh-table.type-a thead>th:first-child,sh-table.type-a thead>td:first-child{padding:0}sh-table.type-b{--table-th-p: 0 .75rem;--table-td-p: 0 .75rem;--table-th-mh: 2.25rem;--table-td-mh: 3.5rem;--table-th-bw: .0625rem 0 .0625rem .0625rem;--table-td-bw: 0 0 .0625rem .0625rem;--table-sticky-bw: .0625rem}sh-table.type-b th:first-child{border-left-width:0;padding:var(--table-th-p)}sh-table.type-b td:first-child{border-left-width:0;padding:var(--table-td-p)}sh-table.type-b td.sticky,sh-table.type-b th.sticky{border-left-width:0;border-right:var(--table-sticky-bw) solid var(--table-bc)}sh-table.type-b [shStickyColumns] th,sh-table.type-b [shStickyColumns] td{border-right:var(--table-sticky-bw) solid var(--table-bc)}sh-table.type-b th.sticky-end,sh-table.type-b td.sticky-end,sh-table.type-b [shStickyColumns=end] th,sh-table.type-b [shStickyColumns=end] td{border-left:var(--table-sticky-bw) solid var(--table-bc);border-right:0}sh-table.type-b .sticky+th,sh-table.type-b .sticky+td,sh-table.type-b [shStickyColumns]+th,sh-table.type-b [shStickyColumns]+td{border-left-width:0}sh-table.type-b tr:hover td{background-color:var(--base-2)}sh-table.type-b div[table-header] tr:first-child th{border-bottom:0}sh-table.type-b tbody tr:last-child td{border-bottom-width:0}sh-table.type-b .actionbar{background-color:var(--base-2);border-width:.0625rem 0 0}sh-table{width:100%;display:grid;overflow:auto;overscroll-behavior-x:none;grid-template-columns:var(--table-columns);position:relative;container-type:inline-size}sh-table.resizing{-webkit-user-select:none;user-select:none}sh-table:has([shTableResize]) td{overflow:auto}sh-table.no-resize .sh-resizer{display:none}sh-table.no-resize td{overflow:initial}sh-table .actionbar{display:flex;align-items:center;gap:.5rem;grid-column:1/-1;position:sticky;left:0;z-index:10;background-color:var(--base-1);width:100cqw;box-sizing:border-box;padding:.5rem;border:var(--border-10);border-width:.0625rem 0;opacity:1;transition:padding .3s ease-out,border-width .3s ease-out,opacity .3s ease-out;overflow:hidden}sh-table .actionbar:empty,sh-table .actionbar:not(:has(>:not(.actionbar-right))):has(>.actionbar-right:empty){display:none}sh-table .actionbar>*{min-height:0}sh-table .actionbar .actionbar-right{display:flex;align-items:center;gap:.5rem;margin-left:auto;flex-shrink:0}sh-table .actionbar .actionbar-right:empty{display:none}sh-table tbody{position:relative}sh-table tbody:has(tr.sticky){position:sticky;top:0;z-index:1}sh-table thead{position:relative}sh-table thead:has(tr.sticky){position:sticky;top:0;z-index:2}sh-table sh-progress-bar{grid-column:1/-1;position:absolute;top:100%;transform:translateY(-50%);z-index:200}sh-table tbody,sh-table thead,sh-table tr{display:grid;grid-column:1/-1;grid-template-columns:subgrid}sh-table tr{background:var(--table-tr-bg);position:relative;z-index:0}sh-table tr.sticky{position:sticky;top:0;z-index:1}sh-table tr.sticky-end{position:sticky;bottom:0;z-index:3}sh-table tr:has(th.sticky-end) th:nth-last-child(2){padding:var(--table-th-p)}sh-table tr:has(td.sticky-end) td:nth-last-child(2){padding:var(--table-td-p)}sh-table th{display:flex;align-items:center;padding:var(--table-th-p);min-height:var(--table-th-mh);font:var(--table-th-f);line-height:1em;white-space:var(--table-ws);color:var(--table-th-c);border:0;border-color:var(--table-bc);border-style:solid;border-width:var(--table-th-bw);background:var(--table-th-bg);gap:var(--table-th-g);z-index:auto}sh-table th:focus-visible{outline:.125rem solid var(--primary-8);outline-offset:-.125rem}sh-table th:hover,sh-table th.resizing{z-index:10}sh-table th:has(.sh-resizer){position:relative;z-index:2}sh-table th.sortable{--caret-color: var(--base-10);--caret-size: .375rem;cursor:pointer;-webkit-user-select:none;user-select:none}sh-table th.sortable sh-icon{opacity:.35;transition:opacity 125ms ease-in-out}sh-table th.sortable:hover sh-icon{opacity:.7}sh-table th.sortable.sort-asc sh-icon,sh-table th.sortable.sort-desc sh-icon{opacity:1}sh-table th.sortable:not(:has(sh-icon)):after{content:\"\";border:var(--caret-size) solid transparent;width:0;height:0;opacity:0;transition:opacity 125ms ease-in-out}sh-table th.sortable:not(:has(sh-icon)).sort-desc:after{opacity:1;transform:translateY(-4px);border-bottom-color:var(--caret-color)}sh-table th.sortable:not(:has(sh-icon)).sort-asc:after{opacity:1;transform:translateY(4px);border-top-color:var(--caret-color)}sh-table th .sh-resizer{width:.75rem;height:100%;position:absolute;top:0;right:-.375rem;cursor:col-resize;z-index:5}sh-table th .sh-resizer:after{content:\"\";position:absolute;top:.3125rem;bottom:.3125rem;border-radius:.125rem;
|
|
928
|
+
}, styles: ["sh-table{--table-bc: var(--base-4);--table-th-bg: var(--base-2);--table-tr-bg: var(--base-1);--table-td-bg: var(--base-1);--table-th-c: var(--base-8);--table-th-f: var(--paragraph-30);--table-td-c: var(--base-8);--table-td-f: var(--paragraph-30);--table-th-p: 0 1.25rem;--table-td-p: 0 1.25rem;--table-th-mh: 3rem;--table-td-mh: 4.875rem;--table-th-g: .25rem;--table-td-g: .5rem;--table-ws: nowrap;--table-th-bw: 0;--table-td-bw: .0625rem 0 0;--table-columns: 1fr 1fr 1fr max-content;--table-sticky-bw: .0625rem}sh-table.type-a tbody>th,sh-table.type-a tbody>td,sh-table.type-a thead>th,sh-table.type-a thead>td{padding-right:0}sh-table.type-a tbody>th:first-child,sh-table.type-a tbody>td:first-child,sh-table.type-a thead>th:first-child,sh-table.type-a thead>td:first-child{padding:0}sh-table.type-b{--table-th-p: 0 .75rem;--table-td-p: 0 .75rem;--table-th-mh: 2.25rem;--table-td-mh: 3.5rem;--table-th-bw: .0625rem 0 .0625rem .0625rem;--table-td-bw: 0 0 .0625rem .0625rem;--table-sticky-bw: .0625rem}sh-table.type-b th:first-child{border-left-width:0;padding:var(--table-th-p)}sh-table.type-b td:first-child{border-left-width:0;padding:var(--table-td-p)}sh-table.type-b td.sticky,sh-table.type-b th.sticky{border-left-width:0;border-right:var(--table-sticky-bw) solid var(--table-bc)}sh-table.type-b [shStickyColumns] th,sh-table.type-b [shStickyColumns] td{border-right:var(--table-sticky-bw) solid var(--table-bc)}sh-table.type-b th.sticky-end,sh-table.type-b td.sticky-end,sh-table.type-b [shStickyColumns=end] th,sh-table.type-b [shStickyColumns=end] td{border-left:var(--table-sticky-bw) solid var(--table-bc);border-right:0}sh-table.type-b .sticky+th,sh-table.type-b .sticky+td,sh-table.type-b [shStickyColumns]+th,sh-table.type-b [shStickyColumns]+td{border-left-width:0}sh-table.type-b tr:hover td{background-color:var(--base-2)}sh-table.type-b div[table-header] tr:first-child th{border-bottom:0}sh-table.type-b tbody tr:last-child td{border-bottom-width:0}sh-table.type-b .actionbar{background-color:var(--base-2);border-width:.0625rem 0 0}sh-table{width:100%;display:grid;overflow:auto;overscroll-behavior-x:none;grid-template-columns:var(--table-columns);position:relative;container-type:inline-size}sh-table.resizing{-webkit-user-select:none;user-select:none}sh-table:has([shTableResize]) td{overflow:auto}sh-table.no-resize .sh-resizer{display:none}sh-table.no-resize td{overflow:initial}sh-table .actionbar{display:flex;align-items:center;gap:.5rem;grid-column:1/-1;position:sticky;left:0;z-index:10;background-color:var(--base-1);width:100cqw;box-sizing:border-box;padding:.5rem;border:var(--border-10);border-width:.0625rem 0;opacity:1;transition:padding .3s ease-out,border-width .3s ease-out,opacity .3s ease-out;overflow:hidden}sh-table .actionbar:empty,sh-table .actionbar:not(:has(>:not(.actionbar-right))):has(>.actionbar-right:empty){display:none}sh-table .actionbar>*{min-height:0}sh-table .actionbar .actionbar-right{display:flex;align-items:center;gap:.5rem;margin-left:auto;flex-shrink:0}sh-table .actionbar .actionbar-right:empty{display:none}sh-table tbody{position:relative}sh-table tbody:has(tr.sticky){position:sticky;top:0;z-index:1}sh-table thead{position:relative}sh-table thead:has(tr.sticky){position:sticky;top:0;z-index:2}sh-table sh-progress-bar{grid-column:1/-1;position:absolute;top:100%;transform:translateY(-50%);z-index:200}sh-table tbody,sh-table thead,sh-table tr{display:grid;grid-column:1/-1;grid-template-columns:subgrid}sh-table tr{background:var(--table-tr-bg);position:relative;z-index:0}sh-table tr.sticky{position:sticky;top:0;z-index:1}sh-table tr.sticky-end{position:sticky;bottom:0;z-index:3}sh-table tr:has(th.sticky-end) th:nth-last-child(2){padding:var(--table-th-p)}sh-table tr:has(td.sticky-end) td:nth-last-child(2){padding:var(--table-td-p)}sh-table th{display:flex;align-items:center;padding:var(--table-th-p);min-height:var(--table-th-mh);font:var(--table-th-f);line-height:1em;white-space:var(--table-ws);color:var(--table-th-c);border:0;border-color:var(--table-bc);border-style:solid;border-width:var(--table-th-bw);background:var(--table-th-bg);gap:var(--table-th-g);z-index:auto}sh-table th:focus-visible{outline:.125rem solid var(--primary-8);outline-offset:-.125rem}sh-table th:hover,sh-table th.resizing{z-index:10}sh-table th:has(.sh-resizer){position:relative;z-index:2}sh-table th.sortable{--caret-color: var(--base-10);--caret-size: .375rem;cursor:pointer;-webkit-user-select:none;user-select:none}sh-table th.sortable sh-icon{opacity:.35;transition:opacity 125ms ease-in-out}sh-table th.sortable:hover sh-icon{opacity:.7}sh-table th.sortable.sort-asc sh-icon,sh-table th.sortable.sort-desc sh-icon{opacity:1}sh-table th.sortable:not(:has(sh-icon)):after{content:\"\";border:var(--caret-size) solid transparent;width:0;height:0;opacity:0;transition:opacity 125ms ease-in-out}sh-table th.sortable:not(:has(sh-icon)).sort-desc:after{opacity:1;transform:translateY(-4px);border-bottom-color:var(--caret-color)}sh-table th.sortable:not(:has(sh-icon)).sort-asc:after{opacity:1;transform:translateY(4px);border-top-color:var(--caret-color)}sh-table th .sh-resizer{width:.75rem;height:100%;position:absolute;top:0;right:-.375rem;cursor:col-resize;z-index:5}sh-table th .sh-resizer:after{content:\"\";position:absolute;top:.3125rem;bottom:.3125rem;border-radius:.125rem;left:50%;transform:translate(-50%);width:.1875rem;background-color:var(--base-4);transition:width .15s ease,background-color .15s ease}sh-table th .sh-resizer:hover:after{width:.3125rem;background-color:var(--primary-8)}@media(pointer:coarse){sh-table th .sh-resizer{width:1.5rem;right:-.75rem}}sh-table th.resizing .sh-resizer:after{width:.3125rem;background-color:var(--primary-8)}sh-table td{display:flex;align-items:center;padding:var(--table-td-p);min-height:var(--table-td-mh);gap:var(--table-td-g);color:var(--table-td-c);font:var(--table-td-f);white-space:var(--table-ws);border-color:var(--table-bc);border-style:solid;border-width:var(--table-td-bw);background:var(--table-td-bg)}sh-table td+td.sticky-end:last-child{padding:var(--table-td-p)}sh-table th.sticky,sh-table th.sticky-end,sh-table td.sticky,sh-table td.sticky-end{position:sticky;overflow:hidden;right:auto;left:0;z-index:1;padding:var(--table-td-p)}sh-table th.sticky:first-child,sh-table th.sticky-end:first-child,sh-table td.sticky:first-child,sh-table td.sticky-end:first-child{padding:var(--table-th-p)}sh-table th.sticky-end,sh-table td.sticky-end{right:0;left:auto}sh-table th.sticky,sh-table th.sticky-end{background:var(--base-1);padding:var(--table-th-p);z-index:101}sh-table th.sticky:first-child,sh-table th.sticky-end:first-child{padding:var(--table-th-p)}sh-table [shStickyColumns]{display:grid;grid-template-columns:subgrid;position:sticky;left:0;z-index:1000;border:0;border-color:var(--table-bc);border-style:solid}sh-table [shStickyColumns] th{background-color:var(--base-1)}sh-table [shStickyColumns=end]{left:auto;right:0}sh-table .span-all{grid-column:1/-1;white-space:initial;align-items:flex-start;padding:0;border-left-width:0;position:sticky;left:0;width:100cqw;box-sizing:border-box}sh-table .no-rows{display:none;grid-column:1/-1}sh-table tbody:empty+.no-rows{display:block}\n"] }]
|
|
930
929
|
}], propDecorators: { grid: [{ type: i0.Input, args: [{ isSignal: true, alias: "grid", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: false }] }], dataChange: [{ type: i0.Output, args: ["dataChange"] }], sortByColumn: [{ type: i0.Input, args: [{ isSignal: true, alias: "sortByColumn", required: false }] }, { type: i0.Output, args: ["sortByColumnChange"] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-label", required: false }] }], ariaLabelledby: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-labelledby", required: false }] }], content: [{ type: i0.ContentChild, args: [i0.forwardRef(() => ShipTableContent), { isSignal: true }] }], theadLocal: [{ type: i0.ViewChild, args: ['theadLocal', { isSignal: true }] }], tbodyLocal: [{ type: i0.ViewChild, args: ['tbodyLocal', { isSignal: true }] }], onResize: [{
|
|
931
930
|
type: HostListener,
|
|
932
931
|
args: ['window:resize', ['$event']]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ship-ui-core-ship-table.mjs","sources":["../../../projects/ship-ui/ship-table/ship-table.ts","../../../projects/ship-ui/ship-table/ship-ui-core-ship-table.ts"],"sourcesContent":["import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n Directive,\n effect,\n ElementRef,\n HostListener,\n inject,\n Injector,\n input,\n model,\n output,\n Renderer2,\n signal,\n TemplateRef,\n untracked,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { observeChildren, ShipColor, shipComponentClasses, ShipTableVariant } from '@ship-ui/core';\nimport { ShipA11yKeybindingsService } from '@ship-ui/core/ship-a11y-keybindings';\nimport { ShipChip } from '@ship-ui/core/ship-chip';\nimport { ShipIcon } from '@ship-ui/core/ship-icon';\nimport { ShipProgressBar } from '@ship-ui/core/ship-progress-bar';\n\nexport interface ShipTableColumn<T = any> {\n id: string;\n header: string;\n accessorKey?: keyof T | string;\n type?: 'string' | 'number' | 'date' | 'boolean' | 'badge' | (string & {});\n sortable?: boolean;\n resizable?: boolean;\n minWidth?: number;\n maxWidth?: number;\n size?: string;\n sticky?: 'start' | 'end' | null;\n cell?: (row: T) => any;\n cellTemplate?: TemplateRef<any> | null;\n format?: (value: any, row: T) => any;\n sortPredicate?: (a: T, b: T) => number;\n rowHeader?: boolean;\n}\n\n@Directive({\n selector: '[shResize]',\n standalone: true,\n host: {\n '[class.resizing]': 'resizingClass()',\n },\n})\nexport class ShipResize {\n #el = inject(ElementRef) as ElementRef<HTMLTableCellElement>;\n #renderer = inject(Renderer2);\n #table = inject(ShipTable);\n #keybindings = inject(ShipA11yKeybindingsService);\n #injector = inject(Injector);\n #sort = signal<ShipSort | null>(null);\n\n resizable = input<boolean>(true);\n minWidth = input<number>(50);\n maxWidth = input<number | null>(null);\n\n resizingClass = signal(false);\n\n #startX!: number;\n #startWidth!: number;\n #resizing = false;\n #animationFrameRequest: number | null = null; // Store request ID\n\n constructor() {\n effect(() => {\n if (this.#sort()) return;\n\n const hostEl = this.#el.nativeElement;\n if (this.resizable()) {\n const parts: string[] = [];\n const decAction = 'table.column-resize-decrease';\n const decShortcut = this.#keybindings.getShortcut(decAction);\n if (decShortcut) {\n parts.push(this.#keybindings.getDisplayShortcut(decAction) || decShortcut);\n }\n const incAction = 'table.column-resize-increase';\n const incShortcut = this.#keybindings.getShortcut(incAction);\n if (incShortcut) {\n parts.push(this.#keybindings.getDisplayShortcut(incAction) || incShortcut);\n }\n\n if (parts.length > 0) {\n this.#renderer.setAttribute(hostEl, 'aria-keyshortcuts', parts.join(', '));\n } else {\n this.#renderer.removeAttribute(hostEl, 'aria-keyshortcuts');\n }\n } else {\n this.#renderer.removeAttribute(hostEl, 'aria-keyshortcuts');\n }\n });\n }\n\n ngOnInit() {\n if (!this.#table) {\n console.error('shTableResize directive must be used within a sh-table component.');\n return;\n }\n\n const hostEl = this.#el.nativeElement;\n\n // Resolve ShipSort lazily to avoid circular DI instantiation issues\n this.#sort.set(this.#injector.get(ShipSort, null, { optional: true, self: true }));\n\n if (this.resizable()) {\n const resizer = this.#renderer.createElement('div');\n this.#renderer.addClass(resizer, 'sh-resizer');\n this.#renderer.appendChild(hostEl, resizer);\n this.#renderer.listen(resizer, 'mousedown', this.#onMouseDown.bind(this));\n\n if (!hostEl.hasAttribute('role')) {\n this.#renderer.setAttribute(hostEl, 'role', 'columnheader');\n }\n\n if (!this.#sort() && !hostEl.hasAttribute('tabindex')) {\n this.#renderer.setAttribute(hostEl, 'tabindex', '0');\n }\n }\n }\n\n @HostListener('keydown', ['$event'])\n onKeyDown(event: KeyboardEvent) {\n if (!this.resizable()) return;\n\n const target = event.target as HTMLElement;\n const host = this.#el.nativeElement;\n if (\n target !== host &&\n (target.tagName === 'BUTTON' ||\n target.tagName === 'INPUT' ||\n target.tagName === 'SELECT' ||\n target.tagName === 'TEXTAREA' ||\n target.closest('button, input, select, textarea, a') !== null ||\n target.closest('[role=\"button\"], [role=\"checkbox\"], [role=\"menuitem\"]') !== null)\n ) {\n return;\n }\n\n if ((event.key === 'ArrowLeft' || event.key === 'ArrowRight') && !event.shiftKey) {\n if (!this.#sort()) {\n const parentRow = host.parentElement;\n if (parentRow) {\n const headers = Array.from(parentRow.querySelectorAll<HTMLElement>('th')).filter(\n (el) => el.getAttribute('tabindex') === '0' || el.hasAttribute('shSort') || el.hasAttribute('shResize')\n );\n const currentIndex = headers.indexOf(host);\n if (currentIndex !== -1) {\n const nextIndex = event.key === 'ArrowRight' ? currentIndex + 1 : currentIndex - 1;\n if (nextIndex >= 0 && nextIndex < headers.length) {\n event.preventDefault();\n headers[nextIndex].focus();\n return;\n }\n }\n }\n }\n }\n\n const isDecrease = this.#keybindings.matches(event, 'table.column-resize-decrease');\n const isIncrease = this.#keybindings.matches(event, 'table.column-resize-increase');\n\n if (isDecrease || isIncrease) {\n event.preventDefault();\n event.stopPropagation();\n\n const currentWidth = this.#el.nativeElement.offsetWidth;\n const step = 10;\n const targetWidth = isDecrease ? currentWidth - step : currentWidth + step;\n\n const constrainedWidth = Math.max(\n this.minWidth(),\n this.maxWidth() ? Math.min(targetWidth, this.maxWidth() ?? targetWidth) : targetWidth\n );\n\n this.#renderer.setAttribute(this.#el.nativeElement, 'size', `${constrainedWidth}px`);\n this.#table.updateColumnSizes();\n }\n }\n\n @HostListener('document:mousemove', ['$event'])\n onMouseMove(event: MouseEvent) {\n if (!this.#resizing) return;\n\n this.#scheduleResize(event);\n }\n\n @HostListener('document:mouseup', ['$event'])\n onMouseUp(event: MouseEvent) {\n if (this.#resizing) {\n this.#resizing = false;\n this.resizingClass.set(false);\n\n if (this.#animationFrameRequest !== null) {\n cancelAnimationFrame(this.#animationFrameRequest);\n this.#animationFrameRequest = null;\n }\n\n // Delay resetting the table's resizing state to block sorting clicks immediately after resizing\n setTimeout(() => {\n this.#table.resizing.set(false);\n }, 50);\n }\n }\n\n @HostListener('document:click', ['$event']) onClick(event: MouseEvent) {\n if (this.#resizing) {\n event.stopPropagation();\n }\n }\n\n #onMouseDown(event: MouseEvent) {\n event.stopPropagation();\n\n if (!this.resizable()) return;\n\n this.#table.resizing.set(true);\n this.#resizing = true;\n this.resizingClass.set(true);\n this.#startX = event.pageX;\n this.#startWidth = this.#el.nativeElement.offsetWidth;\n }\n\n #scheduleResize(event: MouseEvent) {\n if (this.#animationFrameRequest !== null) {\n cancelAnimationFrame(this.#animationFrameRequest);\n }\n\n this.#animationFrameRequest = requestAnimationFrame(() => {\n this.#resizeColumn(event);\n this.#animationFrameRequest = null;\n });\n }\n\n #resizeColumn(event: MouseEvent) {\n const width = this.#startWidth + (event.pageX - this.#startX);\n const constrainedWidth = Math.max(\n this.minWidth(),\n this.maxWidth() ? Math.min(width, this.maxWidth() ?? width) : width\n );\n\n this.#renderer.setAttribute(this.#el.nativeElement, 'size', `${constrainedWidth}px`);\n this.#table.updateColumnSizes();\n }\n\n ngOnDestroy() {\n if (this.#animationFrameRequest !== null) {\n cancelAnimationFrame(this.#animationFrameRequest);\n }\n }\n}\n\n@Directive({\n selector: '[shSort]',\n standalone: true,\n host: {\n role: 'columnheader',\n '[class.sortable]': '!!shSort()',\n '[attr.tabindex]': 'tabIndex()',\n '(click)': 'shSort() ? toggleSort($event) : null',\n '[attr.aria-sort]': 'shSort() ? ariaSort() : null',\n '[class.sort-asc]': 'sortAsc()',\n '[class.sort-desc]': 'sortDesc()',\n '[attr.aria-keyshortcuts]': 'ariaKeyshortcuts()',\n },\n})\nexport class ShipSort {\n #table = inject(ShipTable);\n #keybindings = inject(ShipA11yKeybindingsService);\n #injector = inject(Injector);\n #el = inject(ElementRef) as ElementRef<HTMLTableCellElement>;\n #resize = signal<ShipResize | null>(null);\n shSort = input<string | undefined>();\n\n ngOnInit() {\n // Resolve ShipResize lazily to avoid circular DI instantiation issues\n this.#resize.set(this.#injector.get(ShipResize, null, { optional: true, self: true }));\n }\n\n tabIndex = computed(() => {\n const resize = this.#resize();\n return this.shSort() || (resize && resize.resizable()) ? '0' : null;\n });\n\n ariaKeyshortcuts = computed(() => {\n const parts: string[] = [];\n const resize = this.#resize();\n\n if (this.shSort()) {\n const action = 'table.sort';\n const shortcut = this.#keybindings.getShortcut(action);\n if (shortcut) {\n parts.push(this.#keybindings.getDisplayShortcut(action) || shortcut);\n }\n }\n\n if (resize && resize.resizable()) {\n const decAction = 'table.column-resize-decrease';\n const decShortcut = this.#keybindings.getShortcut(decAction);\n if (decShortcut) {\n parts.push(this.#keybindings.getDisplayShortcut(decAction) || decShortcut);\n }\n\n const incAction = 'table.column-resize-increase';\n const incShortcut = this.#keybindings.getShortcut(incAction);\n if (incShortcut) {\n parts.push(this.#keybindings.getDisplayShortcut(incAction) || incShortcut);\n }\n }\n\n return parts.length > 0 ? parts.join(', ') : null;\n });\n\n @HostListener('keydown', ['$event'])\n onKeyDown(event: KeyboardEvent) {\n if (!this.shSort()) return;\n\n const target = event.target as HTMLElement;\n const host = this.#el.nativeElement;\n if (\n target !== host &&\n (target.tagName === 'BUTTON' ||\n target.tagName === 'INPUT' ||\n target.tagName === 'SELECT' ||\n target.tagName === 'TEXTAREA' ||\n target.closest('button, input, select, textarea, a') !== null ||\n target.closest('[role=\"button\"], [role=\"checkbox\"], [role=\"menuitem\"]') !== null)\n ) {\n return;\n }\n\n if ((event.key === 'ArrowLeft' || event.key === 'ArrowRight') && !event.shiftKey) {\n const parentRow = host.parentElement;\n if (parentRow) {\n const headers = Array.from(parentRow.querySelectorAll<HTMLElement>('th')).filter(\n (el) => el.getAttribute('tabindex') === '0' || el.hasAttribute('shSort') || el.hasAttribute('shResize')\n );\n const currentIndex = headers.indexOf(host);\n if (currentIndex !== -1) {\n const nextIndex = event.key === 'ArrowRight' ? currentIndex + 1 : currentIndex - 1;\n if (nextIndex >= 0 && nextIndex < headers.length) {\n event.preventDefault();\n headers[nextIndex].focus();\n return;\n }\n }\n }\n }\n\n if (this.#keybindings.matches(event, 'table.sort')) {\n this.toggleSort(event);\n }\n }\n\n sortAsc = computed(() => {\n const currentSort = this.#table.sortByColumn();\n const thisColumn = this.shSort();\n\n if (!currentSort || !thisColumn) return false;\n\n return currentSort === thisColumn;\n });\n\n sortDesc = computed(() => {\n const currentSort = this.#table.sortByColumn();\n const thisColumn = this.shSort();\n\n if (!currentSort || !thisColumn) return false;\n\n return currentSort === `-${thisColumn}`;\n });\n\n ariaSort = computed(() => {\n if (this.sortAsc()) return 'ascending';\n if (this.sortDesc()) return 'descending';\n return 'none';\n });\n\n toggleSort(event?: Event) {\n if (event) {\n const target = event.target as HTMLElement;\n const host = this.#el.nativeElement;\n if (\n target !== host &&\n (target.tagName === 'BUTTON' ||\n target.tagName === 'INPUT' ||\n target.tagName === 'SELECT' ||\n target.tagName === 'TEXTAREA' ||\n target.closest('button, input, select, textarea, a') !== null ||\n target.closest('[role=\"button\"], [role=\"checkbox\"], [role=\"menuitem\"]') !== null)\n ) {\n return;\n }\n event.preventDefault();\n }\n if (this.#table.resizing()) {\n return;\n }\n const sortCol = this.shSort();\n\n if (!sortCol) return;\n\n this.#table.toggleSort(sortCol);\n }\n}\n\n@Directive({\n selector: '[shStickyColumns]',\n\n host: {\n '[class.sticky]': 'shStickyColumns() === \"start\" || shStickyColumns() === \"\"',\n '[class.sticky-end]': 'shStickyColumns() === \"end\"',\n },\n})\nexport class ShipStickyColumns {\n #elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n #renderer = inject(Renderer2);\n\n shStickyColumns = input<'start' | 'end' | (string & {})>('start');\n\n ngAfterContentInit() {\n this.#applyGridColumnStyle();\n }\n\n #applyGridColumnStyle() {\n const nativeElement = this.#elementRef.nativeElement;\n const cellChildren = nativeElement.querySelectorAll<HTMLTableCellElement>(':scope > th, :scope > td');\n const columnSpanCount = cellChildren.length;\n\n if (columnSpanCount > 0) {\n const position = this.shStickyColumns();\n\n this.#renderer.setStyle(\n nativeElement,\n 'grid-column',\n position === 'end' ? `-${columnSpanCount + 1} / -1` : `1 / ${columnSpanCount + 1}`\n );\n }\n }\n}\n\nconst SCROLL_TOLERANCE = 1.5;\ntype ScrollState = -1 | 0 | 1;\n\n@Component({\n selector: 'sh-table',\n styleUrl: './ship-table.scss',\n encapsulation: ViewEncapsulation.None,\n imports: [ShipProgressBar],\n template: `\n <div class=\"actionbar\">\n <ng-content select=\"[actionbar]:not([align-right])\" />\n <div class=\"actionbar-right\">\n <ng-content select=\"[actionbar][align-right]\" />\n </div>\n </div>\n\n @if (loading()) {\n <sh-progress-bar class=\"indeterminate primary\" />\n }\n\n <ng-content select=\"sh-table-content\" />\n\n @if (!content()) {\n <thead #theadLocal role=\"rowgroup\">\n <ng-content select=\"th\" />\n <ng-content select=\"[thead]\" />\n </thead>\n\n <tbody #tbodyLocal role=\"rowgroup\">\n <ng-content />\n </tbody>\n }\n\n @if (!loading()) {\n <div class=\"no-rows\">\n <ng-content select=\"[table-no-rows]\" />\n </div>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.role]': 'role()',\n '[attr.aria-busy]': 'loading()',\n '[attr.aria-label]': 'ariaLabel()',\n '[attr.aria-labelledby]': 'ariaLabelledby()',\n '[class]': 'hostClasses()',\n '[style.grid-template-columns]': 'columnSizes()',\n '[class.resizing]': 'resizing()',\n '(scroll)': 'onScroll()',\n '[class.can-scroll-x]': 'canScrollX()',\n '[class.can-scroll-y]': 'canScrollY()',\n '[class.scrolled-x]': 'scrollXState() >= 0',\n '[class.scrolled-x-end]': 'scrollXState() === 1',\n '[class.scrolled-y]': 'scrollYState() >= 0',\n '[class.scrolled-y-end]': 'scrollYState() === 1',\n },\n})\nexport class ShipTable {\n #el = inject(ElementRef);\n #renderer = inject(Renderer2);\n #keybindings = inject(ShipA11yKeybindingsService);\n\n grid = input<boolean>(false);\n role = computed(() => (this.grid() ? 'grid' : 'table'));\n\n loading = input<boolean>(false);\n data = input<any>([]);\n dataChange = output<any>();\n sortByColumn = model<string | null>(null);\n\n color = input<ShipColor | null>(null);\n variant = input<ShipTableVariant | null>(null);\n\n ariaLabel = input<string | null>(null, { alias: 'aria-label' });\n ariaLabelledby = input<string | null>(null, { alias: 'aria-labelledby' });\n\n hostClasses = shipComponentClasses('table', {\n color: this.color,\n variant: this.variant,\n });\n\n content = contentChild(ShipTableContent);\n\n theadLocal = viewChild<ElementRef<HTMLTableSectionElement>>('theadLocal');\n tbodyLocal = viewChild<ElementRef<HTMLTableSectionElement>>('tbodyLocal');\n\n thead = computed(() => this.content()?.thead() || this.theadLocal());\n tbody = computed(() => this.content()?.tbody() || this.tbodyLocal());\n columns = observeChildren<HTMLTableColElement>(this.thead, ['tr:first-child th']);\n\n stickyHeaderHeight = signal<number>(0);\n\n theadEffect = effect((onCleanup) => {\n const head = this.thead()?.nativeElement;\n\n if (head && typeof ResizeObserver !== 'undefined') {\n const observer = new ResizeObserver((entries) => {\n const height = head.clientHeight;\n this.stickyHeaderHeight.set(height);\n });\n observer.observe(head);\n onCleanup(() => observer.disconnect());\n }\n });\n\n bodyEffect = effect(() => {\n const body = this.tbody()?.nativeElement;\n const head = this.thead()?.nativeElement;\n\n if (!body || !head) return;\n\n const stickyHeaderHeight = this.stickyHeaderHeight();\n\n queueMicrotask(() => {\n const hasStickyRowHeaderStartElement = head.querySelectorAll('tr.sticky').length > 0;\n const stickyBodyRows = body.querySelectorAll('tr.sticky');\n const hasStickyRowStartElement = stickyBodyRows.length > 0;\n\n if (hasStickyRowStartElement && hasStickyRowHeaderStartElement) {\n for (let index = 0; index < stickyBodyRows.length; index++) {\n (stickyBodyRows[index] as HTMLElement).style.top = `${stickyHeaderHeight}px`;\n }\n }\n });\n });\n\n gridSetupEffect = effect(() => {\n const gridActive = this.grid();\n const dataVal = this.data();\n const colSignal = this.columns.signal();\n\n untracked(() => {\n const host = this.#el.nativeElement;\n const allCells = host.querySelectorAll('th, td');\n\n if (gridActive) {\n if (allCells.length === 0) return;\n\n let hasZero = false;\n allCells.forEach((cell: any) => {\n if (cell.getAttribute('tabindex') === '0') {\n hasZero = true;\n }\n });\n\n if (!hasZero) {\n this.#renderer.setAttribute(allCells[0], 'tabindex', '0');\n }\n\n allCells.forEach((cell: any) => {\n if (cell.getAttribute('tabindex') !== '0') {\n this.#renderer.setAttribute(cell, 'tabindex', '-1');\n }\n if (!cell.hasAttribute('role')) {\n this.#renderer.setAttribute(cell, 'role', cell.tagName === 'TD' ? 'gridcell' : 'columnheader');\n }\n });\n\n const allRows = host.querySelectorAll('tr');\n allRows.forEach((row: any) => {\n if (!row.hasAttribute('role')) {\n this.#renderer.setAttribute(row, 'role', 'row');\n }\n });\n } else {\n // Clean up\n allCells.forEach((cell: any) => {\n const isHeader = cell.tagName === 'TH';\n if (isHeader) {\n const isInteractiveHeader =\n cell.classList.contains('sortable') ||\n cell.querySelector('.sh-resizer') !== null ||\n cell.hasAttribute('aria-keyshortcuts');\n if (isInteractiveHeader) {\n this.#renderer.setAttribute(cell, 'tabindex', '0');\n } else {\n this.#renderer.removeAttribute(cell, 'tabindex');\n }\n } else {\n // Remove tabindex from td (data cells)\n this.#renderer.removeAttribute(cell, 'tabindex');\n }\n });\n }\n });\n });\n\n resizing = signal(false);\n sizeTrigger = signal(true);\n #initialData: any | null = null;\n #initialDataSet = signal(false);\n scrollXState = signal<ScrollState>(-1);\n scrollYState = signal<ScrollState>(-1);\n canScrollX = signal(false);\n canScrollY = signal(false);\n\n columnSizes = computed(() => {\n this.sizeTrigger();\n const colSignal = this.columns.signal();\n\n return colSignal.reduce((acc: string, col: any, index: number) => {\n const colEl = col;\n const colSize = colEl.getAttribute('size');\n const last = index === colSignal.length - 1;\n\n if (colSize) {\n return `${acc} ${colSize}`;\n }\n\n if (colEl.classList.contains('sticky') || colEl.classList.contains('sticky-end')) {\n return `${acc} min-content`;\n }\n\n if (last) {\n return `${acc} 1fr`;\n }\n\n return `${acc} 1fr`;\n }, '');\n });\n\n updateColumnSizes() {\n this.sizeTrigger.set(!this.sizeTrigger());\n }\n\n onScroll(): void {\n this.#checkScroll();\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event: Event) {\n this.#checkScroll();\n }\n\n ngAfterViewInit() {\n queueMicrotask(() => this.#checkScroll());\n }\n\n @HostListener('focusin', ['$event'])\n onFocusIn(event: FocusEvent) {\n if (!this.grid()) return;\n\n const target = event.target as HTMLElement;\n if (!target) return;\n\n const cell =\n target.tagName === 'TH' || target.tagName === 'TD' ? target : (target.closest('th, td') as HTMLElement);\n if (cell) {\n // Set roles dynamically for cells and rows if not present\n if (!cell.hasAttribute('role')) {\n this.#renderer.setAttribute(cell, 'role', cell.tagName === 'TD' ? 'gridcell' : 'columnheader');\n }\n const parentRow = cell.parentElement;\n if (parentRow && !parentRow.hasAttribute('role')) {\n this.#renderer.setAttribute(parentRow, 'role', 'row');\n }\n\n // Set tabindex=\"0\" on focused cell and tabindex=\"-1\" on all other cells\n this.#renderer.setAttribute(cell, 'tabindex', '0');\n const allCells = this.#el.nativeElement.querySelectorAll('th, td');\n allCells.forEach((c: any) => {\n if (c !== cell) {\n this.#renderer.setAttribute(c, 'tabindex', '-1');\n }\n });\n }\n }\n\n @HostListener('keydown', ['$event'])\n onGridKeyDown(event: KeyboardEvent) {\n if (!this.grid()) return;\n\n if (event.key === 'Tab') {\n const target = event.target as HTMLElement;\n const cell =\n target.tagName === 'TH' || target.tagName === 'TD' ? target : (target.closest('th, td') as HTMLElement);\n if (!cell) return;\n\n const focusableSelectors = 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])';\n const focusableChildren = Array.from(cell.querySelectorAll(focusableSelectors)) as HTMLElement[];\n\n const row = cell.parentElement as HTMLTableRowElement;\n if (!row || row.tagName !== 'TR') return;\n\n const cellsInRow = Array.from(row.querySelectorAll('th, td')) as HTMLElement[];\n const currentColIndex = cellsInRow.indexOf(cell);\n if (currentColIndex === -1) return;\n\n if (!event.shiftKey) {\n // Forward Tab\n const isLastChild =\n focusableChildren.length === 0 || target === focusableChildren[focusableChildren.length - 1];\n const isCellSelf = target === cell;\n\n if (isLastChild && !isCellSelf) {\n // Move to next cell in row\n if (currentColIndex < cellsInRow.length - 1) {\n event.preventDefault();\n this.#focusGridCell(cellsInRow[currentColIndex + 1]);\n }\n } else if (isCellSelf && focusableChildren.length === 0) {\n // Move to next cell in row\n if (currentColIndex < cellsInRow.length - 1) {\n event.preventDefault();\n this.#focusGridCell(cellsInRow[currentColIndex + 1]);\n }\n }\n } else {\n // Shift + Tab (Backward)\n const isFirstChild = focusableChildren.length > 0 && target === focusableChildren[0];\n const isCellSelf = target === cell;\n\n if (isFirstChild) {\n event.preventDefault();\n this.#focusGridCell(cell);\n } else if (isCellSelf) {\n if (currentColIndex > 0) {\n event.preventDefault();\n const prevCell = cellsInRow[currentColIndex - 1];\n const prevFocusableChildren = Array.from(prevCell.querySelectorAll(focusableSelectors)) as HTMLElement[];\n if (prevFocusableChildren.length > 0) {\n this.#focusGridCell(prevCell);\n prevFocusableChildren[prevFocusableChildren.length - 1].focus();\n } else {\n this.#focusGridCell(prevCell);\n }\n }\n }\n }\n return;\n }\n\n const isUp = this.#keybindings.matches(event, 'grid.focus-up');\n const isDown = this.#keybindings.matches(event, 'grid.focus-down');\n const isLeft = this.#keybindings.matches(event, 'grid.focus-left');\n const isRight = this.#keybindings.matches(event, 'grid.focus-right');\n const isFirst = this.#keybindings.matches(event, 'grid.focus-first');\n const isLast = this.#keybindings.matches(event, 'grid.focus-last');\n\n if (!isUp && !isDown && !isLeft && !isRight && !isFirst && !isLast) return;\n\n const target = event.target as HTMLElement;\n if (target.tagName !== 'TH' && target.tagName !== 'TD') {\n // Focus is inside a child control, let them operate normally\n return;\n }\n\n const row = target.parentElement as HTMLTableRowElement;\n if (!row || row.tagName !== 'TR') return;\n\n const allRows = Array.from(this.#el.nativeElement.querySelectorAll('tr')) as HTMLTableRowElement[];\n const currentRowIndex = allRows.indexOf(row);\n if (currentRowIndex === -1) return;\n\n const cellsInRow = Array.from(row.querySelectorAll('th, td')) as HTMLElement[];\n const currentColIndex = cellsInRow.indexOf(target);\n if (currentColIndex === -1) return;\n\n let targetRowIndex = currentRowIndex;\n let targetColIndex = currentColIndex;\n\n if (isUp) {\n targetRowIndex = currentRowIndex - 1;\n } else if (isDown) {\n targetRowIndex = currentRowIndex + 1;\n } else if (isLeft) {\n targetColIndex = currentColIndex - 1;\n } else if (isRight) {\n targetColIndex = currentColIndex + 1;\n } else if (isFirst) {\n targetColIndex = 0;\n } else if (isLast) {\n targetColIndex = cellsInRow.length - 1;\n }\n\n if (targetRowIndex !== currentRowIndex) {\n const targetRow = allRows[targetRowIndex];\n if (targetRow) {\n const targetCells = Array.from(targetRow.querySelectorAll('th, td')) as HTMLElement[];\n const targetCell = targetCells[Math.min(currentColIndex, targetCells.length - 1)];\n if (targetCell) {\n event.preventDefault();\n this.#focusGridCell(targetCell);\n }\n }\n } else if (targetColIndex !== currentColIndex) {\n const targetCell = cellsInRow[targetColIndex];\n if (targetCell) {\n event.preventDefault();\n this.#focusGridCell(targetCell);\n }\n }\n }\n\n #focusGridCell(cell: HTMLElement) {\n this.#renderer.setAttribute(cell, 'tabindex', '0');\n cell.focus();\n const allCells = this.#el.nativeElement.querySelectorAll('th, td');\n allCells.forEach((c: any) => {\n if (c !== cell) {\n this.#renderer.setAttribute(c, 'tabindex', '-1');\n }\n });\n }\n\n e = effect(() => {\n const sortByColumn = this.sortByColumn();\n\n if (sortByColumn === null) {\n if (!this.#initialDataSet()) {\n this.#initialData = this.data();\n this.#initialDataSet.set(true);\n }\n\n return this.dataChange.emit(structuredClone(this.#initialData));\n }\n\n const column = sortByColumn.startsWith('-') ? sortByColumn.slice(1) : sortByColumn;\n const isDescending = sortByColumn.startsWith('-');\n\n const currentData = this.data();\n const sortedData = [...currentData].sort((a: any, b: any) => {\n const colConfig = this.content()\n ?.columns()\n ?.find((c) => c.id === column);\n\n if (colConfig?.sortPredicate) {\n const predicateResult = colConfig.sortPredicate(a, b);\n return isDescending ? -predicateResult : predicateResult;\n }\n\n const valueA = colConfig ? this.content()?.getValue(a, colConfig) : a[column];\n const valueB = colConfig ? this.content()?.getValue(b, colConfig) : b[column];\n\n const aNull = valueA === null || valueA === undefined;\n const bNull = valueB === null || valueB === undefined;\n\n if (aNull && bNull) return 0;\n if (aNull) return 1;\n if (bNull) return -1;\n\n let comparison = 0;\n\n if (colConfig?.type === 'date') {\n const dateA = new Date(valueA).getTime();\n const dateB = new Date(valueB).getTime();\n comparison = isNaN(dateA) || isNaN(dateB) ? 0 : dateA - dateB;\n } else if (colConfig?.type === 'number') {\n comparison = Number(valueA) - Number(valueB);\n } else if (colConfig?.type === 'boolean') {\n const boolA = valueA ? 1 : 0;\n const boolB = valueB ? 1 : 0;\n comparison = boolA - boolB;\n } else if (colConfig?.type === 'string' || colConfig?.type === 'badge') {\n comparison = valueA.toString().localeCompare(valueB.toString(), undefined, { sensitivity: 'base' });\n } else {\n if (typeof valueA === 'number' && typeof valueB === 'number') {\n comparison = valueA - valueB;\n } else if (valueA instanceof Date && valueB instanceof Date) {\n comparison = valueA.getTime() - valueB.getTime();\n } else if (typeof valueA === 'string' && typeof valueB === 'string') {\n comparison = valueA.localeCompare(valueB, undefined, { sensitivity: 'base' });\n }\n }\n\n return isDescending ? -comparison : comparison;\n });\n\n let changed = sortedData.length !== currentData.length;\n if (!changed) {\n for (let i = 0; i < sortedData.length; i++) {\n if (sortedData[i] !== currentData[i]) {\n changed = true;\n break;\n }\n }\n }\n\n if (changed) {\n this.dataChange.emit(sortedData);\n }\n });\n\n toggleSort(column: string) {\n const currentSort = this.sortByColumn();\n const sortDir = currentSort === column ? `-${column}` : currentSort === `-${column}` ? null : column;\n\n this.sortByColumn.set(sortDir);\n }\n\n #checkScroll(): void {\n const element = this.#el.nativeElement as HTMLElement;\n let nextXState: ScrollState = -1;\n let nextYState: ScrollState = -1;\n\n const canScrollX = element.scrollWidth > element.clientWidth + SCROLL_TOLERANCE;\n\n if (canScrollX) {\n const isAtStartX = element.scrollLeft <= SCROLL_TOLERANCE;\n const isAtEndX = element.scrollWidth - (element.scrollLeft + element.clientWidth) < SCROLL_TOLERANCE;\n\n if (isAtEndX) {\n nextXState = 1;\n } else if (!isAtStartX) {\n nextXState = 0;\n }\n }\n\n this.scrollXState.set(nextXState);\n this.canScrollX.set(canScrollX);\n\n const canScrollY = element.scrollHeight > element.clientHeight + SCROLL_TOLERANCE;\n\n if (canScrollY) {\n const isAtStartY = element.scrollTop <= SCROLL_TOLERANCE;\n const isAtEndY = element.scrollHeight - (element.scrollTop + element.clientHeight) < SCROLL_TOLERANCE;\n\n if (isAtEndY) {\n nextYState = 1;\n } else if (!isAtStartY) {\n nextYState = 0;\n }\n }\n\n this.scrollYState.set(nextYState);\n this.canScrollY.set(canScrollY);\n }\n}\n\n@Component({\n selector: 'sh-table-content',\n standalone: true,\n imports: [NgTemplateOutlet, ShipSort, ShipResize, ShipIcon, ShipChip],\n host: {\n style: 'display: contents',\n },\n template: `\n <thead #thead role=\"rowgroup\">\n <tr role=\"row\">\n @for (col of columns(); track col.id) {\n <th\n role=\"columnheader\"\n [id]=\"col.id\"\n [attr.aria-label]=\"col.header\"\n [shSort]=\"col.sortable ? col.id : undefined\"\n shResize\n [resizable]=\"!!col.resizable\"\n [minWidth]=\"col.minWidth ?? 50\"\n [maxWidth]=\"col.maxWidth ?? null\"\n [attr.size]=\"col.size || null\"\n [class.sticky]=\"col.sticky === 'start'\"\n [class.sticky-end]=\"col.sticky === 'end'\">\n {{ col.header }}\n @if (col.sortable) {\n @if (sortByColumn() === col.id) {\n <sh-icon>caret-up</sh-icon>\n } @else if (sortByColumn() === '-' + col.id) {\n <sh-icon>caret-down</sh-icon>\n } @else {\n <sh-icon>arrows-down-up</sh-icon>\n }\n }\n </th>\n }\n </tr>\n </thead>\n\n <tbody #tbody role=\"rowgroup\">\n @for (row of data(); track $index) {\n @let rowIndex = $index;\n <tr role=\"row\">\n @for (col of columns(); track col.id) {\n <td\n [class.sticky]=\"col.sticky === 'start'\"\n [class.sticky-end]=\"col.sticky === 'end'\"\n [id]=\"col.id + '-' + rowIndex\"\n [attr.aria-labelledby]=\"col.id + ' ' + col.id + '-' + rowIndex\"\n [attr.role]=\"col.rowHeader ? 'rowheader' : grid() ? 'gridcell' : 'cell'\">\n @if (col.cellTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"col.cellTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: row, column: col }\" />\n } @else if (col.cell) {\n {{ col.cell(row) }}\n } @else if (col.format) {\n {{ col.format(getValue(row, col), row) }}\n } @else {\n @switch (col.type) {\n @case ('date') {\n {{ formatDate(getValue(row, col)) }}\n }\n @case ('boolean') {\n @if (getValue(row, col)) {\n <sh-icon class=\"text-success\">check</sh-icon>\n } @else {\n <sh-icon class=\"text-muted\">x</sh-icon>\n }\n }\n @case ('badge') {\n <sh-chip>{{ getValue(row, col) }}</sh-chip>\n }\n @default {\n {{ getValue(row, col) }}\n }\n }\n }\n </td>\n }\n </tr>\n }\n </tbody>\n `,\n})\nexport class ShipTableContent {\n #table = inject(ShipTable);\n\n columns = input<ShipTableColumn[]>([]);\n data = input<any[]>([]);\n\n sortByColumn = this.#table.sortByColumn;\n grid = this.#table.grid;\n\n thead = viewChild<ElementRef<HTMLTableSectionElement>>('thead');\n tbody = viewChild<ElementRef<HTMLTableSectionElement>>('tbody');\n\n getValue(row: any, col: ShipTableColumn): any {\n if (!row) return '';\n const key = col.accessorKey || col.id;\n if (typeof key === 'string' && key.includes('.')) {\n return key.split('.').reduce((acc, part) => acc?.[part], row);\n }\n return row[key as any];\n }\n\n formatDate(value: any): string {\n if (!value) return '';\n const date = new Date(value);\n if (isNaN(date.getTime())) return String(value);\n return date.toLocaleDateString();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ship-ui-core-ship-table.mjs","sources":["../../../projects/ship-ui/ship-table/ship-table.ts","../../../projects/ship-ui/ship-table/ship-ui-core-ship-table.ts"],"sourcesContent":["import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n Directive,\n effect,\n ElementRef,\n HostListener,\n inject,\n Injector,\n input,\n model,\n output,\n Renderer2,\n signal,\n TemplateRef,\n untracked,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { observeChildren, ShipColor, shipComponentClasses, ShipTableVariant } from '@ship-ui/core';\nimport { ShipA11yKeybindingsService } from '@ship-ui/core/ship-a11y-keybindings';\nimport { ShipChip } from '@ship-ui/core/ship-chip';\nimport { ShipIcon } from '@ship-ui/core/ship-icon';\nimport { ShipProgressBar } from '@ship-ui/core/ship-progress-bar';\n\nexport interface ShipTableColumn<T = any> {\n id: string;\n header: string;\n accessorKey?: keyof T | string;\n type?: 'string' | 'number' | 'date' | 'boolean' | 'badge' | (string & {});\n sortable?: boolean;\n resizable?: boolean;\n minWidth?: number;\n maxWidth?: number;\n size?: string;\n sticky?: 'start' | 'end' | null;\n cell?: (row: T) => any;\n cellTemplate?: TemplateRef<any> | null;\n format?: (value: any, row: T) => any;\n sortPredicate?: (a: T, b: T) => number;\n rowHeader?: boolean;\n}\n\n@Directive({\n selector: '[shResize]',\n standalone: true,\n host: {\n '[class.resizing]': 'resizingClass()',\n },\n})\nexport class ShipResize {\n #el = inject(ElementRef) as ElementRef<HTMLTableCellElement>;\n #renderer = inject(Renderer2);\n #table = inject(ShipTable);\n #keybindings = inject(ShipA11yKeybindingsService);\n #injector = inject(Injector);\n #sort = signal<ShipSort | null>(null);\n\n resizable = input<boolean>(true);\n minWidth = input<number>(50);\n maxWidth = input<number | null>(null);\n\n resizingClass = signal(false);\n\n #startX!: number;\n #startWidth!: number;\n #resizing = false;\n #animationFrameRequest: number | null = null; \n\n constructor() {\n effect(() => {\n if (this.#sort()) return;\n\n const hostEl = this.#el.nativeElement;\n if (this.resizable()) {\n const parts: string[] = [];\n const decAction = 'table.column-resize-decrease';\n const decShortcut = this.#keybindings.getShortcut(decAction);\n if (decShortcut) {\n parts.push(this.#keybindings.getDisplayShortcut(decAction) || decShortcut);\n }\n const incAction = 'table.column-resize-increase';\n const incShortcut = this.#keybindings.getShortcut(incAction);\n if (incShortcut) {\n parts.push(this.#keybindings.getDisplayShortcut(incAction) || incShortcut);\n }\n\n if (parts.length > 0) {\n this.#renderer.setAttribute(hostEl, 'aria-keyshortcuts', parts.join(', '));\n } else {\n this.#renderer.removeAttribute(hostEl, 'aria-keyshortcuts');\n }\n } else {\n this.#renderer.removeAttribute(hostEl, 'aria-keyshortcuts');\n }\n });\n }\n\n ngOnInit() {\n if (!this.#table) {\n console.error('shTableResize directive must be used within a sh-table component.');\n return;\n }\n\n const hostEl = this.#el.nativeElement;\n\n \n this.#sort.set(this.#injector.get(ShipSort, null, { optional: true, self: true }));\n\n if (this.resizable()) {\n const resizer = this.#renderer.createElement('div');\n this.#renderer.addClass(resizer, 'sh-resizer');\n this.#renderer.appendChild(hostEl, resizer);\n this.#renderer.listen(resizer, 'mousedown', this.#onMouseDown.bind(this));\n\n if (!hostEl.hasAttribute('role')) {\n this.#renderer.setAttribute(hostEl, 'role', 'columnheader');\n }\n\n if (!this.#sort() && !hostEl.hasAttribute('tabindex')) {\n this.#renderer.setAttribute(hostEl, 'tabindex', '0');\n }\n }\n }\n\n @HostListener('keydown', ['$event'])\n onKeyDown(event: KeyboardEvent) {\n if (!this.resizable()) return;\n\n const target = event.target as HTMLElement;\n const host = this.#el.nativeElement;\n if (\n target !== host &&\n (target.tagName === 'BUTTON' ||\n target.tagName === 'INPUT' ||\n target.tagName === 'SELECT' ||\n target.tagName === 'TEXTAREA' ||\n target.closest('button, input, select, textarea, a') !== null ||\n target.closest('[role=\"button\"], [role=\"checkbox\"], [role=\"menuitem\"]') !== null)\n ) {\n return;\n }\n\n if ((event.key === 'ArrowLeft' || event.key === 'ArrowRight') && !event.shiftKey) {\n if (!this.#sort()) {\n const parentRow = host.parentElement;\n if (parentRow) {\n const headers = Array.from(parentRow.querySelectorAll<HTMLElement>('th')).filter(\n (el) => el.getAttribute('tabindex') === '0' || el.hasAttribute('shSort') || el.hasAttribute('shResize')\n );\n const currentIndex = headers.indexOf(host);\n if (currentIndex !== -1) {\n const nextIndex = event.key === 'ArrowRight' ? currentIndex + 1 : currentIndex - 1;\n if (nextIndex >= 0 && nextIndex < headers.length) {\n event.preventDefault();\n headers[nextIndex].focus();\n return;\n }\n }\n }\n }\n }\n\n const isDecrease = this.#keybindings.matches(event, 'table.column-resize-decrease');\n const isIncrease = this.#keybindings.matches(event, 'table.column-resize-increase');\n\n if (isDecrease || isIncrease) {\n event.preventDefault();\n event.stopPropagation();\n\n const currentWidth = this.#el.nativeElement.offsetWidth;\n const step = 10;\n const targetWidth = isDecrease ? currentWidth - step : currentWidth + step;\n\n const constrainedWidth = Math.max(\n this.minWidth(),\n this.maxWidth() ? Math.min(targetWidth, this.maxWidth() ?? targetWidth) : targetWidth\n );\n\n this.#renderer.setAttribute(this.#el.nativeElement, 'size', `${constrainedWidth}px`);\n this.#table.updateColumnSizes();\n }\n }\n\n @HostListener('document:mousemove', ['$event'])\n onMouseMove(event: MouseEvent) {\n if (!this.#resizing) return;\n\n this.#scheduleResize(event);\n }\n\n @HostListener('document:mouseup', ['$event'])\n onMouseUp(event: MouseEvent) {\n if (this.#resizing) {\n this.#resizing = false;\n this.resizingClass.set(false);\n\n if (this.#animationFrameRequest !== null) {\n cancelAnimationFrame(this.#animationFrameRequest);\n this.#animationFrameRequest = null;\n }\n\n // Delay resetting the table's resizing state to block sorting clicks immediately after resizing\n setTimeout(() => {\n this.#table.resizing.set(false);\n }, 50);\n }\n }\n\n @HostListener('document:click', ['$event']) onClick(event: MouseEvent) {\n if (this.#resizing) {\n event.stopPropagation();\n }\n }\n\n #onMouseDown(event: MouseEvent) {\n event.stopPropagation();\n\n if (!this.resizable()) return;\n\n this.#table.resizing.set(true);\n this.#resizing = true;\n this.resizingClass.set(true);\n this.#startX = event.pageX;\n this.#startWidth = this.#el.nativeElement.offsetWidth;\n }\n\n #scheduleResize(event: MouseEvent) {\n if (this.#animationFrameRequest !== null) {\n cancelAnimationFrame(this.#animationFrameRequest);\n }\n\n this.#animationFrameRequest = requestAnimationFrame(() => {\n this.#resizeColumn(event);\n this.#animationFrameRequest = null;\n });\n }\n\n #resizeColumn(event: MouseEvent) {\n const width = this.#startWidth + (event.pageX - this.#startX);\n const constrainedWidth = Math.max(\n this.minWidth(),\n this.maxWidth() ? Math.min(width, this.maxWidth() ?? width) : width\n );\n\n this.#renderer.setAttribute(this.#el.nativeElement, 'size', `${constrainedWidth}px`);\n this.#table.updateColumnSizes();\n }\n\n ngOnDestroy() {\n if (this.#animationFrameRequest !== null) {\n cancelAnimationFrame(this.#animationFrameRequest);\n }\n }\n}\n\n@Directive({\n selector: '[shSort]',\n standalone: true,\n host: {\n role: 'columnheader',\n '[class.sortable]': '!!shSort()',\n '[attr.tabindex]': 'tabIndex()',\n '(click)': 'shSort() ? toggleSort($event) : null',\n '[attr.aria-sort]': 'shSort() ? ariaSort() : null',\n '[class.sort-asc]': 'sortAsc()',\n '[class.sort-desc]': 'sortDesc()',\n '[attr.aria-keyshortcuts]': 'ariaKeyshortcuts()',\n },\n})\nexport class ShipSort {\n #table = inject(ShipTable);\n #keybindings = inject(ShipA11yKeybindingsService);\n #injector = inject(Injector);\n #el = inject(ElementRef) as ElementRef<HTMLTableCellElement>;\n #resize = signal<ShipResize | null>(null);\n shSort = input<string | undefined>();\n\n ngOnInit() {\n // Resolve ShipResize lazily to avoid circular DI instantiation issues\n this.#resize.set(this.#injector.get(ShipResize, null, { optional: true, self: true }));\n }\n\n tabIndex = computed(() => {\n const resize = this.#resize();\n return this.shSort() || (resize && resize.resizable()) ? '0' : null;\n });\n\n ariaKeyshortcuts = computed(() => {\n const parts: string[] = [];\n const resize = this.#resize();\n\n if (this.shSort()) {\n const action = 'table.sort';\n const shortcut = this.#keybindings.getShortcut(action);\n if (shortcut) {\n parts.push(this.#keybindings.getDisplayShortcut(action) || shortcut);\n }\n }\n\n if (resize && resize.resizable()) {\n const decAction = 'table.column-resize-decrease';\n const decShortcut = this.#keybindings.getShortcut(decAction);\n if (decShortcut) {\n parts.push(this.#keybindings.getDisplayShortcut(decAction) || decShortcut);\n }\n\n const incAction = 'table.column-resize-increase';\n const incShortcut = this.#keybindings.getShortcut(incAction);\n if (incShortcut) {\n parts.push(this.#keybindings.getDisplayShortcut(incAction) || incShortcut);\n }\n }\n\n return parts.length > 0 ? parts.join(', ') : null;\n });\n\n @HostListener('keydown', ['$event'])\n onKeyDown(event: KeyboardEvent) {\n if (!this.shSort()) return;\n\n const target = event.target as HTMLElement;\n const host = this.#el.nativeElement;\n if (\n target !== host &&\n (target.tagName === 'BUTTON' ||\n target.tagName === 'INPUT' ||\n target.tagName === 'SELECT' ||\n target.tagName === 'TEXTAREA' ||\n target.closest('button, input, select, textarea, a') !== null ||\n target.closest('[role=\"button\"], [role=\"checkbox\"], [role=\"menuitem\"]') !== null)\n ) {\n return;\n }\n\n if ((event.key === 'ArrowLeft' || event.key === 'ArrowRight') && !event.shiftKey) {\n const parentRow = host.parentElement;\n if (parentRow) {\n const headers = Array.from(parentRow.querySelectorAll<HTMLElement>('th')).filter(\n (el) => el.getAttribute('tabindex') === '0' || el.hasAttribute('shSort') || el.hasAttribute('shResize')\n );\n const currentIndex = headers.indexOf(host);\n if (currentIndex !== -1) {\n const nextIndex = event.key === 'ArrowRight' ? currentIndex + 1 : currentIndex - 1;\n if (nextIndex >= 0 && nextIndex < headers.length) {\n event.preventDefault();\n headers[nextIndex].focus();\n return;\n }\n }\n }\n }\n\n if (this.#keybindings.matches(event, 'table.sort')) {\n this.toggleSort(event);\n }\n }\n\n sortAsc = computed(() => {\n const currentSort = this.#table.sortByColumn();\n const thisColumn = this.shSort();\n\n if (!currentSort || !thisColumn) return false;\n\n return currentSort === thisColumn;\n });\n\n sortDesc = computed(() => {\n const currentSort = this.#table.sortByColumn();\n const thisColumn = this.shSort();\n\n if (!currentSort || !thisColumn) return false;\n\n return currentSort === `-${thisColumn}`;\n });\n\n ariaSort = computed(() => {\n if (this.sortAsc()) return 'ascending';\n if (this.sortDesc()) return 'descending';\n return 'none';\n });\n\n toggleSort(event?: Event) {\n if (event) {\n const target = event.target as HTMLElement;\n const host = this.#el.nativeElement;\n if (\n target !== host &&\n (target.tagName === 'BUTTON' ||\n target.tagName === 'INPUT' ||\n target.tagName === 'SELECT' ||\n target.tagName === 'TEXTAREA' ||\n target.closest('button, input, select, textarea, a') !== null ||\n target.closest('[role=\"button\"], [role=\"checkbox\"], [role=\"menuitem\"]') !== null)\n ) {\n return;\n }\n event.preventDefault();\n }\n if (this.#table.resizing()) {\n return;\n }\n const sortCol = this.shSort();\n\n if (!sortCol) return;\n\n this.#table.toggleSort(sortCol);\n }\n}\n\n@Directive({\n selector: '[shStickyColumns]',\n\n host: {\n '[class.sticky]': 'shStickyColumns() === \"start\" || shStickyColumns() === \"\"',\n '[class.sticky-end]': 'shStickyColumns() === \"end\"',\n },\n})\nexport class ShipStickyColumns {\n #elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n #renderer = inject(Renderer2);\n\n shStickyColumns = input<'start' | 'end' | (string & {})>('start');\n\n ngAfterContentInit() {\n this.#applyGridColumnStyle();\n }\n\n #applyGridColumnStyle() {\n const nativeElement = this.#elementRef.nativeElement;\n const cellChildren = nativeElement.querySelectorAll<HTMLTableCellElement>(':scope > th, :scope > td');\n const columnSpanCount = cellChildren.length;\n\n if (columnSpanCount > 0) {\n const position = this.shStickyColumns();\n\n this.#renderer.setStyle(\n nativeElement,\n 'grid-column',\n position === 'end' ? `-${columnSpanCount + 1} / -1` : `1 / ${columnSpanCount + 1}`\n );\n }\n }\n}\n\nconst SCROLL_TOLERANCE = 1.5;\ntype ScrollState = -1 | 0 | 1;\n\n@Component({\n selector: 'sh-table',\n styleUrl: './ship-table.scss',\n encapsulation: ViewEncapsulation.None,\n imports: [ShipProgressBar],\n template: `\n <div class=\"actionbar\">\n <ng-content select=\"[actionbar]:not([align-right])\" />\n <div class=\"actionbar-right\">\n <ng-content select=\"[actionbar][align-right]\" />\n </div>\n </div>\n\n @if (loading()) {\n <sh-progress-bar class=\"indeterminate primary\" />\n }\n\n <ng-content select=\"sh-table-content\" />\n\n @if (!content()) {\n <thead #theadLocal role=\"rowgroup\">\n <ng-content select=\"th\" />\n <ng-content select=\"[thead]\" />\n </thead>\n\n <tbody #tbodyLocal role=\"rowgroup\">\n <ng-content />\n </tbody>\n }\n\n @if (!loading()) {\n <div class=\"no-rows\">\n <ng-content select=\"[table-no-rows]\" />\n </div>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.role]': 'role()',\n '[attr.aria-busy]': 'loading()',\n '[attr.aria-label]': 'ariaLabel()',\n '[attr.aria-labelledby]': 'ariaLabelledby()',\n '[class]': 'hostClasses()',\n '[style.grid-template-columns]': 'columnSizes()',\n '[class.resizing]': 'resizing()',\n '(scroll)': 'onScroll()',\n '[class.can-scroll-x]': 'canScrollX()',\n '[class.can-scroll-y]': 'canScrollY()',\n '[class.scrolled-x]': 'scrollXState() >= 0',\n '[class.scrolled-x-end]': 'scrollXState() === 1',\n '[class.scrolled-y]': 'scrollYState() >= 0',\n '[class.scrolled-y-end]': 'scrollYState() === 1',\n },\n})\nexport class ShipTable {\n #el = inject(ElementRef);\n #renderer = inject(Renderer2);\n #keybindings = inject(ShipA11yKeybindingsService);\n\n grid = input<boolean>(false);\n role = computed(() => (this.grid() ? 'grid' : 'table'));\n\n loading = input<boolean>(false);\n data = input<any>([]);\n dataChange = output<any>();\n sortByColumn = model<string | null>(null);\n\n color = input<ShipColor | null>(null);\n variant = input<ShipTableVariant | null>(null);\n\n ariaLabel = input<string | null>(null, { alias: 'aria-label' });\n ariaLabelledby = input<string | null>(null, { alias: 'aria-labelledby' });\n\n hostClasses = shipComponentClasses('table', {\n color: this.color,\n variant: this.variant,\n });\n\n content = contentChild(ShipTableContent);\n\n theadLocal = viewChild<ElementRef<HTMLTableSectionElement>>('theadLocal');\n tbodyLocal = viewChild<ElementRef<HTMLTableSectionElement>>('tbodyLocal');\n\n thead = computed(() => this.content()?.thead() || this.theadLocal());\n tbody = computed(() => this.content()?.tbody() || this.tbodyLocal());\n columns = observeChildren<HTMLTableColElement>(this.thead, ['tr:first-child th']);\n\n stickyHeaderHeight = signal<number>(0);\n\n theadEffect = effect((onCleanup) => {\n const head = this.thead()?.nativeElement;\n\n if (head && typeof ResizeObserver !== 'undefined') {\n const observer = new ResizeObserver((entries) => {\n const height = head.clientHeight;\n this.stickyHeaderHeight.set(height);\n });\n observer.observe(head);\n onCleanup(() => observer.disconnect());\n }\n });\n\n bodyEffect = effect(() => {\n const body = this.tbody()?.nativeElement;\n const head = this.thead()?.nativeElement;\n\n if (!body || !head) return;\n\n const stickyHeaderHeight = this.stickyHeaderHeight();\n\n queueMicrotask(() => {\n const hasStickyRowHeaderStartElement = head.querySelectorAll('tr.sticky').length > 0;\n const stickyBodyRows = body.querySelectorAll('tr.sticky');\n const hasStickyRowStartElement = stickyBodyRows.length > 0;\n\n if (hasStickyRowStartElement && hasStickyRowHeaderStartElement) {\n for (let index = 0; index < stickyBodyRows.length; index++) {\n (stickyBodyRows[index] as HTMLElement).style.top = `${stickyHeaderHeight}px`;\n }\n }\n });\n });\n\n gridSetupEffect = effect(() => {\n const gridActive = this.grid();\n const dataVal = this.data();\n const colSignal = this.columns.signal();\n\n untracked(() => {\n const host = this.#el.nativeElement;\n const allCells = host.querySelectorAll('th, td');\n\n if (gridActive) {\n if (allCells.length === 0) return;\n\n let hasZero = false;\n allCells.forEach((cell: any) => {\n if (cell.getAttribute('tabindex') === '0') {\n hasZero = true;\n }\n });\n\n if (!hasZero) {\n this.#renderer.setAttribute(allCells[0], 'tabindex', '0');\n }\n\n allCells.forEach((cell: any) => {\n if (cell.getAttribute('tabindex') !== '0') {\n this.#renderer.setAttribute(cell, 'tabindex', '-1');\n }\n if (!cell.hasAttribute('role')) {\n this.#renderer.setAttribute(cell, 'role', cell.tagName === 'TD' ? 'gridcell' : 'columnheader');\n }\n });\n\n const allRows = host.querySelectorAll('tr');\n allRows.forEach((row: any) => {\n if (!row.hasAttribute('role')) {\n this.#renderer.setAttribute(row, 'role', 'row');\n }\n });\n } else {\n // Clean up\n allCells.forEach((cell: any) => {\n const isHeader = cell.tagName === 'TH';\n if (isHeader) {\n const isInteractiveHeader =\n cell.classList.contains('sortable') ||\n cell.querySelector('.sh-resizer') !== null ||\n cell.hasAttribute('aria-keyshortcuts');\n if (isInteractiveHeader) {\n this.#renderer.setAttribute(cell, 'tabindex', '0');\n } else {\n this.#renderer.removeAttribute(cell, 'tabindex');\n }\n } else {\n // Remove tabindex from td (data cells)\n this.#renderer.removeAttribute(cell, 'tabindex');\n }\n });\n }\n });\n });\n\n resizing = signal(false);\n sizeTrigger = signal(true);\n #initialData: any | null = null;\n #initialDataSet = signal(false);\n scrollXState = signal<ScrollState>(-1);\n scrollYState = signal<ScrollState>(-1);\n canScrollX = signal(false);\n canScrollY = signal(false);\n\n columnSizes = computed(() => {\n this.sizeTrigger();\n const colSignal = this.columns.signal();\n\n return colSignal.reduce((acc: string, col: any, index: number) => {\n const colEl = col;\n const colSize = colEl.getAttribute('size');\n const last = index === colSignal.length - 1;\n\n if (colSize) {\n return `${acc} ${colSize}`;\n }\n\n if (colEl.classList.contains('sticky') || colEl.classList.contains('sticky-end')) {\n return `${acc} min-content`;\n }\n\n if (last) {\n return `${acc} 1fr`;\n }\n\n return `${acc} 1fr`;\n }, '');\n });\n\n updateColumnSizes() {\n this.sizeTrigger.set(!this.sizeTrigger());\n }\n\n onScroll(): void {\n this.#checkScroll();\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event: Event) {\n this.#checkScroll();\n }\n\n ngAfterViewInit() {\n queueMicrotask(() => this.#checkScroll());\n }\n\n @HostListener('focusin', ['$event'])\n onFocusIn(event: FocusEvent) {\n if (!this.grid()) return;\n\n const target = event.target as HTMLElement;\n if (!target) return;\n\n const cell =\n target.tagName === 'TH' || target.tagName === 'TD' ? target : (target.closest('th, td') as HTMLElement);\n if (cell) {\n // Set roles dynamically for cells and rows if not present\n if (!cell.hasAttribute('role')) {\n this.#renderer.setAttribute(cell, 'role', cell.tagName === 'TD' ? 'gridcell' : 'columnheader');\n }\n const parentRow = cell.parentElement;\n if (parentRow && !parentRow.hasAttribute('role')) {\n this.#renderer.setAttribute(parentRow, 'role', 'row');\n }\n\n // Set tabindex=\"0\" on focused cell and tabindex=\"-1\" on all other cells\n this.#renderer.setAttribute(cell, 'tabindex', '0');\n const allCells = this.#el.nativeElement.querySelectorAll('th, td');\n allCells.forEach((c: any) => {\n if (c !== cell) {\n this.#renderer.setAttribute(c, 'tabindex', '-1');\n }\n });\n }\n }\n\n @HostListener('keydown', ['$event'])\n onGridKeyDown(event: KeyboardEvent) {\n if (!this.grid()) return;\n\n if (event.key === 'Tab') {\n const target = event.target as HTMLElement;\n const cell =\n target.tagName === 'TH' || target.tagName === 'TD' ? target : (target.closest('th, td') as HTMLElement);\n if (!cell) return;\n\n const focusableSelectors = 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])';\n const focusableChildren = Array.from(cell.querySelectorAll(focusableSelectors)) as HTMLElement[];\n\n const row = cell.parentElement as HTMLTableRowElement;\n if (!row || row.tagName !== 'TR') return;\n\n const cellsInRow = Array.from(row.querySelectorAll('th, td')) as HTMLElement[];\n const currentColIndex = cellsInRow.indexOf(cell);\n if (currentColIndex === -1) return;\n\n if (!event.shiftKey) {\n // Forward Tab\n const isLastChild =\n focusableChildren.length === 0 || target === focusableChildren[focusableChildren.length - 1];\n const isCellSelf = target === cell;\n\n if (isLastChild && !isCellSelf) {\n // Move to next cell in row\n if (currentColIndex < cellsInRow.length - 1) {\n event.preventDefault();\n this.#focusGridCell(cellsInRow[currentColIndex + 1]);\n }\n } else if (isCellSelf && focusableChildren.length === 0) {\n // Move to next cell in row\n if (currentColIndex < cellsInRow.length - 1) {\n event.preventDefault();\n this.#focusGridCell(cellsInRow[currentColIndex + 1]);\n }\n }\n } else {\n // Shift + Tab (Backward)\n const isFirstChild = focusableChildren.length > 0 && target === focusableChildren[0];\n const isCellSelf = target === cell;\n\n if (isFirstChild) {\n event.preventDefault();\n this.#focusGridCell(cell);\n } else if (isCellSelf) {\n if (currentColIndex > 0) {\n event.preventDefault();\n const prevCell = cellsInRow[currentColIndex - 1];\n const prevFocusableChildren = Array.from(prevCell.querySelectorAll(focusableSelectors)) as HTMLElement[];\n if (prevFocusableChildren.length > 0) {\n this.#focusGridCell(prevCell);\n prevFocusableChildren[prevFocusableChildren.length - 1].focus();\n } else {\n this.#focusGridCell(prevCell);\n }\n }\n }\n }\n return;\n }\n\n const isUp = this.#keybindings.matches(event, 'grid.focus-up');\n const isDown = this.#keybindings.matches(event, 'grid.focus-down');\n const isLeft = this.#keybindings.matches(event, 'grid.focus-left');\n const isRight = this.#keybindings.matches(event, 'grid.focus-right');\n const isFirst = this.#keybindings.matches(event, 'grid.focus-first');\n const isLast = this.#keybindings.matches(event, 'grid.focus-last');\n\n if (!isUp && !isDown && !isLeft && !isRight && !isFirst && !isLast) return;\n\n const target = event.target as HTMLElement;\n if (target.tagName !== 'TH' && target.tagName !== 'TD') {\n // Focus is inside a child control, let them operate normally\n return;\n }\n\n const row = target.parentElement as HTMLTableRowElement;\n if (!row || row.tagName !== 'TR') return;\n\n const allRows = Array.from(this.#el.nativeElement.querySelectorAll('tr')) as HTMLTableRowElement[];\n const currentRowIndex = allRows.indexOf(row);\n if (currentRowIndex === -1) return;\n\n const cellsInRow = Array.from(row.querySelectorAll('th, td')) as HTMLElement[];\n const currentColIndex = cellsInRow.indexOf(target);\n if (currentColIndex === -1) return;\n\n let targetRowIndex = currentRowIndex;\n let targetColIndex = currentColIndex;\n\n if (isUp) {\n targetRowIndex = currentRowIndex - 1;\n } else if (isDown) {\n targetRowIndex = currentRowIndex + 1;\n } else if (isLeft) {\n targetColIndex = currentColIndex - 1;\n } else if (isRight) {\n targetColIndex = currentColIndex + 1;\n } else if (isFirst) {\n targetColIndex = 0;\n } else if (isLast) {\n targetColIndex = cellsInRow.length - 1;\n }\n\n if (targetRowIndex !== currentRowIndex) {\n const targetRow = allRows[targetRowIndex];\n if (targetRow) {\n const targetCells = Array.from(targetRow.querySelectorAll('th, td')) as HTMLElement[];\n const targetCell = targetCells[Math.min(currentColIndex, targetCells.length - 1)];\n if (targetCell) {\n event.preventDefault();\n this.#focusGridCell(targetCell);\n }\n }\n } else if (targetColIndex !== currentColIndex) {\n const targetCell = cellsInRow[targetColIndex];\n if (targetCell) {\n event.preventDefault();\n this.#focusGridCell(targetCell);\n }\n }\n }\n\n #focusGridCell(cell: HTMLElement) {\n this.#renderer.setAttribute(cell, 'tabindex', '0');\n cell.focus();\n const allCells = this.#el.nativeElement.querySelectorAll('th, td');\n allCells.forEach((c: any) => {\n if (c !== cell) {\n this.#renderer.setAttribute(c, 'tabindex', '-1');\n }\n });\n }\n\n e = effect(() => {\n const sortByColumn = this.sortByColumn();\n\n if (sortByColumn === null) {\n if (!this.#initialDataSet()) {\n this.#initialData = this.data();\n this.#initialDataSet.set(true);\n }\n\n return this.dataChange.emit(structuredClone(this.#initialData));\n }\n\n const column = sortByColumn.startsWith('-') ? sortByColumn.slice(1) : sortByColumn;\n const isDescending = sortByColumn.startsWith('-');\n\n const currentData = this.data();\n const sortedData = [...currentData].sort((a: any, b: any) => {\n const colConfig = this.content()\n ?.columns()\n ?.find((c) => c.id === column);\n\n if (colConfig?.sortPredicate) {\n const predicateResult = colConfig.sortPredicate(a, b);\n return isDescending ? -predicateResult : predicateResult;\n }\n\n const valueA = colConfig ? this.content()?.getValue(a, colConfig) : a[column];\n const valueB = colConfig ? this.content()?.getValue(b, colConfig) : b[column];\n\n const aNull = valueA === null || valueA === undefined;\n const bNull = valueB === null || valueB === undefined;\n\n if (aNull && bNull) return 0;\n if (aNull) return 1;\n if (bNull) return -1;\n\n let comparison = 0;\n\n if (colConfig?.type === 'date') {\n const dateA = new Date(valueA).getTime();\n const dateB = new Date(valueB).getTime();\n comparison = isNaN(dateA) || isNaN(dateB) ? 0 : dateA - dateB;\n } else if (colConfig?.type === 'number') {\n comparison = Number(valueA) - Number(valueB);\n } else if (colConfig?.type === 'boolean') {\n const boolA = valueA ? 1 : 0;\n const boolB = valueB ? 1 : 0;\n comparison = boolA - boolB;\n } else if (colConfig?.type === 'string' || colConfig?.type === 'badge') {\n comparison = valueA.toString().localeCompare(valueB.toString(), undefined, { sensitivity: 'base' });\n } else {\n if (typeof valueA === 'number' && typeof valueB === 'number') {\n comparison = valueA - valueB;\n } else if (valueA instanceof Date && valueB instanceof Date) {\n comparison = valueA.getTime() - valueB.getTime();\n } else if (typeof valueA === 'string' && typeof valueB === 'string') {\n comparison = valueA.localeCompare(valueB, undefined, { sensitivity: 'base' });\n }\n }\n\n return isDescending ? -comparison : comparison;\n });\n\n let changed = sortedData.length !== currentData.length;\n if (!changed) {\n for (let i = 0; i < sortedData.length; i++) {\n if (sortedData[i] !== currentData[i]) {\n changed = true;\n break;\n }\n }\n }\n\n if (changed) {\n this.dataChange.emit(sortedData);\n }\n });\n\n toggleSort(column: string) {\n const currentSort = this.sortByColumn();\n const sortDir = currentSort === column ? `-${column}` : currentSort === `-${column}` ? null : column;\n\n this.sortByColumn.set(sortDir);\n }\n\n #checkScroll(): void {\n const element = this.#el.nativeElement as HTMLElement;\n let nextXState: ScrollState = -1;\n let nextYState: ScrollState = -1;\n\n const canScrollX = element.scrollWidth > element.clientWidth + SCROLL_TOLERANCE;\n\n if (canScrollX) {\n const isAtStartX = element.scrollLeft <= SCROLL_TOLERANCE;\n const isAtEndX = element.scrollWidth - (element.scrollLeft + element.clientWidth) < SCROLL_TOLERANCE;\n\n if (isAtEndX) {\n nextXState = 1;\n } else if (!isAtStartX) {\n nextXState = 0;\n }\n }\n\n this.scrollXState.set(nextXState);\n this.canScrollX.set(canScrollX);\n\n const canScrollY = element.scrollHeight > element.clientHeight + SCROLL_TOLERANCE;\n\n if (canScrollY) {\n const isAtStartY = element.scrollTop <= SCROLL_TOLERANCE;\n const isAtEndY = element.scrollHeight - (element.scrollTop + element.clientHeight) < SCROLL_TOLERANCE;\n\n if (isAtEndY) {\n nextYState = 1;\n } else if (!isAtStartY) {\n nextYState = 0;\n }\n }\n\n this.scrollYState.set(nextYState);\n this.canScrollY.set(canScrollY);\n }\n}\n\n@Component({\n selector: 'sh-table-content',\n standalone: true,\n imports: [NgTemplateOutlet, ShipSort, ShipResize, ShipIcon, ShipChip],\n host: {\n style: 'display: contents',\n },\n template: `\n <thead #thead role=\"rowgroup\">\n <tr role=\"row\">\n @for (col of columns(); track col.id) {\n <th\n role=\"columnheader\"\n [id]=\"col.id\"\n [attr.aria-label]=\"col.header\"\n [shSort]=\"col.sortable ? col.id : undefined\"\n shResize\n [resizable]=\"!!col.resizable\"\n [minWidth]=\"col.minWidth ?? 50\"\n [maxWidth]=\"col.maxWidth ?? null\"\n [attr.size]=\"col.size || null\"\n [class.sticky]=\"col.sticky === 'start'\"\n [class.sticky-end]=\"col.sticky === 'end'\">\n {{ col.header }}\n @if (col.sortable) {\n @if (sortByColumn() === col.id) {\n <sh-icon>caret-up</sh-icon>\n } @else if (sortByColumn() === '-' + col.id) {\n <sh-icon>caret-down</sh-icon>\n } @else {\n <sh-icon>arrows-down-up</sh-icon>\n }\n }\n </th>\n }\n </tr>\n </thead>\n\n <tbody #tbody role=\"rowgroup\">\n @for (row of data(); track $index) {\n @let rowIndex = $index;\n <tr role=\"row\">\n @for (col of columns(); track col.id) {\n <td\n [class.sticky]=\"col.sticky === 'start'\"\n [class.sticky-end]=\"col.sticky === 'end'\"\n [id]=\"col.id + '-' + rowIndex\"\n [attr.aria-labelledby]=\"col.id + ' ' + col.id + '-' + rowIndex\"\n [attr.role]=\"col.rowHeader ? 'rowheader' : grid() ? 'gridcell' : 'cell'\">\n @if (col.cellTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"col.cellTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: row, column: col }\" />\n } @else if (col.cell) {\n {{ col.cell(row) }}\n } @else if (col.format) {\n {{ col.format(getValue(row, col), row) }}\n } @else {\n @switch (col.type) {\n @case ('date') {\n {{ formatDate(getValue(row, col)) }}\n }\n @case ('boolean') {\n @if (getValue(row, col)) {\n <sh-icon class=\"text-success\">check</sh-icon>\n } @else {\n <sh-icon class=\"text-muted\">x</sh-icon>\n }\n }\n @case ('badge') {\n <sh-chip>{{ getValue(row, col) }}</sh-chip>\n }\n @default {\n {{ getValue(row, col) }}\n }\n }\n }\n </td>\n }\n </tr>\n }\n </tbody>\n `,\n})\nexport class ShipTableContent {\n #table = inject(ShipTable);\n\n columns = input<ShipTableColumn[]>([]);\n data = input<any[]>([]);\n\n sortByColumn = this.#table.sortByColumn;\n grid = this.#table.grid;\n\n thead = viewChild<ElementRef<HTMLTableSectionElement>>('thead');\n tbody = viewChild<ElementRef<HTMLTableSectionElement>>('tbody');\n\n getValue(row: any, col: ShipTableColumn): any {\n if (!row) return '';\n const key = col.accessorKey || col.id;\n if (typeof key === 'string' && key.includes('.')) {\n return key.split('.').reduce((acc, part) => acc?.[part], row);\n }\n return row[key as any];\n }\n\n formatDate(value: any): string {\n if (!value) return '';\n const date = new Date(value);\n if (isNaN(date.getTime())) return String(value);\n return date.toLocaleDateString();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ import { ShipA11yKeybindingsService } from '@ship-ui/core/ship-a11y-keybindings'
|
|
|
5
5
|
|
|
6
6
|
class ShipToggle {
|
|
7
7
|
constructor() {
|
|
8
|
-
this
|
|
8
|
+
this.#elementRef = inject(ElementRef);
|
|
9
9
|
this.#keybindings = inject(ShipA11yKeybindingsService);
|
|
10
10
|
this.internalInput = viewChild('internalInput', /* @ts-ignore */
|
|
11
11
|
...(ngDevMode ? [{ debugName: "internalInput" }] : /* istanbul ignore next */ []));
|
|
@@ -31,6 +31,7 @@ class ShipToggle {
|
|
|
31
31
|
readonly: this.readonly,
|
|
32
32
|
});
|
|
33
33
|
}
|
|
34
|
+
#elementRef;
|
|
34
35
|
#keybindings;
|
|
35
36
|
onInternalInputChange(event) {
|
|
36
37
|
if (this.disabled())
|
|
@@ -45,7 +46,7 @@ class ShipToggle {
|
|
|
45
46
|
inputEl.click();
|
|
46
47
|
}
|
|
47
48
|
else {
|
|
48
|
-
this.
|
|
49
|
+
this.#elementRef.nativeElement.click();
|
|
49
50
|
}
|
|
50
51
|
event.preventDefault();
|
|
51
52
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ship-ui-core-ship-toggle.mjs","sources":["../../../projects/ship-ui/ship-toggle/ship-toggle.ts","../../../projects/ship-ui/ship-toggle/ship-ui-core-ship-toggle.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, ElementRef, HostListener, inject, input, model, viewChild, ViewEncapsulation } from '@angular/core';\nimport { contentProjectionSignal } from '@ship-ui/core';\nimport { ShipA11yKeybindingsService } from '@ship-ui/core/ship-a11y-keybindings';\nimport { shipComponentClasses } from '@ship-ui/core';\nimport { ShipColor, ShipSheetVariant } from '@ship-ui/core';\n\n@Component({\n selector: 'sh-toggle',\n styleUrl: './ship-toggle.scss',\n encapsulation: ViewEncapsulation.None,\n imports: [],\n template: `\n <div class=\"box\">\n <div class=\"knob\"></div>\n </div>\n\n <ng-content />\n\n @if (projectedInputs().length === 0 && !noInternalInput()) {\n <input\n #internalInput\n type=\"checkbox\"\n class=\"internal-input\"\n [attr.disabled]=\"disabled() ? '' : null\"\n [checked]=\"checked()\"\n (change)=\"onInternalInputChange($event)\" />\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n '[attr.disabled]': 'disabled() ? \"\" : null',\n '[attr.role]': 'noInternalInput() ? \"switch\" : null',\n '[attr.aria-checked]': 'noInternalInput() ? checked() : null',\n '[attr.tabindex]': 'noInternalInput() ? (disabled() ? \"-1\" : \"0\") : null',\n },\n})\nexport class ShipToggle {\n
|
|
1
|
+
{"version":3,"file":"ship-ui-core-ship-toggle.mjs","sources":["../../../projects/ship-ui/ship-toggle/ship-toggle.ts","../../../projects/ship-ui/ship-toggle/ship-ui-core-ship-toggle.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, ElementRef, HostListener, inject, input, model, viewChild, ViewEncapsulation } from '@angular/core';\nimport { contentProjectionSignal } from '@ship-ui/core';\nimport { ShipA11yKeybindingsService } from '@ship-ui/core/ship-a11y-keybindings';\nimport { shipComponentClasses } from '@ship-ui/core';\nimport { ShipColor, ShipSheetVariant } from '@ship-ui/core';\n\n@Component({\n selector: 'sh-toggle',\n styleUrl: './ship-toggle.scss',\n encapsulation: ViewEncapsulation.None,\n imports: [],\n template: `\n <div class=\"box\">\n <div class=\"knob\"></div>\n </div>\n\n <ng-content />\n\n @if (projectedInputs().length === 0 && !noInternalInput()) {\n <input\n #internalInput\n type=\"checkbox\"\n class=\"internal-input\"\n [attr.disabled]=\"disabled() ? '' : null\"\n [checked]=\"checked()\"\n (change)=\"onInternalInputChange($event)\" />\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n '[attr.disabled]': 'disabled() ? \"\" : null',\n '[attr.role]': 'noInternalInput() ? \"switch\" : null',\n '[attr.aria-checked]': 'noInternalInput() ? checked() : null',\n '[attr.tabindex]': 'noInternalInput() ? (disabled() ? \"-1\" : \"0\") : null',\n },\n})\nexport class ShipToggle {\n #elementRef = inject(ElementRef);\n #keybindings = inject(ShipA11yKeybindingsService);\n\n internalInput = viewChild<ElementRef<HTMLInputElement>>('internalInput');\n projectedInputs = contentProjectionSignal<HTMLInputElement>('input:not(.internal-input)', {\n childList: true,\n attributes: true,\n });\n\n checked = model<boolean>(false);\n color = input<ShipColor | null>(null);\n variant = input<ShipSheetVariant | null>(null);\n readonly = input<boolean>(false);\n disabled = input<boolean>(false);\n noInternalInput = input<boolean>(false);\n\n onInternalInputChange(event: Event) {\n if (this.disabled()) return;\n\n const input = event.target as HTMLInputElement;\n this.checked.set(input.checked);\n }\n\n hostClasses = shipComponentClasses('toggle', {\n color: this.color,\n variant: this.variant,\n readonly: this.readonly,\n });\n\n @HostListener('keydown', ['$event'])\n onKeyDown(event: KeyboardEvent) {\n if (this.#keybindings.matches(event, 'toggle.toggle')) {\n const inputEl = this.internalInput()?.nativeElement;\n if (inputEl && getComputedStyle(inputEl).display !== 'none') {\n inputEl.click();\n } else {\n this.#elementRef.nativeElement.click();\n }\n event.preventDefault();\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;MAqCa,UAAU,CAAA;AA/BvB,IAAA,WAAA,GAAA;AAgCE,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AAChC,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,0BAA0B,CAAC;QAEjD,IAAA,CAAA,aAAa,GAAG,SAAS,CAA+B,eAAe;0FAAC;AACxE,QAAA,IAAA,CAAA,eAAe,GAAG,uBAAuB,CAAmB,4BAA4B,EAAE;AACxF,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,UAAU,EAAE,IAAI;AACjB,SAAA,CAAC;QAEF,IAAA,CAAA,OAAO,GAAG,KAAK,CAAU,KAAK;oFAAC;QAC/B,IAAA,CAAA,KAAK,GAAG,KAAK,CAAmB,IAAI;kFAAC;QACrC,IAAA,CAAA,OAAO,GAAG,KAAK,CAA0B,IAAI;oFAAC;QAC9C,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAU,KAAK;qFAAC;QAChC,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAU,KAAK;qFAAC;QAChC,IAAA,CAAA,eAAe,GAAG,KAAK,CAAU,KAAK;4FAAC;AASvC,QAAA,IAAA,CAAA,WAAW,GAAG,oBAAoB,CAAC,QAAQ,EAAE;YAC3C,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACxB,SAAA,CAAC;AAcH,IAAA;AAzCC,IAAA,WAAW;AACX,IAAA,YAAY;AAeZ,IAAA,qBAAqB,CAAC,KAAY,EAAA;QAChC,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE;AAErB,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAA0B;QAC9C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC;IACjC;AASA,IAAA,SAAS,CAAC,KAAoB,EAAA;QAC5B,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,eAAe,CAAC,EAAE;YACrD,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,EAAE,aAAa;YACnD,IAAI,OAAO,IAAI,gBAAgB,CAAC,OAAO,CAAC,CAAC,OAAO,KAAK,MAAM,EAAE;gBAC3D,OAAO,CAAC,KAAK,EAAE;YACjB;iBAAO;AACL,gBAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE;YACxC;YACA,KAAK,CAAC,cAAc,EAAE;QACxB;IACF;8GAzCW,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAV,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,eAAA,EAAA,0BAAA,EAAA,WAAA,EAAA,uCAAA,EAAA,mBAAA,EAAA,sCAAA,EAAA,eAAA,EAAA,0DAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA1BX;;;;;;;;;;;;;;;;AAgBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,spKAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAUU,UAAU,EAAA,UAAA,EAAA,CAAA;kBA/BtB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,iBAEN,iBAAiB,CAAC,IAAI,EAAA,OAAA,EAC5B,EAAE,EAAA,QAAA,EACD;;;;;;;;;;;;;;;;GAgBT,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,SAAS,EAAE,eAAe;AAC1B,wBAAA,iBAAiB,EAAE,wBAAwB;AAC3C,wBAAA,aAAa,EAAE,qCAAqC;AACpD,wBAAA,qBAAqB,EAAE,sCAAsC;AAC7D,wBAAA,iBAAiB,EAAE,sDAAsD;AAC1E,qBAAA,EAAA,MAAA,EAAA,CAAA,spKAAA,CAAA,EAAA;2EAMuD,eAAe,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA;sBA0BtE,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;;ACnErC;;AAEG;;;;"}
|