@vonage/vivid 4.25.0 → 4.26.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 (149) hide show
  1. package/custom-elements.json +1496 -386
  2. package/lib/accordion-item/accordion-item.d.ts +1 -1
  3. package/lib/action-group/action-group.d.ts +1 -1
  4. package/lib/alert/alert.d.ts +2 -2
  5. package/lib/audio-player/audio-player.d.ts +1 -1
  6. package/lib/badge/badge.d.ts +1 -1
  7. package/lib/banner/banner.d.ts +3 -3
  8. package/lib/breadcrumb/breadcrumb.d.ts +1 -1
  9. package/lib/breadcrumb-item/breadcrumb-item.d.ts +1 -1
  10. package/lib/button/button.d.ts +3 -3
  11. package/lib/calendar/calendar.d.ts +2 -0
  12. package/lib/calendar-event/calendar-event.d.ts +1 -1
  13. package/lib/card/card.d.ts +1 -1
  14. package/lib/checkbox/checkbox.d.ts +3 -3
  15. package/lib/combobox/combobox.d.ts +3 -3
  16. package/lib/data-grid/data-grid-cell.d.ts +4 -2
  17. package/lib/data-grid/data-grid-row.d.ts +1 -0
  18. package/lib/data-grid/data-grid.d.ts +1 -1
  19. package/lib/date-picker/date-picker.d.ts +4 -4
  20. package/lib/date-range-picker/date-range-picker.d.ts +2 -2
  21. package/lib/date-time-picker/date-time-picker.d.ts +4 -4
  22. package/lib/dial-pad/dial-pad.d.ts +1 -1
  23. package/lib/dialog/dialog.d.ts +3 -2
  24. package/lib/divider/divider.d.ts +1 -1
  25. package/lib/fab/fab.d.ts +1 -1
  26. package/lib/file-picker/file-picker.d.ts +3 -3
  27. package/lib/header/header.d.ts +1 -1
  28. package/lib/menu/menu.d.ts +1 -1
  29. package/lib/menu-item/menu-item.d.ts +2 -2
  30. package/lib/nav/nav.d.ts +1 -1
  31. package/lib/nav-disclosure/nav-disclosure.d.ts +2 -2
  32. package/lib/nav-item/nav-item.d.ts +2 -2
  33. package/lib/note/note.d.ts +1 -1
  34. package/lib/number-field/locale.d.ts +3 -2
  35. package/lib/number-field/number-field.d.ts +5 -5
  36. package/lib/option/option.d.ts +2 -2
  37. package/lib/pagination/locale.d.ts +5 -0
  38. package/lib/pagination/pagination.d.ts +341 -2
  39. package/lib/popup/popup.d.ts +1 -0
  40. package/lib/progress/progress.d.ts +1 -1
  41. package/lib/progress-ring/progress-ring.d.ts +1 -1
  42. package/lib/radio-group/radio-group.d.ts +1 -1
  43. package/lib/range-slider/range-slider.d.ts +1 -1
  44. package/lib/rich-text-editor/menubar/menubar.d.ts +1 -1
  45. package/lib/rich-text-editor/rich-text-editor.d.ts +1 -1
  46. package/lib/searchable-select/option-tag.d.ts +1 -1
  47. package/lib/searchable-select/searchable-select.d.ts +5 -5
  48. package/lib/select/select.d.ts +4 -4
  49. package/lib/selectable-box/selectable-box.d.ts +1 -1
  50. package/lib/slider/slider.d.ts +2 -2
  51. package/lib/split-button/split-button.d.ts +3 -3
  52. package/lib/switch/switch.d.ts +1 -1
  53. package/lib/tab/tab.d.ts +3 -3
  54. package/lib/tab-panel/tab-panel.d.ts +1 -1
  55. package/lib/tag/tag.d.ts +2 -2
  56. package/lib/tag-group/tag-group.d.ts +1 -1
  57. package/lib/text-area/text-area.d.ts +4 -4
  58. package/lib/text-field/text-field.d.ts +5 -5
  59. package/lib/time-picker/time-picker.d.ts +2 -2
  60. package/lib/tree-item/tree-item.d.ts +2 -2
  61. package/lib/tree-view/tree-view.d.ts +1 -1
  62. package/lib/video-player/video-player.d.ts +1 -1
  63. package/locales/de-DE.cjs +21 -3
  64. package/locales/de-DE.js +21 -3
  65. package/locales/en-GB.cjs +21 -3
  66. package/locales/en-GB.js +21 -3
  67. package/locales/en-US.cjs +21 -3
  68. package/locales/en-US.js +21 -3
  69. package/locales/ja-JP.cjs +21 -3
  70. package/locales/ja-JP.js +21 -3
  71. package/locales/zh-CN.cjs +21 -3
  72. package/locales/zh-CN.js +21 -3
  73. package/package.json +1 -1
  74. package/shared/aria/delegates-aria.d.ts +1 -1
  75. package/shared/aria/host-semantics.d.ts +1 -1
  76. package/shared/definition.cjs +19 -3
  77. package/shared/definition.js +20 -4
  78. package/shared/definition11.cjs +1 -1
  79. package/shared/definition11.js +1 -1
  80. package/shared/definition13.cjs +25 -0
  81. package/shared/definition13.js +26 -1
  82. package/shared/definition15.cjs +1 -1
  83. package/shared/definition15.js +1 -1
  84. package/shared/definition16.cjs +1 -1
  85. package/shared/definition16.js +1 -1
  86. package/shared/definition17.cjs +601 -521
  87. package/shared/definition17.js +599 -519
  88. package/shared/definition21.cjs +2 -2
  89. package/shared/definition21.js +2 -2
  90. package/shared/definition22.cjs +9 -3
  91. package/shared/definition22.js +9 -3
  92. package/shared/definition28.cjs +1 -1
  93. package/shared/definition28.js +1 -1
  94. package/shared/definition3.cjs +1 -1
  95. package/shared/definition3.js +1 -1
  96. package/shared/definition31.cjs +1 -1
  97. package/shared/definition31.js +1 -1
  98. package/shared/definition32.cjs +1 -1
  99. package/shared/definition32.js +1 -1
  100. package/shared/definition36.cjs +40 -29
  101. package/shared/definition36.js +33 -22
  102. package/shared/definition38.cjs +30 -23
  103. package/shared/definition38.js +30 -23
  104. package/shared/definition42.cjs +2 -2
  105. package/shared/definition42.js +2 -2
  106. package/shared/definition45.cjs +2 -2
  107. package/shared/definition45.js +2 -2
  108. package/shared/definition46.cjs +1 -1
  109. package/shared/definition46.js +1 -1
  110. package/shared/definition49.cjs +2 -2
  111. package/shared/definition49.js +2 -2
  112. package/shared/definition63.cjs +2 -2
  113. package/shared/definition63.js +2 -2
  114. package/shared/definition67.cjs +9 -1
  115. package/shared/definition67.js +10 -2
  116. package/shared/feedback/feedback-message.d.ts +1 -1
  117. package/shared/feedback/mixins.d.ts +2 -2
  118. package/shared/foundation/button/button.d.ts +1 -1
  119. package/shared/foundation/vivid-element/vivid-element.d.ts +2 -0
  120. package/shared/key-codes.js +1 -1
  121. package/shared/localization/Locale.d.ts +2 -0
  122. package/shared/mixins.cjs +4 -1
  123. package/shared/mixins.js +4 -1
  124. package/shared/patterns/affix.d.ts +2 -2
  125. package/shared/patterns/char-count/char-count.d.ts +1 -1
  126. package/shared/patterns/form-elements/with-success-text.d.ts +1 -1
  127. package/shared/patterns/linkable.d.ts +1 -1
  128. package/shared/patterns/localized.d.ts +1 -1
  129. package/shared/patterns/trapped-focus.d.ts +1 -1
  130. package/shared/picker-field/mixins/calendar-picker.d.ts +1 -1
  131. package/shared/picker-field/mixins/calendar-picker.template.d.ts +1 -1
  132. package/shared/picker-field/mixins/inline-time-picker/inline-time-picker.d.ts +1 -1
  133. package/shared/picker-field/mixins/min-max-calendar-picker.d.ts +2 -2
  134. package/shared/picker-field/mixins/single-date-picker.d.ts +3 -3
  135. package/shared/picker-field/mixins/single-value-picker.d.ts +1 -1
  136. package/shared/picker-field/mixins/time-selection-picker.d.ts +2 -2
  137. package/shared/picker-field/mixins/time-selection-picker.template.d.ts +2 -2
  138. package/shared/picker-field/picker-field.d.ts +3 -3
  139. package/shared/picker-field.template.cjs +13 -13
  140. package/shared/picker-field.template.js +13 -13
  141. package/shared/vivid-element.cjs +11 -1
  142. package/shared/vivid-element.js +11 -1
  143. package/styles/core/all.css +1 -1
  144. package/styles/core/theme.css +1 -1
  145. package/styles/core/typography.css +1 -1
  146. package/styles/tokens/theme-dark.css +4 -4
  147. package/styles/tokens/theme-light.css +4 -4
  148. package/styles/tokens/vivid-2-compat.css +1 -1
  149. package/vivid.api.json +154 -66
@@ -183,10 +183,10 @@ function renderTextField(textFieldTag, buttonTag) {
183
183
  ${when.when(
184
184
  (x) => x.value && x.value.length && x.value.length > 0,
185
185
  vividElement.html`<${buttonTag}
186
- slot="action-items"
186
+ slot="action-items"
187
187
  size='super-condensed'
188
188
  icon="backspace-line"
189
- aria-label="${(x) => x.deleteAriaLabel || x.locale.dialPad.deleteLabel}"
189
+ aria-label="${(x) => x.deleteAriaLabel || x.locale.dialPad.deleteButtonLabel}"
190
190
  appearance='ghost'
191
191
  ?disabled="${(x) => x.disabled || x.callActive}"
192
192
  @click="${(x) => deleteLastCharacter(x)}">
@@ -181,10 +181,10 @@ function renderTextField(textFieldTag, buttonTag) {
181
181
  ${when(
182
182
  (x) => x.value && x.value.length && x.value.length > 0,
183
183
  html`<${buttonTag}
184
- slot="action-items"
184
+ slot="action-items"
185
185
  size='super-condensed'
186
186
  icon="backspace-line"
187
- aria-label="${(x) => x.deleteAriaLabel || x.locale.dialPad.deleteLabel}"
187
+ aria-label="${(x) => x.deleteAriaLabel || x.locale.dialPad.deleteButtonLabel}"
188
188
  appearance='ghost'
189
189
  ?disabled="${(x) => x.disabled || x.callActive}"
190
190
  @click="${(x) => deleteLastCharacter(x)}">
@@ -11,7 +11,7 @@ const classNames = require('./class-names.cjs');
11
11
  const when = require('./when.cjs');
12
12
  const slotted = require('./slotted.cjs');
13
13
 
14
- 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{box-shadow:0 4px 20px #00000059}.base.modal::backdrop{background-color:var(--vvd-color-canvas-text, currentColor);opacity:.5}.base:focus-visible{box-shadow:0 0 0 4px color-mix(in srgb,var(--vvd-color-cta-500),transparent 85%),inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:1px solid var(--focus-stroke-color, var(--vvd-color-cta-500));outline-offset:calc(-1px - 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{margin:0;font:var(--vvd-typography-heading-4)}.subtitle{margin:0;font:var(--vvd-typography-base)}slot[name=main]{--scrollbar-track-color: transparent;--scrollbar-thumb-color: color-mix(in srgb, var(--vvd-color-neutral-950), transparent 70%)}slot[name=main]{scrollbar-color:var(--scrollbar-thumb-color) var(--scrollbar-track-color);scrollbar-width:thin}slot[name=main] ::-webkit-scrollbar{width:4px}slot[name=main] ::-webkit-scrollbar-track{background:var(--scrollbar-track-color)}slot[name=main] ::-webkit-scrollbar-thumb{border:0;border-radius:4px;background-color:var(--scrollbar-fallback-track-color, var(--scrollbar-thumb-color))}slot[name=main]{display:block;overflow:hidden auto;max-width:inherit;max-height:inherit;border-radius:inherit}";
14
+ 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-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(.scrollable-body){max-block-size:var(--dialog-max-block-size, calc(100vh - 64px) )}.base:not(.modal){z-index:var(--dialog-z-index, 1);inset-block:var(--dialog-inset-block, auto);inset-inline:var(--dialog-inset-inline, 0)}.base.modal{box-shadow:0 4px 20px #00000059}.base.modal::backdrop{background-color:var(--vvd-color-canvas-text, currentColor);opacity:.5}.base:focus-visible{box-shadow:0 0 0 4px color-mix(in srgb,var(--vvd-color-cta-500),transparent 85%),inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:1px solid var(--focus-stroke-color, var(--vvd-color-cta-500));outline-offset:calc(-1px - 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}.scrollable-body .body{overflow:hidden auto;max-block-size:var(--dialog-body-max-block-size, 300px);--scrollbar-track-color: transparent;--scrollbar-thumb-color: color-mix(in srgb, var(--vvd-color-neutral-950), transparent 70%)}.scrollable-body .body{scrollbar-color:var(--scrollbar-thumb-color) var(--scrollbar-track-color);scrollbar-width:thin}.scrollable-body .body ::-webkit-scrollbar{width:4px}.scrollable-body .body ::-webkit-scrollbar-track{background:var(--scrollbar-track-color)}.scrollable-body .body ::-webkit-scrollbar-thumb{border:0;border-radius:4px;background-color:var(--scrollbar-fallback-track-color, var(--scrollbar-thumb-color))}.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{margin:0;font:var(--vvd-typography-heading-4)}.subtitle{margin:0;font:var(--vvd-typography-base)}slot[name=main]{--scrollbar-track-color: transparent;--scrollbar-thumb-color: color-mix(in srgb, var(--vvd-color-neutral-950), transparent 70%)}slot[name=main]{scrollbar-color:var(--scrollbar-thumb-color) var(--scrollbar-track-color);scrollbar-width:thin}slot[name=main] ::-webkit-scrollbar{width:4px}slot[name=main] ::-webkit-scrollbar-track{background:var(--scrollbar-track-color)}slot[name=main] ::-webkit-scrollbar-thumb{border:0;border-radius:4px;background-color:var(--scrollbar-fallback-track-color, var(--scrollbar-thumb-color))}slot[name=main]{display:block;overflow:hidden auto;max-width:inherit;max-height:inherit;border-radius:inherit}";
15
15
 
16
16
  var __defProp = Object.defineProperty;
17
17
  var __decorateClass = (decorators, target, key, kind) => {
@@ -33,6 +33,7 @@ class Dialog extends localized.Localized(delegatesAria.DelegatesAria(vividElemen
33
33
  this.noDismissButton = false;
34
34
  this.nonDismissible = false;
35
35
  this.modal = false;
36
+ this.scrollableBody = false;
36
37
  this._openedAsModal = false;
37
38
  this.#handleScrimClick = (event) => {
38
39
  if (event.target !== this.#dialog || !this.#isDismissibleVia("light-dismiss")) {
@@ -227,6 +228,9 @@ __decorateClass([
227
228
  __decorateClass([
228
229
  vividElement.attr({ mode: "boolean" })
229
230
  ], Dialog.prototype, "modal");
231
+ __decorateClass([
232
+ vividElement.attr({ mode: "boolean", attribute: "scrollable-body" })
233
+ ], Dialog.prototype, "scrollableBody");
230
234
  __decorateClass([
231
235
  vividElement.observable
232
236
  ], Dialog.prototype, "_openedAsModal");
@@ -245,7 +249,8 @@ const getClasses = ({
245
249
  bodySlottedContent,
246
250
  footerSlottedContent,
247
251
  actionItemsSlottedContent,
248
- _openedAsModal
252
+ _openedAsModal,
253
+ scrollableBody
249
254
  }) => classNames.classNames(
250
255
  "base",
251
256
  [`icon-placement-${iconPlacement}`, Boolean(iconPlacement)],
@@ -254,7 +259,8 @@ const getClasses = ({
254
259
  "hide-footer",
255
260
  !(footerSlottedContent?.length || actionItemsSlottedContent?.length)
256
261
  ],
257
- ["modal", _openedAsModal]
262
+ ["modal", _openedAsModal],
263
+ ["scrollable-body", Boolean(scrollableBody)]
258
264
  );
259
265
  function icon(iconTag) {
260
266
  return vividElement.html`
@@ -9,7 +9,7 @@ import { c as classNames } from './class-names.js';
9
9
  import { w as when } from './when.js';
10
10
  import { s as slotted } from './slotted.js';
11
11
 
12
- 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{box-shadow:0 4px 20px #00000059}.base.modal::backdrop{background-color:var(--vvd-color-canvas-text, currentColor);opacity:.5}.base:focus-visible{box-shadow:0 0 0 4px color-mix(in srgb,var(--vvd-color-cta-500),transparent 85%),inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:1px solid var(--focus-stroke-color, var(--vvd-color-cta-500));outline-offset:calc(-1px - 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{margin:0;font:var(--vvd-typography-heading-4)}.subtitle{margin:0;font:var(--vvd-typography-base)}slot[name=main]{--scrollbar-track-color: transparent;--scrollbar-thumb-color: color-mix(in srgb, var(--vvd-color-neutral-950), transparent 70%)}slot[name=main]{scrollbar-color:var(--scrollbar-thumb-color) var(--scrollbar-track-color);scrollbar-width:thin}slot[name=main] ::-webkit-scrollbar{width:4px}slot[name=main] ::-webkit-scrollbar-track{background:var(--scrollbar-track-color)}slot[name=main] ::-webkit-scrollbar-thumb{border:0;border-radius:4px;background-color:var(--scrollbar-fallback-track-color, var(--scrollbar-thumb-color))}slot[name=main]{display:block;overflow:hidden auto;max-width:inherit;max-height:inherit;border-radius:inherit}";
12
+ 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-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(.scrollable-body){max-block-size:var(--dialog-max-block-size, calc(100vh - 64px) )}.base:not(.modal){z-index:var(--dialog-z-index, 1);inset-block:var(--dialog-inset-block, auto);inset-inline:var(--dialog-inset-inline, 0)}.base.modal{box-shadow:0 4px 20px #00000059}.base.modal::backdrop{background-color:var(--vvd-color-canvas-text, currentColor);opacity:.5}.base:focus-visible{box-shadow:0 0 0 4px color-mix(in srgb,var(--vvd-color-cta-500),transparent 85%),inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:1px solid var(--focus-stroke-color, var(--vvd-color-cta-500));outline-offset:calc(-1px - 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}.scrollable-body .body{overflow:hidden auto;max-block-size:var(--dialog-body-max-block-size, 300px);--scrollbar-track-color: transparent;--scrollbar-thumb-color: color-mix(in srgb, var(--vvd-color-neutral-950), transparent 70%)}.scrollable-body .body{scrollbar-color:var(--scrollbar-thumb-color) var(--scrollbar-track-color);scrollbar-width:thin}.scrollable-body .body ::-webkit-scrollbar{width:4px}.scrollable-body .body ::-webkit-scrollbar-track{background:var(--scrollbar-track-color)}.scrollable-body .body ::-webkit-scrollbar-thumb{border:0;border-radius:4px;background-color:var(--scrollbar-fallback-track-color, var(--scrollbar-thumb-color))}.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{margin:0;font:var(--vvd-typography-heading-4)}.subtitle{margin:0;font:var(--vvd-typography-base)}slot[name=main]{--scrollbar-track-color: transparent;--scrollbar-thumb-color: color-mix(in srgb, var(--vvd-color-neutral-950), transparent 70%)}slot[name=main]{scrollbar-color:var(--scrollbar-thumb-color) var(--scrollbar-track-color);scrollbar-width:thin}slot[name=main] ::-webkit-scrollbar{width:4px}slot[name=main] ::-webkit-scrollbar-track{background:var(--scrollbar-track-color)}slot[name=main] ::-webkit-scrollbar-thumb{border:0;border-radius:4px;background-color:var(--scrollbar-fallback-track-color, var(--scrollbar-thumb-color))}slot[name=main]{display:block;overflow:hidden auto;max-width:inherit;max-height:inherit;border-radius:inherit}";
13
13
 
14
14
  var __defProp = Object.defineProperty;
15
15
  var __decorateClass = (decorators, target, key, kind) => {
@@ -31,6 +31,7 @@ class Dialog extends Localized(DelegatesAria(VividElement)) {
31
31
  this.noDismissButton = false;
32
32
  this.nonDismissible = false;
33
33
  this.modal = false;
34
+ this.scrollableBody = false;
34
35
  this._openedAsModal = false;
35
36
  this.#handleScrimClick = (event) => {
36
37
  if (event.target !== this.#dialog || !this.#isDismissibleVia("light-dismiss")) {
@@ -225,6 +226,9 @@ __decorateClass([
225
226
  __decorateClass([
226
227
  attr({ mode: "boolean" })
227
228
  ], Dialog.prototype, "modal");
229
+ __decorateClass([
230
+ attr({ mode: "boolean", attribute: "scrollable-body" })
231
+ ], Dialog.prototype, "scrollableBody");
228
232
  __decorateClass([
229
233
  observable
230
234
  ], Dialog.prototype, "_openedAsModal");
@@ -243,7 +247,8 @@ const getClasses = ({
243
247
  bodySlottedContent,
244
248
  footerSlottedContent,
245
249
  actionItemsSlottedContent,
246
- _openedAsModal
250
+ _openedAsModal,
251
+ scrollableBody
247
252
  }) => classNames(
248
253
  "base",
249
254
  [`icon-placement-${iconPlacement}`, Boolean(iconPlacement)],
@@ -252,7 +257,8 @@ const getClasses = ({
252
257
  "hide-footer",
253
258
  !(footerSlottedContent?.length || actionItemsSlottedContent?.length)
254
259
  ],
255
- ["modal", _openedAsModal]
260
+ ["modal", _openedAsModal],
261
+ ["scrollable-body", Boolean(scrollableBody)]
256
262
  );
257
263
  function icon(iconTag) {
258
264
  return html`
@@ -135,7 +135,7 @@ var memoizeWith = /*#__PURE__*/_has._curry2(function memoizeWith(keyGen, fn) {
135
135
  });
136
136
 
137
137
  const ICONS_BASE_URL = "https://icon.resources.vonage.com";
138
- const ICONS_VERSION = "4.6.5";
138
+ const ICONS_VERSION = "4.6.6";
139
139
 
140
140
  const numberConverter = {
141
141
  toView(value) {
@@ -133,7 +133,7 @@ var memoizeWith = /*#__PURE__*/_curry2(function memoizeWith(keyGen, fn) {
133
133
  });
134
134
 
135
135
  const ICONS_BASE_URL = "https://icon.resources.vonage.com";
136
- const ICONS_VERSION = "4.6.5";
136
+ const ICONS_VERSION = "4.6.6";
137
137
 
138
138
  const numberConverter = {
139
139
  toView(value) {
@@ -4,7 +4,7 @@ const vividElement = require('./vivid-element.cjs');
4
4
  const delegatesAria = require('./delegates-aria.cjs');
5
5
  const classNames = require('./class-names.cjs');
6
6
 
7
- const styles = ":host{display:inline-block}.base{--_connotation-color-primary: var(--vvd-action-group-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-intermediate: var(--vvd-action-group-accent-intermediate, var(--vvd-color-neutral-500));--_connotation-color-faint: var(--vvd-action-group-accent-faint, var(--vvd-color-neutral-50))}.base{--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--vvd-color-neutral-500)}.base.appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.base{position:relative;display:flex;box-sizing:border-box;align-items:center;background-color:var(--_appearance-color-fill);inline-size:inherit;vertical-align:middle}.base:before{position:absolute;z-index:1;border-radius:inherit;box-shadow:inset 0 0 0 1px var(--_appearance-color-outline);content:\"\";inset:0;pointer-events:none}.base:not(.tight){padding:4px;column-gap:4px}.base:not(.shape-pill){border-radius:8px}.base.shape-pill{border-radius:24px}::slotted([role=separator]){align-self:stretch;margin-block:4px}";
7
+ const styles = ":host{display:inline-block}.base{--_connotation-color-primary: var(--vvd-action-group-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-intermediate: var(--vvd-action-group-accent-intermediate, var(--vvd-color-neutral-500));--_connotation-color-faint: var(--vvd-action-group-accent-faint, var(--vvd-color-neutral-50))}.base{--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--vvd-color-neutral-500)}.base.appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.base{position:relative;display:flex;box-sizing:border-box;align-items:center;background-color:var(--_appearance-color-fill);inline-size:inherit;vertical-align:middle}.base:before{position:absolute;z-index:1;border-radius:inherit;box-shadow:inset 0 0 0 1px var(--_appearance-color-outline);content:\"\";inset:0;pointer-events:none}.base:not(.tight){padding:4px;column-gap:4px}.base:not(.shape-pill){border-radius:8px}.base.shape-pill{border-radius:24px}::slotted([data-vvd-component=divider]){align-self:stretch;margin-block:4px}";
8
8
 
9
9
  var __defProp = Object.defineProperty;
10
10
  var __decorateClass = (decorators, target, key, kind) => {
@@ -2,7 +2,7 @@ import { V as VividElement, a as attr, h as html, d as createRegisterFunction, f
2
2
  import { D as DelegatesAria, d as delegateAria } from './delegates-aria.js';
3
3
  import { c as classNames } from './class-names.js';
4
4
 
5
- const styles = ":host{display:inline-block}.base{--_connotation-color-primary: var(--vvd-action-group-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-intermediate: var(--vvd-action-group-accent-intermediate, var(--vvd-color-neutral-500));--_connotation-color-faint: var(--vvd-action-group-accent-faint, var(--vvd-color-neutral-50))}.base{--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--vvd-color-neutral-500)}.base.appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.base{position:relative;display:flex;box-sizing:border-box;align-items:center;background-color:var(--_appearance-color-fill);inline-size:inherit;vertical-align:middle}.base:before{position:absolute;z-index:1;border-radius:inherit;box-shadow:inset 0 0 0 1px var(--_appearance-color-outline);content:\"\";inset:0;pointer-events:none}.base:not(.tight){padding:4px;column-gap:4px}.base:not(.shape-pill){border-radius:8px}.base.shape-pill{border-radius:24px}::slotted([role=separator]){align-self:stretch;margin-block:4px}";
5
+ const styles = ":host{display:inline-block}.base{--_connotation-color-primary: var(--vvd-action-group-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-intermediate: var(--vvd-action-group-accent-intermediate, var(--vvd-color-neutral-500));--_connotation-color-faint: var(--vvd-action-group-accent-faint, var(--vvd-color-neutral-50))}.base{--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--vvd-color-neutral-500)}.base.appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.base{position:relative;display:flex;box-sizing:border-box;align-items:center;background-color:var(--_appearance-color-fill);inline-size:inherit;vertical-align:middle}.base:before{position:absolute;z-index:1;border-radius:inherit;box-shadow:inset 0 0 0 1px var(--_appearance-color-outline);content:\"\";inset:0;pointer-events:none}.base:not(.tight){padding:4px;column-gap:4px}.base:not(.shape-pill){border-radius:8px}.base.shape-pill{border-radius:24px}::slotted([data-vvd-component=divider]){align-self:stretch;margin-block:4px}";
6
6
 
7
7
  var __defProp = Object.defineProperty;
8
8
  var __decorateClass = (decorators, target, key, kind) => {
@@ -12,7 +12,7 @@ const ref = require('./ref.cjs');
12
12
  const classNames = require('./class-names.cjs');
13
13
  const slotted = require('./slotted.cjs');
14
14
 
15
- const styles = ":host{display:var(--_popup-display, inline)}:host([slotted-anchor]){--_popup-display: contents}.base{display:flex;overflow:hidden auto;box-sizing:border-box;flex-direction:column;gap:8px;inline-size:max-content;max-block-size:var(--menu-block-size, 408px);min-inline-size:var(--menu-min-inline-size);padding-block:8px}@media not all and (width >= 600px){.base{max-inline-size:var(--menu-max-inline-size, 300px)}}@media (width >= 600px){.base{max-inline-size:var(--menu-max-inline-size)}}::slotted(a){color:var(--vvd-color-canvas-text);text-decoration:none}::slotted(a[role=menuitem]:focus-visible){box-shadow:0 0 0 4px color-mix(in srgb,var(--vvd-color-cta-500),transparent 85%),inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:1px solid var(--focus-stroke-color, var(--vvd-color-cta-500));outline-offset:calc(-1px - var(--focus-inset, 0px));--focus-stroke-gap-color: transparent;display:block}.header{padding-block-start:4px;padding-inline:12px}.hide-header .header{display:none}.body{display:flex;flex-direction:column;row-gap:1px}.hide-body .body{display:none}.action-items{display:flex;justify-content:flex-end;gap:8px;padding-block-end:4px;padding-inline:12px}.hide-actions .action-items{display:none}";
15
+ const styles = ":host{display:var(--_popup-display, inline)}:host([slotted-anchor]){--_popup-display: contents}.base{display:flex;overflow:hidden auto;box-sizing:border-box;flex-direction:column;gap:8px;inline-size:max-content;max-block-size:var(--menu-block-size, 408px);min-inline-size:var(--menu-min-inline-size);padding-block:8px}@media not all and (width >= 600px){.base{max-inline-size:var(--menu-max-inline-size, 300px)}}@media (width >= 600px){.base{max-inline-size:var(--menu-max-inline-size)}}::slotted(a){color:var(--vvd-color-canvas-text);text-decoration:none}::slotted(a[data-vvd-component=menuitem]:focus-visible){box-shadow:0 0 0 4px color-mix(in srgb,var(--vvd-color-cta-500),transparent 85%),inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:1px solid var(--focus-stroke-color, var(--vvd-color-cta-500));outline-offset:calc(-1px - var(--focus-inset, 0px));--focus-stroke-gap-color: transparent;display:block}.header{padding-block-start:4px;padding-inline:12px}.hide-header .header{display:none}.body{display:flex;flex-direction:column;row-gap:1px}.hide-body .body{display:none}.action-items{display:flex;justify-content:flex-end;gap:8px;padding-block-end:4px;padding-inline:12px}.hide-actions .action-items{display:none}";
16
16
 
17
17
  var __defProp = Object.defineProperty;
18
18
  var __decorateClass = (decorators, target, key, kind) => {
@@ -10,7 +10,7 @@ import { r as ref } from './ref.js';
10
10
  import { c as classNames } from './class-names.js';
11
11
  import { s as slotted } from './slotted.js';
12
12
 
13
- const styles = ":host{display:var(--_popup-display, inline)}:host([slotted-anchor]){--_popup-display: contents}.base{display:flex;overflow:hidden auto;box-sizing:border-box;flex-direction:column;gap:8px;inline-size:max-content;max-block-size:var(--menu-block-size, 408px);min-inline-size:var(--menu-min-inline-size);padding-block:8px}@media not all and (width >= 600px){.base{max-inline-size:var(--menu-max-inline-size, 300px)}}@media (width >= 600px){.base{max-inline-size:var(--menu-max-inline-size)}}::slotted(a){color:var(--vvd-color-canvas-text);text-decoration:none}::slotted(a[role=menuitem]:focus-visible){box-shadow:0 0 0 4px color-mix(in srgb,var(--vvd-color-cta-500),transparent 85%),inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:1px solid var(--focus-stroke-color, var(--vvd-color-cta-500));outline-offset:calc(-1px - var(--focus-inset, 0px));--focus-stroke-gap-color: transparent;display:block}.header{padding-block-start:4px;padding-inline:12px}.hide-header .header{display:none}.body{display:flex;flex-direction:column;row-gap:1px}.hide-body .body{display:none}.action-items{display:flex;justify-content:flex-end;gap:8px;padding-block-end:4px;padding-inline:12px}.hide-actions .action-items{display:none}";
13
+ const styles = ":host{display:var(--_popup-display, inline)}:host([slotted-anchor]){--_popup-display: contents}.base{display:flex;overflow:hidden auto;box-sizing:border-box;flex-direction:column;gap:8px;inline-size:max-content;max-block-size:var(--menu-block-size, 408px);min-inline-size:var(--menu-min-inline-size);padding-block:8px}@media not all and (width >= 600px){.base{max-inline-size:var(--menu-max-inline-size, 300px)}}@media (width >= 600px){.base{max-inline-size:var(--menu-max-inline-size)}}::slotted(a){color:var(--vvd-color-canvas-text);text-decoration:none}::slotted(a[data-vvd-component=menuitem]:focus-visible){box-shadow:0 0 0 4px color-mix(in srgb,var(--vvd-color-cta-500),transparent 85%),inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:1px solid var(--focus-stroke-color, var(--vvd-color-cta-500));outline-offset:calc(-1px - var(--focus-inset, 0px));--focus-stroke-gap-color: transparent;display:block}.header{padding-block-start:4px;padding-inline:12px}.hide-header .header{display:none}.body{display:flex;flex-direction:column;row-gap:1px}.hide-body .body{display:none}.action-items{display:flex;justify-content:flex-end;gap:8px;padding-block-end:4px;padding-inline:12px}.hide-actions .action-items{display:none}";
14
14
 
15
15
  var __defProp = Object.defineProperty;
16
16
  var __decorateClass = (decorators, target, key, kind) => {
@@ -92,7 +92,7 @@ const NavDisclosureTemplate = (context) => {
92
92
  ${(x) => affixIconTemplate(x.icon, affix.IconWrapper.Slot)}
93
93
  ${(x) => x.label}
94
94
  <slot name="meta"></slot>
95
- <${iconTag} class="toggleIcon" name=${(x) => x.open ? "chevron-up-solid" : "chevron-down-solid"}
95
+ <${iconTag} class="toggleIcon" name=${(x) => x.open ? "chevron-up-line" : "chevron-down-line"}
96
96
  aria-hidden="true"></${iconTag}>
97
97
  </summary>
98
98
  <div class="content" id="disclosure-content">
@@ -90,7 +90,7 @@ const NavDisclosureTemplate = (context) => {
90
90
  ${(x) => affixIconTemplate(x.icon, IconWrapper.Slot)}
91
91
  ${(x) => x.label}
92
92
  <slot name="meta"></slot>
93
- <${iconTag} class="toggleIcon" name=${(x) => x.open ? "chevron-up-solid" : "chevron-down-solid"}
93
+ <${iconTag} class="toggleIcon" name=${(x) => x.open ? "chevron-up-line" : "chevron-down-line"}
94
94
  aria-hidden="true"></${iconTag}>
95
95
  </summary>
96
96
  <div class="content" id="disclosure-content">
@@ -1,10 +1,11 @@
1
1
  'use strict';
2
2
 
3
- const definition = require('./definition11.cjs');
4
- const definition$1 = require('./definition23.cjs');
5
- const vividElement = require('./vivid-element.cjs');
6
- const definition$2 = require('./definition28.cjs');
3
+ const definition$1 = require('./definition11.cjs');
4
+ const definition$2 = require('./definition23.cjs');
5
+ const definition = require('./definition66.cjs');
6
+ const definition$3 = require('./definition28.cjs');
7
7
  const mixins = require('./mixins.cjs');
8
+ const vividElement = require('./vivid-element.cjs');
8
9
  const delegatesAria = require('./delegates-aria.cjs');
9
10
  const formAssociated = require('./form-associated.cjs');
10
11
  const withErrorText = require('./with-error-text.cjs');
@@ -38,6 +39,9 @@ function makeStep(element, direction) {
38
39
  const value = parseFloat(element.value);
39
40
  const stepUpValue = !isNaN(value) ? value + direction * element.step : element.min > 0 ? element.min : element.max < 0 ? element.max : !element.min ? direction * element.step : 0;
40
41
  element.value = Number(stepUpValue.toFixed(12)).toString();
42
+ element._updatedValueAnnouncement = element.locale.numberField.updatedValueAnnouncement(
43
+ element._presentationValue
44
+ );
41
45
  }
42
46
  const buildNumberPatterns = (decimalSeparator) => {
43
47
  const ds = decimalSeparator.source;
@@ -76,6 +80,7 @@ class NumberField extends mixins.WithFeedback(
76
80
  */
77
81
  this.isUserInput = false;
78
82
  this._presentationValue = "";
83
+ this._updatedValueAnnouncement = "";
79
84
  this.incrementButtonAriaLabel = null;
80
85
  this.decrementButtonAriaLabel = null;
81
86
  }
@@ -281,6 +286,9 @@ __decorateClass([
281
286
  __decorateClass([
282
287
  vividElement.observable
283
288
  ], NumberField.prototype, "_presentationValue");
289
+ __decorateClass([
290
+ vividElement.observable
291
+ ], NumberField.prototype, "_updatedValueAnnouncement");
284
292
  __decorateClass([
285
293
  vividElement.attr({ attribute: "increment-button-aria-label" })
286
294
  ], NumberField.prototype, "incrementButtonAriaLabel");
@@ -332,32 +340,32 @@ function getTabIndex(numberField) {
332
340
  return numberField.disabled || numberField.readOnly ? "-1" : null;
333
341
  }
334
342
  function numberControlButtons(context) {
335
- const buttonTag = context.tagFor(definition.Button);
343
+ const buttonTag = context.tagFor(definition$1.Button);
336
344
  const dividerTag = context.tagFor(divider.Divider);
337
345
  return vividElement.html`
338
- <div class="control-buttons"
339
- ?inert="${(x) => x.disabled || x.readOnly}">
340
- <${buttonTag} id="subtract" icon="minus-line"
341
- ?disabled="${(x) => x.disabled || x.readOnly}"
342
- aria-label=${(x) => x.decrementButtonAriaLabel || x.locale.numberField.decrementButtonLabel}
343
- shape="${setControlButtonShape}"
344
- type="button"
345
- size="${(x) => x.scale === "condensed" ? "super-condensed" : "condensed"}"
346
- tabindex="${getTabIndex}"
347
- @click="${(x) => x.stepDown()}"></${buttonTag}>
348
- <${dividerTag} class="divider" orientation="vertical"></${dividerTag}>
349
- <${buttonTag} id="add" icon="plus-line"
350
- ?disabled="${(x) => x.disabled || x.readOnly}"
351
- aria-label=${(x) => x.incrementButtonAriaLabel || x.locale.numberField.incrementButtonLabel}
352
- shape="${setControlButtonShape}"
353
- type="button"
354
- size="${(x) => x.scale === "condensed" ? "super-condensed" : "condensed"}"
355
- tabindex="${getTabIndex}"
356
- @click="${(x) => x.stepUp()}"></${buttonTag}>
357
- </div>
346
+ <div class="control-buttons" ?inert="${(x) => x.disabled || x.readOnly}">
347
+ <${buttonTag} id="subtract" icon="minus-line"
348
+ ?disabled="${(x) => x.disabled || x.readOnly}"
349
+ aria-label=${(x) => x.decrementButtonAriaLabel || x.locale.numberField.decrementButtonLabel(x.step)}
350
+ shape="${setControlButtonShape}"
351
+ type="button"
352
+ size="${(x) => x.scale === "condensed" ? "super-condensed" : "condensed"}"
353
+ tabindex="${getTabIndex}"
354
+ @click="${(x) => x.stepDown()}"></${buttonTag}>
355
+ <${dividerTag} class="divider" orientation="vertical"></${dividerTag}>
356
+ <${buttonTag} id="add" icon="plus-line"
357
+ ?disabled="${(x) => x.disabled || x.readOnly}"
358
+ aria-label=${(x) => x.incrementButtonAriaLabel || x.locale.numberField.incrementButtonLabel(x.step)}
359
+ shape="${setControlButtonShape}"
360
+ type="button"
361
+ size="${(x) => x.scale === "condensed" ? "super-condensed" : "condensed"}"
362
+ tabindex="${getTabIndex}"
363
+ @click="${(x) => x.stepUp()}"></${buttonTag}>
364
+ </div>
358
365
  `;
359
366
  }
360
367
  const NumberFieldTemplate = (context) => {
368
+ const visuallyHiddenTag = context.tagFor(definition.VisuallyHidden);
361
369
  return vividElement.html`
362
370
  <div class="base ${getStateClasses}">
363
371
  ${when.when((x) => x.label, renderLabel())}
@@ -391,6 +399,8 @@ const NumberFieldTemplate = (context) => {
391
399
  ${() => numberControlButtons(context)}
392
400
  </div>
393
401
  ${(x) => x._getFeedbackTemplate(context)}
402
+ <${visuallyHiddenTag} id="value-announcement" role="status" aria-atomic="true">
403
+ ${(x) => x._updatedValueAnnouncement}</${visuallyHiddenTag}>
394
404
  </div>
395
405
  `;
396
406
  };
@@ -400,10 +410,11 @@ const numberFieldDefinition = vividElement.defineVividComponent(
400
410
  NumberField,
401
411
  NumberFieldTemplate,
402
412
  [
403
- definition.buttonDefinition,
404
- definition$1.dividerDefinition,
405
- definition$2.iconDefinition,
406
- mixins.feedbackMessageDefinition
413
+ definition$1.buttonDefinition,
414
+ definition$2.dividerDefinition,
415
+ definition$3.iconDefinition,
416
+ mixins.feedbackMessageDefinition,
417
+ definition.visuallyHiddenDefinition
407
418
  ],
408
419
  {
409
420
  styles,
@@ -1,8 +1,9 @@
1
1
  import { B as Button, b as buttonDefinition } from './definition11.js';
2
2
  import { d as dividerDefinition } from './definition23.js';
3
- import { D as DOM, V as VividElement, a as attr, n as nullableNumberConverter, o as observable, h as html, d as createRegisterFunction, f as defineVividComponent } from './vivid-element.js';
3
+ import { V as VisuallyHidden, v as visuallyHiddenDefinition } from './definition66.js';
4
4
  import { i as iconDefinition } from './definition28.js';
5
5
  import { a as WithFeedback, f as feedbackMessageDefinition } from './mixins.js';
6
+ import { D as DOM, V as VividElement, a as attr, n as nullableNumberConverter, o as observable, h as html, d as createRegisterFunction, f as defineVividComponent } from './vivid-element.js';
6
7
  import { D as DelegatesAria, d as delegateAria } from './delegates-aria.js';
7
8
  import { F as FormAssociated } from './form-associated.js';
8
9
  import { W as WithErrorText } from './with-error-text.js';
@@ -36,6 +37,9 @@ function makeStep(element, direction) {
36
37
  const value = parseFloat(element.value);
37
38
  const stepUpValue = !isNaN(value) ? value + direction * element.step : element.min > 0 ? element.min : element.max < 0 ? element.max : !element.min ? direction * element.step : 0;
38
39
  element.value = Number(stepUpValue.toFixed(12)).toString();
40
+ element._updatedValueAnnouncement = element.locale.numberField.updatedValueAnnouncement(
41
+ element._presentationValue
42
+ );
39
43
  }
40
44
  const buildNumberPatterns = (decimalSeparator) => {
41
45
  const ds = decimalSeparator.source;
@@ -74,6 +78,7 @@ class NumberField extends WithFeedback(
74
78
  */
75
79
  this.isUserInput = false;
76
80
  this._presentationValue = "";
81
+ this._updatedValueAnnouncement = "";
77
82
  this.incrementButtonAriaLabel = null;
78
83
  this.decrementButtonAriaLabel = null;
79
84
  }
@@ -279,6 +284,9 @@ __decorateClass([
279
284
  __decorateClass([
280
285
  observable
281
286
  ], NumberField.prototype, "_presentationValue");
287
+ __decorateClass([
288
+ observable
289
+ ], NumberField.prototype, "_updatedValueAnnouncement");
282
290
  __decorateClass([
283
291
  attr({ attribute: "increment-button-aria-label" })
284
292
  ], NumberField.prototype, "incrementButtonAriaLabel");
@@ -333,29 +341,29 @@ function numberControlButtons(context) {
333
341
  const buttonTag = context.tagFor(Button);
334
342
  const dividerTag = context.tagFor(Divider);
335
343
  return html`
336
- <div class="control-buttons"
337
- ?inert="${(x) => x.disabled || x.readOnly}">
338
- <${buttonTag} id="subtract" icon="minus-line"
339
- ?disabled="${(x) => x.disabled || x.readOnly}"
340
- aria-label=${(x) => x.decrementButtonAriaLabel || x.locale.numberField.decrementButtonLabel}
341
- shape="${setControlButtonShape}"
342
- type="button"
343
- size="${(x) => x.scale === "condensed" ? "super-condensed" : "condensed"}"
344
- tabindex="${getTabIndex}"
345
- @click="${(x) => x.stepDown()}"></${buttonTag}>
346
- <${dividerTag} class="divider" orientation="vertical"></${dividerTag}>
347
- <${buttonTag} id="add" icon="plus-line"
348
- ?disabled="${(x) => x.disabled || x.readOnly}"
349
- aria-label=${(x) => x.incrementButtonAriaLabel || x.locale.numberField.incrementButtonLabel}
350
- shape="${setControlButtonShape}"
351
- type="button"
352
- size="${(x) => x.scale === "condensed" ? "super-condensed" : "condensed"}"
353
- tabindex="${getTabIndex}"
354
- @click="${(x) => x.stepUp()}"></${buttonTag}>
355
- </div>
344
+ <div class="control-buttons" ?inert="${(x) => x.disabled || x.readOnly}">
345
+ <${buttonTag} id="subtract" icon="minus-line"
346
+ ?disabled="${(x) => x.disabled || x.readOnly}"
347
+ aria-label=${(x) => x.decrementButtonAriaLabel || x.locale.numberField.decrementButtonLabel(x.step)}
348
+ shape="${setControlButtonShape}"
349
+ type="button"
350
+ size="${(x) => x.scale === "condensed" ? "super-condensed" : "condensed"}"
351
+ tabindex="${getTabIndex}"
352
+ @click="${(x) => x.stepDown()}"></${buttonTag}>
353
+ <${dividerTag} class="divider" orientation="vertical"></${dividerTag}>
354
+ <${buttonTag} id="add" icon="plus-line"
355
+ ?disabled="${(x) => x.disabled || x.readOnly}"
356
+ aria-label=${(x) => x.incrementButtonAriaLabel || x.locale.numberField.incrementButtonLabel(x.step)}
357
+ shape="${setControlButtonShape}"
358
+ type="button"
359
+ size="${(x) => x.scale === "condensed" ? "super-condensed" : "condensed"}"
360
+ tabindex="${getTabIndex}"
361
+ @click="${(x) => x.stepUp()}"></${buttonTag}>
362
+ </div>
356
363
  `;
357
364
  }
358
365
  const NumberFieldTemplate = (context) => {
366
+ const visuallyHiddenTag = context.tagFor(VisuallyHidden);
359
367
  return html`
360
368
  <div class="base ${getStateClasses}">
361
369
  ${when((x) => x.label, renderLabel())}
@@ -389,6 +397,8 @@ const NumberFieldTemplate = (context) => {
389
397
  ${() => numberControlButtons(context)}
390
398
  </div>
391
399
  ${(x) => x._getFeedbackTemplate(context)}
400
+ <${visuallyHiddenTag} id="value-announcement" role="status" aria-atomic="true">
401
+ ${(x) => x._updatedValueAnnouncement}</${visuallyHiddenTag}>
392
402
  </div>
393
403
  `;
394
404
  };
@@ -401,7 +411,8 @@ const numberFieldDefinition = defineVividComponent(
401
411
  buttonDefinition,
402
412
  dividerDefinition,
403
413
  iconDefinition,
404
- feedbackMessageDefinition
414
+ feedbackMessageDefinition,
415
+ visuallyHiddenDefinition
405
416
  ],
406
417
  {
407
418
  styles,
@@ -2,6 +2,7 @@
2
2
 
3
3
  const definition = require('./definition11.cjs');
4
4
  const vividElement = require('./vivid-element.cjs');
5
+ const localized = require('./localized.cjs');
5
6
  const enums = require('./enums.cjs');
6
7
  const slotted = require('./slotted.cjs');
7
8
  const classNames = require('./class-names.cjs');
@@ -27,7 +28,7 @@ const totalConverter = {
27
28
  fromView: (value) => parseInt(value, 10),
28
29
  toView: (value) => value.toString()
29
30
  };
30
- class Pagination extends vividElement.VividElement {
31
+ class Pagination extends localized.Localized(vividElement.VividElement) {
31
32
  constructor() {
32
33
  super();
33
34
  this.navIcons = false;
@@ -169,21 +170,25 @@ const paginationButtonRenderer = (buttonTag) => vividElement.html` ${when.when(
169
170
  (value) => value !== "...",
170
171
  vividElement.html`
171
172
  <${buttonTag} class="vwc-pagination-button"
172
- label="${(value) => value}"
173
- appearance="${getButtonAppearance}"
174
- size="${(_, { parent: x }) => getPaginationSize(x)}"
175
- shape="${(_, { parent: x }) => getPaginationShape(x)}"
176
- style="inline-size: ${(value) => getPaginationButtonWidth(value)};"
177
- tabindex="0"
178
- aria-current="${(value, { parent }) => parent.selectedIndex === Number(value) - 1}"
179
- @click="${handleSelection}"
180
- @keydown="${handleKeyDown}">
173
+ label="${(value) => value}"
174
+ appearance="${getButtonAppearance}"
175
+ size="${(_, { parent: x }) => getPaginationSize(x)}"
176
+ shape="${(_, { parent: x }) => getPaginationShape(x)}"
177
+ style="inline-size: ${(value) => getPaginationButtonWidth(value)};"
178
+ tabindex="0"
179
+ aria-label="${(value, { parent: x }) => x.locale.pagination.goToPageLabel(value)}"
180
+ aria-current="${(value, { parent }) => parent.selectedIndex === Number(value) - 1}"
181
+ @click="${handleSelection}"
182
+ @keydown="${handleKeyDown}">
181
183
  </${buttonTag}>
182
184
  `
183
185
  )}
184
186
  ${when.when(
185
187
  (value) => value === "...",
186
- vividElement.html` <div class="dots size-${(_, { parent: x }) => getPaginationSize(x)}">
188
+ vividElement.html` <div
189
+ class="dots size-${(_, { parent: x }) => getPaginationSize(x)}"
190
+ aria-hidden="true"
191
+ >
187
192
  ...
188
193
  </div>`
189
194
  )}`;
@@ -208,12 +213,13 @@ const PaginationTemplate = (context) => {
208
213
  return vividElement.html`
209
214
  <div class="${getClasses}">
210
215
  <${buttonTag} class="prev-button" ${ref.ref("prevButton")}
211
- label="${(x) => !x.navIcons ? "Previous" : null}"
212
- icon="${(x) => x.navIcons ? "chevron-left-line" : null}"
213
- size="${getPaginationSize}"
214
- shape="${getPaginationShape}"
215
- ?disabled="${(x) => x.total === 0 || x.selectedIndex === 0}"
216
- @click="${(x) => x.selectedIndex !== void 0 && x.selectedIndex--}"
216
+ label="${(x) => !x.navIcons ? "Previous" : null}"
217
+ icon="${(x) => x.navIcons ? "chevron-left-line" : null}"
218
+ size="${getPaginationSize}"
219
+ shape="${getPaginationShape}"
220
+ ?disabled="${(x) => x.total === 0 || x.selectedIndex === 0}"
221
+ @click="${(x) => x.selectedIndex !== void 0 && x.selectedIndex--}"
222
+ aria-label="${(x) => x.locale.pagination.previousPageLabel}"
217
223
  ></${buttonTag}>
218
224
  <div id="buttons-wrapper" class="buttons-wrapper" ${children.children({
219
225
  property: "paginationButtons",
@@ -222,12 +228,13 @@ const PaginationTemplate = (context) => {
222
228
  ${repeat.repeat((x) => x.pagesList, paginationButtonTemplate, { positioning: true })}
223
229
  </div>
224
230
  <${buttonTag} class="next-button" ${ref.ref("nextButton")}
225
- label="${(x) => !x.navIcons ? "Next" : null}"
226
- icon="${(x) => x.navIcons ? "chevron-right-line" : null}"
227
- size="${getPaginationSize}"
228
- shape="${getPaginationShape}"
229
- ?disabled="${(x) => x.total === 0 || x.selectedIndex === x.total - 1}"
230
- @click="${(x) => x.selectedIndex !== void 0 && x.selectedIndex++}"
231
+ label="${(x) => !x.navIcons ? "Next" : null}"
232
+ icon="${(x) => x.navIcons ? "chevron-right-line" : null}"
233
+ size="${getPaginationSize}"
234
+ shape="${getPaginationShape}"
235
+ ?disabled="${(x) => x.total === 0 || x.selectedIndex === x.total - 1}"
236
+ @click="${(x) => x.selectedIndex !== void 0 && x.selectedIndex++}"
237
+ aria-label="${(x) => x.locale.pagination.nextPageLabel}"
231
238
  ></${buttonTag}>
232
239
  </div>`;
233
240
  };