@neural-ui/core 1.7.5 → 1.8.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 (83) hide show
  1. package/fesm2022/neural-ui-core-accordion.mjs +22 -8
  2. package/fesm2022/neural-ui-core-accordion.mjs.map +1 -1
  3. package/fesm2022/neural-ui-core-alert.mjs +1 -1
  4. package/fesm2022/neural-ui-core-alert.mjs.map +1 -1
  5. package/fesm2022/neural-ui-core-autocomplete.mjs +50 -9
  6. package/fesm2022/neural-ui-core-autocomplete.mjs.map +1 -1
  7. package/fesm2022/neural-ui-core-button.mjs +1 -1
  8. package/fesm2022/neural-ui-core-button.mjs.map +1 -1
  9. package/fesm2022/neural-ui-core-calendar.mjs +26 -18
  10. package/fesm2022/neural-ui-core-calendar.mjs.map +1 -1
  11. package/fesm2022/neural-ui-core-card.mjs +2 -2
  12. package/fesm2022/neural-ui-core-card.mjs.map +1 -1
  13. package/fesm2022/neural-ui-core-command-palette.mjs +22 -8
  14. package/fesm2022/neural-ui-core-command-palette.mjs.map +1 -1
  15. package/fesm2022/neural-ui-core-context-menu.mjs +24 -8
  16. package/fesm2022/neural-ui-core-context-menu.mjs.map +1 -1
  17. package/fesm2022/neural-ui-core-empty-state.mjs +1 -1
  18. package/fesm2022/neural-ui-core-empty-state.mjs.map +1 -1
  19. package/fesm2022/neural-ui-core-icon.mjs +9 -2
  20. package/fesm2022/neural-ui-core-icon.mjs.map +1 -1
  21. package/fesm2022/neural-ui-core-inline-editor.mjs +1 -1
  22. package/fesm2022/neural-ui-core-inline-editor.mjs.map +1 -1
  23. package/fesm2022/neural-ui-core-input-mask.mjs +2 -2
  24. package/fesm2022/neural-ui-core-input-mask.mjs.map +1 -1
  25. package/fesm2022/neural-ui-core-input.mjs +1 -1
  26. package/fesm2022/neural-ui-core-input.mjs.map +1 -1
  27. package/fesm2022/neural-ui-core-listbox.mjs +50 -5
  28. package/fesm2022/neural-ui-core-listbox.mjs.map +1 -1
  29. package/fesm2022/neural-ui-core-menu.mjs +38 -16
  30. package/fesm2022/neural-ui-core-menu.mjs.map +1 -1
  31. package/fesm2022/neural-ui-core-modal.mjs +1 -1
  32. package/fesm2022/neural-ui-core-modal.mjs.map +1 -1
  33. package/fesm2022/neural-ui-core-multiselect.mjs +67 -7
  34. package/fesm2022/neural-ui-core-multiselect.mjs.map +1 -1
  35. package/fesm2022/neural-ui-core-nav.mjs +1 -1
  36. package/fesm2022/neural-ui-core-nav.mjs.map +1 -1
  37. package/fesm2022/neural-ui-core-password.mjs +42 -6
  38. package/fesm2022/neural-ui-core-password.mjs.map +1 -1
  39. package/fesm2022/neural-ui-core-pick-list.mjs +43 -16
  40. package/fesm2022/neural-ui-core-pick-list.mjs.map +1 -1
  41. package/fesm2022/neural-ui-core-select.mjs +64 -5
  42. package/fesm2022/neural-ui-core-select.mjs.map +1 -1
  43. package/fesm2022/neural-ui-core-sidebar.mjs +1 -1
  44. package/fesm2022/neural-ui-core-sidebar.mjs.map +1 -1
  45. package/fesm2022/neural-ui-core-split-button.mjs +22 -8
  46. package/fesm2022/neural-ui-core-split-button.mjs.map +1 -1
  47. package/fesm2022/neural-ui-core-stats-card.mjs +1 -1
  48. package/fesm2022/neural-ui-core-stats-card.mjs.map +1 -1
  49. package/fesm2022/neural-ui-core-table.mjs +1 -1
  50. package/fesm2022/neural-ui-core-table.mjs.map +1 -1
  51. package/fesm2022/neural-ui-core-tabs.mjs +22 -9
  52. package/fesm2022/neural-ui-core-tabs.mjs.map +1 -1
  53. package/fesm2022/neural-ui-core-tags.mjs +40 -13
  54. package/fesm2022/neural-ui-core-tags.mjs.map +1 -1
  55. package/fesm2022/neural-ui-core-timeline.mjs +39 -10
  56. package/fesm2022/neural-ui-core-timeline.mjs.map +1 -1
  57. package/fesm2022/neural-ui-core-toast.mjs +1 -1
  58. package/fesm2022/neural-ui-core-toast.mjs.map +1 -1
  59. package/fesm2022/neural-ui-core-toggle-button-group.mjs +22 -8
  60. package/fesm2022/neural-ui-core-toggle-button-group.mjs.map +1 -1
  61. package/fesm2022/neural-ui-core-tree-select.mjs +86 -12
  62. package/fesm2022/neural-ui-core-tree-select.mjs.map +1 -1
  63. package/fesm2022/neural-ui-core-tree.mjs +21 -6
  64. package/fesm2022/neural-ui-core-tree.mjs.map +1 -1
  65. package/package.json +1 -1
  66. package/types/neural-ui-core-accordion.d.ts +16 -2
  67. package/types/neural-ui-core-autocomplete.d.ts +23 -2
  68. package/types/neural-ui-core-calendar.d.ts +18 -3
  69. package/types/neural-ui-core-command-palette.d.ts +24 -10
  70. package/types/neural-ui-core-context-menu.d.ts +17 -3
  71. package/types/neural-ui-core-icon.d.ts +5 -1
  72. package/types/neural-ui-core-listbox.d.ts +23 -2
  73. package/types/neural-ui-core-menu.d.ts +23 -3
  74. package/types/neural-ui-core-multiselect.d.ts +33 -2
  75. package/types/neural-ui-core-pick-list.d.ts +32 -3
  76. package/types/neural-ui-core-select.d.ts +30 -2
  77. package/types/neural-ui-core-split-button.d.ts +15 -3
  78. package/types/neural-ui-core-tabs.d.ts +16 -3
  79. package/types/neural-ui-core-tags.d.ts +35 -4
  80. package/types/neural-ui-core-timeline.d.ts +27 -2
  81. package/types/neural-ui-core-toggle-button-group.d.ts +16 -2
  82. package/types/neural-ui-core-tree-select.d.ts +51 -3
  83. package/types/neural-ui-core-tree.d.ts +18 -3
@@ -26,6 +26,30 @@ declare class NeuMultiselectItemDirective {
26
26
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuMultiselectItemDirective, never>;
27
27
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NeuMultiselectItemDirective, "[neuMultiselectItem]", never, {}, {}, never, never, true, never>;
28
28
  }
29
+ interface NeuMultiselectSelectedContext {
30
+ $implicit: NeuSelectOption;
31
+ remove: () => void;
32
+ }
33
+ declare class NeuMultiselectSelectedDirective {
34
+ readonly templateRef: TemplateRef<NeuMultiselectSelectedContext>;
35
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuMultiselectSelectedDirective, never>;
36
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NeuMultiselectSelectedDirective, "[neuMultiselectSelected]", never, {}, {}, never, never, true, never>;
37
+ }
38
+ declare class NeuMultiselectHeaderDirective {
39
+ readonly templateRef: TemplateRef<void>;
40
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuMultiselectHeaderDirective, never>;
41
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NeuMultiselectHeaderDirective, "[neuMultiselectHeader]", never, {}, {}, never, never, true, never>;
42
+ }
43
+ declare class NeuMultiselectFooterDirective {
44
+ readonly templateRef: TemplateRef<void>;
45
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuMultiselectFooterDirective, never>;
46
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NeuMultiselectFooterDirective, "[neuMultiselectFooter]", never, {}, {}, never, never, true, never>;
47
+ }
48
+ declare class NeuMultiselectEmptyDirective {
49
+ readonly templateRef: TemplateRef<void>;
50
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuMultiselectEmptyDirective, never>;
51
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NeuMultiselectEmptyDirective, "[neuMultiselectEmpty]", never, {}, {}, never, never, true, never>;
52
+ }
29
53
 
30
54
  /**
31
55
  * NeuralUI Multiselect Component
@@ -54,6 +78,10 @@ declare class NeuMultiselectComponent implements ControlValueAccessor {
54
78
  readonly _panelId: string;
55
79
  /** Template personalizado para cada opción del dropdown / Custom template for each dropdown option */
56
80
  readonly itemTpl: Signal<NeuMultiselectItemDirective | undefined>;
81
+ readonly selectedItemTpl: Signal<NeuMultiselectSelectedDirective | undefined>;
82
+ readonly headerTpl: Signal<NeuMultiselectHeaderDirective | undefined>;
83
+ readonly footerTpl: Signal<NeuMultiselectFooterDirective | undefined>;
84
+ readonly emptyTpl: Signal<NeuMultiselectEmptyDirective | undefined>;
57
85
  /** Opciones del dropdown / Dropdown options */
58
86
  options: _angular_core.InputSignal<NeuSelectOption[]>;
59
87
  /** Etiqueta del componente / Component label */
@@ -134,6 +162,8 @@ declare class NeuMultiselectComponent implements ControlValueAccessor {
134
162
  setDisabledState(isDisabled: boolean): void;
135
163
  readonly isDisabledFinal: Signal<boolean>;
136
164
  protected labelFor(value: string): string;
165
+ protected optionFor(value: string): NeuSelectOption;
166
+ protected removeOption(value: string): void;
137
167
  protected isSelected(value: string): boolean;
138
168
  protected toggle(): void;
139
169
  /** Abre el panel y mueve el foco al primer item / Opens the panel and moves focus to the first item */
@@ -158,7 +188,8 @@ declare class NeuMultiselectComponent implements ControlValueAccessor {
158
188
  private refreshVirtualViewport;
159
189
  private _requestFrame;
160
190
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuMultiselectComponent, never>;
161
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuMultiselectComponent, "neu-multiselect", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "floatingLabel": { "alias": "floatingLabel"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "loadingLabel": { "alias": "loadingLabel"; "required": false; "isSignal": true; }; "selectAll": { "alias": "selectAll"; "required": false; "isSignal": true; }; "selectAllLabel": { "alias": "selectAllLabel"; "required": false; "isSignal": true; }; "unselectAllLabel": { "alias": "unselectAllLabel"; "required": false; "isSignal": true; }; "noResultsMessage": { "alias": "noResultsMessage"; "required": false; "isSignal": true; }; "clearAllLabel": { "alias": "clearAllLabel"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "virtualScroll": { "alias": "virtualScroll"; "required": false; "isSignal": true; }; "virtualScrollVisibleItems": { "alias": "virtualScrollVisibleItems"; "required": false; "isSignal": true; }; "clearAriaLabel": { "alias": "clearAriaLabel"; "required": false; "isSignal": true; }; "urlParam": { "alias": "urlParam"; "required": false; "isSignal": true; }; }, { "selectionChange": "selectionChange"; }, ["itemTpl"], never, true, never>;
191
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuMultiselectComponent, "neu-multiselect", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "floatingLabel": { "alias": "floatingLabel"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "loadingLabel": { "alias": "loadingLabel"; "required": false; "isSignal": true; }; "selectAll": { "alias": "selectAll"; "required": false; "isSignal": true; }; "selectAllLabel": { "alias": "selectAllLabel"; "required": false; "isSignal": true; }; "unselectAllLabel": { "alias": "unselectAllLabel"; "required": false; "isSignal": true; }; "noResultsMessage": { "alias": "noResultsMessage"; "required": false; "isSignal": true; }; "clearAllLabel": { "alias": "clearAllLabel"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "virtualScroll": { "alias": "virtualScroll"; "required": false; "isSignal": true; }; "virtualScrollVisibleItems": { "alias": "virtualScrollVisibleItems"; "required": false; "isSignal": true; }; "clearAriaLabel": { "alias": "clearAriaLabel"; "required": false; "isSignal": true; }; "urlParam": { "alias": "urlParam"; "required": false; "isSignal": true; }; }, { "selectionChange": "selectionChange"; }, ["itemTpl", "selectedItemTpl", "headerTpl", "footerTpl", "emptyTpl"], never, true, never>;
162
192
  }
163
193
 
164
- export { NeuMultiselectComponent, NeuMultiselectItemDirective };
194
+ export { NeuMultiselectComponent, NeuMultiselectEmptyDirective, NeuMultiselectFooterDirective, NeuMultiselectHeaderDirective, NeuMultiselectItemDirective, NeuMultiselectSelectedDirective };
195
+ export type { NeuMultiselectSelectedContext };
@@ -1,4 +1,5 @@
1
1
  import * as _angular_core from '@angular/core';
2
+ import { TemplateRef } from '@angular/core';
2
3
 
3
4
  interface NeuTransferItem {
4
5
  value: string;
@@ -6,7 +7,34 @@ interface NeuTransferItem {
6
7
  disabled?: boolean;
7
8
  data?: unknown;
8
9
  }
10
+ declare class NeuPickListItemDirective {
11
+ readonly templateRef: TemplateRef<{
12
+ $implicit: NeuTransferItem;
13
+ selected: boolean;
14
+ location: 'source' | 'target';
15
+ }>;
16
+ constructor(templateRef: TemplateRef<{
17
+ $implicit: NeuTransferItem;
18
+ selected: boolean;
19
+ location: 'source' | 'target';
20
+ }>);
21
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuPickListItemDirective, never>;
22
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NeuPickListItemDirective, "ng-template[neuPickListItem]", never, {}, {}, never, never, true, never>;
23
+ }
24
+ declare class NeuOrderListItemDirective {
25
+ readonly templateRef: TemplateRef<{
26
+ $implicit: NeuTransferItem;
27
+ index: number;
28
+ }>;
29
+ constructor(templateRef: TemplateRef<{
30
+ $implicit: NeuTransferItem;
31
+ index: number;
32
+ }>);
33
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuOrderListItemDirective, never>;
34
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NeuOrderListItemDirective, "ng-template[neuOrderListItem]", never, {}, {}, never, never, true, never>;
35
+ }
9
36
  declare class NeuPickListComponent {
37
+ readonly itemTpl: _angular_core.Signal<NeuPickListItemDirective | undefined>;
10
38
  readonly source: _angular_core.InputSignal<NeuTransferItem[]>;
11
39
  readonly target: _angular_core.InputSignal<NeuTransferItem[]>;
12
40
  readonly sourceHeader: _angular_core.InputSignal<string>;
@@ -26,15 +54,16 @@ declare class NeuPickListComponent {
26
54
  private commit;
27
55
  private toggleSet;
28
56
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuPickListComponent, never>;
29
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuPickListComponent, "neu-pick-list", never, { "source": { "alias": "source"; "required": false; "isSignal": true; }; "target": { "alias": "target"; "required": false; "isSignal": true; }; "sourceHeader": { "alias": "sourceHeader"; "required": false; "isSignal": true; }; "targetHeader": { "alias": "targetHeader"; "required": false; "isSignal": true; }; }, { "sourceChange": "sourceChange"; "targetChange": "targetChange"; "itemsChange": "itemsChange"; }, never, never, true, never>;
57
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuPickListComponent, "neu-pick-list", never, { "source": { "alias": "source"; "required": false; "isSignal": true; }; "target": { "alias": "target"; "required": false; "isSignal": true; }; "sourceHeader": { "alias": "sourceHeader"; "required": false; "isSignal": true; }; "targetHeader": { "alias": "targetHeader"; "required": false; "isSignal": true; }; }, { "sourceChange": "sourceChange"; "targetChange": "targetChange"; "itemsChange": "itemsChange"; }, ["itemTpl"], never, true, never>;
30
58
  }
31
59
  declare class NeuOrderListComponent {
60
+ readonly itemTpl: _angular_core.Signal<NeuOrderListItemDirective | undefined>;
32
61
  readonly items: _angular_core.InputSignal<NeuTransferItem[]>;
33
62
  readonly orderChange: _angular_core.OutputEmitterRef<NeuTransferItem[]>;
34
63
  move(index: number, direction: -1 | 1): void;
35
64
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuOrderListComponent, never>;
36
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuOrderListComponent, "neu-order-list", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; }, { "orderChange": "orderChange"; }, never, never, true, never>;
65
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuOrderListComponent, "neu-order-list", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; }, { "orderChange": "orderChange"; }, ["itemTpl"], never, true, never>;
37
66
  }
38
67
 
39
- export { NeuOrderListComponent, NeuPickListComponent };
68
+ export { NeuOrderListComponent, NeuOrderListItemDirective, NeuPickListComponent, NeuPickListItemDirective };
40
69
  export type { NeuTransferItem };
@@ -56,6 +56,29 @@ declare class NeuSelectSelectedDirective {
56
56
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuSelectSelectedDirective, never>;
57
57
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NeuSelectSelectedDirective, "[neuSelectSelected]", never, {}, {}, never, never, true, never>;
58
58
  }
59
+ /** Optional content slots for the select panel. */
60
+ declare class NeuSelectHeaderDirective {
61
+ readonly templateRef: TemplateRef<void>;
62
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuSelectHeaderDirective, never>;
63
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NeuSelectHeaderDirective, "[neuSelectHeader]", never, {}, {}, never, never, true, never>;
64
+ }
65
+ declare class NeuSelectFooterDirective {
66
+ readonly templateRef: TemplateRef<void>;
67
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuSelectFooterDirective, never>;
68
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NeuSelectFooterDirective, "[neuSelectFooter]", never, {}, {}, never, never, true, never>;
69
+ }
70
+ declare class NeuSelectEmptyDirective {
71
+ readonly templateRef: TemplateRef<void>;
72
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuSelectEmptyDirective, never>;
73
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NeuSelectEmptyDirective, "[neuSelectEmpty]", never, {}, {}, never, never, true, never>;
74
+ }
75
+ declare class NeuSelectGroupDirective {
76
+ readonly templateRef: TemplateRef<{
77
+ $implicit: string;
78
+ }>;
79
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuSelectGroupDirective, never>;
80
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NeuSelectGroupDirective, "[neuSelectGroup]", never, {}, {}, never, never, true, never>;
81
+ }
59
82
 
60
83
  /**
61
84
  * NeuralUI Select Component
@@ -91,6 +114,10 @@ declare class NeuSelectComponent implements ControlValueAccessor {
91
114
  readonly itemTpl: Signal<NeuSelectItemDirective | undefined>;
92
115
  /** Template personalizado para el valor seleccionado en el trigger / Custom template for the selected value in the trigger */
93
116
  readonly selectedItemTpl: Signal<NeuSelectSelectedDirective | undefined>;
117
+ readonly headerTpl: Signal<NeuSelectHeaderDirective | undefined>;
118
+ readonly footerTpl: Signal<NeuSelectFooterDirective | undefined>;
119
+ readonly emptyTpl: Signal<NeuSelectEmptyDirective | undefined>;
120
+ readonly groupTpl: Signal<NeuSelectGroupDirective | undefined>;
94
121
  /** Opciones del dropdown / Dropdown options */
95
122
  options: _angular_core.InputSignal<NeuSelectOption[]>;
96
123
  /** Texto del floating label / Floating label text */
@@ -154,6 +181,7 @@ declare class NeuSelectComponent implements ControlValueAccessor {
154
181
  readonly hasError: Signal<boolean>;
155
182
  readonly describedBy: Signal<string | null>;
156
183
  readonly filteredOptions: Signal<NeuSelectOption[]>;
184
+ previousGroup(option: NeuSelectOption): string | undefined;
157
185
  readonly selectedLabel: Signal<string | null>;
158
186
  readonly _selectedOption: Signal<NeuSelectOption | null>;
159
187
  readonly resultsAnnouncement: Signal<string>;
@@ -188,8 +216,8 @@ declare class NeuSelectComponent implements ControlValueAccessor {
188
216
  private resetPanelPosition;
189
217
  private _requestFrame;
190
218
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuSelectComponent, never>;
191
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuSelectComponent, "neu-select", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "floatingLabel": { "alias": "floatingLabel"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "loadingLabel": { "alias": "loadingLabel"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "virtualScroll": { "alias": "virtualScroll"; "required": false; "isSignal": true; }; "virtualScrollVisibleItems": { "alias": "virtualScrollVisibleItems"; "required": false; "isSignal": true; }; "noResultsMessage": { "alias": "noResultsMessage"; "required": false; "isSignal": true; }; "clearAriaLabel": { "alias": "clearAriaLabel"; "required": false; "isSignal": true; }; "urlParam": { "alias": "urlParam"; "required": false; "isSignal": true; }; }, { "selectionChange": "selectionChange"; }, ["itemTpl", "selectedItemTpl"], never, true, never>;
219
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuSelectComponent, "neu-select", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "floatingLabel": { "alias": "floatingLabel"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "loadingLabel": { "alias": "loadingLabel"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "virtualScroll": { "alias": "virtualScroll"; "required": false; "isSignal": true; }; "virtualScrollVisibleItems": { "alias": "virtualScrollVisibleItems"; "required": false; "isSignal": true; }; "noResultsMessage": { "alias": "noResultsMessage"; "required": false; "isSignal": true; }; "clearAriaLabel": { "alias": "clearAriaLabel"; "required": false; "isSignal": true; }; "urlParam": { "alias": "urlParam"; "required": false; "isSignal": true; }; }, { "selectionChange": "selectionChange"; }, ["itemTpl", "selectedItemTpl", "headerTpl", "footerTpl", "emptyTpl", "groupTpl"], never, true, never>;
192
220
  }
193
221
 
194
- export { NeuSelectComponent, NeuSelectItemDirective, NeuSelectSelectedDirective };
222
+ export { NeuSelectComponent, NeuSelectEmptyDirective, NeuSelectFooterDirective, NeuSelectGroupDirective, NeuSelectHeaderDirective, NeuSelectItemDirective, NeuSelectSelectedDirective };
195
223
  export type { NeuSelectGroup, NeuSelectOption };
@@ -1,6 +1,7 @@
1
- import * as _angular_core from '@angular/core';
2
1
  import * as _angular_cdk_overlay from '@angular/cdk/overlay';
3
2
  import { ConnectedPosition } from '@angular/cdk/overlay';
3
+ import * as _angular_core from '@angular/core';
4
+ import { TemplateRef } from '@angular/core';
4
5
  import { NeuButtonVariant, NeuButtonSize } from '@neural-ui/core/button';
5
6
 
6
7
  interface NeuSplitButtonAction {
@@ -15,6 +16,16 @@ interface NeuSplitButtonAction {
15
16
  /** Separador visual encima de este item / Visual separator above this item */
16
17
  divider?: boolean;
17
18
  }
19
+ declare class NeuSplitButtonItemDirective {
20
+ readonly templateRef: TemplateRef<{
21
+ $implicit: NeuSplitButtonAction;
22
+ }>;
23
+ constructor(templateRef: TemplateRef<{
24
+ $implicit: NeuSplitButtonAction;
25
+ }>);
26
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuSplitButtonItemDirective, never>;
27
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NeuSplitButtonItemDirective, "ng-template[neuSplitButtonItem]", never, {}, {}, never, never, true, never>;
28
+ }
18
29
  /**
19
30
  * NeuralUI SplitButton Component
20
31
  *
@@ -29,6 +40,7 @@ interface NeuSplitButtonAction {
29
40
  * />
30
41
  */
31
42
  declare class NeuSplitButtonComponent {
43
+ readonly itemTpl: _angular_core.Signal<NeuSplitButtonItemDirective | undefined>;
32
44
  private readonly el;
33
45
  private readonly overlay;
34
46
  readonly _viewportMargin = 16;
@@ -64,8 +76,8 @@ declare class NeuSplitButtonComponent {
64
76
  onPrimaryClick(event: MouseEvent): void;
65
77
  onActionClick(action: NeuSplitButtonAction): void;
66
78
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuSplitButtonComponent, never>;
67
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuSplitButtonComponent, "neu-split-button", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "actions": { "alias": "actions"; "required": false; "isSignal": true; }; "moreActionsAriaLabel": { "alias": "moreActionsAriaLabel"; "required": false; "isSignal": true; }; "actionsAriaLabel": { "alias": "actionsAriaLabel"; "required": false; "isSignal": true; }; }, { "primaryClick": "primaryClick"; "actionClick": "actionClick"; }, never, never, true, never>;
79
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuSplitButtonComponent, "neu-split-button", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "actions": { "alias": "actions"; "required": false; "isSignal": true; }; "moreActionsAriaLabel": { "alias": "moreActionsAriaLabel"; "required": false; "isSignal": true; }; "actionsAriaLabel": { "alias": "actionsAriaLabel"; "required": false; "isSignal": true; }; }, { "primaryClick": "primaryClick"; "actionClick": "actionClick"; }, ["itemTpl"], never, true, never>;
68
80
  }
69
81
 
70
- export { NeuSplitButtonComponent };
82
+ export { NeuSplitButtonComponent, NeuSplitButtonItemDirective };
71
83
  export type { NeuSplitButtonAction };
@@ -1,5 +1,5 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { InjectionToken, AfterViewInit, OnDestroy, Signal } from '@angular/core';
2
+ import { InjectionToken, AfterViewInit, OnDestroy, Signal, TemplateRef } from '@angular/core';
3
3
 
4
4
  declare const NEU_TABS_CONTEXT: InjectionToken<NeuTabsComponent>;
5
5
  interface NeuTab {
@@ -12,6 +12,18 @@ interface NeuTab {
12
12
  /** Deshabilita la pestaña sin ocultarla / Disables the tab without hiding it */
13
13
  disabled?: boolean;
14
14
  }
15
+ declare class NeuTabLabelDirective {
16
+ readonly templateRef: TemplateRef<{
17
+ $implicit: NeuTab;
18
+ active: boolean;
19
+ }>;
20
+ constructor(templateRef: TemplateRef<{
21
+ $implicit: NeuTab;
22
+ active: boolean;
23
+ }>);
24
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuTabLabelDirective, never>;
25
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NeuTabLabelDirective, "ng-template[neuTabLabel]", never, {}, {}, never, never, true, never>;
26
+ }
15
27
  /**
16
28
  * NeuralUI Tabs Component
17
29
  *
@@ -25,6 +37,7 @@ interface NeuTab {
25
37
  * </neu-tabs>
26
38
  */
27
39
  declare class NeuTabsComponent implements AfterViewInit, OnDestroy {
40
+ readonly labelTpl: Signal<NeuTabLabelDirective | undefined>;
28
41
  private readonly urlState;
29
42
  private readonly elRef;
30
43
  private readonly platformId;
@@ -67,7 +80,7 @@ declare class NeuTabsComponent implements AfterViewInit, OnDestroy {
67
80
  /** Mueve el foco entre tabs con flechas (roving tabindex — WAI-ARIA Tabs Pattern) / Moves focus between tabs with arrows (roving tabindex — WAI-ARIA Tabs Pattern) */
68
81
  focusTab(event: Event, dir: 1 | -1 | 'first' | 'last'): void;
69
82
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuTabsComponent, never>;
70
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuTabsComponent, "neu-tabs", never, { "tabs": { "alias": "tabs"; "required": false; "isSignal": true; }; "tabParam": { "alias": "tabParam"; "required": false; "isSignal": true; }; "flush": { "alias": "flush"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "tabChange": "tabChange"; }, never, ["*"], true, never>;
83
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuTabsComponent, "neu-tabs", never, { "tabs": { "alias": "tabs"; "required": false; "isSignal": true; }; "tabParam": { "alias": "tabParam"; "required": false; "isSignal": true; }; "flush": { "alias": "flush"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "tabChange": "tabChange"; }, ["labelTpl"], ["*"], true, never>;
71
84
  }
72
85
  /**
73
86
  * NeuralUI Tab Panel
@@ -87,5 +100,5 @@ declare class NeuTabPanelComponent {
87
100
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuTabPanelComponent, "neu-tab-panel", never, { "tabId": { "alias": "tabId"; "required": true; "isSignal": true; }; }, {}, never, ["*"], true, never>;
88
101
  }
89
102
 
90
- export { NEU_TABS_CONTEXT, NeuTabPanelComponent, NeuTabsComponent };
103
+ export { NEU_TABS_CONTEXT, NeuTabLabelDirective, NeuTabPanelComponent, NeuTabsComponent };
91
104
  export type { NeuTab };
@@ -1,11 +1,41 @@
1
1
  import * as _angular_core from '@angular/core';
2
+ import { TemplateRef } from '@angular/core';
2
3
  import { ControlValueAccessor } from '@angular/forms';
3
4
 
5
+ interface NeuTagSuggestion {
6
+ label: string;
7
+ value: string;
8
+ data?: unknown;
9
+ }
10
+ declare class NeuTagItemDirective {
11
+ readonly templateRef: TemplateRef<{
12
+ $implicit: string;
13
+ remove: () => void;
14
+ }>;
15
+ constructor(templateRef: TemplateRef<{
16
+ $implicit: string;
17
+ remove: () => void;
18
+ }>);
19
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuTagItemDirective, never>;
20
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NeuTagItemDirective, "ng-template[neuTagItem]", never, {}, {}, never, never, true, never>;
21
+ }
22
+ declare class NeuTagSuggestionDirective {
23
+ readonly templateRef: TemplateRef<{
24
+ $implicit: NeuTagSuggestion;
25
+ }>;
26
+ constructor(templateRef: TemplateRef<{
27
+ $implicit: NeuTagSuggestion;
28
+ }>);
29
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuTagSuggestionDirective, never>;
30
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NeuTagSuggestionDirective, "ng-template[neuTagSuggestion]", never, {}, {}, never, never, true, never>;
31
+ }
4
32
  declare class NeuTagsComponent implements ControlValueAccessor {
33
+ readonly tagTpl: _angular_core.Signal<NeuTagItemDirective | undefined>;
34
+ readonly suggestionTpl: _angular_core.Signal<NeuTagSuggestionDirective | undefined>;
5
35
  readonly label: _angular_core.InputSignal<string>;
6
36
  readonly placeholder: _angular_core.InputSignal<string>;
7
37
  readonly disabled: _angular_core.InputSignal<boolean>;
8
- readonly suggestions: _angular_core.InputSignal<string[]>;
38
+ readonly suggestions: _angular_core.InputSignal<(string | NeuTagSuggestion)[]>;
9
39
  readonly separators: _angular_core.InputSignal<string[]>;
10
40
  readonly removeLabel: _angular_core.InputSignal<string>;
11
41
  readonly valueChange: _angular_core.OutputEmitterRef<string[]>;
@@ -13,7 +43,7 @@ declare class NeuTagsComponent implements ControlValueAccessor {
13
43
  readonly value: _angular_core.WritableSignal<string[]>;
14
44
  readonly draft: _angular_core.WritableSignal<string>;
15
45
  readonly cvaDisabled: _angular_core.WritableSignal<boolean>;
16
- readonly filteredSuggestions: _angular_core.Signal<string[]>;
46
+ readonly filteredSuggestions: _angular_core.Signal<NeuTagSuggestion[]>;
17
47
  private onChange;
18
48
  private onTouched;
19
49
  writeValue(value: string[] | null): void;
@@ -26,7 +56,8 @@ declare class NeuTagsComponent implements ControlValueAccessor {
26
56
  remove(tag: string): void;
27
57
  private commit;
28
58
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuTagsComponent, never>;
29
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuTagsComponent, "neu-tags", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "suggestions": { "alias": "suggestions"; "required": false; "isSignal": true; }; "separators": { "alias": "separators"; "required": false; "isSignal": true; }; "removeLabel": { "alias": "removeLabel"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
59
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuTagsComponent, "neu-tags", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "suggestions": { "alias": "suggestions"; "required": false; "isSignal": true; }; "separators": { "alias": "separators"; "required": false; "isSignal": true; }; "removeLabel": { "alias": "removeLabel"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, ["tagTpl", "suggestionTpl"], never, true, never>;
30
60
  }
31
61
 
32
- export { NeuTagsComponent };
62
+ export { NeuTagItemDirective, NeuTagSuggestionDirective, NeuTagsComponent };
63
+ export type { NeuTagSuggestion };
@@ -1,4 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
+ import { TemplateRef } from '@angular/core';
2
3
 
3
4
  type NeuTimelineItemVariant = 'default' | 'success' | 'warning' | 'danger' | 'info';
4
5
  interface NeuTimelineItem {
@@ -13,6 +14,28 @@ interface NeuTimelineItem {
13
14
  /** Icono SVG path opcional / Optional SVG path icon */
14
15
  icon?: string;
15
16
  }
17
+ declare class NeuTimelineItemDirective {
18
+ readonly templateRef: TemplateRef<{
19
+ $implicit: NeuTimelineItem;
20
+ index: number;
21
+ }>;
22
+ constructor(templateRef: TemplateRef<{
23
+ $implicit: NeuTimelineItem;
24
+ index: number;
25
+ }>);
26
+ static ɵfac: i0.ɵɵFactoryDeclaration<NeuTimelineItemDirective, never>;
27
+ static ɵdir: i0.ɵɵDirectiveDeclaration<NeuTimelineItemDirective, "ng-template[neuTimelineItem]", never, {}, {}, never, never, true, never>;
28
+ }
29
+ declare class NeuTimelineMarkerDirective {
30
+ readonly templateRef: TemplateRef<{
31
+ $implicit: NeuTimelineItem;
32
+ }>;
33
+ constructor(templateRef: TemplateRef<{
34
+ $implicit: NeuTimelineItem;
35
+ }>);
36
+ static ɵfac: i0.ɵɵFactoryDeclaration<NeuTimelineMarkerDirective, never>;
37
+ static ɵdir: i0.ɵɵDirectiveDeclaration<NeuTimelineMarkerDirective, "ng-template[neuTimelineMarker]", never, {}, {}, never, never, true, never>;
38
+ }
16
39
  /**
17
40
  * NeuralUI Timeline Component
18
41
  *
@@ -23,11 +46,13 @@ interface NeuTimelineItem {
23
46
  * <neu-timeline [items]="events" align="right" />
24
47
  */
25
48
  declare class NeuTimelineComponent {
49
+ readonly itemTpl: i0.Signal<NeuTimelineItemDirective | undefined>;
50
+ readonly markerTpl: i0.Signal<NeuTimelineMarkerDirective | undefined>;
26
51
  /** Eventos a mostrar / Events to display */
27
52
  items: i0.InputSignal<NeuTimelineItem[]>;
28
53
  static ɵfac: i0.ɵɵFactoryDeclaration<NeuTimelineComponent, never>;
29
- static ɵcmp: i0.ɵɵComponentDeclaration<NeuTimelineComponent, "neu-timeline", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
54
+ static ɵcmp: i0.ɵɵComponentDeclaration<NeuTimelineComponent, "neu-timeline", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; }, {}, ["itemTpl", "markerTpl"], never, true, never>;
30
55
  }
31
56
 
32
- export { NeuTimelineComponent };
57
+ export { NeuTimelineComponent, NeuTimelineItemDirective, NeuTimelineMarkerDirective };
33
58
  export type { NeuTimelineItem, NeuTimelineItemVariant };
@@ -1,4 +1,5 @@
1
1
  import * as _angular_core from '@angular/core';
2
+ import { TemplateRef } from '@angular/core';
2
3
  import { ControlValueAccessor } from '@angular/forms';
3
4
  import { NeuButtonSize } from '@neural-ui/core/button';
4
5
 
@@ -12,6 +13,18 @@ interface NeuToggleOption<T = unknown> {
12
13
  /** Deshabilita solo esta opción / Disables this option only */
13
14
  disabled?: boolean;
14
15
  }
16
+ declare class NeuToggleButtonItemDirective<T = unknown> {
17
+ readonly templateRef: TemplateRef<{
18
+ $implicit: NeuToggleOption<T>;
19
+ selected: boolean;
20
+ }>;
21
+ constructor(templateRef: TemplateRef<{
22
+ $implicit: NeuToggleOption<T>;
23
+ selected: boolean;
24
+ }>);
25
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuToggleButtonItemDirective<any>, never>;
26
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NeuToggleButtonItemDirective<any>, "ng-template[neuToggleButtonItem]", never, {}, {}, never, never, true, never>;
27
+ }
15
28
  /**
16
29
  * NeuralUI ToggleButtonGroup Component
17
30
  *
@@ -25,6 +38,7 @@ interface NeuToggleOption<T = unknown> {
25
38
  * <neu-toggle-button-group [options]="opts" [multiple]="true" [formControl]="valuesCtrl" />
26
39
  */
27
40
  declare class NeuToggleButtonGroupComponent<T = unknown> implements ControlValueAccessor {
41
+ readonly itemTpl: _angular_core.Signal<NeuToggleButtonItemDirective<any> | undefined>;
28
42
  /** Lista de opciones del grupo / Group option list */
29
43
  options: _angular_core.InputSignal<NeuToggleOption<T>[]>;
30
44
  /**
@@ -56,8 +70,8 @@ declare class NeuToggleButtonGroupComponent<T = unknown> implements ControlValue
56
70
  registerOnTouched(fn: () => void): void;
57
71
  setDisabledState(isDisabled: boolean): void;
58
72
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuToggleButtonGroupComponent<any>, never>;
59
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuToggleButtonGroupComponent<any>, "neu-toggle-button-group", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "neuChange": "neuChange"; }, never, never, true, never>;
73
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuToggleButtonGroupComponent<any>, "neu-toggle-button-group", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "neuChange": "neuChange"; }, ["itemTpl"], never, true, never>;
60
74
  }
61
75
 
62
- export { NeuToggleButtonGroupComponent };
76
+ export { NeuToggleButtonGroupComponent, NeuToggleButtonItemDirective };
63
77
  export type { NeuToggleOption };
@@ -1,4 +1,5 @@
1
1
  import * as _angular_core from '@angular/core';
2
+ import { TemplateRef } from '@angular/core';
2
3
  import { ControlValueAccessor } from '@angular/forms';
3
4
 
4
5
  interface NeuTreeSelectNode {
@@ -13,7 +14,52 @@ interface FlatNode {
13
14
  node: NeuTreeSelectNode;
14
15
  level: number;
15
16
  }
17
+ interface NeuTreeSelectNodeTemplateContext {
18
+ $implicit: NeuTreeSelectNode;
19
+ level: number;
20
+ selected: boolean;
21
+ toggle: () => void;
22
+ }
23
+ declare class NeuTreeSelectNodeDirective {
24
+ readonly templateRef: TemplateRef<NeuTreeSelectNodeTemplateContext>;
25
+ constructor(templateRef: TemplateRef<NeuTreeSelectNodeTemplateContext>);
26
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuTreeSelectNodeDirective, never>;
27
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NeuTreeSelectNodeDirective, "ng-template[neuTreeSelectNode]", never, {}, {}, never, never, true, never>;
28
+ }
29
+ declare class NeuTreeSelectSelectedDirective {
30
+ readonly templateRef: TemplateRef<{
31
+ $implicit: NeuTreeSelectNode | null;
32
+ }>;
33
+ constructor(templateRef: TemplateRef<{
34
+ $implicit: NeuTreeSelectNode | null;
35
+ }>);
36
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuTreeSelectSelectedDirective, never>;
37
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NeuTreeSelectSelectedDirective, "ng-template[neuTreeSelectSelected]", never, {}, {}, never, never, true, never>;
38
+ }
39
+ declare class NeuTreeSelectHeaderDirective {
40
+ readonly templateRef: TemplateRef<void>;
41
+ constructor(templateRef: TemplateRef<void>);
42
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuTreeSelectHeaderDirective, never>;
43
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NeuTreeSelectHeaderDirective, "ng-template[neuTreeSelectHeader]", never, {}, {}, never, never, true, never>;
44
+ }
45
+ declare class NeuTreeSelectFooterDirective {
46
+ readonly templateRef: TemplateRef<void>;
47
+ constructor(templateRef: TemplateRef<void>);
48
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuTreeSelectFooterDirective, never>;
49
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NeuTreeSelectFooterDirective, "ng-template[neuTreeSelectFooter]", never, {}, {}, never, never, true, never>;
50
+ }
51
+ declare class NeuTreeSelectEmptyDirective {
52
+ readonly templateRef: TemplateRef<void>;
53
+ constructor(templateRef: TemplateRef<void>);
54
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuTreeSelectEmptyDirective, never>;
55
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NeuTreeSelectEmptyDirective, "ng-template[neuTreeSelectEmpty]", never, {}, {}, never, never, true, never>;
56
+ }
16
57
  declare class NeuTreeSelectComponent implements ControlValueAccessor {
58
+ readonly nodeTpl: _angular_core.Signal<NeuTreeSelectNodeDirective | undefined>;
59
+ readonly selectedTpl: _angular_core.Signal<NeuTreeSelectSelectedDirective | undefined>;
60
+ readonly headerTpl: _angular_core.Signal<NeuTreeSelectHeaderDirective | undefined>;
61
+ readonly footerTpl: _angular_core.Signal<NeuTreeSelectFooterDirective | undefined>;
62
+ readonly emptyTpl: _angular_core.Signal<NeuTreeSelectEmptyDirective | undefined>;
17
63
  readonly nodes: _angular_core.InputSignal<NeuTreeSelectNode[]>;
18
64
  readonly label: _angular_core.InputSignal<string>;
19
65
  readonly placeholder: _angular_core.InputSignal<string>;
@@ -33,6 +79,7 @@ declare class NeuTreeSelectComponent implements ControlValueAccessor {
33
79
  readonly cvaDisabled: _angular_core.WritableSignal<boolean>;
34
80
  readonly isDisabled: _angular_core.Signal<boolean>;
35
81
  readonly selectedLabel: _angular_core.Signal<string>;
82
+ readonly selectedNode: _angular_core.Signal<NeuTreeSelectNode | null>;
36
83
  readonly visibleNodes: _angular_core.Signal<FlatNode[]>;
37
84
  private onChange;
38
85
  private onTouched;
@@ -46,12 +93,13 @@ declare class NeuTreeSelectComponent implements ControlValueAccessor {
46
93
  isSelected(value: string): boolean;
47
94
  selectNode(node: NeuTreeSelectNode): void;
48
95
  toggleExpanded(node: NeuTreeSelectNode, event: Event): void;
96
+ toggleExpandedFromTemplate(node: NeuTreeSelectNode): void;
49
97
  private commit;
50
98
  private flatten;
51
99
  private flattenVisible;
52
100
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuTreeSelectComponent, never>;
53
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuTreeSelectComponent, "neu-tree-select", never, { "nodes": { "alias": "nodes"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "emptyLabel": { "alias": "emptyLabel"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "selectionChange": "selectionChange"; "nodeExpand": "nodeExpand"; }, never, never, true, never>;
101
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuTreeSelectComponent, "neu-tree-select", never, { "nodes": { "alias": "nodes"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "emptyLabel": { "alias": "emptyLabel"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "selectionChange": "selectionChange"; "nodeExpand": "nodeExpand"; }, ["nodeTpl", "selectedTpl", "headerTpl", "footerTpl", "emptyTpl"], never, true, never>;
54
102
  }
55
103
 
56
- export { NeuTreeSelectComponent };
57
- export type { NeuTreeSelectNode };
104
+ export { NeuTreeSelectComponent, NeuTreeSelectEmptyDirective, NeuTreeSelectFooterDirective, NeuTreeSelectHeaderDirective, NeuTreeSelectNodeDirective, NeuTreeSelectSelectedDirective };
105
+ export type { NeuTreeSelectNode, NeuTreeSelectNodeTemplateContext };
@@ -1,4 +1,5 @@
1
1
  import * as _angular_core from '@angular/core';
2
+ import { TemplateRef } from '@angular/core';
2
3
 
3
4
  interface NeuTreeNode<T = unknown> {
4
5
  id: string;
@@ -12,7 +13,21 @@ interface NeuTreeNode<T = unknown> {
12
13
  data?: T;
13
14
  }
14
15
  type NeuTreeSelectionMode = 'single' | 'multiple';
16
+ interface NeuTreeNodeTemplateContext {
17
+ $implicit: NeuTreeNode;
18
+ level: number;
19
+ selected: boolean;
20
+ expanded: boolean;
21
+ toggle: () => void;
22
+ }
23
+ declare class NeuTreeNodeDirective {
24
+ readonly templateRef: TemplateRef<NeuTreeNodeTemplateContext>;
25
+ constructor(templateRef: TemplateRef<NeuTreeNodeTemplateContext>);
26
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuTreeNodeDirective, never>;
27
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NeuTreeNodeDirective, "ng-template[neuTreeNode]", never, {}, {}, never, never, true, never>;
28
+ }
15
29
  declare class NeuTreeComponent {
30
+ readonly nodeTpl: _angular_core.Signal<NeuTreeNodeDirective | undefined>;
16
31
  nodes: _angular_core.InputSignal<NeuTreeNode<unknown>[]>;
17
32
  selectable: _angular_core.InputSignal<boolean>;
18
33
  searchable: _angular_core.InputSignal<boolean>;
@@ -45,8 +60,8 @@ declare class NeuTreeComponent {
45
60
  private collectSelectedNodes;
46
61
  private filterNodes;
47
62
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuTreeComponent, never>;
48
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuTreeComponent, "neu-tree", never, { "nodes": { "alias": "nodes"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "selectionMode": { "alias": "selectionMode"; "required": false; "isSignal": true; }; "indentSize": { "alias": "indentSize"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "emptyLabel": { "alias": "emptyLabel"; "required": false; "isSignal": true; }; "expandLabel": { "alias": "expandLabel"; "required": false; "isSignal": true; }; "collapseLabel": { "alias": "collapseLabel"; "required": false; "isSignal": true; }; }, { "selectionChange": "selectionChange"; "expansionChange": "expansionChange"; "nodeClick": "nodeClick"; }, never, never, true, never>;
63
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuTreeComponent, "neu-tree", never, { "nodes": { "alias": "nodes"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "selectionMode": { "alias": "selectionMode"; "required": false; "isSignal": true; }; "indentSize": { "alias": "indentSize"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "emptyLabel": { "alias": "emptyLabel"; "required": false; "isSignal": true; }; "expandLabel": { "alias": "expandLabel"; "required": false; "isSignal": true; }; "collapseLabel": { "alias": "collapseLabel"; "required": false; "isSignal": true; }; }, { "selectionChange": "selectionChange"; "expansionChange": "expansionChange"; "nodeClick": "nodeClick"; }, ["nodeTpl"], never, true, never>;
49
64
  }
50
65
 
51
- export { NeuTreeComponent };
52
- export type { NeuTreeNode, NeuTreeSelectionMode };
66
+ export { NeuTreeComponent, NeuTreeNodeDirective };
67
+ export type { NeuTreeNode, NeuTreeNodeTemplateContext, NeuTreeSelectionMode };