@tailng-ui/primitives 0.1.0 → 0.11.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 +9 -3
- package/src/index.d.ts +5 -0
- package/src/index.d.ts.map +1 -1
- package/src/index.js +5 -0
- package/src/index.js.map +1 -1
- package/src/lib/feedback/progress-bar/tng-progress-bar.d.ts.map +1 -1
- package/src/lib/feedback/progress-bar/tng-progress-bar.js +2 -1
- package/src/lib/feedback/progress-bar/tng-progress-bar.js.map +1 -1
- package/src/lib/feedback/progress-spinner/tng-progress-spinner.d.ts.map +1 -1
- package/src/lib/feedback/progress-spinner/tng-progress-spinner.js +2 -1
- package/src/lib/feedback/progress-spinner/tng-progress-spinner.js.map +1 -1
- package/src/lib/feedback/skeleton/tng-skeleton.d.ts +1 -0
- package/src/lib/feedback/skeleton/tng-skeleton.d.ts.map +1 -1
- package/src/lib/feedback/skeleton/tng-skeleton.js +4 -0
- package/src/lib/feedback/skeleton/tng-skeleton.js.map +1 -1
- package/src/lib/form/chips/tng-chips.d.ts +53 -1
- package/src/lib/form/chips/tng-chips.d.ts.map +1 -1
- package/src/lib/form/chips/tng-chips.js +281 -1
- package/src/lib/form/chips/tng-chips.js.map +1 -1
- package/src/lib/form/input-otp/tng-input-otp.d.ts +22 -0
- package/src/lib/form/input-otp/tng-input-otp.d.ts.map +1 -1
- package/src/lib/form/input-otp/tng-input-otp.js +105 -1
- package/src/lib/form/input-otp/tng-input-otp.js.map +1 -1
- package/src/lib/form/label/tng-label.d.ts +2 -0
- package/src/lib/form/label/tng-label.d.ts.map +1 -1
- package/src/lib/form/label/tng-label.js +9 -0
- package/src/lib/form/label/tng-label.js.map +1 -1
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.trigger.d.ts +1 -0
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.trigger.d.ts.map +1 -1
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.trigger.js +26 -0
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.trigger.js.map +1 -1
- package/src/lib/form/radio/tng-radio.d.ts +26 -0
- package/src/lib/form/radio/tng-radio.d.ts.map +1 -1
- package/src/lib/form/radio/tng-radio.js +129 -1
- package/src/lib/form/radio/tng-radio.js.map +1 -1
- package/src/lib/form/textarea/tng-textarea.d.ts +6 -14
- package/src/lib/form/textarea/tng-textarea.d.ts.map +1 -1
- package/src/lib/form/textarea/tng-textarea.js +42 -85
- package/src/lib/form/textarea/tng-textarea.js.map +1 -1
- package/src/lib/layout/accordion/tng-accordion.d.ts +9 -0
- package/src/lib/layout/accordion/tng-accordion.d.ts.map +1 -1
- package/src/lib/layout/accordion/tng-accordion.js +113 -0
- package/src/lib/layout/accordion/tng-accordion.js.map +1 -1
- package/src/lib/layout/tree/__tests__/tng-tree.test-harness.d.ts +20 -0
- package/src/lib/layout/tree/__tests__/tng-tree.test-harness.d.ts.map +1 -0
- package/src/lib/layout/tree/__tests__/tng-tree.test-harness.js +106 -0
- package/src/lib/layout/tree/__tests__/tng-tree.test-harness.js.map +1 -0
- package/src/lib/layout/tree/index.d.ts +5 -0
- package/src/lib/layout/tree/index.d.ts.map +1 -0
- package/src/lib/layout/tree/index.js +5 -0
- package/src/lib/layout/tree/index.js.map +1 -0
- package/src/lib/layout/tree/tng-tree-group.d.ts +10 -0
- package/src/lib/layout/tree/tng-tree-group.d.ts.map +1 -0
- package/src/lib/layout/tree/tng-tree-group.js +29 -0
- package/src/lib/layout/tree/tng-tree-group.js.map +1 -0
- package/src/lib/layout/tree/tng-tree-indicator.d.ts +8 -0
- package/src/lib/layout/tree/tng-tree-indicator.d.ts.map +1 -0
- package/src/lib/layout/tree/tng-tree-indicator.js +36 -0
- package/src/lib/layout/tree/tng-tree-indicator.js.map +1 -0
- package/src/lib/layout/tree/tng-tree-item.d.ts +36 -0
- package/src/lib/layout/tree/tng-tree-item.d.ts.map +1 -0
- package/src/lib/layout/tree/tng-tree-item.js +139 -0
- package/src/lib/layout/tree/tng-tree-item.js.map +1 -0
- package/src/lib/layout/tree/tng-tree.d.ts +64 -1
- package/src/lib/layout/tree/tng-tree.d.ts.map +1 -1
- package/src/lib/layout/tree/tng-tree.js +536 -1
- package/src/lib/layout/tree/tng-tree.js.map +1 -1
- package/src/lib/layout/tree/tng-tree.transforms.d.ts +10 -0
- package/src/lib/layout/tree/tng-tree.transforms.d.ts.map +1 -0
- package/src/lib/layout/tree/tng-tree.transforms.js +46 -0
- package/src/lib/layout/tree/tng-tree.transforms.js.map +1 -0
- package/src/lib/overlay/dialog/tng-dialog.d.ts +158 -0
- package/src/lib/overlay/dialog/tng-dialog.d.ts.map +1 -0
- package/src/lib/overlay/dialog/tng-dialog.js +854 -0
- package/src/lib/overlay/dialog/tng-dialog.js.map +1 -0
- package/src/lib/overlay/popover/tng-popover.d.ts +121 -0
- package/src/lib/overlay/popover/tng-popover.d.ts.map +1 -0
- package/src/lib/overlay/popover/tng-popover.js +614 -0
- package/src/lib/overlay/popover/tng-popover.js.map +1 -0
- package/src/lib/overlay/tng-overlay-runtime.d.ts +11 -0
- package/src/lib/overlay/tng-overlay-runtime.d.ts.map +1 -0
- package/src/lib/overlay/tng-overlay-runtime.js +6 -0
- package/src/lib/overlay/tng-overlay-runtime.js.map +1 -0
- package/src/lib/overlay/tooltip/tng-tooltip.d.ts +92 -3
- package/src/lib/overlay/tooltip/tng-tooltip.d.ts.map +1 -1
- package/src/lib/overlay/tooltip/tng-tooltip.js +474 -3
- package/src/lib/overlay/tooltip/tng-tooltip.js.map +1 -1
- package/src/lib/utility/badge/tng-badge.d.ts +6 -0
- package/src/lib/utility/badge/tng-badge.d.ts.map +1 -1
- package/src/lib/utility/badge/tng-badge.js +65 -0
- package/src/lib/utility/badge/tng-badge.js.map +1 -1
- package/src/lib/utility/copy/tng-copy.d.ts +21 -10
- package/src/lib/utility/copy/tng-copy.d.ts.map +1 -1
- package/src/lib/utility/copy/tng-copy.js +117 -88
- package/src/lib/utility/copy/tng-copy.js.map +1 -1
- package/src/lib/utility/tag/tng-tag.d.ts +37 -0
- package/src/lib/utility/tag/tng-tag.d.ts.map +1 -1
- package/src/lib/utility/tag/tng-tag.js +195 -1
- package/src/lib/utility/tag/tng-tag.js.map +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { __decorate } from "tslib";
|
|
2
|
-
import { Directive, HostBinding, booleanAttribute, input } from '@angular/core';
|
|
2
|
+
import { Directive, ElementRef, HostBinding, HostListener, booleanAttribute, inject, input, } from '@angular/core';
|
|
3
3
|
export function normalizeTngRadioStringValue(value) {
|
|
4
4
|
if (value === undefined || value === null) {
|
|
5
5
|
return null;
|
|
@@ -7,15 +7,51 @@ export function normalizeTngRadioStringValue(value) {
|
|
|
7
7
|
const normalized = value.trim();
|
|
8
8
|
return normalized.length > 0 ? normalized : null;
|
|
9
9
|
}
|
|
10
|
+
export function coerceTngRadioNullableBoolean(value) {
|
|
11
|
+
if (value === undefined || value === null) {
|
|
12
|
+
return null;
|
|
13
|
+
}
|
|
14
|
+
if (value === '' || value === true || value === 'true') {
|
|
15
|
+
return true;
|
|
16
|
+
}
|
|
17
|
+
if (value === false || value === 'false') {
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
export function resolveTngRadioDataState(checked) {
|
|
23
|
+
return checked ? 'checked' : 'unchecked';
|
|
24
|
+
}
|
|
25
|
+
export function resolveTngRadioInvalidState(invalid, ariaInvalid) {
|
|
26
|
+
if (invalid !== null) {
|
|
27
|
+
return invalid;
|
|
28
|
+
}
|
|
29
|
+
if (ariaInvalid !== null) {
|
|
30
|
+
return ariaInvalid;
|
|
31
|
+
}
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
10
34
|
let TngRadio = class TngRadio {
|
|
35
|
+
elementRef = inject(ElementRef);
|
|
36
|
+
focused = false;
|
|
37
|
+
focusVisible = false;
|
|
11
38
|
ariaDescribedBy = input(null);
|
|
39
|
+
ariaInvalid = input(null, {
|
|
40
|
+
transform: coerceTngRadioNullableBoolean,
|
|
41
|
+
});
|
|
12
42
|
checked = input(false, {
|
|
13
43
|
transform: booleanAttribute,
|
|
14
44
|
});
|
|
15
45
|
disabled = input(false, {
|
|
16
46
|
transform: booleanAttribute,
|
|
17
47
|
});
|
|
48
|
+
invalid = input(null, {
|
|
49
|
+
transform: coerceTngRadioNullableBoolean,
|
|
50
|
+
});
|
|
18
51
|
name = input(null);
|
|
52
|
+
readonly = input(false, {
|
|
53
|
+
transform: booleanAttribute,
|
|
54
|
+
});
|
|
19
55
|
required = input(false, {
|
|
20
56
|
transform: booleanAttribute,
|
|
21
57
|
});
|
|
@@ -27,12 +63,45 @@ let TngRadio = class TngRadio {
|
|
|
27
63
|
get ariaCheckedAttr() {
|
|
28
64
|
return this.checked() ? 'true' : 'false';
|
|
29
65
|
}
|
|
66
|
+
get ariaDisabledAttr() {
|
|
67
|
+
return this.disabled() ? 'true' : null;
|
|
68
|
+
}
|
|
30
69
|
get ariaDescribedByAttr() {
|
|
31
70
|
return normalizeTngRadioStringValue(this.ariaDescribedBy());
|
|
32
71
|
}
|
|
72
|
+
get ariaInvalidAttr() {
|
|
73
|
+
return this.isInvalid() ? 'true' : null;
|
|
74
|
+
}
|
|
75
|
+
get ariaReadonlyAttr() {
|
|
76
|
+
return this.readonly() ? 'true' : null;
|
|
77
|
+
}
|
|
78
|
+
get dataCheckedAttr() {
|
|
79
|
+
return this.checked() ? '' : null;
|
|
80
|
+
}
|
|
33
81
|
get dataDisabledAttr() {
|
|
34
82
|
return this.disabled() ? '' : null;
|
|
35
83
|
}
|
|
84
|
+
get dataFocusedAttr() {
|
|
85
|
+
return this.focused ? '' : null;
|
|
86
|
+
}
|
|
87
|
+
get dataFocusVisibleAttr() {
|
|
88
|
+
return this.focusVisible ? '' : null;
|
|
89
|
+
}
|
|
90
|
+
get dataInvalidAttr() {
|
|
91
|
+
return this.isInvalid() ? '' : null;
|
|
92
|
+
}
|
|
93
|
+
get dataReadonlyAttr() {
|
|
94
|
+
return this.readonly() ? '' : null;
|
|
95
|
+
}
|
|
96
|
+
get dataRequiredAttr() {
|
|
97
|
+
return this.required() ? '' : null;
|
|
98
|
+
}
|
|
99
|
+
get dataStateAttr() {
|
|
100
|
+
return resolveTngRadioDataState(this.checked());
|
|
101
|
+
}
|
|
102
|
+
get dataUncheckedAttr() {
|
|
103
|
+
return this.checked() ? null : '';
|
|
104
|
+
}
|
|
36
105
|
get disabledAttr() {
|
|
37
106
|
return this.disabled() ? '' : null;
|
|
38
107
|
}
|
|
@@ -48,6 +117,23 @@ let TngRadio = class TngRadio {
|
|
|
48
117
|
get valueAttr() {
|
|
49
118
|
return normalizeTngRadioStringValue(this.value());
|
|
50
119
|
}
|
|
120
|
+
onBlur() {
|
|
121
|
+
this.focused = false;
|
|
122
|
+
this.focusVisible = false;
|
|
123
|
+
}
|
|
124
|
+
onFocus() {
|
|
125
|
+
this.focused = true;
|
|
126
|
+
this.focusVisible = this.elementRef.nativeElement.matches(':focus-visible');
|
|
127
|
+
}
|
|
128
|
+
onReadonlyChange() {
|
|
129
|
+
if (!this.readonly() || this.disabled()) {
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
this.elementRef.nativeElement.checked = this.checked();
|
|
133
|
+
}
|
|
134
|
+
isInvalid() {
|
|
135
|
+
return resolveTngRadioInvalidState(this.invalid(), this.ariaInvalid());
|
|
136
|
+
}
|
|
51
137
|
};
|
|
52
138
|
__decorate([
|
|
53
139
|
HostBinding('checked')
|
|
@@ -55,12 +141,45 @@ __decorate([
|
|
|
55
141
|
__decorate([
|
|
56
142
|
HostBinding('attr.aria-checked')
|
|
57
143
|
], TngRadio.prototype, "ariaCheckedAttr", null);
|
|
144
|
+
__decorate([
|
|
145
|
+
HostBinding('attr.aria-disabled')
|
|
146
|
+
], TngRadio.prototype, "ariaDisabledAttr", null);
|
|
58
147
|
__decorate([
|
|
59
148
|
HostBinding('attr.aria-describedby')
|
|
60
149
|
], TngRadio.prototype, "ariaDescribedByAttr", null);
|
|
150
|
+
__decorate([
|
|
151
|
+
HostBinding('attr.aria-invalid')
|
|
152
|
+
], TngRadio.prototype, "ariaInvalidAttr", null);
|
|
153
|
+
__decorate([
|
|
154
|
+
HostBinding('attr.aria-readonly')
|
|
155
|
+
], TngRadio.prototype, "ariaReadonlyAttr", null);
|
|
156
|
+
__decorate([
|
|
157
|
+
HostBinding('attr.data-checked')
|
|
158
|
+
], TngRadio.prototype, "dataCheckedAttr", null);
|
|
61
159
|
__decorate([
|
|
62
160
|
HostBinding('attr.data-disabled')
|
|
63
161
|
], TngRadio.prototype, "dataDisabledAttr", null);
|
|
162
|
+
__decorate([
|
|
163
|
+
HostBinding('attr.data-focused')
|
|
164
|
+
], TngRadio.prototype, "dataFocusedAttr", null);
|
|
165
|
+
__decorate([
|
|
166
|
+
HostBinding('attr.data-focus-visible')
|
|
167
|
+
], TngRadio.prototype, "dataFocusVisibleAttr", null);
|
|
168
|
+
__decorate([
|
|
169
|
+
HostBinding('attr.data-invalid')
|
|
170
|
+
], TngRadio.prototype, "dataInvalidAttr", null);
|
|
171
|
+
__decorate([
|
|
172
|
+
HostBinding('attr.data-readonly')
|
|
173
|
+
], TngRadio.prototype, "dataReadonlyAttr", null);
|
|
174
|
+
__decorate([
|
|
175
|
+
HostBinding('attr.data-required')
|
|
176
|
+
], TngRadio.prototype, "dataRequiredAttr", null);
|
|
177
|
+
__decorate([
|
|
178
|
+
HostBinding('attr.data-state')
|
|
179
|
+
], TngRadio.prototype, "dataStateAttr", null);
|
|
180
|
+
__decorate([
|
|
181
|
+
HostBinding('attr.data-unchecked')
|
|
182
|
+
], TngRadio.prototype, "dataUncheckedAttr", null);
|
|
64
183
|
__decorate([
|
|
65
184
|
HostBinding('attr.disabled')
|
|
66
185
|
], TngRadio.prototype, "disabledAttr", null);
|
|
@@ -76,6 +195,15 @@ __decorate([
|
|
|
76
195
|
__decorate([
|
|
77
196
|
HostBinding('attr.value')
|
|
78
197
|
], TngRadio.prototype, "valueAttr", null);
|
|
198
|
+
__decorate([
|
|
199
|
+
HostListener('blur')
|
|
200
|
+
], TngRadio.prototype, "onBlur", null);
|
|
201
|
+
__decorate([
|
|
202
|
+
HostListener('focus')
|
|
203
|
+
], TngRadio.prototype, "onFocus", null);
|
|
204
|
+
__decorate([
|
|
205
|
+
HostListener('change')
|
|
206
|
+
], TngRadio.prototype, "onReadonlyChange", null);
|
|
79
207
|
TngRadio = __decorate([
|
|
80
208
|
Directive({
|
|
81
209
|
selector: 'input[tngRadio]',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-radio.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/form/radio/tng-radio.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEhF,MAAM,UAAU,4BAA4B,CAAC,KAAgC;IAC3E,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAChC,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;AACnD,CAAC;AAMM,IAAM,QAAQ,GAAd,MAAM,QAAQ;IACH,eAAe,GAAG,KAAK,CAAgB,IAAI,CAAC,CAAC;IAC7C,OAAO,GAAG,KAAK,CAA4B,KAAK,EAAE;QAChE,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IACa,QAAQ,GAAG,KAAK,CAA4B,KAAK,EAAE;QACjE,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IACa,IAAI,GAAG,KAAK,CAAgB,IAAI,CAAC,CAAC;IAClC,QAAQ,GAAG,KAAK,CAA4B,KAAK,EAAE;QACjE,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IACa,KAAK,GAAG,KAAK,CAAgB,IAAI,CAAC,CAAC;IAChC,QAAQ,GAAG,OAAgB,CAAC;IAG/C,IAAc,WAAW;QACvB,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IAGD,IAAc,eAAe;QAC3B,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IAC3C,CAAC;IAGD,IAAc,mBAAmB;QAC/B,OAAO,4BAA4B,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;IAC9D,CAAC;IAGD,IAAc,gBAAgB;QAC5B,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACrC,CAAC;IAGD,IAAc,YAAY;QACxB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACrC,CAAC;IAGD,IAAc,QAAQ;QACpB,OAAO,4BAA4B,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACnD,CAAC;IAGD,IAAc,YAAY;QACxB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACrC,CAAC;IAGD,IAAc,YAAY;QACxB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAGD,IAAc,SAAS;QACrB,OAAO,4BAA4B,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IACpD,CAAC;CACF,CAAA;AA3CC;IADC,WAAW,CAAC,SAAS,CAAC;2CAGtB;AAGD;IADC,WAAW,CAAC,mBAAmB,CAAC;+CAGhC;AAGD;IADC,WAAW,CAAC,uBAAuB,CAAC;mDAGpC;AAGD;IADC,WAAW,CAAC,oBAAoB,CAAC;gDAGjC;AAGD;IADC,WAAW,CAAC,eAAe,CAAC;4CAG5B;AAGD;IADC,WAAW,CAAC,WAAW,CAAC;wCAGxB;AAGD;IADC,WAAW,CAAC,eAAe,CAAC;4CAG5B;AAGD;IADC,WAAW,CAAC,WAAW,CAAC;4CAGxB;AAGD;IADC,WAAW,CAAC,YAAY,CAAC;yCAGzB;AA1DU,QAAQ;IAJpB,SAAS,CAAC;QACT,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,UAAU;KACrB,CAAC;GACW,QAAQ,CA2DpB","sourcesContent":["import { Directive, HostBinding, booleanAttribute, input } from '@angular/core';\n\nexport function normalizeTngRadioStringValue(value: string | null | undefined): string | null {\n if (value === undefined || value === null) {\n return null;\n }\n\n const normalized = value.trim();\n return normalized.length > 0 ? normalized : null;\n}\n\n@Directive({\n selector: 'input[tngRadio]',\n exportAs: 'tngRadio',\n})\nexport class TngRadio {\n public readonly ariaDescribedBy = input<string | null>(null);\n public readonly checked = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly disabled = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly name = input<string | null>(null);\n public readonly required = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly value = input<string | null>(null);\n protected readonly typeAttr = 'radio' as const;\n\n @HostBinding('checked')\n protected get checkedProp(): boolean {\n return this.checked();\n }\n\n @HostBinding('attr.aria-checked')\n protected get ariaCheckedAttr(): 'false' | 'true' {\n return this.checked() ? 'true' : 'false';\n }\n\n @HostBinding('attr.aria-describedby')\n protected get ariaDescribedByAttr(): string | null {\n return normalizeTngRadioStringValue(this.ariaDescribedBy());\n }\n\n @HostBinding('attr.data-disabled')\n protected get dataDisabledAttr(): '' | null {\n return this.disabled() ? '' : null;\n }\n\n @HostBinding('attr.disabled')\n protected get disabledAttr(): '' | null {\n return this.disabled() ? '' : null;\n }\n\n @HostBinding('attr.name')\n protected get nameAttr(): string | null {\n return normalizeTngRadioStringValue(this.name());\n }\n\n @HostBinding('attr.required')\n protected get requiredAttr(): '' | null {\n return this.required() ? '' : null;\n }\n\n @HostBinding('attr.type')\n protected get hostTypeAttr(): 'radio' {\n return this.typeAttr;\n }\n\n @HostBinding('attr.value')\n protected get valueAttr(): string | null {\n return normalizeTngRadioStringValue(this.value());\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"tng-radio.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/form/radio/tng-radio.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Directive,\n ElementRef,\n HostBinding,\n HostListener,\n booleanAttribute,\n inject,\n input,\n} from '@angular/core';\n\ntype NullableBooleanInput = '' | 'false' | 'true' | boolean | null | undefined;\n\nexport function normalizeTngRadioStringValue(value: string | null | undefined): string | null {\n if (value === undefined || value === null) {\n return null;\n }\n\n const normalized = value.trim();\n return normalized.length > 0 ? normalized : null;\n}\n\nexport function coerceTngRadioNullableBoolean(value: NullableBooleanInput): boolean | null {\n if (value === undefined || value === null) {\n return null;\n }\n\n if (value === '' || value === true || value === 'true') {\n return true;\n }\n\n if (value === false || value === 'false') {\n return false;\n }\n\n return null;\n}\n\nexport function resolveTngRadioDataState(checked: boolean): 'checked' | 'unchecked' {\n return checked ? 'checked' : 'unchecked';\n}\n\nexport function resolveTngRadioInvalidState(\n invalid: boolean | null,\n ariaInvalid: boolean | null,\n): boolean {\n if (invalid !== null) {\n return invalid;\n }\n\n if (ariaInvalid !== null) {\n return ariaInvalid;\n }\n\n return false;\n}\n\n@Directive({\n selector: 'input[tngRadio]',\n exportAs: 'tngRadio',\n})\nexport class TngRadio {\n private readonly elementRef = inject<ElementRef<HTMLInputElement>>(ElementRef);\n private focused = false;\n private focusVisible = false;\n\n public readonly ariaDescribedBy = input<string | null>(null);\n public readonly ariaInvalid = input<boolean | null, NullableBooleanInput>(null, {\n transform: coerceTngRadioNullableBoolean,\n });\n public readonly checked = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly disabled = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly invalid = input<boolean | null, NullableBooleanInput>(null, {\n transform: coerceTngRadioNullableBoolean,\n });\n public readonly name = input<string | null>(null);\n public readonly readonly = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly required = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly value = input<string | null>(null);\n protected readonly typeAttr = 'radio' as const;\n\n @HostBinding('checked')\n protected get checkedProp(): boolean {\n return this.checked();\n }\n\n @HostBinding('attr.aria-checked')\n protected get ariaCheckedAttr(): 'false' | 'true' {\n return this.checked() ? 'true' : 'false';\n }\n\n @HostBinding('attr.aria-disabled')\n protected get ariaDisabledAttr(): 'true' | null {\n return this.disabled() ? 'true' : null;\n }\n\n @HostBinding('attr.aria-describedby')\n protected get ariaDescribedByAttr(): string | null {\n return normalizeTngRadioStringValue(this.ariaDescribedBy());\n }\n\n @HostBinding('attr.aria-invalid')\n protected get ariaInvalidAttr(): 'true' | null {\n return this.isInvalid() ? 'true' : null;\n }\n\n @HostBinding('attr.aria-readonly')\n protected get ariaReadonlyAttr(): 'true' | null {\n return this.readonly() ? 'true' : null;\n }\n\n @HostBinding('attr.data-checked')\n protected get dataCheckedAttr(): '' | null {\n return this.checked() ? '' : null;\n }\n\n @HostBinding('attr.data-disabled')\n protected get dataDisabledAttr(): '' | null {\n return this.disabled() ? '' : null;\n }\n\n @HostBinding('attr.data-focused')\n protected get dataFocusedAttr(): '' | null {\n return this.focused ? '' : null;\n }\n\n @HostBinding('attr.data-focus-visible')\n protected get dataFocusVisibleAttr(): '' | null {\n return this.focusVisible ? '' : null;\n }\n\n @HostBinding('attr.data-invalid')\n protected get dataInvalidAttr(): '' | null {\n return this.isInvalid() ? '' : null;\n }\n\n @HostBinding('attr.data-readonly')\n protected get dataReadonlyAttr(): '' | null {\n return this.readonly() ? '' : null;\n }\n\n @HostBinding('attr.data-required')\n protected get dataRequiredAttr(): '' | null {\n return this.required() ? '' : null;\n }\n\n @HostBinding('attr.data-state')\n protected get dataStateAttr(): 'checked' | 'unchecked' {\n return resolveTngRadioDataState(this.checked());\n }\n\n @HostBinding('attr.data-unchecked')\n protected get dataUncheckedAttr(): '' | null {\n return this.checked() ? null : '';\n }\n\n @HostBinding('attr.disabled')\n protected get disabledAttr(): '' | null {\n return this.disabled() ? '' : null;\n }\n\n @HostBinding('attr.name')\n protected get nameAttr(): string | null {\n return normalizeTngRadioStringValue(this.name());\n }\n\n @HostBinding('attr.required')\n protected get requiredAttr(): '' | null {\n return this.required() ? '' : null;\n }\n\n @HostBinding('attr.type')\n protected get hostTypeAttr(): 'radio' {\n return this.typeAttr;\n }\n\n @HostBinding('attr.value')\n protected get valueAttr(): string | null {\n return normalizeTngRadioStringValue(this.value());\n }\n\n @HostListener('blur')\n public onBlur(): void {\n this.focused = false;\n this.focusVisible = false;\n }\n\n @HostListener('focus')\n public onFocus(): void {\n this.focused = true;\n this.focusVisible = this.elementRef.nativeElement.matches(':focus-visible');\n }\n\n @HostListener('change')\n public onReadonlyChange(): void {\n if (!this.readonly() || this.disabled()) {\n return;\n }\n\n this.elementRef.nativeElement.checked = this.checked();\n }\n\n private isInvalid(): boolean {\n return resolveTngRadioInvalidState(this.invalid(), this.ariaInvalid());\n }\n}\n"]}
|
|
@@ -1,23 +1,15 @@
|
|
|
1
1
|
type NullableBooleanInput = boolean | null | string | undefined;
|
|
2
|
+
export type TngTextareaResize = 'both' | 'horizontal' | 'none' | 'vertical';
|
|
3
|
+
/** @deprecated Use `coerceTngInputNullableBoolean` from `tng-input`. */
|
|
2
4
|
export declare function coerceTngTextareaNullableBoolean(value: NullableBooleanInput): boolean | null;
|
|
3
5
|
export declare function normalizeTngTextareaRows(value: number): number;
|
|
6
|
+
export declare function normalizeTngTextareaResize(value: unknown): TngTextareaResize;
|
|
4
7
|
export declare class TngTextarea {
|
|
5
|
-
readonly
|
|
6
|
-
readonly ariaInvalid: import("@angular/core").InputSignalWithTransform<boolean | null, NullableBooleanInput>;
|
|
7
|
-
readonly ariaRequired: import("@angular/core").InputSignalWithTransform<boolean | null, NullableBooleanInput>;
|
|
8
|
-
readonly disabled: import("@angular/core").InputSignalWithTransform<boolean, string | boolean>;
|
|
9
|
-
readonly readonly: import("@angular/core").InputSignalWithTransform<boolean, string | boolean>;
|
|
10
|
-
readonly required: import("@angular/core").InputSignalWithTransform<boolean, string | boolean>;
|
|
8
|
+
readonly resize: import("@angular/core").InputSignalWithTransform<TngTextareaResize, string>;
|
|
11
9
|
readonly rows: import("@angular/core").InputSignalWithTransform<number, string | number>;
|
|
12
|
-
protected get
|
|
13
|
-
protected get ariaInvalidAttr(): 'false' | 'true' | null;
|
|
14
|
-
protected get ariaRequiredAttr(): 'false' | 'true' | null;
|
|
15
|
-
protected get dataDisabledAttr(): '' | null;
|
|
16
|
-
protected get dataInvalidAttr(): '' | null;
|
|
17
|
-
protected get disabledAttr(): '' | null;
|
|
18
|
-
protected get readonlyAttr(): '' | null;
|
|
19
|
-
protected get requiredAttr(): '' | null;
|
|
10
|
+
protected get dataResizeAttr(): TngTextareaResize;
|
|
20
11
|
protected get rowsAttr(): number;
|
|
12
|
+
protected get resizeStyle(): TngTextareaResize;
|
|
21
13
|
}
|
|
22
14
|
export {};
|
|
23
15
|
//# sourceMappingURL=tng-textarea.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-textarea.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/form/textarea/tng-textarea.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tng-textarea.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/form/textarea/tng-textarea.ts"],"names":[],"mappings":"AAGA,KAAK,oBAAoB,GAAG,OAAO,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC;AAChE,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,YAAY,GAAG,MAAM,GAAG,UAAU,CAAC;AAE5E,wEAAwE;AACxE,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,GAAG,IAAI,CAE5F;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAM9D;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,iBAAiB,CAgB5E;AAED,qBAoBa,WAAW;IACtB,SAAgB,MAAM,8EAEnB;IACH,SAAgB,IAAI,4EAEjB;IAGH,SAAS,KAAK,cAAc,IAAI,iBAAiB,CAEhD;IAGD,SAAS,KAAK,QAAQ,IAAI,MAAM,CAE/B;IAGD,SAAS,KAAK,WAAW,IAAI,iBAAiB,CAE7C;CACF"}
|
|
@@ -1,16 +1,9 @@
|
|
|
1
1
|
import { __decorate } from "tslib";
|
|
2
|
-
import { Directive, HostBinding,
|
|
2
|
+
import { Directive, HostBinding, input, numberAttribute } from '@angular/core';
|
|
3
|
+
import { coerceTngInputNullableBoolean, TngInput } from '../input/tng-input';
|
|
4
|
+
/** @deprecated Use `coerceTngInputNullableBoolean` from `tng-input`. */
|
|
3
5
|
export function coerceTngTextareaNullableBoolean(value) {
|
|
4
|
-
|
|
5
|
-
return null;
|
|
6
|
-
}
|
|
7
|
-
if (value === '' || value === true || value === 'true') {
|
|
8
|
-
return true;
|
|
9
|
-
}
|
|
10
|
-
if (value === false || value === 'false') {
|
|
11
|
-
return false;
|
|
12
|
-
}
|
|
13
|
-
return null;
|
|
6
|
+
return coerceTngInputNullableBoolean(value);
|
|
14
7
|
}
|
|
15
8
|
export function normalizeTngTextareaRows(value) {
|
|
16
9
|
if (!Number.isFinite(value)) {
|
|
@@ -18,101 +11,65 @@ export function normalizeTngTextareaRows(value) {
|
|
|
18
11
|
}
|
|
19
12
|
return Math.max(1, Math.trunc(value));
|
|
20
13
|
}
|
|
21
|
-
function
|
|
22
|
-
if (
|
|
23
|
-
return
|
|
14
|
+
export function normalizeTngTextareaResize(value) {
|
|
15
|
+
if (typeof value !== 'string') {
|
|
16
|
+
return 'vertical';
|
|
24
17
|
}
|
|
25
|
-
const normalized = value.trim();
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
return
|
|
18
|
+
const normalized = value.trim().toLowerCase();
|
|
19
|
+
if (normalized === 'none' ||
|
|
20
|
+
normalized === 'vertical' ||
|
|
21
|
+
normalized === 'horizontal' ||
|
|
22
|
+
normalized === 'both') {
|
|
23
|
+
return normalized;
|
|
31
24
|
}
|
|
32
|
-
return
|
|
25
|
+
return 'vertical';
|
|
33
26
|
}
|
|
34
27
|
let TngTextarea = class TngTextarea {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
transform: coerceTngTextareaNullableBoolean,
|
|
38
|
-
});
|
|
39
|
-
ariaRequired = input(null, {
|
|
40
|
-
transform: coerceTngTextareaNullableBoolean,
|
|
41
|
-
});
|
|
42
|
-
disabled = input(false, {
|
|
43
|
-
transform: booleanAttribute,
|
|
44
|
-
});
|
|
45
|
-
readonly = input(false, {
|
|
46
|
-
transform: booleanAttribute,
|
|
47
|
-
});
|
|
48
|
-
required = input(false, {
|
|
49
|
-
transform: booleanAttribute,
|
|
28
|
+
resize = input('vertical', {
|
|
29
|
+
transform: normalizeTngTextareaResize,
|
|
50
30
|
});
|
|
51
31
|
rows = input(3, {
|
|
52
32
|
transform: (value) => normalizeTngTextareaRows(numberAttribute(value)),
|
|
53
33
|
});
|
|
54
|
-
get
|
|
55
|
-
return
|
|
56
|
-
}
|
|
57
|
-
get ariaInvalidAttr() {
|
|
58
|
-
return toAriaBoolean(this.ariaInvalid());
|
|
59
|
-
}
|
|
60
|
-
get ariaRequiredAttr() {
|
|
61
|
-
if (this.required()) {
|
|
62
|
-
return 'true';
|
|
63
|
-
}
|
|
64
|
-
return toAriaBoolean(this.ariaRequired());
|
|
65
|
-
}
|
|
66
|
-
get dataDisabledAttr() {
|
|
67
|
-
return this.disabled() ? '' : null;
|
|
68
|
-
}
|
|
69
|
-
get dataInvalidAttr() {
|
|
70
|
-
return this.ariaInvalid() === true ? '' : null;
|
|
71
|
-
}
|
|
72
|
-
get disabledAttr() {
|
|
73
|
-
return this.disabled() ? '' : null;
|
|
74
|
-
}
|
|
75
|
-
get readonlyAttr() {
|
|
76
|
-
return this.readonly() ? '' : null;
|
|
77
|
-
}
|
|
78
|
-
get requiredAttr() {
|
|
79
|
-
return this.required() ? '' : null;
|
|
34
|
+
get dataResizeAttr() {
|
|
35
|
+
return this.resize();
|
|
80
36
|
}
|
|
81
37
|
get rowsAttr() {
|
|
82
38
|
return this.rows();
|
|
83
39
|
}
|
|
40
|
+
get resizeStyle() {
|
|
41
|
+
return this.resize();
|
|
42
|
+
}
|
|
84
43
|
};
|
|
85
44
|
__decorate([
|
|
86
|
-
HostBinding('attr.
|
|
87
|
-
], TngTextarea.prototype, "
|
|
88
|
-
__decorate([
|
|
89
|
-
HostBinding('attr.aria-invalid')
|
|
90
|
-
], TngTextarea.prototype, "ariaInvalidAttr", null);
|
|
91
|
-
__decorate([
|
|
92
|
-
HostBinding('attr.aria-required')
|
|
93
|
-
], TngTextarea.prototype, "ariaRequiredAttr", null);
|
|
94
|
-
__decorate([
|
|
95
|
-
HostBinding('attr.data-disabled')
|
|
96
|
-
], TngTextarea.prototype, "dataDisabledAttr", null);
|
|
97
|
-
__decorate([
|
|
98
|
-
HostBinding('attr.data-invalid')
|
|
99
|
-
], TngTextarea.prototype, "dataInvalidAttr", null);
|
|
100
|
-
__decorate([
|
|
101
|
-
HostBinding('attr.disabled')
|
|
102
|
-
], TngTextarea.prototype, "disabledAttr", null);
|
|
103
|
-
__decorate([
|
|
104
|
-
HostBinding('attr.readonly')
|
|
105
|
-
], TngTextarea.prototype, "readonlyAttr", null);
|
|
106
|
-
__decorate([
|
|
107
|
-
HostBinding('attr.required')
|
|
108
|
-
], TngTextarea.prototype, "requiredAttr", null);
|
|
45
|
+
HostBinding('attr.data-resize')
|
|
46
|
+
], TngTextarea.prototype, "dataResizeAttr", null);
|
|
109
47
|
__decorate([
|
|
110
48
|
HostBinding('attr.rows')
|
|
111
49
|
], TngTextarea.prototype, "rowsAttr", null);
|
|
50
|
+
__decorate([
|
|
51
|
+
HostBinding('style.resize')
|
|
52
|
+
], TngTextarea.prototype, "resizeStyle", null);
|
|
112
53
|
TngTextarea = __decorate([
|
|
113
54
|
Directive({
|
|
114
55
|
selector: 'textarea[tngTextarea]',
|
|
115
56
|
exportAs: 'tngTextarea',
|
|
57
|
+
standalone: true,
|
|
58
|
+
hostDirectives: [
|
|
59
|
+
{
|
|
60
|
+
directive: TngInput,
|
|
61
|
+
inputs: [
|
|
62
|
+
'ariaDescribedBy',
|
|
63
|
+
'ariaInvalid',
|
|
64
|
+
'ariaLabel',
|
|
65
|
+
'ariaLabelledby',
|
|
66
|
+
'ariaRequired',
|
|
67
|
+
'disabled',
|
|
68
|
+
'readonly',
|
|
69
|
+
'required',
|
|
70
|
+
],
|
|
71
|
+
},
|
|
72
|
+
],
|
|
116
73
|
})
|
|
117
74
|
], TngTextarea);
|
|
118
75
|
export { TngTextarea };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-textarea.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/form/textarea/tng-textarea.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"tng-textarea.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/form/textarea/tng-textarea.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAC/E,OAAO,EAAE,6BAA6B,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAK7E,wEAAwE;AACxE,MAAM,UAAU,gCAAgC,CAAC,KAA2B;IAC1E,OAAO,6BAA6B,CAAC,KAAK,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,KAAa;IACpD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,CAAC;IACX,CAAC;IAED,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,KAAc;IACvD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC9C,IACE,UAAU,KAAK,MAAM;QACrB,UAAU,KAAK,UAAU;QACzB,UAAU,KAAK,YAAY;QAC3B,UAAU,KAAK,MAAM,EACrB,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAsBM,IAAM,WAAW,GAAjB,MAAM,WAAW;IACN,MAAM,GAAG,KAAK,CAAgD,UAAU,EAAE;QACxF,SAAS,EAAE,0BAA0B;KACtC,CAAC,CAAC;IACa,IAAI,GAAG,KAAK,CAA0B,CAAC,EAAE;QACvD,SAAS,EAAE,CAAC,KAAsB,EAAU,EAAE,CAAC,wBAAwB,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;KAChG,CAAC,CAAC;IAGH,IAAc,cAAc;QAC1B,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;IACvB,CAAC;IAGD,IAAc,QAAQ;QACpB,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;IACrB,CAAC;IAGD,IAAc,WAAW;QACvB,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;IACvB,CAAC;CACF,CAAA;AAbC;IADC,WAAW,CAAC,kBAAkB,CAAC;iDAG/B;AAGD;IADC,WAAW,CAAC,WAAW,CAAC;2CAGxB;AAGD;IADC,WAAW,CAAC,cAAc,CAAC;8CAG3B;AArBU,WAAW;IApBvB,SAAS,CAAC;QACT,QAAQ,EAAE,uBAAuB;QACjC,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,IAAI;QAChB,cAAc,EAAE;YACd;gBACE,SAAS,EAAE,QAAQ;gBACnB,MAAM,EAAE;oBACN,iBAAiB;oBACjB,aAAa;oBACb,WAAW;oBACX,gBAAgB;oBAChB,cAAc;oBACd,UAAU;oBACV,UAAU;oBACV,UAAU;iBACX;aACF;SACF;KACF,CAAC;GACW,WAAW,CAsBvB","sourcesContent":["import { Directive, HostBinding, input, numberAttribute } from '@angular/core';\nimport { coerceTngInputNullableBoolean, TngInput } from '../input/tng-input';\n\ntype NullableBooleanInput = boolean | null | string | undefined;\nexport type TngTextareaResize = 'both' | 'horizontal' | 'none' | 'vertical';\n\n/** @deprecated Use `coerceTngInputNullableBoolean` from `tng-input`. */\nexport function coerceTngTextareaNullableBoolean(value: NullableBooleanInput): boolean | null {\n return coerceTngInputNullableBoolean(value);\n}\n\nexport function normalizeTngTextareaRows(value: number): number {\n if (!Number.isFinite(value)) {\n return 3;\n }\n\n return Math.max(1, Math.trunc(value));\n}\n\nexport function normalizeTngTextareaResize(value: unknown): TngTextareaResize {\n if (typeof value !== 'string') {\n return 'vertical';\n }\n\n const normalized = value.trim().toLowerCase();\n if (\n normalized === 'none' ||\n normalized === 'vertical' ||\n normalized === 'horizontal' ||\n normalized === 'both'\n ) {\n return normalized;\n }\n\n return 'vertical';\n}\n\n@Directive({\n selector: 'textarea[tngTextarea]',\n exportAs: 'tngTextarea',\n standalone: true,\n hostDirectives: [\n {\n directive: TngInput,\n inputs: [\n 'ariaDescribedBy',\n 'ariaInvalid',\n 'ariaLabel',\n 'ariaLabelledby',\n 'ariaRequired',\n 'disabled',\n 'readonly',\n 'required',\n ],\n },\n ],\n})\nexport class TngTextarea {\n public readonly resize = input<TngTextareaResize, TngTextareaResize | string>('vertical', {\n transform: normalizeTngTextareaResize,\n });\n public readonly rows = input<number, number | string>(3, {\n transform: (value: number | string): number => normalizeTngTextareaRows(numberAttribute(value)),\n });\n\n @HostBinding('attr.data-resize')\n protected get dataResizeAttr(): TngTextareaResize {\n return this.resize();\n }\n\n @HostBinding('attr.rows')\n protected get rowsAttr(): number {\n return this.rows();\n }\n\n @HostBinding('style.resize')\n protected get resizeStyle(): TngTextareaResize {\n return this.resize();\n }\n}\n"]}
|
|
@@ -42,6 +42,7 @@ export declare class TngAccordion {
|
|
|
42
42
|
protected get dataType(): TngAccordionType;
|
|
43
43
|
protected get dataDisabled(): 'true' | 'false';
|
|
44
44
|
ngDoCheck(): void;
|
|
45
|
+
protected onHostKeydown(event: KeyboardEvent): void;
|
|
45
46
|
ngOnDestroy(): void;
|
|
46
47
|
registerItem(item: TngAccordionItem): void;
|
|
47
48
|
unregisterItem(item: TngAccordionItem): void;
|
|
@@ -52,6 +53,7 @@ export declare class TngAccordion {
|
|
|
52
53
|
onTriggerFocused(item: TngAccordionItem): void;
|
|
53
54
|
onTriggerClicked(item: TngAccordionItem): void;
|
|
54
55
|
onTriggerKeydown(item: TngAccordionItem, event: KeyboardEvent): void;
|
|
56
|
+
onTabWithinAccordion(source: HTMLElement, shiftKey: boolean): boolean;
|
|
55
57
|
isPanelMounted(item: TngAccordionItem): boolean;
|
|
56
58
|
open(value: TngAccordionValue): void;
|
|
57
59
|
close(value: TngAccordionValue): void;
|
|
@@ -73,6 +75,11 @@ export declare class TngAccordion {
|
|
|
73
75
|
private mapSetToOrderedValues;
|
|
74
76
|
private getOrderedItems;
|
|
75
77
|
private getEnabledItems;
|
|
78
|
+
private shouldHandleCustomTabNavigation;
|
|
79
|
+
private getCustomTabSequence;
|
|
80
|
+
private findSequenceIndex;
|
|
81
|
+
private isInHiddenSubtree;
|
|
82
|
+
private isNaturallyTabbable;
|
|
76
83
|
private resolveCurrentFocusableItem;
|
|
77
84
|
getHostElement(): HTMLElement;
|
|
78
85
|
}
|
|
@@ -102,6 +109,7 @@ export declare class TngAccordionItem {
|
|
|
102
109
|
unregisterPanel(panel: TngAccordionPanel): void;
|
|
103
110
|
focusTrigger(): void;
|
|
104
111
|
getTriggerId(): string | null;
|
|
112
|
+
getTriggerElement(): HTMLElement | null;
|
|
105
113
|
getPanelId(): string | null;
|
|
106
114
|
markExpandedOnce(): void;
|
|
107
115
|
hasExpandedOnce(): boolean;
|
|
@@ -125,6 +133,7 @@ export declare class TngAccordionTrigger {
|
|
|
125
133
|
ngOnDestroy(): void;
|
|
126
134
|
getTriggerId(): string;
|
|
127
135
|
focusSelf(): void;
|
|
136
|
+
getHostElement(): HTMLElement;
|
|
128
137
|
private resolveTriggerId;
|
|
129
138
|
protected onFocus(): void;
|
|
130
139
|
protected onClick(event: MouseEvent): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-accordion.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/layout/accordion/tng-accordion.ts"],"names":[],"mappings":"AAWA,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,UAAU,CAAC;AACrD,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,MAAM,CAAC;AAChD,MAAM,MAAM,yBAAyB,GAAG,SAAS,GAAG,UAAU,GAAG,cAAc,CAAC;AAEhF,MAAM,MAAM,+BAA+B,GAAG,QAAQ,CAAC;IACrD,KAAK,EAAE,iBAAiB,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB,cAAc,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAC7C,MAAM,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACrC,OAAO,EAAE,yBAAyB,CAAC;CACpC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"tng-accordion.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/layout/accordion/tng-accordion.ts"],"names":[],"mappings":"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"}
|