@loomui-ng/ui 0.0.0-stage → 0.1.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 (270) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +46 -2
  3. package/accordion/README.md +38 -0
  4. package/alert/README.md +32 -0
  5. package/alert-dialog/README.md +37 -0
  6. package/aspect-ratio/README.md +24 -0
  7. package/attachment/README.md +40 -0
  8. package/avatar/README.md +34 -0
  9. package/badge/README.md +29 -0
  10. package/breadcrumb/README.md +33 -0
  11. package/bubble/README.md +32 -0
  12. package/button/README.md +31 -0
  13. package/button-group/README.md +30 -0
  14. package/calendar/README.md +35 -0
  15. package/card/README.md +41 -0
  16. package/carousel/README.md +41 -0
  17. package/chart/README.md +25 -0
  18. package/checkbox/README.md +31 -0
  19. package/collapsible/README.md +31 -0
  20. package/combobox/README.md +47 -0
  21. package/command/README.md +44 -0
  22. package/context-menu/README.md +36 -0
  23. package/data-table/README.md +39 -0
  24. package/date-picker/README.md +23 -0
  25. package/dialog/README.md +52 -0
  26. package/direction/README.md +19 -0
  27. package/drawer/README.md +37 -0
  28. package/dropdown-menu/README.md +46 -0
  29. package/empty/README.md +38 -0
  30. package/fesm2022/loomui-ng-ui-accordion.mjs +555 -0
  31. package/fesm2022/loomui-ng-ui-accordion.mjs.map +1 -0
  32. package/fesm2022/loomui-ng-ui-alert-dialog.mjs +652 -0
  33. package/fesm2022/loomui-ng-ui-alert-dialog.mjs.map +1 -0
  34. package/fesm2022/loomui-ng-ui-alert.mjs +286 -0
  35. package/fesm2022/loomui-ng-ui-alert.mjs.map +1 -0
  36. package/fesm2022/loomui-ng-ui-aspect-ratio.mjs +97 -0
  37. package/fesm2022/loomui-ng-ui-aspect-ratio.mjs.map +1 -0
  38. package/fesm2022/loomui-ng-ui-attachment.mjs +713 -0
  39. package/fesm2022/loomui-ng-ui-attachment.mjs.map +1 -0
  40. package/fesm2022/loomui-ng-ui-avatar.mjs +561 -0
  41. package/fesm2022/loomui-ng-ui-avatar.mjs.map +1 -0
  42. package/fesm2022/loomui-ng-ui-badge.mjs +102 -0
  43. package/fesm2022/loomui-ng-ui-badge.mjs.map +1 -0
  44. package/fesm2022/loomui-ng-ui-breadcrumb.mjs +520 -0
  45. package/fesm2022/loomui-ng-ui-breadcrumb.mjs.map +1 -0
  46. package/fesm2022/loomui-ng-ui-bubble.mjs +386 -0
  47. package/fesm2022/loomui-ng-ui-bubble.mjs.map +1 -0
  48. package/fesm2022/loomui-ng-ui-button-group.mjs +193 -0
  49. package/fesm2022/loomui-ng-ui-button-group.mjs.map +1 -0
  50. package/fesm2022/loomui-ng-ui-button.mjs +162 -0
  51. package/fesm2022/loomui-ng-ui-button.mjs.map +1 -0
  52. package/fesm2022/loomui-ng-ui-calendar.mjs +681 -0
  53. package/fesm2022/loomui-ng-ui-calendar.mjs.map +1 -0
  54. package/fesm2022/loomui-ng-ui-card.mjs +461 -0
  55. package/fesm2022/loomui-ng-ui-card.mjs.map +1 -0
  56. package/fesm2022/loomui-ng-ui-carousel.mjs +532 -0
  57. package/fesm2022/loomui-ng-ui-carousel.mjs.map +1 -0
  58. package/fesm2022/loomui-ng-ui-chart.mjs +373 -0
  59. package/fesm2022/loomui-ng-ui-chart.mjs.map +1 -0
  60. package/fesm2022/loomui-ng-ui-checkbox.mjs +265 -0
  61. package/fesm2022/loomui-ng-ui-checkbox.mjs.map +1 -0
  62. package/fesm2022/loomui-ng-ui-collapsible.mjs +274 -0
  63. package/fesm2022/loomui-ng-ui-collapsible.mjs.map +1 -0
  64. package/fesm2022/loomui-ng-ui-combobox.mjs +971 -0
  65. package/fesm2022/loomui-ng-ui-combobox.mjs.map +1 -0
  66. package/fesm2022/loomui-ng-ui-command.mjs +982 -0
  67. package/fesm2022/loomui-ng-ui-command.mjs.map +1 -0
  68. package/fesm2022/loomui-ng-ui-context-menu.mjs +1359 -0
  69. package/fesm2022/loomui-ng-ui-context-menu.mjs.map +1 -0
  70. package/fesm2022/loomui-ng-ui-data-table.mjs +535 -0
  71. package/fesm2022/loomui-ng-ui-data-table.mjs.map +1 -0
  72. package/fesm2022/loomui-ng-ui-date-picker.mjs +312 -0
  73. package/fesm2022/loomui-ng-ui-date-picker.mjs.map +1 -0
  74. package/fesm2022/loomui-ng-ui-dialog.mjs +508 -0
  75. package/fesm2022/loomui-ng-ui-dialog.mjs.map +1 -0
  76. package/fesm2022/loomui-ng-ui-direction.mjs +112 -0
  77. package/fesm2022/loomui-ng-ui-direction.mjs.map +1 -0
  78. package/fesm2022/loomui-ng-ui-drawer.mjs +590 -0
  79. package/fesm2022/loomui-ng-ui-drawer.mjs.map +1 -0
  80. package/fesm2022/loomui-ng-ui-dropdown-menu.mjs +1322 -0
  81. package/fesm2022/loomui-ng-ui-dropdown-menu.mjs.map +1 -0
  82. package/fesm2022/loomui-ng-ui-empty.mjs +408 -0
  83. package/fesm2022/loomui-ng-ui-empty.mjs.map +1 -0
  84. package/fesm2022/loomui-ng-ui-field.mjs +630 -0
  85. package/fesm2022/loomui-ng-ui-field.mjs.map +1 -0
  86. package/fesm2022/loomui-ng-ui-hover-card.mjs +230 -0
  87. package/fesm2022/loomui-ng-ui-hover-card.mjs.map +1 -0
  88. package/fesm2022/loomui-ng-ui-icon.mjs +498 -0
  89. package/fesm2022/loomui-ng-ui-icon.mjs.map +1 -0
  90. package/fesm2022/loomui-ng-ui-input-group.mjs +463 -0
  91. package/fesm2022/loomui-ng-ui-input-group.mjs.map +1 -0
  92. package/fesm2022/loomui-ng-ui-input-otp.mjs +586 -0
  93. package/fesm2022/loomui-ng-ui-input-otp.mjs.map +1 -0
  94. package/fesm2022/loomui-ng-ui-input.mjs +289 -0
  95. package/fesm2022/loomui-ng-ui-input.mjs.map +1 -0
  96. package/fesm2022/loomui-ng-ui-item.mjs +598 -0
  97. package/fesm2022/loomui-ng-ui-item.mjs.map +1 -0
  98. package/fesm2022/loomui-ng-ui-kbd.mjs +129 -0
  99. package/fesm2022/loomui-ng-ui-kbd.mjs.map +1 -0
  100. package/fesm2022/loomui-ng-ui-label.mjs +68 -0
  101. package/fesm2022/loomui-ng-ui-label.mjs.map +1 -0
  102. package/fesm2022/loomui-ng-ui-marker.mjs +234 -0
  103. package/fesm2022/loomui-ng-ui-marker.mjs.map +1 -0
  104. package/fesm2022/loomui-ng-ui-menubar.mjs +1523 -0
  105. package/fesm2022/loomui-ng-ui-menubar.mjs.map +1 -0
  106. package/fesm2022/loomui-ng-ui-message-scroller.mjs +519 -0
  107. package/fesm2022/loomui-ng-ui-message-scroller.mjs.map +1 -0
  108. package/fesm2022/loomui-ng-ui-message.mjs +408 -0
  109. package/fesm2022/loomui-ng-ui-message.mjs.map +1 -0
  110. package/fesm2022/loomui-ng-ui-native-select.mjs +389 -0
  111. package/fesm2022/loomui-ng-ui-native-select.mjs.map +1 -0
  112. package/fesm2022/loomui-ng-ui-navigation-menu.mjs +609 -0
  113. package/fesm2022/loomui-ng-ui-navigation-menu.mjs.map +1 -0
  114. package/fesm2022/loomui-ng-ui-pagination.mjs +611 -0
  115. package/fesm2022/loomui-ng-ui-pagination.mjs.map +1 -0
  116. package/fesm2022/loomui-ng-ui-popover.mjs +358 -0
  117. package/fesm2022/loomui-ng-ui-popover.mjs.map +1 -0
  118. package/fesm2022/loomui-ng-ui-progress.mjs +159 -0
  119. package/fesm2022/loomui-ng-ui-progress.mjs.map +1 -0
  120. package/fesm2022/loomui-ng-ui-questionnaire.mjs +1012 -0
  121. package/fesm2022/loomui-ng-ui-questionnaire.mjs.map +1 -0
  122. package/fesm2022/loomui-ng-ui-radio-group.mjs +399 -0
  123. package/fesm2022/loomui-ng-ui-radio-group.mjs.map +1 -0
  124. package/fesm2022/loomui-ng-ui-resizable.mjs +518 -0
  125. package/fesm2022/loomui-ng-ui-resizable.mjs.map +1 -0
  126. package/fesm2022/loomui-ng-ui-scroll-area.mjs +135 -0
  127. package/fesm2022/loomui-ng-ui-scroll-area.mjs.map +1 -0
  128. package/fesm2022/loomui-ng-ui-select.mjs +863 -0
  129. package/fesm2022/loomui-ng-ui-select.mjs.map +1 -0
  130. package/fesm2022/loomui-ng-ui-separator.mjs +114 -0
  131. package/fesm2022/loomui-ng-ui-separator.mjs.map +1 -0
  132. package/fesm2022/loomui-ng-ui-sheet.mjs +530 -0
  133. package/fesm2022/loomui-ng-ui-sheet.mjs.map +1 -0
  134. package/fesm2022/loomui-ng-ui-sidebar.mjs +1918 -0
  135. package/fesm2022/loomui-ng-ui-sidebar.mjs.map +1 -0
  136. package/fesm2022/loomui-ng-ui-skeleton.mjs +69 -0
  137. package/fesm2022/loomui-ng-ui-skeleton.mjs.map +1 -0
  138. package/fesm2022/loomui-ng-ui-slider.mjs +390 -0
  139. package/fesm2022/loomui-ng-ui-slider.mjs.map +1 -0
  140. package/fesm2022/loomui-ng-ui-spinner.mjs +85 -0
  141. package/fesm2022/loomui-ng-ui-spinner.mjs.map +1 -0
  142. package/fesm2022/loomui-ng-ui-switch.mjs +212 -0
  143. package/fesm2022/loomui-ng-ui-switch.mjs.map +1 -0
  144. package/fesm2022/loomui-ng-ui-table.mjs +559 -0
  145. package/fesm2022/loomui-ng-ui-table.mjs.map +1 -0
  146. package/fesm2022/loomui-ng-ui-tabs.mjs +544 -0
  147. package/fesm2022/loomui-ng-ui-tabs.mjs.map +1 -0
  148. package/fesm2022/loomui-ng-ui-textarea.mjs +206 -0
  149. package/fesm2022/loomui-ng-ui-textarea.mjs.map +1 -0
  150. package/fesm2022/loomui-ng-ui-toast.mjs +432 -0
  151. package/fesm2022/loomui-ng-ui-toast.mjs.map +1 -0
  152. package/fesm2022/loomui-ng-ui-toggle-group.mjs +477 -0
  153. package/fesm2022/loomui-ng-ui-toggle-group.mjs.map +1 -0
  154. package/fesm2022/loomui-ng-ui-toggle.mjs +219 -0
  155. package/fesm2022/loomui-ng-ui-toggle.mjs.map +1 -0
  156. package/fesm2022/loomui-ng-ui-tooltip.mjs +240 -0
  157. package/fesm2022/loomui-ng-ui-tooltip.mjs.map +1 -0
  158. package/fesm2022/loomui-ng-ui-typography.mjs +129 -0
  159. package/fesm2022/loomui-ng-ui-typography.mjs.map +1 -0
  160. package/fesm2022/loomui-ng-ui-utils.mjs +1533 -0
  161. package/fesm2022/loomui-ng-ui-utils.mjs.map +1 -0
  162. package/fesm2022/loomui-ng-ui.mjs +4 -0
  163. package/fesm2022/loomui-ng-ui.mjs.map +1 -0
  164. package/field/README.md +43 -0
  165. package/hover-card/README.md +31 -0
  166. package/icon/README.md +42 -0
  167. package/input/README.md +26 -0
  168. package/input-group/README.md +40 -0
  169. package/input-otp/README.md +35 -0
  170. package/item/README.md +33 -0
  171. package/kbd/README.md +21 -0
  172. package/label/README.md +24 -0
  173. package/marker/README.md +24 -0
  174. package/menubar/README.md +40 -0
  175. package/message/README.md +32 -0
  176. package/message-scroller/README.md +40 -0
  177. package/native-select/README.md +26 -0
  178. package/navigation-menu/README.md +39 -0
  179. package/package.json +325 -3
  180. package/pagination/README.md +37 -0
  181. package/popover/README.md +37 -0
  182. package/progress/README.md +25 -0
  183. package/questionnaire/README.md +52 -0
  184. package/radio-group/README.md +33 -0
  185. package/resizable/README.md +37 -0
  186. package/scroll-area/README.md +25 -0
  187. package/select/README.md +45 -0
  188. package/separator/README.md +28 -0
  189. package/sheet/README.md +38 -0
  190. package/sidebar/README.md +60 -0
  191. package/skeleton/README.md +21 -0
  192. package/slider/README.md +29 -0
  193. package/spinner/README.md +15 -0
  194. package/styles/loomui.css +330 -0
  195. package/switch/README.md +29 -0
  196. package/table/README.md +31 -0
  197. package/tabs/README.md +42 -0
  198. package/textarea/README.md +28 -0
  199. package/toast/README.md +27 -0
  200. package/toggle/README.md +27 -0
  201. package/toggle-group/README.md +37 -0
  202. package/tooltip/README.md +31 -0
  203. package/types/loomui-ng-ui-accordion.d.ts +141 -0
  204. package/types/loomui-ng-ui-alert-dialog.d.ts +175 -0
  205. package/types/loomui-ng-ui-alert.d.ts +77 -0
  206. package/types/loomui-ng-ui-aspect-ratio.d.ts +31 -0
  207. package/types/loomui-ng-ui-attachment.d.ts +192 -0
  208. package/types/loomui-ng-ui-avatar.d.ts +147 -0
  209. package/types/loomui-ng-ui-badge.d.ts +32 -0
  210. package/types/loomui-ng-ui-breadcrumb.d.ts +118 -0
  211. package/types/loomui-ng-ui-bubble.d.ts +100 -0
  212. package/types/loomui-ng-ui-button-group.d.ts +51 -0
  213. package/types/loomui-ng-ui-button.d.ts +57 -0
  214. package/types/loomui-ng-ui-calendar.d.ts +171 -0
  215. package/types/loomui-ng-ui-card.d.ts +123 -0
  216. package/types/loomui-ng-ui-carousel.d.ts +140 -0
  217. package/types/loomui-ng-ui-chart.d.ts +95 -0
  218. package/types/loomui-ng-ui-checkbox.d.ts +62 -0
  219. package/types/loomui-ng-ui-collapsible.d.ts +74 -0
  220. package/types/loomui-ng-ui-combobox.d.ts +229 -0
  221. package/types/loomui-ng-ui-command.d.ts +231 -0
  222. package/types/loomui-ng-ui-context-menu.d.ts +288 -0
  223. package/types/loomui-ng-ui-data-table.d.ts +111 -0
  224. package/types/loomui-ng-ui-date-picker.d.ts +63 -0
  225. package/types/loomui-ng-ui-dialog.d.ts +127 -0
  226. package/types/loomui-ng-ui-direction.d.ts +42 -0
  227. package/types/loomui-ng-ui-drawer.d.ts +149 -0
  228. package/types/loomui-ng-ui-dropdown-menu.d.ts +258 -0
  229. package/types/loomui-ng-ui-empty.d.ts +109 -0
  230. package/types/loomui-ng-ui-field.d.ts +169 -0
  231. package/types/loomui-ng-ui-hover-card.d.ts +62 -0
  232. package/types/loomui-ng-ui-icon.d.ts +156 -0
  233. package/types/loomui-ng-ui-input-group.d.ts +130 -0
  234. package/types/loomui-ng-ui-input-otp.d.ts +149 -0
  235. package/types/loomui-ng-ui-input.d.ts +89 -0
  236. package/types/loomui-ng-ui-item.d.ts +157 -0
  237. package/types/loomui-ng-ui-kbd.d.ts +36 -0
  238. package/types/loomui-ng-ui-label.d.ts +19 -0
  239. package/types/loomui-ng-ui-marker.d.ts +61 -0
  240. package/types/loomui-ng-ui-menubar.d.ts +321 -0
  241. package/types/loomui-ng-ui-message-scroller.d.ts +138 -0
  242. package/types/loomui-ng-ui-message.d.ts +109 -0
  243. package/types/loomui-ng-ui-native-select.d.ts +84 -0
  244. package/types/loomui-ng-ui-navigation-menu.d.ts +160 -0
  245. package/types/loomui-ng-ui-pagination.d.ts +130 -0
  246. package/types/loomui-ng-ui-popover.d.ts +90 -0
  247. package/types/loomui-ng-ui-progress.d.ts +39 -0
  248. package/types/loomui-ng-ui-questionnaire.d.ts +274 -0
  249. package/types/loomui-ng-ui-radio-group.d.ts +109 -0
  250. package/types/loomui-ng-ui-resizable.d.ts +121 -0
  251. package/types/loomui-ng-ui-scroll-area.d.ts +44 -0
  252. package/types/loomui-ng-ui-select.d.ts +204 -0
  253. package/types/loomui-ng-ui-separator.d.ts +35 -0
  254. package/types/loomui-ng-ui-sheet.d.ts +124 -0
  255. package/types/loomui-ng-ui-sidebar.d.ts +485 -0
  256. package/types/loomui-ng-ui-skeleton.d.ts +20 -0
  257. package/types/loomui-ng-ui-slider.d.ts +103 -0
  258. package/types/loomui-ng-ui-spinner.d.ts +19 -0
  259. package/types/loomui-ng-ui-switch.d.ts +56 -0
  260. package/types/loomui-ng-ui-table.d.ts +148 -0
  261. package/types/loomui-ng-ui-tabs.d.ts +148 -0
  262. package/types/loomui-ng-ui-textarea.d.ts +52 -0
  263. package/types/loomui-ng-ui-toast.d.ts +97 -0
  264. package/types/loomui-ng-ui-toggle-group.d.ts +138 -0
  265. package/types/loomui-ng-ui-toggle.d.ts +63 -0
  266. package/types/loomui-ng-ui-tooltip.d.ts +63 -0
  267. package/types/loomui-ng-ui-typography.d.ts +42 -0
  268. package/types/loomui-ng-ui-utils.d.ts +392 -0
  269. package/types/loomui-ng-ui.d.ts +5 -0
  270. package/typography/README.md +29 -0
@@ -0,0 +1,1533 @@
1
+ import { clsx } from "clsx";
2
+ import { twMerge } from "tailwind-merge";
3
+ import * as i0 from "@angular/core";
4
+ import { DestroyRef, Directive, ElementRef, InjectionToken, Injector, afterNextRender, booleanAttribute, computed, effect, inject, input, linkedSignal, model, output, signal, untracked, viewChild } from "@angular/core";
5
+ import { Directionality } from "@angular/cdk/bidi";
6
+ import { Overlay } from "@angular/cdk/overlay";
7
+ import { DomPortal } from "@angular/cdk/portal";
8
+ import { FocusKeyManager, FocusTrapFactory } from "@angular/cdk/a11y";
9
+ function cn(...inputs) {
10
+ return twMerge(clsx(inputs));
11
+ }
12
+ let uidCounter = 0;
13
+ const nextId = (prefix) => `${prefix}-${uidCounter++}`;
14
+ function hideOthers(keep) {
15
+ const changed = [];
16
+ for (const el of Array.from(document.body.children)) {
17
+ if (el === keep || el.contains(keep) || el.tagName === "SCRIPT") continue;
18
+ changed.push({
19
+ el,
20
+ prev: el.getAttribute("aria-hidden")
21
+ });
22
+ el.setAttribute("aria-hidden", "true");
23
+ el.setAttribute("data-aria-hidden", "true");
24
+ }
25
+ return () => {
26
+ for (const { el, prev } of changed) {
27
+ el.removeAttribute("data-aria-hidden");
28
+ if (prev === null) el.removeAttribute("aria-hidden");
29
+ else el.setAttribute("aria-hidden", prev);
30
+ }
31
+ };
32
+ }
33
+ function whenAnimationDone(el, fallbackMs = 250) {
34
+ return new Promise((resolve) => {
35
+ if (!el) return resolve();
36
+ let done = false;
37
+ const finish = () => {
38
+ if (done) return;
39
+ done = true;
40
+ el.removeEventListener("animationend", onEnd);
41
+ el.removeEventListener("animationcancel", onEnd);
42
+ clearTimeout(timer);
43
+ resolve();
44
+ };
45
+ const onEnd = (e) => {
46
+ if (e.target === el) finish();
47
+ };
48
+ el.addEventListener("animationend", onEnd);
49
+ el.addEventListener("animationcancel", onEnd);
50
+ const timer = setTimeout(finish, fallbackMs);
51
+ if (!(typeof el.getAnimations === "function" ? el.getAnimations().length : 0)) finish();
52
+ });
53
+ }
54
+ var UiLayerRoot = class UiLayerRoot {
55
+ open = model(false, ...ngDevMode ? [{ debugName: "open" }] : /* istanbul ignore next */ []);
56
+ id = nextId("ui-layer");
57
+ mounted = signal(false, ...ngDevMode ? [{ debugName: "mounted" }] : /* istanbul ignore next */ []);
58
+ state = signal("closed", ...ngDevMode ? [{ debugName: "state" }] : /* istanbul ignore next */ []);
59
+ trigger = signal(null, ...ngDevMode ? [{ debugName: "trigger" }] : /* istanbul ignore next */ []);
60
+ contentEl = signal(null, ...ngDevMode ? [{ debugName: "contentEl" }] : /* istanbul ignore next */ []);
61
+ anchorPoint = signal(null, ...ngDevMode ? [{ debugName: "anchorPoint" }] : /* istanbul ignore next */ []);
62
+ childPanes = /* @__PURE__ */ new Set();
63
+ constructor() {
64
+ effect(() => {
65
+ const open = this.open();
66
+ untracked(() => {
67
+ if (open) {
68
+ this.mounted.set(true);
69
+ this.state.set("open");
70
+ } else if (this.mounted()) {
71
+ this.state.set("closed");
72
+ whenAnimationDone(this.contentEl()).then(() => {
73
+ if (!this.open()) this.mounted.set(false);
74
+ });
75
+ }
76
+ });
77
+ });
78
+ }
79
+ toggle() {
80
+ this.open.update((v) => !v);
81
+ }
82
+ close() {
83
+ this.open.set(false);
84
+ }
85
+ static ɵfac = i0.ɵɵngDeclareFactory({
86
+ minVersion: "12.0.0",
87
+ version: "22.2.2",
88
+ ngImport: i0,
89
+ type: UiLayerRoot,
90
+ deps: [],
91
+ target: i0.ɵɵFactoryTarget.Directive
92
+ });
93
+ static ɵdir = i0.ɵɵngDeclareDirective({
94
+ minVersion: "17.1.0",
95
+ version: "22.2.2",
96
+ type: UiLayerRoot,
97
+ isStandalone: true,
98
+ inputs: { open: {
99
+ classPropertyName: "open",
100
+ publicName: "open",
101
+ isSignal: true,
102
+ isRequired: false,
103
+ transformFunction: null
104
+ } },
105
+ outputs: { open: "openChange" },
106
+ ngImport: i0
107
+ });
108
+ };
109
+ i0.ɵɵngDeclareClassMetadata({
110
+ minVersion: "12.0.0",
111
+ version: "22.2.2",
112
+ ngImport: i0,
113
+ type: UiLayerRoot,
114
+ decorators: [{ type: Directive }],
115
+ ctorParameters: () => [],
116
+ propDecorators: { open: [{
117
+ type: i0.Input,
118
+ args: [{
119
+ isSignal: true,
120
+ alias: "open",
121
+ required: false
122
+ }]
123
+ }, {
124
+ type: i0.Output,
125
+ args: ["openChange"]
126
+ }] }
127
+ });
128
+ const OPPOSITE = {
129
+ top: "bottom",
130
+ bottom: "top",
131
+ left: "right",
132
+ right: "left"
133
+ };
134
+ function buildPositions(side, align, sideOffset, rtl) {
135
+ const meta = /* @__PURE__ */ new WeakMap();
136
+ const make = (s) => {
137
+ let p;
138
+ const xAlign = align === "center" ? "center" : align;
139
+ if (s === "bottom" || s === "top") p = {
140
+ originX: xAlign,
141
+ originY: s === "bottom" ? "bottom" : "top",
142
+ overlayX: xAlign,
143
+ overlayY: s === "bottom" ? "top" : "bottom",
144
+ offsetY: s === "bottom" ? sideOffset : -sideOffset
145
+ };
146
+ else {
147
+ const yAlign = align === "start" ? "top" : align === "end" ? "bottom" : "center";
148
+ const outerX = s === "right" !== rtl ? "end" : "start";
149
+ p = {
150
+ originX: outerX,
151
+ originY: yAlign,
152
+ overlayX: outerX === "end" ? "start" : "end",
153
+ overlayY: yAlign,
154
+ offsetX: s === "right" ? sideOffset : -sideOffset
155
+ };
156
+ }
157
+ meta.set(p, {
158
+ side: s,
159
+ align
160
+ });
161
+ return p;
162
+ };
163
+ return {
164
+ positions: [make(side), make(OPPOSITE[side])],
165
+ meta
166
+ };
167
+ }
168
+ function transformOrigin(side, align) {
169
+ const x = align === "start" ? "left" : align === "end" ? "right" : "center";
170
+ const y = align === "start" ? "top" : align === "end" ? "bottom" : "center";
171
+ if (side === "bottom") return `${x} top`;
172
+ if (side === "top") return `${x} bottom`;
173
+ if (side === "right") return `left ${y}`;
174
+ return `right ${y}`;
175
+ }
176
+ var UiPopperContentBase = class UiPopperContentBase {
177
+ side = input("bottom", ...ngDevMode ? [{ debugName: "side" }] : /* istanbul ignore next */ []);
178
+ align = input("center", ...ngDevMode ? [{ debugName: "align" }] : /* istanbul ignore next */ []);
179
+ sideOffset = input(4, ...ngDevMode ? [{ debugName: "sideOffset" }] : /* istanbul ignore next */ []);
180
+ userClass = input("", {
181
+ ...ngDevMode ? { debugName: "userClass" } : /* istanbul ignore next */ {},
182
+ alias: "class"
183
+ });
184
+ el = inject(ElementRef).nativeElement;
185
+ overlay = inject(Overlay);
186
+ dir = inject(Directionality);
187
+ injector = inject(Injector);
188
+ overlayRef = null;
189
+ lastActive = null;
190
+ onAttached() {}
191
+ onDetached() {}
192
+ closeOnOutside = true;
193
+ restoreFocusOnClose = true;
194
+ matchTriggerWidth = false;
195
+ init() {
196
+ this.el.hidden = true;
197
+ this.root.contentEl.set(this.el);
198
+ effect(() => {
199
+ const mounted = this.root.mounted();
200
+ untracked(() => mounted ? this.attach() : this.detach());
201
+ }, { injector: this.injector });
202
+ inject(DestroyRef).onDestroy(() => this.detach(false));
203
+ }
204
+ attach() {
205
+ const trigger = this.root.trigger();
206
+ const point = this.root.anchorPoint();
207
+ if (this.overlayRef || !trigger && !point) return;
208
+ this.lastActive = document.activeElement;
209
+ const rtl = this.dir.value === "rtl";
210
+ const { positions, meta } = buildPositions(this.side(), this.align(), this.sideOffset(), rtl);
211
+ const strategy = this.overlay.position().flexibleConnectedTo(point ?? trigger).withPositions(positions).withPush(false).withFlexibleDimensions(false).withViewportMargin(8);
212
+ const ref = this.overlay.create({
213
+ positionStrategy: strategy,
214
+ scrollStrategy: this.overlay.scrollStrategies.reposition(),
215
+ direction: this.dir.value,
216
+ minWidth: this.matchTriggerWidth && trigger ? trigger.getBoundingClientRect().width : void 0
217
+ });
218
+ this.overlayRef = ref;
219
+ strategy.positionChanges.subscribe((c) => {
220
+ const m = meta.get(c.connectionPair);
221
+ if (!m) return;
222
+ this.el.setAttribute("data-side", m.side);
223
+ this.el.setAttribute("data-align", m.align);
224
+ this.setVars(m.side, m.align, trigger);
225
+ });
226
+ ref.attach(new DomPortal(this.el));
227
+ this.el.hidden = false;
228
+ this.el.setAttribute("data-side", this.side());
229
+ this.el.setAttribute("data-align", this.align());
230
+ this.setVars(this.side(), this.align(), trigger);
231
+ this.registerChildPane();
232
+ if (this.closeOnOutside) {
233
+ ref.keydownEvents().subscribe((e) => {
234
+ if (e.key === "Escape" && !e.defaultPrevented) {
235
+ e.preventDefault();
236
+ this.root.close();
237
+ }
238
+ });
239
+ ref.outsidePointerEvents().subscribe((e) => {
240
+ const t = e.target;
241
+ if (t && trigger?.contains(t)) return;
242
+ if (t && [...this.root.childPanes].some((pane) => pane.contains(t))) return;
243
+ this.root.close();
244
+ });
245
+ }
246
+ this.onAttached();
247
+ }
248
+ detach(restoreFocus = true) {
249
+ if (!this.overlayRef) return;
250
+ this.onDetached();
251
+ this.overlayRef.dispose();
252
+ this.overlayRef = null;
253
+ this.el.hidden = true;
254
+ if (restoreFocus && this.restoreFocusOnClose) (this.root.trigger() ?? this.lastActive)?.focus();
255
+ }
256
+ registerChildPane() {}
257
+ setVars(side, align, trigger) {
258
+ const r = trigger?.getBoundingClientRect() ?? new DOMRect(0, 0, 0, 0);
259
+ const s = this.el.style;
260
+ s.setProperty(`${this.varPrefix}-content-transform-origin`, transformOrigin(side, align));
261
+ s.setProperty(`${this.varPrefix}-trigger-width`, `${r.width}px`);
262
+ s.setProperty(`${this.varPrefix}-trigger-height`, `${r.height}px`);
263
+ s.setProperty(`${this.varPrefix}-content-available-height`, `${window.innerHeight - 16}px`);
264
+ s.setProperty(`${this.varPrefix}-content-available-width`, `${window.innerWidth - 16}px`);
265
+ }
266
+ static ɵfac = i0.ɵɵngDeclareFactory({
267
+ minVersion: "12.0.0",
268
+ version: "22.2.2",
269
+ ngImport: i0,
270
+ type: UiPopperContentBase,
271
+ deps: [],
272
+ target: i0.ɵɵFactoryTarget.Directive
273
+ });
274
+ static ɵdir = i0.ɵɵngDeclareDirective({
275
+ minVersion: "17.1.0",
276
+ version: "22.2.2",
277
+ type: UiPopperContentBase,
278
+ isStandalone: true,
279
+ inputs: {
280
+ side: {
281
+ classPropertyName: "side",
282
+ publicName: "side",
283
+ isSignal: true,
284
+ isRequired: false,
285
+ transformFunction: null
286
+ },
287
+ align: {
288
+ classPropertyName: "align",
289
+ publicName: "align",
290
+ isSignal: true,
291
+ isRequired: false,
292
+ transformFunction: null
293
+ },
294
+ sideOffset: {
295
+ classPropertyName: "sideOffset",
296
+ publicName: "sideOffset",
297
+ isSignal: true,
298
+ isRequired: false,
299
+ transformFunction: null
300
+ },
301
+ userClass: {
302
+ classPropertyName: "userClass",
303
+ publicName: "class",
304
+ isSignal: true,
305
+ isRequired: false,
306
+ transformFunction: null
307
+ }
308
+ },
309
+ ngImport: i0
310
+ });
311
+ };
312
+ i0.ɵɵngDeclareClassMetadata({
313
+ minVersion: "12.0.0",
314
+ version: "22.2.2",
315
+ ngImport: i0,
316
+ type: UiPopperContentBase,
317
+ decorators: [{ type: Directive }],
318
+ propDecorators: {
319
+ side: [{
320
+ type: i0.Input,
321
+ args: [{
322
+ isSignal: true,
323
+ alias: "side",
324
+ required: false
325
+ }]
326
+ }],
327
+ align: [{
328
+ type: i0.Input,
329
+ args: [{
330
+ isSignal: true,
331
+ alias: "align",
332
+ required: false
333
+ }]
334
+ }],
335
+ sideOffset: [{
336
+ type: i0.Input,
337
+ args: [{
338
+ isSignal: true,
339
+ alias: "sideOffset",
340
+ required: false
341
+ }]
342
+ }],
343
+ userClass: [{
344
+ type: i0.Input,
345
+ args: [{
346
+ isSignal: true,
347
+ alias: "class",
348
+ required: false
349
+ }]
350
+ }]
351
+ }
352
+ });
353
+ var UiModalRoot = class UiModalRoot extends UiLayerRoot {
354
+ titleId = `${this.id}H1`;
355
+ descriptionId = `${this.id}H2`;
356
+ static ɵfac = i0.ɵɵngDeclareFactory({
357
+ minVersion: "12.0.0",
358
+ version: "22.2.2",
359
+ ngImport: i0,
360
+ type: UiModalRoot,
361
+ deps: null,
362
+ target: i0.ɵɵFactoryTarget.Directive
363
+ });
364
+ static ɵdir = i0.ɵɵngDeclareDirective({
365
+ minVersion: "14.0.0",
366
+ version: "22.2.2",
367
+ type: UiModalRoot,
368
+ isStandalone: true,
369
+ usesInheritance: true,
370
+ ngImport: i0
371
+ });
372
+ };
373
+ i0.ɵɵngDeclareClassMetadata({
374
+ minVersion: "12.0.0",
375
+ version: "22.2.2",
376
+ ngImport: i0,
377
+ type: UiModalRoot,
378
+ decorators: [{ type: Directive }]
379
+ });
380
+ var UiModalContentBase = class UiModalContentBase {
381
+ el = inject(ElementRef).nativeElement;
382
+ overlay = inject(Overlay);
383
+ trapFactory = inject(FocusTrapFactory);
384
+ injector = inject(Injector);
385
+ overlayRef = null;
386
+ trap = null;
387
+ restoreAria = null;
388
+ lastActive = null;
389
+ userClass = input("", {
390
+ ...ngDevMode ? { debugName: "userClass" } : /* istanbul ignore next */ {},
391
+ alias: "class"
392
+ });
393
+ init() {
394
+ this.el.hidden = true;
395
+ this.root.contentEl.set(this.el);
396
+ effect(() => {
397
+ const mounted = this.root.mounted();
398
+ untracked(() => mounted ? this.attach() : this.detach());
399
+ }, { injector: this.injector });
400
+ effect(() => {
401
+ const state = this.root.state();
402
+ this.overlayRef?.backdropElement?.setAttribute("data-state", state);
403
+ }, { injector: this.injector });
404
+ inject(DestroyRef).onDestroy(() => this.detach(false));
405
+ }
406
+ attach() {
407
+ if (this.overlayRef) return;
408
+ this.lastActive = document.activeElement;
409
+ const ref = this.overlay.create({
410
+ hasBackdrop: true,
411
+ backdropClass: this.config.backdropClass.split(/\s+/).filter(Boolean),
412
+ positionStrategy: this.overlay.position().global(),
413
+ scrollStrategy: this.overlay.scrollStrategies.block()
414
+ });
415
+ this.overlayRef = ref;
416
+ ref.attach(new DomPortal(this.el));
417
+ this.el.hidden = false;
418
+ const backdrop = ref.backdropElement;
419
+ backdrop?.setAttribute("data-slot", `${this.config.slot}-overlay`);
420
+ backdrop?.setAttribute("data-state", "open");
421
+ backdrop?.setAttribute("aria-hidden", "true");
422
+ backdrop?.setAttribute("data-aria-hidden", "true");
423
+ ref.keydownEvents().subscribe((e) => {
424
+ if (e.key === "Escape" && !e.defaultPrevented) {
425
+ e.preventDefault();
426
+ this.root.close();
427
+ }
428
+ });
429
+ if (this.config.closeOnBackdrop !== false) ref.backdropClick().subscribe(() => this.root.close());
430
+ const container = ref.hostElement.parentElement;
431
+ this.restoreAria = hideOthers(container);
432
+ document.body.setAttribute("data-scroll-locked", "1");
433
+ this.trap = this.trapFactory.create(this.el);
434
+ const preferred = this.config.initialFocusSelector ? this.el.querySelector(this.config.initialFocusSelector) : null;
435
+ if (preferred) queueMicrotask(() => preferred.focus());
436
+ else this.trap.focusInitialElementWhenReady().then((ok) => {
437
+ if (!ok) this.el.focus();
438
+ });
439
+ }
440
+ detach(restoreFocus = true) {
441
+ if (!this.overlayRef) return;
442
+ this.trap?.destroy();
443
+ this.trap = null;
444
+ this.overlayRef.dispose();
445
+ this.overlayRef = null;
446
+ this.el.hidden = true;
447
+ this.restoreAria?.();
448
+ this.restoreAria = null;
449
+ document.body.removeAttribute("data-scroll-locked");
450
+ if (restoreFocus) (this.root.trigger() ?? this.lastActive)?.focus();
451
+ }
452
+ static ɵfac = i0.ɵɵngDeclareFactory({
453
+ minVersion: "12.0.0",
454
+ version: "22.2.2",
455
+ ngImport: i0,
456
+ type: UiModalContentBase,
457
+ deps: [],
458
+ target: i0.ɵɵFactoryTarget.Directive
459
+ });
460
+ static ɵdir = i0.ɵɵngDeclareDirective({
461
+ minVersion: "17.1.0",
462
+ version: "22.2.2",
463
+ type: UiModalContentBase,
464
+ isStandalone: true,
465
+ inputs: { userClass: {
466
+ classPropertyName: "userClass",
467
+ publicName: "class",
468
+ isSignal: true,
469
+ isRequired: false,
470
+ transformFunction: null
471
+ } },
472
+ ngImport: i0
473
+ });
474
+ };
475
+ i0.ɵɵngDeclareClassMetadata({
476
+ minVersion: "12.0.0",
477
+ version: "22.2.2",
478
+ ngImport: i0,
479
+ type: UiModalContentBase,
480
+ decorators: [{ type: Directive }],
481
+ propDecorators: { userClass: [{
482
+ type: i0.Input,
483
+ args: [{
484
+ isSignal: true,
485
+ alias: "class",
486
+ required: false
487
+ }]
488
+ }] }
489
+ });
490
+ var UiMenuSelectEvent = class {
491
+ defaultPrevented = false;
492
+ preventDefault() {
493
+ this.defaultPrevented = true;
494
+ }
495
+ };
496
+ const UI_MENU_CTX = new InjectionToken("UI_MENU_CTX");
497
+ const UI_MENU_ITEM = new InjectionToken("UI_MENU_ITEM");
498
+ const UI_MENU_SUB = new InjectionToken("UI_MENU_SUB");
499
+ var UiMenuRootBase = class UiMenuRootBase extends UiLayerRoot {
500
+ keyboardOpen = null;
501
+ manager = signal(null, ...ngDevMode ? [{ debugName: "manager" }] : /* istanbul ignore next */ []);
502
+ triggerId = signal("", ...ngDevMode ? [{ debugName: "triggerId" }] : /* istanbul ignore next */ []);
503
+ directionality = inject(Directionality);
504
+ dirIsRtl = () => this.directionality.value === "rtl";
505
+ closeAll() {
506
+ this.close();
507
+ }
508
+ static ɵfac = i0.ɵɵngDeclareFactory({
509
+ minVersion: "12.0.0",
510
+ version: "22.2.2",
511
+ ngImport: i0,
512
+ type: UiMenuRootBase,
513
+ deps: null,
514
+ target: i0.ɵɵFactoryTarget.Directive
515
+ });
516
+ static ɵdir = i0.ɵɵngDeclareDirective({
517
+ minVersion: "14.0.0",
518
+ version: "22.2.2",
519
+ type: UiMenuRootBase,
520
+ isStandalone: true,
521
+ usesInheritance: true,
522
+ ngImport: i0
523
+ });
524
+ };
525
+ i0.ɵɵngDeclareClassMetadata({
526
+ minVersion: "12.0.0",
527
+ version: "22.2.2",
528
+ ngImport: i0,
529
+ type: UiMenuRootBase,
530
+ decorators: [{ type: Directive }]
531
+ });
532
+ var UiMenuItemBase = class UiMenuItemBase {
533
+ ctx = inject(UI_MENU_CTX);
534
+ el = inject(ElementRef).nativeElement;
535
+ disabledInput = input(false, {
536
+ ...ngDevMode ? { debugName: "disabledInput" } : /* istanbul ignore next */ {},
537
+ alias: "disabled",
538
+ transform: booleanAttribute
539
+ });
540
+ select = output();
541
+ highlighted = signal(false, ...ngDevMode ? [{ debugName: "highlighted" }] : /* istanbul ignore next */ []);
542
+ userClass = input("", {
543
+ ...ngDevMode ? { debugName: "userClass" } : /* istanbul ignore next */ {},
544
+ alias: "class"
545
+ });
546
+ get disabled() {
547
+ return this.disabledInput();
548
+ }
549
+ focus() {
550
+ this.el.focus();
551
+ }
552
+ getLabel() {
553
+ return (this.el.textContent ?? "").trim();
554
+ }
555
+ onFocus() {
556
+ this.highlighted.set(true);
557
+ }
558
+ onBlur() {
559
+ this.highlighted.set(false);
560
+ }
561
+ onPointerMove() {
562
+ if (this.disabled || this.highlighted()) return;
563
+ const m = this.ctx.manager();
564
+ if (m) m.setActiveItem(this);
565
+ else this.focus();
566
+ }
567
+ onPointerLeave() {
568
+ if (this.highlighted() && !this.keepFocusOnLeave()) this.ctx.contentEl()?.focus();
569
+ }
570
+ keepFocusOnLeave() {
571
+ return false;
572
+ }
573
+ activate() {
574
+ if (this.disabled) return;
575
+ this.beforeSelect();
576
+ const ev = new UiMenuSelectEvent();
577
+ this.select.emit(ev);
578
+ if (!ev.defaultPrevented) this.ctx.closeAll();
579
+ }
580
+ beforeSelect() {}
581
+ openOnArrow() {
582
+ return false;
583
+ }
584
+ static ɵfac = i0.ɵɵngDeclareFactory({
585
+ minVersion: "12.0.0",
586
+ version: "22.2.2",
587
+ ngImport: i0,
588
+ type: UiMenuItemBase,
589
+ deps: [],
590
+ target: i0.ɵɵFactoryTarget.Directive
591
+ });
592
+ static ɵdir = i0.ɵɵngDeclareDirective({
593
+ minVersion: "17.1.0",
594
+ version: "22.2.2",
595
+ type: UiMenuItemBase,
596
+ isStandalone: true,
597
+ inputs: {
598
+ disabledInput: {
599
+ classPropertyName: "disabledInput",
600
+ publicName: "disabled",
601
+ isSignal: true,
602
+ isRequired: false,
603
+ transformFunction: null
604
+ },
605
+ userClass: {
606
+ classPropertyName: "userClass",
607
+ publicName: "class",
608
+ isSignal: true,
609
+ isRequired: false,
610
+ transformFunction: null
611
+ }
612
+ },
613
+ outputs: { select: "select" },
614
+ ngImport: i0
615
+ });
616
+ };
617
+ i0.ɵɵngDeclareClassMetadata({
618
+ minVersion: "12.0.0",
619
+ version: "22.2.2",
620
+ ngImport: i0,
621
+ type: UiMenuItemBase,
622
+ decorators: [{ type: Directive }],
623
+ propDecorators: {
624
+ disabledInput: [{
625
+ type: i0.Input,
626
+ args: [{
627
+ isSignal: true,
628
+ alias: "disabled",
629
+ required: false
630
+ }]
631
+ }],
632
+ select: [{
633
+ type: i0.Output,
634
+ args: ["select"]
635
+ }],
636
+ userClass: [{
637
+ type: i0.Input,
638
+ args: [{
639
+ isSignal: true,
640
+ alias: "class",
641
+ required: false
642
+ }]
643
+ }]
644
+ }
645
+ });
646
+ const MENU_ITEM_HOST = {
647
+ tabindex: "-1",
648
+ "[attr.data-disabled]": "disabled ? \"\" : null",
649
+ "[attr.aria-disabled]": "disabled ? \"true\" : null",
650
+ "[attr.data-highlighted]": "highlighted() ? \"\" : null",
651
+ "(focus)": "onFocus()",
652
+ "(blur)": "onBlur()",
653
+ "(pointermove)": "onPointerMove()",
654
+ "(pointerleave)": "onPointerLeave()",
655
+ "(click)": "activate()"
656
+ };
657
+ var UiMenuSubBase = class UiMenuSubBase extends UiMenuRootBase {
658
+ parent = inject(UI_MENU_CTX, { skipSelf: true });
659
+ closeAll() {
660
+ this.parent.closeAll();
661
+ }
662
+ dirIsRtl = () => this.parent.dirIsRtl();
663
+ static ɵfac = i0.ɵɵngDeclareFactory({
664
+ minVersion: "12.0.0",
665
+ version: "22.2.2",
666
+ ngImport: i0,
667
+ type: UiMenuSubBase,
668
+ deps: null,
669
+ target: i0.ɵɵFactoryTarget.Directive
670
+ });
671
+ static ɵdir = i0.ɵɵngDeclareDirective({
672
+ minVersion: "14.0.0",
673
+ version: "22.2.2",
674
+ type: UiMenuSubBase,
675
+ isStandalone: true,
676
+ usesInheritance: true,
677
+ ngImport: i0
678
+ });
679
+ };
680
+ i0.ɵɵngDeclareClassMetadata({
681
+ minVersion: "12.0.0",
682
+ version: "22.2.2",
683
+ ngImport: i0,
684
+ type: UiMenuSubBase,
685
+ decorators: [{ type: Directive }]
686
+ });
687
+ var UiMenuSubTriggerBase = class UiMenuSubTriggerBase extends UiMenuItemBase {
688
+ sub = inject(UI_MENU_SUB);
689
+ ctx = this.sub.parent;
690
+ timer;
691
+ constructor() {
692
+ super();
693
+ this.sub.trigger.set(this.el);
694
+ }
695
+ activate() {
696
+ if (this.disabled) return;
697
+ this.sub.keyboardOpen = "first";
698
+ this.sub.open.set(true);
699
+ }
700
+ openOnArrow() {
701
+ this.activate();
702
+ return true;
703
+ }
704
+ keepFocusOnLeave() {
705
+ return this.sub.open();
706
+ }
707
+ onPointerMove() {
708
+ super.onPointerMove();
709
+ if (this.disabled || this.sub.open()) return;
710
+ clearTimeout(this.timer);
711
+ this.timer = setTimeout(() => {
712
+ this.sub.keyboardOpen = null;
713
+ this.sub.open.set(true);
714
+ }, 100);
715
+ }
716
+ static ɵfac = i0.ɵɵngDeclareFactory({
717
+ minVersion: "12.0.0",
718
+ version: "22.2.2",
719
+ ngImport: i0,
720
+ type: UiMenuSubTriggerBase,
721
+ deps: [],
722
+ target: i0.ɵɵFactoryTarget.Directive
723
+ });
724
+ static ɵdir = i0.ɵɵngDeclareDirective({
725
+ minVersion: "14.0.0",
726
+ version: "22.2.2",
727
+ type: UiMenuSubTriggerBase,
728
+ isStandalone: true,
729
+ usesInheritance: true,
730
+ ngImport: i0
731
+ });
732
+ };
733
+ i0.ɵɵngDeclareClassMetadata({
734
+ minVersion: "12.0.0",
735
+ version: "22.2.2",
736
+ ngImport: i0,
737
+ type: UiMenuSubTriggerBase,
738
+ decorators: [{ type: Directive }],
739
+ ctorParameters: () => []
740
+ });
741
+ var UiMenuContentBase = class UiMenuContentBase extends UiPopperContentBase {
742
+ manager = null;
743
+ isSub = false;
744
+ onAttached() {
745
+ const items = this.menuItems().filter((i) => i.ctx === this.menu);
746
+ this.manager = new FocusKeyManager([...items]).withVerticalOrientation().withHomeAndEnd().withTypeAhead(150).skipPredicate((i) => i.disabled);
747
+ this.menu.manager.set(this.manager);
748
+ queueMicrotask(() => {
749
+ if (this.menu.keyboardOpen === "first") this.manager?.setFirstItemActive();
750
+ else if (this.menu.keyboardOpen === "last") this.manager?.setLastItemActive();
751
+ else this.el.focus();
752
+ });
753
+ }
754
+ onDetached() {
755
+ if (this.isSub) this.menu.parent.childPanes.delete(this.el);
756
+ this.manager = null;
757
+ this.menu.manager.set(null);
758
+ this.menu.keyboardOpen = null;
759
+ }
760
+ onMenuKeydown(e) {
761
+ if (e.key === "Tab") return e.preventDefault();
762
+ if (e.key === "Enter" || e.key === " ") {
763
+ e.preventDefault();
764
+ this.manager?.activeItem?.activate();
765
+ return;
766
+ }
767
+ const rtl = this.menu.dirIsRtl();
768
+ const forward = rtl ? "ArrowLeft" : "ArrowRight";
769
+ const back = rtl ? "ArrowRight" : "ArrowLeft";
770
+ if (e.key === forward) {
771
+ if ((this.manager?.activeItem)?.openOnArrow()) {
772
+ e.preventDefault();
773
+ return;
774
+ }
775
+ if (!this.isSub) {
776
+ e.preventDefault();
777
+ this.menu.horizontal?.("next");
778
+ }
779
+ return;
780
+ }
781
+ if (e.key === back) {
782
+ e.preventDefault();
783
+ if (this.isSub) this.menu.close();
784
+ else this.menu.horizontal?.("prev");
785
+ return;
786
+ }
787
+ this.manager?.onKeydown(e);
788
+ }
789
+ registerChildPane() {
790
+ if (this.isSub) {
791
+ this.menu.parent.childPanes.add(this.el);
792
+ this.menu.contentEl.set(this.el);
793
+ }
794
+ }
795
+ static ɵfac = i0.ɵɵngDeclareFactory({
796
+ minVersion: "12.0.0",
797
+ version: "22.2.2",
798
+ ngImport: i0,
799
+ type: UiMenuContentBase,
800
+ deps: null,
801
+ target: i0.ɵɵFactoryTarget.Directive
802
+ });
803
+ static ɵdir = i0.ɵɵngDeclareDirective({
804
+ minVersion: "14.0.0",
805
+ version: "22.2.2",
806
+ type: UiMenuContentBase,
807
+ isStandalone: true,
808
+ usesInheritance: true,
809
+ ngImport: i0
810
+ });
811
+ };
812
+ i0.ɵɵngDeclareClassMetadata({
813
+ minVersion: "12.0.0",
814
+ version: "22.2.2",
815
+ ngImport: i0,
816
+ type: UiMenuContentBase,
817
+ decorators: [{ type: Directive }]
818
+ });
819
+ const ELEMENT_ORIGIN = {
820
+ "ui-accordion": "",
821
+ "ui-accordion-content": "",
822
+ "ui-accordion-item": "",
823
+ "ui-accordion-trigger": "button",
824
+ "ui-alert": "",
825
+ "ui-alert-action": "",
826
+ "ui-alert-description": "",
827
+ "ui-alert-dialog": "",
828
+ "ui-alert-dialog-action": "button",
829
+ "ui-alert-dialog-cancel": "button",
830
+ "ui-alert-dialog-content": "",
831
+ "ui-alert-dialog-description": "",
832
+ "ui-alert-dialog-footer": "",
833
+ "ui-alert-dialog-header": "",
834
+ "ui-alert-dialog-title": "",
835
+ "ui-alert-dialog-trigger": "",
836
+ "ui-alert-title": "",
837
+ "ui-aspect-ratio": "",
838
+ "ui-attachment": "",
839
+ "ui-attachment-action": "button",
840
+ "ui-attachment-actions": "",
841
+ "ui-attachment-content": "",
842
+ "ui-attachment-description": "span",
843
+ "ui-attachment-group": "",
844
+ "ui-attachment-media": "",
845
+ "ui-attachment-title": "span",
846
+ "ui-attachment-trigger": "a",
847
+ "ui-avatar": "",
848
+ "ui-avatar-badge": "",
849
+ "ui-avatar-fallback": "",
850
+ "ui-avatar-group": "",
851
+ "ui-avatar-group-count": "",
852
+ "ui-badge": "",
853
+ "ui-breadcrumb": "nav",
854
+ "ui-breadcrumb-ellipsis": "span",
855
+ "ui-breadcrumb-item": "li",
856
+ "ui-breadcrumb-link": "a",
857
+ "ui-breadcrumb-list": "ol",
858
+ "ui-breadcrumb-page": "span",
859
+ "ui-breadcrumb-separator": "li",
860
+ "ui-bubble": "",
861
+ "ui-bubble-content": "",
862
+ "ui-bubble-group": "",
863
+ "ui-bubble-reactions": "",
864
+ "ui-button": "button",
865
+ "ui-button-group": "",
866
+ "ui-button-group-separator": "",
867
+ "ui-calendar": "div",
868
+ "ui-card": "",
869
+ "ui-card-action": "",
870
+ "ui-card-content": "",
871
+ "ui-card-description": "",
872
+ "ui-card-footer": "",
873
+ "ui-card-header": "",
874
+ "ui-card-title": "",
875
+ "ui-carousel": "div",
876
+ "ui-carousel-content": "div",
877
+ "ui-carousel-item": "div",
878
+ "ui-carousel-next": "button",
879
+ "ui-carousel-previous": "button",
880
+ "ui-checkbox": "button",
881
+ "ui-collapsible": "",
882
+ "ui-collapsible-content": "",
883
+ "ui-collapsible-trigger": "",
884
+ "ui-combobox": "",
885
+ "ui-combobox-content": "",
886
+ "ui-combobox-empty": "",
887
+ "ui-combobox-item": "",
888
+ "ui-combobox-list": "",
889
+ "ui-combobox-trigger": "button",
890
+ "ui-combobox-value": "",
891
+ "ui-command": "",
892
+ "ui-command-empty": "",
893
+ "ui-command-group": "",
894
+ "ui-command-input-wrapper": "",
895
+ "ui-command-item": "",
896
+ "ui-command-list": "",
897
+ "ui-command-separator": "",
898
+ "ui-command-shortcut": "",
899
+ "ui-context-menu": "",
900
+ "ui-context-menu-checkbox-item": "",
901
+ "ui-context-menu-content": "",
902
+ "ui-context-menu-group": "",
903
+ "ui-context-menu-item": "",
904
+ "ui-context-menu-label": "",
905
+ "ui-context-menu-radio-group": "",
906
+ "ui-context-menu-radio-item": "",
907
+ "ui-context-menu-separator": "",
908
+ "ui-context-menu-shortcut": "",
909
+ "ui-context-menu-sub": "",
910
+ "ui-context-menu-sub-content": "",
911
+ "ui-context-menu-sub-trigger": "",
912
+ "ui-context-menu-trigger": "",
913
+ "ui-dialog": "",
914
+ "ui-dialog-close": "",
915
+ "ui-dialog-content": "",
916
+ "ui-dialog-description": "",
917
+ "ui-dialog-footer": "",
918
+ "ui-dialog-header": "",
919
+ "ui-dialog-title": "",
920
+ "ui-dialog-trigger": "",
921
+ "ui-direction": "",
922
+ "ui-drawer": "",
923
+ "ui-drawer-close": "button",
924
+ "ui-drawer-content": "",
925
+ "ui-drawer-description": "",
926
+ "ui-drawer-footer": "",
927
+ "ui-drawer-header": "",
928
+ "ui-drawer-title": "",
929
+ "ui-drawer-trigger": "",
930
+ "ui-dropdown-menu": "",
931
+ "ui-dropdown-menu-checkbox-item": "",
932
+ "ui-dropdown-menu-content": "",
933
+ "ui-dropdown-menu-group": "",
934
+ "ui-dropdown-menu-item": "",
935
+ "ui-dropdown-menu-label": "",
936
+ "ui-dropdown-menu-radio-group": "",
937
+ "ui-dropdown-menu-radio-item": "",
938
+ "ui-dropdown-menu-separator": "",
939
+ "ui-dropdown-menu-shortcut": "",
940
+ "ui-dropdown-menu-sub": "",
941
+ "ui-dropdown-menu-sub-content": "",
942
+ "ui-dropdown-menu-sub-trigger": "",
943
+ "ui-dropdown-menu-trigger": "",
944
+ "ui-empty": "",
945
+ "ui-empty-content": "",
946
+ "ui-empty-description": "",
947
+ "ui-empty-header": "",
948
+ "ui-empty-icon": "",
949
+ "ui-empty-title": "",
950
+ "ui-field": "",
951
+ "ui-field-content": "",
952
+ "ui-field-description": "",
953
+ "ui-field-error": "",
954
+ "ui-field-group": "",
955
+ "ui-field-label": "label",
956
+ "ui-field-legend": "legend",
957
+ "ui-field-separator": "",
958
+ "ui-field-set": "fieldset",
959
+ "ui-hover-card": "",
960
+ "ui-hover-card-content": "",
961
+ "ui-hover-card-trigger": "",
962
+ "ui-input-group": "",
963
+ "ui-input-group-addon": "",
964
+ "ui-input-otp": "div",
965
+ "ui-input-otp-group": "",
966
+ "ui-input-otp-separator": "",
967
+ "ui-input-otp-slot": "",
968
+ "ui-item": "",
969
+ "ui-item-actions": "",
970
+ "ui-item-content": "",
971
+ "ui-item-description": "",
972
+ "ui-item-group": "",
973
+ "ui-item-header": "",
974
+ "ui-item-media": "",
975
+ "ui-item-title": "",
976
+ "ui-kbd": "kbd",
977
+ "ui-kbd-group": "kbd",
978
+ "ui-label": "label",
979
+ "ui-marker": "",
980
+ "ui-marker-content": "span",
981
+ "ui-marker-icon": "span",
982
+ "ui-menubar": "",
983
+ "ui-menubar-checkbox-item": "",
984
+ "ui-menubar-content": "",
985
+ "ui-menubar-group": "",
986
+ "ui-menubar-item": "",
987
+ "ui-menubar-label": "",
988
+ "ui-menubar-menu": "",
989
+ "ui-menubar-radio-group": "",
990
+ "ui-menubar-radio-item": "",
991
+ "ui-menubar-separator": "",
992
+ "ui-menubar-shortcut": "",
993
+ "ui-menubar-sub": "",
994
+ "ui-menubar-sub-content": "",
995
+ "ui-menubar-sub-trigger": "",
996
+ "ui-menubar-trigger": "",
997
+ "ui-message": "",
998
+ "ui-message-avatar": "",
999
+ "ui-message-content": "",
1000
+ "ui-message-footer": "",
1001
+ "ui-message-group": "",
1002
+ "ui-message-header": "",
1003
+ "ui-message-scroller": "div",
1004
+ "ui-message-scroller-button": "button",
1005
+ "ui-message-scroller-content": "",
1006
+ "ui-message-scroller-item": "",
1007
+ "ui-message-scroller-viewport": "",
1008
+ "ui-native-select-wrapper": "div",
1009
+ "ui-navigation-menu": "nav",
1010
+ "ui-navigation-menu-content": "",
1011
+ "ui-navigation-menu-item": "li",
1012
+ "ui-navigation-menu-link": "a",
1013
+ "ui-navigation-menu-list": "ul",
1014
+ "ui-navigation-menu-trigger": "button",
1015
+ "ui-pagination": "nav",
1016
+ "ui-pagination-content": "ul",
1017
+ "ui-pagination-ellipsis": "span",
1018
+ "ui-pagination-item": "li",
1019
+ "ui-pagination-link": "a",
1020
+ "ui-pagination-next": "a",
1021
+ "ui-pagination-previous": "a",
1022
+ "ui-popover": "",
1023
+ "ui-popover-content": "",
1024
+ "ui-popover-description": "",
1025
+ "ui-popover-header": "",
1026
+ "ui-popover-title": "",
1027
+ "ui-popover-trigger": "",
1028
+ "ui-progress": "div",
1029
+ "ui-questionnaire": "form",
1030
+ "ui-questionnaire-actions": "div",
1031
+ "ui-questionnaire-choice": "label",
1032
+ "ui-questionnaire-choices": "div",
1033
+ "ui-questionnaire-description": "p",
1034
+ "ui-questionnaire-input": "div",
1035
+ "ui-questionnaire-item": "fieldset",
1036
+ "ui-questionnaire-progress": "div",
1037
+ "ui-questionnaire-title": "legend",
1038
+ "ui-radio-group": "",
1039
+ "ui-radio-group-item": "button",
1040
+ "ui-resizable-handle": "",
1041
+ "ui-resizable-panel": "",
1042
+ "ui-resizable-panel-group": "",
1043
+ "ui-scroll-area": "",
1044
+ "ui-scroll-area-viewport": "",
1045
+ "ui-select": "",
1046
+ "ui-select-content": "",
1047
+ "ui-select-group": "",
1048
+ "ui-select-item": "",
1049
+ "ui-select-label": "",
1050
+ "ui-select-separator": "",
1051
+ "ui-select-trigger": "button",
1052
+ "ui-select-value": "",
1053
+ "ui-separator": "",
1054
+ "ui-sheet": "",
1055
+ "ui-sheet-close": "",
1056
+ "ui-sheet-content": "",
1057
+ "ui-sheet-description": "",
1058
+ "ui-sheet-footer": "",
1059
+ "ui-sheet-header": "",
1060
+ "ui-sheet-title": "",
1061
+ "ui-sheet-trigger": "",
1062
+ "ui-sidebar": "",
1063
+ "ui-sidebar-content": "",
1064
+ "ui-sidebar-footer": "",
1065
+ "ui-sidebar-group": "",
1066
+ "ui-sidebar-group-action": "button",
1067
+ "ui-sidebar-group-content": "",
1068
+ "ui-sidebar-group-label": "",
1069
+ "ui-sidebar-header": "",
1070
+ "ui-sidebar-inset": "",
1071
+ "ui-sidebar-menu": "ul",
1072
+ "ui-sidebar-menu-action": "button",
1073
+ "ui-sidebar-menu-badge": "",
1074
+ "ui-sidebar-menu-button": "button",
1075
+ "ui-sidebar-menu-item": "li",
1076
+ "ui-sidebar-menu-sub": "ul",
1077
+ "ui-sidebar-menu-sub-button": "a",
1078
+ "ui-sidebar-menu-sub-item": "li",
1079
+ "ui-sidebar-provider": "",
1080
+ "ui-sidebar-rail": "button",
1081
+ "ui-sidebar-separator": "",
1082
+ "ui-sidebar-trigger": "button",
1083
+ "ui-skeleton": "",
1084
+ "ui-slider": "span",
1085
+ "ui-switch": "button",
1086
+ "ui-table": "table",
1087
+ "ui-table-body": "tbody",
1088
+ "ui-table-caption": "caption",
1089
+ "ui-table-cell": "td",
1090
+ "ui-table-container": "",
1091
+ "ui-table-footer": "tfoot",
1092
+ "ui-table-head": "th",
1093
+ "ui-table-header": "thead",
1094
+ "ui-table-row": "tr",
1095
+ "ui-tabs": "",
1096
+ "ui-tabs-content": "",
1097
+ "ui-tabs-list": "",
1098
+ "ui-tabs-trigger": "button",
1099
+ "ui-toggle": "button",
1100
+ "ui-toggle-group": "",
1101
+ "ui-toggle-group-item": "button",
1102
+ "ui-tooltip": "",
1103
+ "ui-tooltip-content": "",
1104
+ "ui-tooltip-trigger": "",
1105
+ "ui-typography": ""
1106
+ };
1107
+ const ROLE = {
1108
+ button: "button",
1109
+ a: "link",
1110
+ ul: "list",
1111
+ ol: "list",
1112
+ li: "listitem",
1113
+ nav: "navigation",
1114
+ fieldset: "group",
1115
+ table: "table",
1116
+ thead: "rowgroup",
1117
+ tbody: "rowgroup",
1118
+ tfoot: "rowgroup",
1119
+ tr: "row",
1120
+ th: "columnheader",
1121
+ td: "cell"
1122
+ };
1123
+ const DISPLAY = {
1124
+ table: "table",
1125
+ thead: "table-header-group",
1126
+ tbody: "table-row-group",
1127
+ tfoot: "table-footer-group",
1128
+ tr: "table-row",
1129
+ th: "table-cell",
1130
+ td: "table-cell",
1131
+ caption: "table-caption"
1132
+ };
1133
+ const HEADINGS = /* @__PURE__ */ new Set([
1134
+ "ui-dialog-title",
1135
+ "ui-sheet-title",
1136
+ "ui-alert-dialog-title",
1137
+ "ui-drawer-title"
1138
+ ]);
1139
+ const INLINE_ORIGINS = /* @__PURE__ */ new Set([
1140
+ "span",
1141
+ "a",
1142
+ "button",
1143
+ "label",
1144
+ "kbd"
1145
+ ]);
1146
+ let styled = false;
1147
+ function ensureDefaultStyles() {
1148
+ if (styled || typeof document === "undefined") return;
1149
+ styled = true;
1150
+ const groups = /* @__PURE__ */ new Map();
1151
+ for (const [alias, origin] of Object.entries(ELEMENT_ORIGIN)) {
1152
+ const d = DISPLAY[origin] ?? (INLINE_ORIGINS.has(origin) ? "inline-block" : "block");
1153
+ (groups.get(d) ?? groups.set(d, []).get(d)).push(alias);
1154
+ }
1155
+ const css = [...groups].map(([d, list]) => `:where(${list.join(",")}):not([hidden]){display:${d}}`).join("\n") + "\n:where([data-slot][disabled]:not(:is(button,input,select,textarea,fieldset,optgroup,option))){pointer-events:none;opacity:.5}";
1156
+ const style = document.createElement("style");
1157
+ style.setAttribute("data-loomui-elements", "");
1158
+ style.textContent = `@layer base{\n${css}\n}`;
1159
+ document.head.appendChild(style);
1160
+ }
1161
+ const isDisabled = (el) => el.hasAttribute("disabled") || el.getAttribute("aria-disabled") === "true";
1162
+ var UiElementHost = class UiElementHost {
1163
+ el = inject(ElementRef).nativeElement;
1164
+ constructor() {
1165
+ const name = this.el.localName;
1166
+ const origin = ELEMENT_ORIGIN[name];
1167
+ if (origin === void 0) return;
1168
+ ensureDefaultStyles();
1169
+ const destroy = inject(DestroyRef);
1170
+ afterNextRender(() => {
1171
+ const el = this.el;
1172
+ const role = ROLE[origin];
1173
+ if (role && !el.hasAttribute("role")) el.setAttribute("role", role);
1174
+ if ((origin === "button" || origin === "a") && !el.hasAttribute("tabindex")) el.setAttribute("tabindex", "0");
1175
+ if (HEADINGS.has(name) && !el.hasAttribute("role")) {
1176
+ el.setAttribute("role", "heading");
1177
+ if (!el.hasAttribute("aria-level")) el.setAttribute("aria-level", "2");
1178
+ }
1179
+ const off = [];
1180
+ const on = (type, fn) => {
1181
+ el.addEventListener(type, fn);
1182
+ off.push(() => el.removeEventListener(type, fn));
1183
+ };
1184
+ if (origin === "button" || origin === "a") {
1185
+ let spaceDown = false;
1186
+ on("keydown", (e) => {
1187
+ if (e.target !== el || e.defaultPrevented || isDisabled(el)) return;
1188
+ if (e.key === "Enter") {
1189
+ e.preventDefault();
1190
+ el.click();
1191
+ } else if (e.key === " " && origin === "button") {
1192
+ e.preventDefault();
1193
+ spaceDown = true;
1194
+ }
1195
+ });
1196
+ on("keyup", (e) => {
1197
+ if (e.key === " " && spaceDown && e.target === el && !isDisabled(el)) {
1198
+ spaceDown = false;
1199
+ el.click();
1200
+ }
1201
+ });
1202
+ }
1203
+ if (origin === "a") on("click", (e) => {
1204
+ const href = el.getAttribute("href");
1205
+ if (e.defaultPrevented || !href || isDisabled(el)) return;
1206
+ if (el.getAttribute("target") === "_blank") window.open(href, "_blank", "noopener");
1207
+ else window.location.assign(href);
1208
+ });
1209
+ if (origin === "label") on("click", (e) => {
1210
+ const id = el.getAttribute("for");
1211
+ if (!id || e.defaultPrevented) return;
1212
+ if (e.target.closest("button, input, select, textarea, a, [role=checkbox], [role=switch], [role=radio]")) return;
1213
+ const control = document.getElementById(id);
1214
+ if (!control) return;
1215
+ if ([
1216
+ "INPUT",
1217
+ "TEXTAREA",
1218
+ "SELECT"
1219
+ ].includes(control.tagName) && control.type !== "checkbox" && control.type !== "radio") control.focus();
1220
+ else control.click();
1221
+ });
1222
+ destroy.onDestroy(() => off.forEach((f) => f()));
1223
+ });
1224
+ }
1225
+ static ɵfac = i0.ɵɵngDeclareFactory({
1226
+ minVersion: "12.0.0",
1227
+ version: "22.2.2",
1228
+ ngImport: i0,
1229
+ type: UiElementHost,
1230
+ deps: [],
1231
+ target: i0.ɵɵFactoryTarget.Directive
1232
+ });
1233
+ static ɵdir = i0.ɵɵngDeclareDirective({
1234
+ minVersion: "14.0.0",
1235
+ version: "22.2.2",
1236
+ type: UiElementHost,
1237
+ isStandalone: true,
1238
+ ngImport: i0
1239
+ });
1240
+ };
1241
+ i0.ɵɵngDeclareClassMetadata({
1242
+ minVersion: "12.0.0",
1243
+ version: "22.2.2",
1244
+ ngImport: i0,
1245
+ type: UiElementHost,
1246
+ decorators: [{ type: Directive }],
1247
+ ctorParameters: () => []
1248
+ });
1249
+ var UiNativeControl = class UiNativeControl {
1250
+ control = viewChild.required("control", ...ngDevMode ? [{ debugName: "control" }] : /* istanbul ignore next */ []);
1251
+ id = input("", ...ngDevMode ? [{ debugName: "id" }] : /* istanbul ignore next */ []);
1252
+ name = input("", ...ngDevMode ? [{ debugName: "name" }] : /* istanbul ignore next */ []);
1253
+ placeholder = input("", ...ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []);
1254
+ value = input("", ...ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []);
1255
+ disabled = input(false, {
1256
+ ...ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {},
1257
+ transform: booleanAttribute
1258
+ });
1259
+ readonly = input(false, {
1260
+ ...ngDevMode ? { debugName: "readonly" } : /* istanbul ignore next */ {},
1261
+ transform: booleanAttribute
1262
+ });
1263
+ required = input(false, {
1264
+ ...ngDevMode ? { debugName: "required" } : /* istanbul ignore next */ {},
1265
+ transform: booleanAttribute
1266
+ });
1267
+ invalid = input(false, {
1268
+ ...ngDevMode ? { debugName: "invalid" } : /* istanbul ignore next */ {},
1269
+ transform: booleanAttribute
1270
+ });
1271
+ autocomplete = input("", ...ngDevMode ? [{ debugName: "autocomplete" }] : /* istanbul ignore next */ []);
1272
+ ariaLabel = input("", {
1273
+ ...ngDevMode ? { debugName: "ariaLabel" } : /* istanbul ignore next */ {},
1274
+ alias: "aria-label"
1275
+ });
1276
+ ariaDescribedby = input("", {
1277
+ ...ngDevMode ? { debugName: "ariaDescribedby" } : /* istanbul ignore next */ {},
1278
+ alias: "aria-describedby"
1279
+ });
1280
+ userClass = input("", {
1281
+ ...ngDevMode ? { debugName: "userClass" } : /* istanbul ignore next */ {},
1282
+ alias: "class"
1283
+ });
1284
+ current = linkedSignal(() => this.value(), ...ngDevMode ? [{ debugName: "current" }] : /* istanbul ignore next */ []);
1285
+ cvaDisabled = signal(false, ...ngDevMode ? [{ debugName: "cvaDisabled" }] : /* istanbul ignore next */ []);
1286
+ isDisabled = computed(() => this.disabled() || this.cvaDisabled(), ...ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []);
1287
+ onChange = () => {};
1288
+ onTouched = () => {};
1289
+ focus(options) {
1290
+ this.control().nativeElement.focus(options);
1291
+ }
1292
+ onInput(e) {
1293
+ const v = e.target.value;
1294
+ this.current.set(v);
1295
+ this.onChange(v);
1296
+ }
1297
+ writeValue(v) {
1298
+ this.current.set(v ?? "");
1299
+ }
1300
+ registerOnChange(fn) {
1301
+ this.onChange = fn;
1302
+ }
1303
+ registerOnTouched(fn) {
1304
+ this.onTouched = fn;
1305
+ }
1306
+ setDisabledState(d) {
1307
+ this.cvaDisabled.set(d);
1308
+ }
1309
+ static ɵfac = i0.ɵɵngDeclareFactory({
1310
+ minVersion: "12.0.0",
1311
+ version: "22.2.2",
1312
+ ngImport: i0,
1313
+ type: UiNativeControl,
1314
+ deps: [],
1315
+ target: i0.ɵɵFactoryTarget.Directive
1316
+ });
1317
+ static ɵdir = i0.ɵɵngDeclareDirective({
1318
+ minVersion: "17.2.0",
1319
+ version: "22.2.2",
1320
+ type: UiNativeControl,
1321
+ isStandalone: true,
1322
+ inputs: {
1323
+ id: {
1324
+ classPropertyName: "id",
1325
+ publicName: "id",
1326
+ isSignal: true,
1327
+ isRequired: false,
1328
+ transformFunction: null
1329
+ },
1330
+ name: {
1331
+ classPropertyName: "name",
1332
+ publicName: "name",
1333
+ isSignal: true,
1334
+ isRequired: false,
1335
+ transformFunction: null
1336
+ },
1337
+ placeholder: {
1338
+ classPropertyName: "placeholder",
1339
+ publicName: "placeholder",
1340
+ isSignal: true,
1341
+ isRequired: false,
1342
+ transformFunction: null
1343
+ },
1344
+ value: {
1345
+ classPropertyName: "value",
1346
+ publicName: "value",
1347
+ isSignal: true,
1348
+ isRequired: false,
1349
+ transformFunction: null
1350
+ },
1351
+ disabled: {
1352
+ classPropertyName: "disabled",
1353
+ publicName: "disabled",
1354
+ isSignal: true,
1355
+ isRequired: false,
1356
+ transformFunction: null
1357
+ },
1358
+ readonly: {
1359
+ classPropertyName: "readonly",
1360
+ publicName: "readonly",
1361
+ isSignal: true,
1362
+ isRequired: false,
1363
+ transformFunction: null
1364
+ },
1365
+ required: {
1366
+ classPropertyName: "required",
1367
+ publicName: "required",
1368
+ isSignal: true,
1369
+ isRequired: false,
1370
+ transformFunction: null
1371
+ },
1372
+ invalid: {
1373
+ classPropertyName: "invalid",
1374
+ publicName: "invalid",
1375
+ isSignal: true,
1376
+ isRequired: false,
1377
+ transformFunction: null
1378
+ },
1379
+ autocomplete: {
1380
+ classPropertyName: "autocomplete",
1381
+ publicName: "autocomplete",
1382
+ isSignal: true,
1383
+ isRequired: false,
1384
+ transformFunction: null
1385
+ },
1386
+ ariaLabel: {
1387
+ classPropertyName: "ariaLabel",
1388
+ publicName: "aria-label",
1389
+ isSignal: true,
1390
+ isRequired: false,
1391
+ transformFunction: null
1392
+ },
1393
+ ariaDescribedby: {
1394
+ classPropertyName: "ariaDescribedby",
1395
+ publicName: "aria-describedby",
1396
+ isSignal: true,
1397
+ isRequired: false,
1398
+ transformFunction: null
1399
+ },
1400
+ userClass: {
1401
+ classPropertyName: "userClass",
1402
+ publicName: "class",
1403
+ isSignal: true,
1404
+ isRequired: false,
1405
+ transformFunction: null
1406
+ }
1407
+ },
1408
+ host: { properties: { "attr.id": "null" } },
1409
+ viewQueries: [{
1410
+ propertyName: "control",
1411
+ first: true,
1412
+ predicate: ["control"],
1413
+ descendants: true,
1414
+ isSignal: true
1415
+ }],
1416
+ ngImport: i0
1417
+ });
1418
+ };
1419
+ i0.ɵɵngDeclareClassMetadata({
1420
+ minVersion: "12.0.0",
1421
+ version: "22.2.2",
1422
+ ngImport: i0,
1423
+ type: UiNativeControl,
1424
+ decorators: [{
1425
+ type: Directive,
1426
+ args: [{ host: { "[attr.id]": "null" } }]
1427
+ }],
1428
+ propDecorators: {
1429
+ control: [{
1430
+ type: i0.ViewChild,
1431
+ args: ["control", { isSignal: true }]
1432
+ }],
1433
+ id: [{
1434
+ type: i0.Input,
1435
+ args: [{
1436
+ isSignal: true,
1437
+ alias: "id",
1438
+ required: false
1439
+ }]
1440
+ }],
1441
+ name: [{
1442
+ type: i0.Input,
1443
+ args: [{
1444
+ isSignal: true,
1445
+ alias: "name",
1446
+ required: false
1447
+ }]
1448
+ }],
1449
+ placeholder: [{
1450
+ type: i0.Input,
1451
+ args: [{
1452
+ isSignal: true,
1453
+ alias: "placeholder",
1454
+ required: false
1455
+ }]
1456
+ }],
1457
+ value: [{
1458
+ type: i0.Input,
1459
+ args: [{
1460
+ isSignal: true,
1461
+ alias: "value",
1462
+ required: false
1463
+ }]
1464
+ }],
1465
+ disabled: [{
1466
+ type: i0.Input,
1467
+ args: [{
1468
+ isSignal: true,
1469
+ alias: "disabled",
1470
+ required: false
1471
+ }]
1472
+ }],
1473
+ readonly: [{
1474
+ type: i0.Input,
1475
+ args: [{
1476
+ isSignal: true,
1477
+ alias: "readonly",
1478
+ required: false
1479
+ }]
1480
+ }],
1481
+ required: [{
1482
+ type: i0.Input,
1483
+ args: [{
1484
+ isSignal: true,
1485
+ alias: "required",
1486
+ required: false
1487
+ }]
1488
+ }],
1489
+ invalid: [{
1490
+ type: i0.Input,
1491
+ args: [{
1492
+ isSignal: true,
1493
+ alias: "invalid",
1494
+ required: false
1495
+ }]
1496
+ }],
1497
+ autocomplete: [{
1498
+ type: i0.Input,
1499
+ args: [{
1500
+ isSignal: true,
1501
+ alias: "autocomplete",
1502
+ required: false
1503
+ }]
1504
+ }],
1505
+ ariaLabel: [{
1506
+ type: i0.Input,
1507
+ args: [{
1508
+ isSignal: true,
1509
+ alias: "aria-label",
1510
+ required: false
1511
+ }]
1512
+ }],
1513
+ ariaDescribedby: [{
1514
+ type: i0.Input,
1515
+ args: [{
1516
+ isSignal: true,
1517
+ alias: "aria-describedby",
1518
+ required: false
1519
+ }]
1520
+ }],
1521
+ userClass: [{
1522
+ type: i0.Input,
1523
+ args: [{
1524
+ isSignal: true,
1525
+ alias: "class",
1526
+ required: false
1527
+ }]
1528
+ }]
1529
+ }
1530
+ });
1531
+ export { ELEMENT_ORIGIN, MENU_ITEM_HOST, UI_MENU_CTX, UI_MENU_ITEM, UI_MENU_SUB, UiElementHost, UiLayerRoot, UiMenuContentBase, UiMenuItemBase, UiMenuRootBase, UiMenuSelectEvent, UiMenuSubBase, UiMenuSubTriggerBase, UiModalContentBase, UiModalRoot, UiNativeControl, UiPopperContentBase, buildPositions, cn, hideOthers, nextId, whenAnimationDone };
1532
+
1533
+ //# sourceMappingURL=loomui-ng-ui-utils.mjs.map