@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.
Files changed (99) hide show
  1. package/package.json +9 -3
  2. package/src/index.d.ts +5 -0
  3. package/src/index.d.ts.map +1 -1
  4. package/src/index.js +5 -0
  5. package/src/index.js.map +1 -1
  6. package/src/lib/feedback/progress-bar/tng-progress-bar.d.ts.map +1 -1
  7. package/src/lib/feedback/progress-bar/tng-progress-bar.js +2 -1
  8. package/src/lib/feedback/progress-bar/tng-progress-bar.js.map +1 -1
  9. package/src/lib/feedback/progress-spinner/tng-progress-spinner.d.ts.map +1 -1
  10. package/src/lib/feedback/progress-spinner/tng-progress-spinner.js +2 -1
  11. package/src/lib/feedback/progress-spinner/tng-progress-spinner.js.map +1 -1
  12. package/src/lib/feedback/skeleton/tng-skeleton.d.ts +1 -0
  13. package/src/lib/feedback/skeleton/tng-skeleton.d.ts.map +1 -1
  14. package/src/lib/feedback/skeleton/tng-skeleton.js +4 -0
  15. package/src/lib/feedback/skeleton/tng-skeleton.js.map +1 -1
  16. package/src/lib/form/chips/tng-chips.d.ts +53 -1
  17. package/src/lib/form/chips/tng-chips.d.ts.map +1 -1
  18. package/src/lib/form/chips/tng-chips.js +281 -1
  19. package/src/lib/form/chips/tng-chips.js.map +1 -1
  20. package/src/lib/form/input-otp/tng-input-otp.d.ts +22 -0
  21. package/src/lib/form/input-otp/tng-input-otp.d.ts.map +1 -1
  22. package/src/lib/form/input-otp/tng-input-otp.js +105 -1
  23. package/src/lib/form/input-otp/tng-input-otp.js.map +1 -1
  24. package/src/lib/form/label/tng-label.d.ts +2 -0
  25. package/src/lib/form/label/tng-label.d.ts.map +1 -1
  26. package/src/lib/form/label/tng-label.js +9 -0
  27. package/src/lib/form/label/tng-label.js.map +1 -1
  28. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.trigger.d.ts +1 -0
  29. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.trigger.d.ts.map +1 -1
  30. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.trigger.js +26 -0
  31. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.trigger.js.map +1 -1
  32. package/src/lib/form/radio/tng-radio.d.ts +26 -0
  33. package/src/lib/form/radio/tng-radio.d.ts.map +1 -1
  34. package/src/lib/form/radio/tng-radio.js +129 -1
  35. package/src/lib/form/radio/tng-radio.js.map +1 -1
  36. package/src/lib/form/textarea/tng-textarea.d.ts +6 -14
  37. package/src/lib/form/textarea/tng-textarea.d.ts.map +1 -1
  38. package/src/lib/form/textarea/tng-textarea.js +42 -85
  39. package/src/lib/form/textarea/tng-textarea.js.map +1 -1
  40. package/src/lib/layout/accordion/tng-accordion.d.ts +9 -0
  41. package/src/lib/layout/accordion/tng-accordion.d.ts.map +1 -1
  42. package/src/lib/layout/accordion/tng-accordion.js +113 -0
  43. package/src/lib/layout/accordion/tng-accordion.js.map +1 -1
  44. package/src/lib/layout/tree/__tests__/tng-tree.test-harness.d.ts +20 -0
  45. package/src/lib/layout/tree/__tests__/tng-tree.test-harness.d.ts.map +1 -0
  46. package/src/lib/layout/tree/__tests__/tng-tree.test-harness.js +106 -0
  47. package/src/lib/layout/tree/__tests__/tng-tree.test-harness.js.map +1 -0
  48. package/src/lib/layout/tree/index.d.ts +5 -0
  49. package/src/lib/layout/tree/index.d.ts.map +1 -0
  50. package/src/lib/layout/tree/index.js +5 -0
  51. package/src/lib/layout/tree/index.js.map +1 -0
  52. package/src/lib/layout/tree/tng-tree-group.d.ts +10 -0
  53. package/src/lib/layout/tree/tng-tree-group.d.ts.map +1 -0
  54. package/src/lib/layout/tree/tng-tree-group.js +29 -0
  55. package/src/lib/layout/tree/tng-tree-group.js.map +1 -0
  56. package/src/lib/layout/tree/tng-tree-indicator.d.ts +8 -0
  57. package/src/lib/layout/tree/tng-tree-indicator.d.ts.map +1 -0
  58. package/src/lib/layout/tree/tng-tree-indicator.js +36 -0
  59. package/src/lib/layout/tree/tng-tree-indicator.js.map +1 -0
  60. package/src/lib/layout/tree/tng-tree-item.d.ts +36 -0
  61. package/src/lib/layout/tree/tng-tree-item.d.ts.map +1 -0
  62. package/src/lib/layout/tree/tng-tree-item.js +139 -0
  63. package/src/lib/layout/tree/tng-tree-item.js.map +1 -0
  64. package/src/lib/layout/tree/tng-tree.d.ts +64 -1
  65. package/src/lib/layout/tree/tng-tree.d.ts.map +1 -1
  66. package/src/lib/layout/tree/tng-tree.js +536 -1
  67. package/src/lib/layout/tree/tng-tree.js.map +1 -1
  68. package/src/lib/layout/tree/tng-tree.transforms.d.ts +10 -0
  69. package/src/lib/layout/tree/tng-tree.transforms.d.ts.map +1 -0
  70. package/src/lib/layout/tree/tng-tree.transforms.js +46 -0
  71. package/src/lib/layout/tree/tng-tree.transforms.js.map +1 -0
  72. package/src/lib/overlay/dialog/tng-dialog.d.ts +158 -0
  73. package/src/lib/overlay/dialog/tng-dialog.d.ts.map +1 -0
  74. package/src/lib/overlay/dialog/tng-dialog.js +854 -0
  75. package/src/lib/overlay/dialog/tng-dialog.js.map +1 -0
  76. package/src/lib/overlay/popover/tng-popover.d.ts +121 -0
  77. package/src/lib/overlay/popover/tng-popover.d.ts.map +1 -0
  78. package/src/lib/overlay/popover/tng-popover.js +614 -0
  79. package/src/lib/overlay/popover/tng-popover.js.map +1 -0
  80. package/src/lib/overlay/tng-overlay-runtime.d.ts +11 -0
  81. package/src/lib/overlay/tng-overlay-runtime.d.ts.map +1 -0
  82. package/src/lib/overlay/tng-overlay-runtime.js +6 -0
  83. package/src/lib/overlay/tng-overlay-runtime.js.map +1 -0
  84. package/src/lib/overlay/tooltip/tng-tooltip.d.ts +92 -3
  85. package/src/lib/overlay/tooltip/tng-tooltip.d.ts.map +1 -1
  86. package/src/lib/overlay/tooltip/tng-tooltip.js +474 -3
  87. package/src/lib/overlay/tooltip/tng-tooltip.js.map +1 -1
  88. package/src/lib/utility/badge/tng-badge.d.ts +6 -0
  89. package/src/lib/utility/badge/tng-badge.d.ts.map +1 -1
  90. package/src/lib/utility/badge/tng-badge.js +65 -0
  91. package/src/lib/utility/badge/tng-badge.js.map +1 -1
  92. package/src/lib/utility/copy/tng-copy.d.ts +21 -10
  93. package/src/lib/utility/copy/tng-copy.d.ts.map +1 -1
  94. package/src/lib/utility/copy/tng-copy.js +117 -88
  95. package/src/lib/utility/copy/tng-copy.js.map +1 -1
  96. package/src/lib/utility/tag/tng-tag.d.ts +37 -0
  97. package/src/lib/utility/tag/tng-tag.d.ts.map +1 -1
  98. package/src/lib/utility/tag/tng-tag.js +195 -1
  99. package/src/lib/utility/tag/tng-tag.js.map +1 -1
@@ -0,0 +1,29 @@
1
+ import { __decorate } from "tslib";
2
+ import { Directive, HostBinding, inject, } from '@angular/core';
3
+ import { TngTreeItem } from './tng-tree-item';
4
+ let TngTreeGroup = class TngTreeGroup {
5
+ parentItem = inject(TngTreeItem, { optional: true, skipSelf: true });
6
+ dataSlot = 'tree-group';
7
+ role = 'group';
8
+ ngOnInit() {
9
+ this.parentItem?.registerChildGroup();
10
+ }
11
+ ngOnDestroy() {
12
+ this.parentItem?.unregisterChildGroup();
13
+ }
14
+ };
15
+ __decorate([
16
+ HostBinding('attr.data-slot')
17
+ ], TngTreeGroup.prototype, "dataSlot", void 0);
18
+ __decorate([
19
+ HostBinding('attr.role')
20
+ ], TngTreeGroup.prototype, "role", void 0);
21
+ TngTreeGroup = __decorate([
22
+ Directive({
23
+ selector: '[tngTreeGroup]',
24
+ exportAs: 'tngTreeGroup',
25
+ standalone: true,
26
+ })
27
+ ], TngTreeGroup);
28
+ export { TngTreeGroup };
29
+ //# sourceMappingURL=tng-tree-group.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tng-tree-group.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/layout/tree/tng-tree-group.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,SAAS,EAET,WAAW,EACX,MAAM,GAGP,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAOvC,IAAM,YAAY,GAAlB,MAAM,YAAY;IACP,UAAU,GAAG,MAAM,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAGlE,QAAQ,GAAG,YAAqB,CAAC;IAGjC,IAAI,GAAG,OAAgB,CAAC;IAE3C,QAAQ;QACN,IAAI,CAAC,UAAU,EAAE,kBAAkB,EAAE,CAAC;IACxC,CAAC;IAED,WAAW;QACT,IAAI,CAAC,UAAU,EAAE,oBAAoB,EAAE,CAAC;IAC1C,CAAC;CACF,CAAA;AAZoB;IADlB,WAAW,CAAC,gBAAgB,CAAC;8CACsB;AAGjC;IADlB,WAAW,CAAC,WAAW,CAAC;0CACkB;AAPhC,YAAY;IALxB,SAAS,CAAC;QACT,QAAQ,EAAE,gBAAgB;QAC1B,QAAQ,EAAE,cAAc;QACxB,UAAU,EAAE,IAAI;KACjB,CAAC;GACW,YAAY,CAgBxB","sourcesContent":["import {\n Directive,\n ElementRef,\n HostBinding,\n inject,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { TngTreeItem } from './tng-tree-item';\n\n@Directive({\n selector: '[tngTreeGroup]',\n exportAs: 'tngTreeGroup',\n standalone: true,\n})\nexport class TngTreeGroup implements OnInit, OnDestroy {\n public readonly parentItem = inject(TngTreeItem, { optional: true, skipSelf: true });\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'tree-group' as const;\n\n @HostBinding('attr.role')\n protected readonly role = 'group' as const;\n\n ngOnInit(): void {\n this.parentItem?.registerChildGroup();\n }\n\n ngOnDestroy(): void {\n this.parentItem?.unregisterChildGroup();\n }\n}\n"]}
@@ -0,0 +1,8 @@
1
+ export declare class TngTreeIndicator {
2
+ private readonly item;
3
+ private readonly tree;
4
+ protected readonly dataSlot: "tree-indicator";
5
+ protected get dataExpanded(): 'true' | 'false';
6
+ protected onClick(event: MouseEvent): void;
7
+ }
8
+ //# sourceMappingURL=tng-tree-indicator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tng-tree-indicator.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/layout/tree/tng-tree-indicator.ts"],"names":[],"mappings":"AASA,qBAKa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA2C;IAChE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAuC;IAG5D,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,gBAAgB,CAAU;IAGxD,SAAS,KAAK,YAAY,IAAI,MAAM,GAAG,OAAO,CAE7C;IAGD,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;CAM3C"}
@@ -0,0 +1,36 @@
1
+ import { __decorate } from "tslib";
2
+ import { Directive, HostBinding, HostListener, inject, } from '@angular/core';
3
+ import { TngTree } from './tng-tree';
4
+ import { TngTreeItem } from './tng-tree-item';
5
+ let TngTreeIndicator = class TngTreeIndicator {
6
+ item = inject(TngTreeItem, { optional: true });
7
+ tree = inject(TngTree, { optional: true });
8
+ dataSlot = 'tree-indicator';
9
+ get dataExpanded() {
10
+ return this.item?.isExpanded() ? 'true' : 'false';
11
+ }
12
+ onClick(event) {
13
+ event.stopPropagation();
14
+ if (this.item && this.tree) {
15
+ this.tree.onIndicatorClicked(this.item);
16
+ }
17
+ }
18
+ };
19
+ __decorate([
20
+ HostBinding('attr.data-slot')
21
+ ], TngTreeIndicator.prototype, "dataSlot", void 0);
22
+ __decorate([
23
+ HostBinding('attr.data-expanded')
24
+ ], TngTreeIndicator.prototype, "dataExpanded", null);
25
+ __decorate([
26
+ HostListener('click', ['$event'])
27
+ ], TngTreeIndicator.prototype, "onClick", null);
28
+ TngTreeIndicator = __decorate([
29
+ Directive({
30
+ selector: '[tngTreeIndicator]',
31
+ exportAs: 'tngTreeIndicator',
32
+ standalone: true,
33
+ })
34
+ ], TngTreeIndicator);
35
+ export { TngTreeIndicator };
36
+ //# sourceMappingURL=tng-tree-indicator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tng-tree-indicator.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/layout/tree/tng-tree-indicator.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,SAAS,EACT,WAAW,EACX,YAAY,EACZ,MAAM,GACP,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAOvC,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IACV,IAAI,GAAG,MAAM,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,IAAI,GAAG,MAAM,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAGzC,QAAQ,GAAG,gBAAyB,CAAC;IAGxD,IAAc,YAAY;QACxB,OAAO,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IACpD,CAAC;IAGS,OAAO,CAAC,KAAiB;QACjC,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;CACF,CAAA;AAdoB;IADlB,WAAW,CAAC,gBAAgB,CAAC;kDAC0B;AAGxD;IADC,WAAW,CAAC,oBAAoB,CAAC;oDAGjC;AAGS;IADT,YAAY,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC;+CAMjC;AAlBU,gBAAgB;IAL5B,SAAS,CAAC;QACT,QAAQ,EAAE,oBAAoB;QAC9B,QAAQ,EAAE,kBAAkB;QAC5B,UAAU,EAAE,IAAI;KACjB,CAAC;GACW,gBAAgB,CAmB5B","sourcesContent":["import {\n Directive,\n HostBinding,\n HostListener,\n inject,\n} from '@angular/core';\nimport { TngTree } from './tng-tree';\nimport { TngTreeItem } from './tng-tree-item';\n\n@Directive({\n selector: '[tngTreeIndicator]',\n exportAs: 'tngTreeIndicator',\n standalone: true,\n})\nexport class TngTreeIndicator {\n private readonly item = inject(TngTreeItem, { optional: true });\n private readonly tree = inject(TngTree, { optional: true });\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'tree-indicator' as const;\n\n @HostBinding('attr.data-expanded')\n protected get dataExpanded(): 'true' | 'false' {\n return this.item?.isExpanded() ? 'true' : 'false';\n }\n\n @HostListener('click', ['$event'])\n protected onClick(event: MouseEvent): void {\n event.stopPropagation();\n if (this.item && this.tree) {\n this.tree.onIndicatorClicked(this.item);\n }\n }\n}\n"]}
@@ -0,0 +1,36 @@
1
+ import type { OnInit, OnDestroy } from '@angular/core';
2
+ import { type TngTreeValue } from './tng-tree.transforms';
3
+ export declare class TngTreeItem implements OnInit, OnDestroy {
4
+ private readonly hostRef;
5
+ private readonly tree;
6
+ private readonly parentGroup;
7
+ readonly value: import("@angular/core").InputSignalWithTransform<TngTreeValue, unknown>;
8
+ readonly expanded: import("@angular/core").InputSignalWithTransform<boolean | undefined, unknown>;
9
+ readonly defaultExpanded: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
10
+ readonly disabled: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
11
+ readonly expandedChange: import("@angular/core").OutputEmitterRef<boolean>;
12
+ private uncontrolledExpanded;
13
+ private hasChildrenStatus;
14
+ protected readonly dataSlot: "tree-item";
15
+ protected readonly role: "treeitem";
16
+ protected get ariaSelected(): string | null;
17
+ protected get ariaExpanded(): string | null;
18
+ protected get tabIndex(): string;
19
+ protected get dataExpanded(): 'true' | 'false';
20
+ protected get dataSelected(): 'true' | 'false';
21
+ protected get dataDisabled(): 'true' | 'false';
22
+ ngOnInit(): void;
23
+ ngOnDestroy(): void;
24
+ getValue(): TngTreeValue;
25
+ getHostElement(): HTMLElement;
26
+ getParentItem(): TngTreeItem | null;
27
+ isExpanded(): boolean;
28
+ setExpanded(expanded: boolean): void;
29
+ canExpand(): boolean;
30
+ registerChildGroup(): void;
31
+ unregisterChildGroup(): void;
32
+ protected onFocus(): void;
33
+ protected onClick(event: MouseEvent): void;
34
+ focusHost(): void;
35
+ }
36
+ //# sourceMappingURL=tng-tree-item.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tng-tree-item.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/layout/tree/tng-tree-item.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAGvD,OAAO,EAIL,KAAK,YAAY,EAClB,MAAM,uBAAuB,CAAC;AAE/B,qBAKa,WAAY,YAAW,MAAM,EAAE,SAAS;IACnD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+C;IACvE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAuC;IAC5D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA0H;IAEtJ,SAAgB,KAAK,0EAElB;IAEH,SAAgB,QAAQ,iFAErB;IAEH,SAAgB,eAAe,qEAE5B;IAEH,SAAgB,QAAQ,qEAErB;IAEH,SAAgB,cAAc,oDAAqB;IAEnD,OAAO,CAAC,oBAAoB,CAAS;IACrC,OAAO,CAAC,iBAAiB,CAAS;IAGlC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,WAAW,CAAU;IAGnD,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAG,UAAU,CAAU;IAG9C,SAAS,KAAK,YAAY,IAAI,MAAM,GAAG,IAAI,CAG1C;IAGD,SAAS,KAAK,YAAY,IAAI,MAAM,GAAG,IAAI,CAG1C;IAGD,SAAS,KAAK,QAAQ,IAAI,MAAM,CAE/B;IAGD,SAAS,KAAK,YAAY,IAAI,MAAM,GAAG,OAAO,CAE7C;IAGD,SAAS,KAAK,YAAY,IAAI,MAAM,GAAG,OAAO,CAG7C;IAGD,SAAS,KAAK,YAAY,IAAI,MAAM,GAAG,OAAO,CAE7C;IAEM,QAAQ,IAAI,IAAI;IAOhB,WAAW,IAAI,IAAI;IAInB,QAAQ,IAAI,YAAY;IAIxB,cAAc,IAAI,WAAW;IAI7B,aAAa,IAAI,WAAW,GAAG,IAAI;IAInC,UAAU,IAAI,OAAO;IAIrB,WAAW,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI;IAQpC,SAAS,IAAI,OAAO;IAIpB,kBAAkB,IAAI,IAAI;IAI1B,oBAAoB,IAAI,IAAI;IAKnC,SAAS,CAAC,OAAO,IAAI,IAAI;IAKzB,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAMnC,SAAS,IAAI,IAAI;CAGzB"}
@@ -0,0 +1,139 @@
1
+ import { __decorate } from "tslib";
2
+ import { Directive, ElementRef, HostBinding, HostListener, inject, input, output, forwardRef, } from '@angular/core';
3
+ import { TngTree } from './tng-tree';
4
+ import { TngTreeGroup } from './tng-tree-group';
5
+ import { normalizeOptionalBooleanAttribute, normalizeTreeBooleanInput, normalizeTreeValue, } from './tng-tree.transforms';
6
+ let TngTreeItem = class TngTreeItem {
7
+ hostRef = inject(ElementRef);
8
+ tree = inject(TngTree, { optional: true });
9
+ parentGroup = inject(forwardRef(() => TngTreeGroup), { optional: true, skipSelf: true });
10
+ value = input.required({
11
+ transform: normalizeTreeValue,
12
+ });
13
+ expanded = input(undefined, {
14
+ transform: normalizeOptionalBooleanAttribute,
15
+ });
16
+ defaultExpanded = input(false, {
17
+ transform: normalizeTreeBooleanInput,
18
+ });
19
+ disabled = input(false, {
20
+ transform: normalizeTreeBooleanInput,
21
+ });
22
+ expandedChange = output();
23
+ uncontrolledExpanded = false;
24
+ hasChildrenStatus = false;
25
+ dataSlot = 'tree-item';
26
+ role = 'treeitem';
27
+ get ariaSelected() {
28
+ if (!this.tree || this.tree.selectionMode() === 'none')
29
+ return null;
30
+ return this.tree.isItemSelected(this) ? 'true' : 'false';
31
+ }
32
+ get ariaExpanded() {
33
+ if (!this.canExpand())
34
+ return null;
35
+ return this.isExpanded() ? 'true' : 'false';
36
+ }
37
+ get tabIndex() {
38
+ return this.tree ? this.tree.getTriggerTabIndex(this) : '-1';
39
+ }
40
+ get dataExpanded() {
41
+ return this.isExpanded() ? 'true' : 'false';
42
+ }
43
+ get dataSelected() {
44
+ if (!this.tree || this.tree.selectionMode() === 'none')
45
+ return 'false';
46
+ return this.tree.isItemSelected(this) ? 'true' : 'false';
47
+ }
48
+ get dataDisabled() {
49
+ return this.tree?.isItemDisabled(this) ? 'true' : 'false';
50
+ }
51
+ ngOnInit() {
52
+ if (this.expanded() === undefined) {
53
+ this.uncontrolledExpanded = this.defaultExpanded();
54
+ }
55
+ this.tree?.registerItem(this);
56
+ }
57
+ ngOnDestroy() {
58
+ this.tree?.unregisterItem(this);
59
+ }
60
+ getValue() {
61
+ return this.value();
62
+ }
63
+ getHostElement() {
64
+ return this.hostRef.nativeElement;
65
+ }
66
+ getParentItem() {
67
+ return this.parentGroup?.parentItem ?? null;
68
+ }
69
+ isExpanded() {
70
+ return this.expanded() ?? this.uncontrolledExpanded;
71
+ }
72
+ setExpanded(expanded) {
73
+ if (this.disabled())
74
+ return;
75
+ if (this.expanded() === undefined) {
76
+ this.uncontrolledExpanded = expanded;
77
+ }
78
+ this.expandedChange.emit(expanded);
79
+ }
80
+ canExpand() {
81
+ return this.hasChildrenStatus || this.expanded() !== undefined || this.defaultExpanded();
82
+ }
83
+ registerChildGroup() {
84
+ this.hasChildrenStatus = true;
85
+ }
86
+ unregisterChildGroup() {
87
+ this.hasChildrenStatus = false;
88
+ }
89
+ onFocus() {
90
+ this.tree?.onItemFocused(this);
91
+ }
92
+ onClick(event) {
93
+ event.stopPropagation();
94
+ this.tree?.onItemClicked(this);
95
+ this.focusHost(); // Ensure it receives focus mentally on click
96
+ }
97
+ focusHost() {
98
+ this.hostRef.nativeElement.focus();
99
+ }
100
+ };
101
+ __decorate([
102
+ HostBinding('attr.data-slot')
103
+ ], TngTreeItem.prototype, "dataSlot", void 0);
104
+ __decorate([
105
+ HostBinding('attr.role')
106
+ ], TngTreeItem.prototype, "role", void 0);
107
+ __decorate([
108
+ HostBinding('attr.aria-selected')
109
+ ], TngTreeItem.prototype, "ariaSelected", null);
110
+ __decorate([
111
+ HostBinding('attr.aria-expanded')
112
+ ], TngTreeItem.prototype, "ariaExpanded", null);
113
+ __decorate([
114
+ HostBinding('attr.tabindex')
115
+ ], TngTreeItem.prototype, "tabIndex", null);
116
+ __decorate([
117
+ HostBinding('attr.data-expanded')
118
+ ], TngTreeItem.prototype, "dataExpanded", null);
119
+ __decorate([
120
+ HostBinding('attr.data-selected')
121
+ ], TngTreeItem.prototype, "dataSelected", null);
122
+ __decorate([
123
+ HostBinding('attr.data-disabled')
124
+ ], TngTreeItem.prototype, "dataDisabled", null);
125
+ __decorate([
126
+ HostListener('focus')
127
+ ], TngTreeItem.prototype, "onFocus", null);
128
+ __decorate([
129
+ HostListener('click', ['$event'])
130
+ ], TngTreeItem.prototype, "onClick", null);
131
+ TngTreeItem = __decorate([
132
+ Directive({
133
+ selector: '[tngTreeItem]',
134
+ exportAs: 'tngTreeItem',
135
+ standalone: true,
136
+ })
137
+ ], TngTreeItem);
138
+ export { TngTreeItem };
139
+ //# sourceMappingURL=tng-tree-item.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tng-tree-item.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/layout/tree/tng-tree-item.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Directive,\n ElementRef,\n HostBinding,\n HostListener,\n inject,\n input,\n output,\n forwardRef,\n} from '@angular/core';\nimport type { OnInit, OnDestroy } from '@angular/core';\nimport { TngTree } from './tng-tree';\nimport { TngTreeGroup } from './tng-tree-group';\nimport {\n normalizeOptionalBooleanAttribute,\n normalizeTreeBooleanInput,\n normalizeTreeValue,\n type TngTreeValue,\n} from './tng-tree.transforms';\n\n@Directive({\n selector: '[tngTreeItem]',\n exportAs: 'tngTreeItem',\n standalone: true,\n})\nexport class TngTreeItem implements OnInit, OnDestroy {\n private readonly hostRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly tree = inject(TngTree, { optional: true });\n private readonly parentGroup: TngTreeGroup | null = inject(forwardRef(() => TngTreeGroup), { optional: true, skipSelf: true }) as TngTreeGroup | null;\n\n public readonly value = input.required<TngTreeValue, unknown>({\n transform: normalizeTreeValue,\n });\n \n public readonly expanded = input<boolean, unknown>(undefined, {\n transform: normalizeOptionalBooleanAttribute,\n });\n \n public readonly defaultExpanded = input<boolean, unknown>(false, {\n transform: normalizeTreeBooleanInput,\n });\n \n public readonly disabled = input<boolean, unknown>(false, {\n transform: normalizeTreeBooleanInput,\n });\n\n public readonly expandedChange = output<boolean>();\n\n private uncontrolledExpanded = false;\n private hasChildrenStatus = false;\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'tree-item' as const;\n\n @HostBinding('attr.role')\n protected readonly role = 'treeitem' as const;\n\n @HostBinding('attr.aria-selected')\n protected get ariaSelected(): string | null {\n if (!this.tree || this.tree.selectionMode() === 'none') return null;\n return this.tree.isItemSelected(this) ? 'true' : 'false';\n }\n\n @HostBinding('attr.aria-expanded')\n protected get ariaExpanded(): string | null {\n if (!this.canExpand()) return null;\n return this.isExpanded() ? 'true' : 'false';\n }\n\n @HostBinding('attr.tabindex')\n protected get tabIndex(): string {\n return this.tree ? this.tree.getTriggerTabIndex(this) : '-1';\n }\n\n @HostBinding('attr.data-expanded')\n protected get dataExpanded(): 'true' | 'false' {\n return this.isExpanded() ? 'true' : 'false';\n }\n\n @HostBinding('attr.data-selected')\n protected get dataSelected(): 'true' | 'false' {\n if (!this.tree || this.tree.selectionMode() === 'none') return 'false';\n return this.tree.isItemSelected(this) ? 'true' : 'false';\n }\n\n @HostBinding('attr.data-disabled')\n protected get dataDisabled(): 'true' | 'false' {\n return this.tree?.isItemDisabled(this) ? 'true' : 'false';\n }\n\n public ngOnInit(): void {\n if (this.expanded() === undefined) {\n this.uncontrolledExpanded = this.defaultExpanded();\n }\n this.tree?.registerItem(this);\n }\n\n public ngOnDestroy(): void {\n this.tree?.unregisterItem(this);\n }\n\n public getValue(): TngTreeValue {\n return this.value();\n }\n\n public getHostElement(): HTMLElement {\n return this.hostRef.nativeElement;\n }\n\n public getParentItem(): TngTreeItem | null {\n return this.parentGroup?.parentItem ?? null;\n }\n\n public isExpanded(): boolean {\n return this.expanded() ?? this.uncontrolledExpanded;\n }\n\n public setExpanded(expanded: boolean): void {\n if (this.disabled()) return;\n if (this.expanded() === undefined) {\n this.uncontrolledExpanded = expanded;\n }\n this.expandedChange.emit(expanded);\n }\n\n public canExpand(): boolean {\n return this.hasChildrenStatus || this.expanded() !== undefined || this.defaultExpanded();\n }\n\n public registerChildGroup(): void {\n this.hasChildrenStatus = true;\n }\n\n public unregisterChildGroup(): void {\n this.hasChildrenStatus = false;\n }\n\n @HostListener('focus')\n protected onFocus(): void {\n this.tree?.onItemFocused(this);\n }\n\n @HostListener('click', ['$event'])\n protected onClick(event: MouseEvent): void {\n event.stopPropagation();\n this.tree?.onItemClicked(this);\n this.focusHost(); // Ensure it receives focus mentally on click\n }\n\n public focusHost(): void {\n this.hostRef.nativeElement.focus();\n }\n}\n"]}
@@ -1,4 +1,67 @@
1
- export declare class TngTree {
1
+ import { OnDestroy } from '@angular/core';
2
+ import { TngTreeItem } from './tng-tree-item';
3
+ import { type TngTreeOrientation, type TngTreeSelectionMode, type TngTreeValue } from './tng-tree.transforms';
4
+ export type { TngTreeOrientation, TngTreeSelectionMode, TngTreeValue } from './tng-tree.transforms';
5
+ export declare class TngTree implements OnDestroy {
6
+ private readonly hostRef;
7
+ private readonly items;
8
+ private readonly modelIdByItem;
9
+ private readonly emptyModelNodes;
10
+ private readonly emptyTypeaheadItems;
11
+ private model;
12
+ private modelState;
13
+ private readonly roving;
14
+ private readonly typeahead;
15
+ private itemByModelId;
16
+ private childModelIdsByParentId;
17
+ private nextModelId;
18
+ private uncontrolledSelection;
19
+ private initialized;
20
+ readonly selectionMode: import("@angular/core").InputSignalWithTransform<TngTreeSelectionMode, unknown>;
21
+ readonly orientation: import("@angular/core").InputSignalWithTransform<TngTreeOrientation, unknown>;
22
+ readonly value: import("@angular/core").InputSignalWithTransform<TngTreeValue | readonly TngTreeValue[] | null | undefined, unknown>;
23
+ readonly defaultValue: import("@angular/core").InputSignalWithTransform<TngTreeValue | readonly TngTreeValue[] | null | undefined, unknown>;
24
+ readonly disabled: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
25
+ readonly valueChange: import("@angular/core").OutputEmitterRef<TngTreeValue | readonly TngTreeValue[] | null>;
2
26
  protected readonly dataSlot: "tree";
27
+ protected readonly role: "tree";
28
+ protected get ariaOrientation(): string;
29
+ protected get ariaMultiselectable(): string | null;
30
+ protected get tabIndex(): string;
31
+ ngOnDestroy(): void;
32
+ registerItem(item: TngTreeItem): void;
33
+ unregisterItem(item: TngTreeItem): void;
34
+ isItemSelected(item: TngTreeItem): boolean;
35
+ isItemDisabled(item: TngTreeItem): boolean;
36
+ getTriggerTabIndex(item: TngTreeItem): string;
37
+ onItemFocused(item: TngTreeItem): void;
38
+ onItemClicked(item: TngTreeItem): void;
39
+ onIndicatorClicked(item: TngTreeItem): void;
40
+ private isControlled;
41
+ private initializeUncontrolledState;
42
+ private getEffectiveSelectionSet;
43
+ private requestToggleSelection;
44
+ protected onHostKeydown(event: KeyboardEvent): void;
45
+ protected onHostFocus(): void;
46
+ private applyModelState;
47
+ private ensureModelId;
48
+ private resolveModelId;
49
+ private resolveActiveItem;
50
+ private resolveItemByModelId;
51
+ private focusBoundaryItem;
52
+ private focusActiveItem;
53
+ private focusItem;
54
+ private resolveFirstVisibleEnabledChild;
55
+ private resolveTypeaheadItems;
56
+ private resolveDisabledVisibleIds;
57
+ private resolveTypeaheadText;
58
+ private handleTypeaheadKey;
59
+ private runHorizontalKeyAction;
60
+ private runResolvedNavigationAction;
61
+ private expandOrMoveToChild;
62
+ private collapseOrMoveToParent;
63
+ private rebuildModel;
64
+ private buildOrderedModelItems;
65
+ private resolvePreferredActiveId;
3
66
  }
4
67
  //# sourceMappingURL=tng-tree.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tng-tree.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/layout/tree/tng-tree.ts"],"names":[],"mappings":"AAEA,qBAIa,OAAO;IAElB,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,MAAM,CAAU;CAC/C"}
1
+ {"version":3,"file":"tng-tree.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/layout/tree/tng-tree.ts"],"names":[],"mappings":"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"}