@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.
- package/package.json +2 -2
- package/src/lib/form/_shared/select/tng-select.overlay.shared.d.ts.map +1 -1
- package/src/lib/form/_shared/select/tng-select.overlay.shared.js +10 -0
- package/src/lib/form/_shared/select/tng-select.overlay.shared.js.map +1 -1
- package/src/lib/navigation/index.d.ts +1 -0
- package/src/lib/navigation/index.d.ts.map +1 -1
- package/src/lib/navigation/index.js +1 -0
- package/src/lib/navigation/index.js.map +1 -1
- package/src/lib/navigation/pagination/__tests__/tng-pagination.test-harness.d.ts +44 -0
- package/src/lib/navigation/pagination/__tests__/tng-pagination.test-harness.d.ts.map +1 -0
- package/src/lib/navigation/pagination/__tests__/tng-pagination.test-harness.js +194 -0
- package/src/lib/navigation/pagination/__tests__/tng-pagination.test-harness.js.map +1 -0
- package/src/lib/navigation/pagination/index.d.ts +2 -0
- package/src/lib/navigation/pagination/index.d.ts.map +1 -0
- package/src/lib/navigation/pagination/index.js +2 -0
- package/src/lib/navigation/pagination/index.js.map +1 -0
- package/src/lib/navigation/pagination/tng-pagination.d.ts +131 -0
- package/src/lib/navigation/pagination/tng-pagination.d.ts.map +1 -0
- package/src/lib/navigation/pagination/tng-pagination.js +437 -0
- package/src/lib/navigation/pagination/tng-pagination.js.map +1 -0
- package/src/lib/overlay/popover/tng-popover.d.ts +1 -0
- package/src/lib/overlay/popover/tng-popover.d.ts.map +1 -1
- package/src/lib/overlay/popover/tng-popover.js +15 -2
- 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":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,MAAM,EAAC,MAAM,eAAe,CAAC;;
|
|
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
|
-
|
|
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']
|