@vonage/vivid 5.23.1 → 5.24.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 (406) hide show
  1. package/accordion/index.cjs +1 -1
  2. package/accordion/index.js +1 -1
  3. package/accordion-item/index.cjs +1 -1
  4. package/accordion-item/index.js +1 -1
  5. package/audio-player/index.cjs +2 -2
  6. package/audio-player/index.js +3 -3
  7. package/badge/index.cjs +1 -1
  8. package/badge/index.js +1 -1
  9. package/bundled/definition15.cjs +8 -7
  10. package/bundled/definition15.js +26 -24
  11. package/bundled/definition17.cjs +2 -2
  12. package/bundled/definition17.js +2 -2
  13. package/bundled/definition18.cjs +12 -83
  14. package/bundled/definition18.js +35 -419
  15. package/bundled/definition19.cjs +87 -7
  16. package/bundled/definition19.js +432 -16
  17. package/bundled/definition20.cjs +7 -37
  18. package/bundled/definition20.js +17 -172
  19. package/bundled/definition21.cjs +35 -27
  20. package/bundled/definition21.js +154 -154
  21. package/bundled/definition22.cjs +29 -6
  22. package/bundled/definition22.js +172 -20
  23. package/bundled/definition23.cjs +6 -12
  24. package/bundled/definition23.js +17 -32
  25. package/bundled/definition24.cjs +12 -39
  26. package/bundled/definition24.js +32 -67
  27. package/bundled/definition25.cjs +44 -0
  28. package/bundled/definition25.js +77 -0
  29. package/bundled/extractOptions.cjs +1 -0
  30. package/bundled/extractOptions.js +11 -0
  31. package/bundled/listbox.cjs +1 -1
  32. package/bundled/listbox.js +24 -11
  33. package/bundled/render-in-light-dom.cjs +1 -1
  34. package/bundled/render-in-light-dom.js +16 -19
  35. package/bundled/vivid-element.cjs +1 -1
  36. package/bundled/vivid-element.js +9 -1
  37. package/combobox/definition.cjs +1 -1
  38. package/combobox/definition.js +1 -1
  39. package/combobox/index.cjs +7 -7
  40. package/combobox/index.js +29 -21
  41. package/country/definition.cjs +1 -1
  42. package/country/definition.js +1 -1
  43. package/country/index.cjs +1 -1
  44. package/country/index.js +1 -1
  45. package/country-group/definition.cjs +1 -1
  46. package/country-group/definition.js +1 -1
  47. package/country-group/index.cjs +1 -1
  48. package/country-group/index.js +2 -2
  49. package/custom-elements.json +3102 -2842
  50. package/data-grid/definition.cjs +1 -1
  51. package/data-grid/definition.js +1 -1
  52. package/data-grid/index.cjs +4 -4
  53. package/data-grid/index.js +5 -5
  54. package/date-picker/definition.cjs +1 -1
  55. package/date-picker/definition.js +1 -1
  56. package/date-picker/index.cjs +1 -1
  57. package/date-picker/index.js +1 -1
  58. package/date-range-picker/definition.cjs +1 -1
  59. package/date-range-picker/definition.js +1 -1
  60. package/date-range-picker/index.cjs +1 -1
  61. package/date-range-picker/index.js +1 -1
  62. package/date-time-picker/definition.cjs +1 -1
  63. package/date-time-picker/definition.js +1 -1
  64. package/date-time-picker/index.cjs +1 -1
  65. package/date-time-picker/index.js +1 -1
  66. package/dial-pad/definition.cjs +1 -1
  67. package/dial-pad/definition.js +1 -1
  68. package/dial-pad/index.cjs +24 -24
  69. package/dial-pad/index.js +120 -51
  70. package/dialog/definition.cjs +1 -1
  71. package/dialog/definition.js +1 -1
  72. package/divider/definition.cjs +1 -1
  73. package/divider/definition.js +1 -1
  74. package/divider/index.cjs +1 -1
  75. package/divider/index.js +1 -1
  76. package/empty-state/definition.cjs +1 -1
  77. package/empty-state/definition.js +1 -1
  78. package/fab/definition.cjs +1 -1
  79. package/fab/definition.js +1 -1
  80. package/file-picker/definition.cjs +1 -1
  81. package/file-picker/definition.js +1 -1
  82. package/flag/definition.cjs +1 -1
  83. package/flag/definition.js +1 -1
  84. package/header/definition.cjs +1 -1
  85. package/header/definition.js +1 -1
  86. package/header/index.cjs +3 -3
  87. package/header/index.js +3 -3
  88. package/index.cjs +200 -196
  89. package/index.js +53 -52
  90. package/kbd-key/definition.cjs +1 -1
  91. package/kbd-key/definition.js +1 -1
  92. package/kbd-shortcut/definition.cjs +1 -1
  93. package/kbd-shortcut/definition.js +1 -1
  94. package/layout/definition.cjs +1 -1
  95. package/layout/definition.js +1 -1
  96. package/lib/accordion-item/accordion-item.d.ts +2 -1
  97. package/lib/action-group/action-group.d.ts +1 -1
  98. package/lib/alert/alert.d.ts +2 -2
  99. package/lib/audio-player/audio-player.d.ts +1 -1
  100. package/lib/avatar/avatar.d.ts +1 -1
  101. package/lib/badge/badge.d.ts +1 -1
  102. package/lib/banner/banner.d.ts +3 -3
  103. package/lib/breadcrumb/breadcrumb.d.ts +1 -1
  104. package/lib/breadcrumb-item/breadcrumb-item.d.ts +1 -1
  105. package/lib/button/button.d.ts +3 -3
  106. package/lib/calendar-event/calendar-event.d.ts +1 -1
  107. package/lib/card/card.d.ts +1 -1
  108. package/lib/checkbox/checkbox.d.ts +6 -6
  109. package/lib/color-picker/color-picker.d.ts +7 -7
  110. package/lib/combobox/combobox.d.ts +7 -7
  111. package/lib/components.d.ts +1 -0
  112. package/lib/country-group/country-group.d.ts +2 -2
  113. package/lib/data-grid/data-grid-cell.d.ts +4 -3
  114. package/lib/data-grid/data-grid-row.d.ts +3 -2
  115. package/lib/data-grid/data-grid.options.d.ts +5 -0
  116. package/lib/date-picker/date-picker.d.ts +8 -8
  117. package/lib/date-range-picker/date-range-picker.d.ts +4 -4
  118. package/lib/date-time-picker/date-time-picker.d.ts +8 -8
  119. package/lib/dial-pad/dial-pad.d.ts +2 -1
  120. package/lib/dialog/dialog.d.ts +2 -2
  121. package/lib/divider/divider.d.ts +1 -1
  122. package/lib/fab/fab.d.ts +1 -1
  123. package/lib/file-picker/file-picker.d.ts +7 -7
  124. package/lib/header/header.d.ts +1 -1
  125. package/lib/menu/menu.d.ts +2 -2
  126. package/lib/menu-item/menu-item.d.ts +3 -3
  127. package/lib/nav/nav.d.ts +1 -1
  128. package/lib/nav-disclosure/nav-disclosure.d.ts +2 -2
  129. package/lib/nav-item/nav-item.d.ts +2 -2
  130. package/lib/note/note.d.ts +1 -1
  131. package/lib/number-field/number-field.d.ts +9 -9
  132. package/lib/optgroup/definition.d.ts +3 -0
  133. package/lib/optgroup/index.d.ts +1 -0
  134. package/lib/optgroup/optgroup.d.ts +430 -0
  135. package/lib/optgroup/optgroup.template.d.ts +2 -0
  136. package/lib/optgroup/variations.browser-spec.d.ts +1 -0
  137. package/lib/option/option.d.ts +2 -2
  138. package/lib/pagination/pagination.d.ts +1 -1
  139. package/lib/popover/popover.d.ts +2 -2
  140. package/lib/progress/progress.d.ts +1 -1
  141. package/lib/progress-ring/progress-ring.d.ts +1 -1
  142. package/lib/radio/radio.d.ts +3 -3
  143. package/lib/radio-group/radio-group.d.ts +1 -1
  144. package/lib/range-slider/range-slider.d.ts +3 -3
  145. package/lib/rich-text-editor/rich-text-editor.d.ts +1 -1
  146. package/lib/searchable-select/option-tag.d.ts +1 -1
  147. package/lib/searchable-select/searchable-select.d.ts +47 -47
  148. package/lib/select/select.d.ts +9 -9
  149. package/lib/selectable-box/selectable-box.d.ts +1 -1
  150. package/lib/simple-color-picker/simple-color-picker.d.ts +2 -2
  151. package/lib/slider/slider.d.ts +3 -3
  152. package/lib/split-button/split-button.d.ts +3 -3
  153. package/lib/status/status.d.ts +1 -1
  154. package/lib/switch/switch.d.ts +2 -2
  155. package/lib/tab/tab.d.ts +3 -3
  156. package/lib/tab-panel/tab-panel.d.ts +1 -1
  157. package/lib/table/table-cell.d.ts +1 -1
  158. package/lib/table/table-header-cell.d.ts +1 -1
  159. package/lib/table/table-row.d.ts +1 -1
  160. package/lib/table/table-sorting-button.d.ts +1 -1
  161. package/lib/tag/tag.d.ts +3 -3
  162. package/lib/tag-group/tag-group.d.ts +1 -1
  163. package/lib/tag-name-map.d.ts +2 -1
  164. package/lib/text-area/text-area.d.ts +8 -8
  165. package/lib/text-field/text-field.d.ts +9 -9
  166. package/lib/time-picker/time-picker.d.ts +4 -4
  167. package/lib/toggletip/toggletip.d.ts +2 -2
  168. package/lib/tooltip/tooltip.d.ts +2 -2
  169. package/lib/tree-item/tree-item.d.ts +2 -2
  170. package/lib/tree-view/tree-view.d.ts +1 -1
  171. package/lib/video-player/video-player.d.ts +1 -1
  172. package/menu/index.cjs +1 -1
  173. package/menu/index.js +1 -1
  174. package/menu-item/index.cjs +1 -1
  175. package/menu-item/index.js +1 -1
  176. package/nav/definition.cjs +1 -1
  177. package/nav/definition.js +1 -1
  178. package/nav-disclosure/definition.cjs +1 -1
  179. package/nav-disclosure/definition.js +1 -1
  180. package/nav-item/definition.cjs +1 -1
  181. package/nav-item/definition.js +1 -1
  182. package/note/definition.cjs +1 -1
  183. package/note/definition.js +1 -1
  184. package/number-field/definition.cjs +1 -1
  185. package/number-field/definition.js +1 -1
  186. package/number-field/index.cjs +1 -1
  187. package/number-field/index.js +1 -1
  188. package/optgroup/definition.cjs +5 -0
  189. package/optgroup/definition.js +2 -0
  190. package/optgroup/index.cjs +1 -0
  191. package/optgroup/index.js +4 -0
  192. package/package.json +6 -6
  193. package/pagination/definition.cjs +1 -1
  194. package/pagination/definition.js +1 -1
  195. package/platform-switch/definition.cjs +1 -1
  196. package/platform-switch/definition.js +1 -1
  197. package/popover/definition.cjs +1 -1
  198. package/popover/definition.js +1 -1
  199. package/progress/definition.cjs +1 -1
  200. package/progress/definition.js +1 -1
  201. package/radio/definition.cjs +1 -1
  202. package/radio/definition.js +1 -1
  203. package/radio-group/definition.cjs +1 -1
  204. package/radio-group/definition.js +1 -1
  205. package/range-slider/definition.cjs +1 -1
  206. package/range-slider/definition.js +1 -1
  207. package/rich-text-editor/definition.cjs +1 -1
  208. package/rich-text-editor/definition.js +1 -1
  209. package/rich-text-editor/index.cjs +1 -1
  210. package/rich-text-editor/index.js +4 -4
  211. package/rich-text-view/definition.cjs +1 -1
  212. package/rich-text-view/definition.js +1 -1
  213. package/searchable-select/definition.cjs +1 -1
  214. package/searchable-select/definition.js +1 -1
  215. package/searchable-select/index.cjs +19 -19
  216. package/searchable-select/index.js +60 -45
  217. package/select/definition.cjs +1 -1
  218. package/select/definition.js +1 -1
  219. package/select/index.cjs +1 -1
  220. package/select/index.js +1 -1
  221. package/selectable-box/definition.cjs +1 -1
  222. package/selectable-box/definition.js +1 -1
  223. package/shared/aria/delegates-aria.d.ts +1 -1
  224. package/shared/aria/host-semantics.d.ts +1 -1
  225. package/shared/color-picker/base-color-picker.d.ts +1 -1
  226. package/shared/feedback/feedback-message.d.ts +1 -1
  227. package/shared/feedback/mixins.d.ts +2 -2
  228. package/shared/foundation/button/button.d.ts +2 -2
  229. package/shared/foundation/form-associated/form-associated.d.ts +2 -2
  230. package/shared/foundation/listbox/extractOptions.d.ts +2 -0
  231. package/shared/foundation/listbox/listbox.d.ts +2 -0
  232. package/shared/patterns/affix.d.ts +2 -2
  233. package/shared/patterns/anchored.d.ts +2 -2
  234. package/shared/patterns/char-count/char-count.d.ts +1 -1
  235. package/shared/patterns/form-elements/form-element.d.ts +1 -1
  236. package/shared/patterns/form-elements/with-contextual-help.d.ts +1 -1
  237. package/shared/patterns/form-elements/with-error-text.d.ts +1 -1
  238. package/shared/patterns/form-elements/with-success-text.d.ts +1 -1
  239. package/shared/patterns/kbd-shortcut.d.ts +1 -1
  240. package/shared/patterns/linkable.d.ts +1 -1
  241. package/shared/patterns/localized.d.ts +2 -2
  242. package/shared/patterns/trapped-focus.d.ts +1 -1
  243. package/shared/picker-field/mixins/calendar-picker.d.ts +2 -2
  244. package/shared/picker-field/mixins/calendar-picker.template.d.ts +2 -2
  245. package/shared/picker-field/mixins/inline-time-picker/inline-time-picker.d.ts +1 -1
  246. package/shared/picker-field/mixins/min-max-calendar-picker.d.ts +2 -2
  247. package/shared/picker-field/mixins/single-date-picker.d.ts +2 -2
  248. package/shared/picker-field/mixins/single-value-picker.d.ts +2 -2
  249. package/shared/picker-field/mixins/time-selection-picker.d.ts +2 -2
  250. package/shared/picker-field/mixins/time-selection-picker.template.d.ts +4 -4
  251. package/shared/picker-field/picker-field.d.ts +7 -7
  252. package/side-drawer/definition.cjs +1 -1
  253. package/side-drawer/definition.js +1 -1
  254. package/simple-color-picker/definition.cjs +1 -1
  255. package/simple-color-picker/definition.js +1 -1
  256. package/split-button/definition.cjs +1 -1
  257. package/split-button/definition.js +1 -1
  258. package/split-button/index.cjs +1 -0
  259. package/split-button/index.js +1 -0
  260. package/status/definition.cjs +1 -1
  261. package/status/definition.js +1 -1
  262. package/switch/definition.cjs +1 -1
  263. package/switch/definition.js +1 -1
  264. package/switch/index.cjs +6 -5
  265. package/switch/index.js +16 -14
  266. package/tab/definition.cjs +1 -1
  267. package/tab/definition.js +1 -1
  268. package/tab-panel/definition.cjs +1 -1
  269. package/tab-panel/definition.js +1 -1
  270. package/table/definition.cjs +1 -1
  271. package/table/definition.js +1 -1
  272. package/tabs/definition.cjs +1 -1
  273. package/tabs/definition.js +1 -1
  274. package/tag/definition.cjs +1 -1
  275. package/tag/definition.js +1 -1
  276. package/tag-group/definition.cjs +1 -1
  277. package/tag-group/definition.js +1 -1
  278. package/text-area/definition.cjs +1 -1
  279. package/text-area/definition.js +1 -1
  280. package/time-picker/definition.cjs +1 -1
  281. package/time-picker/definition.js +1 -1
  282. package/tree-item/definition.cjs +1 -1
  283. package/tree-item/definition.js +1 -1
  284. package/tree-view/definition.cjs +1 -1
  285. package/tree-view/definition.js +1 -1
  286. package/unbundled/definition13.cjs +1 -1
  287. package/unbundled/definition13.js +1 -1
  288. package/unbundled/definition2.cjs +9 -3
  289. package/unbundled/definition2.js +9 -3
  290. package/unbundled/definition23.cjs +1 -0
  291. package/unbundled/definition23.js +2 -1
  292. package/unbundled/definition29.cjs +2 -2
  293. package/unbundled/definition29.js +2 -2
  294. package/unbundled/definition30.cjs +65 -484
  295. package/unbundled/definition30.js +57 -482
  296. package/unbundled/definition31.cjs +501 -39
  297. package/unbundled/definition31.js +499 -37
  298. package/unbundled/definition32.cjs +38 -239
  299. package/unbundled/definition32.js +35 -236
  300. package/unbundled/definition33.cjs +236 -74
  301. package/unbundled/definition33.js +233 -71
  302. package/unbundled/definition34.cjs +74 -1968
  303. package/unbundled/definition34.js +70 -1940
  304. package/unbundled/definition35.cjs +1992 -26
  305. package/unbundled/definition35.js +1964 -27
  306. package/unbundled/definition36.cjs +26 -111
  307. package/unbundled/definition36.js +23 -103
  308. package/unbundled/definition37.cjs +53 -294
  309. package/unbundled/definition37.js +50 -291
  310. package/unbundled/definition38.cjs +282 -132
  311. package/unbundled/definition38.js +279 -129
  312. package/unbundled/definition39.cjs +165 -339
  313. package/unbundled/definition39.js +163 -337
  314. package/unbundled/definition40.cjs +394 -228
  315. package/unbundled/definition40.js +391 -225
  316. package/unbundled/definition41.cjs +263 -46
  317. package/unbundled/definition41.js +258 -41
  318. package/unbundled/definition42.cjs +47 -67
  319. package/unbundled/definition42.js +45 -65
  320. package/unbundled/definition43.cjs +56 -383
  321. package/unbundled/definition43.js +55 -382
  322. package/unbundled/definition44.cjs +386 -44
  323. package/unbundled/definition44.js +382 -40
  324. package/unbundled/definition45.cjs +53 -45
  325. package/unbundled/definition45.js +49 -41
  326. package/unbundled/definition46.cjs +40 -164
  327. package/unbundled/definition46.js +36 -160
  328. package/unbundled/definition47.cjs +171 -31
  329. package/unbundled/definition47.js +168 -22
  330. package/unbundled/definition48.cjs +30 -89
  331. package/unbundled/definition48.js +22 -87
  332. package/unbundled/definition49.cjs +70 -33
  333. package/unbundled/definition49.js +67 -30
  334. package/unbundled/definition50.cjs +54 -23
  335. package/unbundled/definition50.js +52 -18
  336. package/unbundled/definition51.cjs +23 -39
  337. package/unbundled/definition51.js +17 -36
  338. package/unbundled/definition52.cjs +29 -314
  339. package/unbundled/definition52.js +27 -312
  340. package/unbundled/definition53.cjs +301 -195
  341. package/unbundled/definition53.js +297 -191
  342. package/unbundled/definition54.cjs +210 -40
  343. package/unbundled/definition54.js +206 -36
  344. package/unbundled/definition55.cjs +42 -266
  345. package/unbundled/definition55.js +38 -262
  346. package/unbundled/definition56.cjs +266 -50
  347. package/unbundled/definition56.js +263 -46
  348. package/unbundled/definition57.cjs +48 -146
  349. package/unbundled/definition57.js +47 -143
  350. package/unbundled/definition58.cjs +127 -225
  351. package/unbundled/definition58.js +122 -223
  352. package/unbundled/definition59.cjs +199 -418
  353. package/unbundled/definition59.js +196 -415
  354. package/unbundled/definition60.cjs +441 -3738
  355. package/unbundled/definition60.js +431 -3565
  356. package/unbundled/definition61.cjs +3712 -728
  357. package/unbundled/definition61.js +3538 -717
  358. package/unbundled/definition62.cjs +769 -97
  359. package/unbundled/definition62.js +766 -94
  360. package/unbundled/definition63.cjs +100 -981
  361. package/unbundled/definition63.js +98 -976
  362. package/unbundled/definition64.cjs +988 -93
  363. package/unbundled/definition64.js +982 -90
  364. package/unbundled/definition65.cjs +109 -73
  365. package/unbundled/definition65.js +105 -63
  366. package/unbundled/definition66.cjs +69 -155
  367. package/unbundled/definition66.js +60 -152
  368. package/unbundled/definition67.cjs +154 -118
  369. package/unbundled/definition67.js +151 -115
  370. package/unbundled/definition68.cjs +124 -49
  371. package/unbundled/definition68.js +120 -45
  372. package/unbundled/definition69.cjs +51 -84
  373. package/unbundled/definition69.js +50 -80
  374. package/unbundled/definition70.cjs +91 -19
  375. package/unbundled/definition70.js +86 -14
  376. package/unbundled/definition71.cjs +20 -87
  377. package/unbundled/definition71.js +14 -84
  378. package/unbundled/definition72.cjs +76 -294
  379. package/unbundled/definition72.js +71 -217
  380. package/unbundled/definition73.cjs +288 -311
  381. package/unbundled/definition73.js +218 -306
  382. package/unbundled/definition74.cjs +326 -26
  383. package/unbundled/definition74.js +317 -23
  384. package/unbundled/definition75.cjs +27 -122
  385. package/unbundled/definition75.js +22 -118
  386. package/unbundled/definition76.cjs +103 -232
  387. package/unbundled/definition76.js +99 -228
  388. package/unbundled/definition77.cjs +259 -26
  389. package/unbundled/definition77.js +249 -23
  390. package/unbundled/definition78.cjs +29 -148
  391. package/unbundled/definition78.js +27 -133
  392. package/unbundled/definition79.cjs +117 -173
  393. package/unbundled/definition79.js +108 -169
  394. package/unbundled/definition80.cjs +181 -477
  395. package/unbundled/definition80.js +176 -471
  396. package/unbundled/definition81.cjs +517 -0
  397. package/unbundled/definition81.js +497 -0
  398. package/unbundled/extractOptions.cjs +21 -0
  399. package/unbundled/extractOptions.js +16 -0
  400. package/unbundled/listbox.cjs +23 -6
  401. package/unbundled/listbox.js +23 -6
  402. package/unbundled/vivid-element.cjs +10 -1
  403. package/unbundled/vivid-element.js +10 -1
  404. package/video-player/definition.cjs +1 -1
  405. package/video-player/definition.js +1 -1
  406. package/vivid.api.json +194 -0
@@ -2,294 +2,460 @@ require("./chunk.cjs");
2
2
  const require_vivid_element = require("./vivid-element.cjs");
3
3
  const require_definition = require("./definition.cjs");
4
4
  const require_decorate = require("./decorate.cjs");
5
- const require_delegates_aria = require("./delegates-aria.cjs");
6
5
  const require_localized = require("./localized.cjs");
7
6
  const require_definition$1 = require("./definition6.cjs");
8
- const require_definition$2 = require("./definition7.cjs");
9
- const require_dialog = require("./dialog.cjs");
7
+ const require_definition$2 = require("./definition22.cjs");
8
+ const require_definition$3 = require("./definition26.cjs");
10
9
  let _microsoft_fast_element = require("@microsoft/fast-element");
11
10
  let _microsoft_fast_web_utilities = require("@microsoft/fast-web-utilities");
12
- //#region src/lib/dialog/dialog.scss?inline
13
- var dialog_default = ".base{white-space:initial;box-sizing:border-box;color:var(--vvd-color-canvas-text);max-block-size:none;max-inline-size:var(--dialog-max-inline-size,var(--_dialog-default-max-inline-size));min-block-size:fit-content;min-inline-size:var(--dialog-min-inline-size,280px);background-color:#0000;border:none;border-radius:8px;padding:0}@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(--focus-stroke-color,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{box-sizing:border-box;flex-direction:column;gap:24px;padding-block:24px;display:flex}.main-wrapper>*{box-sizing:border-box}.header{justify-content:space-between;align-items:flex-start;inline-size:100%;padding-inline:24px;display:grid}.base:not(.icon-placement-side) .header{grid-template-rows:auto auto auto;grid-template-columns:1fr auto}.base:not(.icon-placement-side) .header .icon{font-size:calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2) - 8));grid-area:1/1/2/2;margin-block-end:calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2) - 16));line-height:1}.base.icon-placement-side .header{grid-template-rows:auto auto;grid-template-columns:auto 1fr auto}.base.icon-placement-side .header .icon{font-size:calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2) - 12))}.base.icon-placement-side .header ::slotted(*),.base.icon-placement-side .header .icon{grid-area:1/1/-1/2;margin-inline-end:calc(calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2) - 8)) / 2)}.header.border{position:relative}.header.border:after{background-color:var(--vvd-color-neutral-200);content:\"\";block-size:1px;inline-size:100%;position:absolute;bottom:-24px;left:0}.base.hide-body .header.border:after{content:none}.body:not(.full-width){padding-inline:24px}.hide-body .body{display:none}.scrollable-body .body{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%);scrollbar-color:var(--scrollbar-thumb-color) var(--scrollbar-track-color);scrollbar-width:thin;overflow:hidden auto}.scrollable-body .body ::-webkit-scrollbar{width:4px}.scrollable-body .body ::-webkit-scrollbar-track{background:var(--scrollbar-track-color)}.scrollable-body .body ::-webkit-scrollbar-thumb{background-color:var(--scrollbar-fallback-track-color,var(--scrollbar-thumb-color));border:0;border-radius:4px}.footer{justify-content:space-between;align-items:center;gap:24px;padding-inline:24px;display:flex}.hide-footer .footer{display:none}.footer .actions{align-self:flex-end;gap:8px;display:flex}.dismiss-button{flex-shrink:0;grid-area:1/-2/-1/-1;margin-block-start:-8px;margin-inline:4px -8px}.headline{font:var(--vvd-typography-heading-4);margin:0}.subtitle{font:var(--vvd-typography-base);margin:0}slot[name=main]{--scrollbar-track-color:transparent;--scrollbar-thumb-color:color-mix(in sRGB, var(--vvd-color-neutral-950), transparent 70%);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{background-color:var(--scrollbar-fallback-track-color,var(--scrollbar-thumb-color));border:0;border-radius:4px}slot[name=main]{max-width:inherit;max-height:inherit;border-radius:inherit;display:block;overflow:hidden auto}";
11
+ //#region src/lib/dial-pad/dial-pad.scss?inline
12
+ var dial_pad_default = ":host{inline-size:230px;margin:16px;display:inline-block}.base{box-sizing:border-box;grid-template-rows:80px 1fr auto;display:grid}.base.no-input{grid-template-rows:1fr auto}.digits{grid-template-rows:repeat(4,1fr);grid-template-columns:repeat(3,1fr);gap:16px;inline-size:100%;display:grid}.phone-field{grid-column:1/-1;align-self:flex-start}.digit-btn{--_appearance-color-text:var(--_connotation-color-firm-all);--_appearance-color-fill:transparent;--_appearance-color-outline:var(--_connotation-color-pale)}@media (hover:hover){.digit-btn:hover:where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text:var(--_connotation-color-firm-all);--_appearance-color-fill:transparent;--_appearance-color-outline:var(--_connotation-color-firm-all)}}.digit-btn.hover:where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text:var(--_connotation-color-firm-all);--_appearance-color-fill:transparent;--_appearance-color-outline:var(--_connotation-color-firm-all)}.digit-btn:disabled,.digit-btn.disabled{--_appearance-color-text:var(--vvd-color-neutral-300);--_appearance-color-fill:transparent;--_appearance-color-outline:var(--vvd-color-neutral-100)}.digit-btn{--_connotation-color-contrast:var(--vvd-dial-pad-accent-contrast,var(--vvd-color-neutral-800));--_connotation-color-soft:var(--vvd-dial-pad-accent-soft,var(--vvd-color-neutral-100));--_connotation-color-pale:var(--vvd-dial-pad-accent-pale,var(--vvd-color-neutral-300));--_connotation-color-fierce:var(--vvd-dial-pad-accent-fierce,var(--vvd-color-neutral-700));--_connotation-color-firm-all:var(--vvd-dial-pad-accent-firm-all,var(--vvd-color-neutral-600));--_connotation-color-faint:var(--vvd-dial-pad-accent-faint,var(--vvd-color-neutral-50));--_connotation-color-dim:var(--vvd-dial-pad-accent-dim,var(--vvd-color-neutral-200));--vvd-button-accent-firm:var(--_appearance-color-text);box-shadow:0 0 0 1px var(--_appearance-color-outline);border-radius:16px;flex-direction:column;inline-size:100%;display:flex;overflow:hidden}.digit-btn:not(.disabled) .digit-btn-num{color:var(--vvd-color-canvas-text)}.digit-btn:focus-within{--focus-stroke-gap-color:transparent;box-shadow:0 0 0 4px color-mix(in sRGB, var(--focus-stroke-color,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))}.call-btn{grid-column:1/-1;margin-block-start:32px}.base.size-condensed{grid-template-rows:60px 1fr auto}.base.size-condensed .digits{grid-template-rows:repeat(4,.85fr);gap:8px}.base.size-condensed .call-btn{margin-block-start:12px}.base.size-condensed .digit-btn-num{padding-top:6px}.base.size-condensed.no-letters .digit-btn-num{padding-top:0}";
14
13
  //#endregion
15
- //#region src/lib/dialog/dialog.ts
14
+ //#region src/lib/dial-pad/dial-pad.ts
16
15
  /**
16
+ * Base class for dial-pad
17
+ *
17
18
  * @public
18
- * @component dialog
19
- * @slot graphic - Use the graphic slot in order to replace the icon.
20
- * @slot body - Use the body slot in order to add custom HTML to the dialog.
21
- * @slot footer - Use the footer slot in order to add action buttons to the bottom of the dialog.
22
- * @slot main - Assign nodes to the main slot to fully override a dialog’s predefined flow and style with your own.
23
- * @slot action-items - Use the action-items slot in order to add action buttons to the bottom of the dialog.
24
- * @event {CustomEvent<undefined>} open - The `open` event fires when the dialog opens.
25
- * @event {CustomEvent<string>} close - The `close` event fires when the dialog closes (either via user interaction or via the API). It returns the return value inside the event's details property.
26
- * @event {CustomEvent<undefined>} cancel - The `cancel` event fires when the user requests to close the dialog. You can prevent the dialog from closing by calling `.preventDefault()` on the event.
27
- * @vueModel open open open,close `event.currentTarget.open`
28
- * @testSelector byHeadline byHeadline
29
- * @testAction dismiss click #dismissButton
30
- * @testQuery open open true
31
- * @testQuery closed open false
32
- * @testQuery headline headline
33
- * @testRef dismissButton shadow .dismiss-button
19
+ * @component dial-pad
20
+ * @event {CustomEvent<undefined>} change - Emitted when the text field value changes
21
+ * @event {CustomEvent<undefined>} input - Emitted when the text field value changes
22
+ * @event {CustomEvent<undefined>} blur - Emitted when the text field loses focus
23
+ * @event {CustomEvent<undefined>} focus - Emitted when the text field receives focus
24
+ * @event {CustomEvent<HTMLElement>}keypad-click - Emitted when a digit button is clicked
25
+ * @event {CustomEvent<undefined>} dial - Emitted when the call button is clicked
26
+ * @event {CustomEvent<undefined>} end-call - Emitted when the end call button is clicked
27
+ * @vueModel modelValue value input,@lazy:change `event.currentTarget.value`
34
28
  */
35
- var Dialog = class extends require_localized.Localized(require_delegates_aria.DelegatesAria(require_vivid_element.VividElement)) {
29
+ var DialPad = class extends require_localized.Localized(require_vivid_element.VividElement) {
36
30
  constructor(..._args) {
37
31
  super(..._args);
38
- this.open = false;
39
- this.fullWidthBody = false;
40
- this.dismissButtonAriaLabel = null;
41
- this.noLightDismiss = false;
42
- this.noDismissOnEsc = false;
43
- this.noDismissButton = false;
44
- this.nonDismissible = false;
45
- this.modal = false;
46
- this.scrollableBody = false;
47
- this._openedAsModal = false;
48
- this.#handleScrimClick = (event) => {
49
- if (event.target !== this.#dialog || !this.#isDismissibleVia("light-dismiss")) return;
50
- const rect = this.#dialog.getBoundingClientRect();
51
- if (!(rect.top <= event.clientY && event.clientY <= rect.top + rect.height && rect.left <= event.clientX && event.clientX <= rect.left + rect.width)) this._handleCloseRequest();
52
- };
53
- this.#handleInternalFormSubmit = (event) => {
54
- if (event.target.method !== "dialog") return;
55
- this.open = false;
32
+ this.helperText = null;
33
+ this.placeholder = null;
34
+ this.value = "";
35
+ this.pattern = "^[0-9#*]*$";
36
+ this.disabled = false;
37
+ this.pending = false;
38
+ this.callActive = false;
39
+ this.noCall = false;
40
+ this.noInput = false;
41
+ this.noLetters = false;
42
+ this.endCallButtonLabel = null;
43
+ this.callButtonLabel = null;
44
+ this.deleteAriaLabel = null;
45
+ this._longPressTimeoutId = null;
46
+ this._suppressNextClick = false;
47
+ this._keyboardLongPressCompleted = false;
48
+ this._onDial = () => {
49
+ if (!this._textFieldEl.checkValidity()) this._announceValidationError(this._textFieldEl.errorValidationMessage ?? "");
50
+ else this._clearErrorAnnouncement();
51
+ this.$emit(this.callActive ? "end-call" : "dial");
56
52
  };
53
+ this.autofocus = false;
54
+ this._errorAnnouncement = "";
55
+ this._forceAnnouncementToggle = false;
57
56
  }
58
- /** @internal */
59
- modalChanged(_, newValue) {
60
- if (this.open) {
61
- this._openedAsModal = newValue;
62
- if (this.$fastController.isConnected) {
63
- this.#closeDialog();
64
- this.#showDialog();
65
- }
66
- }
67
- }
68
- set returnValue(value) {
69
- /* v8 ignore else -- @preserve */
70
- if (this.#dialog) this.#dialog.returnValue = value;
71
- }
72
- get returnValue() {
73
- return this.#dialog?.returnValue;
74
- }
75
- #dialogElement;
76
- get #dialog() {
77
- if (!this.#dialogElement) this.#dialogElement = this.shadowRoot.querySelector("dialog");
78
- return this.#dialogElement;
79
- }
80
- /** @internal */
81
- openChanged(oldValue, newValue) {
82
- if (oldValue === void 0) return;
83
- if (!newValue) {
84
- this._openedAsModal = false;
85
- if (this.$fastController.isConnected) this.#closeDialog();
86
- this.$emit("close", this.returnValue, { bubbles: false });
87
- } else {
88
- this._openedAsModal = this._openedAsModal || this.modal;
89
- if (this.$fastController.isConnected) this.#showDialog();
90
- this.$emit("open", void 0, { bubbles: false });
57
+ valueChanged(_oldValue, newValue) {
58
+ if (newValue !== void 0 && newValue !== null && this._textFieldEl && newValue !== this._textFieldEl.value) {
59
+ this._textFieldEl.value = newValue;
60
+ this._textFieldEl.reportValidity();
91
61
  }
92
62
  }
93
63
  /** @internal */
94
- get _showDismissButton() {
95
- return this.#isDismissibleVia("dismiss-button");
96
- }
97
- #isDismissibleVia(method) {
98
- if (this.nonDismissible) return false;
99
- switch (method) {
100
- case "escape": return !this.noDismissOnEsc;
101
- case "dismiss-button": return !this.noDismissButton;
102
- case "light-dismiss": return !this.noLightDismiss;
103
- }
64
+ _startLongPress(digit, event) {
65
+ if (this.disabled || this.callActive || digit !== "0") return;
66
+ this._clearLongPressTimer();
67
+ const target = event.currentTarget;
68
+ this._longPressTimeoutId = window.setTimeout(() => {
69
+ this._suppressNextClick = true;
70
+ this.value += "+";
71
+ this.$emit("keypad-click", target);
72
+ this.$emit("input");
73
+ this.$emit("change");
74
+ }, 600);
104
75
  }
105
- #handleScrimClick;
106
- #handleInternalFormSubmit;
107
76
  /** @internal */
108
- _onKeyDown(event) {
109
- if (require_dialog.handleEscapeKeyAndStopPropogation(event) && this._openedAsModal) {
110
- if (this.#isDismissibleVia("escape")) this._handleCloseRequest();
111
- return false;
112
- }
113
- return true;
77
+ _startKeyboardLongPress() {
78
+ if (this.disabled || this.callActive) return;
79
+ if (this._longPressTimeoutId !== null) return;
80
+ this._keyboardLongPressCompleted = false;
81
+ this._longPressTimeoutId = window.setTimeout(() => {
82
+ this._keyboardLongPressCompleted = true;
83
+ this.value += "+";
84
+ this.$emit("input");
85
+ this.$emit("change");
86
+ }, 650);
114
87
  }
115
88
  /** @internal */
116
- _handleCloseRequest() {
117
- if (this.$emit("cancel", void 0, {
118
- bubbles: false,
119
- cancelable: true
120
- })) this.open = false;
89
+ _endLongPress() {
90
+ this._clearLongPressTimer();
91
+ window.setTimeout(() => {
92
+ if (this._suppressNextClick) this._suppressNextClick = false;
93
+ }, 0);
121
94
  }
122
- close() {
123
- this.open = false;
95
+ /**
96
+ * @internal
97
+ * @returns true if long press completed (timer fired), false otherwise
98
+ */
99
+ _endKeyboardLongPress() {
100
+ const wasLongPress = this._keyboardLongPressCompleted;
101
+ this._clearLongPressTimer();
102
+ window.setTimeout(() => {
103
+ this._keyboardLongPressCompleted = false;
104
+ }, 0);
105
+ return wasLongPress;
124
106
  }
125
- show() {
126
- if (this._openedAsModal && !this.modal) throw new DOMException("Failed to execute 'show' on 'Dialog': The dialog is already open as a modal dialog, and therefore cannot be opened as a non-modal dialog.", "InvalidStateError");
127
- this.open = true;
128
- }
129
- showModal() {
130
- if (this.open && !this._openedAsModal) throw new DOMException("Failed to execute 'showModal' on 'Dialog': The dialog is already open as a non-modal dialog, and therefore cannot be opened as a modal dialog.", "InvalidStateError");
131
- this._openedAsModal = true;
132
- this.open = true;
107
+ /** @internal */
108
+ _cancelLongPress() {
109
+ this._clearLongPressTimer();
133
110
  }
134
- #closeDialog() {
135
- this.#dialog.close();
111
+ _clearLongPressTimer() {
112
+ if (this._longPressTimeoutId !== null) {
113
+ clearTimeout(this._longPressTimeoutId);
114
+ this._longPressTimeoutId = null;
115
+ }
136
116
  }
137
- #showDialog() {
138
- if (this._openedAsModal) this.#dialog.showModal();
139
- else this.#dialog.show();
117
+ /**
118
+ * Moves focus into the Dial Pad. If `no-input` attribute is specified, it will be the first digit
119
+ * button. Otherwise, the input field will be focused.
120
+ */
121
+ focus() {
122
+ const digitBtns = this.shadowRoot?.querySelectorAll(".digits .digit-btn");
123
+ (this._textFieldEl || digitBtns?.[0])?.focus();
140
124
  }
141
- connectedCallback() {
142
- super.connectedCallback();
143
- if (this.open) this.#showDialog();
144
- this.#dialog.addEventListener("mousedown", this.#handleScrimClick);
145
- this.#dialog.addEventListener("submit", this.#handleInternalFormSubmit);
125
+ /** @internal */
126
+ _announceValidationError(message) {
127
+ this._errorAnnouncement = "";
128
+ window.queueMicrotask(() => {
129
+ if (message) {
130
+ this._forceAnnouncementToggle = !this._forceAnnouncementToggle;
131
+ this._errorAnnouncement = `${message}${this._forceAnnouncementToggle ? "​" : ""}`;
132
+ } else this._clearErrorAnnouncement();
133
+ });
146
134
  }
147
- disconnectedCallback() {
148
- super.disconnectedCallback();
149
- if (this.open) this.#closeDialog();
150
- this.#dialog.removeEventListener("mousedown", this.#handleScrimClick);
151
- this.#dialog.removeEventListener("submit", this.#handleInternalFormSubmit);
135
+ /** @internal */
136
+ _clearErrorAnnouncement() {
137
+ this._errorAnnouncement = "";
138
+ this._forceAnnouncementToggle = false;
152
139
  }
153
140
  };
154
- require_decorate.__decorate([(0, _microsoft_fast_element.attr)({ mode: "boolean" })], Dialog.prototype, "open", void 0);
155
- require_decorate.__decorate([_microsoft_fast_element.attr], Dialog.prototype, "icon", void 0);
156
- require_decorate.__decorate([(0, _microsoft_fast_element.attr)({ attribute: "icon-placement" })], Dialog.prototype, "iconPlacement", void 0);
157
- require_decorate.__decorate([_microsoft_fast_element.attr], Dialog.prototype, "subtitle", void 0);
158
- require_decorate.__decorate([_microsoft_fast_element.attr], Dialog.prototype, "headline", void 0);
159
- require_decorate.__decorate([(0, _microsoft_fast_element.attr)({
160
- attribute: "full-width-body",
161
- mode: "boolean"
162
- })], Dialog.prototype, "fullWidthBody", void 0);
163
- require_decorate.__decorate([(0, _microsoft_fast_element.attr)({ attribute: "dismiss-button-aria-label" })], Dialog.prototype, "dismissButtonAriaLabel", void 0);
164
- require_decorate.__decorate([(0, _microsoft_fast_element.attr)({
165
- attribute: "no-light-dismiss",
166
- mode: "boolean"
167
- })], Dialog.prototype, "noLightDismiss", void 0);
141
+ require_decorate.__decorate([(0, _microsoft_fast_element.attr)({ attribute: "helper-text" })], DialPad.prototype, "helperText", void 0);
142
+ require_decorate.__decorate([_microsoft_fast_element.attr], DialPad.prototype, "placeholder", void 0);
143
+ require_decorate.__decorate([(0, _microsoft_fast_element.attr)({ mode: "fromView" })], DialPad.prototype, "value", void 0);
144
+ require_decorate.__decorate([(0, _microsoft_fast_element.attr)({ mode: "fromView" })], DialPad.prototype, "pattern", void 0);
145
+ require_decorate.__decorate([(0, _microsoft_fast_element.attr)({ mode: "boolean" })], DialPad.prototype, "disabled", void 0);
146
+ require_decorate.__decorate([(0, _microsoft_fast_element.attr)({ mode: "boolean" })], DialPad.prototype, "pending", void 0);
168
147
  require_decorate.__decorate([(0, _microsoft_fast_element.attr)({
169
- attribute: "no-dismiss-on-esc",
148
+ attribute: "call-active",
170
149
  mode: "boolean"
171
- })], Dialog.prototype, "noDismissOnEsc", void 0);
150
+ })], DialPad.prototype, "callActive", void 0);
172
151
  require_decorate.__decorate([(0, _microsoft_fast_element.attr)({
173
- attribute: "no-dismiss-button",
174
- mode: "boolean"
175
- })], Dialog.prototype, "noDismissButton", void 0);
152
+ mode: "boolean",
153
+ attribute: "no-call"
154
+ })], DialPad.prototype, "noCall", void 0);
176
155
  require_decorate.__decorate([(0, _microsoft_fast_element.attr)({
177
- attribute: "non-dismissible",
178
- mode: "boolean"
179
- })], Dialog.prototype, "nonDismissible", void 0);
180
- require_decorate.__decorate([(0, _microsoft_fast_element.attr)({ mode: "boolean" })], Dialog.prototype, "modal", void 0);
156
+ mode: "boolean",
157
+ attribute: "no-input"
158
+ })], DialPad.prototype, "noInput", void 0);
181
159
  require_decorate.__decorate([(0, _microsoft_fast_element.attr)({
182
160
  mode: "boolean",
183
- attribute: "scrollable-body"
184
- })], Dialog.prototype, "scrollableBody", void 0);
185
- require_decorate.__decorate([_microsoft_fast_element.observable], Dialog.prototype, "_openedAsModal", void 0);
186
- require_decorate.__decorate([_microsoft_fast_element.observable], Dialog.prototype, "bodySlottedContent", void 0);
187
- require_decorate.__decorate([_microsoft_fast_element.observable], Dialog.prototype, "footerSlottedContent", void 0);
188
- require_decorate.__decorate([_microsoft_fast_element.observable], Dialog.prototype, "actionItemsSlottedContent", void 0);
161
+ attribute: "no-letters"
162
+ })], DialPad.prototype, "noLetters", void 0);
163
+ require_decorate.__decorate([_microsoft_fast_element.attr], DialPad.prototype, "size", void 0);
164
+ require_decorate.__decorate([(0, _microsoft_fast_element.attr)({ attribute: "end-call-button-label" })], DialPad.prototype, "endCallButtonLabel", void 0);
165
+ require_decorate.__decorate([(0, _microsoft_fast_element.attr)({ attribute: "call-button-label" })], DialPad.prototype, "callButtonLabel", void 0);
166
+ require_decorate.__decorate([(0, _microsoft_fast_element.attr)({ attribute: "delete-aria-label" })], DialPad.prototype, "deleteAriaLabel", void 0);
167
+ require_decorate.__decorate([(0, _microsoft_fast_element.attr)({ mode: "boolean" })], DialPad.prototype, "autofocus", void 0);
168
+ require_decorate.__decorate([_microsoft_fast_element.observable], DialPad.prototype, "_errorAnnouncement", void 0);
189
169
  //#endregion
190
- //#region src/lib/dialog/dialog.template.ts
191
- function icon(iconTag) {
192
- return _microsoft_fast_element.html`
193
- <${iconTag} class="icon" name="${(x) => x.icon}"></${iconTag}>
194
- `;
170
+ //#region src/lib/dial-pad/dial-pad.template.ts
171
+ var DIAL_PAD_BUTTONS = [
172
+ {
173
+ value: "1",
174
+ letters: "\xA0",
175
+ ariaLabel: "digitOneLabel",
176
+ icon: "one-solid",
177
+ id: "btn1"
178
+ },
179
+ {
180
+ value: "2",
181
+ letters: "ABC",
182
+ ariaLabel: "digitTwoLabel",
183
+ icon: "two-solid",
184
+ id: "btn2"
185
+ },
186
+ {
187
+ value: "3",
188
+ letters: "DEF",
189
+ ariaLabel: "digitThreeLabel",
190
+ icon: "three-solid",
191
+ id: "btn3"
192
+ },
193
+ {
194
+ value: "4",
195
+ letters: "GHI",
196
+ ariaLabel: "digitFourLabel",
197
+ icon: "four-solid",
198
+ id: "btn4"
199
+ },
200
+ {
201
+ value: "5",
202
+ letters: "JKL",
203
+ ariaLabel: "digitFiveLabel",
204
+ icon: "five-solid",
205
+ id: "btn5"
206
+ },
207
+ {
208
+ value: "6",
209
+ letters: "MNO",
210
+ ariaLabel: "digitSixLabel",
211
+ icon: "six-solid",
212
+ id: "btn6"
213
+ },
214
+ {
215
+ value: "7",
216
+ letters: "PQRS",
217
+ ariaLabel: "digitSevenLabel",
218
+ icon: "seven-solid",
219
+ id: "btn7"
220
+ },
221
+ {
222
+ value: "8",
223
+ letters: "TUV",
224
+ ariaLabel: "digitEightLabel",
225
+ icon: "eight-solid",
226
+ id: "btn8"
227
+ },
228
+ {
229
+ value: "9",
230
+ letters: "WXYZ",
231
+ ariaLabel: "digitNineLabel",
232
+ icon: "nine-solid",
233
+ id: "btn9"
234
+ },
235
+ {
236
+ value: "*",
237
+ ariaLabel: "digitAsteriskLabel",
238
+ icon: "asterisk-2-solid",
239
+ id: "btnAsterisk"
240
+ },
241
+ {
242
+ value: "0",
243
+ alwaysVisibleLetters: "+",
244
+ ariaLabel: "digitZeroLabel",
245
+ icon: "zero-solid",
246
+ id: "btn0"
247
+ },
248
+ {
249
+ value: "#",
250
+ ariaLabel: "digitHashtagLabel",
251
+ icon: "hashtag-solid",
252
+ id: "btnHashtag"
253
+ }
254
+ ];
255
+ function handleKeyDown(x, e) {
256
+ if (e.key === _microsoft_fast_web_utilities.keyEnter && !x.pending && !x.disabled && !x.callActive && !x.noCall && x.value.length > 0 && e.target instanceof HTMLInputElement) x._onDial();
257
+ else if (e.key === " " || e.key === "Space") {
258
+ /* v8 ignore else -- @preserve */
259
+ if (e.target instanceof HTMLInputElement) {
260
+ e.preventDefault();
261
+ /* v8 ignore else -- @preserve */
262
+ if (!e.repeat) x._startKeyboardLongPress();
263
+ }
264
+ } else {
265
+ const elementIndex = DIAL_PAD_BUTTONS.findIndex((x) => x.value === e.key);
266
+ if (elementIndex > -1) {
267
+ const digit = x.shadowRoot.querySelector(".digits").children[elementIndex];
268
+ /* v8 ignore else -- @preserve */
269
+ if (digit) {
270
+ digit.active = true;
271
+ setTimeout(() => {
272
+ digit.active = false;
273
+ }, 200);
274
+ }
275
+ }
276
+ }
277
+ return true;
195
278
  }
196
- function headline() {
197
- return _microsoft_fast_element.html`
198
- <h2 class="headline" id="dialog-headline">${(x) => x.headline}</h2>
199
- `;
279
+ function handleKeyUp(x, e) {
280
+ /* v8 ignore else -- @preserve */
281
+ if (e.key === " " || e.key === "Space") {
282
+ /* v8 ignore else -- @preserve */
283
+ if (e.target instanceof HTMLInputElement) {
284
+ e.preventDefault();
285
+ if (!x._endKeyboardLongPress() && !x.disabled && !x.callActive) {
286
+ x.value += " ";
287
+ x.$emit("input");
288
+ x.$emit("change");
289
+ }
290
+ }
291
+ }
292
+ return true;
200
293
  }
201
- function subtitle() {
202
- return _microsoft_fast_element.html`
203
- <h3 class="subtitle" id="dialog-subtitle">${(x) => x.subtitle}</h3>
204
- `;
294
+ function handleButtonKeyDown(digit, { parent: dialPad, event }) {
295
+ /* v8 ignore else -- @preserve */
296
+ if ((event.key === " " || event.key === "Space") && digit.value === "0") {
297
+ event.preventDefault();
298
+ /* v8 ignore else -- @preserve */
299
+ if (!event.repeat) dialPad._startKeyboardLongPress();
300
+ }
301
+ return true;
302
+ }
303
+ function handleButtonKeyUp(digit, { parent: dialPad, event }) {
304
+ /* v8 ignore else -- @preserve */
305
+ if ((event.key === " " || event.key === "Space") && digit.value === "0") {
306
+ event.preventDefault();
307
+ /* v8 ignore else -- @preserve */
308
+ if (!dialPad._endKeyboardLongPress() && !dialPad.disabled && !dialPad.callActive) onDigitClick(digit, {
309
+ parent: dialPad,
310
+ event: new MouseEvent("click", { bubbles: true })
311
+ });
312
+ }
313
+ return true;
314
+ }
315
+ function syncFieldAndPadValues(x) {
316
+ x.value = x._textFieldEl.value;
317
+ }
318
+ function stopPropagation(_, { event: e }) {
319
+ e.stopImmediatePropagation();
320
+ }
321
+ function deleteLastCharacter(dialPad) {
322
+ dialPad.value = dialPad.value.slice(0, -1);
323
+ dialPad.$emit("input");
324
+ dialPad.$emit("change");
325
+ if (dialPad.value === "") dialPad._textFieldEl?.focus();
326
+ }
327
+ function renderTextField(textFieldTag, buttonTag) {
328
+ return _microsoft_fast_element.html`<${textFieldTag} ${(0, _microsoft_fast_element.ref)("_textFieldEl")} class="phone-field" internal-part type="tel"
329
+ value="${(x) => x.value}" placeholder="${(x) => x.placeholder}"
330
+ ?disabled="${(x) => x.disabled}" helper-text="${(x) => x.helperText}" pattern="${(x) => x.pattern}"
331
+ aria-label="${(x) => x.locale.dialPad.inputLabel}"
332
+ @keydown="${(x, c) => handleKeyDown(x, c.event)}"
333
+ @keyup="${(x, c) => handleKeyUp(x, c.event)}"
334
+ @input="${syncFieldAndPadValues}"
335
+ @change="${syncFieldAndPadValues}"
336
+ @focus="${stopPropagation}"
337
+ @blur="${stopPropagation}"
338
+ ?autofocus="${(x) => x.autofocus}"
339
+ scale="${(x) => x.size === "condensed" ? "condensed" : "normal"}">
340
+ >
341
+ ${(0, _microsoft_fast_element.when)((x) => x.value && x.value.length && x.value.length > 0, _microsoft_fast_element.html`<${buttonTag}
342
+ slot="action-items"
343
+ size='super-condensed'
344
+ icon="backspace-line"
345
+ aria-label="${(x) => x.deleteAriaLabel || x.locale.dialPad.deleteButtonLabel}"
346
+ appearance='ghost'
347
+ ?disabled="${(x) => x.disabled || x.callActive}"
348
+ @click="${(x) => deleteLastCharacter(x)}">
349
+ </${buttonTag}>`)}
350
+ </${textFieldTag}>`;
351
+ }
352
+ function onDigitClick(digit, { parent: dialPad, event }) {
353
+ if (dialPad._suppressNextClick) {
354
+ dialPad._suppressNextClick = false;
355
+ return;
356
+ }
357
+ dialPad.value += digit.value;
358
+ dialPad.$emit("keypad-click", event.currentTarget);
359
+ dialPad.$emit("input");
360
+ dialPad.$emit("change");
205
361
  }
206
- function renderHeaderText() {
362
+ function renderDigits(buttonTag, iconTag) {
207
363
  return _microsoft_fast_element.html`
208
- <div class="header-text">${headline()} ${subtitle()}</div>
364
+ ${(0, _microsoft_fast_element.repeat)((_) => DIAL_PAD_BUTTONS, _microsoft_fast_element.html`
365
+ <${buttonTag}
366
+ id="${(x) => x.id}"
367
+ value="${(x) => x.value}"
368
+ stacked
369
+ appearance="ghost-light"
370
+ shape="pill"
371
+ label="${(x, c) => (c.parent.noLetters ? null : x.letters) ?? x.alwaysVisibleLetters}"
372
+ size='condensed'
373
+ class="digit-btn"
374
+ ?autofocus="${(_, c) => c.parent.autofocus && c.parent.noInput && c.index === 0}"
375
+ aria-label="${(x, c) => c.parent.noLetters ? x.value : c.parent.locale.dialPad[x.ariaLabel]}"
376
+ ?disabled="${(_, c) => c.parent.disabled}"
377
+ @pointerdown="${(x, c) => c.parent._startLongPress(x.value, c.event)}"
378
+ @pointerup="${(_, c) => c.parent._endLongPress()}"
379
+ @pointercancel="${(_, c) => c.parent._cancelLongPress()}"
380
+ @pointerleave="${(_, c) => c.parent._cancelLongPress()}"
381
+ @keydown="${(x, c) => handleButtonKeyDown(x, {
382
+ parent: c.parent,
383
+ event: c.event
384
+ })}"
385
+ @keyup="${(x, c) => handleButtonKeyUp(x, {
386
+ parent: c.parent,
387
+ event: c.event
388
+ })}"
389
+ @click="${onDigitClick}">
390
+ <${iconTag} slot="icon"
391
+ name="${(x) => x.icon}"
392
+ class="digit-btn-num"></${iconTag}>
393
+ </${buttonTag}>
394
+ `, { positioning: true })}
209
395
  `;
210
396
  }
211
- function renderDismissButton(buttonTag) {
212
- return _microsoft_fast_element.html`
213
- <${buttonTag}
214
- aria-label="${(x) => x.dismissButtonAriaLabel || x.locale.dialog.dismissButtonLabel}"
215
- size="condensed"
216
- class="dismiss-button"
217
- icon="close-line"
218
- @click="${(x) => x._handleCloseRequest()}"
219
- ></${buttonTag}>`;
397
+ function renderDialButton(buttonTag) {
398
+ return _microsoft_fast_element.html`<${buttonTag} class="call-btn"
399
+ size="${(x) => x.size === "condensed" ? "normal" : "expanded"}"
400
+ appearance="filled"
401
+ icon="${(x) => x.callActive ? "disable-call-line" : "call-line"}"
402
+ connotation="${(x) => x.callActive ? "alert" : "cta"}"
403
+ ?disabled="${(x) => x.disabled}"
404
+ ?pending="${(x) => x.pending}"
405
+ @click="${(x) => x._onDial()}"
406
+ label="${(x) => x.callActive ? x.endCallButtonLabel || x.locale.dialPad.endCallButtonLabel : x.callButtonLabel || x.locale.dialPad.callButtonLabel}">
407
+ </${buttonTag}>`;
220
408
  }
221
- var DialogTemplate = (context) => {
222
- const elevationTag = context.tagFor(require_definition$2.Elevation);
223
- const iconTag = context.tagFor(require_definition.Icon);
409
+ function renderErrorAnnouncement(visuallyHiddenTag) {
410
+ return _microsoft_fast_element.html`<${visuallyHiddenTag} role="alert" aria-atomic="true">
411
+ ${(x) => `${x.locale.dialPad.errorLabel} ${x._errorAnnouncement}`}
412
+ </${visuallyHiddenTag}>`;
413
+ }
414
+ var DialPadTemplate = (context) => {
224
415
  const buttonTag = context.tagFor(require_definition$1.Button);
225
- return _microsoft_fast_element.html`
226
- <${elevationTag} dp="8" not-relative>
227
- <dialog class="${(x) => (0, _microsoft_fast_web_utilities.classNames)("base", [`icon-placement-${x.iconPlacement}`, Boolean(x.iconPlacement)], ["hide-body", !x.bodySlottedContent?.length], ["hide-footer", !(x.footerSlottedContent?.length || x.actionItemsSlottedContent?.length)], ["modal", x._openedAsModal], ["scrollable-body", x.scrollableBody])}"
228
-
229
- @keydown="${(x, c) => x._onKeyDown(c.event)}"
230
- @cancel="${(_, c) => c.event.preventDefault()}"
231
- ${require_delegates_aria.delegateAria({
232
- ariaModal: (x) => String(x._openedAsModal),
233
- ariaLabelledBy: (x) => x.headline ? "dialog-headline dialog-subtitle" : null
234
- })}
235
- >
236
- <slot name="main">
237
- <div class="main-wrapper">
238
- <div class="header ${(x) => x.subtitle ? "border" : ""}">
239
- ${(0, _microsoft_fast_element.when)((x) => x._showDismissButton, renderDismissButton(buttonTag))}
240
- <slot name="graphic">
241
- ${(0, _microsoft_fast_element.when)((x) => x.icon, icon(iconTag))}
242
- </slot>
243
- ${(0, _microsoft_fast_element.when)((x) => x.headline && x.subtitle, renderHeaderText())}
244
- ${(0, _microsoft_fast_element.when)((x) => x.headline && !x.subtitle, headline())}
245
- ${(0, _microsoft_fast_element.when)((x) => x.subtitle && !x.headline, subtitle())}
246
- </div>
247
- <div class="body ${(x) => x.fullWidthBody ? "full-width" : ""}" >
248
- <slot name="body" ${(0, _microsoft_fast_element.slotted)("bodySlottedContent")}></slot>
249
- </div>
250
- <div class="footer">
251
- <div>
252
- <slot name="footer" ${(0, _microsoft_fast_element.slotted)("footerSlottedContent")}></slot>
253
- </div>
254
- <div class="actions">
255
- <slot name="action-items" ${(0, _microsoft_fast_element.slotted)("actionItemsSlottedContent")}></slot>
256
- </div>
257
- </div>
258
- </div>
259
- </slot>
260
- </dialog>
261
- </${elevationTag}>`;
416
+ const iconTag = context.tagFor(require_definition.Icon);
417
+ const textFieldTag = context.tagFor(require_definition$3.TextField);
418
+ const visuallyHiddenTag = context.tagFor(require_definition$2.VisuallyHidden);
419
+ return _microsoft_fast_element.html` <div
420
+ class="${(x) => (0, _microsoft_fast_web_utilities.classNames)("base", [`size-${x.size}`, Boolean(x.size)], ["no-input", x.noInput], ["no-letters", x.noLetters])}"
421
+ >
422
+ ${(0, _microsoft_fast_element.when)((x) => !x.noInput, renderTextField(textFieldTag, buttonTag))}
423
+ <div class="digits">${renderDigits(buttonTag, iconTag)}</div>
424
+ ${(0, _microsoft_fast_element.when)((x) => !x.noCall, renderDialButton(buttonTag))}
425
+ ${renderErrorAnnouncement(visuallyHiddenTag)}
426
+ </div>`;
262
427
  };
263
428
  //#endregion
264
- //#region src/lib/dialog/definition.ts
429
+ //#region src/lib/dial-pad/definition.ts
265
430
  /** @internal */
266
- var dialogDefinition = require_vivid_element.defineVividComponent("dialog", Dialog, DialogTemplate, [
267
- require_definition.iconDefinition,
431
+ var dialPadDefinition = require_vivid_element.defineVividComponent("dial-pad", DialPad, DialPadTemplate, [
268
432
  require_definition$1.buttonDefinition,
269
- require_definition$2.elevationDefinition
270
- ], { styles: dialog_default });
433
+ require_definition$3.textFieldDefinition,
434
+ require_definition.iconDefinition,
435
+ require_definition$2.visuallyHiddenDefinition
436
+ ], { styles: dial_pad_default });
271
437
  /**
272
- * Registers the dialog elements with the design system.
438
+ * Registers the dial-pad element with the design system.
273
439
  *
274
440
  * @param prefix - the prefix to use for the component name
275
441
  */
276
- var registerDialog = require_vivid_element.createRegisterFunction(dialogDefinition);
442
+ var registerDialPad = require_vivid_element.createRegisterFunction(dialPadDefinition);
277
443
  //#endregion
278
- Object.defineProperty(exports, "Dialog", {
444
+ Object.defineProperty(exports, "DialPad", {
279
445
  enumerable: true,
280
446
  get: function() {
281
- return Dialog;
447
+ return DialPad;
282
448
  }
283
449
  });
284
- Object.defineProperty(exports, "dialogDefinition", {
450
+ Object.defineProperty(exports, "dialPadDefinition", {
285
451
  enumerable: true,
286
452
  get: function() {
287
- return dialogDefinition;
453
+ return dialPadDefinition;
288
454
  }
289
455
  });
290
- Object.defineProperty(exports, "registerDialog", {
456
+ Object.defineProperty(exports, "registerDialPad", {
291
457
  enumerable: true,
292
458
  get: function() {
293
- return registerDialog;
459
+ return registerDialPad;
294
460
  }
295
461
  });