@vonage/vivid 3.52.0 → 3.53.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 (289) hide show
  1. package/README.md +1 -1
  2. package/accordion/index.cjs +1 -1
  3. package/accordion/index.js +1 -1
  4. package/accordion-item/index.cjs +1 -1
  5. package/accordion-item/index.js +1 -1
  6. package/alert/index.cjs +3 -3
  7. package/alert/index.js +3 -3
  8. package/audio-player/index.cjs +3 -3
  9. package/audio-player/index.js +3 -3
  10. package/avatar/index.cjs +1 -1
  11. package/avatar/index.js +1 -1
  12. package/badge/index.cjs +1 -1
  13. package/badge/index.js +1 -1
  14. package/banner/index.cjs +2 -2
  15. package/banner/index.js +2 -2
  16. package/breadcrumb-item/index.cjs +1 -1
  17. package/breadcrumb-item/index.js +1 -1
  18. package/button/index.cjs +2 -2
  19. package/button/index.js +2 -2
  20. package/card/index.cjs +2 -2
  21. package/card/index.js +2 -2
  22. package/checkbox/index.cjs +3 -2
  23. package/checkbox/index.js +3 -2
  24. package/combobox/index.cjs +5 -5
  25. package/combobox/index.js +5 -5
  26. package/custom-elements.json +717 -4
  27. package/data-grid/index.cjs +1 -1
  28. package/data-grid/index.js +1 -1
  29. package/date-picker/index.cjs +7 -6
  30. package/date-picker/index.js +7 -6
  31. package/date-range-picker/index.cjs +7 -6
  32. package/date-range-picker/index.js +7 -6
  33. package/dial-pad/index.cjs +33 -0
  34. package/dial-pad/index.js +31 -0
  35. package/dialog/index.cjs +4 -4
  36. package/dialog/index.js +4 -4
  37. package/divider/index.cjs +1 -1
  38. package/divider/index.js +1 -1
  39. package/elevation/index.cjs +1 -1
  40. package/elevation/index.js +1 -1
  41. package/empty-state/index.cjs +2 -2
  42. package/empty-state/index.js +2 -2
  43. package/fab/index.cjs +2 -2
  44. package/fab/index.js +2 -2
  45. package/file-picker/index.cjs +4 -3
  46. package/file-picker/index.js +4 -3
  47. package/header/index.cjs +2 -2
  48. package/header/index.js +2 -2
  49. package/icon/index.cjs +1 -1
  50. package/icon/index.js +1 -1
  51. package/index.cjs +132 -122
  52. package/index.js +46 -43
  53. package/layout/index.cjs +1 -1
  54. package/layout/index.js +1 -1
  55. package/lib/components.d.ts +2 -0
  56. package/lib/dial-pad/definition.d.ts +3 -0
  57. package/lib/dial-pad/dial-pad.d.ts +14 -0
  58. package/lib/dial-pad/dial-pad.template.d.ts +4 -0
  59. package/lib/dial-pad/locale.d.ts +18 -0
  60. package/lib/enums.d.ts +6 -0
  61. package/lib/text-anchor/definition.d.ts +1 -0
  62. package/lib/text-anchor/text-anchor.d.ts +5 -0
  63. package/lib/video-player/definition.d.ts +3 -0
  64. package/lib/video-player/locale.d.ts +1 -0
  65. package/lib/video-player/video-player.d.ts +17 -0
  66. package/lib/video-player/video-player.template.d.ts +4 -0
  67. package/listbox/index.cjs +2 -2
  68. package/listbox/index.js +2 -2
  69. package/locales/en-GB.cjs +30 -0
  70. package/locales/en-GB.js +30 -0
  71. package/locales/en-US.cjs +198 -0
  72. package/locales/en-US.js +198 -0
  73. package/locales/ja-JP.cjs +197 -0
  74. package/locales/ja-JP.js +197 -0
  75. package/locales/zh-CN.cjs +199 -0
  76. package/locales/zh-CN.js +199 -0
  77. package/menu/index.cjs +6 -6
  78. package/menu/index.js +6 -6
  79. package/menu-item/index.cjs +2 -2
  80. package/menu-item/index.js +2 -2
  81. package/nav/index.cjs +1 -1
  82. package/nav/index.js +1 -1
  83. package/nav-disclosure/index.cjs +2 -2
  84. package/nav-disclosure/index.js +2 -2
  85. package/nav-item/index.cjs +2 -2
  86. package/nav-item/index.js +2 -2
  87. package/note/index.cjs +2 -2
  88. package/note/index.js +2 -2
  89. package/number-field/index.cjs +5 -4
  90. package/number-field/index.js +5 -4
  91. package/option/index.cjs +2 -2
  92. package/option/index.js +2 -2
  93. package/package.json +1 -1
  94. package/pagination/index.cjs +3 -3
  95. package/pagination/index.js +3 -3
  96. package/popup/index.cjs +4 -4
  97. package/popup/index.js +4 -4
  98. package/progress/index.cjs +1 -1
  99. package/progress/index.js +1 -1
  100. package/progress-ring/index.cjs +1 -1
  101. package/progress-ring/index.js +1 -1
  102. package/radio/index.cjs +1 -1
  103. package/radio/index.js +1 -1
  104. package/radio-group/index.cjs +1 -1
  105. package/radio-group/index.js +1 -1
  106. package/range-slider/index.cjs +2 -2
  107. package/range-slider/index.js +2 -2
  108. package/select/index.cjs +7 -6
  109. package/select/index.js +7 -6
  110. package/selectable-box/index.cjs +5 -4
  111. package/selectable-box/index.js +5 -4
  112. package/shared/applyMixinsWithObservables.cjs +15 -0
  113. package/shared/applyMixinsWithObservables.js +13 -0
  114. package/shared/definition.cjs +1 -1
  115. package/shared/definition.js +1 -1
  116. package/shared/definition11.cjs +3 -3
  117. package/shared/definition11.js +3 -3
  118. package/shared/definition14.cjs +2 -2
  119. package/shared/definition14.js +2 -2
  120. package/shared/definition15.cjs +8 -9
  121. package/shared/definition15.js +8 -9
  122. package/shared/definition16.cjs +3 -3
  123. package/shared/definition16.js +3 -3
  124. package/shared/definition17.cjs +2 -2
  125. package/shared/definition17.js +3 -3
  126. package/shared/definition18.cjs +3 -3
  127. package/shared/definition18.js +3 -3
  128. package/shared/definition19.cjs +3 -3
  129. package/shared/definition19.js +3 -3
  130. package/shared/definition20.cjs +186 -227
  131. package/shared/definition20.js +181 -222
  132. package/shared/definition21.cjs +264 -67
  133. package/shared/definition21.js +263 -65
  134. package/shared/definition22.cjs +66 -57
  135. package/shared/definition22.js +64 -56
  136. package/shared/definition23.cjs +42 -76
  137. package/shared/definition23.js +41 -75
  138. package/shared/definition24.cjs +70 -2402
  139. package/shared/definition24.js +69 -2401
  140. package/shared/definition25.cjs +2402 -46
  141. package/shared/definition25.js +2401 -45
  142. package/shared/definition26.cjs +63 -30
  143. package/shared/definition26.js +62 -29
  144. package/shared/definition27.cjs +28 -56
  145. package/shared/definition27.js +27 -55
  146. package/shared/definition28.cjs +35 -881
  147. package/shared/definition28.js +34 -879
  148. package/shared/definition29.cjs +893 -60
  149. package/shared/definition29.js +893 -61
  150. package/shared/definition30.cjs +68 -86
  151. package/shared/definition30.js +67 -85
  152. package/shared/definition31.cjs +86 -21
  153. package/shared/definition31.js +86 -21
  154. package/shared/definition32.cjs +24 -12
  155. package/shared/definition32.js +23 -11
  156. package/shared/definition33.cjs +11 -50
  157. package/shared/definition33.js +10 -49
  158. package/shared/definition34.cjs +26 -515
  159. package/shared/definition34.js +26 -515
  160. package/shared/definition35.cjs +448 -194
  161. package/shared/definition35.js +448 -192
  162. package/shared/definition36.cjs +256 -202
  163. package/shared/definition36.js +253 -201
  164. package/shared/definition37.cjs +204 -65
  165. package/shared/definition37.js +203 -63
  166. package/shared/definition38.cjs +63 -57
  167. package/shared/definition38.js +60 -55
  168. package/shared/definition39.cjs +65 -432
  169. package/shared/definition39.js +64 -431
  170. package/shared/definition4.cjs +2 -2
  171. package/shared/definition4.js +2 -2
  172. package/shared/definition40.cjs +441 -34
  173. package/shared/definition40.js +438 -31
  174. package/shared/definition41.cjs +34 -576
  175. package/shared/definition41.js +33 -575
  176. package/shared/definition42.cjs +531 -654
  177. package/shared/definition42.js +531 -654
  178. package/shared/definition43.cjs +690 -114
  179. package/shared/definition43.js +689 -113
  180. package/shared/definition44.cjs +124 -79
  181. package/shared/definition44.js +122 -77
  182. package/shared/definition45.cjs +78 -520
  183. package/shared/definition45.js +77 -518
  184. package/shared/definition46.cjs +520 -119
  185. package/shared/definition46.js +518 -118
  186. package/shared/definition47.cjs +118 -135
  187. package/shared/definition47.js +117 -134
  188. package/shared/definition48.cjs +151 -19
  189. package/shared/definition48.js +150 -18
  190. package/shared/definition49.cjs +21 -84
  191. package/shared/definition49.js +20 -83
  192. package/shared/definition5.cjs +1 -1
  193. package/shared/definition5.js +1 -1
  194. package/shared/definition50.cjs +52 -505
  195. package/shared/definition50.js +51 -504
  196. package/shared/definition51.cjs +526 -28
  197. package/shared/definition51.js +525 -27
  198. package/shared/definition52.cjs +28 -123
  199. package/shared/definition52.js +26 -122
  200. package/shared/definition53.cjs +110 -309
  201. package/shared/definition53.js +110 -308
  202. package/shared/definition54.cjs +255 -271
  203. package/shared/definition54.js +255 -271
  204. package/shared/definition55.cjs +262 -791
  205. package/shared/definition55.js +261 -790
  206. package/shared/definition56.cjs +818 -107
  207. package/shared/definition56.js +817 -106
  208. package/shared/definition57.cjs +85 -55
  209. package/shared/definition57.js +84 -54
  210. package/shared/definition58.cjs +125 -72
  211. package/shared/definition58.js +124 -71
  212. package/shared/definition59.cjs +72 -285
  213. package/shared/definition59.js +73 -286
  214. package/shared/definition6.cjs +1 -1
  215. package/shared/definition6.js +1 -1
  216. package/shared/definition60.cjs +298 -39
  217. package/shared/definition60.js +297 -38
  218. package/shared/definition61.cjs +65739 -1688
  219. package/shared/definition61.js +65738 -1687
  220. package/shared/definition62.cjs +50 -0
  221. package/shared/definition62.js +46 -0
  222. package/shared/definition63.cjs +1828 -0
  223. package/shared/definition63.js +1824 -0
  224. package/shared/definition7.cjs +2 -2
  225. package/shared/definition7.js +2 -2
  226. package/shared/definition8.cjs +2 -2
  227. package/shared/definition8.js +2 -2
  228. package/shared/definition9.cjs +1 -1
  229. package/shared/definition9.js +1 -1
  230. package/shared/enums.cjs +8 -0
  231. package/shared/enums.js +8 -1
  232. package/shared/index2.cjs +66 -37
  233. package/shared/index2.js +66 -37
  234. package/shared/key-codes2.js +1 -1
  235. package/shared/listbox.cjs +1 -1
  236. package/shared/listbox.js +1 -1
  237. package/shared/localization/Locale.d.ts +4 -0
  238. package/shared/patterns/form-elements/form-elements.d.ts +2 -3
  239. package/shared/presentationDate.cjs +16 -5
  240. package/shared/presentationDate.js +16 -5
  241. package/shared/text-anchor.cjs +6 -0
  242. package/shared/text-anchor.js +6 -0
  243. package/shared/text-anchor.template.cjs +6 -1
  244. package/shared/text-anchor.template.js +6 -1
  245. package/shared/text-field.cjs +1 -1
  246. package/shared/text-field.js +1 -1
  247. package/shared/utils/applyMixinsWithObservables.d.ts +1 -0
  248. package/side-drawer/index.cjs +1 -1
  249. package/side-drawer/index.js +1 -1
  250. package/slider/index.cjs +1 -1
  251. package/slider/index.js +1 -1
  252. package/split-button/index.cjs +2 -2
  253. package/split-button/index.js +2 -2
  254. package/style.css +1 -0
  255. package/styles/core/all.css +1 -1
  256. package/styles/core/theme.css +1 -1
  257. package/styles/core/typography.css +1 -1
  258. package/styles/tokens/theme-dark.css +4 -4
  259. package/styles/tokens/theme-light.css +4 -4
  260. package/styles/tokens/vivid-2-compat.css +1 -1
  261. package/switch/index.cjs +2 -2
  262. package/switch/index.js +2 -2
  263. package/tab/index.cjs +2 -2
  264. package/tab/index.js +2 -2
  265. package/tab-panel/index.cjs +1 -1
  266. package/tab-panel/index.js +1 -1
  267. package/tabs/index.cjs +4 -4
  268. package/tabs/index.js +4 -4
  269. package/tag/index.cjs +2 -2
  270. package/tag/index.js +2 -2
  271. package/tag-group/index.cjs +1 -1
  272. package/tag-group/index.js +1 -1
  273. package/text-area/index.cjs +4 -3
  274. package/text-area/index.js +4 -3
  275. package/text-field/index.cjs +4 -3
  276. package/text-field/index.js +4 -3
  277. package/time-picker/index.cjs +8 -7
  278. package/time-picker/index.js +8 -7
  279. package/toggletip/index.cjs +5 -5
  280. package/toggletip/index.js +5 -5
  281. package/tooltip/index.cjs +5 -5
  282. package/tooltip/index.js +5 -5
  283. package/tree-item/index.cjs +2 -2
  284. package/tree-item/index.js +2 -2
  285. package/tree-view/index.cjs +1 -1
  286. package/tree-view/index.js +1 -1
  287. package/video-player/index.cjs +17 -0
  288. package/video-player/index.js +15 -0
  289. package/vivid.api.json +311 -0
@@ -1,79 +1,276 @@
1
1
  'use strict';
2
2
 
3
3
  const index = require('./index.cjs');
4
- const aria = require('./aria.cjs');
4
+ const definition$2 = require('./definition27.cjs');
5
+ const definition$1 = require('./definition11.cjs');
6
+ const definition = require('./definition62.cjs');
7
+ require('./affix.cjs');
8
+ require('./index2.cjs');
9
+ const localized = require('./localized.cjs');
10
+ const applyMixins = require('./apply-mixins.cjs');
11
+ const icon$1 = require('./icon.cjs');
12
+ const when = require('./when.cjs');
13
+ const slotted = require('./slotted.cjs');
5
14
  const classNames = require('./class-names.cjs');
6
15
 
7
- /**
8
- * Divider roles
9
- * @public
10
- */
11
- const DividerRole = {
12
- /**
13
- * The divider semantically separates content
14
- */
15
- separator: "separator",
16
- /**
17
- * The divider has no semantic value and is for visual presentation only.
18
- */
19
- presentation: "presentation",
20
- };
21
-
22
- /**
23
- * A Divider Custom HTML Element.
24
- * Implements the {@link https://www.w3.org/TR/wai-aria-1.1/#separator | ARIA separator } or {@link https://www.w3.org/TR/wai-aria-1.1/#presentation | ARIA presentation}.
25
- *
26
- * @public
27
- */
28
- let Divider$1 = class Divider extends index.FoundationElement {
29
- constructor() {
30
- super(...arguments);
31
- /**
32
- * The role of the element.
33
- *
34
- * @public
35
- * @remarks
36
- * HTML Attribute: role
37
- */
38
- this.role = DividerRole.separator;
39
- /**
40
- * The orientation of the divider.
41
- *
42
- * @public
43
- * @remarks
44
- * HTML Attribute: orientation
45
- */
46
- this.orientation = aria.Orientation.horizontal;
47
- }
48
- };
49
- index.__decorate([
50
- index.attr
51
- ], Divider$1.prototype, "role", void 0);
52
- index.__decorate([
53
- index.attr
54
- ], Divider$1.prototype, "orientation", void 0);
16
+ const dialogPolyfillStyles = "dialog{position:absolute;left:0;right:0;width:-moz-fit-content;width:-webkit-fit-content;width:fit-content;height:-moz-fit-content;height:-webkit-fit-content;height:fit-content;margin:auto;border:solid;padding:1em;background:white;color:#000;display:block}dialog:not([open]){display:none}dialog+.backdrop{position:fixed;inset:0;background:rgba(0,0,0,.1)}._dialog_overlay{position:fixed;inset:0}dialog.fixed{position:fixed;top:50%;transform:translateY(-50%)}\n";
55
17
 
56
- const styles = ":host{display:block}.base{display:block;background-color:var(--vvd-color-neutral-200)}.base:not(.vertical){block-size:1px;inline-size:100%}.base.vertical{block-size:100%;inline-size:1px}\n";
18
+ const styles = ".base{white-space:initial;box-sizing:border-box;padding:0;border:none;border-radius:8px;background-color:transparent;color:var(--vvd-color-canvas-text);max-block-size:var(--dialog-max-block-size, calc(100vh - 64px));max-inline-size:var(--dialog-max-inline-size, var(--_dialog-default-max-inline-size));min-inline-size:var(--dialog-min-inline-size, 280px)}@media not all and (width >= 600px){.base{--_dialog-default-max-inline-size: 90vw}}@media (width >= 600px){.base{--_dialog-default-max-inline-size: 560px}}.base:not(.modal){z-index:var(--dialog-z-index, 1)}.base.modal{position:fixed;box-shadow:0 4px 20px #00000059}.base.modal::backdrop{background-color:var(--vvd-color-canvas-text, currentColor);opacity:.5}.base:focus-visible{box-shadow:inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:2px solid var(--focus-stroke-color, var(--vvd-color-canvas-text));outline-offset:calc(-2px - var(--focus-inset, 0px))}.main-wrapper{display:flex;box-sizing:border-box;flex-direction:column;gap:24px;padding-block:24px}.main-wrapper>*{box-sizing:border-box}.header{display:grid;align-items:flex-start;justify-content:space-between;inline-size:100%;padding-inline:24px}.base:not(.icon-placement-side) .header{grid-template-columns:1fr auto;grid-template-rows:auto auto auto}.base:not(.icon-placement-side) .header .icon{font-size:calc(1px*(32 + 4*clamp(-1,var(--vvd-size-density, 0),2)));grid-column:1/2;grid-row:1/2;line-height:1;margin-block-end:calc(1px*(24 + 4*clamp(-1,var(--vvd-size-density, 0),2)))}.base.icon-placement-side .header{grid-template-columns:auto 1fr auto;grid-template-rows:auto auto}.base.icon-placement-side .header .icon{font-size:calc(1px*(28 + 4*clamp(-1,var(--vvd-size-density, 0),2)))}.base.icon-placement-side .header ::slotted(*),.base.icon-placement-side .header .icon{grid-column:1/2;grid-row:1/-1;margin-inline-end:calc(1px*(32 + 4*clamp(-1,var(--vvd-size-density, 0),2))/2)}.header.border{position:relative}.header.border:after{position:absolute;bottom:-24px;left:0;background-color:var(--vvd-color-neutral-200);block-size:1px;content:\"\";inline-size:100%}.base.hide-body .header.border:after{content:none}.body:not(.full-width){padding-inline:24px}.hide-body .body{display:none}.footer{display:flex;align-items:center;justify-content:space-between;gap:24px;padding-inline:24px}.hide-footer .footer{display:none}.footer .actions{display:flex;align-self:flex-end;gap:8px}.dismiss-button{flex-shrink:0;grid-column:-2/-1;grid-row:1/-1;margin-block-start:-8px;margin-inline:4px -8px}.headline{font:var(--vvd-typography-heading-4)}.subtitle{font:var(--vvd-typography-base)}slot[name=main]{display:block;overflow:hidden auto;max-width:inherit;max-height:inherit;border-radius:inherit}\n";
57
19
 
58
- class Divider extends Divider$1 {
20
+ var __defProp = Object.defineProperty;
21
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
22
+ var __decorateClass = (decorators, target, key, kind) => {
23
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
24
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
25
+ if (decorator = decorators[i])
26
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
27
+ if (kind && result)
28
+ __defProp(target, key, result);
29
+ return result;
30
+ };
31
+ const isDialogSupported = Boolean(
32
+ window.HTMLDialogElement && window.HTMLDialogElement.prototype.showModal
33
+ );
34
+ let dialogPolyfill;
35
+ (async () => {
36
+ if (!isDialogSupported) {
37
+ delete window.HTMLDialogElement;
38
+ dialogPolyfill = await Promise.resolve().then(() => require('./dialog-polyfill.esm.cjs'));
39
+ }
40
+ })();
41
+ class Dialog extends index.FoundationElement {
42
+ constructor() {
43
+ super(...arguments);
44
+ this.open = false;
45
+ this.fullWidthBody = false;
46
+ this.ariaLabel = null;
47
+ this.dismissButtonAriaLabel = null;
48
+ this.noLightDismiss = false;
49
+ this.#modal = false;
50
+ this.#handleScrimClick = (event) => {
51
+ if (event.target !== this.#dialog || this.noLightDismiss) {
52
+ return;
53
+ }
54
+ const rect = this.#dialog.getBoundingClientRect();
55
+ const clickedInDialog = rect.top <= event.clientY && event.clientY <= rect.top + rect.height && rect.left <= event.clientX && event.clientX <= rect.left + rect.width;
56
+ this.open = clickedInDialog;
57
+ };
58
+ this.#handleInternalFormSubmit = (event) => {
59
+ if (event.target.method !== "dialog") {
60
+ return;
61
+ }
62
+ this.open = false;
63
+ };
64
+ }
65
+ #modal;
66
+ set returnValue(value) {
67
+ this.#dialog.returnValue = value;
68
+ }
69
+ get returnValue() {
70
+ return this.#dialog?.returnValue;
71
+ }
72
+ /**
73
+ * @internal
74
+ */
75
+ get modal() {
76
+ return this.#modal;
77
+ }
78
+ #dialogElement;
79
+ get #dialog() {
80
+ if (!this.#dialogElement) {
81
+ this.#dialogElement = this.shadowRoot.querySelector(
82
+ "dialog"
83
+ );
84
+ if (this.#dialogElement) {
85
+ this.#dialogElement.open = this.open;
86
+ if (dialogPolyfill) {
87
+ dialogPolyfill.registerDialog(this.#dialogElement);
88
+ }
89
+ }
90
+ }
91
+ return this.#dialogElement;
92
+ }
93
+ /**
94
+ * @internal
95
+ */
96
+ openChanged(oldValue, newValue) {
97
+ if (oldValue === void 0) {
98
+ return;
99
+ }
100
+ if (!newValue) {
101
+ this.close();
102
+ } else {
103
+ if (this.#dialog) {
104
+ this.#dialog.open = true;
105
+ }
106
+ }
107
+ }
108
+ #handleScrimClick;
109
+ #handleInternalFormSubmit;
110
+ close() {
111
+ if (this.#dialog.open) {
112
+ this.#dialog.close();
113
+ this.$emit("close", this.returnValue, { bubbles: false });
114
+ }
115
+ this.open = false;
116
+ this.#handleModal(false);
117
+ }
118
+ #handleModal(show) {
119
+ this.#modal = show;
120
+ this.#dialog.toggleAttribute("aria-modal", show);
121
+ this.#dialog.classList.toggle("modal", show);
122
+ }
123
+ show() {
124
+ this.#dialog.show();
125
+ this.open = true;
126
+ }
127
+ showModal() {
128
+ this.#handleModal(true);
129
+ this.#dialog.showModal();
130
+ this.open = true;
131
+ }
132
+ connectedCallback() {
133
+ super.connectedCallback();
134
+ this.#dialog.addEventListener("mousedown", this.#handleScrimClick);
135
+ this.#dialog.addEventListener("submit", this.#handleInternalFormSubmit);
136
+ }
137
+ disconnectedCallback() {
138
+ super.disconnectedCallback();
139
+ this.#dialog.removeEventListener("mousedown", this.#handleScrimClick);
140
+ this.#dialog.removeEventListener("submit", this.#handleInternalFormSubmit);
141
+ }
59
142
  }
143
+ __decorateClass([
144
+ index.attr({ mode: "boolean" })
145
+ ], Dialog.prototype, "open", 2);
146
+ __decorateClass([
147
+ index.attr
148
+ ], Dialog.prototype, "icon", 2);
149
+ __decorateClass([
150
+ index.attr({ attribute: "icon-placement" })
151
+ ], Dialog.prototype, "iconPlacement", 2);
152
+ __decorateClass([
153
+ index.attr
154
+ ], Dialog.prototype, "subtitle", 2);
155
+ __decorateClass([
156
+ index.attr
157
+ ], Dialog.prototype, "headline", 2);
158
+ __decorateClass([
159
+ index.attr({ attribute: "full-width-body", mode: "boolean" })
160
+ ], Dialog.prototype, "fullWidthBody", 2);
161
+ __decorateClass([
162
+ index.attr({ attribute: "aria-label" })
163
+ ], Dialog.prototype, "ariaLabel", 2);
164
+ __decorateClass([
165
+ index.attr({ attribute: "dismiss-button-aria-label" })
166
+ ], Dialog.prototype, "dismissButtonAriaLabel", 2);
167
+ __decorateClass([
168
+ index.attr({ attribute: "no-light-dismiss", mode: "boolean" })
169
+ ], Dialog.prototype, "noLightDismiss", 2);
170
+ __decorateClass([
171
+ index.observable
172
+ ], Dialog.prototype, "bodySlottedContent", 2);
173
+ __decorateClass([
174
+ index.observable
175
+ ], Dialog.prototype, "footerSlottedContent", 2);
176
+ __decorateClass([
177
+ index.observable
178
+ ], Dialog.prototype, "actionItemsSlottedContent", 2);
179
+ applyMixins.applyMixins(Dialog, localized.Localized);
60
180
 
61
- const getClasses = ({ orientation }) => classNames.classNames("base", [`${orientation}`, Boolean(orientation)]);
62
- const DividerTemplate = () => index.html` <span
63
- class="${getClasses}"
64
- orientation="${(x) => x.orientation}"
65
- role="${(x) => x.role}"
66
- ></span>`;
181
+ const getClasses = ({
182
+ iconPlacement,
183
+ bodySlottedContent,
184
+ footerSlottedContent,
185
+ actionItemsSlottedContent
186
+ }) => classNames.classNames(
187
+ "base",
188
+ [`icon-placement-${iconPlacement}`, Boolean(iconPlacement)],
189
+ ["hide-body", !bodySlottedContent?.length],
190
+ [
191
+ "hide-footer",
192
+ !(footerSlottedContent?.length || actionItemsSlottedContent?.length)
193
+ ]
194
+ );
195
+ function icon(iconTag) {
196
+ return index.html`
197
+ <${iconTag} class="icon" name="${(x) => x.icon}"></${iconTag}>
198
+ `;
199
+ }
200
+ function headline() {
201
+ return index.html` <div class="headline">${(x) => x.headline}</div> `;
202
+ }
203
+ function subtitle() {
204
+ return index.html` <div class="subtitle">${(x) => x.subtitle}</div> `;
205
+ }
206
+ function renderDismissButton(buttonTag) {
207
+ return index.html`
208
+ <${buttonTag}
209
+ aria-label="${(x) => x.dismissButtonAriaLabel || x.locale.dialog.dismissButtonLabel}"
210
+ size="condensed"
211
+ class="dismiss-button"
212
+ icon="close-line"
213
+ @click="${(x) => x.open = false}"
214
+ ></${buttonTag}>`;
215
+ }
216
+ function handleEscapeKey(dialog, event) {
217
+ if (event.key === "Escape" && dialog.modal) {
218
+ dialog.open = false;
219
+ }
220
+ return true;
221
+ }
222
+ const DialogTemplate = (context) => {
223
+ const elevationTag = context.tagFor(definition.Elevation);
224
+ const iconTag = context.tagFor(icon$1.Icon);
225
+ const buttonTag = context.tagFor(definition$1.Button);
226
+ return index.html`
227
+ <${elevationTag} dp="8">
228
+ <dialog class="${getClasses}"
229
+ @keydown="${(x, c) => handleEscapeKey(x, c.event)}"
230
+ @cancel="${(_, c) => c.event.preventDefault()}"
231
+ returnValue="${(x) => x.returnValue}"
232
+ aria-label="${(x) => x.ariaLabel}"
233
+ >
234
+ <slot name="main">
235
+ <div class="main-wrapper">
236
+ <div class="header ${(x) => x.subtitle ? "border" : ""}">
237
+ <slot name="graphic">
238
+ ${when.when((x) => x.icon, icon(iconTag))}
239
+ </slot>
240
+ ${when.when((x) => x.headline, headline())}
241
+ ${when.when((x) => x.subtitle, subtitle())}
242
+ ${renderDismissButton(buttonTag)}
243
+ </div>
244
+ <div class="body ${(x) => x.fullWidthBody ? "full-width" : ""}" >
245
+ <slot name="body" ${slotted.slotted("bodySlottedContent")}></slot>
246
+ </div>
247
+ <div class="footer">
248
+ <div>
249
+ <slot name="footer" ${slotted.slotted("footerSlottedContent")}></slot>
250
+ </div>
251
+ <div class="actions">
252
+ <slot name="action-items" ${slotted.slotted("actionItemsSlottedContent")}></slot>
253
+ </div>
254
+ </div>
255
+ </div>
256
+ </slot>
257
+ </dialog>
258
+ </${elevationTag}>`;
259
+ };
67
260
 
68
- const dividerDefinition = Divider.compose({
69
- baseName: "divider",
70
- template: DividerTemplate,
71
- styles
261
+ const dialogDefinition = Dialog.compose({
262
+ baseName: "dialog",
263
+ template: DialogTemplate,
264
+ styles: isDialogSupported ? [styles] : [styles, dialogPolyfillStyles]
72
265
  });
73
- const dividerRegistries = [dividerDefinition()];
74
- const registerDivider = index.registerFactory(dividerRegistries);
266
+ const dialogRegistries = [
267
+ dialogDefinition(),
268
+ ...definition$2.iconRegistries,
269
+ ...definition$1.buttonRegistries,
270
+ ...definition.elevationRegistries
271
+ ];
272
+ const registerDialog = index.registerFactory(dialogRegistries);
75
273
 
76
- exports.Divider = Divider;
77
- exports.dividerDefinition = dividerDefinition;
78
- exports.dividerRegistries = dividerRegistries;
79
- exports.registerDivider = registerDivider;
274
+ exports.dialogDefinition = dialogDefinition;
275
+ exports.dialogRegistries = dialogRegistries;
276
+ exports.registerDialog = registerDialog;
@@ -1,74 +1,272 @@
1
- import { F as FoundationElement, _ as __decorate, a as attr, h as html, r as registerFactory } from './index.js';
2
- import { O as Orientation } from './aria.js';
1
+ import { a as attr, F as FoundationElement, o as observable, h as html, r as registerFactory } from './index.js';
2
+ import { a as iconRegistries } from './definition27.js';
3
+ import { B as Button, a as buttonRegistries } from './definition11.js';
4
+ import { E as Elevation, e as elevationRegistries } from './definition62.js';
5
+ import './affix.js';
6
+ import './index2.js';
7
+ import { L as Localized } from './localized.js';
8
+ import { a as applyMixins } from './apply-mixins.js';
9
+ import { I as Icon } from './icon.js';
10
+ import { w as when } from './when.js';
11
+ import { s as slotted } from './slotted.js';
3
12
  import { c as classNames } from './class-names.js';
4
13
 
5
- /**
6
- * Divider roles
7
- * @public
8
- */
9
- const DividerRole = {
10
- /**
11
- * The divider semantically separates content
12
- */
13
- separator: "separator",
14
- /**
15
- * The divider has no semantic value and is for visual presentation only.
16
- */
17
- presentation: "presentation",
18
- };
19
-
20
- /**
21
- * A Divider Custom HTML Element.
22
- * Implements the {@link https://www.w3.org/TR/wai-aria-1.1/#separator | ARIA separator } or {@link https://www.w3.org/TR/wai-aria-1.1/#presentation | ARIA presentation}.
23
- *
24
- * @public
25
- */
26
- let Divider$1 = class Divider extends FoundationElement {
27
- constructor() {
28
- super(...arguments);
29
- /**
30
- * The role of the element.
31
- *
32
- * @public
33
- * @remarks
34
- * HTML Attribute: role
35
- */
36
- this.role = DividerRole.separator;
37
- /**
38
- * The orientation of the divider.
39
- *
40
- * @public
41
- * @remarks
42
- * HTML Attribute: orientation
43
- */
44
- this.orientation = Orientation.horizontal;
45
- }
46
- };
47
- __decorate([
48
- attr
49
- ], Divider$1.prototype, "role", void 0);
50
- __decorate([
51
- attr
52
- ], Divider$1.prototype, "orientation", void 0);
14
+ const dialogPolyfillStyles = "dialog{position:absolute;left:0;right:0;width:-moz-fit-content;width:-webkit-fit-content;width:fit-content;height:-moz-fit-content;height:-webkit-fit-content;height:fit-content;margin:auto;border:solid;padding:1em;background:white;color:#000;display:block}dialog:not([open]){display:none}dialog+.backdrop{position:fixed;inset:0;background:rgba(0,0,0,.1)}._dialog_overlay{position:fixed;inset:0}dialog.fixed{position:fixed;top:50%;transform:translateY(-50%)}\n";
53
15
 
54
- const styles = ":host{display:block}.base{display:block;background-color:var(--vvd-color-neutral-200)}.base:not(.vertical){block-size:1px;inline-size:100%}.base.vertical{block-size:100%;inline-size:1px}\n";
16
+ const styles = ".base{white-space:initial;box-sizing:border-box;padding:0;border:none;border-radius:8px;background-color:transparent;color:var(--vvd-color-canvas-text);max-block-size:var(--dialog-max-block-size, calc(100vh - 64px));max-inline-size:var(--dialog-max-inline-size, var(--_dialog-default-max-inline-size));min-inline-size:var(--dialog-min-inline-size, 280px)}@media not all and (width >= 600px){.base{--_dialog-default-max-inline-size: 90vw}}@media (width >= 600px){.base{--_dialog-default-max-inline-size: 560px}}.base:not(.modal){z-index:var(--dialog-z-index, 1)}.base.modal{position:fixed;box-shadow:0 4px 20px #00000059}.base.modal::backdrop{background-color:var(--vvd-color-canvas-text, currentColor);opacity:.5}.base:focus-visible{box-shadow:inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:2px solid var(--focus-stroke-color, var(--vvd-color-canvas-text));outline-offset:calc(-2px - var(--focus-inset, 0px))}.main-wrapper{display:flex;box-sizing:border-box;flex-direction:column;gap:24px;padding-block:24px}.main-wrapper>*{box-sizing:border-box}.header{display:grid;align-items:flex-start;justify-content:space-between;inline-size:100%;padding-inline:24px}.base:not(.icon-placement-side) .header{grid-template-columns:1fr auto;grid-template-rows:auto auto auto}.base:not(.icon-placement-side) .header .icon{font-size:calc(1px*(32 + 4*clamp(-1,var(--vvd-size-density, 0),2)));grid-column:1/2;grid-row:1/2;line-height:1;margin-block-end:calc(1px*(24 + 4*clamp(-1,var(--vvd-size-density, 0),2)))}.base.icon-placement-side .header{grid-template-columns:auto 1fr auto;grid-template-rows:auto auto}.base.icon-placement-side .header .icon{font-size:calc(1px*(28 + 4*clamp(-1,var(--vvd-size-density, 0),2)))}.base.icon-placement-side .header ::slotted(*),.base.icon-placement-side .header .icon{grid-column:1/2;grid-row:1/-1;margin-inline-end:calc(1px*(32 + 4*clamp(-1,var(--vvd-size-density, 0),2))/2)}.header.border{position:relative}.header.border:after{position:absolute;bottom:-24px;left:0;background-color:var(--vvd-color-neutral-200);block-size:1px;content:\"\";inline-size:100%}.base.hide-body .header.border:after{content:none}.body:not(.full-width){padding-inline:24px}.hide-body .body{display:none}.footer{display:flex;align-items:center;justify-content:space-between;gap:24px;padding-inline:24px}.hide-footer .footer{display:none}.footer .actions{display:flex;align-self:flex-end;gap:8px}.dismiss-button{flex-shrink:0;grid-column:-2/-1;grid-row:1/-1;margin-block-start:-8px;margin-inline:4px -8px}.headline{font:var(--vvd-typography-heading-4)}.subtitle{font:var(--vvd-typography-base)}slot[name=main]{display:block;overflow:hidden auto;max-width:inherit;max-height:inherit;border-radius:inherit}\n";
55
17
 
56
- class Divider extends Divider$1 {
18
+ var __defProp = Object.defineProperty;
19
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
20
+ var __decorateClass = (decorators, target, key, kind) => {
21
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
22
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
23
+ if (decorator = decorators[i])
24
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
25
+ if (kind && result)
26
+ __defProp(target, key, result);
27
+ return result;
28
+ };
29
+ const isDialogSupported = Boolean(
30
+ window.HTMLDialogElement && window.HTMLDialogElement.prototype.showModal
31
+ );
32
+ let dialogPolyfill;
33
+ (async () => {
34
+ if (!isDialogSupported) {
35
+ delete window.HTMLDialogElement;
36
+ dialogPolyfill = await import('./dialog-polyfill.esm.js');
37
+ }
38
+ })();
39
+ class Dialog extends FoundationElement {
40
+ constructor() {
41
+ super(...arguments);
42
+ this.open = false;
43
+ this.fullWidthBody = false;
44
+ this.ariaLabel = null;
45
+ this.dismissButtonAriaLabel = null;
46
+ this.noLightDismiss = false;
47
+ this.#modal = false;
48
+ this.#handleScrimClick = (event) => {
49
+ if (event.target !== this.#dialog || this.noLightDismiss) {
50
+ return;
51
+ }
52
+ const rect = this.#dialog.getBoundingClientRect();
53
+ const clickedInDialog = rect.top <= event.clientY && event.clientY <= rect.top + rect.height && rect.left <= event.clientX && event.clientX <= rect.left + rect.width;
54
+ this.open = clickedInDialog;
55
+ };
56
+ this.#handleInternalFormSubmit = (event) => {
57
+ if (event.target.method !== "dialog") {
58
+ return;
59
+ }
60
+ this.open = false;
61
+ };
62
+ }
63
+ #modal;
64
+ set returnValue(value) {
65
+ this.#dialog.returnValue = value;
66
+ }
67
+ get returnValue() {
68
+ return this.#dialog?.returnValue;
69
+ }
70
+ /**
71
+ * @internal
72
+ */
73
+ get modal() {
74
+ return this.#modal;
75
+ }
76
+ #dialogElement;
77
+ get #dialog() {
78
+ if (!this.#dialogElement) {
79
+ this.#dialogElement = this.shadowRoot.querySelector(
80
+ "dialog"
81
+ );
82
+ if (this.#dialogElement) {
83
+ this.#dialogElement.open = this.open;
84
+ if (dialogPolyfill) {
85
+ dialogPolyfill.registerDialog(this.#dialogElement);
86
+ }
87
+ }
88
+ }
89
+ return this.#dialogElement;
90
+ }
91
+ /**
92
+ * @internal
93
+ */
94
+ openChanged(oldValue, newValue) {
95
+ if (oldValue === void 0) {
96
+ return;
97
+ }
98
+ if (!newValue) {
99
+ this.close();
100
+ } else {
101
+ if (this.#dialog) {
102
+ this.#dialog.open = true;
103
+ }
104
+ }
105
+ }
106
+ #handleScrimClick;
107
+ #handleInternalFormSubmit;
108
+ close() {
109
+ if (this.#dialog.open) {
110
+ this.#dialog.close();
111
+ this.$emit("close", this.returnValue, { bubbles: false });
112
+ }
113
+ this.open = false;
114
+ this.#handleModal(false);
115
+ }
116
+ #handleModal(show) {
117
+ this.#modal = show;
118
+ this.#dialog.toggleAttribute("aria-modal", show);
119
+ this.#dialog.classList.toggle("modal", show);
120
+ }
121
+ show() {
122
+ this.#dialog.show();
123
+ this.open = true;
124
+ }
125
+ showModal() {
126
+ this.#handleModal(true);
127
+ this.#dialog.showModal();
128
+ this.open = true;
129
+ }
130
+ connectedCallback() {
131
+ super.connectedCallback();
132
+ this.#dialog.addEventListener("mousedown", this.#handleScrimClick);
133
+ this.#dialog.addEventListener("submit", this.#handleInternalFormSubmit);
134
+ }
135
+ disconnectedCallback() {
136
+ super.disconnectedCallback();
137
+ this.#dialog.removeEventListener("mousedown", this.#handleScrimClick);
138
+ this.#dialog.removeEventListener("submit", this.#handleInternalFormSubmit);
139
+ }
57
140
  }
141
+ __decorateClass([
142
+ attr({ mode: "boolean" })
143
+ ], Dialog.prototype, "open", 2);
144
+ __decorateClass([
145
+ attr
146
+ ], Dialog.prototype, "icon", 2);
147
+ __decorateClass([
148
+ attr({ attribute: "icon-placement" })
149
+ ], Dialog.prototype, "iconPlacement", 2);
150
+ __decorateClass([
151
+ attr
152
+ ], Dialog.prototype, "subtitle", 2);
153
+ __decorateClass([
154
+ attr
155
+ ], Dialog.prototype, "headline", 2);
156
+ __decorateClass([
157
+ attr({ attribute: "full-width-body", mode: "boolean" })
158
+ ], Dialog.prototype, "fullWidthBody", 2);
159
+ __decorateClass([
160
+ attr({ attribute: "aria-label" })
161
+ ], Dialog.prototype, "ariaLabel", 2);
162
+ __decorateClass([
163
+ attr({ attribute: "dismiss-button-aria-label" })
164
+ ], Dialog.prototype, "dismissButtonAriaLabel", 2);
165
+ __decorateClass([
166
+ attr({ attribute: "no-light-dismiss", mode: "boolean" })
167
+ ], Dialog.prototype, "noLightDismiss", 2);
168
+ __decorateClass([
169
+ observable
170
+ ], Dialog.prototype, "bodySlottedContent", 2);
171
+ __decorateClass([
172
+ observable
173
+ ], Dialog.prototype, "footerSlottedContent", 2);
174
+ __decorateClass([
175
+ observable
176
+ ], Dialog.prototype, "actionItemsSlottedContent", 2);
177
+ applyMixins(Dialog, Localized);
58
178
 
59
- const getClasses = ({ orientation }) => classNames("base", [`${orientation}`, Boolean(orientation)]);
60
- const DividerTemplate = () => html` <span
61
- class="${getClasses}"
62
- orientation="${(x) => x.orientation}"
63
- role="${(x) => x.role}"
64
- ></span>`;
179
+ const getClasses = ({
180
+ iconPlacement,
181
+ bodySlottedContent,
182
+ footerSlottedContent,
183
+ actionItemsSlottedContent
184
+ }) => classNames(
185
+ "base",
186
+ [`icon-placement-${iconPlacement}`, Boolean(iconPlacement)],
187
+ ["hide-body", !bodySlottedContent?.length],
188
+ [
189
+ "hide-footer",
190
+ !(footerSlottedContent?.length || actionItemsSlottedContent?.length)
191
+ ]
192
+ );
193
+ function icon(iconTag) {
194
+ return html`
195
+ <${iconTag} class="icon" name="${(x) => x.icon}"></${iconTag}>
196
+ `;
197
+ }
198
+ function headline() {
199
+ return html` <div class="headline">${(x) => x.headline}</div> `;
200
+ }
201
+ function subtitle() {
202
+ return html` <div class="subtitle">${(x) => x.subtitle}</div> `;
203
+ }
204
+ function renderDismissButton(buttonTag) {
205
+ return html`
206
+ <${buttonTag}
207
+ aria-label="${(x) => x.dismissButtonAriaLabel || x.locale.dialog.dismissButtonLabel}"
208
+ size="condensed"
209
+ class="dismiss-button"
210
+ icon="close-line"
211
+ @click="${(x) => x.open = false}"
212
+ ></${buttonTag}>`;
213
+ }
214
+ function handleEscapeKey(dialog, event) {
215
+ if (event.key === "Escape" && dialog.modal) {
216
+ dialog.open = false;
217
+ }
218
+ return true;
219
+ }
220
+ const DialogTemplate = (context) => {
221
+ const elevationTag = context.tagFor(Elevation);
222
+ const iconTag = context.tagFor(Icon);
223
+ const buttonTag = context.tagFor(Button);
224
+ return html`
225
+ <${elevationTag} dp="8">
226
+ <dialog class="${getClasses}"
227
+ @keydown="${(x, c) => handleEscapeKey(x, c.event)}"
228
+ @cancel="${(_, c) => c.event.preventDefault()}"
229
+ returnValue="${(x) => x.returnValue}"
230
+ aria-label="${(x) => x.ariaLabel}"
231
+ >
232
+ <slot name="main">
233
+ <div class="main-wrapper">
234
+ <div class="header ${(x) => x.subtitle ? "border" : ""}">
235
+ <slot name="graphic">
236
+ ${when((x) => x.icon, icon(iconTag))}
237
+ </slot>
238
+ ${when((x) => x.headline, headline())}
239
+ ${when((x) => x.subtitle, subtitle())}
240
+ ${renderDismissButton(buttonTag)}
241
+ </div>
242
+ <div class="body ${(x) => x.fullWidthBody ? "full-width" : ""}" >
243
+ <slot name="body" ${slotted("bodySlottedContent")}></slot>
244
+ </div>
245
+ <div class="footer">
246
+ <div>
247
+ <slot name="footer" ${slotted("footerSlottedContent")}></slot>
248
+ </div>
249
+ <div class="actions">
250
+ <slot name="action-items" ${slotted("actionItemsSlottedContent")}></slot>
251
+ </div>
252
+ </div>
253
+ </div>
254
+ </slot>
255
+ </dialog>
256
+ </${elevationTag}>`;
257
+ };
65
258
 
66
- const dividerDefinition = Divider.compose({
67
- baseName: "divider",
68
- template: DividerTemplate,
69
- styles
259
+ const dialogDefinition = Dialog.compose({
260
+ baseName: "dialog",
261
+ template: DialogTemplate,
262
+ styles: isDialogSupported ? [styles] : [styles, dialogPolyfillStyles]
70
263
  });
71
- const dividerRegistries = [dividerDefinition()];
72
- const registerDivider = registerFactory(dividerRegistries);
264
+ const dialogRegistries = [
265
+ dialogDefinition(),
266
+ ...iconRegistries,
267
+ ...buttonRegistries,
268
+ ...elevationRegistries
269
+ ];
270
+ const registerDialog = registerFactory(dialogRegistries);
73
271
 
74
- export { Divider as D, dividerRegistries as a, dividerDefinition as d, registerDivider as r };
272
+ export { dialogRegistries as a, dialogDefinition as d, registerDialog as r };