@tailng-ui/components 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 -4
- package/src/lib/feedback/toast/tng-toast.component.d.ts +55 -6
- package/src/lib/feedback/toast/tng-toast.component.d.ts.map +1 -1
- package/src/lib/feedback/toast/tng-toast.component.js +234 -23
- package/src/lib/feedback/toast/tng-toast.component.js.map +1 -1
- package/src/lib/form/autocomplete/tng-autocomplete.component.js +1 -1
- package/src/lib/form/autocomplete/tng-autocomplete.component.js.map +1 -1
- package/src/lib/form/chips/tng-chips.component.d.ts +9 -1
- package/src/lib/form/chips/tng-chips.component.d.ts.map +1 -1
- package/src/lib/form/chips/tng-chips.component.js +39 -3
- package/src/lib/form/chips/tng-chips.component.js.map +1 -1
- package/src/lib/form/index.d.ts +2 -2
- package/src/lib/form/index.d.ts.map +1 -1
- package/src/lib/form/index.js +2 -2
- package/src/lib/form/index.js.map +1 -1
- package/src/lib/form/input-otp/index.d.ts +3 -0
- package/src/lib/form/input-otp/index.d.ts.map +1 -0
- package/src/lib/form/input-otp/index.js +3 -0
- package/src/lib/form/input-otp/index.js.map +1 -0
- package/src/lib/form/input-otp/tng-input-otp.component.d.ts +79 -7
- package/src/lib/form/input-otp/tng-input-otp.component.d.ts.map +1 -1
- package/src/lib/form/input-otp/tng-input-otp.component.js +441 -81
- package/src/lib/form/input-otp/tng-input-otp.component.js.map +1 -1
- package/src/lib/form/radio/tng-radio.component.d.ts +4 -0
- package/src/lib/form/radio/tng-radio.component.d.ts.map +1 -1
- package/src/lib/form/radio/tng-radio.component.js +15 -0
- package/src/lib/form/radio/tng-radio.component.js.map +1 -1
- package/src/lib/form/textarea/tng-textarea.component.d.ts +2 -0
- package/src/lib/form/textarea/tng-textarea.component.d.ts.map +1 -1
- package/src/lib/form/textarea/tng-textarea.component.js +7 -4
- package/src/lib/form/textarea/tng-textarea.component.js.map +1 -1
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-item.component.d.ts +10 -0
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-item.component.d.ts.map +1 -1
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-item.component.js +52 -1
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-item.component.js.map +1 -1
- package/src/lib/navigation/context-menu/tng-context-menu.component.d.ts +1 -0
- package/src/lib/navigation/context-menu/tng-context-menu.component.d.ts.map +1 -1
- package/src/lib/navigation/context-menu/tng-context-menu.component.js +20 -4
- package/src/lib/navigation/context-menu/tng-context-menu.component.js.map +1 -1
- package/src/lib/overlay/popover/tng-popover.component.d.ts +14 -19
- package/src/lib/overlay/popover/tng-popover.component.d.ts.map +1 -1
- package/src/lib/overlay/popover/tng-popover.component.js +24 -105
- package/src/lib/overlay/popover/tng-popover.component.js.map +1 -1
- package/src/lib/overlay/tng-overlay-focus-handoff.d.ts +10 -0
- package/src/lib/overlay/tng-overlay-focus-handoff.d.ts.map +1 -0
- package/src/lib/overlay/tng-overlay-focus-handoff.js +3 -0
- package/src/lib/overlay/tng-overlay-focus-handoff.js.map +1 -0
- package/src/lib/overlay/tng-overlay-runtime.d.ts +2 -2
- package/src/lib/overlay/tooltip/tng-tooltip.component.d.ts +1 -18
- package/src/lib/overlay/tooltip/tng-tooltip.component.d.ts.map +1 -1
- package/src/lib/overlay/tooltip/tng-tooltip.component.js +5 -85
- package/src/lib/overlay/tooltip/tng-tooltip.component.js.map +1 -1
- package/src/lib/utility/avatar/tng-avatar.component.d.ts.map +1 -1
- package/src/lib/utility/avatar/tng-avatar.component.js +8 -1
- package/src/lib/utility/avatar/tng-avatar.component.js.map +1 -1
- package/src/lib/utility/tag/tng-tag.component.d.ts +8 -0
- package/src/lib/utility/tag/tng-tag.component.d.ts.map +1 -1
- package/src/lib/utility/tag/tng-tag.component.js +16 -3
- package/src/lib/utility/tag/tng-tag.component.js.map +1 -1
|
@@ -1,130 +1,49 @@
|
|
|
1
1
|
import { __decorate } from "tslib";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
'a[href]',
|
|
8
|
-
'button:not([disabled])',
|
|
9
|
-
'input:not([disabled])',
|
|
10
|
-
'select:not([disabled])',
|
|
11
|
-
'textarea:not([disabled])',
|
|
12
|
-
'[tabindex]:not([tabindex="-1"])',
|
|
13
|
-
].join(',');
|
|
14
|
-
function resolveFocusableElements(container) {
|
|
15
|
-
if (!(container instanceof HTMLElement)) {
|
|
16
|
-
return [];
|
|
2
|
+
import { booleanAttribute, Component, input, output, viewChild, } from '@angular/core';
|
|
3
|
+
import { TngPopover as TngPopoverPrimitive, TngPopoverPanel, TngPopoverTrigger, } from '@tailng-ui/primitives';
|
|
4
|
+
function normalizeOptionalBooleanInput(value) {
|
|
5
|
+
if (value === null || value === undefined) {
|
|
6
|
+
return undefined;
|
|
17
7
|
}
|
|
18
|
-
return
|
|
19
|
-
}
|
|
20
|
-
function toPopoverCloseReason(reason) {
|
|
21
|
-
if (reason === 'escape-key') {
|
|
22
|
-
return 'escape';
|
|
23
|
-
}
|
|
24
|
-
if (reason === 'outside-pointer') {
|
|
25
|
-
return 'outside-pointer';
|
|
26
|
-
}
|
|
27
|
-
return null;
|
|
8
|
+
return booleanAttribute(value);
|
|
28
9
|
}
|
|
29
10
|
let TngPopoverComponent = class TngPopoverComponent {
|
|
30
11
|
ariaLabel = input('Popover');
|
|
12
|
+
ariaHasPopup = input('dialog');
|
|
13
|
+
autoFocus = input('first-focusable');
|
|
14
|
+
align = input('start');
|
|
31
15
|
closeOnEscape = input(true, {
|
|
32
16
|
transform: booleanAttribute,
|
|
33
17
|
});
|
|
34
18
|
closeOnOutsidePointer = input(true, {
|
|
35
19
|
transform: booleanAttribute,
|
|
36
20
|
});
|
|
37
|
-
|
|
21
|
+
defaultOpen = input(false, {
|
|
22
|
+
transform: booleanAttribute,
|
|
23
|
+
});
|
|
24
|
+
disabled = input(false, {
|
|
38
25
|
transform: booleanAttribute,
|
|
39
26
|
});
|
|
27
|
+
open = input(undefined, {
|
|
28
|
+
transform: normalizeOptionalBooleanInput,
|
|
29
|
+
});
|
|
30
|
+
panelRole = input('dialog');
|
|
31
|
+
restoreFocus = input(true, {
|
|
32
|
+
transform: booleanAttribute,
|
|
33
|
+
});
|
|
34
|
+
side = input('bottom');
|
|
40
35
|
triggerLabel = input('Toggle Popover');
|
|
41
36
|
closed = output();
|
|
42
37
|
openChange = output();
|
|
43
|
-
|
|
44
|
-
hostRef = inject(ElementRef);
|
|
45
|
-
injector = inject(Injector);
|
|
46
|
-
panelRef = viewChild('panelRef');
|
|
47
|
-
instanceId = createPopoverId();
|
|
48
|
-
isLayerRegistered = false;
|
|
49
|
-
openStateEffect = effect(() => {
|
|
50
|
-
if (this.open()) {
|
|
51
|
-
this.registerOverlayLayer();
|
|
52
|
-
this.focusInitialElement();
|
|
53
|
-
return;
|
|
54
|
-
}
|
|
55
|
-
this.unregisterOverlayLayer();
|
|
56
|
-
});
|
|
57
|
-
constructor() {
|
|
58
|
-
this.panelId = `${this.instanceId}-panel`;
|
|
59
|
-
}
|
|
38
|
+
popoverRef = viewChild.required('popoverRef');
|
|
60
39
|
close() {
|
|
61
|
-
this.
|
|
62
|
-
}
|
|
63
|
-
ngOnDestroy() {
|
|
64
|
-
this.openStateEffect.destroy();
|
|
65
|
-
this.unregisterOverlayLayer();
|
|
66
|
-
}
|
|
67
|
-
onTriggerClick() {
|
|
68
|
-
if (this.open()) {
|
|
69
|
-
this.requestClose('trigger-toggle');
|
|
70
|
-
return;
|
|
71
|
-
}
|
|
72
|
-
this.openChange.emit(true);
|
|
73
|
-
}
|
|
74
|
-
handleOverlayDismiss(reason) {
|
|
75
|
-
const closeReason = toPopoverCloseReason(reason);
|
|
76
|
-
if (closeReason === null) {
|
|
77
|
-
return;
|
|
78
|
-
}
|
|
79
|
-
this.requestClose(closeReason);
|
|
80
|
-
}
|
|
81
|
-
registerOverlayLayer() {
|
|
82
|
-
if (this.isLayerRegistered) {
|
|
83
|
-
return;
|
|
84
|
-
}
|
|
85
|
-
this.isLayerRegistered = true;
|
|
86
|
-
tngOverlayRuntime.registerLayer({
|
|
87
|
-
containsTarget: (target) => {
|
|
88
|
-
return target instanceof Node ? this.hostRef.nativeElement.contains(target) : false;
|
|
89
|
-
},
|
|
90
|
-
dismissOnEscape: this.closeOnEscape(),
|
|
91
|
-
dismissOnOutsidePointer: this.closeOnOutsidePointer(),
|
|
92
|
-
id: this.instanceId,
|
|
93
|
-
onDismiss: (reason) => {
|
|
94
|
-
this.handleOverlayDismiss(reason);
|
|
95
|
-
},
|
|
96
|
-
priority: 110,
|
|
97
|
-
});
|
|
98
|
-
}
|
|
99
|
-
unregisterOverlayLayer() {
|
|
100
|
-
if (!this.isLayerRegistered) {
|
|
101
|
-
return;
|
|
102
|
-
}
|
|
103
|
-
this.isLayerRegistered = false;
|
|
104
|
-
tngOverlayRuntime.unregisterLayer(this.instanceId);
|
|
105
|
-
}
|
|
106
|
-
focusInitialElement() {
|
|
107
|
-
afterNextRender(() => {
|
|
108
|
-
const panel = this.panelRef()?.nativeElement;
|
|
109
|
-
if (panel === undefined) {
|
|
110
|
-
return;
|
|
111
|
-
}
|
|
112
|
-
const firstFocusable = resolveFocusableElements(panel)[0];
|
|
113
|
-
if (firstFocusable !== undefined) {
|
|
114
|
-
firstFocusable.focus();
|
|
115
|
-
return;
|
|
116
|
-
}
|
|
117
|
-
panel.focus();
|
|
118
|
-
}, { injector: this.injector });
|
|
119
|
-
}
|
|
120
|
-
requestClose(reason) {
|
|
121
|
-
this.closed.emit(reason);
|
|
122
|
-
this.openChange.emit(false);
|
|
40
|
+
this.popoverRef().closePopover('programmatic');
|
|
123
41
|
}
|
|
124
42
|
};
|
|
125
43
|
TngPopoverComponent = __decorate([
|
|
126
44
|
Component({
|
|
127
45
|
selector: 'tng-popover',
|
|
46
|
+
imports: [TngPopoverPrimitive, TngPopoverTrigger, TngPopoverPanel],
|
|
128
47
|
templateUrl: './tng-popover.component.html',
|
|
129
48
|
styleUrl: './tng-popover.component.css',
|
|
130
49
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-popover.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/overlay/popover/tng-popover.component.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"tng-popover.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/overlay/popover/tng-popover.component.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,gBAAgB,EAChB,SAAS,EACT,KAAK,EACL,MAAM,EACN,SAAS,GACV,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,UAAU,IAAI,mBAAmB,EACjC,eAAe,EACf,iBAAiB,GAOlB,MAAM,uBAAuB,CAAC;AAY/B,SAAS,6BAA6B,CAAC,KAA2B;IAChE,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC;AACjC,CAAC;AAQM,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IACd,SAAS,GAAG,KAAK,CAAS,SAAS,CAAC,CAAC;IACrC,YAAY,GAAG,KAAK,CAAyB,QAAQ,CAAC,CAAC;IACvD,SAAS,GAAG,KAAK,CAAsB,iBAAiB,CAAC,CAAC;IAC1D,KAAK,GAAG,KAAK,CAAkB,OAAO,CAAC,CAAC;IACxC,aAAa,GAAG,KAAK,CAA4B,IAAI,EAAE;QACrE,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IACa,qBAAqB,GAAG,KAAK,CAA4B,IAAI,EAAE;QAC7E,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IACa,WAAW,GAAG,KAAK,CAA4B,KAAK,EAAE;QACpE,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IACa,QAAQ,GAAG,KAAK,CAA4B,KAAK,EAAE;QACjE,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IACa,IAAI,GAAG,KAAK,CAA4C,SAAS,EAAE;QACjF,SAAS,EAAE,6BAA6B;KACzC,CAAC,CAAC;IACa,SAAS,GAAG,KAAK,CAAsB,QAAQ,CAAC,CAAC;IACjD,YAAY,GAAG,KAAK,CAA4B,IAAI,EAAE;QACpE,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IACa,IAAI,GAAG,KAAK,CAAiB,QAAQ,CAAC,CAAC;IACvC,YAAY,GAAG,KAAK,CAAS,gBAAgB,CAAC,CAAC;IAE/C,MAAM,GAAG,MAAM,EAAyB,CAAC;IACzC,UAAU,GAAG,MAAM,EAAW,CAAC;IAE5B,UAAU,GAAG,SAAS,CAAC,QAAQ,CAAsB,YAAY,CAAC,CAAC;IAE/E,KAAK;QACV,IAAI,CAAC,UAAU,EAAE,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;IACjD,CAAC;CACF,CAAA;AAnCY,mBAAmB;IAN/B,SAAS,CAAC;QACT,QAAQ,EAAE,aAAa;QACvB,OAAO,EAAE,CAAC,mBAAmB,EAAE,iBAAiB,EAAE,eAAe,CAAC;QAClE,WAAW,EAAE,8BAA8B;QAC3C,QAAQ,EAAE,6BAA6B;KACxC,CAAC;GACW,mBAAmB,CAmC/B","sourcesContent":["import {\n booleanAttribute,\n Component,\n input,\n output,\n viewChild,\n} from '@angular/core';\nimport {\n TngPopover as TngPopoverPrimitive,\n TngPopoverPanel,\n TngPopoverTrigger,\n type TngPopoverAlign,\n type TngPopoverAriaHasPopup,\n type TngPopoverAutoFocus,\n type TngPopoverCloseReason,\n type TngPopoverPanelRole,\n type TngPopoverSide,\n} from '@tailng-ui/primitives';\nexport type {\n TngPopoverAlign,\n TngPopoverAriaHasPopup,\n TngPopoverAutoFocus,\n TngPopoverCloseReason,\n TngPopoverPanelRole,\n TngPopoverSide,\n} from '@tailng-ui/primitives';\n\ntype OptionalBooleanInput = boolean | null | string | undefined;\n\nfunction normalizeOptionalBooleanInput(value: OptionalBooleanInput): boolean | undefined {\n if (value === null || value === undefined) {\n return undefined;\n }\n\n return booleanAttribute(value);\n}\n\n@Component({\n selector: 'tng-popover',\n imports: [TngPopoverPrimitive, TngPopoverTrigger, TngPopoverPanel],\n templateUrl: './tng-popover.component.html',\n styleUrl: './tng-popover.component.css',\n})\nexport class TngPopoverComponent {\n public readonly ariaLabel = input<string>('Popover');\n public readonly ariaHasPopup = input<TngPopoverAriaHasPopup>('dialog');\n public readonly autoFocus = input<TngPopoverAutoFocus>('first-focusable');\n public readonly align = input<TngPopoverAlign>('start');\n public readonly closeOnEscape = input<boolean, boolean | string>(true, {\n transform: booleanAttribute,\n });\n public readonly closeOnOutsidePointer = input<boolean, boolean | string>(true, {\n transform: booleanAttribute,\n });\n public readonly defaultOpen = 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 open = input<boolean | undefined, OptionalBooleanInput>(undefined, {\n transform: normalizeOptionalBooleanInput,\n });\n public readonly panelRole = input<TngPopoverPanelRole>('dialog');\n public readonly restoreFocus = input<boolean, boolean | string>(true, {\n transform: booleanAttribute,\n });\n public readonly side = input<TngPopoverSide>('bottom');\n public readonly triggerLabel = input<string>('Toggle Popover');\n\n public readonly closed = output<TngPopoverCloseReason>();\n public readonly openChange = output<boolean>();\n\n protected readonly popoverRef = viewChild.required<TngPopoverPrimitive>('popoverRef');\n\n public close(): void {\n this.popoverRef().closePopover('programmatic');\n }\n}\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare const tngOverlayFocusHandoff: Readonly<{
|
|
2
|
+
activateLayer: (layerId: string, restoreFocusTargetId?: string | null) => string | null;
|
|
3
|
+
deactivateLayer: (layerId: string) => string | null;
|
|
4
|
+
isTrapActive: (layerId: string) => boolean;
|
|
5
|
+
recordFocus: (layerId: string, id: string | null) => void;
|
|
6
|
+
registerLayer: (config: import("@tailng-ui/cdk").TngOverlayFocusLayerConfig) => void;
|
|
7
|
+
resolveFocusCandidate: (layerId: string, candidateId: string | null) => string | null;
|
|
8
|
+
unregisterLayer: (layerId: string) => void;
|
|
9
|
+
}>;
|
|
10
|
+
//# sourceMappingURL=tng-overlay-focus-handoff.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tng-overlay-focus-handoff.d.ts","sourceRoot":"","sources":["../../../../../../../libs/tailng-ui/components/src/lib/overlay/tng-overlay-focus-handoff.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,sBAAsB;yDACyI,CAAC;;;;;;;EADlG,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tng-overlay-focus-handoff.js","sourceRoot":"","sources":["../../../../../../../libs/tailng-ui/components/src/lib/overlay/tng-overlay-focus-handoff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mCAAmC,EAAE,MAAM,gBAAgB,CAAC;AAErE,MAAM,CAAC,MAAM,sBAAsB,GAAG,mCAAmC,EAAE,CAAC","sourcesContent":["import { createOverlayFocusHandoffController } from '@tailng-ui/cdk';\n\nexport const tngOverlayFocusHandoff = createOverlayFocusHandoffController();\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export declare const tngOverlayRuntime: Readonly<{
|
|
2
2
|
clearLayers: () => void;
|
|
3
|
-
dispatchKeydown: (event: import("@tailng-ui/cdk").TngOverlayKeyboardEvent) => void;
|
|
4
|
-
dispatchPointerDown: (event: import("@tailng-ui/cdk").TngOverlayPointerEvent) => void;
|
|
3
|
+
dispatchKeydown: (event: Readonly<import("@tailng-ui/cdk").TngOverlayKeyboardEvent>) => void;
|
|
4
|
+
dispatchPointerDown: (event: Readonly<import("@tailng-ui/cdk").TngOverlayPointerEvent>) => void;
|
|
5
5
|
dismissById: (id: string, reason: import("@tailng-ui/cdk").TngOverlayDismissReason) => void;
|
|
6
6
|
getLayerIds: () => readonly string[];
|
|
7
7
|
isTopLayer: (id: string) => boolean;
|
|
@@ -1,13 +1,7 @@
|
|
|
1
|
-
import type { OnDestroy } from '@angular/core';
|
|
2
1
|
import { type TngTooltipSide } from '@tailng-ui/primitives';
|
|
3
|
-
type TngTooltipKeyboardEvent = Readonly<Pick<KeyboardEvent, 'key'>> & Readonly<{
|
|
4
|
-
preventDefault: () => void;
|
|
5
|
-
}>;
|
|
6
2
|
export declare function normalizeTngTooltipDelay(value: number): number;
|
|
7
3
|
export declare function shouldCloseTngTooltipForKey(key: string): boolean;
|
|
8
|
-
export declare class TngTooltipComponent
|
|
9
|
-
private closeTimerId;
|
|
10
|
-
private openTimerId;
|
|
4
|
+
export declare class TngTooltipComponent {
|
|
11
5
|
readonly ariaLabel: import("@angular/core").InputSignal<string | null>;
|
|
12
6
|
readonly closeDelay: import("@angular/core").InputSignal<number>;
|
|
13
7
|
readonly disabled: import("@angular/core").InputSignalWithTransform<boolean, string | boolean>;
|
|
@@ -16,16 +10,5 @@ export declare class TngTooltipComponent implements OnDestroy {
|
|
|
16
10
|
readonly text: import("@angular/core").InputSignal<string>;
|
|
17
11
|
readonly triggerLabel: import("@angular/core").InputSignal<string>;
|
|
18
12
|
readonly openChange: import("@angular/core").OutputEmitterRef<boolean>;
|
|
19
|
-
protected readonly open: import("@angular/core").WritableSignal<boolean>;
|
|
20
|
-
protected readonly tooltipId: string;
|
|
21
|
-
private readonly syncDisabledState;
|
|
22
|
-
ngOnDestroy(): void;
|
|
23
|
-
protected onCloseIntent(): void;
|
|
24
|
-
protected onOpenIntent(): void;
|
|
25
|
-
protected onTriggerKeydown(event: TngTooltipKeyboardEvent): void;
|
|
26
|
-
private clearCloseTimer;
|
|
27
|
-
private clearOpenTimer;
|
|
28
|
-
private setOpen;
|
|
29
13
|
}
|
|
30
|
-
export {};
|
|
31
14
|
//# sourceMappingURL=tng-tooltip.component.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-tooltip.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/overlay/tooltip/tng-tooltip.component.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"tng-tooltip.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/overlay/tooltip/tng-tooltip.component.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,cAAc,EAGpB,MAAM,uBAAuB,CAAC;AAE/B,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEhE;AAED,qBAMa,mBAAmB;IAC9B,SAAgB,SAAS,qDAA8B;IACvD,SAAgB,UAAU,8CAAqB;IAC/C,SAAgB,QAAQ,8EAErB;IACH,SAAgB,SAAS,8CAAsB;IAC/C,SAAgB,IAAI,sDAAgC;IACpD,SAAgB,IAAI,8CAAqC;IACzD,SAAgB,YAAY,8CAAyB;IAErD,SAAgB,UAAU,oDAAqB;CAChD"}
|
|
@@ -1,20 +1,13 @@
|
|
|
1
1
|
import { __decorate } from "tslib";
|
|
2
|
-
import { booleanAttribute, Component,
|
|
3
|
-
import {
|
|
4
|
-
import { TngTooltipContent as TngTooltipContentPrimitive, TngTooltipTrigger as TngTooltipTriggerPrimitive, } from '@tailng-ui/primitives';
|
|
5
|
-
const tooltipIdFactory = createTngIdFactory('tng-tooltip');
|
|
2
|
+
import { booleanAttribute, Component, input, output } from '@angular/core';
|
|
3
|
+
import { TngTooltip as TngTooltipPrimitive, TngTooltipContent as TngTooltipContentPrimitive, TngTooltipTrigger as TngTooltipTriggerPrimitive, normalizeTngTooltipDelay as normalizeTngTooltipDelayPrimitive, shouldCloseTngTooltipForKey as shouldCloseTngTooltipForKeyPrimitive, } from '@tailng-ui/primitives';
|
|
6
4
|
export function normalizeTngTooltipDelay(value) {
|
|
7
|
-
|
|
8
|
-
return 0;
|
|
9
|
-
}
|
|
10
|
-
return value;
|
|
5
|
+
return normalizeTngTooltipDelayPrimitive(value);
|
|
11
6
|
}
|
|
12
7
|
export function shouldCloseTngTooltipForKey(key) {
|
|
13
|
-
return key
|
|
8
|
+
return shouldCloseTngTooltipForKeyPrimitive(key);
|
|
14
9
|
}
|
|
15
10
|
let TngTooltipComponent = class TngTooltipComponent {
|
|
16
|
-
closeTimerId = null;
|
|
17
|
-
openTimerId = null;
|
|
18
11
|
ariaLabel = input(null);
|
|
19
12
|
closeDelay = input(60);
|
|
20
13
|
disabled = input(false, {
|
|
@@ -25,84 +18,11 @@ let TngTooltipComponent = class TngTooltipComponent {
|
|
|
25
18
|
text = input('More information');
|
|
26
19
|
triggerLabel = input('Info');
|
|
27
20
|
openChange = output();
|
|
28
|
-
open = signal(false);
|
|
29
|
-
tooltipId = tooltipIdFactory();
|
|
30
|
-
syncDisabledState = effect(() => {
|
|
31
|
-
if (this.disabled() && this.open()) {
|
|
32
|
-
this.setOpen(false);
|
|
33
|
-
}
|
|
34
|
-
});
|
|
35
|
-
ngOnDestroy() {
|
|
36
|
-
this.syncDisabledState.destroy();
|
|
37
|
-
this.clearCloseTimer();
|
|
38
|
-
this.clearOpenTimer();
|
|
39
|
-
}
|
|
40
|
-
onCloseIntent() {
|
|
41
|
-
if (this.disabled()) {
|
|
42
|
-
return;
|
|
43
|
-
}
|
|
44
|
-
this.clearOpenTimer();
|
|
45
|
-
const delay = normalizeTngTooltipDelay(this.closeDelay());
|
|
46
|
-
if (delay === 0) {
|
|
47
|
-
this.setOpen(false);
|
|
48
|
-
return;
|
|
49
|
-
}
|
|
50
|
-
this.closeTimerId = setTimeout(() => {
|
|
51
|
-
this.closeTimerId = null;
|
|
52
|
-
this.setOpen(false);
|
|
53
|
-
}, delay);
|
|
54
|
-
}
|
|
55
|
-
onOpenIntent() {
|
|
56
|
-
if (this.disabled()) {
|
|
57
|
-
return;
|
|
58
|
-
}
|
|
59
|
-
this.clearCloseTimer();
|
|
60
|
-
const delay = normalizeTngTooltipDelay(this.openDelay());
|
|
61
|
-
if (delay === 0) {
|
|
62
|
-
this.setOpen(true);
|
|
63
|
-
return;
|
|
64
|
-
}
|
|
65
|
-
this.openTimerId = setTimeout(() => {
|
|
66
|
-
this.openTimerId = null;
|
|
67
|
-
this.setOpen(true);
|
|
68
|
-
}, delay);
|
|
69
|
-
}
|
|
70
|
-
onTriggerKeydown(event) {
|
|
71
|
-
if (this.disabled()) {
|
|
72
|
-
return;
|
|
73
|
-
}
|
|
74
|
-
if (!shouldCloseTngTooltipForKey(event.key)) {
|
|
75
|
-
return;
|
|
76
|
-
}
|
|
77
|
-
event.preventDefault();
|
|
78
|
-
this.clearCloseTimer();
|
|
79
|
-
this.clearOpenTimer();
|
|
80
|
-
this.setOpen(false);
|
|
81
|
-
}
|
|
82
|
-
clearCloseTimer() {
|
|
83
|
-
if (this.closeTimerId !== null) {
|
|
84
|
-
clearTimeout(this.closeTimerId);
|
|
85
|
-
this.closeTimerId = null;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
clearOpenTimer() {
|
|
89
|
-
if (this.openTimerId !== null) {
|
|
90
|
-
clearTimeout(this.openTimerId);
|
|
91
|
-
this.openTimerId = null;
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
setOpen(nextOpen) {
|
|
95
|
-
if (this.open() === nextOpen) {
|
|
96
|
-
return;
|
|
97
|
-
}
|
|
98
|
-
this.open.set(nextOpen);
|
|
99
|
-
this.openChange.emit(nextOpen);
|
|
100
|
-
}
|
|
101
21
|
};
|
|
102
22
|
TngTooltipComponent = __decorate([
|
|
103
23
|
Component({
|
|
104
24
|
selector: 'tng-tooltip',
|
|
105
|
-
imports: [TngTooltipTriggerPrimitive, TngTooltipContentPrimitive],
|
|
25
|
+
imports: [TngTooltipPrimitive, TngTooltipTriggerPrimitive, TngTooltipContentPrimitive],
|
|
106
26
|
templateUrl: './tng-tooltip.component.html',
|
|
107
27
|
styleUrl: './tng-tooltip.component.css',
|
|
108
28
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-tooltip.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/overlay/tooltip/tng-tooltip.component.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"tng-tooltip.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/overlay/tooltip/tng-tooltip.component.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EACL,UAAU,IAAI,mBAAmB,EACjC,iBAAiB,IAAI,0BAA0B,EAC/C,iBAAiB,IAAI,0BAA0B,EAE/C,wBAAwB,IAAI,iCAAiC,EAC7D,2BAA2B,IAAI,oCAAoC,GACpE,MAAM,uBAAuB,CAAC;AAE/B,MAAM,UAAU,wBAAwB,CAAC,KAAa;IACpD,OAAO,iCAAiC,CAAC,KAAK,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,GAAW;IACrD,OAAO,oCAAoC,CAAC,GAAG,CAAC,CAAC;AACnD,CAAC;AAQM,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IACd,SAAS,GAAG,KAAK,CAAgB,IAAI,CAAC,CAAC;IACvC,UAAU,GAAG,KAAK,CAAS,EAAE,CAAC,CAAC;IAC/B,QAAQ,GAAG,KAAK,CAA4B,KAAK,EAAE;QACjE,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IACa,SAAS,GAAG,KAAK,CAAS,GAAG,CAAC,CAAC;IAC/B,IAAI,GAAG,KAAK,CAAiB,KAAK,CAAC,CAAC;IACpC,IAAI,GAAG,KAAK,CAAS,kBAAkB,CAAC,CAAC;IACzC,YAAY,GAAG,KAAK,CAAS,MAAM,CAAC,CAAC;IAErC,UAAU,GAAG,MAAM,EAAW,CAAC;CAChD,CAAA;AAZY,mBAAmB;IAN/B,SAAS,CAAC;QACT,QAAQ,EAAE,aAAa;QACvB,OAAO,EAAE,CAAC,mBAAmB,EAAE,0BAA0B,EAAE,0BAA0B,CAAC;QACtF,WAAW,EAAE,8BAA8B;QAC3C,QAAQ,EAAE,6BAA6B;KACxC,CAAC;GACW,mBAAmB,CAY/B","sourcesContent":["import { booleanAttribute, Component, input, output } from '@angular/core';\nimport {\n TngTooltip as TngTooltipPrimitive,\n TngTooltipContent as TngTooltipContentPrimitive,\n TngTooltipTrigger as TngTooltipTriggerPrimitive,\n type TngTooltipSide,\n normalizeTngTooltipDelay as normalizeTngTooltipDelayPrimitive,\n shouldCloseTngTooltipForKey as shouldCloseTngTooltipForKeyPrimitive,\n} from '@tailng-ui/primitives';\n\nexport function normalizeTngTooltipDelay(value: number): number {\n return normalizeTngTooltipDelayPrimitive(value);\n}\n\nexport function shouldCloseTngTooltipForKey(key: string): boolean {\n return shouldCloseTngTooltipForKeyPrimitive(key);\n}\n\n@Component({\n selector: 'tng-tooltip',\n imports: [TngTooltipPrimitive, TngTooltipTriggerPrimitive, TngTooltipContentPrimitive],\n templateUrl: './tng-tooltip.component.html',\n styleUrl: './tng-tooltip.component.css',\n})\nexport class TngTooltipComponent {\n public readonly ariaLabel = input<string | null>(null);\n public readonly closeDelay = input<number>(60);\n public readonly disabled = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly openDelay = input<number>(120);\n public readonly side = input<TngTooltipSide>('top');\n public readonly text = input<string>('More information');\n public readonly triggerLabel = input<string>('Info');\n\n public readonly openChange = output<boolean>();\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-avatar.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/utility/avatar/tng-avatar.component.ts"],"names":[],"mappings":"AAOA,KAAK,cAAc,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAC1C,KAAK,aAAa,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"tng-avatar.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/utility/avatar/tng-avatar.component.ts"],"names":[],"mappings":"AAOA,KAAK,cAAc,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAC1C,KAAK,aAAa,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AA2CxC,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAWhF;AAED,qBAMa,kBAAkB;IAC7B,SAAgB,GAAG,qDAAkC;IACrD,SAAgB,QAAQ,qDAA8B;IACtD,SAAgB,KAAK,sDAAmC;IACxD,SAAgB,IAAI,qDAA8B;IAClD,SAAgB,GAAG,qDAA8B;IAEjD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAiB;IACjD,SAAS,CAAC,QAAQ,CAAC,YAAY,yCAE7B;IACF,SAAS,CAAC,QAAQ,CAAC,WAAW,gDAE5B;IACF,SAAS,CAAC,QAAQ,CAAC,WAAW,gDAE5B;IACF,SAAS,CAAC,QAAQ,CAAC,YAAY,0CAE7B;IAEK,YAAY,IAAI,IAAI;IAIpB,WAAW,IAAI,IAAI;CAG3B"}
|
|
@@ -8,6 +8,13 @@ function normalizeOptionalString(value) {
|
|
|
8
8
|
const normalized = value.trim();
|
|
9
9
|
return normalized.length > 0 ? normalized : null;
|
|
10
10
|
}
|
|
11
|
+
function normalizeAvatarAlt(value) {
|
|
12
|
+
if (value === undefined || value === null) {
|
|
13
|
+
return null;
|
|
14
|
+
}
|
|
15
|
+
const normalized = value.trim();
|
|
16
|
+
return normalized.length > 0 ? normalized : '';
|
|
17
|
+
}
|
|
11
18
|
function normalizeFallbackText(value) {
|
|
12
19
|
return value.length > 0 ? value : '?';
|
|
13
20
|
}
|
|
@@ -44,7 +51,7 @@ let TngAvatarComponent = class TngAvatarComponent {
|
|
|
44
51
|
src = input(null);
|
|
45
52
|
imageLoadFailed = signal(false);
|
|
46
53
|
fallbackText = computed(() => toTngAvatarFallbackText(this.fallback()));
|
|
47
|
-
resolvedAlt = computed(() =>
|
|
54
|
+
resolvedAlt = computed(() => normalizeAvatarAlt(this.alt()));
|
|
48
55
|
resolvedSrc = computed(() => normalizeOptionalString(this.src()));
|
|
49
56
|
showFallback = computed(() => this.resolvedSrc() === null || this.imageLoadFailed());
|
|
50
57
|
onImageError() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-avatar.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/utility/avatar/tng-avatar.component.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EACL,SAAS,IAAI,kBAAkB,EAC/B,iBAAiB,IAAI,0BAA0B,EAC/C,cAAc,IAAI,uBAAuB,GAC1C,MAAM,uBAAuB,CAAC;AAK/B,SAAS,uBAAuB,CAAC,KAAgC;IAC/D,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;AAED,SAAS,qBAAqB,CAAC,KAAa;IAC1C,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;AACxC,CAAC;AAED,SAAS,OAAO,CAAC,KAAgC;IAC/C,MAAM,UAAU,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAClD,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;QACxB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IACnC,OAAO,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,aAAa,CAAC,KAAwB;IAC7C,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/C,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAChD,OAAO,qBAAqB,CAAC,GAAG,YAAY,GAAG,aAAa,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;AAChF,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAgC;IACtE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,GAAG,CAAC;IACb,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC;AAQM,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IACb,GAAG,GAAG,KAAK,CAAgB,QAAQ,CAAC,CAAC;IACrC,QAAQ,GAAG,KAAK,CAAgB,IAAI,CAAC,CAAC;IACtC,KAAK,GAAG,KAAK,CAAiB,QAAQ,CAAC,CAAC;IACxC,IAAI,GAAG,KAAK,CAAgB,IAAI,CAAC,CAAC;IAClC,GAAG,GAAG,KAAK,CAAgB,IAAI,CAAC,CAAC;IAEhC,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9B,YAAY,GAAG,QAAQ,CAAS,GAAG,EAAE,CACtD,uBAAuB,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CACzC,CAAC;IACiB,WAAW,GAAG,QAAQ,CAAgB,GAAG,EAAE,CAC5D,
|
|
1
|
+
{"version":3,"file":"tng-avatar.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/utility/avatar/tng-avatar.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, computed, input, signal } from '@angular/core';\nimport {\n TngAvatar as TngAvatarPrimitive,\n TngAvatarFallback as TngAvatarFallbackPrimitive,\n TngAvatarImage as TngAvatarImagePrimitive,\n} from '@tailng-ui/primitives';\n\ntype TngAvatarShape = 'circle' | 'square';\ntype TngAvatarSize = 'lg' | 'md' | 'sm';\n\nfunction normalizeOptionalString(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\nfunction normalizeAvatarAlt(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 : '';\n}\n\nfunction normalizeFallbackText(value: string): string {\n return value.length > 0 ? value : '?';\n}\n\nfunction toWords(value: string | null | undefined): readonly string[] {\n const normalized = normalizeOptionalString(value);\n if (normalized === null) {\n return [];\n }\n\n return normalized.split(/\\s+/).filter((part) => part.length > 0);\n}\n\nfunction toTwoLetterCode(word: string): string {\n return normalizeFallbackText(word.slice(0, 2).toUpperCase());\n}\n\nfunction toInitialCode(words: readonly string[]): string {\n const firstInitial = words[0]?.charAt(0) ?? '';\n const secondInitial = words[1]?.charAt(0) ?? '';\n return normalizeFallbackText(`${firstInitial}${secondInitial}`.toUpperCase());\n}\n\nexport function toTngAvatarFallbackText(value: string | null | undefined): string {\n const words = toWords(value);\n if (words.length === 0) {\n return '?';\n }\n\n if (words.length === 1) {\n return toTwoLetterCode(words[0] ?? '');\n }\n\n return toInitialCode(words);\n}\n\n@Component({\n selector: 'tng-avatar',\n imports: [TngAvatarPrimitive, TngAvatarImagePrimitive, TngAvatarFallbackPrimitive],\n templateUrl: './tng-avatar.component.html',\n styleUrl: './tng-avatar.component.css',\n})\nexport class TngAvatarComponent {\n public readonly alt = input<string | null>('Avatar');\n public readonly fallback = input<string | null>(null);\n public readonly shape = input<TngAvatarShape>('circle');\n public readonly size = input<TngAvatarSize>('md');\n public readonly src = input<string | null>(null);\n\n private readonly imageLoadFailed = signal(false);\n protected readonly fallbackText = computed<string>(() =>\n toTngAvatarFallbackText(this.fallback()),\n );\n protected readonly resolvedAlt = computed<string | null>(() =>\n normalizeAvatarAlt(this.alt()),\n );\n protected readonly resolvedSrc = computed<string | null>(() =>\n normalizeOptionalString(this.src()),\n );\n protected readonly showFallback = computed<boolean>(\n () => this.resolvedSrc() === null || this.imageLoadFailed(),\n );\n\n public onImageError(): void {\n this.imageLoadFailed.set(true);\n }\n\n public onImageLoad(): void {\n this.imageLoadFailed.set(false);\n }\n}\n"]}
|
|
@@ -1,10 +1,18 @@
|
|
|
1
1
|
type TngTagAppearance = 'outline' | 'soft' | 'solid';
|
|
2
2
|
type TngTagShape = 'pill' | 'rounded';
|
|
3
|
+
type TngTagSize = 'md' | 'sm';
|
|
3
4
|
type TngTagTone = 'danger' | 'info' | 'neutral' | 'success' | 'warning';
|
|
4
5
|
export declare class TngTagComponent {
|
|
5
6
|
readonly appearance: import("@angular/core").InputSignal<TngTagAppearance>;
|
|
7
|
+
readonly closeAriaLabel: import("@angular/core").InputSignal<string | null>;
|
|
8
|
+
readonly disabled: import("@angular/core").InputSignalWithTransform<boolean, string | boolean>;
|
|
9
|
+
readonly label: import("@angular/core").InputSignal<string | null>;
|
|
10
|
+
readonly removable: import("@angular/core").InputSignalWithTransform<boolean, string | boolean>;
|
|
6
11
|
readonly shape: import("@angular/core").InputSignal<TngTagShape>;
|
|
12
|
+
readonly size: import("@angular/core").InputSignal<TngTagSize>;
|
|
7
13
|
readonly tone: import("@angular/core").InputSignal<TngTagTone>;
|
|
14
|
+
readonly removed: import("@angular/core").OutputEmitterRef<void>;
|
|
15
|
+
onRemoved(): void;
|
|
8
16
|
}
|
|
9
17
|
export {};
|
|
10
18
|
//# sourceMappingURL=tng-tag.component.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-tag.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/utility/tag/tng-tag.component.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tng-tag.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/utility/tag/tng-tag.component.ts"],"names":[],"mappings":"AAMA,KAAK,gBAAgB,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;AACrD,KAAK,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC;AACtC,KAAK,UAAU,GAAG,IAAI,GAAG,IAAI,CAAC;AAC9B,KAAK,UAAU,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAExE,qBAMa,eAAe;IAC1B,SAAgB,UAAU,wDAAmC;IAC7D,SAAgB,cAAc,qDAA8B;IAC5D,SAAgB,QAAQ,8EAErB;IACH,SAAgB,KAAK,qDAA8B;IACnD,SAAgB,SAAS,8EAEtB;IACH,SAAgB,KAAK,mDAA8B;IACnD,SAAgB,IAAI,kDAA2B;IAC/C,SAAgB,IAAI,kDAAgC;IAEpD,SAAgB,OAAO,iDAAkB;IAElC,SAAS,IAAI,IAAI;CAGzB"}
|
|
@@ -1,15 +1,28 @@
|
|
|
1
1
|
import { __decorate } from "tslib";
|
|
2
|
-
import { Component, input } from '@angular/core';
|
|
3
|
-
import { TngTag as TngTagPrimitive } from '@tailng-ui/primitives';
|
|
2
|
+
import { booleanAttribute, Component, input, output } from '@angular/core';
|
|
3
|
+
import { TngTag as TngTagPrimitive, TngTagClose as TngTagClosePrimitive, } from '@tailng-ui/primitives';
|
|
4
4
|
let TngTagComponent = class TngTagComponent {
|
|
5
5
|
appearance = input('soft');
|
|
6
|
+
closeAriaLabel = input(null);
|
|
7
|
+
disabled = input(false, {
|
|
8
|
+
transform: booleanAttribute,
|
|
9
|
+
});
|
|
10
|
+
label = input(null);
|
|
11
|
+
removable = input(false, {
|
|
12
|
+
transform: booleanAttribute,
|
|
13
|
+
});
|
|
6
14
|
shape = input('pill');
|
|
15
|
+
size = input('md');
|
|
7
16
|
tone = input('neutral');
|
|
17
|
+
removed = output();
|
|
18
|
+
onRemoved() {
|
|
19
|
+
this.removed.emit();
|
|
20
|
+
}
|
|
8
21
|
};
|
|
9
22
|
TngTagComponent = __decorate([
|
|
10
23
|
Component({
|
|
11
24
|
selector: 'tng-tag',
|
|
12
|
-
imports: [TngTagPrimitive],
|
|
25
|
+
imports: [TngTagPrimitive, TngTagClosePrimitive],
|
|
13
26
|
templateUrl: './tng-tag.component.html',
|
|
14
27
|
styleUrl: './tng-tag.component.css',
|
|
15
28
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-tag.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/utility/tag/tng-tag.component.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"tng-tag.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/utility/tag/tng-tag.component.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EACL,MAAM,IAAI,eAAe,EACzB,WAAW,IAAI,oBAAoB,GACpC,MAAM,uBAAuB,CAAC;AAaxB,IAAM,eAAe,GAArB,MAAM,eAAe;IACV,UAAU,GAAG,KAAK,CAAmB,MAAM,CAAC,CAAC;IAC7C,cAAc,GAAG,KAAK,CAAgB,IAAI,CAAC,CAAC;IAC5C,QAAQ,GAAG,KAAK,CAA4B,KAAK,EAAE;QACjE,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IACa,KAAK,GAAG,KAAK,CAAgB,IAAI,CAAC,CAAC;IACnC,SAAS,GAAG,KAAK,CAA4B,KAAK,EAAE;QAClE,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IACa,KAAK,GAAG,KAAK,CAAc,MAAM,CAAC,CAAC;IACnC,IAAI,GAAG,KAAK,CAAa,IAAI,CAAC,CAAC;IAC/B,IAAI,GAAG,KAAK,CAAa,SAAS,CAAC,CAAC;IAEpC,OAAO,GAAG,MAAM,EAAQ,CAAC;IAElC,SAAS;QACd,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC;CACF,CAAA;AAnBY,eAAe;IAN3B,SAAS,CAAC;QACT,QAAQ,EAAE,SAAS;QACnB,OAAO,EAAE,CAAC,eAAe,EAAE,oBAAoB,CAAC;QAChD,WAAW,EAAE,0BAA0B;QACvC,QAAQ,EAAE,yBAAyB;KACpC,CAAC;GACW,eAAe,CAmB3B","sourcesContent":["import { booleanAttribute, Component, input, output } from '@angular/core';\nimport {\n TngTag as TngTagPrimitive,\n TngTagClose as TngTagClosePrimitive,\n} from '@tailng-ui/primitives';\n\ntype TngTagAppearance = 'outline' | 'soft' | 'solid';\ntype TngTagShape = 'pill' | 'rounded';\ntype TngTagSize = 'md' | 'sm';\ntype TngTagTone = 'danger' | 'info' | 'neutral' | 'success' | 'warning';\n\n@Component({\n selector: 'tng-tag',\n imports: [TngTagPrimitive, TngTagClosePrimitive],\n templateUrl: './tng-tag.component.html',\n styleUrl: './tng-tag.component.css',\n})\nexport class TngTagComponent {\n public readonly appearance = input<TngTagAppearance>('soft');\n public readonly closeAriaLabel = input<string | null>(null);\n public readonly disabled = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly label = input<string | null>(null);\n public readonly removable = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly shape = input<TngTagShape>('pill');\n public readonly size = input<TngTagSize>('md');\n public readonly tone = input<TngTagTone>('neutral');\n\n public readonly removed = output<void>();\n\n public onRemoved(): void {\n this.removed.emit();\n }\n}\n"]}
|