@tailng-ui/primitives 0.44.0 → 0.46.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (24) hide show
  1. package/package.json +2 -2
  2. package/src/lib/form/_shared/select/tng-select.overlay.shared.d.ts.map +1 -1
  3. package/src/lib/form/_shared/select/tng-select.overlay.shared.js +10 -0
  4. package/src/lib/form/_shared/select/tng-select.overlay.shared.js.map +1 -1
  5. package/src/lib/navigation/index.d.ts +1 -0
  6. package/src/lib/navigation/index.d.ts.map +1 -1
  7. package/src/lib/navigation/index.js +1 -0
  8. package/src/lib/navigation/index.js.map +1 -1
  9. package/src/lib/navigation/pagination/__tests__/tng-pagination.test-harness.d.ts +44 -0
  10. package/src/lib/navigation/pagination/__tests__/tng-pagination.test-harness.d.ts.map +1 -0
  11. package/src/lib/navigation/pagination/__tests__/tng-pagination.test-harness.js +194 -0
  12. package/src/lib/navigation/pagination/__tests__/tng-pagination.test-harness.js.map +1 -0
  13. package/src/lib/navigation/pagination/index.d.ts +2 -0
  14. package/src/lib/navigation/pagination/index.d.ts.map +1 -0
  15. package/src/lib/navigation/pagination/index.js +2 -0
  16. package/src/lib/navigation/pagination/index.js.map +1 -0
  17. package/src/lib/navigation/pagination/tng-pagination.d.ts +131 -0
  18. package/src/lib/navigation/pagination/tng-pagination.d.ts.map +1 -0
  19. package/src/lib/navigation/pagination/tng-pagination.js +437 -0
  20. package/src/lib/navigation/pagination/tng-pagination.js.map +1 -0
  21. package/src/lib/overlay/popover/tng-popover.d.ts +1 -0
  22. package/src/lib/overlay/popover/tng-popover.d.ts.map +1 -1
  23. package/src/lib/overlay/popover/tng-popover.js +15 -2
  24. package/src/lib/overlay/popover/tng-popover.js.map +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tng-pagination.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/navigation/pagination/tng-pagination.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,437 @@
1
+ import { Directive, ElementRef, HostBinding, HostListener, booleanAttribute, computed, inject, input, output, signal, } from '@angular/core';
2
+ import { createTngPaginationController, } from '@tailng-ui/cdk';
3
+ import * as i0 from "@angular/core";
4
+ function normalizeModeInput(value) {
5
+ return value === 'server' ? 'server' : 'client';
6
+ }
7
+ function normalizeNumberInput(value, fallback) {
8
+ if (typeof value === 'number') {
9
+ return Number.isFinite(value) ? value : fallback;
10
+ }
11
+ if (typeof value === 'string') {
12
+ const normalized = value.trim();
13
+ if (normalized.length === 0) {
14
+ return fallback;
15
+ }
16
+ const parsed = Number(normalized);
17
+ return Number.isFinite(parsed) ? parsed : fallback;
18
+ }
19
+ return fallback;
20
+ }
21
+ function normalizePageIndexInput(value) {
22
+ return Math.max(0, Math.trunc(normalizeNumberInput(value, 0)));
23
+ }
24
+ function normalizeOptionalPageIndexInput(value) {
25
+ if (value === undefined || value === null) {
26
+ return undefined;
27
+ }
28
+ return normalizePageIndexInput(value);
29
+ }
30
+ function normalizePageSizeInput(value) {
31
+ return Math.max(1, Math.trunc(normalizeNumberInput(value, 10)));
32
+ }
33
+ function normalizeTotalItemsInput(value) {
34
+ return Math.max(0, Math.trunc(normalizeNumberInput(value, 0)));
35
+ }
36
+ function normalizeStringInput(value) {
37
+ if (value === undefined || value === null) {
38
+ return null;
39
+ }
40
+ if (typeof value !== 'string' &&
41
+ typeof value !== 'number' &&
42
+ typeof value !== 'boolean' &&
43
+ typeof value !== 'bigint') {
44
+ return null;
45
+ }
46
+ const normalized = String(value).trim();
47
+ return normalized.length > 0 ? normalized : null;
48
+ }
49
+ export class TngPagination {
50
+ uncontrolledPageIndex = signal(0, ...(ngDevMode ? [{ debugName: "uncontrolledPageIndex" }] : []));
51
+ uncontrolledPageSize = signal(10, ...(ngDevMode ? [{ debugName: "uncontrolledPageSize" }] : []));
52
+ hasUncontrolledPageIndex = signal(false, ...(ngDevMode ? [{ debugName: "hasUncontrolledPageIndex" }] : []));
53
+ hasUncontrolledPageSize = signal(false, ...(ngDevMode ? [{ debugName: "hasUncontrolledPageSize" }] : []));
54
+ pageIndex = input(undefined, { ...(ngDevMode ? { debugName: "pageIndex" } : {}), transform: normalizeOptionalPageIndexInput });
55
+ defaultPageIndex = input(0, { ...(ngDevMode ? { debugName: "defaultPageIndex" } : {}), transform: normalizePageIndexInput });
56
+ pageSize = input(undefined, { ...(ngDevMode ? { debugName: "pageSize" } : {}), transform: (value) => {
57
+ if (value === undefined || value === null) {
58
+ return undefined;
59
+ }
60
+ return normalizePageSizeInput(value);
61
+ } });
62
+ defaultPageSize = input(10, { ...(ngDevMode ? { debugName: "defaultPageSize" } : {}), transform: normalizePageSizeInput });
63
+ totalItems = input(0, { ...(ngDevMode ? { debugName: "totalItems" } : {}), transform: normalizeTotalItemsInput });
64
+ mode = input('client', { ...(ngDevMode ? { debugName: "mode" } : {}), transform: normalizeModeInput });
65
+ disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : {}), transform: booleanAttribute });
66
+ ariaLabel = input('Pagination', { ...(ngDevMode ? { debugName: "ariaLabel" } : {}), transform: normalizeStringInput });
67
+ pageIndexChange = output();
68
+ pageSizeChange = output();
69
+ pageChange = output();
70
+ state = computed(() => {
71
+ return this.createController().setPageIndex(this.rawPageIndex(), this.totalItems());
72
+ }, ...(ngDevMode ? [{ debugName: "state" }] : []));
73
+ pageCount = computed(() => this.createController().getPageCount(this.totalItems()), ...(ngDevMode ? [{ debugName: "pageCount" }] : []));
74
+ isFirstPage = computed(() => this.state().pageIndex <= 0, ...(ngDevMode ? [{ debugName: "isFirstPage" }] : []));
75
+ isLastPage = computed(() => {
76
+ const pageCount = this.pageCount();
77
+ return pageCount === 0 || this.state().pageIndex >= pageCount - 1;
78
+ }, ...(ngDevMode ? [{ debugName: "isLastPage" }] : []));
79
+ get ariaLabelAttr() {
80
+ return this.ariaLabel();
81
+ }
82
+ get dataDisabledAttr() {
83
+ return this.disabled() ? '' : null;
84
+ }
85
+ get dataModeAttr() {
86
+ return this.mode();
87
+ }
88
+ get dataPageCountAttr() {
89
+ return this.pageCount();
90
+ }
91
+ get dataPageIndexAttr() {
92
+ return this.state().pageIndex;
93
+ }
94
+ get dataPageSizeAttr() {
95
+ return this.state().pageSize;
96
+ }
97
+ dataSlot = 'pagination';
98
+ firstPage() {
99
+ this.setPageIndex(0, 'first');
100
+ }
101
+ previousPage() {
102
+ this.setPageIndex(this.state().pageIndex - 1, 'previous');
103
+ }
104
+ nextPage() {
105
+ this.setPageIndex(this.state().pageIndex + 1, 'next');
106
+ }
107
+ lastPage() {
108
+ const pageCount = this.pageCount();
109
+ this.setPageIndex(pageCount > 0 ? pageCount - 1 : 0, 'last');
110
+ }
111
+ setPageIndex(pageIndex, trigger = 'programmatic') {
112
+ this.commit(this.createController().setPageIndex(pageIndex, this.totalItems()), trigger);
113
+ }
114
+ setPageSize(pageSize, trigger = 'size') {
115
+ const current = this.state();
116
+ const anchorIndex = current.pageIndex * current.pageSize;
117
+ this.commit(this.createController().setPageSize(pageSize, this.totalItems(), { anchorIndex }), trigger);
118
+ }
119
+ canGoToPreviousPage() {
120
+ return !this.disabled() && !this.isFirstPage();
121
+ }
122
+ canGoToNextPage() {
123
+ if (this.mode() === 'server') {
124
+ return !this.disabled();
125
+ }
126
+ return !this.disabled() && !this.isLastPage();
127
+ }
128
+ canGoToPage(pageIndex) {
129
+ if (this.disabled() || this.state().pageIndex === pageIndex) {
130
+ return false;
131
+ }
132
+ if (this.mode() === 'server') {
133
+ return pageIndex >= 0;
134
+ }
135
+ const pageCount = this.pageCount();
136
+ return pageIndex >= 0 && pageIndex < pageCount;
137
+ }
138
+ rawPageIndex() {
139
+ return (this.pageIndex() ??
140
+ (this.hasUncontrolledPageIndex() ? this.uncontrolledPageIndex() : this.defaultPageIndex()));
141
+ }
142
+ createController() {
143
+ return createTngPaginationController({
144
+ mode: this.mode(),
145
+ pageIndex: this.rawPageIndex(),
146
+ pageSize: this.rawPageSize(),
147
+ });
148
+ }
149
+ rawPageSize() {
150
+ return (this.pageSize() ??
151
+ (this.hasUncontrolledPageSize() ? this.uncontrolledPageSize() : this.defaultPageSize()));
152
+ }
153
+ commit(nextState, trigger) {
154
+ if (this.disabled()) {
155
+ return;
156
+ }
157
+ const previousState = this.state();
158
+ if (nextState.pageIndex === previousState.pageIndex &&
159
+ nextState.pageSize === previousState.pageSize) {
160
+ return;
161
+ }
162
+ if (this.pageIndex() === undefined) {
163
+ this.hasUncontrolledPageIndex.set(true);
164
+ this.uncontrolledPageIndex.set(nextState.pageIndex);
165
+ }
166
+ if (this.pageSize() === undefined) {
167
+ this.hasUncontrolledPageSize.set(true);
168
+ this.uncontrolledPageSize.set(nextState.pageSize);
169
+ }
170
+ this.pageIndexChange.emit(nextState.pageIndex);
171
+ if (nextState.pageSize !== previousState.pageSize) {
172
+ this.pageSizeChange.emit(nextState.pageSize);
173
+ }
174
+ this.pageChange.emit({
175
+ mode: this.mode(),
176
+ pageCount: this.pageCount(),
177
+ pageIndex: nextState.pageIndex,
178
+ pageSize: nextState.pageSize,
179
+ previousPageIndex: previousState.pageIndex,
180
+ previousPageSize: previousState.pageSize,
181
+ totalItems: this.totalItems(),
182
+ trigger,
183
+ });
184
+ }
185
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngPagination, deps: [], target: i0.ɵɵFactoryTarget.Directive });
186
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.1", type: TngPagination, isStandalone: true, selector: "[tngPagination]", inputs: { pageIndex: { classPropertyName: "pageIndex", publicName: "pageIndex", isSignal: true, isRequired: false, transformFunction: null }, defaultPageIndex: { classPropertyName: "defaultPageIndex", publicName: "defaultPageIndex", isSignal: true, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null }, defaultPageSize: { classPropertyName: "defaultPageSize", publicName: "defaultPageSize", isSignal: true, isRequired: false, transformFunction: null }, totalItems: { classPropertyName: "totalItems", publicName: "totalItems", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { pageIndexChange: "pageIndexChange", pageSizeChange: "pageSizeChange", pageChange: "pageChange" }, host: { properties: { "attr.aria-label": "this.ariaLabelAttr", "attr.data-disabled": "this.dataDisabledAttr", "attr.data-mode": "this.dataModeAttr", "attr.data-page-count": "this.dataPageCountAttr", "attr.data-page-index": "this.dataPageIndexAttr", "attr.data-page-size": "this.dataPageSizeAttr", "attr.data-slot": "this.dataSlot" } }, exportAs: ["tngPagination"], ngImport: i0 });
187
+ }
188
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngPagination, decorators: [{
189
+ type: Directive,
190
+ args: [{
191
+ selector: '[tngPagination]',
192
+ exportAs: 'tngPagination',
193
+ }]
194
+ }], propDecorators: { pageIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "pageIndex", required: false }] }], defaultPageIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultPageIndex", required: false }] }], pageSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "pageSize", required: false }] }], defaultPageSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultPageSize", required: false }] }], totalItems: [{ type: i0.Input, args: [{ isSignal: true, alias: "totalItems", required: false }] }], mode: [{ type: i0.Input, args: [{ isSignal: true, alias: "mode", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], pageIndexChange: [{ type: i0.Output, args: ["pageIndexChange"] }], pageSizeChange: [{ type: i0.Output, args: ["pageSizeChange"] }], pageChange: [{ type: i0.Output, args: ["pageChange"] }], ariaLabelAttr: [{
195
+ type: HostBinding,
196
+ args: ['attr.aria-label']
197
+ }], dataDisabledAttr: [{
198
+ type: HostBinding,
199
+ args: ['attr.data-disabled']
200
+ }], dataModeAttr: [{
201
+ type: HostBinding,
202
+ args: ['attr.data-mode']
203
+ }], dataPageCountAttr: [{
204
+ type: HostBinding,
205
+ args: ['attr.data-page-count']
206
+ }], dataPageIndexAttr: [{
207
+ type: HostBinding,
208
+ args: ['attr.data-page-index']
209
+ }], dataPageSizeAttr: [{
210
+ type: HostBinding,
211
+ args: ['attr.data-page-size']
212
+ }], dataSlot: [{
213
+ type: HostBinding,
214
+ args: ['attr.data-slot']
215
+ }] } });
216
+ class TngPaginationButton {
217
+ pagination = inject(TngPagination);
218
+ disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : {}), transform: booleanAttribute });
219
+ get ariaDisabledAttr() {
220
+ return this.isDisabled() ? 'true' : null;
221
+ }
222
+ get dataDisabledAttr() {
223
+ return this.isDisabled() ? '' : null;
224
+ }
225
+ get disabledAttr() {
226
+ return this.isDisabled() ? '' : null;
227
+ }
228
+ typeAttr = 'button';
229
+ isDisabled() {
230
+ return this.disabled() || this.pagination.disabled();
231
+ }
232
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngPaginationButton, deps: [], target: i0.ɵɵFactoryTarget.Directive });
233
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.1", type: TngPaginationButton, isStandalone: true, inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.aria-disabled": "this.ariaDisabledAttr", "attr.data-disabled": "this.dataDisabledAttr", "attr.disabled": "this.disabledAttr", "attr.type": "this.typeAttr" } }, ngImport: i0 });
234
+ }
235
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngPaginationButton, decorators: [{
236
+ type: Directive
237
+ }], propDecorators: { disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], ariaDisabledAttr: [{
238
+ type: HostBinding,
239
+ args: ['attr.aria-disabled']
240
+ }], dataDisabledAttr: [{
241
+ type: HostBinding,
242
+ args: ['attr.data-disabled']
243
+ }], disabledAttr: [{
244
+ type: HostBinding,
245
+ args: ['attr.disabled']
246
+ }], typeAttr: [{
247
+ type: HostBinding,
248
+ args: ['attr.type']
249
+ }] } });
250
+ export class TngPaginationFirst extends TngPaginationButton {
251
+ dataSlot = 'pagination-first';
252
+ isDisabled() {
253
+ return super.isDisabled() || this.pagination.isFirstPage();
254
+ }
255
+ onClick() {
256
+ if (this.isDisabled()) {
257
+ return;
258
+ }
259
+ this.pagination.firstPage();
260
+ }
261
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngPaginationFirst, deps: null, target: i0.ɵɵFactoryTarget.Directive });
262
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.1", type: TngPaginationFirst, isStandalone: true, selector: "button[tngPaginationFirst]", host: { listeners: { "click": "onClick()" }, properties: { "attr.data-slot": "this.dataSlot" } }, exportAs: ["tngPaginationFirst"], usesInheritance: true, ngImport: i0 });
263
+ }
264
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngPaginationFirst, decorators: [{
265
+ type: Directive,
266
+ args: [{
267
+ selector: 'button[tngPaginationFirst]',
268
+ exportAs: 'tngPaginationFirst',
269
+ }]
270
+ }], propDecorators: { dataSlot: [{
271
+ type: HostBinding,
272
+ args: ['attr.data-slot']
273
+ }], onClick: [{
274
+ type: HostListener,
275
+ args: ['click']
276
+ }] } });
277
+ export class TngPaginationPrevious extends TngPaginationButton {
278
+ dataSlot = 'pagination-previous';
279
+ isDisabled() {
280
+ return super.isDisabled() || !this.pagination.canGoToPreviousPage();
281
+ }
282
+ onClick() {
283
+ if (this.isDisabled()) {
284
+ return;
285
+ }
286
+ this.pagination.previousPage();
287
+ }
288
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngPaginationPrevious, deps: null, target: i0.ɵɵFactoryTarget.Directive });
289
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.1", type: TngPaginationPrevious, isStandalone: true, selector: "button[tngPaginationPrevious]", host: { listeners: { "click": "onClick()" }, properties: { "attr.data-slot": "this.dataSlot" } }, exportAs: ["tngPaginationPrevious"], usesInheritance: true, ngImport: i0 });
290
+ }
291
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngPaginationPrevious, decorators: [{
292
+ type: Directive,
293
+ args: [{
294
+ selector: 'button[tngPaginationPrevious]',
295
+ exportAs: 'tngPaginationPrevious',
296
+ }]
297
+ }], propDecorators: { dataSlot: [{
298
+ type: HostBinding,
299
+ args: ['attr.data-slot']
300
+ }], onClick: [{
301
+ type: HostListener,
302
+ args: ['click']
303
+ }] } });
304
+ export class TngPaginationNext extends TngPaginationButton {
305
+ dataSlot = 'pagination-next';
306
+ isDisabled() {
307
+ return super.isDisabled() || !this.pagination.canGoToNextPage();
308
+ }
309
+ onClick() {
310
+ if (this.isDisabled()) {
311
+ return;
312
+ }
313
+ this.pagination.nextPage();
314
+ }
315
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngPaginationNext, deps: null, target: i0.ɵɵFactoryTarget.Directive });
316
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.1", type: TngPaginationNext, isStandalone: true, selector: "button[tngPaginationNext]", host: { listeners: { "click": "onClick()" }, properties: { "attr.data-slot": "this.dataSlot" } }, exportAs: ["tngPaginationNext"], usesInheritance: true, ngImport: i0 });
317
+ }
318
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngPaginationNext, decorators: [{
319
+ type: Directive,
320
+ args: [{
321
+ selector: 'button[tngPaginationNext]',
322
+ exportAs: 'tngPaginationNext',
323
+ }]
324
+ }], propDecorators: { dataSlot: [{
325
+ type: HostBinding,
326
+ args: ['attr.data-slot']
327
+ }], onClick: [{
328
+ type: HostListener,
329
+ args: ['click']
330
+ }] } });
331
+ export class TngPaginationLast extends TngPaginationButton {
332
+ dataSlot = 'pagination-last';
333
+ isDisabled() {
334
+ return super.isDisabled() || this.pagination.isLastPage();
335
+ }
336
+ onClick() {
337
+ if (this.isDisabled()) {
338
+ return;
339
+ }
340
+ this.pagination.lastPage();
341
+ }
342
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngPaginationLast, deps: null, target: i0.ɵɵFactoryTarget.Directive });
343
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.1", type: TngPaginationLast, isStandalone: true, selector: "button[tngPaginationLast]", host: { listeners: { "click": "onClick()" }, properties: { "attr.data-slot": "this.dataSlot" } }, exportAs: ["tngPaginationLast"], usesInheritance: true, ngImport: i0 });
344
+ }
345
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngPaginationLast, decorators: [{
346
+ type: Directive,
347
+ args: [{
348
+ selector: 'button[tngPaginationLast]',
349
+ exportAs: 'tngPaginationLast',
350
+ }]
351
+ }], propDecorators: { dataSlot: [{
352
+ type: HostBinding,
353
+ args: ['attr.data-slot']
354
+ }], onClick: [{
355
+ type: HostListener,
356
+ args: ['click']
357
+ }] } });
358
+ export class TngPaginationPage extends TngPaginationButton {
359
+ page = input.required({ ...(ngDevMode ? { debugName: "page" } : {}), alias: 'tngPaginationPage',
360
+ transform: normalizePageIndexInput });
361
+ get ariaCurrentAttr() {
362
+ return this.isCurrentPage() ? 'page' : null;
363
+ }
364
+ get dataCurrentAttr() {
365
+ return this.isCurrentPage() ? '' : null;
366
+ }
367
+ dataSlot = 'pagination-page';
368
+ onClick() {
369
+ if (this.isDisabled()) {
370
+ return;
371
+ }
372
+ this.pagination.setPageIndex(this.page(), 'page');
373
+ }
374
+ isCurrentPage() {
375
+ return this.pagination.state().pageIndex === this.page();
376
+ }
377
+ isDisabled() {
378
+ return super.isDisabled() || !this.pagination.canGoToPage(this.page());
379
+ }
380
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngPaginationPage, deps: null, target: i0.ɵɵFactoryTarget.Directive });
381
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.1", type: TngPaginationPage, isStandalone: true, selector: "button[tngPaginationPage]", inputs: { page: { classPropertyName: "page", publicName: "tngPaginationPage", isSignal: true, isRequired: true, transformFunction: null } }, host: { listeners: { "click": "onClick()" }, properties: { "attr.aria-current": "this.ariaCurrentAttr", "attr.data-current": "this.dataCurrentAttr", "attr.data-slot": "this.dataSlot" } }, exportAs: ["tngPaginationPage"], usesInheritance: true, ngImport: i0 });
382
+ }
383
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngPaginationPage, decorators: [{
384
+ type: Directive,
385
+ args: [{
386
+ selector: 'button[tngPaginationPage]',
387
+ exportAs: 'tngPaginationPage',
388
+ }]
389
+ }], propDecorators: { page: [{ type: i0.Input, args: [{ isSignal: true, alias: "tngPaginationPage", required: true }] }], ariaCurrentAttr: [{
390
+ type: HostBinding,
391
+ args: ['attr.aria-current']
392
+ }], dataCurrentAttr: [{
393
+ type: HostBinding,
394
+ args: ['attr.data-current']
395
+ }], dataSlot: [{
396
+ type: HostBinding,
397
+ args: ['attr.data-slot']
398
+ }], onClick: [{
399
+ type: HostListener,
400
+ args: ['click']
401
+ }] } });
402
+ export class TngPaginationPageSize {
403
+ pagination = inject(TngPagination);
404
+ hostRef = inject(ElementRef);
405
+ dataSlot = 'pagination-page-size';
406
+ get disabledProp() {
407
+ return this.pagination.disabled();
408
+ }
409
+ get valueProp() {
410
+ return String(this.pagination.state().pageSize);
411
+ }
412
+ onChange() {
413
+ this.pagination.setPageSize(normalizePageSizeInput(this.hostRef.nativeElement.value), 'size');
414
+ }
415
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngPaginationPageSize, deps: [], target: i0.ɵɵFactoryTarget.Directive });
416
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.1", type: TngPaginationPageSize, isStandalone: true, selector: "select[tngPaginationPageSize]", host: { listeners: { "change": "onChange()" }, properties: { "attr.data-slot": "this.dataSlot", "disabled": "this.disabledProp", "value": "this.valueProp" } }, exportAs: ["tngPaginationPageSize"], ngImport: i0 });
417
+ }
418
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngPaginationPageSize, decorators: [{
419
+ type: Directive,
420
+ args: [{
421
+ selector: 'select[tngPaginationPageSize]',
422
+ exportAs: 'tngPaginationPageSize',
423
+ }]
424
+ }], propDecorators: { dataSlot: [{
425
+ type: HostBinding,
426
+ args: ['attr.data-slot']
427
+ }], disabledProp: [{
428
+ type: HostBinding,
429
+ args: ['disabled']
430
+ }], valueProp: [{
431
+ type: HostBinding,
432
+ args: ['value']
433
+ }], onChange: [{
434
+ type: HostListener,
435
+ args: ['change']
436
+ }] } });
437
+ //# sourceMappingURL=tng-pagination.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tng-pagination.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/navigation/pagination/tng-pagination.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Directive,\n ElementRef,\n HostBinding,\n HostListener,\n booleanAttribute,\n computed,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport {\n createTngPaginationController,\n type TngTablePaginationController,\n type TngTablePaginationMode,\n type TngTablePaginationState,\n} from '@tailng-ui/cdk';\n\nexport type TngPaginationMode = TngTablePaginationMode;\nexport type TngPaginationTrigger =\n | 'first'\n | 'last'\n | 'next'\n | 'page'\n | 'previous'\n | 'programmatic'\n | 'size';\n\nexport type TngPaginationChangeEvent = Readonly<{\n mode: TngPaginationMode;\n pageCount: number;\n pageIndex: number;\n pageSize: number;\n previousPageIndex: number;\n previousPageSize: number;\n totalItems: number;\n trigger: TngPaginationTrigger;\n}>;\n\nfunction normalizeModeInput(value: unknown): TngPaginationMode {\n return value === 'server' ? 'server' : 'client';\n}\n\nfunction normalizeNumberInput(value: unknown, fallback: number): number {\n if (typeof value === 'number') {\n return Number.isFinite(value) ? value : fallback;\n }\n\n if (typeof value === 'string') {\n const normalized = value.trim();\n if (normalized.length === 0) {\n return fallback;\n }\n\n const parsed = Number(normalized);\n return Number.isFinite(parsed) ? parsed : fallback;\n }\n\n return fallback;\n}\n\nfunction normalizePageIndexInput(value: unknown): number {\n return Math.max(0, Math.trunc(normalizeNumberInput(value, 0)));\n}\n\nfunction normalizeOptionalPageIndexInput(value: unknown): number | undefined {\n if (value === undefined || value === null) {\n return undefined;\n }\n\n return normalizePageIndexInput(value);\n}\n\nfunction normalizePageSizeInput(value: unknown): number {\n return Math.max(1, Math.trunc(normalizeNumberInput(value, 10)));\n}\n\nfunction normalizeTotalItemsInput(value: unknown): number {\n return Math.max(0, Math.trunc(normalizeNumberInput(value, 0)));\n}\n\nfunction normalizeStringInput(value: unknown): string | null {\n if (value === undefined || value === null) {\n return null;\n }\n\n if (\n typeof value !== 'string' &&\n typeof value !== 'number' &&\n typeof value !== 'boolean' &&\n typeof value !== 'bigint'\n ) {\n return null;\n }\n\n const normalized = String(value).trim();\n return normalized.length > 0 ? normalized : null;\n}\n\n@Directive({\n selector: '[tngPagination]',\n exportAs: 'tngPagination',\n})\nexport class TngPagination {\n private readonly uncontrolledPageIndex = signal(0);\n private readonly uncontrolledPageSize = signal(10);\n private readonly hasUncontrolledPageIndex = signal(false);\n private readonly hasUncontrolledPageSize = signal(false);\n\n public readonly pageIndex = input<number | undefined, unknown>(undefined, {\n transform: normalizeOptionalPageIndexInput,\n });\n public readonly defaultPageIndex = input<number, unknown>(0, {\n transform: normalizePageIndexInput,\n });\n public readonly pageSize = input<number | undefined, unknown>(undefined, {\n transform: (value: unknown) => {\n if (value === undefined || value === null) {\n return undefined;\n }\n\n return normalizePageSizeInput(value);\n },\n });\n public readonly defaultPageSize = input<number, unknown>(10, {\n transform: normalizePageSizeInput,\n });\n public readonly totalItems = input<number, unknown>(0, {\n transform: normalizeTotalItemsInput,\n });\n public readonly mode = input<TngPaginationMode, unknown>('client', {\n transform: normalizeModeInput,\n });\n public readonly disabled = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly ariaLabel = input<string | null, unknown>('Pagination', {\n transform: normalizeStringInput,\n });\n\n public readonly pageIndexChange = output<number>();\n public readonly pageSizeChange = output<number>();\n public readonly pageChange = output<TngPaginationChangeEvent>();\n\n public readonly state = computed<TngTablePaginationState>(() => {\n return this.createController().setPageIndex(this.rawPageIndex(), this.totalItems());\n });\n\n public readonly pageCount = computed(() =>\n this.createController().getPageCount(this.totalItems()),\n );\n public readonly isFirstPage = computed(() => this.state().pageIndex <= 0);\n public readonly isLastPage = computed(() => {\n const pageCount = this.pageCount();\n return pageCount === 0 || this.state().pageIndex >= pageCount - 1;\n });\n\n @HostBinding('attr.aria-label')\n protected get ariaLabelAttr(): string | null {\n return this.ariaLabel();\n }\n\n @HostBinding('attr.data-disabled')\n protected get dataDisabledAttr(): '' | null {\n return this.disabled() ? '' : null;\n }\n\n @HostBinding('attr.data-mode')\n protected get dataModeAttr(): TngPaginationMode {\n return this.mode();\n }\n\n @HostBinding('attr.data-page-count')\n protected get dataPageCountAttr(): number {\n return this.pageCount();\n }\n\n @HostBinding('attr.data-page-index')\n protected get dataPageIndexAttr(): number {\n return this.state().pageIndex;\n }\n\n @HostBinding('attr.data-page-size')\n protected get dataPageSizeAttr(): number {\n return this.state().pageSize;\n }\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'pagination' as const;\n\n public firstPage(): void {\n this.setPageIndex(0, 'first');\n }\n\n public previousPage(): void {\n this.setPageIndex(this.state().pageIndex - 1, 'previous');\n }\n\n public nextPage(): void {\n this.setPageIndex(this.state().pageIndex + 1, 'next');\n }\n\n public lastPage(): void {\n const pageCount = this.pageCount();\n this.setPageIndex(pageCount > 0 ? pageCount - 1 : 0, 'last');\n }\n\n public setPageIndex(pageIndex: number, trigger: TngPaginationTrigger = 'programmatic'): void {\n this.commit(this.createController().setPageIndex(pageIndex, this.totalItems()), trigger);\n }\n\n public setPageSize(pageSize: number, trigger: TngPaginationTrigger = 'size'): void {\n const current = this.state();\n const anchorIndex = current.pageIndex * current.pageSize;\n this.commit(\n this.createController().setPageSize(pageSize, this.totalItems(), { anchorIndex }),\n trigger,\n );\n }\n\n public canGoToPreviousPage(): boolean {\n return !this.disabled() && !this.isFirstPage();\n }\n\n public canGoToNextPage(): boolean {\n if (this.mode() === 'server') {\n return !this.disabled();\n }\n\n return !this.disabled() && !this.isLastPage();\n }\n\n public canGoToPage(pageIndex: number): boolean {\n if (this.disabled() || this.state().pageIndex === pageIndex) {\n return false;\n }\n\n if (this.mode() === 'server') {\n return pageIndex >= 0;\n }\n\n const pageCount = this.pageCount();\n return pageIndex >= 0 && pageIndex < pageCount;\n }\n\n private rawPageIndex(): number {\n return (\n this.pageIndex() ??\n (this.hasUncontrolledPageIndex() ? this.uncontrolledPageIndex() : this.defaultPageIndex())\n );\n }\n\n private createController(): TngTablePaginationController<unknown> {\n return createTngPaginationController<unknown>({\n mode: this.mode(),\n pageIndex: this.rawPageIndex(),\n pageSize: this.rawPageSize(),\n });\n }\n\n private rawPageSize(): number {\n return (\n this.pageSize() ??\n (this.hasUncontrolledPageSize() ? this.uncontrolledPageSize() : this.defaultPageSize())\n );\n }\n\n private commit(nextState: TngTablePaginationState, trigger: TngPaginationTrigger): void {\n if (this.disabled()) {\n return;\n }\n\n const previousState = this.state();\n if (\n nextState.pageIndex === previousState.pageIndex &&\n nextState.pageSize === previousState.pageSize\n ) {\n return;\n }\n\n if (this.pageIndex() === undefined) {\n this.hasUncontrolledPageIndex.set(true);\n this.uncontrolledPageIndex.set(nextState.pageIndex);\n }\n\n if (this.pageSize() === undefined) {\n this.hasUncontrolledPageSize.set(true);\n this.uncontrolledPageSize.set(nextState.pageSize);\n }\n\n this.pageIndexChange.emit(nextState.pageIndex);\n if (nextState.pageSize !== previousState.pageSize) {\n this.pageSizeChange.emit(nextState.pageSize);\n }\n\n this.pageChange.emit({\n mode: this.mode(),\n pageCount: this.pageCount(),\n pageIndex: nextState.pageIndex,\n pageSize: nextState.pageSize,\n previousPageIndex: previousState.pageIndex,\n previousPageSize: previousState.pageSize,\n totalItems: this.totalItems(),\n trigger,\n });\n }\n}\n\n@Directive()\nabstract class TngPaginationButton {\n protected readonly pagination = inject(TngPagination);\n\n public readonly disabled = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n\n @HostBinding('attr.aria-disabled')\n protected get ariaDisabledAttr(): 'true' | null {\n return this.isDisabled() ? 'true' : null;\n }\n\n @HostBinding('attr.data-disabled')\n protected get dataDisabledAttr(): '' | null {\n return this.isDisabled() ? '' : null;\n }\n\n @HostBinding('attr.disabled')\n protected get disabledAttr(): '' | null {\n return this.isDisabled() ? '' : null;\n }\n\n @HostBinding('attr.type')\n protected readonly typeAttr = 'button' as const;\n\n protected isDisabled(): boolean {\n return this.disabled() || this.pagination.disabled();\n }\n}\n\n@Directive({\n selector: 'button[tngPaginationFirst]',\n exportAs: 'tngPaginationFirst',\n})\nexport class TngPaginationFirst extends TngPaginationButton {\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'pagination-first' as const;\n\n protected override isDisabled(): boolean {\n return super.isDisabled() || this.pagination.isFirstPage();\n }\n\n @HostListener('click')\n protected onClick(): void {\n if (this.isDisabled()) {\n return;\n }\n\n this.pagination.firstPage();\n }\n}\n\n@Directive({\n selector: 'button[tngPaginationPrevious]',\n exportAs: 'tngPaginationPrevious',\n})\nexport class TngPaginationPrevious extends TngPaginationButton {\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'pagination-previous' as const;\n\n protected override isDisabled(): boolean {\n return super.isDisabled() || !this.pagination.canGoToPreviousPage();\n }\n\n @HostListener('click')\n protected onClick(): void {\n if (this.isDisabled()) {\n return;\n }\n\n this.pagination.previousPage();\n }\n}\n\n@Directive({\n selector: 'button[tngPaginationNext]',\n exportAs: 'tngPaginationNext',\n})\nexport class TngPaginationNext extends TngPaginationButton {\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'pagination-next' as const;\n\n protected override isDisabled(): boolean {\n return super.isDisabled() || !this.pagination.canGoToNextPage();\n }\n\n @HostListener('click')\n protected onClick(): void {\n if (this.isDisabled()) {\n return;\n }\n\n this.pagination.nextPage();\n }\n}\n\n@Directive({\n selector: 'button[tngPaginationLast]',\n exportAs: 'tngPaginationLast',\n})\nexport class TngPaginationLast extends TngPaginationButton {\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'pagination-last' as const;\n\n protected override isDisabled(): boolean {\n return super.isDisabled() || this.pagination.isLastPage();\n }\n\n @HostListener('click')\n protected onClick(): void {\n if (this.isDisabled()) {\n return;\n }\n\n this.pagination.lastPage();\n }\n}\n\n@Directive({\n selector: 'button[tngPaginationPage]',\n exportAs: 'tngPaginationPage',\n})\nexport class TngPaginationPage extends TngPaginationButton {\n public readonly page = input.required<number, unknown>({\n alias: 'tngPaginationPage',\n transform: normalizePageIndexInput,\n });\n\n @HostBinding('attr.aria-current')\n protected get ariaCurrentAttr(): 'page' | null {\n return this.isCurrentPage() ? 'page' : null;\n }\n\n @HostBinding('attr.data-current')\n protected get dataCurrentAttr(): '' | null {\n return this.isCurrentPage() ? '' : null;\n }\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'pagination-page' as const;\n\n @HostListener('click')\n protected onClick(): void {\n if (this.isDisabled()) {\n return;\n }\n\n this.pagination.setPageIndex(this.page(), 'page');\n }\n\n private isCurrentPage(): boolean {\n return this.pagination.state().pageIndex === this.page();\n }\n\n protected override isDisabled(): boolean {\n return super.isDisabled() || !this.pagination.canGoToPage(this.page());\n }\n}\n\n@Directive({\n selector: 'select[tngPaginationPageSize]',\n exportAs: 'tngPaginationPageSize',\n})\nexport class TngPaginationPageSize {\n private readonly pagination = inject(TngPagination);\n private readonly hostRef = inject<ElementRef<HTMLSelectElement>>(ElementRef);\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'pagination-page-size' as const;\n\n @HostBinding('disabled')\n protected get disabledProp(): boolean {\n return this.pagination.disabled();\n }\n\n @HostBinding('value')\n protected get valueProp(): string {\n return String(this.pagination.state().pageSize);\n }\n\n @HostListener('change')\n protected onChange(): void {\n this.pagination.setPageSize(normalizePageSizeInput(this.hostRef.nativeElement.value), 'size');\n }\n}\n"]}
@@ -39,6 +39,7 @@ export declare class TngPopover implements OnDestroy, OnInit {
39
39
  private panelElementId;
40
40
  private triggerElement;
41
41
  protected readonly dataSlot = "popover";
42
+ protected get overlayLayerIdAttr(): string;
42
43
  protected get dataOpenAttr(): 'false' | 'true';
43
44
  protected get dataStateAttr(): 'closed' | 'open';
44
45
  protected get dataDisabledAttr(): '' | null;
@@ -1 +1 @@
1
- {"version":3,"file":"tng-popover.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/overlay/popover/tng-popover.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tng-popover.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/overlay/popover/tng-popover.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,8 @@ import * as i0 from "@angular/core";
5
5
  const createPopoverId = createTngIdFactory('tng-popover');
6
6
  const createPopoverPanelId = createTngIdFactory('tng-popover-panel');
7
7
  const createPopoverFocusableId = createTngIdFactory('tng-popover-focusable');
8
+ const TNG_OVERLAY_LAYER_ID_ATTR = 'data-tng-overlay-layer-id';
9
+ const TNG_OVERLAY_OWNER_ID_ATTR = 'data-tng-overlay-owner-id';
8
10
  function normalizeOptionalBooleanInput(value) {
9
11
  if (value === null || value === undefined) {
10
12
  return undefined;
@@ -106,6 +108,9 @@ export class TngPopover {
106
108
  panelElementId = null;
107
109
  triggerElement = null;
108
110
  dataSlot = 'popover';
111
+ get overlayLayerIdAttr() {
112
+ return this.instanceId;
113
+ }
109
114
  get dataOpenAttr() {
110
115
  return this.isOpen() ? 'true' : 'false';
111
116
  }
@@ -306,7 +311,12 @@ export class TngPopover {
306
311
  if (target instanceof Node && hostElement.contains(target)) {
307
312
  return true;
308
313
  }
309
- return path.includes(hostElement);
314
+ if (path.includes(hostElement)) {
315
+ return true;
316
+ }
317
+ return path.some((entry) => {
318
+ return entry instanceof Element && entry.getAttribute(TNG_OVERLAY_OWNER_ID_ATTR) === this.instanceId;
319
+ });
310
320
  },
311
321
  dismissOnEscape: this.shouldCloseFromEscape(),
312
322
  dismissOnOutsidePointer: this.shouldCloseFromOutsidePointer(),
@@ -378,7 +388,7 @@ export class TngPopover {
378
388
  return element instanceof HTMLElement ? element : null;
379
389
  }
380
390
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngPopover, deps: [], target: i0.ɵɵFactoryTarget.Directive });
381
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.1", type: TngPopover, isStandalone: true, selector: "[tngPopover]", inputs: { openInput: { classPropertyName: "openInput", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, defaultOpen: { classPropertyName: "defaultOpen", publicName: "defaultOpen", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, closeOnEscape: { classPropertyName: "closeOnEscape", publicName: "closeOnEscape", isSignal: true, isRequired: false, transformFunction: null }, closeOnOutsidePointer: { classPropertyName: "closeOnOutsidePointer", publicName: "closeOnOutsidePointer", isSignal: true, isRequired: false, transformFunction: null }, restoreFocus: { classPropertyName: "restoreFocus", publicName: "restoreFocus", isSignal: true, isRequired: false, transformFunction: null }, autoFocus: { classPropertyName: "autoFocus", publicName: "autoFocus", isSignal: true, isRequired: false, transformFunction: null }, side: { classPropertyName: "side", publicName: "side", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, panelRole: { classPropertyName: "panelRole", publicName: "panelRole", isSignal: true, isRequired: false, transformFunction: null }, ariaHasPopup: { classPropertyName: "ariaHasPopup", publicName: "ariaHasPopup", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { openChange: "openChange", closed: "closed" }, host: { properties: { "attr.data-slot": "this.dataSlot", "attr.data-open": "this.dataOpenAttr", "attr.data-state": "this.dataStateAttr", "attr.data-disabled": "this.dataDisabledAttr", "attr.data-side": "this.dataSideAttr", "attr.data-align": "this.dataAlignAttr" } }, exportAs: ["tngPopover"], ngImport: i0 });
391
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.1", type: TngPopover, isStandalone: true, selector: "[tngPopover]", inputs: { openInput: { classPropertyName: "openInput", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, defaultOpen: { classPropertyName: "defaultOpen", publicName: "defaultOpen", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, closeOnEscape: { classPropertyName: "closeOnEscape", publicName: "closeOnEscape", isSignal: true, isRequired: false, transformFunction: null }, closeOnOutsidePointer: { classPropertyName: "closeOnOutsidePointer", publicName: "closeOnOutsidePointer", isSignal: true, isRequired: false, transformFunction: null }, restoreFocus: { classPropertyName: "restoreFocus", publicName: "restoreFocus", isSignal: true, isRequired: false, transformFunction: null }, autoFocus: { classPropertyName: "autoFocus", publicName: "autoFocus", isSignal: true, isRequired: false, transformFunction: null }, side: { classPropertyName: "side", publicName: "side", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, panelRole: { classPropertyName: "panelRole", publicName: "panelRole", isSignal: true, isRequired: false, transformFunction: null }, ariaHasPopup: { classPropertyName: "ariaHasPopup", publicName: "ariaHasPopup", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { openChange: "openChange", closed: "closed" }, host: { properties: { "attr.data-slot": "this.dataSlot", "attr.data-tng-overlay-layer-id": "this.overlayLayerIdAttr", "attr.data-open": "this.dataOpenAttr", "attr.data-state": "this.dataStateAttr", "attr.data-disabled": "this.dataDisabledAttr", "attr.data-side": "this.dataSideAttr", "attr.data-align": "this.dataAlignAttr" } }, exportAs: ["tngPopover"], ngImport: i0 });
382
392
  }
383
393
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngPopover, decorators: [{
384
394
  type: Directive,
@@ -389,6 +399,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImpor
389
399
  }], propDecorators: { openInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }], defaultOpen: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultOpen", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], closeOnEscape: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeOnEscape", required: false }] }], closeOnOutsidePointer: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeOnOutsidePointer", required: false }] }], restoreFocus: [{ type: i0.Input, args: [{ isSignal: true, alias: "restoreFocus", required: false }] }], autoFocus: [{ type: i0.Input, args: [{ isSignal: true, alias: "autoFocus", required: false }] }], side: [{ type: i0.Input, args: [{ isSignal: true, alias: "side", required: false }] }], align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }], panelRole: [{ type: i0.Input, args: [{ isSignal: true, alias: "panelRole", required: false }] }], ariaHasPopup: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaHasPopup", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], openChange: [{ type: i0.Output, args: ["openChange"] }], closed: [{ type: i0.Output, args: ["closed"] }], dataSlot: [{
390
400
  type: HostBinding,
391
401
  args: ['attr.data-slot']
402
+ }], overlayLayerIdAttr: [{
403
+ type: HostBinding,
404
+ args: [`attr.${TNG_OVERLAY_LAYER_ID_ATTR}`]
392
405
  }], dataOpenAttr: [{
393
406
  type: HostBinding,
394
407
  args: ['attr.data-open']