@swiftwc/ui 0.0.0-dev.5 → 0.0.0-dev.50

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 (328) hide show
  1. package/README.md +15 -0
  2. package/generated/buses/alert-dialog.d.ts +2 -0
  3. package/generated/buses/alert-dialog.js +1 -0
  4. package/generated/buses/confirmation-dialog.d.ts +2 -0
  5. package/generated/buses/confirmation-dialog.js +1 -0
  6. package/generated/buses/index.d.ts +6 -0
  7. package/generated/buses/index.js +6 -0
  8. package/generated/buses/lifecycle-observer.d.ts +2 -0
  9. package/generated/buses/lifecycle-observer.js +1 -0
  10. package/generated/client/index.d.ts +22 -4
  11. package/generated/client/index.js +219 -181
  12. package/generated/components/alert-dialog.d.ts +8 -0
  13. package/generated/components/alert-dialog.js +99 -0
  14. package/generated/components/body-view.js +5 -2
  15. package/generated/components/bordered-button.d.ts +17 -0
  16. package/generated/components/bordered-button.js +56 -0
  17. package/generated/components/bordered-prominent-button.d.ts +17 -0
  18. package/generated/components/bordered-prominent-button.js +56 -0
  19. package/generated/components/borderless-button.d.ts +12 -4
  20. package/generated/components/borderless-button.js +47 -16
  21. package/generated/components/confirmation-dialog.d.ts +9 -0
  22. package/generated/components/confirmation-dialog.js +113 -0
  23. package/generated/components/content-unavailable-view.d.ts +24 -0
  24. package/generated/components/content-unavailable-view.js +81 -0
  25. package/generated/components/date-picker.d.ts +36 -0
  26. package/generated/components/date-picker.js +461 -0
  27. package/generated/components/disclosure-group.d.ts +9 -7
  28. package/generated/components/disclosure-group.js +51 -65
  29. package/generated/components/fine-tooltip.d.ts +7 -0
  30. package/generated/components/fine-tooltip.js +107 -0
  31. package/generated/components/form-view.d.ts +9 -0
  32. package/generated/components/form-view.js +63 -0
  33. package/generated/components/glass-button.d.ts +16 -0
  34. package/generated/components/glass-button.js +53 -0
  35. package/generated/components/glass-prominent-button.d.ts +16 -0
  36. package/generated/components/glass-prominent-button.js +53 -0
  37. package/generated/components/image-view.d.ts +9 -0
  38. package/generated/components/image-view.js +46 -0
  39. package/generated/components/index.d.ts +39 -10
  40. package/generated/components/index.js +39 -15
  41. package/generated/components/label-view.d.ts +9 -0
  42. package/generated/components/label-view.js +51 -0
  43. package/generated/components/list-view.d.ts +8 -0
  44. package/generated/components/list-view.js +32 -0
  45. package/generated/components/menu-view.d.ts +12 -0
  46. package/generated/components/menu-view.js +142 -0
  47. package/generated/components/navigation-large-title.d.ts +6 -0
  48. package/generated/components/navigation-large-title.js +181 -0
  49. package/generated/components/navigation-link.d.ts +10 -0
  50. package/generated/components/navigation-link.js +25 -0
  51. package/generated/components/navigation-split-view.d.ts +7 -2
  52. package/generated/components/navigation-split-view.js +19 -3
  53. package/generated/components/navigation-stack.d.ts +6 -2
  54. package/generated/components/navigation-stack.js +23 -59
  55. package/generated/components/navigation-title.d.ts +8 -0
  56. package/generated/components/navigation-title.js +50 -0
  57. package/generated/components/picker-view.d.ts +31 -0
  58. package/generated/components/picker-view.js +764 -0
  59. package/generated/components/plain-button.d.ts +7 -0
  60. package/generated/components/plain-button.js +22 -0
  61. package/generated/components/progress-view.d.ts +13 -0
  62. package/generated/components/progress-view.js +120 -0
  63. package/generated/components/screen-view.d.ts +1 -1
  64. package/generated/components/screen-view.js +4 -2
  65. package/generated/components/scroll-view-proxy.d.ts +8 -0
  66. package/generated/components/scroll-view-proxy.js +17 -0
  67. package/generated/components/scroll-view.d.ts +4 -2
  68. package/generated/components/scroll-view.js +179 -64
  69. package/generated/components/search-view.d.ts +7 -0
  70. package/generated/components/search-view.js +30 -0
  71. package/generated/components/section-view.d.ts +9 -0
  72. package/generated/components/section-view.js +85 -0
  73. package/generated/components/sheet-view.d.ts +3 -4
  74. package/generated/components/sheet-view.js +53 -17
  75. package/generated/components/sidebar-toggle.d.ts +1 -1
  76. package/generated/components/sidebar-toggle.js +76 -72
  77. package/generated/components/sidebar-view.d.ts +2 -4
  78. package/generated/components/sidebar-view.js +25 -17
  79. package/generated/components/sticky-container.d.ts +6 -0
  80. package/generated/components/sticky-container.js +26 -0
  81. package/generated/components/tab-bar.d.ts +5 -4
  82. package/generated/components/tab-bar.js +34 -17
  83. package/generated/components/tab-item.d.ts +4 -3
  84. package/generated/components/tab-item.js +125 -29
  85. package/generated/components/tab-view.d.ts +17 -2
  86. package/generated/components/tab-view.js +252 -17
  87. package/generated/components/table-view.d.ts +10 -0
  88. package/generated/components/table-view.js +177 -0
  89. package/generated/components/text-field.d.ts +29 -0
  90. package/generated/components/text-field.js +496 -0
  91. package/generated/components/tool-bar-item-group.d.ts +5 -0
  92. package/generated/components/tool-bar-item-group.js +28 -0
  93. package/generated/components/tool-bar-item.d.ts +8 -0
  94. package/generated/components/tool-bar-item.js +66 -0
  95. package/generated/components/tool-bar.d.ts +19 -0
  96. package/generated/components/tool-bar.js +93 -0
  97. package/generated/components/v-keyboard.d.ts +4 -0
  98. package/generated/components/v-keyboard.js +72 -67
  99. package/generated/components/v-stack.d.ts +10 -0
  100. package/generated/components/v-stack.js +19 -0
  101. package/generated/css/index.css +8475 -0
  102. package/generated/events/alert-dialog.d.ts +8 -0
  103. package/generated/events/confirmation-dialog.d.ts +9 -0
  104. package/generated/events/confirmation-dialog.js +1 -0
  105. package/generated/events/date-picker.d.ts +8 -0
  106. package/generated/events/date-picker.js +1 -0
  107. package/generated/events/index.d.ts +8 -0
  108. package/generated/events/index.js +8 -0
  109. package/generated/events/lifecycle-observer.d.ts +10 -0
  110. package/generated/events/lifecycle-observer.js +1 -0
  111. package/generated/events/picker-view.d.ts +15 -0
  112. package/generated/events/picker-view.js +1 -0
  113. package/generated/events/scroll-view.d.ts +10 -0
  114. package/generated/events/scroll-view.js +1 -0
  115. package/generated/events/tab-view.d.ts +28 -0
  116. package/generated/events/tab-view.js +1 -0
  117. package/generated/events/text-field.d.ts +8 -0
  118. package/generated/events/text-field.js +1 -0
  119. package/generated/i18n/index.d.ts +34 -0
  120. package/generated/i18n/index.js +167 -0
  121. package/generated/i18n/locales/el.d.ts +16 -0
  122. package/generated/i18n/locales/el.js +16 -0
  123. package/generated/i18n/locales/en.d.ts +16 -0
  124. package/generated/i18n/locales/en.js +16 -0
  125. package/generated/i18n/locales/index.d.ts +4 -0
  126. package/generated/i18n/locales/index.js +4 -0
  127. package/generated/internal/class/cleanup-registry.d.ts +5 -0
  128. package/generated/internal/class/cleanup-registry.js +38 -0
  129. package/generated/internal/class/css-style-observer.d.ts +8 -0
  130. package/generated/internal/class/css-style-observer.js +26 -0
  131. package/generated/internal/class/form-associated-base.d.ts +16 -0
  132. package/generated/internal/class/form-associated-base.js +78 -0
  133. package/generated/internal/class/mutation-observer-set.d.ts +9 -0
  134. package/generated/internal/class/mutation-observer-set.js +42 -0
  135. package/generated/internal/class/mutation-observer-singleton.d.ts +10 -0
  136. package/generated/internal/class/mutation-observer-singleton.js +64 -0
  137. package/generated/internal/class/navigation-path.d.ts +15 -0
  138. package/generated/internal/class/navigation-path.js +84 -0
  139. package/generated/internal/class/navigation-view.d.ts +8 -0
  140. package/generated/internal/class/navigation-view.js +72 -0
  141. package/generated/internal/class/resize-observer-singleton.d.ts +7 -0
  142. package/generated/internal/class/resize-observer-singleton.js +22 -0
  143. package/generated/internal/decorators/adaptive-slot.d.ts +1 -0
  144. package/generated/internal/decorators/adaptive-slot.js +50 -0
  145. package/generated/internal/decorators/custom-element.d.ts +5 -0
  146. package/generated/internal/decorators/custom-element.js +5 -0
  147. package/generated/internal/decorators/index.d.ts +6 -0
  148. package/generated/internal/decorators/index.js +6 -0
  149. package/generated/internal/decorators/microtask-on-connected.d.ts +39 -0
  150. package/generated/internal/decorators/microtask-on-connected.js +67 -0
  151. package/generated/internal/privateNamespace.d.ts +14 -0
  152. package/generated/internal/privateNamespace.js +168 -0
  153. package/generated/internal/utils/add.d.ts +1 -0
  154. package/generated/internal/utils/add.js +7 -0
  155. package/generated/internal/utils/cash/ancestors.d.ts +1 -0
  156. package/generated/internal/utils/cash/ancestors.js +27 -0
  157. package/generated/internal/utils/cash/index.d.ts +23 -0
  158. package/generated/internal/utils/cash/index.js +25 -0
  159. package/generated/internal/utils/cash/next-all.d.ts +1 -0
  160. package/generated/internal/utils/cash/next-all.js +10 -0
  161. package/generated/internal/utils/cash/next.d.ts +1 -0
  162. package/generated/internal/utils/cash/next.js +9 -0
  163. package/generated/internal/utils/cash/prev-all.d.ts +1 -0
  164. package/generated/internal/utils/cash/prev-all.js +10 -0
  165. package/generated/internal/utils/cash/prev.d.ts +1 -0
  166. package/generated/internal/utils/cash/prev.js +9 -0
  167. package/generated/internal/utils/cash/prop.d.ts +18 -0
  168. package/generated/internal/utils/cash/prop.js +30 -0
  169. package/generated/internal/utils/cash/siblings.d.ts +1 -0
  170. package/generated/internal/utils/cash/siblings.js +10 -0
  171. package/generated/internal/utils/clamp.d.ts +1 -0
  172. package/generated/internal/utils/clamp.js +4 -0
  173. package/generated/internal/utils/compare-big-decimals.d.ts +1 -0
  174. package/generated/internal/utils/compare-big-decimals.js +90 -0
  175. package/generated/internal/utils/debounce.d.ts +1 -0
  176. package/generated/internal/utils/debounce.js +13 -0
  177. package/generated/internal/utils/dev-flags.d.ts +3 -0
  178. package/generated/internal/utils/dev-flags.js +5 -0
  179. package/generated/internal/utils/ensure-placeholder.d.ts +1 -0
  180. package/generated/internal/utils/ensure-placeholder.js +55 -0
  181. package/generated/internal/utils/frame.d.ts +1 -0
  182. package/generated/internal/utils/frame.js +6 -0
  183. package/generated/internal/utils/index.d.ts +21 -1
  184. package/generated/internal/utils/index.js +24 -1
  185. package/generated/internal/utils/is-inside.d.ts +1 -0
  186. package/generated/internal/utils/is-inside.js +4 -0
  187. package/generated/internal/utils/kebab-case.d.ts +1 -1
  188. package/generated/internal/utils/list-active.d.ts +7 -0
  189. package/generated/internal/utils/list-active.js +83 -0
  190. package/generated/internal/utils/microtask.d.ts +1 -0
  191. package/generated/internal/utils/microtask.js +3 -0
  192. package/generated/internal/utils/onoff.d.ts +45 -0
  193. package/generated/internal/utils/onoff.js +31 -0
  194. package/generated/internal/utils/render-label-icon.d.ts +2 -0
  195. package/generated/internal/utils/render-label-icon.js +19 -0
  196. package/generated/internal/utils/render-label-title.d.ts +2 -0
  197. package/generated/internal/utils/render-label-title.js +16 -0
  198. package/generated/internal/utils/render-label.d.ts +1 -0
  199. package/generated/internal/utils/render-label.js +19 -0
  200. package/generated/internal/utils/set.d.ts +1 -0
  201. package/generated/internal/utils/set.js +7 -0
  202. package/generated/internal/utils/sleep.d.ts +1 -0
  203. package/generated/internal/utils/sleep.js +3 -0
  204. package/generated/internal/utils/slow-hide-show.d.ts +1 -0
  205. package/generated/internal/utils/slow-hide-show.js +16 -0
  206. package/generated/internal/utils/timeout.d.ts +5 -0
  207. package/generated/internal/utils/timeout.js +16 -0
  208. package/generated/internal/utils/touch-glass.d.ts +7 -0
  209. package/generated/internal/utils/touch-glass.js +19 -0
  210. package/generated/namespace-browser/base.d.ts +45 -0
  211. package/generated/namespace-browser/base.js +115 -0
  212. package/generated/namespace-browser/index.d.ts +7 -0
  213. package/generated/namespace-browser/index.js +1 -0
  214. package/generated/snapshot/index.d.ts +4 -11
  215. package/generated/snapshot/index.js +55 -145
  216. package/package.json +33 -9
  217. package/scss/_components.scss +60 -13
  218. package/scss/_final.scss +1 -0
  219. package/scss/_functions.scss +10 -0
  220. package/scss/_mixins.scss +4 -169
  221. package/scss/_placeholders.scss +3 -0
  222. package/scss/_transitions.scss +22 -1
  223. package/scss/_utils.scss +9 -0
  224. package/scss/_vars.scss +143 -23
  225. package/scss/base/_layout.scss +40 -16
  226. package/scss/base/_reboot.scss +151 -15
  227. package/scss/base/_root.scss +348 -25
  228. package/scss/colors/_index.scss +788 -70
  229. package/scss/components/_alert-dialog.scss +111 -0
  230. package/scss/components/_body-view.scss +12 -3
  231. package/scss/components/_bordered-button.scss +57 -0
  232. package/scss/components/_bordered-prominent-button.scss +64 -0
  233. package/scss/components/_borderless-button.scss +36 -6
  234. package/scss/components/_confirmation-dialog.scss +102 -0
  235. package/scss/components/_content-unavailable-view.scss +54 -0
  236. package/scss/components/_date-picker.scss +30 -0
  237. package/scss/components/_detail-placeholder.scss +153 -0
  238. package/scss/components/_disclosure-group.scss +143 -48
  239. package/scss/components/_fine-tooltip.scss +84 -0
  240. package/scss/components/_form-view.scss +233 -0
  241. package/scss/components/_full-screen.scss +7 -5
  242. package/scss/components/_glass-button.scss +59 -0
  243. package/scss/components/_glass-prominent-button.scss +70 -0
  244. package/scss/components/_h-divider.scss +13 -0
  245. package/scss/components/_h-flex-stack.scss +23 -0
  246. package/scss/components/_h-stack.scss +29 -0
  247. package/scss/components/_image-view.scss +9 -0
  248. package/scss/components/_index.scss +235 -7
  249. package/scss/components/_label-view copy.scss.txt +420 -0
  250. package/scss/components/_label-view.scss +367 -0
  251. package/scss/components/_label-view.scss.txt +536 -0
  252. package/scss/components/_labeled-content.scss +9 -0
  253. package/scss/components/_list-view.scss +269 -0
  254. package/scss/components/_menu-view.scss +215 -0
  255. package/scss/components/_navigation-large-title.scss +27 -0
  256. package/scss/components/_navigation-split-view.scss +329 -269
  257. package/scss/components/_navigation-stack.scss +6 -6
  258. package/scss/components/_navigation-title.scss +10 -0
  259. package/scss/components/_picker-view.scss +131 -0
  260. package/scss/components/_plain-button.scss +18 -0
  261. package/scss/components/_progress-view.scss +98 -0
  262. package/scss/components/_scroll-view-proxy.scss +79 -0
  263. package/scss/components/_scroll-view-toolbars.scss +126 -0
  264. package/scss/components/_scroll-view.scss +114 -66
  265. package/scss/components/_search-view.scss +22 -0
  266. package/scss/components/_section-view.scss +119 -0
  267. package/scss/components/_sheet-view.scss +78 -35
  268. package/scss/components/_sidebar-toggle.scss +87 -27
  269. package/scss/components/_sidebar-view.scss +30 -40
  270. package/scss/components/_sticky-container.scss +42 -0
  271. package/scss/components/_tab-bar.scss +207 -84
  272. package/scss/components/_tab-item.scss +25 -0
  273. package/scss/components/_tab-view.scss +270 -126
  274. package/scss/components/_table-column.scss +52 -0
  275. package/scss/components/_table-row.scss +173 -0
  276. package/scss/components/_table-view.scss +223 -0
  277. package/scss/components/_text-field.scss +37 -0
  278. package/scss/components/_tool-bar-item-group.scss +30 -19
  279. package/scss/components/_tool-bar-item.scss +81 -71
  280. package/scss/components/_tool-bar.scss +126 -63
  281. package/scss/components/_v-divider.scss +13 -0
  282. package/scss/components/_v-flex-stack.scss +29 -0
  283. package/scss/components/_v-keyboard.scss +6 -4
  284. package/scss/components/_v-stack.scss +15 -9
  285. package/scss/final/_touch-glass.scss +91 -0
  286. package/scss/index.scss +6 -2
  287. package/scss/mixins/_button.scss +44 -0
  288. package/scss/mixins/_color.scss +16 -0
  289. package/scss/mixins/_dialog.scss +89 -0
  290. package/scss/mixins/_index.scss +453 -0
  291. package/scss/placeholders/_buttons.scss +117 -0
  292. package/scss/placeholders/_lists.scss +594 -0
  293. package/scss/transitions/_alert-dialog.scss +18 -0
  294. package/scss/transitions/_bwd.navbar.scss +3 -13
  295. package/scss/transitions/_bwd.scss +4 -20
  296. package/scss/transitions/_confirmation-dialog.scss +27 -0
  297. package/scss/transitions/_disclosure-group.scss +35 -0
  298. package/scss/transitions/_fine-tooltip.scss +21 -0
  299. package/scss/transitions/_fwd.navbar.scss +4 -9
  300. package/scss/transitions/_fwd.scss +4 -34
  301. package/scss/transitions/_glass-button.scss +12 -0
  302. package/scss/transitions/_glass-prominent-button.scss +12 -0
  303. package/scss/transitions/_index.scss +35 -143
  304. package/scss/transitions/_menu-view.scss +26 -0
  305. package/scss/transitions/_navigation-split-view.scss +23 -0
  306. package/scss/transitions/_progress-view.scss +23 -0
  307. package/scss/transitions/_sheet-view.scss +30 -0
  308. package/scss/transitions/_sidebar-view.scss +36 -0
  309. package/scss/transitions/_tab-bar.scss +20 -0
  310. package/scss/utils/_frame.scss +91 -0
  311. package/scss/utils/_index.scss +78 -0
  312. package/scss/utils/_scroll-view.scss +14 -0
  313. package/scss/utils/_spacing.scss +25 -0
  314. package/scss/utils/_stacks.scss +209 -0
  315. package/web-components.html-data/en.json +576 -0
  316. package/generated/components/bottom-bar.d.ts +0 -10
  317. package/generated/components/bottom-bar.js +0 -73
  318. package/generated/components/navigation-bar.d.ts +0 -10
  319. package/generated/components/navigation-bar.js +0 -80
  320. package/generated/internal/class.d.ts +0 -18
  321. package/generated/internal/class.js +0 -18
  322. package/generated/namespace/index.d.ts +0 -6
  323. package/generated/styles.css +0 -1305
  324. package/scss/_dev.scss +0 -68
  325. package/scss/components/_tab-bar-stack.scss +0 -101
  326. package/scss/components/_toolbars.scss +0 -100
  327. package/scss/transitions/_dialog.scss +0 -32
  328. /package/generated/{namespace/index.js → events/alert-dialog.js} +0 -0
@@ -0,0 +1,496 @@
1
+ var _a;
2
+ import { I18n } from '../i18n';
3
+ import { CleanupRegistry } from '../internal/class/cleanup-registry';
4
+ import { FormAssociatedBase, getInternals } from '../internal/class/form-associated-base';
5
+ import { MutationObserverSet } from '../internal/class/mutation-observer-set';
6
+ import { $, compareBigDecimals, devFlags, kebabCase, onoff, renderLabel, set } from '../internal/utils';
7
+ const keyboardTypes = ['decimal-pad', 'number-pad', 'default'];
8
+ /**
9
+ * @slot label
10
+ * @slot validity-options
11
+ */
12
+ export class TextField extends FormAssociatedBase {
13
+ static get observedAttributes() {
14
+ return ['prompt', 'minimum', 'maximum', 'min-length', 'max-length', 'label', 'name', 'text', 'text-input-autocapitalization', 'disable-autocorrection', 'keyboard-type', 'required', 'disabled'];
15
+ }
16
+ static #template;
17
+ static get template() {
18
+ return (this.#template ??= $(String.raw `
19
+ <label part="root text-field-stack">
20
+ <div part="root text-field-label-stack">
21
+ <slot name="label"></slot>
22
+ </div>
23
+ <div part="root text-field-input-stack">
24
+ <input type="text" part="root input text-field-form-input">
25
+ </div>
26
+ <slot name="validity-options" hidden></slot>
27
+ </label>`));
28
+ }
29
+ #renderValidityMsgs = (entries) => {
30
+ if (devFlags.debug)
31
+ console.debug(`${_a.name} ⚡️ mutation`);
32
+ this.setValidity(this.validity, this.validationMessage);
33
+ };
34
+ #shadowRoot;
35
+ // #internals: ElementInternals
36
+ #customValidity = '';
37
+ // #validitiesSlot?: HTMLSlotElement
38
+ #slots = new Map();
39
+ #validityObservers = new MutationObserverSet(this.#renderValidityMsgs);
40
+ #input;
41
+ get #internals() {
42
+ return getInternals(this);
43
+ }
44
+ constructor() {
45
+ super();
46
+ this.#shadowRoot = this.attachShadow({ mode: 'closed' });
47
+ this.#shadowRoot.appendChild(document.importNode(this.constructor.template, true));
48
+ for (const slot of this.#shadowRoot.querySelectorAll('slot'))
49
+ this.#slots?.set(slot.name, slot);
50
+ CleanupRegistry.register(this, () => {
51
+ this.#slots = new Map();
52
+ });
53
+ CleanupRegistry.unregister(this, 'validities');
54
+ CleanupRegistry.register(this, onoff('slotchange', this.#handleValiditiesSlotchange, this.#slots?.get('validity-options')).on(), 'validities');
55
+ this.#input = this.#shadowRoot.querySelector('input') ?? undefined;
56
+ CleanupRegistry.register(this, onoff([{ types: 'focusin', listener: this.#handleFocusin }], this).on());
57
+ CleanupRegistry.register(this, onoff([
58
+ { types: 'blur', listener: this.#handleInputBlur },
59
+ { types: 'input', listener: this.#handleInputInput },
60
+ { types: 'beforeinput', listener: this.#handleInputBeforeinput },
61
+ { types: 'paste', listener: this.#handleInputPaste },
62
+ ], this.#input).on());
63
+ CleanupRegistry.register(this, onoff('localechange', () => {
64
+ this.text = this.text;
65
+ }, I18n.on).on());
66
+ }
67
+ attributeChangedCallback(name, oldValue, newValue) {
68
+ if (devFlags.debug)
69
+ console.debug(`${_a.name} ⚡️ attr-change [${name}] ("${oldValue}" → "${newValue}")`);
70
+ switch (name) {
71
+ case 'keyboard-type':
72
+ switch (newValue) {
73
+ case 'decimal-pad':
74
+ this.#input?.setAttribute('inputmode', 'decimal');
75
+ break;
76
+ case 'number-pad':
77
+ this.#input?.setAttribute('inputmode', 'numeric');
78
+ break;
79
+ case 'default':
80
+ default:
81
+ this.#input?.removeAttribute('inputmode');
82
+ break;
83
+ }
84
+ this.#sendValueToForm();
85
+ break;
86
+ case 'text-input-autocapitalization':
87
+ switch (newValue) {
88
+ case 'never':
89
+ this.#input?.setAttribute('autocapitalize', 'off');
90
+ break;
91
+ case 'characters':
92
+ this.#input?.setAttribute('autocapitalize', newValue);
93
+ break;
94
+ case 'words':
95
+ this.#input?.setAttribute('autocapitalize', newValue);
96
+ break;
97
+ default:
98
+ case 'sentences':
99
+ this.#input?.setAttribute('autocapitalize', 'on');
100
+ break;
101
+ }
102
+ break;
103
+ case 'disable-autocorrection':
104
+ if ('' === newValue)
105
+ for (const [k, v] of [
106
+ ['autocomplete', 'off'],
107
+ ['autocorrect', 'off'],
108
+ ['spellcheck', 'false'],
109
+ ])
110
+ this.#input?.setAttribute(k, v);
111
+ else
112
+ for (const k of ['autocomplete', 'autocorrect', 'spellcheck'])
113
+ this.#input?.removeAttribute(k);
114
+ break;
115
+ case 'text':
116
+ // if (this.#input) this.#input.value = newValue ?? ''
117
+ // nothing happens //this.text = newValue ?? ''
118
+ break;
119
+ case 'required':
120
+ this.#input?.setAttribute(name, newValue ?? ''); // else this.#input?.removeAttribute(name)
121
+ this.#sendValueToForm();
122
+ break;
123
+ case 'name':
124
+ case 'minimum':
125
+ case 'maximum':
126
+ this.#sendValueToForm();
127
+ break;
128
+ case 'prompt':
129
+ this.#input?.setAttribute('placeholder', newValue ?? ''); // else this.#input?.removeAttribute(name)
130
+ break;
131
+ case 'min-length':
132
+ this.#input?.setAttribute('minlength', newValue ?? '');
133
+ this.#sendValueToForm();
134
+ break;
135
+ case 'max-length':
136
+ this.#input?.setAttribute('maxlength', newValue ?? '');
137
+ this.#sendValueToForm();
138
+ break;
139
+ case 'label':
140
+ renderLabel(this, ':scope>label-view[slot=label]', `<label-view slot="label" foreground="secondary"><span></span></label-view>`, newValue);
141
+ // this.#sendValueToForm()
142
+ break;
143
+ case 'disabled':
144
+ for (const el of this.#shadowRoot.querySelectorAll('input'))
145
+ el.toggleAttribute('disabled', !newValue);
146
+ break;
147
+ }
148
+ // render pattern
149
+ switch (this.keyboardType) {
150
+ case 'decimal-pad':
151
+ const allowedSignsRegex2 = String.raw `[+\-]?|[+\-]?(\d+([.,]\d*)?|[.,]\d*)`, // allow single '+' or '-', then allow only one ',' or '.' and finally only digits
152
+ digitsDecimalsOnlyRegex = String.raw `(\d+([.,]\d*)?|[.,]\d*)?`; // allow only one ',' or '.' and finally only digits
153
+ this.#input?.setAttribute('pattern', this.negativeNumbersAllowed ? allowedSignsRegex2 : digitsDecimalsOnlyRegex);
154
+ break;
155
+ case 'number-pad':
156
+ const allowedSignsRegex = String.raw `([+\-]|\d+|[+\-]\d+)?`, // allow single '+' or '-', then allow only digits
157
+ digitsOnlyRegex = String.raw `\d*`; // allow only digits
158
+ this.#input?.setAttribute('pattern', this.negativeNumbersAllowed ? allowedSignsRegex : digitsOnlyRegex);
159
+ break;
160
+ default:
161
+ this.#input?.removeAttribute('pattern');
162
+ break;
163
+ }
164
+ }
165
+ disconnectedCallback() {
166
+ super.disconnectedCallback();
167
+ this.#validityObservers.unobserveAll();
168
+ }
169
+ connectedCallback() {
170
+ super.connectedCallback();
171
+ // finally
172
+ if (!this.hasAttribute('text'))
173
+ return;
174
+ this.text = this.getAttribute('text') ?? ''; // this.#input.value = this.getAttribute('text') ?? ''
175
+ this.#sendValueToForm(false);
176
+ }
177
+ get keyboardType() {
178
+ return keyboardTypes.includes(this.getAttribute('keyboard-type') ?? '') ? this.getAttribute('keyboard-type') : 'default';
179
+ }
180
+ get text() {
181
+ return this.#input?.value ?? '';
182
+ }
183
+ set text(v) {
184
+ if (!this.#input)
185
+ return;
186
+ const nv = this.#patternTest(v) ? v : '';
187
+ set(this.#input, 'value', nv);
188
+ // this.text AND this.value have NOW been updated to new values
189
+ // if user is NOT interacting replace new-text/input.value with the formatted version of the new-text/input.value!
190
+ if (document.activeElement !== this && 0 < this.#input.value.length) {
191
+ const finalText = this.value.replace(/[.,]/g, I18n.decimalSeparator);
192
+ set(this.#input, 'value', finalText); // if (this.text !== finalText) this.#input.value = finalText
193
+ }
194
+ }
195
+ #handleValiditiesSlotchange = ({ type, target: slot }) => {
196
+ if (devFlags.debug)
197
+ console.debug(`${_a.name} ⚡️ ${type}`);
198
+ if (!(slot instanceof HTMLSlotElement))
199
+ return;
200
+ const assigned = slot.assignedElements();
201
+ this.#validityObservers.syncObservations(assigned, ['value', 'label']);
202
+ // if (0 < assigned.length)
203
+ this.#renderValidityMsgs([]);
204
+ };
205
+ #handleFocusin = (evt) => {
206
+ if (devFlags.debug)
207
+ console.debug(`${_a.name} ⚡️ ${evt?.type}`);
208
+ if (evt.target === this)
209
+ this.#input?.focus();
210
+ };
211
+ #sendValueToForm = (dispatchEvent = true) => {
212
+ // input.value has already been updated/synced !!
213
+ if (this.matches(':disabled'))
214
+ return this.setValidity({});
215
+ // if (this.hasAttribute('required')) {
216
+ if (this.#input?.matches(':invalid')) {
217
+ this.setValidity(this.#input?.validity, this.#input?.validationMessage);
218
+ }
219
+ else if (['number-pad', 'decimal-pad'].includes(this.keyboardType) && (this.hasAttribute('minimum') || this.hasAttribute('maximum'))) {
220
+ const underflow = compareBigDecimals(this.value, this.getAttribute('minimum') ?? '-Infinity'), overflow = compareBigDecimals(this.value, this.getAttribute('maximum') ?? 'Infinity');
221
+ if (0 > underflow)
222
+ this.setValidity({ rangeUnderflow: true });
223
+ else if (0 < overflow)
224
+ this.setValidity({ rangeOverflow: true });
225
+ else
226
+ this.setValidity({});
227
+ }
228
+ else {
229
+ this.setValidity({});
230
+ }
231
+ const entries = new FormData();
232
+ entries.append(this.name, this.text);
233
+ this.#internals.setFormValue(entries);
234
+ if (dispatchEvent)
235
+ this.dispatchEvent(new CustomEvent('commit', { detail: { text: this.text }, bubbles: true, composed: true }));
236
+ };
237
+ #handleInputPaste = (evt) => {
238
+ if (devFlags.debug)
239
+ console.debug(`${_a.name} ⚡️ ${evt?.type}`);
240
+ const { target: input } = evt;
241
+ if (!(input instanceof HTMLInputElement))
242
+ return;
243
+ evt.preventDefault();
244
+ const data = this.#identity(evt.clipboardData?.getData('text') ?? ''); // number is now sanitized but contains edge cases like '+' and also global one separator that could be wither dot or decimal.
245
+ if (0 === data.length)
246
+ return this.shake(); //.then(this.reportValidity) // nothing to paste
247
+ const start = input.selectionStart ?? 0, end = input.selectionEnd ?? 0, before = input.value.slice(0, start), after = input.value.slice(end), newText = `${before}${data}${after}`;
248
+ if (-1 < input.maxLength && input.maxLength < newText.length)
249
+ return this.shake(); //.then(this.reportValidity) // exceeding maxlength
250
+ input.value = newText;
251
+ const newCaret = start + data.length;
252
+ input.setSelectionRange(newCaret, newCaret); // move caret after inserted char
253
+ this.#sendValueToForm(); // input.dispatchEvent(new InputEvent('input', { bubbles: true })) // Manually trigger input event so listeners react
254
+ };
255
+ // NOTE: identity MUST always pass beforeinput checks
256
+ #identity = (str) => {
257
+ // 'ab-1.2.3.4x yz ' // "-1.234"
258
+ // '++12..34 ' // "+12.34"
259
+ // '-+5.6.7.8 ' // "-5.678"
260
+ // ' -+5.6,7.8 ' // "-5.678"
261
+ // 'foo123bar ' // "123"
262
+ // '.12.3 ' // ".123"
263
+ // ' http://localhost:5173/input.html' // "5173."
264
+ // ' http://localhost:51,73/input.html' // "51,73"
265
+ // ' +- 0000.' // "+0000."
266
+ // ' +' // "+"
267
+ // ' +0000234' // "+0000234"
268
+ // ' +-1.2.3.4x yz ' // "+1.234"
269
+ let seenSign = false;
270
+ switch (this.keyboardType) {
271
+ case 'decimal-pad': // allow only ^+- and then only one instance of ., finally remove all non digit rest appearances
272
+ let seenDot = false;
273
+ return [...`${str.trim()}`].reduce((acc, ch, i) => {
274
+ // +- signs are allowed
275
+ if (this.negativeNumbersAllowed)
276
+ if (!seenSign && (ch === '+' || ch === '-')) {
277
+ seenSign = true;
278
+ return `${acc}${ch}`;
279
+ }
280
+ if ((ch === '.' || ch === ',') && !seenDot) {
281
+ seenDot = true;
282
+ return `${acc}${ch}`;
283
+ }
284
+ if (/\d/.test(ch))
285
+ return `${acc}${ch}`;
286
+ return acc; // skip everything else
287
+ }, '');
288
+ case 'number-pad': // allow only ^+- finally remove all non digit rest appearances
289
+ return [...`${str.trim()}`].reduce((acc, ch, i) => {
290
+ // +- signs are allowed
291
+ if (this.negativeNumbersAllowed)
292
+ if (!seenSign && (ch === '+' || ch === '-')) {
293
+ seenSign = true;
294
+ return `${acc}${ch}`;
295
+ }
296
+ if (/\d/.test(ch))
297
+ return `${acc}${ch}`;
298
+ return acc; // skip everything else
299
+ }, '');
300
+ default:
301
+ return `${str}`;
302
+ }
303
+ };
304
+ #patternTest = (str) => {
305
+ switch (this.keyboardType) {
306
+ case 'decimal-pad':
307
+ const allowedSignsRegex2 = /^[+-]?$|^[+-]?(\d+([.,]\d*)?|[.,]\d*)$/, // allow single '+' or '-', then allow only one ',' or '.' and finally only digits
308
+ digitsDecimalsOnlyRegex = /^(\d+([.,]\d*)?|[.,]\d*)?$/; // allow only one ',' or '.' and finally only digits
309
+ return (this.negativeNumbersAllowed ? allowedSignsRegex2 : digitsDecimalsOnlyRegex).test(str);
310
+ // // isValidDecimal(""); // true
311
+ // // isValidDecimal("+"); // true
312
+ // // isValidDecimal("-"); // true
313
+ // // isValidDecimal("123"); // true
314
+ // // isValidDecimal("+123"); // true
315
+ // // isValidDecimal("-456"); // true
316
+ // // isValidDecimal("12.34"); // true
317
+ // // isValidDecimal("-0,56"); // true
318
+ // // isValidDecimal(".78"); // true
319
+ // // isValidDecimal(",9"); // true
320
+ // // isValidDecimal("12.3.4"); // false
321
+ // // isValidDecimal("12,3,4"); // false
322
+ // // isValidDecimal("12-3"); // false
323
+ // // isValidDecimal("12a"); // false
324
+ case 'number-pad':
325
+ const allowedSignsRegex = /^([+-]|\d+|[+-]\d+)?$/, // allow single '+' or '-', then allow only digits
326
+ digitsOnlyRegex = /^(\d+)?$/; // allow only digits
327
+ return (this.negativeNumbersAllowed ? allowedSignsRegex : digitsOnlyRegex).test(str);
328
+ // // isValidInteger(""); // true
329
+ // // isValidInteger("+"); // true
330
+ // // isValidInteger("-"); // true
331
+ // // isValidInteger("123"); // true
332
+ // // isValidInteger("+123"); // true
333
+ // // isValidInteger("-456"); // true
334
+ // // isValidInteger("12-3"); // false
335
+ // // isValidInteger("++123"); // false
336
+ // // isValidInteger("123a"); // false
337
+ default:
338
+ return true;
339
+ }
340
+ };
341
+ #handleInputBeforeinput = (evt) => {
342
+ if (devFlags.debug)
343
+ console.debug(`${_a.name} ⚡️ ${evt?.type}`);
344
+ const { target: input } = evt;
345
+ if (!(input instanceof HTMLInputElement))
346
+ return;
347
+ if ('insertText' !== evt.inputType)
348
+ return;
349
+ const data = evt.data ?? '';
350
+ if (-1 < input.maxLength && 0 === data.length) {
351
+ evt.preventDefault();
352
+ return this.shake(); //.then(this.reportValidity)
353
+ } // nothing to add
354
+ const start = input.selectionStart ?? 0, end = input.selectionEnd ?? 0, before = this.text.slice(0, start), after = this.text.slice(end), newText = `${before}${data}${after}`;
355
+ if (0 === newText.length)
356
+ return;
357
+ switch (input.getAttribute('inputmode')) {
358
+ case 'decimal':
359
+ // const allowedSignsRegex2 = /^[+-]?$|^[+-]?(\d+([.,]\d*)?|[.,]\d*)$/, // allow single '+' or '-', then allow only one ',' or '.' and finally only digits
360
+ // digitsDecimalsOnlyRegex = /^(\d+([.,]\d*)?|[.,]\d*)?$/ // allow only one ',' or '.' and finally only digits
361
+ // if ((this.min < 0 ? allowedSignsRegex2 : digitsDecimalsOnlyRegex).test(newText)) break
362
+ if (this.#patternTest(newText))
363
+ break;
364
+ evt.preventDefault();
365
+ return this.shake(); //.then(this.reportValidity)
366
+ case 'numeric':
367
+ // const allowedSignsRegex = /^([+-]|\d+|[+-]\d+)?$/, // allow single '+' or '-', then allow only digits
368
+ // digitsOnlyRegex = /^(\d+)?$/ // allow only digits
369
+ // if ((this.min < 0 ? allowedSignsRegex : digitsOnlyRegex).test(newText)) break
370
+ if (this.#patternTest(newText))
371
+ break;
372
+ evt.preventDefault();
373
+ return this.shake(); //.then(this.reportValidity)
374
+ // this.setValidity(prevValidity, prevValiditationMessage) // restore
375
+ }
376
+ };
377
+ #handleInputBlur = ({ type, target: input }) => {
378
+ if (devFlags.debug)
379
+ console.debug(`${_a.name} ⚡️ ${type}`);
380
+ if (!(input instanceof HTMLInputElement))
381
+ return;
382
+ if (0 === input.value.length)
383
+ return;
384
+ const finalText = this.value.replace(/[.,]/g, I18n.decimalSeparator);
385
+ if (!set(input, 'value', finalText))
386
+ return;
387
+ this.#sendValueToForm();
388
+ };
389
+ #handleInputInput = (evt) => {
390
+ if (devFlags.debug)
391
+ console.debug(`${_a.name} ⚡️ ${evt?.type}`);
392
+ this.#sendValueToForm();
393
+ };
394
+ // Optional: form participation properties
395
+ get name() {
396
+ return this.getAttribute('name') ?? this.getAttribute('label') ?? this.querySelector(':scope>[slot=label]')?.textContent ?? '';
397
+ }
398
+ get value() {
399
+ // text allows special edge cases, like '-.' or '+' and generally might be invalid number. It might also be localized and not US based.
400
+ // here we make sure it is number-like, to be used in number operations.
401
+ switch (this.keyboardType) {
402
+ case 'decimal-pad':
403
+ case 'number-pad':
404
+ if ('string' !== typeof this.text)
405
+ return '0';
406
+ const value = this.text.replace(/[.,]/g, '.');
407
+ // Capture optional leading sign
408
+ const sign = value.startsWith('-') ? '-' : '';
409
+ // Strip sign for processing
410
+ let s = value.replace(/^[+-]/, '');
411
+ // Split on dot (take only first two parts in case of multiple dots — though
412
+ // your input guarantees one, this is defensive)
413
+ const [intPart = '', fracPart = ''] = s.split('.'), hasDot = s.includes('.');
414
+ // Remove leading zeros from integer part, keep at least '0'
415
+ const cleanInt = intPart.replace(/^0+/, '') || '0';
416
+ // Remove trailing zeros from fractional part
417
+ const cleanFrac = fracPart.replace(/0+$/, '');
418
+ // Build result
419
+ const result = hasDot && cleanFrac.length > 0 ? `${sign}${cleanInt}.${cleanFrac}` : `${sign}${cleanInt}`;
420
+ return result.replace(/^-0(\.0+)?$/, '0');
421
+ default:
422
+ return this.text;
423
+ }
424
+ }
425
+ get valueAsNumber() {
426
+ switch (this.keyboardType) {
427
+ case 'decimal-pad':
428
+ case 'number-pad':
429
+ return Number(this.value);
430
+ default:
431
+ return '';
432
+ }
433
+ }
434
+ get negativeNumbersAllowed() {
435
+ // switch (this.keyboardType) {
436
+ // case 'decimal-pad':
437
+ // case 'number-pad':
438
+ const min = this.getAttribute('minimum') ?? '-Infinity', max = this.getAttribute('maximum') ?? 'Infinity';
439
+ return compareBigDecimals('0', min) >= 0 && compareBigDecimals('0', max) <= 0;
440
+ // default:
441
+ // return false
442
+ // }
443
+ }
444
+ setValidity = (flags, message, anchor) => {
445
+ // let msg
446
+ // if (message)
447
+ for (const k in flags) {
448
+ const key = k; // ✅ type-safe cast
449
+ if (true !== flags[key])
450
+ continue;
451
+ for (const el of this.#slots?.get('validity-options')?.assignedElements({ flatten: true }) ?? []) {
452
+ if (!el.matches('option'))
453
+ continue;
454
+ const { label, value } = el;
455
+ if (`${kebabCase(key)}` === value) {
456
+ message = label;
457
+ break;
458
+ }
459
+ else if (`${kebabCase(key)}:${message}` === value) {
460
+ message = label;
461
+ break;
462
+ }
463
+ }
464
+ }
465
+ if (!message)
466
+ for (const k in flags) {
467
+ const key = k; // ✅ type-safe cast
468
+ if (true !== flags[key])
469
+ continue;
470
+ message = kebabCase(key);
471
+ break;
472
+ }
473
+ if (devFlags.debug)
474
+ console.debug(`${_a.name} ⚡️ validity-change`);
475
+ return this.#internals.setValidity(flags, this.#customValidity || message, anchor ?? this.#input);
476
+ };
477
+ setCustomValidity = (message) => {
478
+ this.#customValidity = message;
479
+ if (this.#customValidity)
480
+ this.#internals.setValidity({ ...this.#internals.validity, customError: true }, message);
481
+ else
482
+ this.#sendValueToForm(false);
483
+ };
484
+ formAssociatedCallback = (form) => {
485
+ this.#sendValueToForm();
486
+ };
487
+ formDisabledCallback = (disabled) => {
488
+ for (const el of this.#shadowRoot.querySelectorAll('input'))
489
+ el.toggleAttribute('disabled', !disabled);
490
+ };
491
+ formResetCallback = () => {
492
+ this.text = '';
493
+ this.#sendValueToForm();
494
+ };
495
+ }
496
+ _a = TextField;
@@ -0,0 +1,5 @@
1
+ export declare class ToolBarItemGroup extends HTMLElement {
2
+ constructor();
3
+ connectedCallback(): void;
4
+ disconnectedCallback(): void;
5
+ }
@@ -0,0 +1,28 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var ToolBarItemGroup_1;
8
+ import { CleanupRegistry } from '../internal/class/cleanup-registry';
9
+ import { adaptiveSlot } from '../internal/decorators';
10
+ import { devFlags } from '../internal/utils';
11
+ let ToolBarItemGroup = ToolBarItemGroup_1 = class ToolBarItemGroup extends HTMLElement {
12
+ constructor() {
13
+ super();
14
+ }
15
+ connectedCallback() {
16
+ if (devFlags.debug)
17
+ console.debug(`${ToolBarItemGroup_1.name} ⚡️ connect`);
18
+ }
19
+ disconnectedCallback() {
20
+ if (devFlags.debug)
21
+ console.debug(`${ToolBarItemGroup_1.name} ⚡️ disconnect`);
22
+ CleanupRegistry.unregister(this);
23
+ }
24
+ };
25
+ ToolBarItemGroup = ToolBarItemGroup_1 = __decorate([
26
+ adaptiveSlot()
27
+ ], ToolBarItemGroup);
28
+ export { ToolBarItemGroup };
@@ -0,0 +1,8 @@
1
+ export declare class ToolBarItem extends HTMLElement {
2
+ #private;
3
+ static get observedAttributes(): string[];
4
+ constructor();
5
+ attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null): void;
6
+ disconnectedCallback(): void;
7
+ connectedCallback(): void;
8
+ }
@@ -0,0 +1,66 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var ToolBarItem_1;
8
+ import { CleanupRegistry } from '../internal/class/cleanup-registry';
9
+ import { adaptiveSlot } from '../internal/decorators';
10
+ import { devFlags, ensurePlaceholder, onoff, touchGlass } from '../internal/utils';
11
+ import { Snapshot } from '../snapshot';
12
+ let ToolBarItem = ToolBarItem_1 = class ToolBarItem extends HTMLElement {
13
+ static get observedAttributes() {
14
+ return ['slot', 'data-previous-slot', 'title-key'];
15
+ }
16
+ #mutationObserver;
17
+ constructor() {
18
+ super();
19
+ }
20
+ attributeChangedCallback(name, oldValue, newValue) {
21
+ if (devFlags.debug)
22
+ console.debug(`${ToolBarItem_1.name} ⚡️ attr-change [${name}] ("${oldValue}" → "${newValue}")`);
23
+ switch (name) {
24
+ case 'slot':
25
+ case 'data-previous-slot':
26
+ case 'title-key': {
27
+ this.#mutationObserver?.disconnect();
28
+ const role = this.getAttribute('data-previous-slot') ?? this.getAttribute('slot') ?? '', tKey = this.getAttribute('title-key');
29
+ if (['confirmation-action', 'cancellation-action'].includes(role))
30
+ Snapshot.waitReady.then(() => {
31
+ ensurePlaceholder(this.querySelector(':scope>button'), role, tKey);
32
+ this.#mutationObserver = new MutationObserver((mutations) => {
33
+ for (const { target } of mutations)
34
+ if (target instanceof HTMLElement)
35
+ ensurePlaceholder(this.querySelector(':scope>button'), role, tKey);
36
+ });
37
+ this.#mutationObserver.observe(this, {
38
+ childList: true,
39
+ });
40
+ });
41
+ break;
42
+ }
43
+ }
44
+ }
45
+ disconnectedCallback() {
46
+ if (devFlags.debug)
47
+ console.debug(`${ToolBarItem_1.name} ⚡️ disconnect`);
48
+ this.#mutationObserver?.disconnect();
49
+ CleanupRegistry.unregister(this);
50
+ }
51
+ connectedCallback() {
52
+ if (devFlags.debug)
53
+ console.debug(`${ToolBarItem_1.name} ⚡️ connect`);
54
+ CleanupRegistry.register(this, onoff(touchGlass(this, (t) => t.closest('tool-bar-item-group') ?? t, ({ target }) => {
55
+ if (!(target instanceof HTMLElement))
56
+ return true;
57
+ if (target.closest('menu-view[open]'))
58
+ return false;
59
+ return true;
60
+ }), this).on());
61
+ }
62
+ };
63
+ ToolBarItem = ToolBarItem_1 = __decorate([
64
+ adaptiveSlot((el) => !el.closest('tool-bar-item-group'))
65
+ ], ToolBarItem);
66
+ export { ToolBarItem };
@@ -0,0 +1,19 @@
1
+ /**
2
+ * @slot cancellation-action - The item represents a cancellation action for a modal interface. Places the item in the leading edge of the top bar and on the trailing edge of the bottom bar when fine modal
3
+ * @slot primary-action - The item represents a primary action. Places the item in the trailing edge of the top bar and on the trailing edge of the bottom bar when fine modal
4
+ * @slot confirmation-action - The item represents a confirmation action for a modal interface. Places the item in the trailing edge of the top bar and on the trailing edge of the bottom bar when fine modal
5
+ * @slot destructive-action - The item represents a destructive action for a modal interface. Places the item in the leading edge of the top bar and on the leading edge of the bottom bar when fine modal
6
+ * @slot top-bar-leading - Places the item in the leading edge of the top bar
7
+ * @slot top-bar-principal - Places the item in the middle of the top bar
8
+ * @slot top-bar-trailing - Places the item in the trailing edge of the top bar
9
+ * @slot bottom-bar-leading - Places the item in the leading edge of the bottom bar
10
+ * @slot bottom-bar-principal - Places the item in the middle of the bottom bar
11
+ * @slot bottom-bar-trailing - Places the item in the trailing edge of the bottom bar
12
+ */
13
+ export declare class ToolBar extends HTMLElement {
14
+ #private;
15
+ static get template(): DocumentFragment;
16
+ constructor();
17
+ connectedCallback(): void;
18
+ disconnectedCallback(): void;
19
+ }