@ngneers/controls 0.0.1-next.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 (186) hide show
  1. package/fesm2022/ngneers-controls-accordion.mjs +234 -0
  2. package/fesm2022/ngneers-controls-accordion.mjs.map +1 -0
  3. package/fesm2022/ngneers-controls-api-ng.mjs +959 -0
  4. package/fesm2022/ngneers-controls-api-ng.mjs.map +1 -0
  5. package/fesm2022/ngneers-controls-api-resize.mjs +712 -0
  6. package/fesm2022/ngneers-controls-api-resize.mjs.map +1 -0
  7. package/fesm2022/ngneers-controls-api.mjs +347 -0
  8. package/fesm2022/ngneers-controls-api.mjs.map +1 -0
  9. package/fesm2022/ngneers-controls-avatar.mjs +77 -0
  10. package/fesm2022/ngneers-controls-avatar.mjs.map +1 -0
  11. package/fesm2022/ngneers-controls-base.mjs +620 -0
  12. package/fesm2022/ngneers-controls-base.mjs.map +1 -0
  13. package/fesm2022/ngneers-controls-breadcrumb.mjs +100 -0
  14. package/fesm2022/ngneers-controls-breadcrumb.mjs.map +1 -0
  15. package/fesm2022/ngneers-controls-button-group.mjs +110 -0
  16. package/fesm2022/ngneers-controls-button-group.mjs.map +1 -0
  17. package/fesm2022/ngneers-controls-button.mjs +83 -0
  18. package/fesm2022/ngneers-controls-button.mjs.map +1 -0
  19. package/fesm2022/ngneers-controls-calendar-time-CJT5AFlA.mjs +74 -0
  20. package/fesm2022/ngneers-controls-calendar-time-CJT5AFlA.mjs.map +1 -0
  21. package/fesm2022/ngneers-controls-calendar.mjs +801 -0
  22. package/fesm2022/ngneers-controls-calendar.mjs.map +1 -0
  23. package/fesm2022/ngneers-controls-checkbox.mjs +63 -0
  24. package/fesm2022/ngneers-controls-checkbox.mjs.map +1 -0
  25. package/fesm2022/ngneers-controls-chip.mjs +55 -0
  26. package/fesm2022/ngneers-controls-chip.mjs.map +1 -0
  27. package/fesm2022/ngneers-controls-default-icons.mjs +82 -0
  28. package/fesm2022/ngneers-controls-default-icons.mjs.map +1 -0
  29. package/fesm2022/ngneers-controls-defer.mjs +72 -0
  30. package/fesm2022/ngneers-controls-defer.mjs.map +1 -0
  31. package/fesm2022/ngneers-controls-dialog.mjs +407 -0
  32. package/fesm2022/ngneers-controls-dialog.mjs.map +1 -0
  33. package/fesm2022/ngneers-controls-directives.mjs +498 -0
  34. package/fesm2022/ngneers-controls-directives.mjs.map +1 -0
  35. package/fesm2022/ngneers-controls-drawer.mjs +271 -0
  36. package/fesm2022/ngneers-controls-drawer.mjs.map +1 -0
  37. package/fesm2022/ngneers-controls-edit-inplace.mjs +127 -0
  38. package/fesm2022/ngneers-controls-edit-inplace.mjs.map +1 -0
  39. package/fesm2022/ngneers-controls-errors.mjs +329 -0
  40. package/fesm2022/ngneers-controls-errors.mjs.map +1 -0
  41. package/fesm2022/ngneers-controls-filter.mjs +708 -0
  42. package/fesm2022/ngneers-controls-filter.mjs.map +1 -0
  43. package/fesm2022/ngneers-controls-hint.mjs +153 -0
  44. package/fesm2022/ngneers-controls-hint.mjs.map +1 -0
  45. package/fesm2022/ngneers-controls-i18n-translations-de.mjs +170 -0
  46. package/fesm2022/ngneers-controls-i18n-translations-de.mjs.map +1 -0
  47. package/fesm2022/ngneers-controls-i18n-translations-en.mjs +170 -0
  48. package/fesm2022/ngneers-controls-i18n-translations-en.mjs.map +1 -0
  49. package/fesm2022/ngneers-controls-i18n.mjs +57 -0
  50. package/fesm2022/ngneers-controls-i18n.mjs.map +1 -0
  51. package/fesm2022/ngneers-controls-icon.mjs +195 -0
  52. package/fesm2022/ngneers-controls-icon.mjs.map +1 -0
  53. package/fesm2022/ngneers-controls-inplace.mjs +150 -0
  54. package/fesm2022/ngneers-controls-inplace.mjs.map +1 -0
  55. package/fesm2022/ngneers-controls-input-field.mjs +165 -0
  56. package/fesm2022/ngneers-controls-input-field.mjs.map +1 -0
  57. package/fesm2022/ngneers-controls-input.mjs +72 -0
  58. package/fesm2022/ngneers-controls-input.mjs.map +1 -0
  59. package/fesm2022/ngneers-controls-item-view.mjs +473 -0
  60. package/fesm2022/ngneers-controls-item-view.mjs.map +1 -0
  61. package/fesm2022/ngneers-controls-list-box.mjs +281 -0
  62. package/fesm2022/ngneers-controls-list-box.mjs.map +1 -0
  63. package/fesm2022/ngneers-controls-mask-input.mjs +888 -0
  64. package/fesm2022/ngneers-controls-mask-input.mjs.map +1 -0
  65. package/fesm2022/ngneers-controls-menu.mjs +371 -0
  66. package/fesm2022/ngneers-controls-menu.mjs.map +1 -0
  67. package/fesm2022/ngneers-controls-message.mjs +30 -0
  68. package/fesm2022/ngneers-controls-message.mjs.map +1 -0
  69. package/fesm2022/ngneers-controls-number-input.mjs +366 -0
  70. package/fesm2022/ngneers-controls-number-input.mjs.map +1 -0
  71. package/fesm2022/ngneers-controls-paginator.mjs +129 -0
  72. package/fesm2022/ngneers-controls-paginator.mjs.map +1 -0
  73. package/fesm2022/ngneers-controls-popover.mjs +215 -0
  74. package/fesm2022/ngneers-controls-popover.mjs.map +1 -0
  75. package/fesm2022/ngneers-controls-progress.mjs +98 -0
  76. package/fesm2022/ngneers-controls-progress.mjs.map +1 -0
  77. package/fesm2022/ngneers-controls-radio.mjs +152 -0
  78. package/fesm2022/ngneers-controls-radio.mjs.map +1 -0
  79. package/fesm2022/ngneers-controls-roving-focus.mjs +323 -0
  80. package/fesm2022/ngneers-controls-roving-focus.mjs.map +1 -0
  81. package/fesm2022/ngneers-controls-scroll-shadow.mjs +65 -0
  82. package/fesm2022/ngneers-controls-scroll-shadow.mjs.map +1 -0
  83. package/fesm2022/ngneers-controls-scroller.mjs +308 -0
  84. package/fesm2022/ngneers-controls-scroller.mjs.map +1 -0
  85. package/fesm2022/ngneers-controls-select-button.mjs +58 -0
  86. package/fesm2022/ngneers-controls-select-button.mjs.map +1 -0
  87. package/fesm2022/ngneers-controls-select.mjs +417 -0
  88. package/fesm2022/ngneers-controls-select.mjs.map +1 -0
  89. package/fesm2022/ngneers-controls-slider.mjs +167 -0
  90. package/fesm2022/ngneers-controls-slider.mjs.map +1 -0
  91. package/fesm2022/ngneers-controls-snackbar.mjs +414 -0
  92. package/fesm2022/ngneers-controls-snackbar.mjs.map +1 -0
  93. package/fesm2022/ngneers-controls-spin-buttons.mjs +126 -0
  94. package/fesm2022/ngneers-controls-spin-buttons.mjs.map +1 -0
  95. package/fesm2022/ngneers-controls-spinner.mjs +184 -0
  96. package/fesm2022/ngneers-controls-spinner.mjs.map +1 -0
  97. package/fesm2022/ngneers-controls-splitter.mjs +604 -0
  98. package/fesm2022/ngneers-controls-splitter.mjs.map +1 -0
  99. package/fesm2022/ngneers-controls-state.mjs +185 -0
  100. package/fesm2022/ngneers-controls-state.mjs.map +1 -0
  101. package/fesm2022/ngneers-controls-switch.mjs +39 -0
  102. package/fesm2022/ngneers-controls-switch.mjs.map +1 -0
  103. package/fesm2022/ngneers-controls-table.mjs +2634 -0
  104. package/fesm2022/ngneers-controls-table.mjs.map +1 -0
  105. package/fesm2022/ngneers-controls-tabs.mjs +336 -0
  106. package/fesm2022/ngneers-controls-tabs.mjs.map +1 -0
  107. package/fesm2022/ngneers-controls-tag.mjs +30 -0
  108. package/fesm2022/ngneers-controls-tag.mjs.map +1 -0
  109. package/fesm2022/ngneers-controls-toast.mjs +350 -0
  110. package/fesm2022/ngneers-controls-toast.mjs.map +1 -0
  111. package/fesm2022/ngneers-controls-toggle-button.mjs +70 -0
  112. package/fesm2022/ngneers-controls-toggle-button.mjs.map +1 -0
  113. package/fesm2022/ngneers-controls-tooltip.mjs +506 -0
  114. package/fesm2022/ngneers-controls-tooltip.mjs.map +1 -0
  115. package/fesm2022/ngneers-controls-tree.mjs +599 -0
  116. package/fesm2022/ngneers-controls-tree.mjs.map +1 -0
  117. package/fesm2022/ngneers-controls-upload.mjs +377 -0
  118. package/fesm2022/ngneers-controls-upload.mjs.map +1 -0
  119. package/fesm2022/ngneers-controls-utils-ng.mjs +411 -0
  120. package/fesm2022/ngneers-controls-utils-ng.mjs.map +1 -0
  121. package/fesm2022/ngneers-controls-utils.mjs +261 -0
  122. package/fesm2022/ngneers-controls-utils.mjs.map +1 -0
  123. package/fesm2022/ngneers-controls.mjs +6 -0
  124. package/fesm2022/ngneers-controls.mjs.map +1 -0
  125. package/package.json +302 -0
  126. package/types/ngneers-controls-accordion.d.ts +139 -0
  127. package/types/ngneers-controls-api-ng.d.ts +364 -0
  128. package/types/ngneers-controls-api-resize.d.ts +318 -0
  129. package/types/ngneers-controls-api.d.ts +145 -0
  130. package/types/ngneers-controls-avatar.d.ts +54 -0
  131. package/types/ngneers-controls-base.d.ts +277 -0
  132. package/types/ngneers-controls-breadcrumb.d.ts +272 -0
  133. package/types/ngneers-controls-button-group.d.ts +46 -0
  134. package/types/ngneers-controls-button.d.ts +48 -0
  135. package/types/ngneers-controls-calendar.d.ts +466 -0
  136. package/types/ngneers-controls-checkbox.d.ts +40 -0
  137. package/types/ngneers-controls-chip.d.ts +202 -0
  138. package/types/ngneers-controls-default-icons.d.ts +5 -0
  139. package/types/ngneers-controls-defer.d.ts +48 -0
  140. package/types/ngneers-controls-dialog.d.ts +399 -0
  141. package/types/ngneers-controls-directives.d.ts +171 -0
  142. package/types/ngneers-controls-drawer.d.ts +308 -0
  143. package/types/ngneers-controls-edit-inplace.d.ts +263 -0
  144. package/types/ngneers-controls-errors.d.ts +155 -0
  145. package/types/ngneers-controls-filter.d.ts +609 -0
  146. package/types/ngneers-controls-hint.d.ts +88 -0
  147. package/types/ngneers-controls-i18n-translations-de.d.ts +164 -0
  148. package/types/ngneers-controls-i18n-translations-en.d.ts +164 -0
  149. package/types/ngneers-controls-i18n.d.ts +186 -0
  150. package/types/ngneers-controls-icon.d.ts +68 -0
  151. package/types/ngneers-controls-inplace.d.ts +98 -0
  152. package/types/ngneers-controls-input-field.d.ts +248 -0
  153. package/types/ngneers-controls-input.d.ts +30 -0
  154. package/types/ngneers-controls-item-view.d.ts +215 -0
  155. package/types/ngneers-controls-list-box.d.ts +334 -0
  156. package/types/ngneers-controls-mask-input.d.ts +434 -0
  157. package/types/ngneers-controls-menu.d.ts +192 -0
  158. package/types/ngneers-controls-message.d.ts +21 -0
  159. package/types/ngneers-controls-number-input.d.ts +146 -0
  160. package/types/ngneers-controls-paginator.d.ts +255 -0
  161. package/types/ngneers-controls-popover.d.ts +116 -0
  162. package/types/ngneers-controls-progress.d.ts +49 -0
  163. package/types/ngneers-controls-radio.d.ts +91 -0
  164. package/types/ngneers-controls-roving-focus.d.ts +107 -0
  165. package/types/ngneers-controls-scroll-shadow.d.ts +25 -0
  166. package/types/ngneers-controls-scroller.d.ts +151 -0
  167. package/types/ngneers-controls-select-button.d.ts +51 -0
  168. package/types/ngneers-controls-select.d.ts +409 -0
  169. package/types/ngneers-controls-slider.d.ts +57 -0
  170. package/types/ngneers-controls-snackbar.d.ts +330 -0
  171. package/types/ngneers-controls-spin-buttons.d.ts +69 -0
  172. package/types/ngneers-controls-spinner.d.ts +117 -0
  173. package/types/ngneers-controls-splitter.d.ts +465 -0
  174. package/types/ngneers-controls-state.d.ts +102 -0
  175. package/types/ngneers-controls-switch.d.ts +18 -0
  176. package/types/ngneers-controls-table.d.ts +3127 -0
  177. package/types/ngneers-controls-tabs.d.ts +118 -0
  178. package/types/ngneers-controls-tag.d.ts +21 -0
  179. package/types/ngneers-controls-toast.d.ts +298 -0
  180. package/types/ngneers-controls-toggle-button.d.ts +48 -0
  181. package/types/ngneers-controls-tooltip.d.ts +189 -0
  182. package/types/ngneers-controls-tree.d.ts +409 -0
  183. package/types/ngneers-controls-upload.d.ts +347 -0
  184. package/types/ngneers-controls-utils-ng.d.ts +129 -0
  185. package/types/ngneers-controls-utils.d.ts +130 -0
  186. package/types/ngneers-controls.d.ts +2 -0
@@ -0,0 +1,465 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { Signal, EmbeddedViewRef, OnDestroy } from '@angular/core';
3
+ import * as _ngneers_controls_splitter from '@ngneers/controls/splitter';
4
+ import * as _ngneers_signal_translate from '@ngneers/signal-translate';
5
+ import * as _ngneers_controls_api_ng from '@ngneers/controls/api/ng';
6
+ import * as _ngneers_controls_themes from '@ngneers/controls-themes';
7
+ import { NgnBase } from '@ngneers/controls/base';
8
+ import { NgnStateStorage } from '@ngneers/controls/utils-ng';
9
+
10
+ /**
11
+ * @category control
12
+ */
13
+ declare class NgnSplitterPanel extends NgnBase<'splitter'> {
14
+ protected readonly theme: _ngneers_controls_api_ng.ControlTemplateInfo<_ngneers_controls_themes.ControlTemplate<"splitter", ["root", "horizontal", "vertical", "panel", "divider", "divider-handle", "dragging", "divider-dragging", `kind-${string}`], readonly []>>;
15
+ private readonly _fallbackAreaName;
16
+ /**
17
+ * The name of the panel, used to identify it in the persisted splitter state and in {@link NgnSplitter.panelOrder}.
18
+ * If nullish, a generated fallback name is used.
19
+ */
20
+ readonly name: _angular_core.InputSignal<string | null | undefined>;
21
+ /**
22
+ * The size of the panel along the splitter's layout axis. Accepts `fr` or `px` units.
23
+ * @default 1fr
24
+ */
25
+ readonly size: _angular_core.ModelSignal<`${number}px` | `${number}fr`>;
26
+ /**
27
+ * The minimum size the panel can be resized to.
28
+ * @default 0px
29
+ */
30
+ readonly minSize: _angular_core.ModelSignal<`${number}px` | `${number}%`>;
31
+ /**
32
+ * The maximum size the panel can be resized to.
33
+ * @default 100%
34
+ */
35
+ readonly maxSize: _angular_core.ModelSignal<`${number}px` | `${number}%`>;
36
+ /**
37
+ * Sets the `aria-label` for the panel region.
38
+ */
39
+ readonly ariaLabel: _angular_core.InputSignal<string | null | undefined>;
40
+ /**
41
+ * Sets the `aria-labelledby` for the panel region.
42
+ */
43
+ readonly ariaLabelledBy: _angular_core.InputSignal<string | null | undefined>;
44
+ protected readonly gridArea: _angular_core.Signal<string>;
45
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgnSplitterPanel, never>;
46
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgnSplitterPanel, "ngn-splitter-panel", never, { "name": { "alias": "name"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "minSize": { "alias": "minSize"; "required": false; "isSignal": true; }; "maxSize": { "alias": "maxSize"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "ariaLabelledBy": { "alias": "ariaLabelledBy"; "required": false; "isSignal": true; }; }, { "size": "sizeChange"; "minSize": "minSizeChange"; "maxSize": "maxSizeChange"; }, never, ["*"], true, never>;
47
+ }
48
+
49
+ type SplitterPanelSizeUnit = 'px' | 'fr';
50
+ type SplitterPanelSize<U extends SplitterPanelSizeUnit = SplitterPanelSizeUnit> = `${number}${U}`;
51
+ type SplitterPanelSizeLimitUnit = 'px' | '%';
52
+ type SplitterPanelSizeLimit<U extends SplitterPanelSizeLimitUnit = SplitterPanelSizeLimitUnit> = `${number}${U}`;
53
+ type SplitterLayout = 'horizontal' | 'vertical';
54
+ /** Splitter supports adjacent and proportional resize modes (not push). */
55
+ type SplitterResizeMode = 'adjacent' | 'proportional';
56
+ type _SplitterState = {
57
+ layout?: SplitterLayout;
58
+ panelOrder?: string[] | null;
59
+ panelSizes?: Record<string, SplitterPanelSize> | null;
60
+ };
61
+ type SplitterStateData = keyof _SplitterState;
62
+ type SplitterState = _SplitterState & {
63
+ [key: string]: unknown;
64
+ };
65
+
66
+ /**
67
+ * Type interface for the {@link SplitterCalculator} interface.
68
+ */
69
+ interface SplitterCalculatorType {
70
+ new (splitter: NgnSplitter): SplitterCalculator;
71
+ }
72
+ /**
73
+ * Represents a calculator for the {@link NgnSplitter} component, handling panel sizes, drag events, and min/max size constraints.
74
+ * This interface defines the methods and properties required for managing the splitter's layout and behavior.
75
+ */
76
+ interface SplitterCalculator {
77
+ /**
78
+ * Signal that provides the ordered list of panels in the splitter.
79
+ */
80
+ orderedPanels: Signal<readonly NgnSplitterPanel[]>;
81
+ /**
82
+ * Signal that provides the grid template sizes for the splitter (to use in `grid-template-rows` or `grid-template-columns` CSS properties).
83
+ */
84
+ gridTemplateSizes: Signal<string>;
85
+ /**
86
+ * Signal that provides the grid template areas for the splitter (to use in `grid-template-areas` CSS property).
87
+ */
88
+ gridTemplateAreas: Signal<string | null>;
89
+ /**
90
+ * Signal that provides the current drag context. Returns `null` if no drag is in progress.
91
+ */
92
+ dragContext: Signal<SplitterDragContext | null>;
93
+ /**
94
+ * Signal that provides the minimum size of the splitter, calculated based on the panels' min sizes and dividers.
95
+ */
96
+ minSize: Signal<string>;
97
+ /**
98
+ * Signal that provides the maximum size of the splitter, calculated based on the panels' max sizes and dividers.
99
+ */
100
+ maxSize: Signal<string>;
101
+ /**
102
+ * Starts a drag operation for the specified divider index.
103
+ * @param index The index of the divider to start dragging.
104
+ * @param event The pointer event that initiated the drag.
105
+ */
106
+ startDrag(index: number, event: PointerEvent): void;
107
+ /**
108
+ * Handles the drag operation for the specified divider index.
109
+ * @param index The index of the divider being dragged.
110
+ * @param event The pointer event that is being processed during the drag.
111
+ */
112
+ drag(index: number, event: PointerEvent): void;
113
+ /**
114
+ * Ends the drag operation for the specified divider index.
115
+ * @param index The index of the divider being dragged.
116
+ * @param event The pointer event that ended the drag.
117
+ * @param isCancel Whether the drag operation was cancelled. If true, the panel sizes will be reset to their original values.
118
+ */
119
+ endDrag(index: number, event: PointerEvent, isCancel: boolean): void;
120
+ /**
121
+ * Moves the divider at the specified index by the given pixel delta.
122
+ * @param index The index of the divider to move.
123
+ * @param pxDelta The pixel delta to move the divider by. Positive values move the divider to the right (or down), negative values move it to the left (or up).
124
+ */
125
+ moveDivider(index: number, pxDelta: number): void;
126
+ }
127
+ /**
128
+ * Represents the context of a drag operation in the splitter.
129
+ */
130
+ type SplitterDragContext = {
131
+ /**
132
+ * The index of the divider being dragged.
133
+ */
134
+ dividerIndex: number;
135
+ /**
136
+ * The ID of the pointer that initiated the drag operation.
137
+ */
138
+ pointerId: number;
139
+ /**
140
+ * The starting position of the pointer when the drag operation started, in pixels.
141
+ */
142
+ startPosition: number;
143
+ };
144
+ /**
145
+ * Default implementation of the {@link SplitterCalculator} interface.
146
+ * Delegates all resize math to the generic {@link ResizeEngine}.
147
+ */
148
+ declare class DefaultSplitterCalculator implements SplitterCalculator {
149
+ protected readonly panels: Signal<readonly NgnSplitterPanel[]>;
150
+ protected readonly dividers: Signal<readonly EmbeddedViewRef<unknown>[]>;
151
+ protected readonly panelOrder: Signal<readonly string[] | null | undefined>;
152
+ protected readonly layout: Signal<SplitterLayout>;
153
+ protected readonly splitterSize: Signal<number>;
154
+ private readonly _engine;
155
+ constructor(splitter: NgnSplitter);
156
+ readonly orderedPanels: Signal<readonly NgnSplitterPanel[]>;
157
+ readonly gridTemplateSizes: Signal<string>;
158
+ readonly gridTemplateAreas: Signal<string | null>;
159
+ readonly minSize: Signal<string>;
160
+ readonly maxSize: Signal<string>;
161
+ readonly dragContext: _angular_core.WritableSignal<SplitterDragContext | null>;
162
+ protected readonly dividerSizes: Signal<number[]>;
163
+ startDrag(index: number, event: PointerEvent): void;
164
+ drag(index: number, event: PointerEvent): void;
165
+ endDrag(index: number, event: PointerEvent, isCancel: boolean): void;
166
+ moveDivider(index: number, pxDelta: number): void;
167
+ /**
168
+ * Ensures all panels respect their min/max size constraints.
169
+ * Delegates to the underlying {@link ResizeEngine}.
170
+ */
171
+ ensureMinMaxSizes(): void;
172
+ /** @internal — used by tests to seed panel sizes into the engine. */
173
+ setPanelSize(panel: NgnSplitterPanel, size: string): void;
174
+ }
175
+
176
+ /**
177
+ * @category control
178
+ */
179
+ declare class NgnSplitter extends NgnBase<'splitter'> implements OnDestroy {
180
+ private readonly _viewContainer;
181
+ private readonly _config;
182
+ protected readonly theme: _ngneers_controls_api_ng.ControlTemplateInfo<_ngneers_controls_themes.ControlTemplate<"splitter", ["root", "horizontal", "vertical", "panel", "divider", "divider-handle", "dragging", "divider-dragging", `kind-${string}`], readonly []>>;
183
+ protected readonly translations: _ngneers_signal_translate.TranslationsSignal<{
184
+ calendar: {
185
+ today: string;
186
+ input: string;
187
+ selectYear: string;
188
+ selectMonth: string;
189
+ previousMonth: string;
190
+ nextMonth: string;
191
+ weekdays: {
192
+ monday: string;
193
+ tuesday: string;
194
+ wednesday: string;
195
+ thursday: string;
196
+ friday: string;
197
+ saturday: string;
198
+ sunday: string;
199
+ };
200
+ weekdaysShort: {
201
+ monday: string;
202
+ tuesday: string;
203
+ wednesday: string;
204
+ thursday: string;
205
+ friday: string;
206
+ saturday: string;
207
+ sunday: string;
208
+ };
209
+ months: {
210
+ january: string;
211
+ february: string;
212
+ march: string;
213
+ april: string;
214
+ may: string;
215
+ june: string;
216
+ july: string;
217
+ august: string;
218
+ september: string;
219
+ october: string;
220
+ november: string;
221
+ december: string;
222
+ };
223
+ };
224
+ editInplace: {
225
+ placeholder: string;
226
+ confirm: string;
227
+ };
228
+ filter: {
229
+ noFilter: string;
230
+ addCondition: string;
231
+ removeCondition: string;
232
+ operator: string;
233
+ value: string;
234
+ clear: string;
235
+ apply: string;
236
+ cancel: string;
237
+ matchModeLabel: string;
238
+ match: {
239
+ all: string;
240
+ any: string;
241
+ and: string;
242
+ or: string;
243
+ };
244
+ selected: string;
245
+ conditions: string;
246
+ operators: {
247
+ isEqual: string;
248
+ isNotEqual: string;
249
+ contains: string;
250
+ startsWith: string;
251
+ endsWith: string;
252
+ in: string;
253
+ isEmpty: string;
254
+ isNotEmpty: string;
255
+ greaterThan: string;
256
+ greaterThanOrEqual: string;
257
+ lessThan: string;
258
+ lessThanOrEqual: string;
259
+ after: string;
260
+ onOrAfter: string;
261
+ before: string;
262
+ onOrBefore: string;
263
+ isTrue: string;
264
+ isFalse: string;
265
+ custom: string;
266
+ };
267
+ };
268
+ splitter: {
269
+ handleLabel: string;
270
+ };
271
+ inputField: {
272
+ clearInput: string;
273
+ };
274
+ maskInput: {
275
+ roleDescription: string;
276
+ segmentRange: string;
277
+ optionSeparator: string;
278
+ };
279
+ drawer: {
280
+ close: string;
281
+ };
282
+ dialog: {
283
+ close: string;
284
+ };
285
+ chip: {
286
+ close: string;
287
+ };
288
+ breadcrumb: {
289
+ overflow: string;
290
+ };
291
+ toast: {
292
+ close: string;
293
+ region: string;
294
+ };
295
+ snackbar: {
296
+ close: string;
297
+ region: string;
298
+ severity: {
299
+ error: string;
300
+ warning: string;
301
+ success: string;
302
+ info: string;
303
+ };
304
+ };
305
+ upload: {
306
+ upload: string;
307
+ uploadNamed: string;
308
+ retryNamed: string;
309
+ cancelNamed: string;
310
+ removeNamed: string;
311
+ progressNamed: string;
312
+ };
313
+ select: {
314
+ filterOptions: string;
315
+ };
316
+ paginator: {
317
+ previousPage: string;
318
+ nextPage: string;
319
+ };
320
+ listBox: {
321
+ noItemsFound: string;
322
+ };
323
+ tree: {
324
+ noItemsFound: string;
325
+ };
326
+ table: {
327
+ selectAllRows: string;
328
+ selectRow: string;
329
+ sortedBy: string;
330
+ sortAscending: string;
331
+ sortDescending: string;
332
+ sortCleared: string;
333
+ selectedCount: string;
334
+ page: string;
335
+ resultCount: string;
336
+ };
337
+ state: {
338
+ loading: string;
339
+ success: string;
340
+ warning: string;
341
+ error: string;
342
+ cancelled: string;
343
+ };
344
+ }, "_">;
345
+ /**
346
+ * The layout of the splitter.
347
+ */
348
+ readonly layout: _angular_core.ModelSignal<SplitterLayout>;
349
+ /**
350
+ * A array of panel names that defines the order of panels.
351
+ * If nullish, the order is determined by the order the panels are defined in the template.
352
+ */
353
+ readonly panelOrder: _angular_core.ModelSignal<string[] | null | undefined>;
354
+ /**
355
+ * The storage to use for saving the splitter state.
356
+ * @default `session`
357
+ */
358
+ readonly stateStorage: _angular_core.InputSignal<NgnStateStorage>;
359
+ /**
360
+ * The key to use for saving the splitter state.
361
+ * If nullish, the state will not be saved.
362
+ */
363
+ readonly stateKey: _angular_core.InputSignal<string | null | undefined>;
364
+ /**
365
+ * The type of data to save in the splitter state.
366
+ * @default `['layout', 'panelOrder', 'panelSizes']`
367
+ */
368
+ readonly stateData: _angular_core.InputSignal<readonly (keyof {
369
+ layout?: SplitterLayout;
370
+ panelOrder?: string[] | null;
371
+ panelSizes?: Record<string, _ngneers_controls_splitter.SplitterPanelSize> | null;
372
+ })[]>;
373
+ /**
374
+ * The type of calculator to use for the splitter.
375
+ * @default `DefaultSplitterCalculator`
376
+ */
377
+ readonly calculatorType: _angular_core.InputSignal<SplitterCalculatorType>;
378
+ /**
379
+ * The resize distribution mode for the splitter.
380
+ * - `'adjacent'`: Only the panels adjacent to the divider are resized.
381
+ * - `'proportional'`: The deficit is distributed proportionally across all panels on the other side.
382
+ * @default adjacent
383
+ */
384
+ readonly resizeMode: _angular_core.InputSignal<SplitterResizeMode>;
385
+ /**
386
+ * Whether to lock affected panels to fixed `px` values after a resize completes.
387
+ * When `true`, panels whose size changed are converted from their original unit to `px`.
388
+ * When `false`, panels keep their original units (`fr`, `px`).
389
+ * @default false
390
+ */
391
+ readonly lockSizes: _angular_core.InputSignal<boolean>;
392
+ /**
393
+ * The step size for moving the dividers using the keyboard.
394
+ * This can be a pixel value (e.g., '5px') or a percentage value (e.g., '5%').
395
+ * If a percentage is used, it will be calculated based on the size of the splitter element.
396
+ * @default '5px'
397
+ */
398
+ readonly step: _angular_core.InputSignal<`${number}px` | `${number}%`>;
399
+ /**
400
+ * Event emitted when the splitter state is being saved.
401
+ * This can be used to modify the state before it is saved.
402
+ */
403
+ readonly stateSaving: _angular_core.OutputEmitterRef<SplitterState>;
404
+ /**
405
+ * Event emitted when the splitter state is loaded.
406
+ * This can be used to modify the state before it is applied or to perform actions based on the loaded state.
407
+ */
408
+ readonly stateLoading: _angular_core.OutputEmitterRef<SplitterState>;
409
+ protected readonly dividerTemplateType: {
410
+ index: number;
411
+ };
412
+ private readonly _dividerTemplate;
413
+ /**
414
+ * The current dividers in the splitter.
415
+ */
416
+ readonly dividers: _angular_core.WritableSignal<EmbeddedViewRef<{
417
+ index: number;
418
+ }>[]>;
419
+ /**
420
+ * The current panels in the splitter.
421
+ */
422
+ readonly panels: _angular_core.Signal<readonly NgnSplitterPanel[]>;
423
+ /**
424
+ * The current size of the splitter element.
425
+ */
426
+ readonly elementSize: _angular_core.Signal<_ngneers_controls_api_ng.Size>;
427
+ /**
428
+ * A value indicating whether the splitter is currently being dragged.
429
+ */
430
+ readonly isDragging: _angular_core.Signal<boolean>;
431
+ protected readonly calculator: _angular_core.Signal<_ngneers_controls_splitter.SplitterCalculator>;
432
+ constructor();
433
+ ngOnDestroy(): void;
434
+ protected onHandlePointerDown(index: number, event: PointerEvent): void;
435
+ protected onHandlePointerMove(index: number, event: PointerEvent): void;
436
+ protected onHandlePointerUp(index: number, event: PointerEvent): void;
437
+ protected onHandlePointerCancel(index: number, event: PointerEvent): void;
438
+ protected onHandleKeyDown(index: number, event: KeyboardEvent): void;
439
+ private updateDividers;
440
+ private createDivider;
441
+ private moveDividerBefore;
442
+ private computeState;
443
+ private onStateLoad;
444
+ private ensureValidState;
445
+ private applyFromState;
446
+ /**
447
+ * The divider's current position as a percentage (0–100) of the total panel
448
+ * content size, used for `aria-valuenow` on the `role="separator"` handle.
449
+ * Reads `gridTemplateSizes()` to stay reactive to resizes, then measures the
450
+ * rendered panel sizes on either side of the divider.
451
+ */
452
+ protected dividerValueNow(index: number): number;
453
+ private getStepInPx;
454
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgnSplitter, never>;
455
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgnSplitter, "ngn-splitter", never, { "layout": { "alias": "layout"; "required": true; "isSignal": true; }; "panelOrder": { "alias": "panelOrder"; "required": false; "isSignal": true; }; "stateStorage": { "alias": "stateStorage"; "required": false; "isSignal": true; }; "stateKey": { "alias": "stateKey"; "required": false; "isSignal": true; }; "stateData": { "alias": "stateData"; "required": false; "isSignal": true; }; "calculatorType": { "alias": "calculatorType"; "required": false; "isSignal": true; }; "resizeMode": { "alias": "resizeMode"; "required": false; "isSignal": true; }; "lockSizes": { "alias": "lockSizes"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; }, { "layout": "layoutChange"; "panelOrder": "panelOrderChange"; "stateSaving": "stateSaving"; "stateLoading": "stateLoading"; }, ["panels"], ["*"], true, never>;
456
+ }
457
+
458
+ declare class NgnSplitterModule {
459
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgnSplitterModule, never>;
460
+ static ɵmod: _angular_core.ɵɵNgModuleDeclaration<NgnSplitterModule, never, [typeof NgnSplitter, typeof NgnSplitterPanel], [typeof NgnSplitter, typeof NgnSplitterPanel]>;
461
+ static ɵinj: _angular_core.ɵɵInjectorDeclaration<NgnSplitterModule>;
462
+ }
463
+
464
+ export { DefaultSplitterCalculator, NgnSplitter, NgnSplitterModule, NgnSplitterPanel };
465
+ export type { SplitterCalculator, SplitterCalculatorType, SplitterDragContext, SplitterLayout, SplitterPanelSize, SplitterPanelSizeLimit, SplitterPanelSizeLimitUnit, SplitterPanelSizeUnit, SplitterResizeMode, SplitterState, SplitterStateData };
@@ -0,0 +1,102 @@
1
+ import * as _ngneers_controls_api_ng from '@ngneers/controls/api/ng';
2
+ import * as _ngneers_controls_themes from '@ngneers/controls-themes';
3
+ import * as _ngneers_controls_custom_types from '@ngneers/controls-custom-types';
4
+ import * as _iconify_types from '@iconify/types';
5
+ import * as _angular_core from '@angular/core';
6
+ import { NgnBase } from '@ngneers/controls/base';
7
+
8
+ /**
9
+ * @category control
10
+ */
11
+ declare class NgnState extends NgnBase<'state'> {
12
+ private readonly i18n;
13
+ /**
14
+ * Whether the indicator is rendered and occupies layout space.
15
+ * @default true
16
+ */
17
+ readonly visible: _angular_core.InputSignalWithTransform<boolean, unknown>;
18
+ /**
19
+ * Whether the indicator should replace sibling button content while visible.
20
+ * @default false
21
+ */
22
+ readonly replaceContent: _angular_core.InputSignalWithTransform<boolean, unknown>;
23
+ /**
24
+ * Indicator size in px.
25
+ * @default 16
26
+ */
27
+ readonly size: _angular_core.InputSignal<number>;
28
+ /**
29
+ * Optional spinner stroke thickness. Passed through to ngn-spinner for loading state.
30
+ */
31
+ readonly thickness: _angular_core.InputSignal<string | undefined>;
32
+ /**
33
+ * Visually-hidden text announced to assistive tech in place of the kind's
34
+ * default label. Use it to convey app-specific meaning (e.g. `"Saving…"`
35
+ * instead of `"Loading"`). When unset, a localized label is derived from the
36
+ * applied {@link kind}.
37
+ */
38
+ readonly label: _angular_core.InputSignal<string | undefined>;
39
+ /**
40
+ * Politeness of the live region used to announce the state to assistive tech.
41
+ * When omitted, it is derived from the applied {@link kind}: `error`/`warning`
42
+ * announce as `assertive` (mapped to `role="alert"`), everything else as
43
+ * `polite` (`role="status"`).
44
+ */
45
+ readonly ariaLive: _angular_core.InputSignal<"polite" | "assertive" | "off" | undefined>;
46
+ /**
47
+ * Icon shown when the applied kind is `cancelled`.
48
+ * @category inputs
49
+ */
50
+ readonly iconCancelled: _angular_core.InputSignal<_iconify_types.IconifyIcon | _ngneers_controls_custom_types.NgnIconEntry | undefined>;
51
+ /**
52
+ * Icon shown when the applied kind is `success`.
53
+ * @category inputs
54
+ */
55
+ readonly iconSuccess: _angular_core.InputSignal<_iconify_types.IconifyIcon | _ngneers_controls_custom_types.NgnIconEntry | undefined>;
56
+ /**
57
+ * Icon shown when the applied kind is `warning`.
58
+ * @category inputs
59
+ */
60
+ readonly iconWarning: _angular_core.InputSignal<_iconify_types.IconifyIcon | _ngneers_controls_custom_types.NgnIconEntry | undefined>;
61
+ /**
62
+ * Icon shown when the applied kind is `error`.
63
+ * @category inputs
64
+ */
65
+ readonly iconError: _angular_core.InputSignal<_iconify_types.IconifyIcon | _ngneers_controls_custom_types.NgnIconEntry | undefined>;
66
+ protected readonly theme: _ngneers_controls_api_ng.ControlTemplateInfo<_ngneers_controls_themes.ControlTemplate<"state", ["root", "visible", "replace-content", "indicator", "sr-only", `kind-${string}`], readonly [{
67
+ readonly class: "icon";
68
+ readonly template: _ngneers_controls_themes.ControlTemplate<"icon", ["root", "default"], readonly []>;
69
+ }, {
70
+ readonly class: "spinner";
71
+ readonly template: _ngneers_controls_themes.ControlTemplate<"spinner", ["root", "circle", "svg", `color-${string}`, "centered"], readonly []>;
72
+ }, {
73
+ readonly class: "button";
74
+ readonly template: _ngneers_controls_themes.ControlTemplate<"button", ["root", "inline", "loading", `kind-${string}`, `color-${string}`], readonly []>;
75
+ readonly projected: true;
76
+ }, {
77
+ readonly class: "input-field";
78
+ readonly template: _ngneers_controls_themes.ControlTemplate<"input-field", ["root", "host", "disabled", "readonly", "invalid", "label", "clear-button", `labelKind-${string}`], readonly [{
79
+ readonly class: "input";
80
+ readonly template: _ngneers_controls_themes.ControlTemplate<"input", ["root", "invalid", "empty"], readonly []>;
81
+ readonly projected: true;
82
+ }]>;
83
+ readonly projected: true;
84
+ }]>>;
85
+ protected readonly icon: _angular_core.Signal<_iconify_types.IconifyIcon | _ngneers_controls_custom_types.NgnIconEntry | undefined>;
86
+ protected readonly defaultIcon: _angular_core.Signal<"accordion-collapse" | "accordion-expand" | "breadcrumb-separator" | "breadcrumb-overflow" | "calendar-trigger" | "calendar-previous-month" | "calendar-next-month" | "checkbox-checked" | "checkbox-indeterminate" | "chip-remove" | "dialog-close" | "drawer-close" | "dropdown-toggle" | "edit-confirm" | "filter-active" | "filter-inactive" | "filter-remove" | "hint-info" | "hint-success" | "hint-warning" | "hint-error" | "input-clear" | "menu-submenu" | "paginator-previous" | "paginator-next" | "search" | "sort-neutral" | "sort-ascending" | "sort-descending" | "spin-decrement" | "spin-increment" | "table-group-toggle" | "tabs-scroll-left" | "tabs-scroll-right" | "toast-close" | "snackbar-close" | "upload-trigger" | "upload-done" | "upload-failed" | "upload-retry" | "upload-cancel" | "upload-remove" | undefined>;
87
+ /**
88
+ * Accessible label for the current state: the explicit {@link label} input,
89
+ * else a localized default for the applied kind. `undefined` when the
90
+ * indicator is hidden or no known kind is applied — the host then carries no
91
+ * live region.
92
+ */
93
+ protected readonly resolvedLabel: _angular_core.Signal<string | undefined>;
94
+ /** Resolved live-region politeness — explicit input, else derived from kind. */
95
+ protected readonly liveMode: _angular_core.Signal<"polite" | "assertive" | "off" | null>;
96
+ /** Landmark role paired with {@link liveMode} — `alert` when assertive, else `status`. */
97
+ protected readonly role: _angular_core.Signal<"status" | "alert" | null>;
98
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgnState, never>;
99
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgnState, "ngn-state", never, { "visible": { "alias": "visible"; "required": false; "isSignal": true; }; "replaceContent": { "alias": "replaceContent"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "thickness": { "alias": "thickness"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "ariaLive": { "alias": "ariaLive"; "required": false; "isSignal": true; }; "iconCancelled": { "alias": "iconCancelled"; "required": false; "isSignal": true; }; "iconSuccess": { "alias": "iconSuccess"; "required": false; "isSignal": true; }; "iconWarning": { "alias": "iconWarning"; "required": false; "isSignal": true; }; "iconError": { "alias": "iconError"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
100
+ }
101
+
102
+ export { NgnState };
@@ -0,0 +1,18 @@
1
+ import * as _ngneers_controls_api_ng from '@ngneers/controls/api/ng';
2
+ import * as _ngneers_controls_themes from '@ngneers/controls-themes';
3
+ import { ValueControlBase } from '@ngneers/controls/base';
4
+ import * as i0 from '@angular/core';
5
+
6
+ /**
7
+ * @category control
8
+ */
9
+ declare class NgnSwitch extends ValueControlBase<'switch', boolean> {
10
+ protected readonly theme: _ngneers_controls_api_ng.ControlTemplateInfo<_ngneers_controls_themes.ControlTemplate<"switch", ["root", "input", "track", "track-checked", "thumb", "invalid"], readonly []>>;
11
+ protected changed(event: Event): void;
12
+ protected onClick(event: Event): void;
13
+ constructor();
14
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgnSwitch, never>;
15
+ static ɵcmp: i0.ɵɵComponentDeclaration<NgnSwitch, "ngn-switch", never, {}, {}, never, never, true, never>;
16
+ }
17
+
18
+ export { NgnSwitch };