@swiftwc/ui 0.0.0-dev.4 → 0.0.0-dev.40

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