@tailng-ui/primitives 0.43.0 → 0.45.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 (73) hide show
  1. package/package.json +2 -2
  2. package/src/lib/form/_shared/select/tng-select.overlay.shared.d.ts +1 -0
  3. package/src/lib/form/_shared/select/tng-select.overlay.shared.d.ts.map +1 -1
  4. package/src/lib/form/_shared/select/tng-select.overlay.shared.js +8 -1
  5. package/src/lib/form/_shared/select/tng-select.overlay.shared.js.map +1 -1
  6. package/src/lib/form/autocomplete/tng-autocomplete.overlay.d.ts +1 -0
  7. package/src/lib/form/autocomplete/tng-autocomplete.overlay.d.ts.map +1 -1
  8. package/src/lib/form/autocomplete/tng-autocomplete.overlay.js +25 -5
  9. package/src/lib/form/autocomplete/tng-autocomplete.overlay.js.map +1 -1
  10. package/src/lib/form/datepicker/tng-datepicker.overlay.d.ts +2 -1
  11. package/src/lib/form/datepicker/tng-datepicker.overlay.d.ts.map +1 -1
  12. package/src/lib/form/datepicker/tng-datepicker.overlay.js +13 -5
  13. package/src/lib/form/datepicker/tng-datepicker.overlay.js.map +1 -1
  14. package/src/lib/form/index.d.ts +0 -1
  15. package/src/lib/form/index.d.ts.map +1 -1
  16. package/src/lib/form/index.js +0 -1
  17. package/src/lib/form/index.js.map +1 -1
  18. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.overlay.d.ts +1 -0
  19. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.overlay.d.ts.map +1 -1
  20. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.overlay.js +8 -1
  21. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.overlay.js.map +1 -1
  22. package/src/lib/layout/index.d.ts +1 -2
  23. package/src/lib/layout/index.d.ts.map +1 -1
  24. package/src/lib/layout/index.js +1 -2
  25. package/src/lib/layout/index.js.map +1 -1
  26. package/src/lib/layout/stepper/__tests__/tng-stepper.test-harness.d.ts +44 -0
  27. package/src/lib/layout/stepper/__tests__/tng-stepper.test-harness.d.ts.map +1 -0
  28. package/src/lib/layout/stepper/__tests__/tng-stepper.test-harness.js +149 -0
  29. package/src/lib/layout/stepper/__tests__/tng-stepper.test-harness.js.map +1 -0
  30. package/src/lib/layout/stepper/index.d.ts +2 -0
  31. package/src/lib/layout/stepper/index.d.ts.map +1 -0
  32. package/src/lib/layout/stepper/index.js +2 -0
  33. package/src/lib/layout/stepper/index.js.map +1 -0
  34. package/src/lib/layout/stepper/tng-stepper.d.ts +198 -2
  35. package/src/lib/layout/stepper/tng-stepper.d.ts.map +1 -1
  36. package/src/lib/layout/stepper/tng-stepper.js +898 -2
  37. package/src/lib/layout/stepper/tng-stepper.js.map +1 -1
  38. package/src/lib/navigation/index.d.ts +1 -3
  39. package/src/lib/navigation/index.d.ts.map +1 -1
  40. package/src/lib/navigation/index.js +1 -3
  41. package/src/lib/navigation/index.js.map +1 -1
  42. package/src/lib/navigation/pagination/__tests__/tng-pagination.test-harness.d.ts +44 -0
  43. package/src/lib/navigation/pagination/__tests__/tng-pagination.test-harness.d.ts.map +1 -0
  44. package/src/lib/navigation/pagination/__tests__/tng-pagination.test-harness.js +194 -0
  45. package/src/lib/navigation/pagination/__tests__/tng-pagination.test-harness.js.map +1 -0
  46. package/src/lib/navigation/pagination/index.d.ts +2 -0
  47. package/src/lib/navigation/pagination/index.d.ts.map +1 -0
  48. package/src/lib/navigation/pagination/index.js +2 -0
  49. package/src/lib/navigation/pagination/index.js.map +1 -0
  50. package/src/lib/navigation/pagination/tng-pagination.d.ts +131 -0
  51. package/src/lib/navigation/pagination/tng-pagination.d.ts.map +1 -0
  52. package/src/lib/navigation/pagination/tng-pagination.js +437 -0
  53. package/src/lib/navigation/pagination/tng-pagination.js.map +1 -0
  54. package/src/lib/form/multiselect/tng-multiselect.d.ts +0 -7
  55. package/src/lib/form/multiselect/tng-multiselect.d.ts.map +0 -1
  56. package/src/lib/form/multiselect/tng-multiselect.js +0 -18
  57. package/src/lib/form/multiselect/tng-multiselect.js.map +0 -1
  58. package/src/lib/layout/bottom-sheet/tng-bottom-sheet.d.ts +0 -7
  59. package/src/lib/layout/bottom-sheet/tng-bottom-sheet.d.ts.map +0 -1
  60. package/src/lib/layout/bottom-sheet/tng-bottom-sheet.js +0 -18
  61. package/src/lib/layout/bottom-sheet/tng-bottom-sheet.js.map +0 -1
  62. package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.d.ts +0 -7
  63. package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.d.ts.map +0 -1
  64. package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.js +0 -18
  65. package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.js.map +0 -1
  66. package/src/lib/navigation/navigation-menu/tng-navigation-menu.d.ts +0 -7
  67. package/src/lib/navigation/navigation-menu/tng-navigation-menu.d.ts.map +0 -1
  68. package/src/lib/navigation/navigation-menu/tng-navigation-menu.js +0 -18
  69. package/src/lib/navigation/navigation-menu/tng-navigation-menu.js.map +0 -1
  70. package/src/lib/navigation/toolbar/tng-toolbar.d.ts +0 -7
  71. package/src/lib/navigation/toolbar/tng-toolbar.d.ts.map +0 -1
  72. package/src/lib/navigation/toolbar/tng-toolbar.js +0 -18
  73. package/src/lib/navigation/toolbar/tng-toolbar.js.map +0 -1
@@ -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"]}
@@ -1,7 +0,0 @@
1
- import * as i0 from "@angular/core";
2
- export declare class TngMultiselect {
3
- protected readonly dataSlot: "multiselect";
4
- static ɵfac: i0.ɵɵFactoryDeclaration<TngMultiselect, never>;
5
- static ɵdir: i0.ɵɵDirectiveDeclaration<TngMultiselect, "[tngMultiselect]", ["tngMultiselect"], {}, {}, never, never, true, never>;
6
- }
7
- //# sourceMappingURL=tng-multiselect.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tng-multiselect.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/form/multiselect/tng-multiselect.ts"],"names":[],"mappings":";AAEA,qBAIa,cAAc;IAEzB,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,aAAa,CAAU;yCAF1C,cAAc;2CAAd,cAAc;CAG1B"}
@@ -1,18 +0,0 @@
1
- import { Directive, HostBinding } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class TngMultiselect {
4
- dataSlot = 'multiselect';
5
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngMultiselect, deps: [], target: i0.ɵɵFactoryTarget.Directive });
6
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.1", type: TngMultiselect, isStandalone: true, selector: "[tngMultiselect]", host: { properties: { "attr.data-slot": "this.dataSlot" } }, exportAs: ["tngMultiselect"], ngImport: i0 });
7
- }
8
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngMultiselect, decorators: [{
9
- type: Directive,
10
- args: [{
11
- selector: '[tngMultiselect]',
12
- exportAs: 'tngMultiselect',
13
- }]
14
- }], propDecorators: { dataSlot: [{
15
- type: HostBinding,
16
- args: ['attr.data-slot']
17
- }] } });
18
- //# sourceMappingURL=tng-multiselect.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tng-multiselect.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/form/multiselect/tng-multiselect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;;AAMvD,MAAM,OAAO,cAAc;IAEN,QAAQ,GAAG,aAAsB,CAAC;uGAF1C,cAAc;2FAAd,cAAc;;2FAAd,cAAc;kBAJ1B,SAAS;mBAAC;oBACT,QAAQ,EAAE,kBAAkB;oBAC5B,QAAQ,EAAE,gBAAgB;iBAC3B;;sBAEE,WAAW;uBAAC,gBAAgB","sourcesContent":["import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n selector: '[tngMultiselect]',\n exportAs: 'tngMultiselect',\n})\nexport class TngMultiselect {\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'multiselect' as const;\n}\n"]}
@@ -1,7 +0,0 @@
1
- import * as i0 from "@angular/core";
2
- export declare class TngBottomSheet {
3
- protected readonly dataSlot: "bottom-sheet";
4
- static ɵfac: i0.ɵɵFactoryDeclaration<TngBottomSheet, never>;
5
- static ɵdir: i0.ɵɵDirectiveDeclaration<TngBottomSheet, "[tngBottomSheet]", ["tngBottomSheet"], {}, {}, never, never, true, never>;
6
- }
7
- //# sourceMappingURL=tng-bottom-sheet.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tng-bottom-sheet.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/layout/bottom-sheet/tng-bottom-sheet.ts"],"names":[],"mappings":";AAEA,qBAIa,cAAc;IAEzB,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,cAAc,CAAU;yCAF3C,cAAc;2CAAd,cAAc;CAG1B"}
@@ -1,18 +0,0 @@
1
- import { Directive, HostBinding } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class TngBottomSheet {
4
- dataSlot = 'bottom-sheet';
5
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngBottomSheet, deps: [], target: i0.ɵɵFactoryTarget.Directive });
6
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.1", type: TngBottomSheet, isStandalone: true, selector: "[tngBottomSheet]", host: { properties: { "attr.data-slot": "this.dataSlot" } }, exportAs: ["tngBottomSheet"], ngImport: i0 });
7
- }
8
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngBottomSheet, decorators: [{
9
- type: Directive,
10
- args: [{
11
- selector: '[tngBottomSheet]',
12
- exportAs: 'tngBottomSheet',
13
- }]
14
- }], propDecorators: { dataSlot: [{
15
- type: HostBinding,
16
- args: ['attr.data-slot']
17
- }] } });
18
- //# sourceMappingURL=tng-bottom-sheet.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tng-bottom-sheet.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/layout/bottom-sheet/tng-bottom-sheet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;;AAMvD,MAAM,OAAO,cAAc;IAEN,QAAQ,GAAG,cAAuB,CAAC;uGAF3C,cAAc;2FAAd,cAAc;;2FAAd,cAAc;kBAJ1B,SAAS;mBAAC;oBACT,QAAQ,EAAE,kBAAkB;oBAC5B,QAAQ,EAAE,gBAAgB;iBAC3B;;sBAEE,WAAW;uBAAC,gBAAgB","sourcesContent":["import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n selector: '[tngBottomSheet]',\n exportAs: 'tngBottomSheet',\n})\nexport class TngBottomSheet {\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'bottom-sheet' as const;\n}\n"]}
@@ -1,7 +0,0 @@
1
- import * as i0 from "@angular/core";
2
- export declare class TngDropdownMenu {
3
- protected readonly dataSlot: "dropdown-menu";
4
- static ɵfac: i0.ɵɵFactoryDeclaration<TngDropdownMenu, never>;
5
- static ɵdir: i0.ɵɵDirectiveDeclaration<TngDropdownMenu, "[tngDropdownMenu]", ["tngDropdownMenu"], {}, {}, never, never, true, never>;
6
- }
7
- //# sourceMappingURL=tng-dropdown-menu.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tng-dropdown-menu.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/navigation/dropdown-menu/tng-dropdown-menu.ts"],"names":[],"mappings":";AAEA,qBAIa,eAAe;IAE1B,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,eAAe,CAAU;yCAF5C,eAAe;2CAAf,eAAe;CAG3B"}
@@ -1,18 +0,0 @@
1
- import { Directive, HostBinding } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class TngDropdownMenu {
4
- dataSlot = 'dropdown-menu';
5
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngDropdownMenu, deps: [], target: i0.ɵɵFactoryTarget.Directive });
6
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.1", type: TngDropdownMenu, isStandalone: true, selector: "[tngDropdownMenu]", host: { properties: { "attr.data-slot": "this.dataSlot" } }, exportAs: ["tngDropdownMenu"], ngImport: i0 });
7
- }
8
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngDropdownMenu, decorators: [{
9
- type: Directive,
10
- args: [{
11
- selector: '[tngDropdownMenu]',
12
- exportAs: 'tngDropdownMenu',
13
- }]
14
- }], propDecorators: { dataSlot: [{
15
- type: HostBinding,
16
- args: ['attr.data-slot']
17
- }] } });
18
- //# sourceMappingURL=tng-dropdown-menu.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tng-dropdown-menu.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/navigation/dropdown-menu/tng-dropdown-menu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;;AAMvD,MAAM,OAAO,eAAe;IAEP,QAAQ,GAAG,eAAwB,CAAC;uGAF5C,eAAe;2FAAf,eAAe;;2FAAf,eAAe;kBAJ3B,SAAS;mBAAC;oBACT,QAAQ,EAAE,mBAAmB;oBAC7B,QAAQ,EAAE,iBAAiB;iBAC5B;;sBAEE,WAAW;uBAAC,gBAAgB","sourcesContent":["import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n selector: '[tngDropdownMenu]',\n exportAs: 'tngDropdownMenu',\n})\nexport class TngDropdownMenu {\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'dropdown-menu' as const;\n}\n"]}
@@ -1,7 +0,0 @@
1
- import * as i0 from "@angular/core";
2
- export declare class TngNavigationMenu {
3
- protected readonly dataSlot: "navigation-menu";
4
- static ɵfac: i0.ɵɵFactoryDeclaration<TngNavigationMenu, never>;
5
- static ɵdir: i0.ɵɵDirectiveDeclaration<TngNavigationMenu, "[tngNavigationMenu]", ["tngNavigationMenu"], {}, {}, never, never, true, never>;
6
- }
7
- //# sourceMappingURL=tng-navigation-menu.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tng-navigation-menu.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/navigation/navigation-menu/tng-navigation-menu.ts"],"names":[],"mappings":";AAEA,qBAIa,iBAAiB;IAE5B,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,iBAAiB,CAAU;yCAF9C,iBAAiB;2CAAjB,iBAAiB;CAG7B"}