@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,139 @@
1
+ import * as _ngneers_controls_custom_types from '@ngneers/controls-custom-types';
2
+ import * as _iconify_types from '@iconify/types';
3
+ import * as _angular_core from '@angular/core';
4
+ import { TemplateRef, ElementRef } from '@angular/core';
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
+
9
+ /**
10
+ * @category control
11
+ */
12
+ declare class NgnAccordion extends NgnBase<'accordion'> {
13
+ protected readonly theme: _ngneers_controls_api_ng.ControlTemplateInfo<_ngneers_controls_themes.ControlTemplate<"accordion", ["root"], readonly []>>;
14
+ /**
15
+ * Whether to keep lazily-loaded panel content in the DOM after the panel closes.
16
+ * Applies as the default for every panel; individual panels can override it.
17
+ * @default false
18
+ */
19
+ readonly cache: _angular_core.InputSignalWithTransform<boolean, unknown>;
20
+ /**
21
+ * Whether to defer rendering each panel's content until it is first expanded.
22
+ * Applies as the default for every panel; individual panels can override it.
23
+ * @default false
24
+ */
25
+ readonly lazy: _angular_core.InputSignalWithTransform<boolean, unknown>;
26
+ /**
27
+ * Icon shown on a panel header when the panel is expanded.
28
+ */
29
+ readonly iconExpanded: _angular_core.InputSignal<_iconify_types.IconifyIcon | _ngneers_controls_custom_types.NgnIconEntry | undefined>;
30
+ /**
31
+ * Icon shown on a panel header when the panel is collapsed.
32
+ */
33
+ readonly iconCollapsed: _angular_core.InputSignal<_iconify_types.IconifyIcon | _ngneers_controls_custom_types.NgnIconEntry | undefined>;
34
+ /**
35
+ * Whether multiple panels can be expanded at once. When `false`, expanding a
36
+ * panel collapses any other open panel.
37
+ * @default false
38
+ */
39
+ readonly multiple: _angular_core.InputSignalWithTransform<boolean, unknown>;
40
+ /**
41
+ * The ids of the currently expanded panels. Two-way bindable to control or
42
+ * observe which panels are open.
43
+ * @default []
44
+ */
45
+ readonly expandedPanels: _angular_core.ModelSignal<string[]>;
46
+ togglePanel(panelId: string): void;
47
+ constructor();
48
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgnAccordion, never>;
49
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgnAccordion, "ngn-accordion", never, { "cache": { "alias": "cache"; "required": false; "isSignal": true; }; "lazy": { "alias": "lazy"; "required": false; "isSignal": true; }; "iconExpanded": { "alias": "iconExpanded"; "required": false; "isSignal": true; }; "iconCollapsed": { "alias": "iconCollapsed"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "expandedPanels": { "alias": "expandedPanels"; "required": false; "isSignal": true; }; }, { "expandedPanels": "expandedPanelsChange"; }, never, ["*"], true, never>;
50
+ }
51
+
52
+ type HeaderTemplateType = {
53
+ $implicit: {
54
+ panelId: string;
55
+ text?: string;
56
+ expanded: boolean;
57
+ };
58
+ };
59
+
60
+ declare abstract class AccordionTemplates extends NgnBase<'accordionPanel'> {
61
+ private readonly _defaultHeaderTemplate;
62
+ private readonly _userHeaderTemplate;
63
+ /**
64
+ * Set a custom template for the header of the accordion panel.
65
+ * Can also be set using an `<ng-template>` element with `#header` template reference variable.
66
+ */
67
+ readonly templateHeader: _angular_core.InputSignal<TemplateRef<HeaderTemplateType> | null>;
68
+ protected readonly headerTemplate: _angular_core.Signal<TemplateRef<HeaderTemplateType>>;
69
+ private readonly _userContentTemplate;
70
+ /**
71
+ * The required template for the content of the accordion panel.
72
+ * Can also be set using an `<ng-template>` element with `#content` template reference variable.
73
+ */
74
+ readonly templateContent: _angular_core.InputSignal<TemplateRef<unknown> | null>;
75
+ protected readonly contentTemplate: _angular_core.Signal<TemplateRef<unknown> | null>;
76
+ /**
77
+ * Types for the dialog templates.
78
+ */
79
+ readonly templateTypes: {
80
+ header: HeaderTemplateType;
81
+ } & {
82
+ $implicit: {
83
+ header: Partial<HeaderTemplateType>;
84
+ };
85
+ };
86
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AccordionTemplates, never>;
87
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AccordionTemplates, never, never, { "templateHeader": { "alias": "templateHeader"; "required": false; "isSignal": true; }; "templateContent": { "alias": "templateContent"; "required": false; "isSignal": true; }; }, {}, ["_userHeaderTemplate", "_userContentTemplate"], never, true, never>;
88
+ }
89
+
90
+ /**
91
+ * @category control
92
+ */
93
+ declare class NgnAccordionPanel extends AccordionTemplates {
94
+ protected readonly theme: _ngneers_controls_api_ng.ControlTemplateInfo<_ngneers_controls_themes.ControlTemplate<"accordion-panel", ["root", "header", "header-disabled", "header-text", "content-expander", "content-expander-collapsed", "content"], readonly []>>;
95
+ private readonly _accordionControl;
96
+ /**
97
+ * The unique identifier for the accordion panel.
98
+ * @default generateElementId()
99
+ */
100
+ readonly panelId: _angular_core.InputSignal<string>;
101
+ /**
102
+ * Whether to lazily load the content of the panel when expanded.
103
+ * @default false
104
+ */
105
+ readonly lazy: _angular_core.InputSignalWithTransform<boolean | null, unknown>;
106
+ /**
107
+ * Whether to cache the content of the panel when {@link lazy} is enabled and the panel is closed.
108
+ * @default false
109
+ */
110
+ readonly cache: _angular_core.InputSignalWithTransform<boolean | null, unknown>;
111
+ /**
112
+ * The header text for the accordion panel.
113
+ */
114
+ readonly header: _angular_core.InputSignal<string | undefined>;
115
+ /**
116
+ * Whether the accordion panel is disabled. Disabling will prevent user interaction,
117
+ * but not automatically close the panel if it was already expanded, or is expanded programatically.
118
+ * @default false
119
+ */
120
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
121
+ protected readonly iconExpanded: _angular_core.Signal<_iconify_types.IconifyIcon | _ngneers_controls_custom_types.NgnIconEntry>;
122
+ protected readonly iconCollapsed: _angular_core.Signal<_iconify_types.IconifyIcon | _ngneers_controls_custom_types.NgnIconEntry>;
123
+ protected readonly _contentViewChild: _angular_core.Signal<ElementRef<HTMLElement>>;
124
+ protected readonly expanded: _angular_core.Signal<boolean>;
125
+ protected readonly headerId: _angular_core.Signal<string>;
126
+ protected readonly contentId: _angular_core.Signal<string>;
127
+ protected readonly afterTransitionExpanded: _angular_core.WritableSignal<boolean>;
128
+ protected readonly lazyInt: _angular_core.Signal<boolean>;
129
+ protected readonly cacheInt: _angular_core.Signal<boolean>;
130
+ constructor();
131
+ /**
132
+ * Toggles the expanded state of the accordion panel.
133
+ */
134
+ toggle(): void;
135
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgnAccordionPanel, never>;
136
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgnAccordionPanel, "ngn-accordion-panel", never, { "panelId": { "alias": "panelId"; "required": false; "isSignal": true; }; "lazy": { "alias": "lazy"; "required": false; "isSignal": true; }; "cache": { "alias": "cache"; "required": false; "isSignal": true; }; "header": { "alias": "header"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
137
+ }
138
+
139
+ export { NgnAccordion, NgnAccordionPanel };
@@ -0,0 +1,364 @@
1
+ import * as i0 from '@angular/core';
2
+ import { InjectionToken, Provider, ModelSignal, OutputEmitterRef, Signal, EnvironmentProviders, ComponentRef, InputSignal, InputSignalWithTransform, Injector, ElementRef, OnDestroy } from '@angular/core';
3
+ import { Translations } from '@ngneers/controls/i18n';
4
+ import { TimeSpan, LogLevel, DeepPartial } from '@ngneers/controls/utils';
5
+ import { Placement, Strategy, Middleware, ComputePositionReturn, Side, Alignment } from '@floating-ui/dom';
6
+ import { NgnStateStorage } from '@ngneers/controls/utils-ng';
7
+ import { Theme, StyleScope, ControlName, ThemeClasses, ThemeTemplate, ControlTemplate } from '@ngneers/controls-themes';
8
+ import { Observable } from 'rxjs';
9
+ import { CustomColor, CustomKind } from '@ngneers/controls-custom-types';
10
+
11
+ type TooltipOptions = {
12
+ /**
13
+ * The placement of the tooltip relative to the anchor element.
14
+ * @default bottom
15
+ */
16
+ readonly placement: Placement;
17
+ /**
18
+ * The offset in Pixels of the tooltip from the anchor element.
19
+ * @default 4
20
+ */
21
+ readonly offset: number;
22
+ /**
23
+ * The delay before the tooltip is shown. If a number is provided, it is interpreted as milliseconds.
24
+ * @default '0.5s'
25
+ */
26
+ readonly showDelay: TimeSpan;
27
+ /**
28
+ * The delay before the tooltip is hidden. If a number is provided, it is interpreted as milliseconds.
29
+ * @default '0.1s'
30
+ */
31
+ readonly hideDelay: TimeSpan;
32
+ /**
33
+ * Whether to show an arrow pointing to the anchor element. `""` is equivalent to `true`.
34
+ * @default true
35
+ */
36
+ readonly showArrow: boolean;
37
+ /**
38
+ * Shows the tooltip on hover.
39
+ * @default true
40
+ */
41
+ readonly showOnHover: boolean;
42
+ /**
43
+ * Shows the tooltip on focus.
44
+ * @default true
45
+ */
46
+ readonly showOnFocus: boolean;
47
+ /**
48
+ * Hides the tooltip (without delay) when the mouse hovers over the tooltip.
49
+ * @default false
50
+ */
51
+ readonly hideOnTooltipHover: boolean;
52
+ /**
53
+ * Hides the tooltip (without delay) when the user clicks on the tooltip.
54
+ * @default true
55
+ */
56
+ readonly hideOnClick: boolean;
57
+ /**
58
+ * Whether to automatically manage ARIA attributes for the tooltip.
59
+ * @default 'description'
60
+ */
61
+ readonly autoAriaMode: 'label' | 'description' | 'none';
62
+ };
63
+
64
+ declare const NGN_CONFIG: InjectionToken<NgnConfig>;
65
+ type NgnConfig = {
66
+ readonly logLevel: LogLevel;
67
+ readonly customTranslations?: Record<string, () => Promise<Translations>>;
68
+ readonly disableAnimations: boolean;
69
+ readonly theme: {
70
+ readonly preset: Theme | null;
71
+ readonly lazyLoaded: boolean;
72
+ readonly styleScope: StyleScope | null;
73
+ readonly cssLayer: string | null;
74
+ readonly namePrefix: string;
75
+ };
76
+ readonly defaults: {
77
+ readonly stateStorage: NgnStateStorage;
78
+ readonly splitter: {
79
+ readonly stateStorage: NgnStateStorage;
80
+ };
81
+ readonly tooltip: TooltipOptions;
82
+ };
83
+ };
84
+ type NgnConfigInit = DeepPartial<NgnConfig, 'theme.preset.*' | 'theme.styleScope.*' | 'customTranslations.*'>;
85
+ declare const defaultNgnConfig: NgnConfig;
86
+ declare function provideNgnConfig(config?: NgnConfigInit): Provider;
87
+
88
+ type PopoverCloseBy = 'any' | 'none';
89
+ type CloseBy = PopoverCloseBy | 'escape';
90
+ declare function toPopoverCloseBy(closeBy: CloseBy): 'auto' | 'manual';
91
+ declare function toModalCloseBy(closeBy: CloseBy): 'any' | 'closerequest' | 'none';
92
+ interface Openable {
93
+ show(): void;
94
+ hide(): void;
95
+ toggle(): void;
96
+ open: ModelSignal<boolean>;
97
+ closed: OutputEmitterRef<void>;
98
+ }
99
+
100
+ type ColorScheme = 'light' | 'dark' | 'system';
101
+ /** Storage key shared by ColorSchemeService and colorSchemeInitScript. */
102
+ declare const COLOR_SCHEME_STORAGE_KEY = "ngn-color-scheme";
103
+ /** Synchronous storage for the color-scheme preference (raw enum string, not JSON). */
104
+ interface ColorSchemeStorage {
105
+ get(): ColorScheme | null;
106
+ set(value: ColorScheme): void;
107
+ }
108
+ declare const COLOR_SCHEME_STORAGE: InjectionToken<ColorSchemeStorage>;
109
+ /** All valid {@link ColorScheme} values; used to validate values read from storage. */
110
+ declare const COLOR_SCHEME_VALUES: readonly ColorScheme[];
111
+ declare class ColorSchemeService {
112
+ private readonly _platform;
113
+ private readonly _storage;
114
+ private readonly _preference;
115
+ readonly preference: Signal<ColorScheme>;
116
+ readonly resolved: Signal<'light' | 'dark'>;
117
+ readonly isDark: Signal<boolean>;
118
+ constructor();
119
+ set(pref: ColorScheme): void;
120
+ cycle(): void;
121
+ private readInitial;
122
+ static ɵfac: i0.ɵɵFactoryDeclaration<ColorSchemeService, never>;
123
+ static ɵprov: i0.ɵɵInjectableDeclaration<ColorSchemeService>;
124
+ }
125
+
126
+ type NgnFeature = {
127
+ providers: (Provider | EnvironmentProviders)[];
128
+ };
129
+ declare function provideNgnControls(config?: NgnConfigInit, ...features: NgnFeature[]): (Provider | EnvironmentProviders)[];
130
+
131
+ type ColorSchemeStorageOption = 'local' | 'session' | ColorSchemeStorage;
132
+ declare function colorSchemeInitScript(options?: {
133
+ storage?: 'local' | 'session';
134
+ }): string;
135
+ declare function withAutoColorScheme(options?: {
136
+ storage?: ColorSchemeStorageOption;
137
+ }): NgnFeature;
138
+
139
+ type ComponentFromRef<T extends ComponentRef<any>> = T extends ComponentRef<infer C> ? C : never;
140
+ type InputsFromComponent<T> = {
141
+ [K in keyof T]: T[K] extends InputSignal<infer V> ? V : T[K] extends InputSignalWithTransform<infer V, infer _> ? V : never;
142
+ };
143
+ declare function setComponentInput<T extends ComponentRef<C>, C, Input extends InputsFromComponent<ComponentFromRef<T>>, I extends keyof Input & string>(componentRef: T, inputName: I, value: Input[I]): void;
144
+
145
+ type Size = {
146
+ width: number;
147
+ height: number;
148
+ };
149
+ type ElementArray = Signal<ReadonlyArray<HTMLElement | ElementRef<HTMLElement>>> | ReadonlyArray<HTMLElement | ElementRef<HTMLElement>>;
150
+ type ElementSingle = Signal<HTMLElement | ElementRef<HTMLElement> | undefined> | HTMLElement | Document | ElementRef<HTMLElement>;
151
+ declare function elementSizeSignal(element: ElementSingle, active?: Signal<boolean>): Signal<Size>;
152
+ declare function elementsSizesSignal(element: ElementArray, active?: Signal<boolean>): Signal<readonly Size[]>;
153
+ /**
154
+ * @todo use dom event functions directly and remove this function
155
+ * @deprecated use dom event functions instead
156
+ */
157
+ declare function abortSignalOnDestroy(options?: {
158
+ injector?: Injector;
159
+ }): AbortSignal;
160
+ /**
161
+ * Creates an Observable that emits the latest event of the specified type from the given DOM element.
162
+ *
163
+ * ⚠️ Cannot be used to cancel or call preventDefault on the event, as the event is emitted after the event handler phase.
164
+ * @param element The target DOM element or ElementRef. Either can be provided directly or via a Signal.
165
+ * @param eventName The name of the event to listen for.
166
+ * @param injector Optional injector to use for lifecycle management. If not provided, the current injector is used.
167
+ * @returns An Observable that emits the latest event of the specified type. Does not complete until the injector is destroyed.
168
+ */
169
+ declare function domEventObservable<EventName extends keyof GlobalEventHandlersEventMap>(element: ElementSingle, eventName: EventName, injector?: Injector): Observable<GlobalEventHandlersEventMap[EventName]>;
170
+ /**
171
+ * Creates a Signal that emits the latest event of the specified type from the given DOM element.
172
+ *
173
+ * ⚠️ Cannot be used to cancel or call preventDefault on the event, as the event is emitted after the event handler phase.
174
+ * @param element The target DOM element or ElementRef. Either can be provided directly or via a Signal.
175
+ * @param eventName The name of the event to listen for.
176
+ * @param injector Optional injector to use for lifecycle management. If not provided, the current injector is used.
177
+ * @returns A Signal that emits the latest event of the specified type or null if no event has occurred.
178
+ */
179
+ declare function domEventSignal<EventName extends keyof GlobalEventHandlersEventMap>(element: ElementSingle, eventName: EventName, injector?: Injector): Signal<GlobalEventHandlersEventMap[EventName] | null>;
180
+ /**
181
+ * Attaches an event handler to a DOM element that is automatically removed when the injector is destroyed.
182
+ * @param element The target DOM element or ElementRef. Either can be provided directly or via a Signal.
183
+ * @param eventName The name of the event to listen for.
184
+ * @param handler The function to handle the event.
185
+ * @param injector Optional injector to use for lifecycle management. If not provided, the current injector is used.
186
+ * @param options Optional addEventListener options (e.g. `{ capture: true }`).
187
+ */
188
+ declare function domEventHandler<EventName extends keyof GlobalEventHandlersEventMap>(element: ElementSingle, eventName: EventName, handler: (event: GlobalEventHandlersEventMap[EventName]) => void, injector?: Injector, options?: AddEventListenerOptions): void;
189
+
190
+ /**
191
+ * Retrieves the available kinds for a given control from the active theme, as a reactive signal
192
+ * that updates when the active theme changes. Does **not** return custom kinds defined by the
193
+ * user in `NgnCustomTypes`.
194
+ * @param controlName The name of the control to get kinds for.
195
+ * @returns A signal of the available kinds for the specified control.
196
+ */
197
+ declare function injectThemeControlKinds<T extends string>(controlName: T): Signal<CustomKind<T>[]>;
198
+ /**
199
+ * Retrieves the available colors from the active theme, as a reactive signal that updates when
200
+ * the active theme changes. Does **not** return custom colors defined by the user in
201
+ * `NgnCustomTypes`.
202
+ * @returns A signal of the available colors.
203
+ */
204
+ declare function injectThemeColors(controlName?: string): Signal<CustomColor[]>;
205
+
206
+ type DeviceType = 'mobile' | 'desktop' | 'tablet';
207
+ declare class Platform {
208
+ private readonly _deviceType;
209
+ private readonly _prefersColorScheme;
210
+ readonly isBrowser: boolean;
211
+ readonly windowSize: Signal<Size>;
212
+ readonly width: Signal<number>;
213
+ readonly height: Signal<number>;
214
+ readonly prefersColorScheme: Signal<'light' | 'dark'>;
215
+ constructor();
216
+ readonly isTouchDevice: Signal<boolean>;
217
+ static ɵfac: i0.ɵɵFactoryDeclaration<Platform, never>;
218
+ static ɵprov: i0.ɵɵInjectableDeclaration<Platform>;
219
+ }
220
+
221
+ type Point = {
222
+ x: number;
223
+ y: number;
224
+ };
225
+ type Anchor = HTMLElement | Point;
226
+ type PositioningSizeConstraints = {
227
+ /**
228
+ * The minimum width of the floating element. When a string is provided, it is used as the CSS min-width value.
229
+ */
230
+ minWidth?: string;
231
+ /**
232
+ * The width of the floating element. When a number is provided, it is relative to the width of the reference element.
233
+ * When a string is provided, it is used as the CSS width value.
234
+ */
235
+ width?: number | string;
236
+ /**
237
+ * The maximum width of the floating element. When a number is provided, it is relative to the width of the reference element.
238
+ * When a string is provided, it is used as the CSS max-width value.
239
+ */
240
+ maxWidth?: number | string;
241
+ /**
242
+ * The height of the floating element. When a string is provided, it is used as the CSS height value.
243
+ */
244
+ height?: string;
245
+ /**
246
+ * The maximum height of the floating element. When a string is provided, it is used as the CSS max-height value.
247
+ */
248
+ maxHeight?: string;
249
+ /**
250
+ * The minimum height of the floating element. When a string is provided, it is used as the CSS min-height value.
251
+ */
252
+ minHeight?: string;
253
+ };
254
+ type PositioningOptions = {
255
+ injector?: Injector;
256
+ placement?: Placement;
257
+ flip?: boolean;
258
+ resize?: boolean;
259
+ shift?: boolean;
260
+ offset?: number;
261
+ stopped?: boolean;
262
+ sizeConstraints?: PositioningSizeConstraints;
263
+ strategy?: Strategy;
264
+ middleware?: Middleware[];
265
+ disableSettingStyles?: boolean;
266
+ hasShrinkableContent?: boolean;
267
+ onPositionChange?: (position: ComputePositionReturn) => void;
268
+ };
269
+ type AutoPositioningHandle = {
270
+ stop: () => void;
271
+ start: () => void;
272
+ isRunning: () => boolean;
273
+ };
274
+ /**
275
+ * Snap a coordinate to the device-pixel grid. floating-ui returns subpixel
276
+ * coordinates; setting them raw puts the floating element (and its arrow) on
277
+ * fractional boundaries, producing blurry, non-deterministic anti-aliasing.
278
+ * Rounding by DPR keeps rendering crisp and stable. Matches floating-ui's own
279
+ * `roundByDPR` guidance.
280
+ */
281
+ declare function roundByDpr(el: HTMLElement, value: number): number;
282
+ declare function positionElement(anchor: Anchor, floatingEl: HTMLElement, options?: PositioningOptions): void;
283
+ declare function autoPositionElement(anchor: Anchor, floatingEl: HTMLElement, options?: PositioningOptions): AutoPositioningHandle;
284
+ declare function splitPlacement(placement: Placement): [Side, Alignment | undefined];
285
+
286
+ type NgnStorageKind<T> = 'localstorage' | 'sessionstorage' | 'cookie' | {
287
+ initialize: () => T;
288
+ update: (value: T) => void;
289
+ };
290
+ declare class NgnStorage<T extends Record<string, unknown>> {
291
+ private readonly _store;
292
+ private readonly _set;
293
+ set<K extends keyof T>(key: K, value: T[K]): void;
294
+ get<K extends keyof T>(key: K): T[K] | undefined;
295
+ /**
296
+ * NOTE: must be constructed within an injection context — the built-in kinds
297
+ * read the platform (`PLATFORM_ID`) to stay SSR-safe, and the `cookie` kind
298
+ * additionally reads `DOCUMENT` / the SSR `REQUEST`.
299
+ */
300
+ constructor(key: string, kind: NgnStorageKind<T>, initialValue: T);
301
+ /** Parse persisted JSON, falling back to the caller's initial value. */
302
+ private _parse;
303
+ }
304
+
305
+ declare class NgnTemplate<T> {
306
+ readonly ngnTemplate: i0.InputSignal<T>;
307
+ static ngTemplateContextGuard<T>(dir: NgnTemplate<T>, ctx: unknown): ctx is T;
308
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgnTemplate<any>, never>;
309
+ static ɵdir: i0.ɵɵDirectiveDeclaration<NgnTemplate<any>, "ng-template[ngnTemplate]", never, { "ngnTemplate": { "alias": "ngnTemplate"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
310
+ }
311
+ /**
312
+ * A noop with return type T.
313
+ * This function is used to define typed properties to use in a template.
314
+ */
315
+ declare function templateTypesFn<T extends Record<string, Record<string, any>>>(): T & {
316
+ $implicit: { [K in keyof T]: Partial<T[K]>; };
317
+ };
318
+ /**
319
+ * A noop with return type `{ $implicit: Implicit } & Named`.
320
+ * This function is used to define a typed property to use in a template.
321
+ */
322
+ declare function templateTypeFn<Implicit, Named extends Record<string, any> = object>(): ([Implicit] extends [undefined] ? unknown : {
323
+ $implicit: Implicit;
324
+ }) & Named;
325
+
326
+ type AppliedThemeClassCfg<T extends ControlName> = keyof ThemeClasses<ThemeTemplate[T]> | Partial<Record<keyof ThemeClasses<ThemeTemplate[T]>, boolean | (() => boolean)>>;
327
+ type ControlTemplateInfo<T extends ControlTemplate<string, string[]>> = {
328
+ scope: string;
329
+ class: (className: T['classNames'][number]) => string;
330
+ classes: (classes: {
331
+ [K in T['classNames'][number]]?: boolean;
332
+ }) => string;
333
+ };
334
+ declare function themeTemplateToTemplateInfo<T extends ControlTemplate<string, string[]>>(config: NgnConfig, template: T, options?: {
335
+ unstyled?: () => boolean;
336
+ }): ControlTemplateInfo<T>;
337
+ declare function injectThemeTemplate<T extends ControlTemplate<string, string[]>>(template: T, options?: {
338
+ injector?: Injector;
339
+ unstyled?: () => boolean;
340
+ }): ControlTemplateInfo<T>;
341
+ declare function injectTheme<T extends ControlName>(controlName: T, options?: {
342
+ injector?: Injector;
343
+ }): ControlTemplate<T, string[]>;
344
+ declare function getAppliedClasses<T extends ControlName>(klass: AppliedThemeClassCfg<T>, themeTemplateInfo: Omit<ControlTemplateInfo<ControlTemplate<T, string[]>>, 'class' | 'classes'>): Array<{
345
+ class: string;
346
+ name: string;
347
+ }>;
348
+ declare class ThemeService implements OnDestroy {
349
+ private readonly _config;
350
+ private readonly _loadedScopes;
351
+ private readonly _document;
352
+ readonly activeTheme: i0.WritableSignal<Theme | null>;
353
+ constructor();
354
+ loadScope(scope: string): void;
355
+ ngOnDestroy(): void;
356
+ private onThemeChange;
357
+ private unloadAllScopes;
358
+ private applyTheme;
359
+ static ɵfac: i0.ɵɵFactoryDeclaration<ThemeService, never>;
360
+ static ɵprov: i0.ɵɵInjectableDeclaration<ThemeService>;
361
+ }
362
+
363
+ export { COLOR_SCHEME_STORAGE, COLOR_SCHEME_STORAGE_KEY, COLOR_SCHEME_VALUES, ColorSchemeService, NGN_CONFIG, NgnStorage, NgnTemplate, Platform, ThemeService, abortSignalOnDestroy, autoPositionElement, colorSchemeInitScript, defaultNgnConfig, domEventHandler, domEventObservable, domEventSignal, elementSizeSignal, elementsSizesSignal, getAppliedClasses, injectTheme, injectThemeColors, injectThemeControlKinds, injectThemeTemplate, positionElement, provideNgnConfig, provideNgnControls, roundByDpr, setComponentInput, splitPlacement, templateTypeFn, templateTypesFn, themeTemplateToTemplateInfo, toModalCloseBy, toPopoverCloseBy, withAutoColorScheme };
364
+ export type { Anchor, AppliedThemeClassCfg, AutoPositioningHandle, CloseBy, ColorScheme, ColorSchemeStorage, ColorSchemeStorageOption, ControlTemplateInfo, DeviceType, NgnConfig, NgnConfigInit, NgnFeature, NgnStorageKind, Openable, Point, PopoverCloseBy, PositioningOptions, PositioningSizeConstraints, Size, TooltipOptions };