@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
@@ -1,277 +1,443 @@
1
1
  import { d as createRegisterFunction, t as VividElement, u as defineVividComponent } from "./vivid-element.js";
2
2
  import { r as Icon, t as iconDefinition } from "./definition.js";
3
3
  import { t as __decorate } from "./decorate.js";
4
- import { n as delegateAria, t as DelegatesAria } from "./delegates-aria.js";
5
4
  import { t as Localized } from "./localized.js";
6
5
  import { i as Button, t as buttonDefinition } from "./definition6.js";
7
- import { r as Elevation, t as elevationDefinition } from "./definition7.js";
8
- import { t as handleEscapeKeyAndStopPropogation } from "./dialog.js";
9
- import { attr, html, observable, slotted, when } from "@microsoft/fast-element";
10
- import { classNames } from "@microsoft/fast-web-utilities";
11
- //#region src/lib/dialog/dialog.scss?inline
12
- 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}";
6
+ import { n as visuallyHiddenDefinition, r as VisuallyHidden } from "./definition22.js";
7
+ import { n as textFieldDefinition, r as TextField } from "./definition26.js";
8
+ import { attr, html, observable, ref, repeat, when } from "@microsoft/fast-element";
9
+ import { classNames, keyEnter } from "@microsoft/fast-web-utilities";
10
+ //#region src/lib/dial-pad/dial-pad.scss?inline
11
+ 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}";
13
12
  //#endregion
14
- //#region src/lib/dialog/dialog.ts
13
+ //#region src/lib/dial-pad/dial-pad.ts
15
14
  /**
15
+ * Base class for dial-pad
16
+ *
16
17
  * @public
17
- * @component dialog
18
- * @slot graphic - Use the graphic slot in order to replace the icon.
19
- * @slot body - Use the body slot in order to add custom HTML to the dialog.
20
- * @slot footer - Use the footer slot in order to add action buttons to the bottom of the dialog.
21
- * @slot main - Assign nodes to the main slot to fully override a dialog’s predefined flow and style with your own.
22
- * @slot action-items - Use the action-items slot in order to add action buttons to the bottom of the dialog.
23
- * @event {CustomEvent<undefined>} open - The `open` event fires when the dialog opens.
24
- * @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.
25
- * @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.
26
- * @vueModel open open open,close `event.currentTarget.open`
27
- * @testSelector byHeadline byHeadline
28
- * @testAction dismiss click #dismissButton
29
- * @testQuery open open true
30
- * @testQuery closed open false
31
- * @testQuery headline headline
32
- * @testRef dismissButton shadow .dismiss-button
18
+ * @component dial-pad
19
+ * @event {CustomEvent<undefined>} change - Emitted when the text field value changes
20
+ * @event {CustomEvent<undefined>} input - Emitted when the text field value changes
21
+ * @event {CustomEvent<undefined>} blur - Emitted when the text field loses focus
22
+ * @event {CustomEvent<undefined>} focus - Emitted when the text field receives focus
23
+ * @event {CustomEvent<HTMLElement>}keypad-click - Emitted when a digit button is clicked
24
+ * @event {CustomEvent<undefined>} dial - Emitted when the call button is clicked
25
+ * @event {CustomEvent<undefined>} end-call - Emitted when the end call button is clicked
26
+ * @vueModel modelValue value input,@lazy:change `event.currentTarget.value`
33
27
  */
34
- var Dialog = class extends Localized(DelegatesAria(VividElement)) {
28
+ var DialPad = class extends Localized(VividElement) {
35
29
  constructor(..._args) {
36
30
  super(..._args);
37
- this.open = false;
38
- this.fullWidthBody = false;
39
- this.dismissButtonAriaLabel = null;
40
- this.noLightDismiss = false;
41
- this.noDismissOnEsc = false;
42
- this.noDismissButton = false;
43
- this.nonDismissible = false;
44
- this.modal = false;
45
- this.scrollableBody = false;
46
- this._openedAsModal = false;
47
- this.#handleScrimClick = (event) => {
48
- if (event.target !== this.#dialog || !this.#isDismissibleVia("light-dismiss")) return;
49
- const rect = this.#dialog.getBoundingClientRect();
50
- if (!(rect.top <= event.clientY && event.clientY <= rect.top + rect.height && rect.left <= event.clientX && event.clientX <= rect.left + rect.width)) this._handleCloseRequest();
51
- };
52
- this.#handleInternalFormSubmit = (event) => {
53
- if (event.target.method !== "dialog") return;
54
- this.open = false;
31
+ this.helperText = null;
32
+ this.placeholder = null;
33
+ this.value = "";
34
+ this.pattern = "^[0-9#*]*$";
35
+ this.disabled = false;
36
+ this.pending = false;
37
+ this.callActive = false;
38
+ this.noCall = false;
39
+ this.noInput = false;
40
+ this.noLetters = false;
41
+ this.endCallButtonLabel = null;
42
+ this.callButtonLabel = null;
43
+ this.deleteAriaLabel = null;
44
+ this._longPressTimeoutId = null;
45
+ this._suppressNextClick = false;
46
+ this._keyboardLongPressCompleted = false;
47
+ this._onDial = () => {
48
+ if (!this._textFieldEl.checkValidity()) this._announceValidationError(this._textFieldEl.errorValidationMessage ?? "");
49
+ else this._clearErrorAnnouncement();
50
+ this.$emit(this.callActive ? "end-call" : "dial");
55
51
  };
52
+ this.autofocus = false;
53
+ this._errorAnnouncement = "";
54
+ this._forceAnnouncementToggle = false;
56
55
  }
57
- /** @internal */
58
- modalChanged(_, newValue) {
59
- if (this.open) {
60
- this._openedAsModal = newValue;
61
- if (this.$fastController.isConnected) {
62
- this.#closeDialog();
63
- this.#showDialog();
64
- }
65
- }
66
- }
67
- set returnValue(value) {
68
- /* v8 ignore else -- @preserve */
69
- if (this.#dialog) this.#dialog.returnValue = value;
70
- }
71
- get returnValue() {
72
- return this.#dialog?.returnValue;
73
- }
74
- #dialogElement;
75
- get #dialog() {
76
- if (!this.#dialogElement) this.#dialogElement = this.shadowRoot.querySelector("dialog");
77
- return this.#dialogElement;
78
- }
79
- /** @internal */
80
- openChanged(oldValue, newValue) {
81
- if (oldValue === void 0) return;
82
- if (!newValue) {
83
- this._openedAsModal = false;
84
- if (this.$fastController.isConnected) this.#closeDialog();
85
- this.$emit("close", this.returnValue, { bubbles: false });
86
- } else {
87
- this._openedAsModal = this._openedAsModal || this.modal;
88
- if (this.$fastController.isConnected) this.#showDialog();
89
- this.$emit("open", void 0, { bubbles: false });
56
+ valueChanged(_oldValue, newValue) {
57
+ if (newValue !== void 0 && newValue !== null && this._textFieldEl && newValue !== this._textFieldEl.value) {
58
+ this._textFieldEl.value = newValue;
59
+ this._textFieldEl.reportValidity();
90
60
  }
91
61
  }
92
62
  /** @internal */
93
- get _showDismissButton() {
94
- return this.#isDismissibleVia("dismiss-button");
95
- }
96
- #isDismissibleVia(method) {
97
- if (this.nonDismissible) return false;
98
- switch (method) {
99
- case "escape": return !this.noDismissOnEsc;
100
- case "dismiss-button": return !this.noDismissButton;
101
- case "light-dismiss": return !this.noLightDismiss;
102
- }
63
+ _startLongPress(digit, event) {
64
+ if (this.disabled || this.callActive || digit !== "0") return;
65
+ this._clearLongPressTimer();
66
+ const target = event.currentTarget;
67
+ this._longPressTimeoutId = window.setTimeout(() => {
68
+ this._suppressNextClick = true;
69
+ this.value += "+";
70
+ this.$emit("keypad-click", target);
71
+ this.$emit("input");
72
+ this.$emit("change");
73
+ }, 600);
103
74
  }
104
- #handleScrimClick;
105
- #handleInternalFormSubmit;
106
75
  /** @internal */
107
- _onKeyDown(event) {
108
- if (handleEscapeKeyAndStopPropogation(event) && this._openedAsModal) {
109
- if (this.#isDismissibleVia("escape")) this._handleCloseRequest();
110
- return false;
111
- }
112
- return true;
76
+ _startKeyboardLongPress() {
77
+ if (this.disabled || this.callActive) return;
78
+ if (this._longPressTimeoutId !== null) return;
79
+ this._keyboardLongPressCompleted = false;
80
+ this._longPressTimeoutId = window.setTimeout(() => {
81
+ this._keyboardLongPressCompleted = true;
82
+ this.value += "+";
83
+ this.$emit("input");
84
+ this.$emit("change");
85
+ }, 650);
113
86
  }
114
87
  /** @internal */
115
- _handleCloseRequest() {
116
- if (this.$emit("cancel", void 0, {
117
- bubbles: false,
118
- cancelable: true
119
- })) this.open = false;
88
+ _endLongPress() {
89
+ this._clearLongPressTimer();
90
+ window.setTimeout(() => {
91
+ if (this._suppressNextClick) this._suppressNextClick = false;
92
+ }, 0);
120
93
  }
121
- close() {
122
- this.open = false;
94
+ /**
95
+ * @internal
96
+ * @returns true if long press completed (timer fired), false otherwise
97
+ */
98
+ _endKeyboardLongPress() {
99
+ const wasLongPress = this._keyboardLongPressCompleted;
100
+ this._clearLongPressTimer();
101
+ window.setTimeout(() => {
102
+ this._keyboardLongPressCompleted = false;
103
+ }, 0);
104
+ return wasLongPress;
123
105
  }
124
- show() {
125
- 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");
126
- this.open = true;
127
- }
128
- showModal() {
129
- 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");
130
- this._openedAsModal = true;
131
- this.open = true;
106
+ /** @internal */
107
+ _cancelLongPress() {
108
+ this._clearLongPressTimer();
132
109
  }
133
- #closeDialog() {
134
- this.#dialog.close();
110
+ _clearLongPressTimer() {
111
+ if (this._longPressTimeoutId !== null) {
112
+ clearTimeout(this._longPressTimeoutId);
113
+ this._longPressTimeoutId = null;
114
+ }
135
115
  }
136
- #showDialog() {
137
- if (this._openedAsModal) this.#dialog.showModal();
138
- else this.#dialog.show();
116
+ /**
117
+ * Moves focus into the Dial Pad. If `no-input` attribute is specified, it will be the first digit
118
+ * button. Otherwise, the input field will be focused.
119
+ */
120
+ focus() {
121
+ const digitBtns = this.shadowRoot?.querySelectorAll(".digits .digit-btn");
122
+ (this._textFieldEl || digitBtns?.[0])?.focus();
139
123
  }
140
- connectedCallback() {
141
- super.connectedCallback();
142
- if (this.open) this.#showDialog();
143
- this.#dialog.addEventListener("mousedown", this.#handleScrimClick);
144
- this.#dialog.addEventListener("submit", this.#handleInternalFormSubmit);
124
+ /** @internal */
125
+ _announceValidationError(message) {
126
+ this._errorAnnouncement = "";
127
+ window.queueMicrotask(() => {
128
+ if (message) {
129
+ this._forceAnnouncementToggle = !this._forceAnnouncementToggle;
130
+ this._errorAnnouncement = `${message}${this._forceAnnouncementToggle ? "​" : ""}`;
131
+ } else this._clearErrorAnnouncement();
132
+ });
145
133
  }
146
- disconnectedCallback() {
147
- super.disconnectedCallback();
148
- if (this.open) this.#closeDialog();
149
- this.#dialog.removeEventListener("mousedown", this.#handleScrimClick);
150
- this.#dialog.removeEventListener("submit", this.#handleInternalFormSubmit);
134
+ /** @internal */
135
+ _clearErrorAnnouncement() {
136
+ this._errorAnnouncement = "";
137
+ this._forceAnnouncementToggle = false;
151
138
  }
152
139
  };
153
- __decorate([attr({ mode: "boolean" })], Dialog.prototype, "open", void 0);
154
- __decorate([attr], Dialog.prototype, "icon", void 0);
155
- __decorate([attr({ attribute: "icon-placement" })], Dialog.prototype, "iconPlacement", void 0);
156
- __decorate([attr], Dialog.prototype, "subtitle", void 0);
157
- __decorate([attr], Dialog.prototype, "headline", void 0);
158
- __decorate([attr({
159
- attribute: "full-width-body",
160
- mode: "boolean"
161
- })], Dialog.prototype, "fullWidthBody", void 0);
162
- __decorate([attr({ attribute: "dismiss-button-aria-label" })], Dialog.prototype, "dismissButtonAriaLabel", void 0);
163
- __decorate([attr({
164
- attribute: "no-light-dismiss",
165
- mode: "boolean"
166
- })], Dialog.prototype, "noLightDismiss", void 0);
140
+ __decorate([attr({ attribute: "helper-text" })], DialPad.prototype, "helperText", void 0);
141
+ __decorate([attr], DialPad.prototype, "placeholder", void 0);
142
+ __decorate([attr({ mode: "fromView" })], DialPad.prototype, "value", void 0);
143
+ __decorate([attr({ mode: "fromView" })], DialPad.prototype, "pattern", void 0);
144
+ __decorate([attr({ mode: "boolean" })], DialPad.prototype, "disabled", void 0);
145
+ __decorate([attr({ mode: "boolean" })], DialPad.prototype, "pending", void 0);
167
146
  __decorate([attr({
168
- attribute: "no-dismiss-on-esc",
147
+ attribute: "call-active",
169
148
  mode: "boolean"
170
- })], Dialog.prototype, "noDismissOnEsc", void 0);
149
+ })], DialPad.prototype, "callActive", void 0);
171
150
  __decorate([attr({
172
- attribute: "no-dismiss-button",
173
- mode: "boolean"
174
- })], Dialog.prototype, "noDismissButton", void 0);
151
+ mode: "boolean",
152
+ attribute: "no-call"
153
+ })], DialPad.prototype, "noCall", void 0);
175
154
  __decorate([attr({
176
- attribute: "non-dismissible",
177
- mode: "boolean"
178
- })], Dialog.prototype, "nonDismissible", void 0);
179
- __decorate([attr({ mode: "boolean" })], Dialog.prototype, "modal", void 0);
155
+ mode: "boolean",
156
+ attribute: "no-input"
157
+ })], DialPad.prototype, "noInput", void 0);
180
158
  __decorate([attr({
181
159
  mode: "boolean",
182
- attribute: "scrollable-body"
183
- })], Dialog.prototype, "scrollableBody", void 0);
184
- __decorate([observable], Dialog.prototype, "_openedAsModal", void 0);
185
- __decorate([observable], Dialog.prototype, "bodySlottedContent", void 0);
186
- __decorate([observable], Dialog.prototype, "footerSlottedContent", void 0);
187
- __decorate([observable], Dialog.prototype, "actionItemsSlottedContent", void 0);
160
+ attribute: "no-letters"
161
+ })], DialPad.prototype, "noLetters", void 0);
162
+ __decorate([attr], DialPad.prototype, "size", void 0);
163
+ __decorate([attr({ attribute: "end-call-button-label" })], DialPad.prototype, "endCallButtonLabel", void 0);
164
+ __decorate([attr({ attribute: "call-button-label" })], DialPad.prototype, "callButtonLabel", void 0);
165
+ __decorate([attr({ attribute: "delete-aria-label" })], DialPad.prototype, "deleteAriaLabel", void 0);
166
+ __decorate([attr({ mode: "boolean" })], DialPad.prototype, "autofocus", void 0);
167
+ __decorate([observable], DialPad.prototype, "_errorAnnouncement", void 0);
188
168
  //#endregion
189
- //#region src/lib/dialog/dialog.template.ts
190
- function icon(iconTag) {
191
- return html`
192
- <${iconTag} class="icon" name="${(x) => x.icon}"></${iconTag}>
193
- `;
169
+ //#region src/lib/dial-pad/dial-pad.template.ts
170
+ var DIAL_PAD_BUTTONS = [
171
+ {
172
+ value: "1",
173
+ letters: "\xA0",
174
+ ariaLabel: "digitOneLabel",
175
+ icon: "one-solid",
176
+ id: "btn1"
177
+ },
178
+ {
179
+ value: "2",
180
+ letters: "ABC",
181
+ ariaLabel: "digitTwoLabel",
182
+ icon: "two-solid",
183
+ id: "btn2"
184
+ },
185
+ {
186
+ value: "3",
187
+ letters: "DEF",
188
+ ariaLabel: "digitThreeLabel",
189
+ icon: "three-solid",
190
+ id: "btn3"
191
+ },
192
+ {
193
+ value: "4",
194
+ letters: "GHI",
195
+ ariaLabel: "digitFourLabel",
196
+ icon: "four-solid",
197
+ id: "btn4"
198
+ },
199
+ {
200
+ value: "5",
201
+ letters: "JKL",
202
+ ariaLabel: "digitFiveLabel",
203
+ icon: "five-solid",
204
+ id: "btn5"
205
+ },
206
+ {
207
+ value: "6",
208
+ letters: "MNO",
209
+ ariaLabel: "digitSixLabel",
210
+ icon: "six-solid",
211
+ id: "btn6"
212
+ },
213
+ {
214
+ value: "7",
215
+ letters: "PQRS",
216
+ ariaLabel: "digitSevenLabel",
217
+ icon: "seven-solid",
218
+ id: "btn7"
219
+ },
220
+ {
221
+ value: "8",
222
+ letters: "TUV",
223
+ ariaLabel: "digitEightLabel",
224
+ icon: "eight-solid",
225
+ id: "btn8"
226
+ },
227
+ {
228
+ value: "9",
229
+ letters: "WXYZ",
230
+ ariaLabel: "digitNineLabel",
231
+ icon: "nine-solid",
232
+ id: "btn9"
233
+ },
234
+ {
235
+ value: "*",
236
+ ariaLabel: "digitAsteriskLabel",
237
+ icon: "asterisk-2-solid",
238
+ id: "btnAsterisk"
239
+ },
240
+ {
241
+ value: "0",
242
+ alwaysVisibleLetters: "+",
243
+ ariaLabel: "digitZeroLabel",
244
+ icon: "zero-solid",
245
+ id: "btn0"
246
+ },
247
+ {
248
+ value: "#",
249
+ ariaLabel: "digitHashtagLabel",
250
+ icon: "hashtag-solid",
251
+ id: "btnHashtag"
252
+ }
253
+ ];
254
+ function handleKeyDown(x, e) {
255
+ if (e.key === keyEnter && !x.pending && !x.disabled && !x.callActive && !x.noCall && x.value.length > 0 && e.target instanceof HTMLInputElement) x._onDial();
256
+ else if (e.key === " " || e.key === "Space") {
257
+ /* v8 ignore else -- @preserve */
258
+ if (e.target instanceof HTMLInputElement) {
259
+ e.preventDefault();
260
+ /* v8 ignore else -- @preserve */
261
+ if (!e.repeat) x._startKeyboardLongPress();
262
+ }
263
+ } else {
264
+ const elementIndex = DIAL_PAD_BUTTONS.findIndex((x) => x.value === e.key);
265
+ if (elementIndex > -1) {
266
+ const digit = x.shadowRoot.querySelector(".digits").children[elementIndex];
267
+ /* v8 ignore else -- @preserve */
268
+ if (digit) {
269
+ digit.active = true;
270
+ setTimeout(() => {
271
+ digit.active = false;
272
+ }, 200);
273
+ }
274
+ }
275
+ }
276
+ return true;
194
277
  }
195
- function headline() {
196
- return html`
197
- <h2 class="headline" id="dialog-headline">${(x) => x.headline}</h2>
198
- `;
278
+ function handleKeyUp(x, e) {
279
+ /* v8 ignore else -- @preserve */
280
+ if (e.key === " " || e.key === "Space") {
281
+ /* v8 ignore else -- @preserve */
282
+ if (e.target instanceof HTMLInputElement) {
283
+ e.preventDefault();
284
+ if (!x._endKeyboardLongPress() && !x.disabled && !x.callActive) {
285
+ x.value += " ";
286
+ x.$emit("input");
287
+ x.$emit("change");
288
+ }
289
+ }
290
+ }
291
+ return true;
199
292
  }
200
- function subtitle() {
201
- return html`
202
- <h3 class="subtitle" id="dialog-subtitle">${(x) => x.subtitle}</h3>
203
- `;
293
+ function handleButtonKeyDown(digit, { parent: dialPad, event }) {
294
+ /* v8 ignore else -- @preserve */
295
+ if ((event.key === " " || event.key === "Space") && digit.value === "0") {
296
+ event.preventDefault();
297
+ /* v8 ignore else -- @preserve */
298
+ if (!event.repeat) dialPad._startKeyboardLongPress();
299
+ }
300
+ return true;
301
+ }
302
+ function handleButtonKeyUp(digit, { parent: dialPad, event }) {
303
+ /* v8 ignore else -- @preserve */
304
+ if ((event.key === " " || event.key === "Space") && digit.value === "0") {
305
+ event.preventDefault();
306
+ /* v8 ignore else -- @preserve */
307
+ if (!dialPad._endKeyboardLongPress() && !dialPad.disabled && !dialPad.callActive) onDigitClick(digit, {
308
+ parent: dialPad,
309
+ event: new MouseEvent("click", { bubbles: true })
310
+ });
311
+ }
312
+ return true;
313
+ }
314
+ function syncFieldAndPadValues(x) {
315
+ x.value = x._textFieldEl.value;
316
+ }
317
+ function stopPropagation(_, { event: e }) {
318
+ e.stopImmediatePropagation();
319
+ }
320
+ function deleteLastCharacter(dialPad) {
321
+ dialPad.value = dialPad.value.slice(0, -1);
322
+ dialPad.$emit("input");
323
+ dialPad.$emit("change");
324
+ if (dialPad.value === "") dialPad._textFieldEl?.focus();
325
+ }
326
+ function renderTextField(textFieldTag, buttonTag) {
327
+ return html`<${textFieldTag} ${ref("_textFieldEl")} class="phone-field" internal-part type="tel"
328
+ value="${(x) => x.value}" placeholder="${(x) => x.placeholder}"
329
+ ?disabled="${(x) => x.disabled}" helper-text="${(x) => x.helperText}" pattern="${(x) => x.pattern}"
330
+ aria-label="${(x) => x.locale.dialPad.inputLabel}"
331
+ @keydown="${(x, c) => handleKeyDown(x, c.event)}"
332
+ @keyup="${(x, c) => handleKeyUp(x, c.event)}"
333
+ @input="${syncFieldAndPadValues}"
334
+ @change="${syncFieldAndPadValues}"
335
+ @focus="${stopPropagation}"
336
+ @blur="${stopPropagation}"
337
+ ?autofocus="${(x) => x.autofocus}"
338
+ scale="${(x) => x.size === "condensed" ? "condensed" : "normal"}">
339
+ >
340
+ ${when((x) => x.value && x.value.length && x.value.length > 0, html`<${buttonTag}
341
+ slot="action-items"
342
+ size='super-condensed'
343
+ icon="backspace-line"
344
+ aria-label="${(x) => x.deleteAriaLabel || x.locale.dialPad.deleteButtonLabel}"
345
+ appearance='ghost'
346
+ ?disabled="${(x) => x.disabled || x.callActive}"
347
+ @click="${(x) => deleteLastCharacter(x)}">
348
+ </${buttonTag}>`)}
349
+ </${textFieldTag}>`;
350
+ }
351
+ function onDigitClick(digit, { parent: dialPad, event }) {
352
+ if (dialPad._suppressNextClick) {
353
+ dialPad._suppressNextClick = false;
354
+ return;
355
+ }
356
+ dialPad.value += digit.value;
357
+ dialPad.$emit("keypad-click", event.currentTarget);
358
+ dialPad.$emit("input");
359
+ dialPad.$emit("change");
204
360
  }
205
- function renderHeaderText() {
361
+ function renderDigits(buttonTag, iconTag) {
206
362
  return html`
207
- <div class="header-text">${headline()} ${subtitle()}</div>
363
+ ${repeat((_) => DIAL_PAD_BUTTONS, html`
364
+ <${buttonTag}
365
+ id="${(x) => x.id}"
366
+ value="${(x) => x.value}"
367
+ stacked
368
+ appearance="ghost-light"
369
+ shape="pill"
370
+ label="${(x, c) => (c.parent.noLetters ? null : x.letters) ?? x.alwaysVisibleLetters}"
371
+ size='condensed'
372
+ class="digit-btn"
373
+ ?autofocus="${(_, c) => c.parent.autofocus && c.parent.noInput && c.index === 0}"
374
+ aria-label="${(x, c) => c.parent.noLetters ? x.value : c.parent.locale.dialPad[x.ariaLabel]}"
375
+ ?disabled="${(_, c) => c.parent.disabled}"
376
+ @pointerdown="${(x, c) => c.parent._startLongPress(x.value, c.event)}"
377
+ @pointerup="${(_, c) => c.parent._endLongPress()}"
378
+ @pointercancel="${(_, c) => c.parent._cancelLongPress()}"
379
+ @pointerleave="${(_, c) => c.parent._cancelLongPress()}"
380
+ @keydown="${(x, c) => handleButtonKeyDown(x, {
381
+ parent: c.parent,
382
+ event: c.event
383
+ })}"
384
+ @keyup="${(x, c) => handleButtonKeyUp(x, {
385
+ parent: c.parent,
386
+ event: c.event
387
+ })}"
388
+ @click="${onDigitClick}">
389
+ <${iconTag} slot="icon"
390
+ name="${(x) => x.icon}"
391
+ class="digit-btn-num"></${iconTag}>
392
+ </${buttonTag}>
393
+ `, { positioning: true })}
208
394
  `;
209
395
  }
210
- function renderDismissButton(buttonTag) {
211
- return html`
212
- <${buttonTag}
213
- aria-label="${(x) => x.dismissButtonAriaLabel || x.locale.dialog.dismissButtonLabel}"
214
- size="condensed"
215
- class="dismiss-button"
216
- icon="close-line"
217
- @click="${(x) => x._handleCloseRequest()}"
218
- ></${buttonTag}>`;
396
+ function renderDialButton(buttonTag) {
397
+ return html`<${buttonTag} class="call-btn"
398
+ size="${(x) => x.size === "condensed" ? "normal" : "expanded"}"
399
+ appearance="filled"
400
+ icon="${(x) => x.callActive ? "disable-call-line" : "call-line"}"
401
+ connotation="${(x) => x.callActive ? "alert" : "cta"}"
402
+ ?disabled="${(x) => x.disabled}"
403
+ ?pending="${(x) => x.pending}"
404
+ @click="${(x) => x._onDial()}"
405
+ label="${(x) => x.callActive ? x.endCallButtonLabel || x.locale.dialPad.endCallButtonLabel : x.callButtonLabel || x.locale.dialPad.callButtonLabel}">
406
+ </${buttonTag}>`;
219
407
  }
220
- var DialogTemplate = (context) => {
221
- const elevationTag = context.tagFor(Elevation);
222
- const iconTag = context.tagFor(Icon);
408
+ function renderErrorAnnouncement(visuallyHiddenTag) {
409
+ return html`<${visuallyHiddenTag} role="alert" aria-atomic="true">
410
+ ${(x) => `${x.locale.dialPad.errorLabel} ${x._errorAnnouncement}`}
411
+ </${visuallyHiddenTag}>`;
412
+ }
413
+ var DialPadTemplate = (context) => {
223
414
  const buttonTag = context.tagFor(Button);
224
- return html`
225
- <${elevationTag} dp="8" not-relative>
226
- <dialog class="${(x) => 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])}"
227
-
228
- @keydown="${(x, c) => x._onKeyDown(c.event)}"
229
- @cancel="${(_, c) => c.event.preventDefault()}"
230
- ${delegateAria({
231
- ariaModal: (x) => String(x._openedAsModal),
232
- ariaLabelledBy: (x) => x.headline ? "dialog-headline dialog-subtitle" : null
233
- })}
234
- >
235
- <slot name="main">
236
- <div class="main-wrapper">
237
- <div class="header ${(x) => x.subtitle ? "border" : ""}">
238
- ${when((x) => x._showDismissButton, renderDismissButton(buttonTag))}
239
- <slot name="graphic">
240
- ${when((x) => x.icon, icon(iconTag))}
241
- </slot>
242
- ${when((x) => x.headline && x.subtitle, renderHeaderText())}
243
- ${when((x) => x.headline && !x.subtitle, headline())}
244
- ${when((x) => x.subtitle && !x.headline, subtitle())}
245
- </div>
246
- <div class="body ${(x) => x.fullWidthBody ? "full-width" : ""}" >
247
- <slot name="body" ${slotted("bodySlottedContent")}></slot>
248
- </div>
249
- <div class="footer">
250
- <div>
251
- <slot name="footer" ${slotted("footerSlottedContent")}></slot>
252
- </div>
253
- <div class="actions">
254
- <slot name="action-items" ${slotted("actionItemsSlottedContent")}></slot>
255
- </div>
256
- </div>
257
- </div>
258
- </slot>
259
- </dialog>
260
- </${elevationTag}>`;
415
+ const iconTag = context.tagFor(Icon);
416
+ const textFieldTag = context.tagFor(TextField);
417
+ const visuallyHiddenTag = context.tagFor(VisuallyHidden);
418
+ return html` <div
419
+ class="${(x) => classNames("base", [`size-${x.size}`, Boolean(x.size)], ["no-input", x.noInput], ["no-letters", x.noLetters])}"
420
+ >
421
+ ${when((x) => !x.noInput, renderTextField(textFieldTag, buttonTag))}
422
+ <div class="digits">${renderDigits(buttonTag, iconTag)}</div>
423
+ ${when((x) => !x.noCall, renderDialButton(buttonTag))}
424
+ ${renderErrorAnnouncement(visuallyHiddenTag)}
425
+ </div>`;
261
426
  };
262
427
  //#endregion
263
- //#region src/lib/dialog/definition.ts
428
+ //#region src/lib/dial-pad/definition.ts
264
429
  /** @internal */
265
- var dialogDefinition = defineVividComponent("dialog", Dialog, DialogTemplate, [
266
- iconDefinition,
430
+ var dialPadDefinition = defineVividComponent("dial-pad", DialPad, DialPadTemplate, [
267
431
  buttonDefinition,
268
- elevationDefinition
269
- ], { styles: dialog_default });
432
+ textFieldDefinition,
433
+ iconDefinition,
434
+ visuallyHiddenDefinition
435
+ ], { styles: dial_pad_default });
270
436
  /**
271
- * Registers the dialog elements with the design system.
437
+ * Registers the dial-pad element with the design system.
272
438
  *
273
439
  * @param prefix - the prefix to use for the component name
274
440
  */
275
- var registerDialog = createRegisterFunction(dialogDefinition);
441
+ var registerDialPad = createRegisterFunction(dialPadDefinition);
276
442
  //#endregion
277
- export { registerDialog as n, Dialog as r, dialogDefinition as t };
443
+ export { registerDialPad as n, DialPad as r, dialPadDefinition as t };