@swiftwc/ui 0.0.0-dev.98 → 1.0.0-canary.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 (342) hide show
  1. package/{web-components.html-data → html-data}/en.json +155 -57
  2. package/package.json +14 -11
  3. package/scss/_components.scss +1 -1
  4. package/scss/_maps.scss +3 -1
  5. package/scss/_utils.scss +3 -1
  6. package/scss/_vars.scss +1 -0
  7. package/scss/base/_layout.scss +8 -8
  8. package/scss/base/_reboot.scss +4 -29
  9. package/scss/base/_root.scss +27 -12
  10. package/scss/colors/_index.scss +66 -1
  11. package/scss/components/_alert-dialog.scss +3 -3
  12. package/scss/components/_bordered-button.scss +2 -2
  13. package/scss/components/_bordered-prominent-button.scss +3 -3
  14. package/scss/components/_borderless-button.scss +2 -2
  15. package/scss/components/_confirmation-dialog.scss +1 -1
  16. package/scss/components/_content-unavailable.scss +1 -1
  17. package/scss/components/{_body-view.scss → _content-view.scss} +2 -2
  18. package/scss/components/_date-picker.scss +1 -1
  19. package/scss/components/_detail-placeholder.scss +5 -5
  20. package/scss/components/_disclosure-group.scss +2 -2
  21. package/scss/components/_fine-tooltip.scss +1 -1
  22. package/scss/components/_form-view.scss +3 -3
  23. package/scss/components/_full-screen.scss +1 -1
  24. package/scss/components/_glass-button.scss +2 -2
  25. package/scss/components/_glass-prominent-button.scss +3 -3
  26. package/scss/components/_group-box.scss +1 -1
  27. package/scss/components/_h-divider.scss +1 -1
  28. package/scss/components/_h-flex-stack.scss +3 -1
  29. package/scss/components/_h-stack.scss +1 -1
  30. package/scss/components/_image-view.scss +1 -1
  31. package/scss/components/_index.scss +35 -24
  32. package/scss/components/_label-view.scss +1 -1
  33. package/scss/components/_labeled-content.scss +1 -1
  34. package/scss/components/_list-view.scss +3 -3
  35. package/scss/components/_menu-view.scss +3 -3
  36. package/scss/components/_navigation-large-title.scss +15 -9
  37. package/scss/components/_navigation-split-view.scss +18 -18
  38. package/scss/components/_navigation-stack.scss +1 -1
  39. package/scss/components/_navigation-title.scss +1 -1
  40. package/scss/components/_picker-view.scss +159 -119
  41. package/scss/components/_plain-button.scss +2 -2
  42. package/scss/components/_progress-view.scss +1 -1
  43. package/scss/components/_scroll-view-proxy.scss +1 -1
  44. package/scss/components/_scroll-view-toolbars.scss +1 -1
  45. package/scss/components/_scroll-view.scss +2 -2
  46. package/scss/components/_search-view.scss +1 -1
  47. package/scss/components/_section-view.scss +1 -1
  48. package/scss/components/_sheet-view.scss +2 -2
  49. package/scss/components/_sidebar-toggle.scss +1 -1
  50. package/scss/components/_sidebar-view.scss +2 -2
  51. package/scss/components/_sticky-container.scss +1 -1
  52. package/scss/components/_tab-bar.scss +1 -1
  53. package/scss/components/_tab-item.scss +1 -1
  54. package/scss/components/_tab-view.scss +23 -15
  55. package/scss/components/_table-column.scss +1 -1
  56. package/scss/components/_table-row.scss +1 -1
  57. package/scss/components/_table-view.scss +1 -1
  58. package/scss/components/_text-field.scss +1 -1
  59. package/scss/components/_text-view.scss +1 -1
  60. package/scss/components/_toggle-view.scss +88 -30
  61. package/scss/components/_tool-bar-item-group.scss +1 -1
  62. package/scss/components/_tool-bar-item.scss +2 -2
  63. package/scss/components/_tool-bar.scss +2 -2
  64. package/scss/components/_v-divider.scss +1 -1
  65. package/scss/components/_v-flex-stack.scss +3 -1
  66. package/scss/components/_v-keyboard.scss +1 -1
  67. package/scss/components/_v-stack.scss +1 -1
  68. package/scss/final/_touch-glass.scss +8 -1
  69. package/scss/mixins/_index.scss +2 -2
  70. package/scss/placeholders/_buttons.scss +5 -5
  71. package/scss/placeholders/_lists.scss +3 -3
  72. package/scss/transitions/_alert-dialog.scss +1 -1
  73. package/scss/transitions/_bwd.navbar.scss +1 -1
  74. package/scss/transitions/_bwd.scss +3 -3
  75. package/scss/transitions/_confirmation-dialog.scss +1 -1
  76. package/scss/transitions/_disclosure-group.scss +1 -1
  77. package/scss/transitions/_fine-tooltip.scss +1 -1
  78. package/scss/transitions/_fwd.navbar.scss +1 -1
  79. package/scss/transitions/_fwd.scss +1 -1
  80. package/scss/transitions/_glass-button.scss +1 -1
  81. package/scss/transitions/_glass-prominent-button.scss +1 -1
  82. package/scss/transitions/_index.scss +1 -1
  83. package/scss/transitions/_menu-view.scss +1 -1
  84. package/scss/transitions/_navigation-split-view.scss +1 -1
  85. package/scss/transitions/_progress-view.scss +1 -1
  86. package/scss/transitions/_sheet-view.scss +1 -1
  87. package/scss/transitions/_sidebar-view.scss +1 -1
  88. package/scss/transitions/_tab-bar.scss +1 -1
  89. package/scss/utils/_background.scss +52 -0
  90. package/scss/utils/_frame.scss +2 -2
  91. package/scss/utils/_index.scss +33 -8
  92. package/scss/utils/_spacing.scss +1 -1
  93. package/scss/utils/_stacks.scss +5 -3
  94. package/generated/buses/alert-dialog.d.ts +0 -2
  95. package/generated/buses/alert-dialog.js +0 -1
  96. package/generated/buses/confirmation-dialog.d.ts +0 -2
  97. package/generated/buses/confirmation-dialog.js +0 -1
  98. package/generated/buses/index.d.ts +0 -6
  99. package/generated/buses/index.js +0 -6
  100. package/generated/buses/lifecycle-observer.d.ts +0 -2
  101. package/generated/buses/lifecycle-observer.js +0 -1
  102. package/generated/client/index.d.ts +0 -30
  103. package/generated/client/index.js +0 -279
  104. package/generated/components/alert-dialog.d.ts +0 -11
  105. package/generated/components/alert-dialog.js +0 -102
  106. package/generated/components/body-view.d.ts +0 -13
  107. package/generated/components/body-view.js +0 -17
  108. package/generated/components/bordered-button.d.ts +0 -17
  109. package/generated/components/bordered-button.js +0 -56
  110. package/generated/components/bordered-prominent-button.d.ts +0 -17
  111. package/generated/components/bordered-prominent-button.js +0 -56
  112. package/generated/components/borderless-button.d.ts +0 -17
  113. package/generated/components/borderless-button.js +0 -56
  114. package/generated/components/color-scheme.d.ts +0 -12
  115. package/generated/components/color-scheme.js +0 -54
  116. package/generated/components/confirmation-dialog.d.ts +0 -12
  117. package/generated/components/confirmation-dialog.js +0 -116
  118. package/generated/components/content-unavailable.d.ts +0 -30
  119. package/generated/components/content-unavailable.js +0 -82
  120. package/generated/components/date-picker.d.ts +0 -52
  121. package/generated/components/date-picker.js +0 -480
  122. package/generated/components/disclosure-group.d.ts +0 -17
  123. package/generated/components/disclosure-group.js +0 -66
  124. package/generated/components/fine-tooltip.d.ts +0 -15
  125. package/generated/components/fine-tooltip.js +0 -111
  126. package/generated/components/form-view.d.ts +0 -16
  127. package/generated/components/form-view.js +0 -65
  128. package/generated/components/glass-button.d.ts +0 -16
  129. package/generated/components/glass-button.js +0 -53
  130. package/generated/components/glass-prominent-button.d.ts +0 -16
  131. package/generated/components/glass-prominent-button.js +0 -53
  132. package/generated/components/h-stack.d.ts +0 -22
  133. package/generated/components/h-stack.js +0 -26
  134. package/generated/components/image-view.d.ts +0 -18
  135. package/generated/components/image-view.js +0 -68
  136. package/generated/components/index.d.ts +0 -47
  137. package/generated/components/index.js +0 -47
  138. package/generated/components/label-view.d.ts +0 -27
  139. package/generated/components/label-view.js +0 -87
  140. package/generated/components/labeled-content.d.ts +0 -27
  141. package/generated/components/labeled-content.js +0 -160
  142. package/generated/components/list-view.d.ts +0 -15
  143. package/generated/components/list-view.js +0 -22
  144. package/generated/components/menu-view.d.ts +0 -20
  145. package/generated/components/menu-view.js +0 -140
  146. package/generated/components/navigation-large-title.d.ts +0 -18
  147. package/generated/components/navigation-large-title.js +0 -188
  148. package/generated/components/navigation-split-view.d.ts +0 -15
  149. package/generated/components/navigation-split-view.js +0 -25
  150. package/generated/components/navigation-stack.d.ts +0 -15
  151. package/generated/components/navigation-stack.js +0 -29
  152. package/generated/components/navigation-title.d.ts +0 -18
  153. package/generated/components/navigation-title.js +0 -72
  154. package/generated/components/picker-view.d.ts +0 -68
  155. package/generated/components/picker-view.js +0 -1153
  156. package/generated/components/plain-button.d.ts +0 -7
  157. package/generated/components/plain-button.js +0 -22
  158. package/generated/components/progress-view.d.ts +0 -20
  159. package/generated/components/progress-view.js +0 -125
  160. package/generated/components/screen-view.d.ts +0 -5
  161. package/generated/components/screen-view.js +0 -11
  162. package/generated/components/scroll-view-proxy.d.ts +0 -13
  163. package/generated/components/scroll-view-proxy.js +0 -17
  164. package/generated/components/scroll-view.d.ts +0 -22
  165. package/generated/components/scroll-view.js +0 -237
  166. package/generated/components/search-view.d.ts +0 -12
  167. package/generated/components/search-view.js +0 -27
  168. package/generated/components/section-view.d.ts +0 -21
  169. package/generated/components/section-view.js +0 -64
  170. package/generated/components/sheet-view.d.ts +0 -11
  171. package/generated/components/sheet-view.js +0 -45
  172. package/generated/components/sidebar-toggle.d.ts +0 -15
  173. package/generated/components/sidebar-toggle.js +0 -88
  174. package/generated/components/sidebar-view.d.ts +0 -10
  175. package/generated/components/sidebar-view.js +0 -37
  176. package/generated/components/sticky-container.d.ts +0 -11
  177. package/generated/components/sticky-container.js +0 -26
  178. package/generated/components/tab-bar.d.ts +0 -10
  179. package/generated/components/tab-bar.js +0 -40
  180. package/generated/components/tab-item.d.ts +0 -10
  181. package/generated/components/tab-item.js +0 -134
  182. package/generated/components/tab-view.d.ts +0 -31
  183. package/generated/components/tab-view.js +0 -198
  184. package/generated/components/table-view.d.ts +0 -26
  185. package/generated/components/table-view.js +0 -161
  186. package/generated/components/text-field.d.ts +0 -42
  187. package/generated/components/text-field.js +0 -526
  188. package/generated/components/toggle-view.d.ts +0 -41
  189. package/generated/components/toggle-view.js +0 -249
  190. package/generated/components/tool-bar-item-group.d.ts +0 -13
  191. package/generated/components/tool-bar-item-group.js +0 -31
  192. package/generated/components/tool-bar-item.d.ts +0 -16
  193. package/generated/components/tool-bar-item.js +0 -69
  194. package/generated/components/tool-bar.d.ts +0 -26
  195. package/generated/components/tool-bar.js +0 -95
  196. package/generated/components/v-keyboard.d.ts +0 -20
  197. package/generated/components/v-keyboard.js +0 -89
  198. package/generated/components/v-stack.d.ts +0 -25
  199. package/generated/components/v-stack.js +0 -29
  200. package/generated/css/index.css +0 -10592
  201. package/generated/events/alert-dialog.d.ts +0 -13
  202. package/generated/events/alert-dialog.js +0 -1
  203. package/generated/events/confirmation-dialog.d.ts +0 -14
  204. package/generated/events/confirmation-dialog.js +0 -1
  205. package/generated/events/date-picker.d.ts +0 -13
  206. package/generated/events/date-picker.js +0 -1
  207. package/generated/events/index.d.ts +0 -9
  208. package/generated/events/index.js +0 -9
  209. package/generated/events/lifecycle-observer.d.ts +0 -18
  210. package/generated/events/lifecycle-observer.js +0 -1
  211. package/generated/events/picker-view.d.ts +0 -29
  212. package/generated/events/picker-view.js +0 -1
  213. package/generated/events/scroll-view.d.ts +0 -18
  214. package/generated/events/scroll-view.js +0 -1
  215. package/generated/events/tab-view.d.ts +0 -54
  216. package/generated/events/tab-view.js +0 -1
  217. package/generated/events/text-field.d.ts +0 -13
  218. package/generated/events/text-field.js +0 -1
  219. package/generated/events/toggle-view.d.ts +0 -14
  220. package/generated/events/toggle-view.js +0 -1
  221. package/generated/i18n/index.d.ts +0 -33
  222. package/generated/i18n/index.js +0 -164
  223. package/generated/i18n/locales/el.d.ts +0 -16
  224. package/generated/i18n/locales/el.js +0 -16
  225. package/generated/i18n/locales/en.d.ts +0 -16
  226. package/generated/i18n/locales/en.js +0 -16
  227. package/generated/i18n/locales/index.d.ts +0 -4
  228. package/generated/i18n/locales/index.js +0 -4
  229. package/generated/index.d.ts +0 -2
  230. package/generated/index.js +0 -3
  231. package/generated/internal/class/cleanup-registry.d.ts +0 -5
  232. package/generated/internal/class/cleanup-registry.js +0 -38
  233. package/generated/internal/class/css-style-observer.d.ts +0 -8
  234. package/generated/internal/class/css-style-observer.js +0 -26
  235. package/generated/internal/class/form-associated-base.d.ts +0 -16
  236. package/generated/internal/class/form-associated-base.js +0 -78
  237. package/generated/internal/class/mutation-observer-set.d.ts +0 -9
  238. package/generated/internal/class/mutation-observer-set.js +0 -42
  239. package/generated/internal/class/mutation-observer-singleton.d.ts +0 -10
  240. package/generated/internal/class/mutation-observer-singleton.js +0 -64
  241. package/generated/internal/class/navigation-path.d.ts +0 -15
  242. package/generated/internal/class/navigation-path.js +0 -84
  243. package/generated/internal/class/navigation-view.d.ts +0 -8
  244. package/generated/internal/class/navigation-view.js +0 -72
  245. package/generated/internal/class/resize-observer-singleton.d.ts +0 -7
  246. package/generated/internal/class/resize-observer-singleton.js +0 -22
  247. package/generated/internal/decorators/adaptive-slot.d.ts +0 -1
  248. package/generated/internal/decorators/adaptive-slot.js +0 -50
  249. package/generated/internal/decorators/custom-element.d.ts +0 -5
  250. package/generated/internal/decorators/custom-element.js +0 -5
  251. package/generated/internal/decorators/index.d.ts +0 -6
  252. package/generated/internal/decorators/index.js +0 -6
  253. package/generated/internal/decorators/microtask-on-connected.d.ts +0 -39
  254. package/generated/internal/decorators/microtask-on-connected.js +0 -67
  255. package/generated/internal/privateNamespace.d.ts +0 -14
  256. package/generated/internal/privateNamespace.js +0 -168
  257. package/generated/internal/utils/add.d.ts +0 -1
  258. package/generated/internal/utils/add.js +0 -7
  259. package/generated/internal/utils/cash/ancestors.d.ts +0 -1
  260. package/generated/internal/utils/cash/ancestors.js +0 -27
  261. package/generated/internal/utils/cash/index.d.ts +0 -24
  262. package/generated/internal/utils/cash/index.js +0 -27
  263. package/generated/internal/utils/cash/next-all.d.ts +0 -1
  264. package/generated/internal/utils/cash/next-all.js +0 -10
  265. package/generated/internal/utils/cash/next.d.ts +0 -1
  266. package/generated/internal/utils/cash/next.js +0 -9
  267. package/generated/internal/utils/cash/prev-all.d.ts +0 -1
  268. package/generated/internal/utils/cash/prev-all.js +0 -10
  269. package/generated/internal/utils/cash/prev.d.ts +0 -1
  270. package/generated/internal/utils/cash/prev.js +0 -9
  271. package/generated/internal/utils/cash/prop.d.ts +0 -18
  272. package/generated/internal/utils/cash/prop.js +0 -30
  273. package/generated/internal/utils/cash/siblings.d.ts +0 -1
  274. package/generated/internal/utils/cash/siblings.js +0 -10
  275. package/generated/internal/utils/clamp.d.ts +0 -1
  276. package/generated/internal/utils/clamp.js +0 -4
  277. package/generated/internal/utils/compare-big-decimals.d.ts +0 -1
  278. package/generated/internal/utils/compare-big-decimals.js +0 -80
  279. package/generated/internal/utils/css-time.d.ts +0 -1
  280. package/generated/internal/utils/css-time.js +0 -3
  281. package/generated/internal/utils/debounce.d.ts +0 -1
  282. package/generated/internal/utils/debounce.js +0 -13
  283. package/generated/internal/utils/define-translations.d.ts +0 -1
  284. package/generated/internal/utils/define-translations.js +0 -3
  285. package/generated/internal/utils/dev-flags.d.ts +0 -3
  286. package/generated/internal/utils/dev-flags.js +0 -5
  287. package/generated/internal/utils/ensure-placeholder.d.ts +0 -1
  288. package/generated/internal/utils/ensure-placeholder.js +0 -41
  289. package/generated/internal/utils/frame.d.ts +0 -1
  290. package/generated/internal/utils/frame.js +0 -6
  291. package/generated/internal/utils/index.d.ts +0 -20
  292. package/generated/internal/utils/index.js +0 -23
  293. package/generated/internal/utils/is-inside.d.ts +0 -1
  294. package/generated/internal/utils/is-inside.js +0 -4
  295. package/generated/internal/utils/kebab-case.d.ts +0 -1
  296. package/generated/internal/utils/kebab-case.js +0 -8
  297. package/generated/internal/utils/list-active.d.ts +0 -7
  298. package/generated/internal/utils/list-active.js +0 -83
  299. package/generated/internal/utils/microtask.d.ts +0 -1
  300. package/generated/internal/utils/microtask.js +0 -3
  301. package/generated/internal/utils/onoff.d.ts +0 -45
  302. package/generated/internal/utils/onoff.js +0 -31
  303. package/generated/internal/utils/set.d.ts +0 -1
  304. package/generated/internal/utils/set.js +0 -7
  305. package/generated/internal/utils/sleep.d.ts +0 -1
  306. package/generated/internal/utils/sleep.js +0 -3
  307. package/generated/internal/utils/slow-hide-show.d.ts +0 -1
  308. package/generated/internal/utils/slow-hide-show.js +0 -16
  309. package/generated/internal/utils/timeout.d.ts +0 -5
  310. package/generated/internal/utils/timeout.js +0 -16
  311. package/generated/internal/utils/touch-glass.d.ts +0 -7
  312. package/generated/internal/utils/touch-glass.js +0 -19
  313. package/generated/internal/vendor/morphdom.d.ts +0 -6
  314. package/generated/internal/vendor/morphdom.js +0 -720
  315. package/generated/morphdom/index.d.ts +0 -8
  316. package/generated/morphdom/index.js +0 -8
  317. package/generated/morphdom/morph.d.ts +0 -4
  318. package/generated/morphdom/morph.js +0 -10
  319. package/generated/morphdom/query-morph.d.ts +0 -5
  320. package/generated/morphdom/query-morph.js +0 -12
  321. package/generated/morphdom/render-to-string.d.ts +0 -12
  322. package/generated/morphdom/render-to-string.js +0 -48
  323. package/generated/morphdom/unsafe-html.d.ts +0 -2
  324. package/generated/morphdom/unsafe-html.js +0 -4
  325. package/generated/namespace-browser/base.d.ts +0 -45
  326. package/generated/namespace-browser/base.js +0 -115
  327. package/generated/namespace-browser/event.d.ts +0 -10
  328. package/generated/namespace-browser/event.js +0 -1
  329. package/generated/namespace-browser/index.d.ts +0 -7
  330. package/generated/namespace-browser/index.js +0 -1
  331. package/generated/snapshot/index.d.ts +0 -9
  332. package/generated/snapshot/index.js +0 -60
  333. package/generated/tpl/html.d.ts +0 -5
  334. package/generated/tpl/html.js +0 -7
  335. package/generated/tpl/index.d.ts +0 -6
  336. package/generated/tpl/index.js +0 -6
  337. package/generated/tpl/is-template-result.d.ts +0 -3
  338. package/generated/tpl/is-template-result.js +0 -1
  339. package/generated/tpl/render.d.ts +0 -2
  340. package/generated/tpl/render.js +0 -132
  341. /package/{web-components.css-data → css-data}/en.json +0 -0
  342. /package/scss/utils/{_scroll-view.scss → _scroll-view.scss.txt} +0 -0
@@ -1,87 +0,0 @@
1
- import { $, devFlags } from '../internal/utils';
2
- import { queryMorph } from '../morphdom';
3
- import { html } from '../tpl';
4
- /**
5
- * @summary A view that labels items with an icon and a title.
6
- *
7
- * @example <label-view><span>Hello world!</span></label-view> — Creating a label using a `span` element
8
- * @example <label-view title="Hello world!"></label-view> — Creating a label using the `title` attribute
9
- * @example <label-view system-image="hand-waving"><span>Hello world!</span></label-view> — Creating a label with an icon and a title using the `system-image` attribute
10
- * @example <label-view><i slot="icon" class="ph ph-duotone ph-hand-waving"></i><span>Hello world!</span></label-view> — Creating a label with an icon and a title using the `icon` slot
11
- *
12
- * @attr {@Font} font — Sets the default font for text in this view.
13
- *
14
- * @slot — Any children without a `slot` attribute are placed in the title block.
15
- * @slot icon — Use the `slot="icon"` attribute to place childen in the icon block.
16
- *
17
- * @cssprop --label-gap — The gap between the icon and the title.
18
- * @cssprop {number} --label-image-size — The size of the icon.
19
- * @cssprop --label-padding-inline — The padding inline of the label.
20
- *
21
- */
22
- export class LabelView extends HTMLElement {
23
- static get observedAttributes() {
24
- return [
25
- 'system-image',
26
- 'title',
27
- 'line-limit',
28
- /**
29
- * @type {"tail"}
30
- */
31
- 'truncation-mode',
32
- ];
33
- }
34
- static #template;
35
- static get template() {
36
- return (this.#template ??= $(html `
37
- <slot name="icon"></slot>
38
- <slot></slot>
39
- `));
40
- // String.raw`
41
- // <div part="root label-image-stack">
42
- // <slot name="image"></slot>
43
- // </div>
44
- // <div part="root label-title-stack">
45
- // <slot></slot>
46
- // </div>`
47
- }
48
- #shadowRoot;
49
- // #reflectScheduled = false
50
- constructor() {
51
- super();
52
- this.#shadowRoot = this.attachShadow({ mode: 'closed' });
53
- this.#shadowRoot.appendChild(document.importNode(this.constructor.template, true));
54
- }
55
- attributeChangedCallback(name, oldValue, newValue) {
56
- if (devFlags.debug)
57
- console.debug(`${LabelView.name} ⚡️ attr-change [${name}] ("${oldValue}" → "${newValue}")`);
58
- if (oldValue === newValue)
59
- return;
60
- // this.#scheduleReflect()
61
- switch (name) {
62
- // case 'system-image':
63
- // case 'title':
64
- // render(
65
- // html`${this.getAttribute('title') ? html`<span>${this.getAttribute('title')}</span>` : null}${this.getAttribute('system-image')
66
- // ? html`<image-view slot="icon" system-name="${this.getAttribute('system-image')}"></image-view>`
67
- // : null}`,
68
- // this
69
- // )
70
- // break
71
- case 'system-image':
72
- queryMorph('[slot=icon]', html `<image-view slot="icon" system-name="${newValue}"></image-view>`, this, { removeIf: !newValue });
73
- break;
74
- case 'title':
75
- queryMorph(':not([slot])', html `<span>${newValue}</span>`, this, { removeIf: !newValue });
76
- break;
77
- }
78
- }
79
- disconnectedCallback() {
80
- if (devFlags.debug)
81
- console.debug(`${LabelView.name} ⚡️ disconnect`);
82
- }
83
- connectedCallback() {
84
- if (devFlags.debug)
85
- console.debug(`${LabelView.name} ⚡️ connect`);
86
- }
87
- }
@@ -1,27 +0,0 @@
1
- /**
2
- * @summary A container view that pairs a label with a value.
3
- *
4
- * @slot — The default slot.
5
- * @slot label — Use the `slot="label"` attribute to place childen in the label block.
6
- * @slot header
7
- * @slot footer
8
- *
9
- * @csspart labeled-content-container
10
- * @csspart labeled-content-stack
11
- * @csspart labeled-content-label-stack
12
- * @csspart labeled-content-value-stack
13
- */
14
- export declare class LabeledContent extends HTMLElement {
15
- #private;
16
- static get observedAttributes(): string[];
17
- static get template(): DocumentFragment;
18
- constructor();
19
- attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null): void;
20
- disconnectedCallback(): void;
21
- connectedCallback(): void;
22
- }
23
- declare global {
24
- interface HTMLElementTagNameMap {
25
- 'labeled-content': LabeledContent;
26
- }
27
- }
@@ -1,160 +0,0 @@
1
- import { $, devFlags } from '../internal/utils';
2
- import { queryMorph } from '../morphdom';
3
- import { html } from '../tpl';
4
- /**
5
- * @summary A container view that pairs a label with a value.
6
- *
7
- * @slot — The default slot.
8
- * @slot label — Use the `slot="label"` attribute to place childen in the label block.
9
- * @slot header
10
- * @slot footer
11
- *
12
- * @csspart labeled-content-container
13
- * @csspart labeled-content-stack
14
- * @csspart labeled-content-label-stack
15
- * @csspart labeled-content-value-stack
16
- */
17
- export class LabeledContent extends HTMLElement {
18
- static get observedAttributes() {
19
- return [
20
- 'value',
21
- 'label',
22
- 'header',
23
- 'footer',
24
- /**
25
- * @type {vertical|horizontal}
26
- */
27
- 'labeled-content-style',
28
- 'format',
29
- ];
30
- }
31
- static #template;
32
- static get template() {
33
- return (this.#template ??= $(html `
34
- <div part="root labeled-content-container">
35
- <slot name="header"></slot>
36
- <div part="root labeled-content-stack">
37
- <div part="root labeled-content-label-stack">
38
- <slot name="label"></slot>
39
- </div>
40
- <div part="root labeled-content-value-stack">
41
- <slot></slot>
42
- </div>
43
- </div>
44
- <slot name="footer"></slot>
45
- </div>
46
- `));
47
- }
48
- #shadowRoot;
49
- constructor() {
50
- super();
51
- this.#shadowRoot = this.attachShadow({ mode: 'closed' });
52
- this.#shadowRoot.appendChild(document.importNode(this.constructor.template, true));
53
- }
54
- attributeChangedCallback(name, oldValue, newValue) {
55
- if (devFlags.debug)
56
- console.debug(`${LabeledContent.name} ⚡️ attr-change [${name}] ("${oldValue}" → "${newValue}")`);
57
- if (oldValue === newValue)
58
- return;
59
- switch (name) {
60
- case 'header':
61
- // if (!newValue) {
62
- // this.querySelector(':scope>[slot=header]')?.remove()
63
- // break
64
- // }
65
- // const header = this.querySelector(':scope>[slot=header]') ?? this.appendChild(Object.assign(document.createElement('header'), { slot: 'header' }))
66
- queryMorph('[slot=header]', html `<header slot="header">
67
- <label-view font="callout">
68
- <span>${newValue}</span>
69
- </label-view>
70
- </header>`, this, { removeIf: !newValue });
71
- // render(
72
- // html`<label-view font="callout">
73
- // <span>${newValue}</span>
74
- // </label-view>`,
75
- // header
76
- // )
77
- break;
78
- case 'footer':
79
- // if (!newValue) {
80
- // this.querySelector(':scope>[slot=footer]')?.remove()
81
- // break
82
- // }
83
- // const footer = this.querySelector(':scope>[slot=footer]') ?? this.appendChild(Object.assign(document.createElement('footer'), { slot: 'footer' }))
84
- queryMorph('[slot=footer]', html `<footer slot="footer">
85
- <label-view font="callout">
86
- <span>${newValue}</span>
87
- </label-view>
88
- </footer>`, this, { removeIf: !newValue });
89
- // render(
90
- // html`<label-view font="callout">
91
- // <span>${newValue}</span>
92
- // </label-view>`,
93
- // footer
94
- // )
95
- break;
96
- case 'value': {
97
- const val = this.#fmt(newValue, this.getAttribute('format'));
98
- queryMorph('label-view:not([slot])', html `<label-view>${val ? html `<span>${val}</span>` : null}</label-view>`, this);
99
- break;
100
- }
101
- case 'format': {
102
- const val = this.#fmt(this.getAttribute('value'), newValue);
103
- queryMorph('label-view:not([slot])', html `<label-view>${val ? html `<span>${val}</span>` : null}</label-view>`, this);
104
- break;
105
- }
106
- case 'label':
107
- queryMorph('[slot=label]', html `<label-view slot="label">${newValue ? html `<span>${newValue}</span>` : null}</label-view>`, this);
108
- break;
109
- }
110
- }
111
- disconnectedCallback() {
112
- if (devFlags.debug)
113
- console.debug(`${LabeledContent.name} ⚡️ disconnect`);
114
- }
115
- connectedCallback() {
116
- if (devFlags.debug)
117
- console.debug(`${LabeledContent.name} ⚡️ connect`);
118
- }
119
- // <type>:<locale>;<option>=<value>;<option>=<value>
120
- #fmt = (value, format) => {
121
- const parseFormat = (format) => {
122
- if (!format)
123
- return {
124
- type: 'text',
125
- locale: navigator.language,
126
- options: {},
127
- };
128
- const [type, locale = navigator.language, opts = {}] = format.split(':', 3), loc = new Intl.Locale(locale), options = Object.fromEntries(new URLSearchParams(opts));
129
- return {
130
- type,
131
- locale: loc.toString(),
132
- options,
133
- };
134
- };
135
- const { type, locale, options } = parseFormat(format);
136
- switch (type) {
137
- case 'currency':
138
- return new Intl.NumberFormat(locale, { style: 'currency', ...options }).format(Number(value)); // currency:en-US;currency=USD "$1,234.50"
139
- case 'percent':
140
- return new Intl.NumberFormat(locale, { style: 'percent' }).format(Number(value)); // percent:en-US "42%"
141
- case 'unit':
142
- return new Intl.NumberFormat(locale, { style: 'unit', ...options }).format(Number(value)); // percent:en-US:unit=kilometer-per-hour "50 km/h"
143
- case 'number':
144
- return new Intl.NumberFormat(locale, options).format(Number(value)); // number:en-US:notation=compact "1.2M"
145
- case 'date':
146
- return new Intl.DateTimeFormat(locale, options).format(new Date(value ?? '2000')); // { dateStyle: 'full', timeStyle: 'short' } "Saturday, July 4, 2026 at 2:30 PM"
147
- case 'relative-time': {
148
- const [number = 0, unit = 'day'] = value?.split('~') ?? [];
149
- return new Intl.RelativeTimeFormat(locale, options).format(Number(number), unit); // -1~day { numeric: 'auto' } "yesterday"
150
- }
151
- case 'list':
152
- return new Intl.ListFormat(locale, options).format(value?.split('~') ?? []); // '' { style: 'long', type: 'conjunction' } "Foo, Bar, and Baz"
153
- case 'region':
154
- return value ? new Intl.DisplayNames(locale, { type: 'region' }).of(value) : ''; // "Greece"
155
- // "Foo, Bar, and Baz"
156
- default:
157
- return value;
158
- }
159
- };
160
- }
@@ -1,15 +0,0 @@
1
- /**
2
- * @summary A container view that arranges rows of data in a single column, optionally letting the user select one or more of them.
3
- *
4
- * @attr {hidden} navigation-link-indicator-visibility — Hides accessories like right-arrow-chevron on NavigationLink buttons inside.
5
- */
6
- export declare class ListView extends HTMLElement {
7
- constructor();
8
- disconnectedCallback(): void;
9
- connectedCallback(): void;
10
- }
11
- declare global {
12
- interface HTMLElementTagNameMap {
13
- 'list-view': ListView;
14
- }
15
- }
@@ -1,22 +0,0 @@
1
- import { CleanupRegistry } from '../internal/class/cleanup-registry';
2
- import { devFlags, listActive, onoff } from '../internal/utils';
3
- /**
4
- * @summary A container view that arranges rows of data in a single column, optionally letting the user select one or more of them.
5
- *
6
- * @attr {hidden} navigation-link-indicator-visibility — Hides accessories like right-arrow-chevron on NavigationLink buttons inside.
7
- */
8
- export class ListView extends HTMLElement {
9
- constructor() {
10
- super();
11
- }
12
- disconnectedCallback() {
13
- if (devFlags.debug)
14
- console.debug(`${ListView.name} ⚡️ disconnect`);
15
- CleanupRegistry.unregister(this);
16
- }
17
- connectedCallback() {
18
- if (devFlags.debug)
19
- console.debug(`${ListView.name} ⚡️ connect`);
20
- CleanupRegistry.register(this, onoff(listActive(this), this).on());
21
- }
22
- }
@@ -1,20 +0,0 @@
1
- /**
2
- * @summary A control that opens a menu of actions.
3
- *
4
- * @slot — The default slot.
5
- * @slot label
6
- */
7
- export declare class MenuView extends HTMLElement {
8
- #private;
9
- static get observedAttributes(): string[];
10
- static get template(): DocumentFragment;
11
- constructor();
12
- attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null): void;
13
- disconnectedCallback(): void;
14
- connectedCallback(): void;
15
- }
16
- declare global {
17
- interface HTMLElementTagNameMap {
18
- 'menu-view': MenuView;
19
- }
20
- }
@@ -1,140 +0,0 @@
1
- var _a;
2
- import { CleanupRegistry } from '../internal/class/cleanup-registry';
3
- import { $, devFlags, onoff, touchGlass } from '../internal/utils';
4
- import { queryMorph } from '../morphdom';
5
- import { html } from '../tpl';
6
- /**
7
- * @summary A control that opens a menu of actions.
8
- *
9
- * @slot — The default slot.
10
- * @slot label
11
- */
12
- export class MenuView extends HTMLElement {
13
- static get observedAttributes() {
14
- return ['open', 'closing', 'label'];
15
- }
16
- static #template;
17
- static get template() {
18
- return (this.#template ??= $(html `<button type="button" part="root button menu-summary">
19
- <slot name="label"></slot>
20
- </button>
21
- <dialog part="root menu-dialog" autofocus inert>
22
- <form part="root menu-form" method="dialog" novalidate>
23
- <div part="root menu-scrollable">
24
- <slot></slot>
25
- </div>
26
- </form>
27
- </dialog>`));
28
- }
29
- #shadowRoot;
30
- #dialog;
31
- constructor() {
32
- super();
33
- this.#shadowRoot = this.attachShadow({ mode: 'closed' });
34
- this.#shadowRoot.appendChild(document.importNode(this.constructor.template, true));
35
- }
36
- attributeChangedCallback(name, oldValue, newValue) {
37
- if (devFlags.debug)
38
- console.debug(`${_a.name} ⚡️ attr-change [${name}] ("${oldValue}" → "${newValue}")`);
39
- switch (name) {
40
- case 'open':
41
- if (!this.#dialog)
42
- break;
43
- this.#dialog.inert = null === newValue;
44
- if (null === newValue && this.#dialog.open) {
45
- if (devFlags.debug)
46
- console.debug(`${_a.name} ⚡️ will-close`);
47
- this.setAttribute('closing', '');
48
- Promise.allSettled(this.#dialog.getAnimations().map(({ finished }) => finished)).then(() => {
49
- if (!this.hasAttribute('closing'))
50
- return;
51
- this.#dialog?.close();
52
- this.removeAttribute('closing');
53
- });
54
- }
55
- if ('' === newValue && !this.#dialog.open) {
56
- if (devFlags.debug)
57
- console.debug(`${_a.name} ⚡️ will-open`);
58
- this.removeAttribute('closing');
59
- const form = this.#shadowRoot.querySelector('form');
60
- form.scrollTop = 0;
61
- this.#dialog.showModal();
62
- }
63
- break;
64
- case 'label':
65
- queryMorph('[slot=label]', html `<label-view slot="label">${newValue ? html `<span>${newValue}</span>` : null}</label-view>`, this);
66
- break;
67
- }
68
- }
69
- disconnectedCallback() {
70
- if (devFlags.debug)
71
- console.debug(`${_a.name} ⚡️ disconnect`);
72
- const summaryPart = this.#shadowRoot.querySelector('[part*=menu-summary]'), dialogPart = this.#shadowRoot.querySelector('[part*=menu-dialog]');
73
- summaryPart?.style.removeProperty('anchor-name'); //$.prop('anchor-name', null, summaryPart)
74
- dialogPart?.style.removeProperty('position-anchor'); //$.prop('position-anchor', null, dialogPart)
75
- CleanupRegistry.unregister(this);
76
- }
77
- connectedCallback() {
78
- if (devFlags.debug)
79
- console.debug(`${_a.name} ⚡️ connect`);
80
- this.#dialog = this.#shadowRoot.querySelector('dialog') ?? undefined;
81
- const trigger = this.#shadowRoot.querySelector('button') ?? undefined;
82
- CleanupRegistry.register(this, onoff('click', this.#handleTriggerClick, trigger).on());
83
- CleanupRegistry.register(this, onoff([
84
- { types: 'click', listener: this.#handleDialogClick },
85
- { types: 'close', listener: this.#handleDialogClose },
86
- { types: 'cancel', listener: this.#handleDialogCancel },
87
- ], this.#dialog).on());
88
- CleanupRegistry.register(this, onoff(touchGlass(this, (t) => t, ({ target }) => {
89
- if (!(target instanceof HTMLElement))
90
- return true;
91
- if (target.matches('menu-view'))
92
- return false;
93
- if (!target.closest('menu-view[open]'))
94
- return false;
95
- return true;
96
- }), this).on());
97
- const newAnchorName = `--menu-view-${self.crypto.randomUUID()}`;
98
- const summaryPart = this.#shadowRoot.querySelector('[part*=menu-summary]'), dialogPart = this.#shadowRoot.querySelector('[part*=menu-dialog]');
99
- summaryPart?.style.setProperty('anchor-name', newAnchorName, 'important'); // override unset:all // $.prop('anchor-name', newAnchorName, summaryPart, 'important') //
100
- dialogPart?.style.setProperty('position-anchor', newAnchorName); // $.prop('position-anchor', newAnchorName, dialogPart) //
101
- }
102
- #handleDialogClick = ({ type, target }) => {
103
- if (devFlags.debug)
104
- console.debug(`${_a.name} ⚡️ ${type}`);
105
- if (!(target instanceof HTMLElement))
106
- return;
107
- if (target.matches('dialog'))
108
- return this.toggleAttribute('open', false); // click outside
109
- target.scrollIntoView({
110
- behavior: self.matchMedia('(prefers-reduced-motion: no-preference)').matches ? 'smooth' : 'instant',
111
- block: 'nearest',
112
- inline: 'nearest',
113
- });
114
- if (!target.closest('button'))
115
- return;
116
- // TODO: Handle btns this.toggleAttribute('open', false)
117
- this.toggleAttribute('open', false);
118
- // event.stopPropagation() //NOTE: add this only if not nested, disposes all nicely if ommited
119
- };
120
- #handleTriggerClick = (evt) => {
121
- if (devFlags.debug)
122
- console.debug(`${_a.name} ⚡️ ${evt?.type}`);
123
- this.toggleAttribute('open', true);
124
- };
125
- // intercept to modify open attr
126
- #handleDialogCancel = (evt) => {
127
- if (devFlags.debug)
128
- console.debug(`${_a.name} ⚡️ ${evt?.type}`);
129
- if (!evt.cancelable)
130
- return;
131
- evt.preventDefault();
132
- this.toggleAttribute('open', false);
133
- };
134
- #handleDialogClose = (evt) => {
135
- if (devFlags.debug)
136
- console.debug(`${_a.name} ⚡️ ${evt?.type}`);
137
- this.toggleAttribute('open', this.#shadowRoot.querySelector('dialog')?.open ?? false);
138
- };
139
- }
140
- _a = MenuView;
@@ -1,18 +0,0 @@
1
- /**
2
- *
3
- * @attr {grouped} background-style
4
- * @attr {boolean} padding
5
- * @attr {boolean} navigation-bar-auto-hide
6
- *
7
- */
8
- export declare class NavigationLargeTitle extends HTMLElement {
9
- #private;
10
- constructor();
11
- disconnectedCallback(): void;
12
- connectedCallback(): void;
13
- }
14
- declare global {
15
- interface HTMLElementTagNameMap {
16
- 'navigation-large-title': NavigationLargeTitle;
17
- }
18
- }