@raintonic/formaui 0.4.0 → 0.9.2

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 (238) hide show
  1. package/CHANGELOG.md +80 -35
  2. package/README.md +22 -26
  3. package/fesm2022/raintonic-formaui-cdk-drag-drop.mjs +39 -41
  4. package/fesm2022/raintonic-formaui-cdk-drag-drop.mjs.map +1 -1
  5. package/fesm2022/raintonic-formaui-cdk-form-field.mjs +207 -3
  6. package/fesm2022/raintonic-formaui-cdk-form-field.mjs.map +1 -1
  7. package/fesm2022/raintonic-formaui-cdk-overlay.mjs +19 -1
  8. package/fesm2022/raintonic-formaui-cdk-overlay.mjs.map +1 -1
  9. package/fesm2022/raintonic-formaui-cdk-virtual-scroll.mjs +5 -12
  10. package/fesm2022/raintonic-formaui-cdk-virtual-scroll.mjs.map +1 -1
  11. package/fesm2022/raintonic-formaui-components-accordion.mjs +8 -5
  12. package/fesm2022/raintonic-formaui-components-accordion.mjs.map +1 -1
  13. package/fesm2022/raintonic-formaui-components-alert.mjs +16 -2
  14. package/fesm2022/raintonic-formaui-components-alert.mjs.map +1 -1
  15. package/fesm2022/raintonic-formaui-components-autocomplete.mjs +255 -462
  16. package/fesm2022/raintonic-formaui-components-autocomplete.mjs.map +1 -1
  17. package/fesm2022/raintonic-formaui-components-avatar.mjs +34 -59
  18. package/fesm2022/raintonic-formaui-components-avatar.mjs.map +1 -1
  19. package/fesm2022/raintonic-formaui-components-badge.mjs +2 -2
  20. package/fesm2022/raintonic-formaui-components-badge.mjs.map +1 -1
  21. package/fesm2022/raintonic-formaui-components-breadcrumb.mjs +4 -4
  22. package/fesm2022/raintonic-formaui-components-breadcrumb.mjs.map +1 -1
  23. package/fesm2022/raintonic-formaui-components-button-group.mjs +2 -2
  24. package/fesm2022/raintonic-formaui-components-button-group.mjs.map +1 -1
  25. package/fesm2022/raintonic-formaui-components-button.mjs +15 -20
  26. package/fesm2022/raintonic-formaui-components-button.mjs.map +1 -1
  27. package/fesm2022/raintonic-formaui-components-card.mjs +2 -2
  28. package/fesm2022/raintonic-formaui-components-card.mjs.map +1 -1
  29. package/fesm2022/raintonic-formaui-components-checkbox.mjs +2 -2
  30. package/fesm2022/raintonic-formaui-components-checkbox.mjs.map +1 -1
  31. package/fesm2022/raintonic-formaui-components-chip.mjs +97 -0
  32. package/fesm2022/raintonic-formaui-components-chip.mjs.map +1 -0
  33. package/fesm2022/raintonic-formaui-components-data-table.mjs +69 -29
  34. package/fesm2022/raintonic-formaui-components-data-table.mjs.map +1 -1
  35. package/fesm2022/raintonic-formaui-components-date-picker.mjs +223 -144
  36. package/fesm2022/raintonic-formaui-components-date-picker.mjs.map +1 -1
  37. package/fesm2022/raintonic-formaui-components-divider.mjs +2 -2
  38. package/fesm2022/raintonic-formaui-components-divider.mjs.map +1 -1
  39. package/fesm2022/raintonic-formaui-components-drawer.mjs +2 -2
  40. package/fesm2022/raintonic-formaui-components-drawer.mjs.map +1 -1
  41. package/fesm2022/raintonic-formaui-components-dropdown-menu.mjs +888 -0
  42. package/fesm2022/raintonic-formaui-components-dropdown-menu.mjs.map +1 -0
  43. package/fesm2022/raintonic-formaui-components-dual-tier-navigation.mjs +774 -0
  44. package/fesm2022/raintonic-formaui-components-dual-tier-navigation.mjs.map +1 -0
  45. package/fesm2022/raintonic-formaui-components-empty-state.mjs +2 -2
  46. package/fesm2022/raintonic-formaui-components-empty-state.mjs.map +1 -1
  47. package/fesm2022/raintonic-formaui-components-file-upload.mjs +2 -2
  48. package/fesm2022/raintonic-formaui-components-file-upload.mjs.map +1 -1
  49. package/fesm2022/raintonic-formaui-components-form-field.mjs +81 -50
  50. package/fesm2022/raintonic-formaui-components-form-field.mjs.map +1 -1
  51. package/fesm2022/raintonic-formaui-components-icon.mjs +2 -2
  52. package/fesm2022/raintonic-formaui-components-icon.mjs.map +1 -1
  53. package/fesm2022/raintonic-formaui-components-input.mjs +47 -12
  54. package/fesm2022/raintonic-formaui-components-input.mjs.map +1 -1
  55. package/fesm2022/raintonic-formaui-components-list.mjs +4 -4
  56. package/fesm2022/raintonic-formaui-components-list.mjs.map +1 -1
  57. package/fesm2022/raintonic-formaui-components-number-input.mjs +20 -12
  58. package/fesm2022/raintonic-formaui-components-number-input.mjs.map +1 -1
  59. package/fesm2022/raintonic-formaui-components-paginator.mjs +2 -2
  60. package/fesm2022/raintonic-formaui-components-paginator.mjs.map +1 -1
  61. package/fesm2022/raintonic-formaui-components-password-input.mjs +35 -110
  62. package/fesm2022/raintonic-formaui-components-password-input.mjs.map +1 -1
  63. package/fesm2022/raintonic-formaui-components-popover.mjs +3 -2
  64. package/fesm2022/raintonic-formaui-components-popover.mjs.map +1 -1
  65. package/fesm2022/raintonic-formaui-components-progressbar.mjs +3 -2
  66. package/fesm2022/raintonic-formaui-components-progressbar.mjs.map +1 -1
  67. package/fesm2022/raintonic-formaui-components-radio.mjs +5 -6
  68. package/fesm2022/raintonic-formaui-components-radio.mjs.map +1 -1
  69. package/fesm2022/raintonic-formaui-components-select.mjs +257 -412
  70. package/fesm2022/raintonic-formaui-components-select.mjs.map +1 -1
  71. package/fesm2022/raintonic-formaui-components-side-panel.mjs +2 -2
  72. package/fesm2022/raintonic-formaui-components-side-panel.mjs.map +1 -1
  73. package/fesm2022/raintonic-formaui-components-sidebar-nav-menu.mjs +525 -0
  74. package/fesm2022/raintonic-formaui-components-sidebar-nav-menu.mjs.map +1 -0
  75. package/fesm2022/raintonic-formaui-components-skeleton.mjs +2 -2
  76. package/fesm2022/raintonic-formaui-components-skeleton.mjs.map +1 -1
  77. package/fesm2022/raintonic-formaui-components-slider.mjs +2 -2
  78. package/fesm2022/raintonic-formaui-components-slider.mjs.map +1 -1
  79. package/fesm2022/raintonic-formaui-components-spinner.mjs +2 -2
  80. package/fesm2022/raintonic-formaui-components-spinner.mjs.map +1 -1
  81. package/fesm2022/raintonic-formaui-components-stepper.mjs +50 -45
  82. package/fesm2022/raintonic-formaui-components-stepper.mjs.map +1 -1
  83. package/fesm2022/raintonic-formaui-components-strength-meter.mjs +149 -0
  84. package/fesm2022/raintonic-formaui-components-strength-meter.mjs.map +1 -0
  85. package/fesm2022/raintonic-formaui-components-tab.mjs +2 -2
  86. package/fesm2022/raintonic-formaui-components-tab.mjs.map +1 -1
  87. package/fesm2022/raintonic-formaui-components-time-picker.mjs +194 -154
  88. package/fesm2022/raintonic-formaui-components-time-picker.mjs.map +1 -1
  89. package/fesm2022/raintonic-formaui-components-toggle-group.mjs +302 -0
  90. package/fesm2022/raintonic-formaui-components-toggle-group.mjs.map +1 -0
  91. package/fesm2022/raintonic-formaui-components-toggle.mjs +2 -2
  92. package/fesm2022/raintonic-formaui-components-toggle.mjs.map +1 -1
  93. package/fesm2022/raintonic-formaui-components-toolbar.mjs +2 -2
  94. package/fesm2022/raintonic-formaui-components-toolbar.mjs.map +1 -1
  95. package/fesm2022/raintonic-formaui-components-tooltip.mjs +10 -4
  96. package/fesm2022/raintonic-formaui-components-tooltip.mjs.map +1 -1
  97. package/fesm2022/raintonic-formaui-components-topbar.mjs +60 -0
  98. package/fesm2022/raintonic-formaui-components-topbar.mjs.map +1 -0
  99. package/fesm2022/raintonic-formaui-components-tree-select.mjs +59 -69
  100. package/fesm2022/raintonic-formaui-components-tree-select.mjs.map +1 -1
  101. package/fesm2022/raintonic-formaui-components-tree-table.mjs +2 -2
  102. package/fesm2022/raintonic-formaui-components-tree-table.mjs.map +1 -1
  103. package/fesm2022/raintonic-formaui-components-tree.mjs +31 -5
  104. package/fesm2022/raintonic-formaui-components-tree.mjs.map +1 -1
  105. package/fesm2022/raintonic-formaui-core.mjs +279 -1
  106. package/fesm2022/raintonic-formaui-core.mjs.map +1 -1
  107. package/fesm2022/raintonic-formaui-services-breakpoint.mjs +93 -0
  108. package/fesm2022/raintonic-formaui-services-breakpoint.mjs.map +1 -0
  109. package/fesm2022/raintonic-formaui-services-dialog.mjs +314 -16
  110. package/fesm2022/raintonic-formaui-services-dialog.mjs.map +1 -1
  111. package/fesm2022/raintonic-formaui-services-notification.mjs +93 -29
  112. package/fesm2022/raintonic-formaui-services-notification.mjs.map +1 -1
  113. package/fesm2022/raintonic-formaui-services-theme.mjs +46 -196
  114. package/fesm2022/raintonic-formaui-services-theme.mjs.map +1 -1
  115. package/fesm2022/raintonic-formaui.mjs +1 -1
  116. package/fesm2022/raintonic-formaui.mjs.map +1 -1
  117. package/llms-full.txt +2329 -450
  118. package/llms.txt +36 -33
  119. package/package.json +42 -19
  120. package/styles/fonts/Geist-Bold.woff2 +0 -0
  121. package/styles/fonts/Geist-Italic.woff2 +0 -0
  122. package/styles/fonts/Geist-Light.woff2 +0 -0
  123. package/styles/fonts/Geist-Medium.woff2 +0 -0
  124. package/styles/fonts/Geist-Regular.woff2 +0 -0
  125. package/styles/fonts/Geist-SemiBold.woff2 +0 -0
  126. package/styles/fonts/GeistMono-Regular.woff2 +0 -0
  127. package/styles/generated/_tokens.scss +906 -0
  128. package/styles/index.scss +11 -10
  129. package/styles/partials/_brand.scss +46 -0
  130. package/styles/partials/_constants.scss +22 -20
  131. package/styles/partials/_fonts.scss +54 -10
  132. package/styles/partials/_grid.scss +29 -18
  133. package/styles/partials/_mixins.scss +69 -27
  134. package/styles/partials/_motion.scss +28 -33
  135. package/styles/partials/_theme.scss +28 -255
  136. package/styles/partials/_type.scss +117 -0
  137. package/styles/partials/_typography.scss +45 -45
  138. package/styles/partials/_utilities.scss +198 -98
  139. package/styles/partials/components/_button.scss +144 -75
  140. package/styles/partials/components/_dialog.scss +181 -180
  141. package/styles/partials/components/_overlay.scss +87 -87
  142. package/styles/partials/themes/_dark.scss +3 -268
  143. package/styles/partials/themes/_light.scss +4 -268
  144. package/styles/styles.css +7744 -0
  145. package/styles/styles.entry.scss +3 -0
  146. package/styles/utilities.css +4802 -0
  147. package/styles/utilities.entry.scss +3 -0
  148. package/types/raintonic-formaui-cdk-drag-drop.d.ts +0 -1
  149. package/types/raintonic-formaui-cdk-drag-drop.d.ts.map +1 -1
  150. package/types/raintonic-formaui-cdk-form-field.d.ts +118 -2
  151. package/types/raintonic-formaui-cdk-form-field.d.ts.map +1 -1
  152. package/types/raintonic-formaui-cdk-overlay.d.ts +2 -0
  153. package/types/raintonic-formaui-cdk-overlay.d.ts.map +1 -1
  154. package/types/raintonic-formaui-cdk-virtual-scroll.d.ts +0 -1
  155. package/types/raintonic-formaui-cdk-virtual-scroll.d.ts.map +1 -1
  156. package/types/raintonic-formaui-components-accordion.d.ts +1 -1
  157. package/types/raintonic-formaui-components-accordion.d.ts.map +1 -1
  158. package/types/raintonic-formaui-components-alert.d.ts +6 -1
  159. package/types/raintonic-formaui-components-alert.d.ts.map +1 -1
  160. package/types/raintonic-formaui-components-autocomplete.d.ts +73 -116
  161. package/types/raintonic-formaui-components-autocomplete.d.ts.map +1 -1
  162. package/types/raintonic-formaui-components-avatar.d.ts +13 -31
  163. package/types/raintonic-formaui-components-avatar.d.ts.map +1 -1
  164. package/types/raintonic-formaui-components-button.d.ts +4 -10
  165. package/types/raintonic-formaui-components-button.d.ts.map +1 -1
  166. package/types/raintonic-formaui-components-chip.d.ts +43 -0
  167. package/types/raintonic-formaui-components-chip.d.ts.map +1 -0
  168. package/types/raintonic-formaui-components-data-table.d.ts +48 -11
  169. package/types/raintonic-formaui-components-data-table.d.ts.map +1 -1
  170. package/types/raintonic-formaui-components-date-picker.d.ts +59 -23
  171. package/types/raintonic-formaui-components-date-picker.d.ts.map +1 -1
  172. package/types/raintonic-formaui-components-dropdown-menu.d.ts +394 -0
  173. package/types/raintonic-formaui-components-dropdown-menu.d.ts.map +1 -0
  174. package/types/raintonic-formaui-components-dual-tier-navigation.d.ts +87 -0
  175. package/types/raintonic-formaui-components-dual-tier-navigation.d.ts.map +1 -0
  176. package/types/raintonic-formaui-components-form-field.d.ts +51 -21
  177. package/types/raintonic-formaui-components-form-field.d.ts.map +1 -1
  178. package/types/raintonic-formaui-components-input.d.ts +20 -11
  179. package/types/raintonic-formaui-components-input.d.ts.map +1 -1
  180. package/types/raintonic-formaui-components-number-input.d.ts +5 -3
  181. package/types/raintonic-formaui-components-number-input.d.ts.map +1 -1
  182. package/types/raintonic-formaui-components-password-input.d.ts +18 -32
  183. package/types/raintonic-formaui-components-password-input.d.ts.map +1 -1
  184. package/types/raintonic-formaui-components-popover.d.ts.map +1 -1
  185. package/types/raintonic-formaui-components-progressbar.d.ts +1 -1
  186. package/types/raintonic-formaui-components-progressbar.d.ts.map +1 -1
  187. package/types/raintonic-formaui-components-radio.d.ts +1 -2
  188. package/types/raintonic-formaui-components-radio.d.ts.map +1 -1
  189. package/types/raintonic-formaui-components-select.d.ts +107 -76
  190. package/types/raintonic-formaui-components-select.d.ts.map +1 -1
  191. package/types/raintonic-formaui-components-sidebar-nav-menu.d.ts +223 -0
  192. package/types/raintonic-formaui-components-sidebar-nav-menu.d.ts.map +1 -0
  193. package/types/raintonic-formaui-components-stepper.d.ts +4 -2
  194. package/types/raintonic-formaui-components-stepper.d.ts.map +1 -1
  195. package/types/raintonic-formaui-components-strength-meter.d.ts +78 -0
  196. package/types/raintonic-formaui-components-strength-meter.d.ts.map +1 -0
  197. package/types/raintonic-formaui-components-time-picker.d.ts +44 -24
  198. package/types/raintonic-formaui-components-time-picker.d.ts.map +1 -1
  199. package/types/raintonic-formaui-components-toggle-group.d.ts +100 -0
  200. package/types/raintonic-formaui-components-toggle-group.d.ts.map +1 -0
  201. package/types/raintonic-formaui-components-tooltip.d.ts +2 -1
  202. package/types/raintonic-formaui-components-tooltip.d.ts.map +1 -1
  203. package/types/raintonic-formaui-components-topbar.d.ts +48 -0
  204. package/types/raintonic-formaui-components-topbar.d.ts.map +1 -0
  205. package/types/raintonic-formaui-components-tree-select.d.ts +25 -9
  206. package/types/raintonic-formaui-components-tree-select.d.ts.map +1 -1
  207. package/types/raintonic-formaui-components-tree.d.ts +12 -1
  208. package/types/raintonic-formaui-components-tree.d.ts.map +1 -1
  209. package/types/raintonic-formaui-core.d.ts +243 -5
  210. package/types/raintonic-formaui-core.d.ts.map +1 -1
  211. package/types/raintonic-formaui-services-breakpoint.d.ts +44 -0
  212. package/types/raintonic-formaui-services-breakpoint.d.ts.map +1 -0
  213. package/types/raintonic-formaui-services-dialog.d.ts +141 -2
  214. package/types/raintonic-formaui-services-dialog.d.ts.map +1 -1
  215. package/types/raintonic-formaui-services-notification.d.ts +24 -2
  216. package/types/raintonic-formaui-services-notification.d.ts.map +1 -1
  217. package/types/raintonic-formaui-services-theme.d.ts +13 -103
  218. package/types/raintonic-formaui-services-theme.d.ts.map +1 -1
  219. package/types/raintonic-formaui.d.ts +1 -1
  220. package/fesm2022/raintonic-formaui-components-big-menu.mjs +0 -86
  221. package/fesm2022/raintonic-formaui-components-big-menu.mjs.map +0 -1
  222. package/fesm2022/raintonic-formaui-components-menu.mjs +0 -896
  223. package/fesm2022/raintonic-formaui-components-menu.mjs.map +0 -1
  224. package/fesm2022/raintonic-formaui-components-sidebar.mjs +0 -275
  225. package/fesm2022/raintonic-formaui-components-sidebar.mjs.map +0 -1
  226. package/fesm2022/raintonic-formaui-components-tag.mjs +0 -95
  227. package/fesm2022/raintonic-formaui-components-tag.mjs.map +0 -1
  228. package/styles/_fonts-entry.scss +0 -3
  229. package/styles/fonts/inter-tight-latin-italic.woff2 +0 -0
  230. package/styles/fonts/inter-tight-latin.woff2 +0 -0
  231. package/types/raintonic-formaui-components-big-menu.d.ts +0 -73
  232. package/types/raintonic-formaui-components-big-menu.d.ts.map +0 -1
  233. package/types/raintonic-formaui-components-menu.d.ts +0 -403
  234. package/types/raintonic-formaui-components-menu.d.ts.map +0 -1
  235. package/types/raintonic-formaui-components-sidebar.d.ts +0 -185
  236. package/types/raintonic-formaui-components-sidebar.d.ts.map +0 -1
  237. package/types/raintonic-formaui-components-tag.d.ts +0 -43
  238. package/types/raintonic-formaui-components-tag.d.ts.map +0 -1
@@ -1,7 +1,7 @@
1
1
  import { Observable, Subject } from 'rxjs';
2
2
  import { NgControl, FormControl, FormGroupDirective, NgForm } from '@angular/forms';
3
3
  import * as i0 from '@angular/core';
4
- import { InjectionToken, Signal, OnDestroy } from '@angular/core';
4
+ import { InjectionToken, Signal, OnDestroy, WritableSignal } from '@angular/core';
5
5
 
6
6
  /**
7
7
  * Interface for form field controls following Angular Material patterns
@@ -40,6 +40,10 @@ interface FuiFormFieldControl<T = unknown> {
40
40
  * Whether the control is disabled
41
41
  */
42
42
  readonly disabled: Signal<boolean>;
43
+ /**
44
+ * Whether the control is in read-only mode
45
+ */
46
+ readonly readonly: Signal<boolean>;
43
47
  /**
44
48
  * Whether the control is in an error state
45
49
  */
@@ -61,9 +65,12 @@ interface FuiFormFieldControl<T = unknown> {
61
65
  */
62
66
  setDescribedByIds(ids: string[]): void;
63
67
  /**
64
- * Sets the read-only state of the control (propagated from form-field)
68
+ * Whether the form-field should show a copy-to-clipboard button when
69
+ * the control is in read-only mode. Only plain input controls (e.g.
70
+ * `fuiInput`) return `true` — wrapper controls with their own interactive
71
+ * elements should not implement this (defaults to `false`).
65
72
  */
66
- setReadOnly?(readOnly: boolean): void;
73
+ readonlyCopyEnabled?(): boolean;
67
74
  }
68
75
  /**
69
76
  * Injection token used to provide the form field control to the form field
@@ -127,6 +134,237 @@ declare abstract class FuiIntlBase implements OnDestroy {
127
134
  static ɵprov: i0.ɵɵInjectableDeclaration<FuiIntlBase>;
128
135
  }
129
136
 
130
- export { DefaultErrorStateMatcher, FUI_FORM_FIELD_CONTROL, FuiIntlBase, mixinErrorState };
131
- export type { CanUpdateErrorState, Constructor, ErrorStateMatcher, FuiFormFieldControl, HasErrorState };
137
+ /**
138
+ * # MenuItem
139
+ *
140
+ * Canonical interface for menu items across all navigation components.
141
+ * Inspired by PrimeNG's MenuItem model.
142
+ *
143
+ * ## Usage
144
+ *
145
+ * ```typescript
146
+ * const items: MenuItem[] = [
147
+ * { label: 'Dashboard', icon: 'house', routerLink: '/dashboard' },
148
+ * {
149
+ * label: 'Products',
150
+ * icon: 'package',
151
+ * items: [
152
+ * { label: 'List', routerLink: '/products' },
153
+ * { label: 'Categories', routerLink: '/categories' },
154
+ * ],
155
+ * },
156
+ * { separator: true },
157
+ * { label: 'Settings', icon: 'gear', command: () => openSettings() },
158
+ * ];
159
+ * ```
160
+ */
161
+ interface MenuItem {
162
+ /** Display text for the menu item */
163
+ label?: string;
164
+ /** Optional icon name for fui-icon */
165
+ icon?: string;
166
+ /** Callback when item is clicked */
167
+ command?: (event?: Event) => void;
168
+ /** Nested child submenu items */
169
+ items?: MenuItem[];
170
+ /** Disable interaction */
171
+ disabled?: boolean;
172
+ /** Conditionally hide item */
173
+ visible?: boolean;
174
+ /** Render a horizontal separator instead of a clickable item */
175
+ separator?: boolean;
176
+ /** Render a section header label (non-clickable group heading) */
177
+ sectionHeader?: boolean;
178
+ /** Angular router link */
179
+ routerLink?: string | any[];
180
+ /** Router query parameters */
181
+ queryParams?: Record<string, any>;
182
+ /** Router fragment */
183
+ fragment?: string;
184
+ /** Initial expanded state for submenu parents */
185
+ expanded?: boolean;
186
+ /** Anchor target attribute (_self, _blank, etc.) */
187
+ target?: string;
188
+ /** HTML title attribute for tooltip */
189
+ title?: string;
190
+ /** Unique identifier — auto-generated if not provided */
191
+ id?: string;
192
+ }
193
+
194
+ /**
195
+ * Interface for components that act as a strength meter within a form field.
196
+ * Currently used as a presence-only token — the form-field only queries
197
+ * whether a strength meter component is projected as a content child.
198
+ */
199
+ interface FuiStrengthMeter {
200
+ /** Placeholder for future shared interface needs. */
201
+ __brand: '';
202
+ }
203
+ /**
204
+ * Injection token used to look up a strength meter component projected
205
+ * inside a form field without creating a hard secondary-entry-point
206
+ * dependency.
207
+ */
208
+ declare const FUI_STRENGTH_METER: InjectionToken<FuiStrengthMeter>;
209
+
210
+ declare const noop: (..._args: any[]) => void;
211
+
212
+ /**
213
+ * Contract that a parent component (select or autocomplete) must satisfy
214
+ * for the multi-select helpers. Both FuiSelectComponent and FuiAutocompleteComponent
215
+ * implement this implicitly by exposing the same signal/input shape.
216
+ */
217
+ interface MultiSelectHost {
218
+ readonly value: Signal<unknown>;
219
+ readonly options: Signal<readonly OptionLike[]>;
220
+ readonly multiple: () => boolean;
221
+ readonly compareWith: () => (a: unknown, b: unknown) => boolean;
222
+ }
223
+ /** Minimal shape of an option that the helpers need. */
224
+ interface OptionLike {
225
+ readonly value: () => unknown;
226
+ readonly disabled: () => boolean;
227
+ getLabel(): string;
228
+ select(): void;
229
+ deselect(): void;
230
+ }
231
+ /**
232
+ * Number of options to skip when handling PageUp/PageDown in both select and autocomplete.
233
+ * Effective page size is `Math.min(KEYBOARD_PAGE_SIZE, optionCount)`.
234
+ */
235
+ declare const KEYBOARD_PAGE_SIZE = 10;
236
+ /**
237
+ * Interface extending OptionLike with methods needed for keyboard navigation.
238
+ * Components that use keyboard navigation helpers must provide options that
239
+ * implement this contract.
240
+ */
241
+ interface NavigableOption extends OptionLike {
242
+ readonly _selected?: () => boolean;
243
+ setActive(): void;
244
+ setInactive(): void;
245
+ _getHostElement(): HTMLElement;
246
+ readonly id: string;
247
+ }
248
+ /**
249
+ * Computes the display string shown in the trigger.
250
+ *
251
+ * - Single mode: returns the label of the matching option (or stringified value).
252
+ * - Multiple mode: joins selected option labels with `', '`.
253
+ * - Null/undefined/empty-array: returns `''`.
254
+ * - If no option matches the value, returns `String(value)` (single) or `''` (multiple).
255
+ */
256
+ declare function computeMultiDisplayValue(host: MultiSelectHost): string;
257
+ /**
258
+ * Iterates all options and calls `select()` / `deselect()` based on whether
259
+ * the option's value matches the current model value (by identity).
260
+ *
261
+ * - Single mode: compares the scalar value directly.
262
+ * - Multiple mode: checks each array element.
263
+ * - Options with `undefined` value are skipped.
264
+ */
265
+ declare function syncMultiOptions(host: MultiSelectHost): void;
266
+ /**
267
+ * Toggles an option value in/out of an array-based multi-value.
268
+ *
269
+ * - If the value is already present, it is removed (deselect).
270
+ * - If absent, it is appended (select).
271
+ * - If `current` is not an array, starts fresh with `[]`.
272
+ *
273
+ * Returns a **new array** (shallow copy) so callers can set it as the new model value.
274
+ */
275
+ declare function toggleMultiValue(current: unknown, optionValue: unknown, compareFn: (a: unknown, b: unknown) => boolean): unknown[];
276
+ /**
277
+ * Checks whether a value represents the "empty" state.
278
+ *
279
+ * - `null` or `undefined` → empty
280
+ * - Empty array `[]` → empty (so multiple-mode starts with no selection)
281
+ * - Everything else → not empty
282
+ */
283
+ declare function isEmpty(value: unknown): boolean;
284
+ /**
285
+ * Finds the index of the first enabled option whose value matches the current
286
+ * model value. Used to set the initial keyboard-navigation active option when
287
+ * opening the panel.
288
+ *
289
+ * - Single mode: finds the option whose value equals the scalar value.
290
+ * - Multiple mode: finds the first option whose value appears in the array.
291
+ * - Returns `0` when no match is found (default to first option).
292
+ * - Returns `-1` when there are no enabled options.
293
+ */
294
+ declare function findInitialActiveOptionIndex(opts: readonly OptionLike[], value: unknown, multiple: boolean, compareFn: (a: unknown, b: unknown) => boolean): number;
295
+ /**
296
+ * Returns the next index to navigate to with wrap-around.
297
+ *
298
+ * If the option count is 0, returns -1 (no valid target).
299
+ * If the current index is negative, starts from the beginning (delta > 0) or end (delta < 0).
300
+ */
301
+ declare function computeNextActiveOptionIndex(optCount: number, currentIndex: number, delta: number): number;
302
+ /**
303
+ * Computes a new active index constrained within [0, optCount - 1], applying
304
+ * a page-sized step (clamped to optCount). Used for PageUp/PageDown navigation.
305
+ */
306
+ declare function computePagedActiveOptionIndex(optCount: number, currentIndex: number, direction: -1 | 1): number;
307
+ /**
308
+ * Scrolls the given container element so the option at `element` is visible.
309
+ *
310
+ * Handles two panel layouts:
311
+ * - **Direct**: the container itself is the scrollable panel (`container` === `scrollContainer`).
312
+ * - **Nested**: options sit inside a scrollable sub-element within the main panel
313
+ * (`container` is the nested element, e.g. `.fui-autocomplete__options`).
314
+ *
315
+ * Pass `select`-style (direct) or `autocomplete`-style (nested) via a selector.
316
+ */
317
+ declare function scrollOptionIntoView(element: HTMLElement | null | undefined, container: HTMLElement | null | undefined, nestedSelector?: string): void;
318
+ /**
319
+ * Screen reader announcement.
320
+ * Clears the message first so repeated identical messages are re-announced.
321
+ */
322
+ declare function announceMessage(liveSignal: WritableSignal<string>, message: string): void;
323
+ /**
324
+ * Computes the active descendant id for aria-activedescendant.
325
+ */
326
+ declare function computeActiveDescendant(opts: readonly {
327
+ id: string;
328
+ disabled(): boolean;
329
+ }[], activeIndex: number): string | null;
330
+ /**
331
+ * Returns all non-disabled options from the given list.
332
+ */
333
+ declare function getEnabledOptions<T extends {
334
+ disabled(): boolean;
335
+ }>(opts: readonly T[]): T[];
336
+ /**
337
+ * Determines whether a single option should be considered selected based on
338
+ * the current model value.
339
+ *
340
+ * Labels are unique identifiers, so comparison uses value identity (`===`).
341
+ * No custom `compareWith` is needed.
342
+ */
343
+ declare function isOptionSelected(optValue: unknown, currentValue: unknown, isMultiple: boolean, compareFn: (a: unknown, b: unknown) => boolean): boolean;
344
+ /**
345
+ * Result of `applyOptionSelection`, returned so the calling component can
346
+ * update its signals and emit outputs.
347
+ */
348
+ interface SelectionResult {
349
+ /** New value for the model (already toggled/selected). */
350
+ newValue: unknown;
351
+ /** Whether the option was already selected before this call (multi-mode only; `false` for single). */
352
+ wasSelected: boolean;
353
+ }
354
+ /**
355
+ * Applied option selection for both single and multiple mode.
356
+ *
357
+ * This is the shared core of `_onOptionSelected` in both `FuiSelectComponent`
358
+ * and `FuiAutocompleteComponent`. It mutates option state (`select()`/`deselect()`)
359
+ * and returns the new value, but does NOT touch component signals or emit outputs
360
+ * — that stays in the calling component.
361
+ *
362
+ * @param host The host component (provides `value`, `options`, `multiple`).
363
+ * @param option The option being selected/deselected.
364
+ * @returns `{ newValue, wasSelected }`.
365
+ */
366
+ declare function applyOptionSelection(host: MultiSelectHost, option: OptionLike): SelectionResult;
367
+
368
+ export { DefaultErrorStateMatcher, FUI_FORM_FIELD_CONTROL, FUI_STRENGTH_METER, FuiIntlBase, KEYBOARD_PAGE_SIZE, announceMessage, applyOptionSelection, computeActiveDescendant, computeMultiDisplayValue, computeNextActiveOptionIndex, computePagedActiveOptionIndex, findInitialActiveOptionIndex, getEnabledOptions, isEmpty, isOptionSelected, mixinErrorState, noop, scrollOptionIntoView, syncMultiOptions, toggleMultiValue };
369
+ export type { CanUpdateErrorState, Constructor, ErrorStateMatcher, FuiFormFieldControl, FuiStrengthMeter, HasErrorState, MenuItem, MultiSelectHost, NavigableOption, OptionLike, SelectionResult };
132
370
  //# sourceMappingURL=raintonic-formaui-core.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"raintonic-formaui-core.d.ts","sources":["../../../lib/core/form-field-control.ts","../../../lib/core/error-state.ts","../../../lib/core/intl/fui-intl-base.ts"],"mappings":";;;;;AAIA;;;AAGG;AACG,UAAW,mBAAmB;AAClC;;AAEG;AACH,2BAAuB,UAAU;AAEjC;;AAEG;oBACa,MAAM;AAEtB;;AAEG;AACH,0BAAsB,MAAM;AAE5B;;AAEG;AACH,wBAAoB,SAAS;AAE7B;;AAEG;AACH,sBAAkB,MAAM;AAExB;;AAEG;AACH,oBAAgB,MAAM;AAEtB;;AAEG;AACH,uBAAmB,MAAM;AAEzB;;AAEG;AACH,uBAAmB,MAAM;AAEzB;;AAEG;AACH,yBAAqB,MAAM;AAE3B;;AAEG;AACH;AAEA;;AAEG;AACH;AAEA;;AAEG;AACH,4BAAwB,UAAU;AAElC;;AAEG;AACH;AAEA;;AAEG;AACH;AACD;AAED;;AAEG;AACH,cAAa,sBAAsB,EAAA,cAAA,CAAA,mBAAA;;AC/EnC;;;AAGG;UACc,iBAAiB;AAChC,0BAAsB,WAAW,eAAe,kBAAkB,GAAG,MAAM;AAC5E;AAED;;;AAGG;AACH,cACa,wBAAyB,YAAW,iBAAiB;AAChE,0BAAsB,WAAW,eAAe,kBAAkB,GAAG,MAAM;yCADhE,wBAAwB;6CAAxB,wBAAwB;AAKpC;AAED;;AAEG;UACc,mBAAmB;AAClC,2BAAuB,OAAO;;AAE9B,uBAAmB,iBAAiB;;AAErC;AAED;;AAEG;AAEG,KAAM,WAAW;UAEN,aAAa;+BACD,iBAAiB;AAC5C,iBAAa,MAAM,GAAG,kBAAkB;AACxC,sBAAkB,kBAAkB;AACpC,eAAW,SAAS;AACrB;AAED;;AAEG;AACH,iBAAgB,eAAe,WAAW,WAAW,CAAC,aAAa,aAAa,WAAW,CAAC,mBAAmB;;AC/C/G;;;;;;AAMG;AACH,uBACsB,WAAY,YAAW,SAAS;;sBAEpC,OAAA;;AAGhB;AAIA;yCAToB,WAAW;6CAAX,WAAW;AAYhC;;;;","names":[]}
1
+ {"version":3,"file":"raintonic-formaui-core.d.ts","sources":["../../../lib/core/form-field-control.ts","../../../lib/core/error-state.ts","../../../lib/core/intl/fui-intl-base.ts","../../../lib/core/menu-item.model.ts","../../../lib/core/strength-meter.ts","../../../lib/core/utils/index.ts","../../../lib/core/multi-select/multi-select.ts"],"mappings":"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","names":[]}
@@ -0,0 +1,44 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Signal } from '@angular/core';
3
+
4
+ /** I 6 breakpoint nominali (mobile-first min-width). */
5
+ type FuiBreakpoint = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';
6
+ /**
7
+ * Soglie in px (mobile-first min-width).
8
+ *
9
+ * Sync con:
10
+ * - tokens/core/layout.json (bp.{xs..2xl})
11
+ * - lib/styles/partials/_constants.scss ($fui-bp-{xs..2xl})
12
+ *
13
+ * Drift detection: vedi consistency test in breakpoint.service.spec.ts.
14
+ */
15
+ declare const FUI_BREAKPOINTS: Readonly<Record<FuiBreakpoint, number>>;
16
+ /**
17
+ * FuiBreakpointService — accesso signal-based ai breakpoint del PRD.
18
+ *
19
+ * - `matches(bp)`: Signal<boolean> true se viewport ≥ soglia del bp (semantica
20
+ * `@media (min-width: …)`).
21
+ * - SSR-safe: prima dell'attach al browser tutti i signal sono `false`.
22
+ */
23
+ declare class FuiBreakpointService {
24
+ private readonly _destroyRef;
25
+ private readonly _document;
26
+ private readonly _platformId;
27
+ private readonly _matches;
28
+ private static readonly BP_ORDER_DESC;
29
+ /**
30
+ * Bp più grande matched mobile-first. `null` se viewport < `xs` (480px) o in SSR.
31
+ */
32
+ readonly active: Signal<FuiBreakpoint | null>;
33
+ constructor();
34
+ /**
35
+ * Signal true se viewport ≥ soglia del bp. Stesso Signal per chiamate ripetute.
36
+ */
37
+ matches(bp: FuiBreakpoint): Signal<boolean>;
38
+ static ɵfac: i0.ɵɵFactoryDeclaration<FuiBreakpointService, never>;
39
+ static ɵprov: i0.ɵɵInjectableDeclaration<FuiBreakpointService>;
40
+ }
41
+
42
+ export { FUI_BREAKPOINTS, FuiBreakpointService };
43
+ export type { FuiBreakpoint };
44
+ //# sourceMappingURL=raintonic-formaui-services-breakpoint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"raintonic-formaui-services-breakpoint.d.ts","sources":["../../../lib/services/breakpoint/breakpoint.service.ts"],"mappings":";;;AAGA;AACM,KAAM,aAAa;AAEzB;;;;;;;;AAQG;AACH,cAAa,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,aAAa;AAS3D;;;;;;AAMG;AACH,cACa,oBAAoB;AAC/B;AACA;AACA;AAEA;AAUA;AAEA;;AAEG;qBACc,MAAM,CAAC,aAAa;;AA8BrC;;AAEG;gBACS,aAAa,GAAG,MAAM;yCArDvB,oBAAoB;6CAApB,oBAAoB;AAwDhC;;;;","names":[]}
@@ -163,6 +163,49 @@ interface FuiDialogOpenResult<T, R> {
163
163
  /** Reference to the component instance if dialog was created with a component */
164
164
  componentRef?: T;
165
165
  }
166
+ /** Position of the drawer relative to the viewport edge */
167
+ type DrawerPosition = 'left' | 'right' | 'top' | 'bottom';
168
+ /** Size preset for the drawer */
169
+ type DrawerSize = 'sm' | 'md' | 'lg' | 'full';
170
+ /** Size presets mapped to CSS values */
171
+ declare const DRAWER_SIZE_VALUES: Record<DrawerSize, string>;
172
+ /**
173
+ * Configuration for opening a drawer via DialogService.openAsDrawer()
174
+ */
175
+ interface FuiDrawerConfig<D = unknown> {
176
+ /** ID for the drawer. If omitted, a unique one will be generated */
177
+ id?: string;
178
+ /** Position of the drawer (which viewport edge it slides from). Default: 'right'. */
179
+ position?: DrawerPosition;
180
+ /** Size of the drawer. For left/right positions this controls width; for top/bottom it controls height. */
181
+ size?: string;
182
+ /** Title displayed in the drawer header. Omit for no header. */
183
+ title?: string;
184
+ /** Whether to show the close button in the header. Default: true. */
185
+ showCloseButton?: boolean;
186
+ /** CSS class(es) to apply to the overlay pane */
187
+ panelClass?: string | string[];
188
+ /** Whether the drawer has a backdrop. Default: true. */
189
+ hasBackdrop?: boolean;
190
+ /** CSS class(es) to apply to the backdrop */
191
+ backdropClass?: string | string[];
192
+ /** Whether the user can close the drawer by clicking on the backdrop. Default: true. */
193
+ disableClose?: boolean;
194
+ /** Data to pass to the drawer component */
195
+ data?: D | null;
196
+ /** Layout direction for the drawer content */
197
+ direction?: 'ltr' | 'rtl';
198
+ /** ARIA label for the drawer */
199
+ ariaLabel?: string | null;
200
+ /** ID of the element that labels the drawer */
201
+ ariaLabelledBy?: string | null;
202
+ /** Whether to restore focus to the previously focused element on close. Default: true. */
203
+ restoreFocus?: boolean;
204
+ /** Alternate ViewContainerRef to use for creating the drawer */
205
+ viewContainerRef?: ViewContainerRef;
206
+ /** Injector used for the drawer component */
207
+ injector?: Injector;
208
+ }
166
209
  type FuiConfirmDialogVariant = 'info' | 'warning' | 'danger';
167
210
  interface FuiConfirmDialogConfig {
168
211
  title: string;
@@ -342,14 +385,48 @@ declare class FuiDialogService {
342
385
  private _attachDialogContainer;
343
386
  private _createDialogRef;
344
387
  private _attachComponentContent;
388
+ /**
389
+ * Shared helper: creates a component with dialog/drawer data and ref providers,
390
+ * attaches it to ApplicationRef for change detection, runs initial CD, and
391
+ * delegates DOM insertion to the provided callback.
392
+ */
393
+ private _createAndAttachContentComponent;
345
394
  private _attachTemplateContent;
346
395
  private _removeOpenDialog;
347
396
  private _getAfterAllClosed;
397
+ /**
398
+ * Opens a component or template as a drawer that slides in from the specified
399
+ * viewport edge. Built on the same overlay infrastructure as `open()`, but
400
+ * anchored to the viewport edge with a slide animation instead of a centered modal.
401
+ *
402
+ * @param componentOrTemplateRef Component type or TemplateRef to display
403
+ * @param config Configuration options for the drawer (position, size, etc.)
404
+ * @returns Reference to the opened drawer (same lifecycle API as a dialog)
405
+ *
406
+ * ## Usage
407
+ * ```typescript
408
+ * const drawerRef = this.dialog.openAsDrawer(MyPanelComponent, {
409
+ * position: 'right',
410
+ * size: 'md',
411
+ * title: 'Settings'
412
+ * });
413
+ * drawerRef.afterClosed().subscribe(result => console.log(result));
414
+ * ```
415
+ */
416
+ openAsDrawer<T, D = unknown, R = unknown>(componentOrTemplateRef: Type<T> | TemplateRef<T>, config?: FuiDrawerConfig<D>): FuiDialogRef<T, R>;
348
417
  /**
349
418
  * Opens a confirmation dialog and returns an Observable<boolean>.
350
419
  * Resolves to `true` when confirmed, `false` when cancelled, ESC, or backdrop click.
351
420
  */
352
421
  confirm(config: FuiConfirmDialogConfig): Observable<boolean>;
422
+ private _createDrawerOverlay;
423
+ private _getDrawerOverlayConfig;
424
+ private _attachDrawerContainer;
425
+ private _attachDrawerComponentContent;
426
+ private _resolveDrawerSize;
427
+ private _getDrawerBackdropClass;
428
+ private _getDrawerPanelClass;
429
+ private _applyDrawerConfigDefaults;
353
430
  private _applyConfigDefaults;
354
431
  static ɵfac: i0.ɵɵFactoryDeclaration<FuiDialogService, never>;
355
432
  static ɵprov: i0.ɵɵInjectableDeclaration<FuiDialogService>;
@@ -430,6 +507,68 @@ declare class FuiDialogContainerComponent implements FuiDialogContainerBase, Aft
430
507
  static ɵcmp: i0.ɵɵComponentDeclaration<FuiDialogContainerComponent, "fui-dialog-container", never, {}, {}, never, ["*"], true, never>;
431
508
  }
432
509
 
510
+ /**
511
+ * # FuiDialogDrawerContainerComponent
512
+ *
513
+ * Internal container component used by `FuiDialogService.openAsDrawer()`. Renders
514
+ * the drawer chrome (header, content slot, optional footer) with a position-based
515
+ * slide animation.
516
+ *
517
+ * Unlike the standalone `FuiDrawerComponent` (which manages its own backdrop and
518
+ * fixed positioning), this component delegates backdrop and positioning to the CDK
519
+ * overlay. The container's host element carries position classes and toggles the
520
+ * open class to trigger CSS transitions on the child panel — mirroring the original
521
+ * drawer's animation model.
522
+ */
523
+ declare class FuiDialogDrawerContainerComponent implements AfterViewInit, OnDestroy {
524
+ private readonly _document;
525
+ private readonly _renderer;
526
+ private readonly _elementRef;
527
+ private _drawerPanel;
528
+ /** Which edge the drawer slides from */
529
+ position: DrawerPosition;
530
+ title: string | null;
531
+ /** Whether to show the close button in the header */
532
+ showCloseButton: boolean;
533
+ /** ARIA label */
534
+ ariaLabel: string | null;
535
+ /** ARIA labelled-by element ID */
536
+ ariaLabelledBy: string | null;
537
+ /** Emitted when the close button is clicked */
538
+ readonly closed: i0.OutputEmitterRef<void>;
539
+ /** Element that had focus before the drawer opened (for restoration) */
540
+ private _previouslyFocusedElement;
541
+ ngAfterViewInit(): void;
542
+ ngOnDestroy(): void;
543
+ /**
544
+ * Returns the host element (for internal use by DialogService when projecting content).
545
+ */
546
+ _getHostElement(): HTMLElement;
547
+ /**
548
+ * Appends a DOM element to the drawer's content area (for internal use).
549
+ */
550
+ _appendToContent(element: HTMLElement): void;
551
+ /**
552
+ * Handles keydown events for focus trap cycling within the drawer.
553
+ * Tab loops from last to first focusable element, Shift+Tab from first to last.
554
+ */
555
+ _onKeydown(event: KeyboardEvent): void;
556
+ /**
557
+ * Focuses the first tabbable element in the drawer panel.
558
+ */
559
+ private _trapFocus;
560
+ /**
561
+ * Restores focus to the element that was focused before the drawer opened.
562
+ */
563
+ private _restoreFocus;
564
+ /**
565
+ * Returns all focusable elements currently visible inside the drawer.
566
+ */
567
+ private _getFocusableElements;
568
+ static ɵfac: i0.ɵɵFactoryDeclaration<FuiDialogDrawerContainerComponent, never>;
569
+ static ɵcmp: i0.ɵɵComponentDeclaration<FuiDialogDrawerContainerComponent, "fui-dialog-drawer-container", never, {}, { "closed": "closed"; }, never, ["*", "[drawerFooter]"], true, never>;
570
+ }
571
+
433
572
  declare class FuiConfirmDialogComponent {
434
573
  private readonly data;
435
574
  private readonly dialogRef;
@@ -446,6 +585,6 @@ declare class FuiConfirmDialogComponent {
446
585
  static ɵcmp: i0.ɵɵComponentDeclaration<FuiConfirmDialogComponent, "fui-confirm-dialog", never, {}, {}, never, never, true, never>;
447
586
  }
448
587
 
449
- export { FUI_DIALOG_DATA, FUI_DIALOG_DEFAULT_OPTIONS, FuiConfirmDialogComponent, FuiDialogContainerComponent, FuiDialogRef, FuiDialogService };
450
- export type { FuiAutoFocusTarget, FuiConfirmDialogConfig, FuiConfirmDialogVariant, FuiDialogConfig, FuiDialogContainerBase, FuiDialogOpenResult, FuiDialogPosition, FuiDialogRole, FuiDialogState, IFuiDialogRef };
588
+ export { DRAWER_SIZE_VALUES, FUI_DIALOG_DATA, FUI_DIALOG_DEFAULT_OPTIONS, FuiConfirmDialogComponent, FuiDialogContainerComponent, FuiDialogDrawerContainerComponent, FuiDialogRef, FuiDialogService };
589
+ export type { DrawerPosition, DrawerSize, FuiAutoFocusTarget, FuiConfirmDialogConfig, FuiConfirmDialogVariant, FuiDialogConfig, FuiDialogContainerBase, FuiDialogOpenResult, FuiDialogPosition, FuiDialogRole, FuiDialogState, FuiDrawerConfig, IFuiDialogRef };
451
590
  //# sourceMappingURL=raintonic-formaui-services-dialog.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"raintonic-formaui-services-dialog.d.ts","sources":["../../../lib/services/dialog/dialog.types.ts","../../../lib/services/dialog/dialog-ref.ts","../../../lib/services/dialog/dialog.service.ts","../../../lib/services/dialog/dialog-container.component.ts","../../../lib/services/dialog/confirm-dialog.component.ts"],"mappings":"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","names":["_angular_core"]}
1
+ {"version":3,"file":"raintonic-formaui-services-dialog.d.ts","sources":["../../../lib/services/dialog/dialog.types.ts","../../../lib/services/dialog/dialog-ref.ts","../../../lib/services/dialog/dialog.service.ts","../../../lib/services/dialog/dialog-container.component.ts","../../../lib/services/dialog/drawer-container/drawer-container.component.ts","../../../lib/services/dialog/confirm-dialog.component.ts"],"mappings":"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","names":["_angular_core"]}
@@ -186,10 +186,19 @@ declare class FuiNotificationContainerComponent {
186
186
  * Progress values for each notification (0-100)
187
187
  */
188
188
  readonly progressValues: i0.WritableSignal<Map<any, any>>;
189
+ private static readonly UPDATE_INTERVAL_MS;
189
190
  /**
190
- * Timers for auto-dismiss
191
+ * Per-notification timer state for auto-dismiss. Holds the active interval+timeout pair
192
+ * plus the metadata needed to compute remaining duration when pause/resume cycles occur.
191
193
  */
192
- private readonly timers;
194
+ private readonly _timerStates;
195
+ /**
196
+ * Per-notification interaction counter. Increments on mouseenter/focusin, decrements on
197
+ * mouseleave/focusout. Timer is paused when count goes 0→1, resumed when 1→0.
198
+ * Why: hover and focus can overlap (e.g. user hovers, then tabs into the close button).
199
+ * A single boolean flag would resume too early when one source leaves but the other holds.
200
+ */
201
+ private readonly _interactionCounts;
193
202
  constructor();
194
203
  /**
195
204
  * Add a notification to the container
@@ -211,8 +220,21 @@ declare class FuiNotificationContainerComponent {
211
220
  * Check if notification should show progress bar
212
221
  */
213
222
  shouldShowProgress(notification: FuiNotificationRef): boolean;
223
+ /**
224
+ * Increment the interaction count for a notification. Called on mouseenter and focusin.
225
+ * Pauses the timer when the count transitions from 0 to 1.
226
+ */
227
+ onInteractionEnter(notificationId: string): void;
228
+ /**
229
+ * Decrement the interaction count for a notification. Called on mouseleave and focusout.
230
+ * Resumes the timer when the count transitions back to 0.
231
+ */
232
+ onInteractionLeave(notificationId: string): void;
214
233
  private _setupAutoDismiss;
215
234
  private _removeNotification;
235
+ private _pauseTimer;
236
+ private _resumeTimer;
237
+ private _startProgressInterval;
216
238
  static ɵfac: i0.ɵɵFactoryDeclaration<FuiNotificationContainerComponent, never>;
217
239
  static ɵcmp: i0.ɵɵComponentDeclaration<FuiNotificationContainerComponent, "fui-notification-container", never, {}, {}, never, never, true, never>;
218
240
  }
@@ -1 +1 @@
1
- {"version":3,"file":"raintonic-formaui-services-notification.d.ts","sources":["../../../lib/services/notification/notification-ref.ts","../../../lib/services/notification/notification.service.ts","../../../lib/services/notification/notification-container.component.ts"],"mappings":";;;;AAGA;;;AAGG;AACH,cAAa,kBAAkB;AAeX;AACA,qBAAQ,qBAAqB;AAf/C;AACA;AAEA;;AAEG;AACH,0BAAsB,UAAU;AAEhC;;AAEG;AACH,6BAAyB,UAAU;AAGjB,oCACQ,qBAAqB;AAG/C;;AAEG;AACH;AAKA;;;AAGG;AACH;AAID;;AC3BD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6DG;AACH,cAGa,sBAAsB;AACjC;AACA;AACA;AACA;AACA;AAEA;;AAEG;AACH;AAEA;;AAEG;;AAGH;;AAEG;;;AAOH;;AAEG;AACH,iCAA6B,uBAAuB;AAIpD;;AAEG;AACH,qCAEY,OAAO,CAAC,IAAI,CAAC,qBAAqB;mBAC/B,uBAAuB;AACnC,QACA,kBAAkB;AAQrB;;AAEG;AACH,kCAEY,OAAO,CAAC,IAAI,CAAC,qBAAqB;mBAC/B,uBAAuB;AACnC,QACA,kBAAkB;AAQrB;;AAEG;AACH,qCAEY,OAAO,CAAC,IAAI,CAAC,qBAAqB;mBAC/B,uBAAuB;AACnC,QACA,kBAAkB;AAQrB;;AAEG;AACH,mCAEY,OAAO,CAAC,IAAI,CAAC,qBAAqB;mBAC/B,uBAAuB;AACnC,QACA,kBAAkB;AAQrB;;AAEG;AACH,qCAEY,OAAO,CAAC,IAAI,CAAC,qBAAqB;mBAC/B,uBAAuB;AACnC,QACA,kBAAkB;AAQrB;;AAEG;AACH,qCAEY,OAAO,CAAC,IAAI,CAAC,qBAAqB;mBAC/B,uBAAuB;AACnC,QACA,kBAAkB;AAQrB;;AAEG;AACH,iBAAa,qBAAqB;mBAAgB,uBAAuB;AAAE,QAAG,kBAAkB;AAchG;;AAEG;AACH,4BAAwB,uBAAuB;AAW/C;;AAEG;AACH;AASA;AAWA;yCAvLW,sBAAsB;6CAAtB,sBAAsB;AA0MlC;;ACtRD;;;;AAIG;AACH,cAea,iCAAiC;AAC5C;;AAEG;4BACmBA,EAAA,CAAA,cAAA,CAAA,kBAAA;AAEtB;;AAEG;6BACoBA,EAAA,CAAA,cAAA,CAAA,GAAA;AAEvB;;AAEG;AACH;;AAaA;;AAEG;AACH,kCAA8B,kBAAkB;AAehD;;AAEG;AACH;AAOA;;AAEG;AACH,sCAAkC,kBAAkB;AAIpD;;AAEG;AACH;AAIA;;AAEG;AACH,qCAAiC,kBAAkB;AAKnD;AA4BA;yCAzGW,iCAAiC;2CAAjC,iCAAiC;AA+H7C;;;;","names":["_angular_core"]}
1
+ {"version":3,"file":"raintonic-formaui-services-notification.d.ts","sources":["../../../lib/services/notification/notification-ref.ts","../../../lib/services/notification/notification.service.ts","../../../lib/services/notification/notification-container.component.ts"],"mappings":";;;;AAGA;;;AAGG;AACH,cAAa,kBAAkB;AAeX;AACA,qBAAQ,qBAAqB;AAf/C;AACA;AAEA;;AAEG;AACH,0BAAsB,UAAU;AAEhC;;AAEG;AACH,6BAAyB,UAAU;AAGjB,oCACQ,qBAAqB;AAG/C;;AAEG;AACH;AAKA;;;AAGG;AACH;AAID;;AC3BD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6DG;AACH,cAGa,sBAAsB;AACjC;AACA;AACA;AACA;AACA;AAEA;;AAEG;AACH;AAEA;;AAEG;;AAGH;;AAEG;;;AAOH;;AAEG;AACH,iCAA6B,uBAAuB;AAIpD;;AAEG;AACH,qCAEY,OAAO,CAAC,IAAI,CAAC,qBAAqB;mBAC/B,uBAAuB;AACnC,QACA,kBAAkB;AAQrB;;AAEG;AACH,kCAEY,OAAO,CAAC,IAAI,CAAC,qBAAqB;mBAC/B,uBAAuB;AACnC,QACA,kBAAkB;AAQrB;;AAEG;AACH,qCAEY,OAAO,CAAC,IAAI,CAAC,qBAAqB;mBAC/B,uBAAuB;AACnC,QACA,kBAAkB;AAQrB;;AAEG;AACH,mCAEY,OAAO,CAAC,IAAI,CAAC,qBAAqB;mBAC/B,uBAAuB;AACnC,QACA,kBAAkB;AAQrB;;AAEG;AACH,qCAEY,OAAO,CAAC,IAAI,CAAC,qBAAqB;mBAC/B,uBAAuB;AACnC,QACA,kBAAkB;AAQrB;;AAEG;AACH,qCAEY,OAAO,CAAC,IAAI,CAAC,qBAAqB;mBAC/B,uBAAuB;AACnC,QACA,kBAAkB;AAQrB;;AAEG;AACH,iBAAa,qBAAqB;mBAAgB,uBAAuB;AAAE,QAAG,kBAAkB;AAchG;;AAEG;AACH,4BAAwB,uBAAuB;AAW/C;;AAEG;AACH;AASA;AAWA;yCAvLW,sBAAsB;6CAAtB,sBAAsB;AA0MlC;;ACtRD;;;;AAIG;AACH,cAea,iCAAiC;AAC5C;;AAEG;4BACmBA,EAAA,CAAA,cAAA,CAAA,kBAAA;AAEtB;;AAEG;6BACoBA,EAAA,CAAA,cAAA,CAAA,GAAA;AAEvB;AAEA;;;AAGG;AACH;AAWA;;;;;AAKG;AACH;;AAUA;;AAEG;AACH,kCAA8B,kBAAkB;AAehD;;AAEG;AACH;AAOA;;AAEG;AACH,sCAAkC,kBAAkB;AAIpD;;AAEG;AACH;AAIA;;AAEG;AACH,qCAAiC,kBAAkB;AAKnD;;;AAGG;AACH;AAQA;;;AAGG;AACH;AAQA;AAkBA;AAoBA;AASA;AA6BA;yCAlMW,iCAAiC;2CAAjC,iCAAiC;AAmN7C;;;;","names":["_angular_core"]}