@vonage/vivid 3.52.0 → 3.54.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 (299) 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/appearance-ui/index.cjs +1 -1
  9. package/appearance-ui/index.js +1 -1
  10. package/audio-player/index.cjs +3 -3
  11. package/audio-player/index.js +3 -3
  12. package/avatar/index.cjs +1 -1
  13. package/avatar/index.js +1 -1
  14. package/badge/index.cjs +1 -1
  15. package/badge/index.js +1 -1
  16. package/banner/index.cjs +2 -2
  17. package/banner/index.js +2 -2
  18. package/breadcrumb-item/index.cjs +1 -1
  19. package/breadcrumb-item/index.js +1 -1
  20. package/button/index.cjs +2 -2
  21. package/button/index.js +2 -2
  22. package/card/index.cjs +2 -2
  23. package/card/index.js +2 -2
  24. package/checkbox/index.cjs +3 -2
  25. package/checkbox/index.js +3 -2
  26. package/combobox/index.cjs +5 -5
  27. package/combobox/index.js +5 -5
  28. package/custom-elements.json +1162 -99
  29. package/data-grid/index.cjs +1 -1
  30. package/data-grid/index.js +1 -1
  31. package/date-picker/index.cjs +7 -6
  32. package/date-picker/index.js +7 -6
  33. package/date-range-picker/index.cjs +7 -6
  34. package/date-range-picker/index.js +7 -6
  35. package/dial-pad/index.cjs +33 -0
  36. package/dial-pad/index.js +31 -0
  37. package/dialog/index.cjs +4 -4
  38. package/dialog/index.js +4 -4
  39. package/divider/index.cjs +1 -1
  40. package/divider/index.js +1 -1
  41. package/elevation/index.cjs +1 -1
  42. package/elevation/index.js +1 -1
  43. package/empty-state/index.cjs +2 -2
  44. package/empty-state/index.js +2 -2
  45. package/fab/index.cjs +2 -2
  46. package/fab/index.js +2 -2
  47. package/file-picker/index.cjs +4 -3
  48. package/file-picker/index.js +4 -3
  49. package/header/index.cjs +2 -2
  50. package/header/index.js +2 -2
  51. package/icon/index.cjs +1 -1
  52. package/icon/index.js +1 -1
  53. package/index.cjs +132 -122
  54. package/index.js +46 -43
  55. package/layout/index.cjs +1 -1
  56. package/layout/index.js +1 -1
  57. package/lib/appearance-ui/appearance-ui.d.ts +1 -1
  58. package/lib/audio-player/audio-player.d.ts +4 -0
  59. package/lib/audio-player/locale.d.ts +2 -0
  60. package/lib/components.d.ts +2 -0
  61. package/lib/dial-pad/definition.d.ts +3 -0
  62. package/lib/dial-pad/dial-pad.d.ts +17 -0
  63. package/lib/dial-pad/dial-pad.template.d.ts +4 -0
  64. package/lib/dial-pad/locale.d.ts +18 -0
  65. package/lib/enums.d.ts +7 -0
  66. package/lib/menu/menu.d.ts +1 -0
  67. package/lib/nav-disclosure/nav-disclosure.d.ts +5 -0
  68. package/lib/text-anchor/definition.d.ts +1 -0
  69. package/lib/text-anchor/text-anchor.d.ts +5 -0
  70. package/lib/video-player/definition.d.ts +3 -0
  71. package/lib/video-player/locale.d.ts +1 -0
  72. package/lib/video-player/video-player.d.ts +17 -0
  73. package/lib/video-player/video-player.template.d.ts +4 -0
  74. package/lib/video-player/vivid-video-svg.d.ts +1 -0
  75. package/listbox/index.cjs +2 -2
  76. package/listbox/index.js +2 -2
  77. package/locales/en-GB.cjs +33 -1
  78. package/locales/en-GB.js +33 -1
  79. package/locales/en-US.cjs +201 -1
  80. package/locales/en-US.js +201 -1
  81. package/locales/ja-JP.cjs +200 -1
  82. package/locales/ja-JP.js +200 -1
  83. package/locales/zh-CN.cjs +202 -1
  84. package/locales/zh-CN.js +202 -1
  85. package/menu/index.cjs +6 -6
  86. package/menu/index.js +6 -6
  87. package/menu-item/index.cjs +2 -2
  88. package/menu-item/index.js +2 -2
  89. package/nav/index.cjs +1 -1
  90. package/nav/index.js +1 -1
  91. package/nav-disclosure/index.cjs +2 -2
  92. package/nav-disclosure/index.js +2 -2
  93. package/nav-item/index.cjs +2 -2
  94. package/nav-item/index.js +2 -2
  95. package/note/index.cjs +2 -2
  96. package/note/index.js +2 -2
  97. package/number-field/index.cjs +5 -4
  98. package/number-field/index.js +5 -4
  99. package/option/index.cjs +2 -2
  100. package/option/index.js +2 -2
  101. package/package.json +1 -1
  102. package/pagination/index.cjs +3 -3
  103. package/pagination/index.js +3 -3
  104. package/popup/index.cjs +4 -4
  105. package/popup/index.js +4 -4
  106. package/progress/index.cjs +1 -1
  107. package/progress/index.js +1 -1
  108. package/progress-ring/index.cjs +1 -1
  109. package/progress-ring/index.js +1 -1
  110. package/radio/index.cjs +1 -1
  111. package/radio/index.js +1 -1
  112. package/radio-group/index.cjs +1 -1
  113. package/radio-group/index.js +1 -1
  114. package/range-slider/index.cjs +2 -2
  115. package/range-slider/index.js +2 -2
  116. package/select/index.cjs +7 -6
  117. package/select/index.js +7 -6
  118. package/selectable-box/index.cjs +5 -4
  119. package/selectable-box/index.js +5 -4
  120. package/shared/applyMixinsWithObservables.cjs +15 -0
  121. package/shared/applyMixinsWithObservables.js +13 -0
  122. package/shared/definition.cjs +1 -1
  123. package/shared/definition.js +1 -1
  124. package/shared/definition11.cjs +3 -3
  125. package/shared/definition11.js +3 -3
  126. package/shared/definition14.cjs +2 -2
  127. package/shared/definition14.js +2 -2
  128. package/shared/definition15.cjs +8 -9
  129. package/shared/definition15.js +8 -9
  130. package/shared/definition16.cjs +3 -3
  131. package/shared/definition16.js +3 -3
  132. package/shared/definition17.cjs +2 -2
  133. package/shared/definition17.js +3 -3
  134. package/shared/definition18.cjs +3 -3
  135. package/shared/definition18.js +3 -3
  136. package/shared/definition19.cjs +3 -3
  137. package/shared/definition19.js +3 -3
  138. package/shared/definition20.cjs +196 -224
  139. package/shared/definition20.js +191 -219
  140. package/shared/definition21.cjs +264 -67
  141. package/shared/definition21.js +263 -65
  142. package/shared/definition22.cjs +66 -57
  143. package/shared/definition22.js +64 -56
  144. package/shared/definition23.cjs +42 -76
  145. package/shared/definition23.js +41 -75
  146. package/shared/definition24.cjs +70 -2402
  147. package/shared/definition24.js +69 -2401
  148. package/shared/definition25.cjs +2402 -46
  149. package/shared/definition25.js +2401 -45
  150. package/shared/definition26.cjs +63 -30
  151. package/shared/definition26.js +62 -29
  152. package/shared/definition27.cjs +28 -56
  153. package/shared/definition27.js +27 -55
  154. package/shared/definition28.cjs +35 -881
  155. package/shared/definition28.js +34 -879
  156. package/shared/definition29.cjs +922 -60
  157. package/shared/definition29.js +922 -61
  158. package/shared/definition30.cjs +68 -86
  159. package/shared/definition30.js +67 -85
  160. package/shared/definition31.cjs +98 -21
  161. package/shared/definition31.js +98 -21
  162. package/shared/definition32.cjs +24 -12
  163. package/shared/definition32.js +23 -11
  164. package/shared/definition33.cjs +11 -50
  165. package/shared/definition33.js +10 -49
  166. package/shared/definition34.cjs +26 -515
  167. package/shared/definition34.js +26 -515
  168. package/shared/definition35.cjs +448 -194
  169. package/shared/definition35.js +448 -192
  170. package/shared/definition36.cjs +256 -202
  171. package/shared/definition36.js +253 -201
  172. package/shared/definition37.cjs +204 -65
  173. package/shared/definition37.js +203 -63
  174. package/shared/definition38.cjs +63 -57
  175. package/shared/definition38.js +60 -55
  176. package/shared/definition39.cjs +65 -432
  177. package/shared/definition39.js +64 -431
  178. package/shared/definition4.cjs +2 -2
  179. package/shared/definition4.js +2 -2
  180. package/shared/definition40.cjs +441 -34
  181. package/shared/definition40.js +438 -31
  182. package/shared/definition41.cjs +34 -576
  183. package/shared/definition41.js +33 -575
  184. package/shared/definition42.cjs +531 -654
  185. package/shared/definition42.js +531 -654
  186. package/shared/definition43.cjs +690 -114
  187. package/shared/definition43.js +689 -113
  188. package/shared/definition44.cjs +124 -79
  189. package/shared/definition44.js +122 -77
  190. package/shared/definition45.cjs +78 -520
  191. package/shared/definition45.js +77 -518
  192. package/shared/definition46.cjs +520 -119
  193. package/shared/definition46.js +518 -118
  194. package/shared/definition47.cjs +118 -135
  195. package/shared/definition47.js +117 -134
  196. package/shared/definition48.cjs +151 -19
  197. package/shared/definition48.js +150 -18
  198. package/shared/definition49.cjs +21 -84
  199. package/shared/definition49.js +20 -83
  200. package/shared/definition5.cjs +100 -19
  201. package/shared/definition5.js +100 -19
  202. package/shared/definition50.cjs +52 -505
  203. package/shared/definition50.js +51 -504
  204. package/shared/definition51.cjs +526 -28
  205. package/shared/definition51.js +525 -27
  206. package/shared/definition52.cjs +28 -123
  207. package/shared/definition52.js +26 -122
  208. package/shared/definition53.cjs +110 -309
  209. package/shared/definition53.js +110 -308
  210. package/shared/definition54.cjs +255 -271
  211. package/shared/definition54.js +255 -271
  212. package/shared/definition55.cjs +315 -776
  213. package/shared/definition55.js +314 -775
  214. package/shared/definition56.cjs +818 -107
  215. package/shared/definition56.js +817 -106
  216. package/shared/definition57.cjs +85 -55
  217. package/shared/definition57.js +84 -54
  218. package/shared/definition58.cjs +125 -72
  219. package/shared/definition58.js +124 -71
  220. package/shared/definition59.cjs +72 -285
  221. package/shared/definition59.js +73 -286
  222. package/shared/definition6.cjs +1 -1
  223. package/shared/definition6.js +1 -1
  224. package/shared/definition60.cjs +298 -39
  225. package/shared/definition60.js +297 -38
  226. package/shared/definition61.cjs +66044 -1687
  227. package/shared/definition61.js +66043 -1686
  228. package/shared/definition62.cjs +50 -0
  229. package/shared/definition62.js +46 -0
  230. package/shared/definition63.cjs +1828 -0
  231. package/shared/definition63.js +1824 -0
  232. package/shared/definition7.cjs +2 -2
  233. package/shared/definition7.js +2 -2
  234. package/shared/definition8.cjs +2 -2
  235. package/shared/definition8.js +2 -2
  236. package/shared/definition9.cjs +1 -1
  237. package/shared/definition9.js +1 -1
  238. package/shared/enums.cjs +9 -0
  239. package/shared/enums.js +9 -1
  240. package/shared/icon.cjs +20 -2
  241. package/shared/icon.js +21 -3
  242. package/shared/index2.cjs +73 -37
  243. package/shared/index2.js +73 -37
  244. package/shared/key-codes2.js +1 -1
  245. package/shared/listbox.cjs +1 -1
  246. package/shared/listbox.js +1 -1
  247. package/shared/localization/Locale.d.ts +4 -0
  248. package/shared/patterns/form-elements/form-elements.d.ts +2 -3
  249. package/shared/presentationDate.cjs +16 -5
  250. package/shared/presentationDate.js +16 -5
  251. package/shared/text-anchor.cjs +6 -0
  252. package/shared/text-anchor.js +6 -0
  253. package/shared/text-anchor.template.cjs +6 -1
  254. package/shared/text-anchor.template.js +6 -1
  255. package/shared/text-field.cjs +1 -1
  256. package/shared/text-field.js +1 -1
  257. package/shared/utils/applyMixinsWithObservables.d.ts +1 -0
  258. package/shared/utils/numberConverter.d.ts +2 -0
  259. package/side-drawer/index.cjs +1 -1
  260. package/side-drawer/index.js +1 -1
  261. package/slider/index.cjs +1 -1
  262. package/slider/index.js +1 -1
  263. package/split-button/index.cjs +2 -2
  264. package/split-button/index.js +2 -2
  265. package/styles/core/all.css +1 -1
  266. package/styles/core/theme.css +1 -1
  267. package/styles/core/typography.css +1 -1
  268. package/styles/tokens/theme-dark.css +4 -4
  269. package/styles/tokens/theme-light.css +4 -4
  270. package/styles/tokens/vivid-2-compat.css +1 -1
  271. package/switch/index.cjs +2 -2
  272. package/switch/index.js +2 -2
  273. package/tab/index.cjs +2 -2
  274. package/tab/index.js +2 -2
  275. package/tab-panel/index.cjs +1 -1
  276. package/tab-panel/index.js +1 -1
  277. package/tabs/index.cjs +4 -4
  278. package/tabs/index.js +4 -4
  279. package/tag/index.cjs +2 -2
  280. package/tag/index.js +2 -2
  281. package/tag-group/index.cjs +1 -1
  282. package/tag-group/index.js +1 -1
  283. package/text-area/index.cjs +4 -3
  284. package/text-area/index.js +4 -3
  285. package/text-field/index.cjs +4 -3
  286. package/text-field/index.js +4 -3
  287. package/time-picker/index.cjs +8 -7
  288. package/time-picker/index.js +8 -7
  289. package/toggletip/index.cjs +5 -5
  290. package/toggletip/index.js +5 -5
  291. package/tooltip/index.cjs +5 -5
  292. package/tooltip/index.js +5 -5
  293. package/tree-item/index.cjs +2 -2
  294. package/tree-item/index.js +2 -2
  295. package/tree-view/index.cjs +1 -1
  296. package/tree-view/index.js +1 -1
  297. package/video-player/index.cjs +17 -0
  298. package/video-player/index.js +15 -0
  299. package/vivid.api.json +332 -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 };