@cdevhub/ngx-tw 0.2.1 → 0.3.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 (139) hide show
  1. package/README.md +264 -49
  2. package/fesm2022/cdevhub-ngx-tw-accordion.mjs +11 -7
  3. package/fesm2022/cdevhub-ngx-tw-accordion.mjs.map +1 -1
  4. package/fesm2022/cdevhub-ngx-tw-alert.mjs +43 -29
  5. package/fesm2022/cdevhub-ngx-tw-alert.mjs.map +1 -1
  6. package/fesm2022/cdevhub-ngx-tw-aspect-ratio.mjs +103 -0
  7. package/fesm2022/cdevhub-ngx-tw-aspect-ratio.mjs.map +1 -0
  8. package/fesm2022/cdevhub-ngx-tw-avatar.mjs +56 -31
  9. package/fesm2022/cdevhub-ngx-tw-avatar.mjs.map +1 -1
  10. package/fesm2022/cdevhub-ngx-tw-badge.mjs +61 -35
  11. package/fesm2022/cdevhub-ngx-tw-badge.mjs.map +1 -1
  12. package/fesm2022/cdevhub-ngx-tw-breadcrumbs.mjs +154 -93
  13. package/fesm2022/cdevhub-ngx-tw-breadcrumbs.mjs.map +1 -1
  14. package/fesm2022/cdevhub-ngx-tw-button.mjs +24 -15
  15. package/fesm2022/cdevhub-ngx-tw-button.mjs.map +1 -1
  16. package/fesm2022/cdevhub-ngx-tw-calendar-luxon.mjs +3 -3
  17. package/fesm2022/cdevhub-ngx-tw-calendar-luxon.mjs.map +1 -1
  18. package/fesm2022/cdevhub-ngx-tw-calendar.mjs +408 -215
  19. package/fesm2022/cdevhub-ngx-tw-calendar.mjs.map +1 -1
  20. package/fesm2022/cdevhub-ngx-tw-card.mjs +33 -24
  21. package/fesm2022/cdevhub-ngx-tw-card.mjs.map +1 -1
  22. package/fesm2022/cdevhub-ngx-tw-carousel.mjs +144 -79
  23. package/fesm2022/cdevhub-ngx-tw-carousel.mjs.map +1 -1
  24. package/fesm2022/cdevhub-ngx-tw-checkbox.mjs +99 -47
  25. package/fesm2022/cdevhub-ngx-tw-checkbox.mjs.map +1 -1
  26. package/fesm2022/cdevhub-ngx-tw-code-block.mjs +34 -20
  27. package/fesm2022/cdevhub-ngx-tw-code-block.mjs.map +1 -1
  28. package/fesm2022/cdevhub-ngx-tw-collapsible.mjs +46 -29
  29. package/fesm2022/cdevhub-ngx-tw-collapsible.mjs.map +1 -1
  30. package/fesm2022/cdevhub-ngx-tw-combobox.mjs +195 -110
  31. package/fesm2022/cdevhub-ngx-tw-combobox.mjs.map +1 -1
  32. package/fesm2022/cdevhub-ngx-tw-command-palette.mjs +140 -73
  33. package/fesm2022/cdevhub-ngx-tw-command-palette.mjs.map +1 -1
  34. package/fesm2022/cdevhub-ngx-tw-core.mjs +16 -11
  35. package/fesm2022/cdevhub-ngx-tw-core.mjs.map +1 -1
  36. package/fesm2022/cdevhub-ngx-tw-date-picker.mjs +393 -149
  37. package/fesm2022/cdevhub-ngx-tw-date-picker.mjs.map +1 -1
  38. package/fesm2022/cdevhub-ngx-tw-date-range-picker.mjs +305 -150
  39. package/fesm2022/cdevhub-ngx-tw-date-range-picker.mjs.map +1 -1
  40. package/fesm2022/cdevhub-ngx-tw-dialog.mjs +56 -43
  41. package/fesm2022/cdevhub-ngx-tw-dialog.mjs.map +1 -1
  42. package/fesm2022/cdevhub-ngx-tw-empty-state.mjs +51 -33
  43. package/fesm2022/cdevhub-ngx-tw-empty-state.mjs.map +1 -1
  44. package/fesm2022/cdevhub-ngx-tw-file-upload.mjs +905 -0
  45. package/fesm2022/cdevhub-ngx-tw-file-upload.mjs.map +1 -0
  46. package/fesm2022/cdevhub-ngx-tw-flip-card.mjs +49 -26
  47. package/fesm2022/cdevhub-ngx-tw-flip-card.mjs.map +1 -1
  48. package/fesm2022/cdevhub-ngx-tw-form-field.mjs +133 -74
  49. package/fesm2022/cdevhub-ngx-tw-form-field.mjs.map +1 -1
  50. package/fesm2022/cdevhub-ngx-tw-icon-lucide.mjs +2 -2
  51. package/fesm2022/cdevhub-ngx-tw-icon-lucide.mjs.map +1 -1
  52. package/fesm2022/cdevhub-ngx-tw-icon.mjs +28 -17
  53. package/fesm2022/cdevhub-ngx-tw-icon.mjs.map +1 -1
  54. package/fesm2022/cdevhub-ngx-tw-input.mjs +37 -21
  55. package/fesm2022/cdevhub-ngx-tw-input.mjs.map +1 -1
  56. package/fesm2022/cdevhub-ngx-tw-item.mjs +33 -24
  57. package/fesm2022/cdevhub-ngx-tw-item.mjs.map +1 -1
  58. package/fesm2022/cdevhub-ngx-tw-menu.mjs +63 -48
  59. package/fesm2022/cdevhub-ngx-tw-menu.mjs.map +1 -1
  60. package/fesm2022/cdevhub-ngx-tw-number-input.mjs +622 -0
  61. package/fesm2022/cdevhub-ngx-tw-number-input.mjs.map +1 -0
  62. package/fesm2022/cdevhub-ngx-tw-paginator.mjs +137 -71
  63. package/fesm2022/cdevhub-ngx-tw-paginator.mjs.map +1 -1
  64. package/fesm2022/cdevhub-ngx-tw-popover.mjs +101 -46
  65. package/fesm2022/cdevhub-ngx-tw-popover.mjs.map +1 -1
  66. package/fesm2022/cdevhub-ngx-tw-progress-bar.mjs +57 -30
  67. package/fesm2022/cdevhub-ngx-tw-progress-bar.mjs.map +1 -1
  68. package/fesm2022/cdevhub-ngx-tw-radio.mjs +108 -57
  69. package/fesm2022/cdevhub-ngx-tw-radio.mjs.map +1 -1
  70. package/fesm2022/cdevhub-ngx-tw-segmented-control.mjs +46 -26
  71. package/fesm2022/cdevhub-ngx-tw-segmented-control.mjs.map +1 -1
  72. package/fesm2022/cdevhub-ngx-tw-select.mjs +217 -122
  73. package/fesm2022/cdevhub-ngx-tw-select.mjs.map +1 -1
  74. package/fesm2022/cdevhub-ngx-tw-separator.mjs +21 -12
  75. package/fesm2022/cdevhub-ngx-tw-separator.mjs.map +1 -1
  76. package/fesm2022/cdevhub-ngx-tw-sheet.mjs +58 -44
  77. package/fesm2022/cdevhub-ngx-tw-sheet.mjs.map +1 -1
  78. package/fesm2022/cdevhub-ngx-tw-skeleton.mjs +25 -14
  79. package/fesm2022/cdevhub-ngx-tw-skeleton.mjs.map +1 -1
  80. package/fesm2022/cdevhub-ngx-tw-slider.mjs +155 -79
  81. package/fesm2022/cdevhub-ngx-tw-slider.mjs.map +1 -1
  82. package/fesm2022/cdevhub-ngx-tw-sort.mjs +44 -25
  83. package/fesm2022/cdevhub-ngx-tw-sort.mjs.map +1 -1
  84. package/fesm2022/cdevhub-ngx-tw-spinner.mjs +29 -16
  85. package/fesm2022/cdevhub-ngx-tw-spinner.mjs.map +1 -1
  86. package/fesm2022/cdevhub-ngx-tw-split.mjs +72 -42
  87. package/fesm2022/cdevhub-ngx-tw-split.mjs.map +1 -1
  88. package/fesm2022/cdevhub-ngx-tw-stat.mjs +107 -64
  89. package/fesm2022/cdevhub-ngx-tw-stat.mjs.map +1 -1
  90. package/fesm2022/cdevhub-ngx-tw-stepper.mjs +113 -47
  91. package/fesm2022/cdevhub-ngx-tw-stepper.mjs.map +1 -1
  92. package/fesm2022/cdevhub-ngx-tw-switch.mjs +61 -32
  93. package/fesm2022/cdevhub-ngx-tw-switch.mjs.map +1 -1
  94. package/fesm2022/cdevhub-ngx-tw-tab-nav.mjs +88 -42
  95. package/fesm2022/cdevhub-ngx-tw-tab-nav.mjs.map +1 -1
  96. package/fesm2022/cdevhub-ngx-tw-table.mjs +266 -118
  97. package/fesm2022/cdevhub-ngx-tw-table.mjs.map +1 -1
  98. package/fesm2022/cdevhub-ngx-tw-tabs.mjs +101 -51
  99. package/fesm2022/cdevhub-ngx-tw-tabs.mjs.map +1 -1
  100. package/fesm2022/cdevhub-ngx-tw-tags-input.mjs +798 -0
  101. package/fesm2022/cdevhub-ngx-tw-tags-input.mjs.map +1 -0
  102. package/fesm2022/cdevhub-ngx-tw-textarea.mjs +11 -7
  103. package/fesm2022/cdevhub-ngx-tw-textarea.mjs.map +1 -1
  104. package/fesm2022/cdevhub-ngx-tw-theme.mjs +22 -14
  105. package/fesm2022/cdevhub-ngx-tw-theme.mjs.map +1 -1
  106. package/fesm2022/cdevhub-ngx-tw-time-picker.mjs +243 -95
  107. package/fesm2022/cdevhub-ngx-tw-time-picker.mjs.map +1 -1
  108. package/fesm2022/cdevhub-ngx-tw-timeline.mjs +149 -82
  109. package/fesm2022/cdevhub-ngx-tw-timeline.mjs.map +1 -1
  110. package/fesm2022/cdevhub-ngx-tw-toast.mjs +89 -55
  111. package/fesm2022/cdevhub-ngx-tw-toast.mjs.map +1 -1
  112. package/fesm2022/cdevhub-ngx-tw-tooltip.mjs +50 -28
  113. package/fesm2022/cdevhub-ngx-tw-tooltip.mjs.map +1 -1
  114. package/fesm2022/cdevhub-ngx-tw-transfer.mjs +1129 -0
  115. package/fesm2022/cdevhub-ngx-tw-transfer.mjs.map +1 -0
  116. package/fesm2022/cdevhub-ngx-tw-tree.mjs +554 -0
  117. package/fesm2022/cdevhub-ngx-tw-tree.mjs.map +1 -0
  118. package/fesm2022/cdevhub-ngx-tw.mjs +7 -0
  119. package/fesm2022/cdevhub-ngx-tw.mjs.map +1 -1
  120. package/package.json +45 -20
  121. package/theme/index.css +10 -2
  122. package/types/cdevhub-ngx-tw-aspect-ratio.d.ts +40 -0
  123. package/types/cdevhub-ngx-tw-calendar.d.ts +39 -8
  124. package/types/cdevhub-ngx-tw-command-palette.d.ts +7 -0
  125. package/types/cdevhub-ngx-tw-date-picker.d.ts +36 -10
  126. package/types/cdevhub-ngx-tw-file-upload.d.ts +250 -0
  127. package/types/cdevhub-ngx-tw-form-field.d.ts +22 -3
  128. package/types/cdevhub-ngx-tw-icon-lucide.d.ts +21 -3
  129. package/types/cdevhub-ngx-tw-number-input.d.ts +130 -0
  130. package/types/cdevhub-ngx-tw-popover.d.ts +8 -0
  131. package/types/cdevhub-ngx-tw-stepper.d.ts +30 -2
  132. package/types/cdevhub-ngx-tw-tab-nav.d.ts +8 -0
  133. package/types/cdevhub-ngx-tw-table.d.ts +30 -1
  134. package/types/cdevhub-ngx-tw-tabs.d.ts +8 -0
  135. package/types/cdevhub-ngx-tw-tags-input.d.ts +217 -0
  136. package/types/cdevhub-ngx-tw-time-picker.d.ts +31 -6
  137. package/types/cdevhub-ngx-tw-transfer.d.ts +330 -0
  138. package/types/cdevhub-ngx-tw-tree.d.ts +189 -0
  139. package/types/cdevhub-ngx-tw.d.ts +7 -0
@@ -0,0 +1,189 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { TemplateRef, TrackByFunction } from '@angular/core';
3
+ import { TwSize } from '@cdevhub/ngx-tw/core';
4
+
5
+ /** Tri-state selection status of a tree node. */
6
+ type TwTreeSelectionState = 'checked' | 'unchecked' | 'indeterminate';
7
+ /** Configuration for node selection behavior. Pass any subset; unset keys fall back to the defaults. */
8
+ interface TwTreeSelectionConfig {
9
+ /** Selection mode. `'single'` is scalar (one node, no cascade/indeterminate); `'multiple'` supports cascade + tri-state. `'none'` disables selection. Defaults to `'none'`. */
10
+ mode: 'none' | 'single' | 'multiple';
11
+ /** In `'multiple'` mode, selecting a branch selects all its leaf descendants and a branch renders `'indeterminate'` when only some are selected. Ignored in `'single'`/`'none'`. Defaults to `true`. */
12
+ cascade?: boolean;
13
+ /** Pre-selected node keys (matched via `trackBy`). In cascade mode these are leaf-node keys. Defaults to `[]`. */
14
+ initialKeys?: readonly unknown[];
15
+ }
16
+ /** Display configuration for the tree. Pass any subset; unset keys fall back to the defaults. */
17
+ interface TwTreeDisplayConfig {
18
+ /** Row vertical density. Defaults to `'md'`. */
19
+ size?: TwSize;
20
+ /** Indentation per level, in pixels. Defaults to `16`. */
21
+ indent?: number;
22
+ /** Render connecting guide lines down the indent gutter. Defaults to `false`. */
23
+ showLines?: boolean;
24
+ }
25
+ /** Context surfaced to a `*twTreeNode` template. Generic over the node type `T`. */
26
+ interface TwTreeNodeContext<T> {
27
+ /** The node data (implicit `let-node`). */
28
+ $implicit: T;
29
+ /** The node data, aliased for readability. */
30
+ node: T;
31
+ /** Zero-based depth of the node. */
32
+ level: number;
33
+ /** Whether the node is currently expanded. Always `false` for leaf nodes. */
34
+ expanded: boolean;
35
+ /** Whether the node has children (is a branch, not a leaf). */
36
+ hasChildren: boolean;
37
+ /** Tri-state selection status of this node. `'unchecked'` when selection is disabled. */
38
+ selectionState: TwTreeSelectionState;
39
+ /** Toggles this node's expand/collapse state. No-op on leaf nodes. */
40
+ toggle: () => void;
41
+ /** Expands this node. No-op on leaf nodes or when already expanded. */
42
+ expand: () => void;
43
+ /** Collapses this node. No-op when already collapsed. */
44
+ collapse: () => void;
45
+ /** Toggles this node's selection (cascades in `'multiple'` mode with `cascade` on). No-op when selection is disabled. */
46
+ toggleSelection: () => void;
47
+ }
48
+ /** Structural directive (`*twTreeNode="let node"`) declaring the per-node template. Typed as `TwTreeNodeContext<T>`. */
49
+ declare class TreeNodeDefDirective<T = unknown> {
50
+ /** @internal Consumer-projected per-node template. */
51
+ readonly template: TemplateRef<any>;
52
+ /** @internal */
53
+ static ngTemplateContextGuard<T>(_dir: TreeNodeDefDirective<T>, _ctx: unknown): _ctx is TwTreeNodeContext<T>;
54
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TreeNodeDefDirective<any>, never>;
55
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<TreeNodeDefDirective<any>, "[twTreeNode]", never, {}, {}, never, never, true, never>;
56
+ }
57
+ /**
58
+ * A hierarchical, keyboard-navigable tree-view wrapping `@angular/cdk/tree`
59
+ * (children-accessor model). Consumers supply the per-node template via the
60
+ * `*twTreeNode` structural directive and receive a typed context exposing the
61
+ * node, its depth/expansion/children flags, its selection state, and action
62
+ * functions (`toggle`, `expand`, `collapse`, `toggleSelection`).
63
+ *
64
+ * Selection is optional and managed internally (`'none' | 'single' | 'multiple'`).
65
+ * In `'multiple'` mode with `cascade`, selecting a branch selects all its leaf
66
+ * descendants and the branch reports `'indeterminate'` when partially selected.
67
+ * This is NOT a form control — selection is exposed via the `selectionChange`
68
+ * output and the public `toggleSelection` / `selectionState` methods.
69
+ */
70
+ declare class TreeComponent<T = unknown> {
71
+ /** Root nodes of the tree. Each node's children are resolved via `childrenAccessor`. Defaults to `[]`. */
72
+ readonly data: _angular_core.InputSignal<readonly T[]>;
73
+ /** Resolves a node's direct children; return an empty array for leaf nodes. Required. */
74
+ readonly childrenAccessor: _angular_core.InputSignal<(node: T) => readonly T[]>;
75
+ /** Identifies a node across data changes and keys both expansion and selection state. When unset, node identity is used. */
76
+ readonly trackBy: _angular_core.InputSignal<((node: T) => unknown) | undefined>;
77
+ /** Node-selection behavior — `mode`, `cascade`, `initialKeys`. Accepts a partial; unset keys fall back to the defaults. Defaults to selection disabled. */
78
+ readonly selection: _angular_core.InputSignal<Partial<TwTreeSelectionConfig>>;
79
+ /** Display configuration — `size`, `indent`, `showLines`. Accepts a partial; unset keys fall back to the defaults. */
80
+ readonly display: _angular_core.InputSignal<Partial<TwTreeDisplayConfig>>;
81
+ /** Two-way bound list of expansion key values (resolved via `trackBy`) for currently-expanded nodes. Set a new array on every change; do not mutate in place. Changes when a node is expanded or collapsed. Defaults to `[]` (all collapsed). */
82
+ readonly expandedKeys: _angular_core.ModelSignal<readonly unknown[]>;
83
+ /** Fires after the selection changes by user interaction. Payload is every node whose `selectionState` is `'checked'` (selected leaves plus fully-checked branches in cascade mode). */
84
+ readonly selectionChange: _angular_core.OutputEmitterRef<readonly T[]>;
85
+ /** Fires after a node is expanded or collapsed by user interaction. Payload identifies the node and its new expansion state. */
86
+ readonly expandedChange: _angular_core.OutputEmitterRef<{
87
+ node: T;
88
+ expanded: boolean;
89
+ }>;
90
+ /** @internal Consumer-projected per-node template (`*twTreeNode`). */
91
+ readonly nodeTemplate: _angular_core.Signal<TreeNodeDefDirective<any> | undefined>;
92
+ /** @internal The CDK tree inside our view. */
93
+ private readonly cdkTree;
94
+ /** @internal Selected node keys. In cascade mode this holds leaf keys only; branch state is derived. */
95
+ private readonly selectedKeys;
96
+ /** @internal One-shot guard so `initialKeys` seeds selection exactly once. */
97
+ private seeded;
98
+ /** @internal Resolved selection configuration. */
99
+ private readonly resolvedSelection;
100
+ /** @internal Resolved display configuration. */
101
+ private readonly resolvedDisplay;
102
+ /** @internal Indentation width in px per level. */
103
+ readonly indentWidth: _angular_core.Signal<number>;
104
+ /** @internal Snapshot of the root nodes as a mutable array (CDK's `dataSource` rejects `readonly T[]`). */
105
+ readonly dataArray: _angular_core.Signal<T[]>;
106
+ private readonly variants;
107
+ readonly rootClasses: _angular_core.Signal<string>;
108
+ readonly spacerClasses: _angular_core.Signal<string>;
109
+ readonly contentClasses: _angular_core.Signal<string>;
110
+ constructor();
111
+ /** @internal Resolves a node's identity key via `trackBy`, falling back to the node itself. */
112
+ private keyOf;
113
+ /** @internal Direct children of a node (always a fresh mutable array). */
114
+ private childrenOf;
115
+ /** Whether the node has at least one child (is a branch). */
116
+ hasChildren(node: T): boolean;
117
+ /** @internal Depth-first list of every node in the tree (under collapsed parents too). */
118
+ private flattenAll;
119
+ /** @internal All leaf descendants of a node (the node itself if it is a leaf). */
120
+ private leavesOf;
121
+ /** @internal Array of length `level` used to render per-level indent spacers. */
122
+ indentMarkers(level: number): readonly number[];
123
+ /** @internal Per-node row classes (incorporates the selected state). */
124
+ nodeClasses(node: T): string;
125
+ /** @internal Builds the typed context handed to the consumer's `*twTreeNode` template. */
126
+ buildContext(node: T, level: number): TwTreeNodeContext<T>;
127
+ /**
128
+ * @internal `aria-selected` for `'single'` mode (boolean selection), or `null`
129
+ * otherwise. Multiple mode uses `aria-checked` instead so the tri-state
130
+ * `'mixed'` value is exposed to assistive tech on the focusable treeitem.
131
+ */
132
+ ariaSelected(node: T): 'true' | 'false' | null;
133
+ /**
134
+ * @internal Tri-state `aria-checked` for `'multiple'` mode (`'mixed'` for a
135
+ * partially-selected branch), or `null` otherwise. APG exposes checkbox-tree
136
+ * selection on the treeitem via `aria-checked`; `aria-selected` cannot carry
137
+ * the indeterminate state.
138
+ */
139
+ ariaChecked(node: T): 'true' | 'false' | 'mixed' | null;
140
+ /** @internal Adapts the consumer's `readonly`-returning accessor to CDK's mutable-array contract. */
141
+ readonly cdkChildrenAccessor: (node: T) => T[];
142
+ /** @internal CDK row-tracking function keyed via `trackBy`. */
143
+ readonly cdkTrackBy: TrackByFunction<T>;
144
+ /** @internal Keys CDK's expansion model via `trackBy`. */
145
+ readonly cdkExpansionKey: (node: T) => unknown;
146
+ /** Whether the node is currently expanded. */
147
+ isExpanded(node: T): boolean;
148
+ /** Expands the node if collapsed. Emits `expandedChange` and updates `expandedKeys` via the CDK callback. */
149
+ expand(node: T): void;
150
+ /** Collapses the node if expanded. Emits `expandedChange` and updates `expandedKeys` via the CDK callback. */
151
+ collapse(node: T): void;
152
+ /** Toggles the node's expand/collapse state. No-op on leaf nodes. */
153
+ toggle(node: T): void;
154
+ /**
155
+ * @internal Bridges CDK's per-node `(expandedChange)` to the `expandedKeys`
156
+ * model. Compare-before-write: only mutates the model and emits when the
157
+ * key's membership actually changes, so the model→CDK effect cannot loop.
158
+ */
159
+ onCdkExpandedChange(node: T, expanded: boolean): void;
160
+ /**
161
+ * Returns the tri-state selection status of a node. `'unchecked'` when
162
+ * selection is disabled.
163
+ *
164
+ * For cascade branches this walks the node's leaf descendants on each call and
165
+ * is invoked a few times per node per change-detection pass (row class, ARIA,
166
+ * context). This assumes small-to-medium trees; the component has no
167
+ * virtualization and is not tuned for very large data sets.
168
+ */
169
+ selectionState(node: T): TwTreeSelectionState;
170
+ /** Toggles selection for a node (cascades to leaf descendants in `'multiple'` mode with `cascade` on). No-op when `selection.mode === 'none'`. */
171
+ toggleSelection(node: T): void;
172
+ /** @internal Every node currently reporting `selectionState() === 'checked'`. */
173
+ private selectedNodes;
174
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TreeComponent<any>, never>;
175
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TreeComponent<any>, "tw-tree", ["twTree"], { "data": { "alias": "data"; "required": false; "isSignal": true; }; "childrenAccessor": { "alias": "childrenAccessor"; "required": true; "isSignal": true; }; "trackBy": { "alias": "trackBy"; "required": false; "isSignal": true; }; "selection": { "alias": "selection"; "required": false; "isSignal": true; }; "display": { "alias": "display"; "required": false; "isSignal": true; }; "expandedKeys": { "alias": "expandedKeys"; "required": false; "isSignal": true; }; }, { "expandedKeys": "expandedKeysChange"; "selectionChange": "selectionChange"; "expandedChange": "expandedChange"; }, ["nodeTemplate"], never, true, never>;
176
+ }
177
+ /** Attribute directive (`[twTreeNodeToggle]="node"`) that toggles the given node's expansion on click. */
178
+ declare class TreeNodeToggleDirective<T = unknown> {
179
+ private readonly tree;
180
+ /** The node whose expansion this control toggles. */
181
+ readonly node: _angular_core.InputSignal<T>;
182
+ /** @internal Toggles the node and stops the click from bubbling to row activation. */
183
+ onClick(event: Event): void;
184
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TreeNodeToggleDirective<any>, never>;
185
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<TreeNodeToggleDirective<any>, "[twTreeNodeToggle]", never, { "node": { "alias": "twTreeNodeToggle"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
186
+ }
187
+
188
+ export { TreeComponent, TreeNodeDefDirective, TreeNodeToggleDirective };
189
+ export type { TwTreeDisplayConfig, TwTreeNodeContext, TwTreeSelectionConfig, TwTreeSelectionState };
@@ -19,6 +19,7 @@ export * from '@cdevhub/ngx-tw/popover';
19
19
  export * from '@cdevhub/ngx-tw/dialog';
20
20
  export * from '@cdevhub/ngx-tw/command-palette';
21
21
  export * from '@cdevhub/ngx-tw/toast';
22
+ export * from '@cdevhub/ngx-tw/transfer';
22
23
  export * from '@cdevhub/ngx-tw/form-field';
23
24
  export * from '@cdevhub/ngx-tw/switch';
24
25
  export * from '@cdevhub/ngx-tw/checkbox';
@@ -26,6 +27,9 @@ export * from '@cdevhub/ngx-tw/radio';
26
27
  export * from '@cdevhub/ngx-tw/select';
27
28
  export * from '@cdevhub/ngx-tw/input';
28
29
  export * from '@cdevhub/ngx-tw/textarea';
30
+ export * from '@cdevhub/ngx-tw/file-upload';
31
+ export * from '@cdevhub/ngx-tw/number-input';
32
+ export * from '@cdevhub/ngx-tw/tags-input';
29
33
  export * from '@cdevhub/ngx-tw/spinner';
30
34
  export * from '@cdevhub/ngx-tw/progress-bar';
31
35
  export * from '@cdevhub/ngx-tw/skeleton';
@@ -47,3 +51,6 @@ export * from '@cdevhub/ngx-tw/stat';
47
51
  export * from '@cdevhub/ngx-tw/combobox';
48
52
  export * from '@cdevhub/ngx-tw/empty-state';
49
53
  export * from '@cdevhub/ngx-tw/sheet';
54
+ export * from '@cdevhub/ngx-tw/aspect-ratio';
55
+ export * from '@cdevhub/ngx-tw/tree';
56
+ export * from '@cdevhub/ngx-tw/theme';