@vonage/vivid 5.17.0 → 5.18.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 (459) hide show
  1. package/accordion/definition.cjs +6 -6
  2. package/accordion/definition.js +1 -1
  3. package/accordion/index.cjs +1 -1
  4. package/accordion/index.js +2 -2
  5. package/accordion-item/definition.cjs +5 -5
  6. package/accordion-item/definition.js +1 -1
  7. package/accordion-item/index.cjs +1 -1
  8. package/accordion-item/index.js +2 -2
  9. package/alert/definition.cjs +5 -5
  10. package/alert/definition.js +1 -1
  11. package/alert/index.cjs +2 -2
  12. package/alert/index.js +6 -5
  13. package/audio-player/definition.cjs +5 -5
  14. package/audio-player/definition.js +1 -1
  15. package/audio-player/index.cjs +1 -1
  16. package/audio-player/index.js +2 -1
  17. package/avatar/definition.cjs +5 -5
  18. package/avatar/definition.js +1 -1
  19. package/avatar/index.cjs +3 -3
  20. package/avatar/index.js +6 -5
  21. package/badge/definition.cjs +5 -5
  22. package/badge/definition.js +1 -1
  23. package/badge/index.cjs +1 -4
  24. package/badge/index.js +4 -20
  25. package/banner/definition.cjs +5 -5
  26. package/banner/definition.js +1 -1
  27. package/banner/index.cjs +2 -2
  28. package/banner/index.js +5 -4
  29. package/breadcrumb-item/definition.cjs +4 -4
  30. package/breadcrumb-item/definition.js +1 -1
  31. package/breadcrumb-item/index.cjs +1 -1
  32. package/breadcrumb-item/index.js +1 -0
  33. package/bundled/affix.cjs +1 -1
  34. package/bundled/affix.js +5 -5
  35. package/bundled/definition11.cjs +2 -2
  36. package/bundled/definition11.js +5 -5
  37. package/bundled/definition12.cjs +3 -3
  38. package/bundled/definition12.js +5 -5
  39. package/bundled/definition13.cjs +2 -2
  40. package/bundled/definition13.js +4 -4
  41. package/bundled/definition15.cjs +3 -3
  42. package/bundled/definition15.js +7 -7
  43. package/bundled/definition17.cjs +3 -3
  44. package/bundled/definition17.js +8 -8
  45. package/bundled/definition18.cjs +2 -2
  46. package/bundled/definition18.js +6 -6
  47. package/bundled/definition2.cjs +3 -14
  48. package/bundled/definition2.js +15 -48
  49. package/bundled/definition20.cjs +5 -5
  50. package/bundled/definition20.js +8 -8
  51. package/bundled/definition22.cjs +4 -39
  52. package/bundled/definition22.js +18 -70
  53. package/bundled/definition23.cjs +12 -0
  54. package/bundled/definition23.js +37 -0
  55. package/bundled/definition24.cjs +39 -0
  56. package/bundled/definition24.js +72 -0
  57. package/bundled/definition3.cjs +1 -1
  58. package/bundled/definition3.js +9 -6
  59. package/bundled/definition4.cjs +2 -2
  60. package/bundled/definition4.js +5 -5
  61. package/bundled/definition6.cjs +11 -11
  62. package/bundled/definition6.js +45 -29
  63. package/bundled/localized.cjs +1 -1
  64. package/bundled/localized.js +1 -0
  65. package/bundled/mixins.cjs +4 -4
  66. package/bundled/mixins.js +7 -7
  67. package/bundled/numberConverter.cjs +12 -0
  68. package/bundled/numberConverter.js +38 -0
  69. package/bundled/picker-field.template.cjs +2 -1
  70. package/bundled/picker-field.template.js +2 -1
  71. package/bundled/utils.cjs +1 -0
  72. package/bundled/utils.js +1420 -0
  73. package/bundled/vivid-element.cjs +1 -1
  74. package/bundled/vivid-element.js +1 -1
  75. package/button/definition.cjs +5 -5
  76. package/button/definition.js +1 -1
  77. package/button/index.cjs +1 -1
  78. package/button/index.js +1 -1
  79. package/card/definition.cjs +5 -5
  80. package/card/definition.js +1 -1
  81. package/card/index.cjs +4 -4
  82. package/card/index.js +7 -6
  83. package/checkbox/definition.cjs +5 -5
  84. package/checkbox/definition.js +1 -1
  85. package/checkbox/index.cjs +1 -1
  86. package/checkbox/index.js +1 -1
  87. package/color-picker/definition.cjs +5 -5
  88. package/color-picker/definition.js +1 -1
  89. package/color-picker/index.cjs +7 -7
  90. package/color-picker/index.js +55 -54
  91. package/combobox/definition.cjs +5 -5
  92. package/combobox/definition.js +1 -1
  93. package/combobox/index.cjs +2 -2
  94. package/combobox/index.js +8 -7
  95. package/contextual-help/definition.cjs +5 -5
  96. package/contextual-help/definition.js +1 -1
  97. package/contextual-help/index.cjs +1 -1
  98. package/contextual-help/index.js +1 -1
  99. package/country/definition.cjs +5 -5
  100. package/country/definition.js +1 -1
  101. package/country/index.cjs +1 -12
  102. package/country/index.js +4 -1216
  103. package/country-group/definition.cjs +6 -0
  104. package/country-group/definition.js +3 -0
  105. package/country-group/index.cjs +43 -0
  106. package/country-group/index.js +166 -0
  107. package/custom-elements.json +1112 -450
  108. package/data-grid/definition.cjs +9 -9
  109. package/data-grid/definition.js +2 -2
  110. package/data-grid/index.cjs +4 -4
  111. package/data-grid/index.js +47 -46
  112. package/date-picker/definition.cjs +5 -5
  113. package/date-picker/definition.js +2 -2
  114. package/date-picker/index.cjs +1 -1
  115. package/date-picker/index.js +1 -1
  116. package/date-range-picker/definition.cjs +5 -5
  117. package/date-range-picker/definition.js +2 -2
  118. package/date-range-picker/index.cjs +1 -1
  119. package/date-range-picker/index.js +1 -1
  120. package/date-time-picker/definition.cjs +5 -5
  121. package/date-time-picker/definition.js +2 -2
  122. package/date-time-picker/index.cjs +1 -1
  123. package/date-time-picker/index.js +1 -1
  124. package/dial-pad/definition.cjs +5 -5
  125. package/dial-pad/definition.js +2 -2
  126. package/dial-pad/index.cjs +4 -4
  127. package/dial-pad/index.js +9 -8
  128. package/dialog/definition.cjs +5 -5
  129. package/dialog/definition.js +2 -2
  130. package/dialog/index.cjs +4 -4
  131. package/dialog/index.js +12 -11
  132. package/divider/definition.cjs +1 -1
  133. package/divider/definition.js +1 -1
  134. package/empty-state/definition.cjs +5 -5
  135. package/empty-state/definition.js +2 -2
  136. package/empty-state/index.cjs +2 -2
  137. package/empty-state/index.js +6 -5
  138. package/fab/definition.cjs +5 -5
  139. package/fab/definition.js +2 -2
  140. package/fab/index.cjs +2 -2
  141. package/fab/index.js +5 -4
  142. package/file-picker/definition.cjs +5 -5
  143. package/file-picker/definition.js +2 -2
  144. package/file-picker/index.cjs +6 -6
  145. package/file-picker/index.js +9 -8
  146. package/flag/definition.cjs +6 -0
  147. package/flag/definition.js +3 -0
  148. package/flag/index.cjs +10 -0
  149. package/flag/index.js +61 -0
  150. package/header/definition.cjs +1 -1
  151. package/header/definition.js +1 -1
  152. package/icon/definition.cjs +1 -0
  153. package/icon/definition.js +1 -0
  154. package/icon/index.cjs +1 -1
  155. package/icon/index.js +1 -0
  156. package/index.cjs +183 -174
  157. package/index.js +48 -45
  158. package/layout/definition.cjs +1 -1
  159. package/layout/definition.js +1 -1
  160. package/lib/button/button.d.ts +1 -0
  161. package/lib/components.d.ts +2 -0
  162. package/lib/country/countries-data.d.ts +1 -0
  163. package/lib/country/{country-code-to-flag-icon.d.ts → utils.d.ts} +0 -3
  164. package/lib/country-group/country-group.d.ts +829 -0
  165. package/lib/country-group/country-group.template.d.ts +3 -0
  166. package/lib/country-group/definition.d.ts +3 -0
  167. package/lib/country-group/index.d.ts +1 -0
  168. package/lib/country-group/locale.d.ts +3 -0
  169. package/lib/date-picker/date-picker.d.ts +4 -0
  170. package/lib/date-range-picker/date-range-picker.d.ts +2 -0
  171. package/lib/date-time-picker/date-time-picker.d.ts +4 -0
  172. package/lib/flag/definition.d.ts +3 -0
  173. package/lib/flag/flag.d.ts +8 -0
  174. package/lib/flag/flag.template.d.ts +3 -0
  175. package/lib/flag/index.d.ts +1 -0
  176. package/lib/icon/icon.d.ts +1 -2
  177. package/lib/searchable-select/option-tag.d.ts +3 -1
  178. package/lib/searchable-select/searchable-select.d.ts +3 -1
  179. package/lib/tag-name-map.d.ts +2 -1
  180. package/lib/time-picker/time-picker.d.ts +2 -0
  181. package/locales/de-DE.cjs +1 -0
  182. package/locales/de-DE.js +1 -0
  183. package/locales/en-GB.cjs +1 -0
  184. package/locales/en-GB.js +1 -0
  185. package/locales/en-US.cjs +1 -0
  186. package/locales/en-US.js +1 -0
  187. package/locales/ja-JP.cjs +1 -0
  188. package/locales/ja-JP.js +1 -0
  189. package/locales/zh-CN.cjs +1 -0
  190. package/locales/zh-CN.js +1 -0
  191. package/menu/definition.cjs +5 -5
  192. package/menu/definition.js +1 -1
  193. package/menu/index.cjs +1 -1
  194. package/menu/index.js +1 -1
  195. package/menu-item/definition.cjs +6 -6
  196. package/menu-item/definition.js +1 -1
  197. package/menu-item/index.cjs +1 -1
  198. package/menu-item/index.js +1 -1
  199. package/nav/definition.cjs +1 -1
  200. package/nav/definition.js +1 -1
  201. package/nav-disclosure/definition.cjs +5 -5
  202. package/nav-disclosure/definition.js +2 -2
  203. package/nav-disclosure/index.cjs +2 -2
  204. package/nav-disclosure/index.js +6 -5
  205. package/nav-item/definition.cjs +5 -5
  206. package/nav-item/definition.js +2 -2
  207. package/nav-item/index.cjs +2 -2
  208. package/nav-item/index.js +5 -4
  209. package/note/definition.cjs +5 -5
  210. package/note/definition.js +2 -2
  211. package/note/index.cjs +2 -2
  212. package/note/index.js +5 -4
  213. package/number-field/definition.cjs +5 -5
  214. package/number-field/definition.js +2 -2
  215. package/number-field/index.cjs +2 -2
  216. package/number-field/index.js +6 -5
  217. package/option/definition.cjs +5 -5
  218. package/option/definition.js +1 -1
  219. package/option/index.cjs +1 -1
  220. package/option/index.js +1 -1
  221. package/package.json +4 -4
  222. package/pagination/definition.cjs +5 -5
  223. package/pagination/definition.js +2 -2
  224. package/pagination/index.cjs +1 -1
  225. package/pagination/index.js +1 -1
  226. package/popover/definition.cjs +5 -5
  227. package/popover/definition.js +2 -2
  228. package/popover/index.cjs +4 -4
  229. package/popover/index.js +7 -6
  230. package/popup/definition.cjs +4 -4
  231. package/popup/definition.js +1 -1
  232. package/popup/index.cjs +1 -1
  233. package/popup/index.js +1 -1
  234. package/progress/definition.cjs +1 -1
  235. package/progress/definition.js +1 -1
  236. package/radio/definition.cjs +1 -1
  237. package/radio/definition.js +1 -1
  238. package/radio-group/definition.cjs +5 -5
  239. package/radio-group/definition.js +2 -2
  240. package/radio-group/index.cjs +1 -1
  241. package/radio-group/index.js +1 -1
  242. package/range-slider/definition.cjs +5 -5
  243. package/range-slider/definition.js +2 -2
  244. package/range-slider/index.cjs +1 -1
  245. package/range-slider/index.js +22 -19
  246. package/rich-text-editor/definition.cjs +32 -32
  247. package/rich-text-editor/definition.js +2 -2
  248. package/rich-text-editor/index.cjs +1 -1
  249. package/rich-text-editor/index.js +2 -2
  250. package/rich-text-view/definition.cjs +1 -1
  251. package/rich-text-view/definition.js +1 -1
  252. package/searchable-select/definition.cjs +4 -4
  253. package/searchable-select/definition.js +2 -2
  254. package/searchable-select/index.cjs +6 -4
  255. package/searchable-select/index.js +76 -73
  256. package/select/definition.cjs +5 -5
  257. package/select/definition.js +2 -2
  258. package/select/index.cjs +1 -1
  259. package/select/index.js +1 -1
  260. package/selectable-box/definition.cjs +5 -5
  261. package/selectable-box/definition.js +2 -2
  262. package/selectable-box/index.cjs +1 -1
  263. package/selectable-box/index.js +1 -1
  264. package/shared/icon/utils.d.ts +1 -0
  265. package/shared/localization/Locale.d.ts +2 -0
  266. package/shared/picker-field/mixins/calendar-picker.d.ts +1 -0
  267. package/shared/picker-field/mixins/calendar-picker.template.d.ts +1 -0
  268. package/shared/picker-field/mixins/min-max-calendar-picker.d.ts +1 -0
  269. package/shared/picker-field/mixins/single-date-picker.d.ts +1 -0
  270. package/shared/picker-field/mixins/single-value-picker.d.ts +1 -0
  271. package/shared/picker-field/mixins/time-selection-picker.d.ts +1 -0
  272. package/shared/picker-field/mixins/time-selection-picker.template.d.ts +2 -0
  273. package/shared/picker-field/picker-field.d.ts +2 -0
  274. package/side-drawer/definition.cjs +1 -1
  275. package/side-drawer/definition.js +1 -1
  276. package/simple-color-picker/definition.cjs +5 -5
  277. package/simple-color-picker/definition.js +2 -2
  278. package/simple-color-picker/index.cjs +2 -2
  279. package/simple-color-picker/index.js +6 -5
  280. package/slider/definition.cjs +5 -5
  281. package/slider/definition.js +1 -1
  282. package/slider/index.cjs +1 -1
  283. package/slider/index.js +1 -1
  284. package/split-button/definition.cjs +5 -5
  285. package/split-button/definition.js +2 -2
  286. package/split-button/index.cjs +2 -2
  287. package/split-button/index.js +7 -6
  288. package/status/definition.cjs +5 -5
  289. package/status/definition.js +2 -2
  290. package/status/index.cjs +2 -2
  291. package/status/index.js +5 -4
  292. package/switch/definition.cjs +5 -5
  293. package/switch/definition.js +2 -2
  294. package/switch/index.cjs +2 -2
  295. package/switch/index.js +6 -5
  296. package/tab/definition.cjs +5 -5
  297. package/tab/definition.js +2 -2
  298. package/tab/index.cjs +1 -1
  299. package/tab/index.js +1 -1
  300. package/tab-panel/definition.cjs +1 -1
  301. package/tab-panel/definition.js +1 -1
  302. package/table/definition.cjs +17 -17
  303. package/table/definition.js +2 -2
  304. package/table/index.cjs +3 -3
  305. package/table/index.js +6 -5
  306. package/tabs/definition.cjs +6 -6
  307. package/tabs/definition.js +2 -2
  308. package/tabs/index.cjs +1 -1
  309. package/tabs/index.js +1 -1
  310. package/tag/definition.cjs +5 -5
  311. package/tag/definition.js +2 -2
  312. package/tag/index.cjs +4 -4
  313. package/tag/index.js +6 -5
  314. package/tag-group/definition.cjs +1 -1
  315. package/tag-group/definition.js +1 -1
  316. package/text-area/definition.cjs +5 -5
  317. package/text-area/definition.js +2 -2
  318. package/text-area/index.cjs +1 -1
  319. package/text-area/index.js +1 -1
  320. package/text-field/definition.cjs +5 -5
  321. package/text-field/definition.js +1 -1
  322. package/text-field/index.cjs +1 -1
  323. package/text-field/index.js +1 -1
  324. package/time-picker/definition.cjs +4 -4
  325. package/time-picker/definition.js +2 -2
  326. package/time-picker/index.cjs +1 -1
  327. package/time-picker/index.js +1 -1
  328. package/toggletip/definition.cjs +5 -5
  329. package/toggletip/definition.js +1 -1
  330. package/toggletip/index.cjs +1 -1
  331. package/toggletip/index.js +1 -1
  332. package/tooltip/definition.cjs +5 -5
  333. package/tooltip/definition.js +1 -1
  334. package/tooltip/index.cjs +1 -1
  335. package/tooltip/index.js +1 -1
  336. package/tree-item/definition.cjs +5 -5
  337. package/tree-item/definition.js +2 -2
  338. package/tree-item/index.cjs +1 -1
  339. package/tree-item/index.js +1 -1
  340. package/tree-view/definition.cjs +5 -5
  341. package/tree-view/definition.js +2 -2
  342. package/tree-view/index.cjs +1 -1
  343. package/tree-view/index.js +1 -1
  344. package/unbundled/definition11.cjs +6 -0
  345. package/unbundled/definition11.js +6 -0
  346. package/unbundled/definition14.cjs +1 -0
  347. package/unbundled/definition14.js +1 -0
  348. package/unbundled/definition2.cjs +5 -75
  349. package/unbundled/definition2.js +1 -71
  350. package/unbundled/definition28.cjs +1 -0
  351. package/unbundled/definition28.js +1 -0
  352. package/unbundled/definition31.cjs +2 -1189
  353. package/unbundled/definition31.js +1 -1188
  354. package/unbundled/definition32.cjs +207 -1835
  355. package/unbundled/definition32.js +203 -1807
  356. package/unbundled/definition33.cjs +83 -311
  357. package/unbundled/definition33.js +79 -235
  358. package/unbundled/definition34.cjs +1887 -25
  359. package/unbundled/definition34.js +1857 -24
  360. package/unbundled/definition35.cjs +315 -121
  361. package/unbundled/definition35.js +236 -114
  362. package/unbundled/definition36.cjs +25 -405
  363. package/unbundled/definition36.js +22 -397
  364. package/unbundled/definition37.cjs +47 -142
  365. package/unbundled/definition37.js +44 -139
  366. package/unbundled/definition38.cjs +345 -330
  367. package/unbundled/definition38.js +343 -328
  368. package/unbundled/definition39.cjs +183 -235
  369. package/unbundled/definition39.js +181 -233
  370. package/unbundled/definition40.cjs +377 -47
  371. package/unbundled/definition40.js +372 -42
  372. package/unbundled/definition41.cjs +256 -57
  373. package/unbundled/definition41.js +255 -56
  374. package/unbundled/definition42.cjs +45 -432
  375. package/unbundled/definition42.js +41 -428
  376. package/unbundled/definition43.cjs +63 -49
  377. package/unbundled/definition43.js +61 -47
  378. package/unbundled/definition44.cjs +438 -30
  379. package/unbundled/definition44.js +434 -25
  380. package/unbundled/definition45.cjs +46 -84
  381. package/unbundled/definition45.js +43 -81
  382. package/unbundled/definition46.cjs +29 -54
  383. package/unbundled/definition46.js +24 -50
  384. package/unbundled/definition47.cjs +93 -21
  385. package/unbundled/definition47.js +91 -16
  386. package/unbundled/definition48.cjs +49 -33
  387. package/unbundled/definition48.js +46 -30
  388. package/unbundled/definition49.cjs +22 -347
  389. package/unbundled/definition49.js +16 -344
  390. package/unbundled/definition50.cjs +34 -211
  391. package/unbundled/definition50.js +30 -207
  392. package/unbundled/definition51.cjs +282 -242
  393. package/unbundled/definition51.js +275 -235
  394. package/unbundled/definition52.cjs +211 -51
  395. package/unbundled/definition52.js +209 -48
  396. package/unbundled/definition53.cjs +275 -131
  397. package/unbundled/definition53.js +272 -127
  398. package/unbundled/definition54.cjs +50 -261
  399. package/unbundled/definition54.js +48 -260
  400. package/unbundled/definition55.cjs +126 -443
  401. package/unbundled/definition55.js +123 -441
  402. package/unbundled/definition56.cjs +234 -3596
  403. package/unbundled/definition56.js +229 -3428
  404. package/unbundled/definition57.cjs +407 -728
  405. package/unbundled/definition57.js +405 -726
  406. package/unbundled/definition58.cjs +3618 -106
  407. package/unbundled/definition58.js +3449 -100
  408. package/unbundled/definition59.cjs +624 -868
  409. package/unbundled/definition59.js +619 -863
  410. package/unbundled/definition60.cjs +106 -108
  411. package/unbundled/definition60.js +102 -104
  412. package/unbundled/definition61.cjs +1040 -71
  413. package/unbundled/definition61.js +1035 -65
  414. package/unbundled/definition62.cjs +105 -169
  415. package/unbundled/definition62.js +101 -165
  416. package/unbundled/definition63.cjs +70 -113
  417. package/unbundled/definition63.js +65 -109
  418. package/unbundled/definition64.cjs +181 -53
  419. package/unbundled/definition64.js +178 -50
  420. package/unbundled/definition65.cjs +109 -76
  421. package/unbundled/definition65.js +109 -75
  422. package/unbundled/definition66.cjs +58 -21
  423. package/unbundled/definition66.js +55 -15
  424. package/unbundled/definition67.cjs +81 -74
  425. package/unbundled/definition67.js +79 -73
  426. package/unbundled/definition68.cjs +19 -344
  427. package/unbundled/definition68.js +14 -335
  428. package/unbundled/definition69.cjs +88 -26
  429. package/unbundled/definition69.js +85 -22
  430. package/unbundled/definition7.cjs +18 -3
  431. package/unbundled/definition7.js +18 -3
  432. package/unbundled/definition70.cjs +330 -111
  433. package/unbundled/definition70.js +320 -108
  434. package/unbundled/definition71.cjs +26 -271
  435. package/unbundled/definition71.js +21 -267
  436. package/unbundled/definition72.cjs +134 -27
  437. package/unbundled/definition72.js +125 -25
  438. package/unbundled/definition73.cjs +245 -113
  439. package/unbundled/definition73.js +242 -104
  440. package/unbundled/definition74.cjs +28 -212
  441. package/unbundled/definition74.js +26 -202
  442. package/unbundled/definition75.cjs +117 -479
  443. package/unbundled/definition75.js +109 -475
  444. package/unbundled/definition76.cjs +232 -0
  445. package/unbundled/definition76.js +213 -0
  446. package/unbundled/definition77.cjs +533 -0
  447. package/unbundled/definition77.js +513 -0
  448. package/unbundled/numberConverter.cjs +91 -0
  449. package/unbundled/numberConverter.js +74 -0
  450. package/unbundled/picker-field.template.cjs +2 -0
  451. package/unbundled/picker-field.template.js +2 -0
  452. package/unbundled/utils.cjs +1439 -0
  453. package/unbundled/utils.js +1428 -0
  454. package/unbundled/vivid-element.cjs +1 -1
  455. package/unbundled/vivid-element.js +1 -1
  456. package/video-player/definition.cjs +1 -1
  457. package/video-player/definition.js +1 -1
  458. package/vivid.api.json +513 -0
  459. /package/{lib/icon/icon.placeholder.d.ts → shared/icon/icon-placeholder.d.ts} +0 -0
@@ -1,319 +1,359 @@
1
1
  import { o as defineVividComponent, s as createRegisterFunction, t as VividElement } from "./vivid-element.js";
2
- import { r as Icon, t as iconDefinition } from "./definition2.js";
2
+ import { n as visuallyHiddenDefinition, r as VisuallyHidden } from "./definition.js";
3
+ import { t as iconDefinition } from "./definition2.js";
3
4
  import { t as __decorate } from "./decorate.js";
5
+ import { t as AffixIcon } from "./affix.js";
4
6
  import { n as delegateAria, t as DelegatesAria } from "./delegates-aria.js";
7
+ import { n as FormAssociated } from "./form-associated.js";
8
+ import { t as FormElement } from "./form-element.js";
9
+ import { t as WithSuccessText } from "./with-success-text.js";
10
+ import { t as WithErrorText } from "./with-error-text.js";
11
+ import { t as WithContextualHelp } from "./with-contextual-help.js";
5
12
  import { t as Localized } from "./localized.js";
6
13
  import { i as Button, t as buttonDefinition } from "./definition7.js";
7
- import { r as Elevation, t as elevationDefinition } from "./definition8.js";
8
- import { attr, html, nullableNumberConverter, observable, ref, slotted, when } from "@microsoft/fast-element";
9
- import { classNames } from "@microsoft/fast-web-utilities";
10
- import { arrow, autoUpdate, computePosition, flip, hide, inline, offset, shift } from "@floating-ui/dom";
11
- //#region src/lib/popover/popover.scss?inline
12
- var popover_default = ":host{display:inline-block}.base{white-space:initial;--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}.base ::-webkit-scrollbar{width:4px}.base ::-webkit-scrollbar-track{background:var(--scrollbar-track-color)}.base ::-webkit-scrollbar-thumb{background-color:var(--scrollbar-fallback-track-color,var(--scrollbar-thumb-color));border:0;border-radius:4px}.base{border:none;border-radius:8px;inline-size:max-content;min-inline-size:fit-content;margin:0;padding:0;position:fixed;overflow:visible}.base:focus-visible{outline:none}.base::backdrop{background-color:var(--popover-backdrop-bg,transparent)}.control{padding:var(--popover-padding,24px);border-radius:inherit;background:var(--vvd-color-surface-4dp);color:var(--vvd-color-canvas-text);gap:var(--popover-gap,24px);flex-direction:column;display:flex}.control:not(.open){display:none}.control.condensed{--popover-padding:12px;--popover-gap:12px}.control.manual{padding-block-start:40px}.arrow{z-index:-1;background:var(--vvd-color-surface-4dp);width:8px;height:8px;position:absolute;transform:rotate(45deg)}.dismiss-button{position:absolute;inset-block-start:4px;inset-inline-end:4px}";
14
+ import { u as Shape } from "./enums.js";
15
+ import { t as Divider } from "./divider.js";
16
+ import { a as feedbackMessageDefinition, t as WithFeedback } from "./mixins.js";
17
+ import { t as contextualHelpDefinition } from "./definition25.js";
18
+ import { t as dividerDefinition } from "./definition36.js";
19
+ import { Updates, attr, html, nullableNumberConverter, observable, ref, slotted, when } from "@microsoft/fast-element";
20
+ import { classNames, keyArrowDown, keyArrowUp } from "@microsoft/fast-web-utilities";
21
+ //#region src/lib/number-field/number-field.scss?inline
22
+ var number_field_default = ".label-wrapper{align-items:center;gap:var(--label-wrapper-gap,4px);flex-direction:row;display:flex}.label-wrapper[hidden]{display:none}.label:not(slot),.label::slotted(label){flex:0 auto}:host{display:inline-block}.base{--_appearance-color-text:var(--vvd-color-canvas-text);--_appearance-color-fill:var(--vvd-color-canvas);--_appearance-color-outline:var(--vvd-color-neutral-500)}.base.appearance-ghost{--_appearance-color-text:var(--_connotation-color-firm);--_appearance-color-fill:transparent;--_appearance-color-outline:transparent}@media (hover:hover){.base:hover:where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text:var(--vvd-color-canvas-text);--_appearance-color-fill:var(--vvd-color-canvas);--_appearance-color-outline:var(--vvd-color-neutral-700)}.base:hover:where(:not(.disabled,:disabled,.readonly)).appearance-ghost{--_appearance-color-text:var(--_connotation-color-firm);--_appearance-color-fill:var(--_connotation-color-faint);--_appearance-color-outline:transparent}}.base.hover:where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text:var(--vvd-color-canvas-text);--_appearance-color-fill:var(--vvd-color-canvas);--_appearance-color-outline:var(--vvd-color-neutral-700)}.base.hover:where(:not(.disabled,:disabled,.readonly)).appearance-ghost{--_appearance-color-text:var(--_connotation-color-firm);--_appearance-color-fill:var(--_connotation-color-faint);--_appearance-color-outline:transparent}.base:disabled{--_appearance-color-text:var(--vvd-color-neutral-300);--_appearance-color-fill:var(--vvd-color-neutral-100);--_appearance-color-outline:var(--vvd-color-neutral-300)}.base:disabled.appearance-ghost{--_appearance-color-text:var(--vvd-color-neutral-300);--_appearance-color-fill:transparent;--_appearance-color-outline:transparent}.base.disabled{--_appearance-color-text:var(--vvd-color-neutral-300);--_appearance-color-fill:var(--vvd-color-neutral-100);--_appearance-color-outline:var(--vvd-color-neutral-300)}.base.disabled.appearance-ghost{--_appearance-color-text:var(--vvd-color-neutral-300);--_appearance-color-fill:transparent;--_appearance-color-outline:transparent}.base.readonly:where(:not(.disabled,:disabled)){--_appearance-color-text:var(--vvd-color-canvas-text);--_appearance-color-fill:var(--vvd-color-neutral-200);--_appearance-color-outline:var(--vvd-color-neutral-400)}.base.readonly:where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text:var(--vvd-color-neutral-600);--_appearance-color-fill:transparent;--_appearance-color-outline:transparent}.base.error:where(:not(.disabled,:disabled)){--_appearance-color-text:notSet;--_appearance-color-fill:var(--vvd-color-alert-50);--_appearance-color-outline:var(--vvd-color-alert-500)}.base.error:where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text:notSet;--_appearance-color-fill:var(--vvd-color-alert-50);--_appearance-color-outline:transparent}.base.success:where(:not(.disabled,:disabled)){--_appearance-color-text:notSet;--_appearance-color-fill:var(--vvd-color-success-50);--_appearance-color-outline:var(--vvd-color-success-500)}.base.success:where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text:notSet;--_appearance-color-fill:var(--vvd-color-success-50);--_appearance-color-outline:transparent}.base{--_connotation-color-primary:var(--vvd-text-field-accent-primary,var(--vvd-color-canvas-text));--_connotation-color-primary-text:var(--vvd-text-field-accent-primary-text,var(--vvd-color-canvas));--_connotation-color-primary-increment:var(--vvd-text-field-accent-primary-increment,var(--vvd-color-neutral-800));--_connotation-color-intermediate:var(--vvd-text-field-accent-intermediate,var(--vvd-color-neutral-500));--_connotation-color-firm:var(--vvd-text-field-accent-firm,var(--vvd-color-canvas-text));--_connotation-color-fierce:var(--vvd-text-field-accent-fierce,var(--vvd-color-neutral-700));--_connotation-color-faint:var(--vvd-text-field-accent-faint,var(--vvd-color-neutral-50));--_connotation-color-soft:var(--vvd-text-field-accent-soft,var(--vvd-color-neutral-100));--_text-field-gutter-start:calc(calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2))) / 2.5);--_text-field-gutter-end:calc(calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2))) / 2.5);--_text-field-icon-size:calc(calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2))) / 2);--_text-field-block-size:calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2)));--_text-field-border-radius:8px;--_text-field-pill-border-radius:24px;grid-template-columns:min-content 1fr max-content;align-items:center;gap:4px;width:100%;display:inline-grid}.base.size-condensed{--_text-field-gutter-start:calc(calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2) - 16)) / 2);--_text-field-gutter-end:calc(calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2) - 16)) / 2);--_text-field-icon-size:calc(calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2) - 8)) / 2);--_text-field-block-size:calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2) - 8));--_text-field-border-radius:4px}@supports (user-select:none){.base{user-select:none}}.base:not(.disabled){--_low-ink-color:var(--vvd-color-neutral-600)}.base.disabled{--_low-ink-color:var(--_appearance-color-text)}.label:not(slot),.label::slotted(label){font:var(--vvd-typography-base);grid-area:1/1/auto/4;box-sizing:initial!important;padding:initial!important;margin:initial!important;color:var(--vvd-color-canvas-text)!important}.char-count+.label:not(slot),.char-count+.label::slotted(label){grid-column:1/3}.char-count{color:var(--_low-ink-color);font:var(--vvd-typography-base)}.label-wrapper{grid-area:1/1/auto/4}.char-count+.label-wrapper{grid-column:1/3}.fieldset{background-color:var(--_appearance-color-fill);font:var(--vvd-typography-base);grid-column:1/4;align-items:center;padding-block:0;transition:color .2s,background-color .2s;display:flex;position:relative}.fieldset:after{border-radius:inherit;block-size:100%;box-shadow:inset 0 0 0 1px var(--_appearance-color-outline);content:\"\";pointer-events:none;inline-size:100%;transition:box-shadow .2s;display:block;position:absolute}.fieldset:focus-visible{outline:none}.base>.fieldset{block-size:var(--_text-field-block-size)}.base:not(.shape-pill) .fieldset{border-radius:var(--_text-field-border-radius)}.base.shape-pill .fieldset{border-radius:var(--_text-field-pill-border-radius)}.wrapper{border-radius:inherit;block-size:100%;inline-size:100%}.control{border-radius:inherit;text-align:start}.control:not(slot),.control::slotted(input){font:inherit;text-align:inherit;outline:#0000;box-sizing:border-box!important;border-radius:inherit!important;width:100%!important;margin:initial!important;appearance:none!important;block-size:100%!important;color:inherit!important;padding-block:0!important;padding-inline:var(--_text-field-gutter-start) var(--_text-field-gutter-end)!important;background-color:#0000!important;border:0!important}.control:not(slot):disabled,.control::slotted(input:disabled){cursor:not-allowed!important;opacity:1!important;-webkit-text-fill-color:var(--_appearance-color-text)!important}.control:not(slot)::placeholder{opacity:1!important;-webkit-text-fill-color:var(--_low-ink-color)!important}.control::slotted(input:-webkit-autofill){-webkit-box-shadow:0 0 0 1000px var(--_appearance-color-fill) inset;-webkit-text-fill-color:var(--_appearance-color-text)!important}.control:not(slot):-webkit-autofill{-webkit-box-shadow:0 0 0 1000px var(--_appearance-color-fill) inset;-webkit-text-fill-color:var(--_appearance-color-text)!important}.has-icon .control:not(slot),.has-icon .control::slotted(input){padding-inline-start:calc(var(--_text-field-icon-size) + var(--_text-field-gutter-start) * 2)!important}.icon{z-index:1;color:var(--_low-ink-color);font-size:var(--_text-field-icon-size);line-height:1;position:absolute;inset-block-start:50%;inset-inline-start:calc(100% + var(--_text-field-gutter-start));transform:translateY(-50%)}.leading-items-wrapper{position:relative}.base.no-leading .leading-items-wrapper{display:none}.action-items-wrapper{margin-inline-end:4px}.base:not(.action-items) .action-items-wrapper{display:none}@supports selector(:has(*)){.base:not(.has-activedescendant) .fieldset:has(.wrapper .control:focus-within):after{--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))}}@supports not selector(:has(*)){.base:not(.has-activedescendant) .wrapper:focus-within:after{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));--focus-stroke-gap-color:transparent;z-index:1;border-radius:inherit;content:\"\";pointer-events:none;display:block;position:absolute;inset:0}}:host([internal-part]) .fieldset{font:var(--vvd-typography-heading-4);background-color:#0000;line-height:1.1}:host([internal-part]) .fieldset:not(:focus-within):after{block-size:1px;inset-block-end:0}@supports selector(:has(*)){:host([internal-part]) .fieldset:has(.action-items-wrapper:focus-within):after{block-size:1px;inset-block-end:0}}:host([internal-part]) .control{text-align:center}slot[name=_mirrored-helper-text]{display:none}.base{--_text-field-gutter-end:70px}.control::-webkit-outer-spin-button{appearance:none}.control::-webkit-inner-spin-button{appearance:none}.control-buttons{z-index:1;display:flex;position:absolute;right:3px}.readonly .control-buttons,.disabled .control-buttons{pointer-events:none}.control-buttons .divider{margin-block:8px}.control-buttons>*{flex-shrink:0}";
13
23
  //#endregion
14
- //#region src/lib/popover/popover.ts
24
+ //#region src/lib/number-field/number-field.ts
25
+ var STEP_DIRECTION = {
26
+ up: 1,
27
+ down: -1
28
+ };
29
+ function makeStep(element, direction) {
30
+ const value = parseFloat(element.value);
31
+ const stepUpValue = !isNaN(value) ? value + direction * element.step : element.min > 0 ? element.min : element.max < 0 ? element.max : !element.min ? direction * element.step : 0;
32
+ element.value = Number(stepUpValue.toFixed(12)).toString();
33
+ element._updatedValueAnnouncement = element.locale.numberField.updatedValueAnnouncement(element._presentationValue);
34
+ }
35
+ var buildNumberPatterns = (decimalSeparator) => {
36
+ const ds = decimalSeparator.source;
37
+ return {
38
+ invalidCharacters: new RegExp(`[^0-9\\-+e${ds}]`, "g"),
39
+ additionalDecimalSeparators: new RegExp(`(?<=${ds}.*)${ds}`, "g"),
40
+ trailingDecimalSeparator: new RegExp(`${ds}$`),
41
+ decimalSeparator
42
+ };
43
+ };
44
+ var numberPatternsWithPeriod = buildNumberPatterns(/\./);
45
+ var numberPatternsWithComma = buildNumberPatterns(/,/);
46
+ var validNumber = /^-?((\d*\.\d+)|(\d+))$/;
15
47
  /**
16
48
  * @public
17
- * @component popover
18
- * @slot - Default slot for the popover content.
19
- * @slot anchor - Slot for the trigger element.
20
- * @slot footer - Use the footer slot in order to add action buttons or other contents to the bottom of the dialog.
21
- * @event {CustomEvent} open - Fired when the popover opens.
22
- * @event {CustomEvent} close - Fired when the popover closes.
49
+ * @component number-field
50
+ * @slot helper-text - Describes how to use the number-field. Alternative to the `helper-text` attribute.
51
+ * @event {CustomEvent<undefined>} input - Fires a custom 'input' event when the value has changed
52
+ * @event {CustomEvent<undefined>} change - Fires a custom 'change' event when the value has changed
53
+ * @vueModel modelValue value input,@lazy:change `event.currentTarget.value`
54
+ * @vueModel valueAsNumber valueAsNumber input,@lazy:change `event.currentTarget.valueAsNumber`
55
+ * @testAction fill fill #control
56
+ * @testAction clear clear #control
57
+ * @testAction clickIncrement clickButton #incrementButton
58
+ * @testAction clickDecrement clickButton #decrementButton
59
+ * @testQuery valueAsNumber valueAsNumber
60
+ * @testRef control shadow input.control
61
+ * @testRef incrementButton shadowButton #add
62
+ * @testRef decrementButton shadowButton #subtract
23
63
  */
24
- var Popover = class extends Localized(DelegatesAria(VividElement)) {
64
+ var NumberField = class extends WithContextualHelp(WithFeedback(WithErrorText(WithSuccessText(FormElement(AffixIcon(Localized(DelegatesAria(FormAssociated(VividElement))))))))) {
25
65
  constructor(..._args) {
26
66
  super(..._args);
27
- this.placement = "bottom";
28
- this.manual = false;
29
- this.layout = "default";
30
- this.offset = 8;
31
- this.alternate = false;
32
- this.dismissButtonAriaLabel = null;
33
- this.arrow = false;
34
- this.open = false;
67
+ this.proxy = document.createElement("input");
68
+ this.readOnly = false;
69
+ this.autofocus = false;
70
+ this.step = 1;
71
+ this.isUserInput = false;
72
+ this._presentationValue = "";
73
+ this._updatedValueAnnouncement = "";
74
+ this.incrementButtonAriaLabel = null;
75
+ this.decrementButtonAriaLabel = null;
35
76
  }
36
- /**
37
- * @internal
38
- */
39
- placementChanged() {
40
- this.#updateAutoUpdate();
77
+ stepChanged(_, next) {
78
+ this.proxy.setAttribute("step", Number.isFinite(next) ? next.toString() : "");
41
79
  }
42
80
  /**
81
+ * Ensures that the max is greater than the min and that the value
82
+ * is less than the max
83
+ *
43
84
  * @internal
44
85
  */
45
- arrowChanged() {
46
- this.#updateAutoUpdate();
86
+ maxChanged(_, next) {
87
+ this.max = Math.max(next, this.min ?? next);
88
+ this.proxy.max = this.max.toString();
89
+ this.validate();
47
90
  }
48
91
  /**
92
+ * Ensures that the min is less than the max and that the value
93
+ * is greater than the min
94
+ *
49
95
  * @internal
50
96
  */
51
- openChanged(_oldValue, newValue) {
52
- if (!this._popoverEl) return;
53
- const isOpen = this._popoverEl.matches(":popover-open");
54
- if (newValue && !isOpen) this._popoverEl.showPopover();
55
- else if (!newValue && isOpen) this._popoverEl.hidePopover();
56
- this.#updateAutoUpdate();
97
+ minChanged(_, next) {
98
+ this.min = Math.min(next, this.max ?? next);
99
+ this.proxy.min = this.min.toString();
100
+ this.validate();
57
101
  }
58
102
  /**
59
- * @internal
103
+ * The value property, typed as a number.
104
+ *
105
+ * @public
60
106
  */
61
- anchorChanged() {
62
- this.#updateAnchor();
107
+ get valueAsNumber() {
108
+ return parseFloat(this.value);
63
109
  }
64
- /**
65
- * @internal
66
- */
67
- _slottedAnchorChanged() {
68
- this.#updateAnchor();
110
+ set valueAsNumber(next) {
111
+ this.value = next.toString();
69
112
  }
70
113
  /**
71
114
  * @internal
72
115
  */
73
- #currentAnchor = null;
74
- /**
75
- * @internal
76
- */
77
- #updateAnchor() {
78
- if (!this._popoverEl) return;
79
- const newAnchor = this.anchor || this._slottedAnchor?.[0] || null;
80
- if (this.#currentAnchor === newAnchor) return;
81
- if (this.#currentAnchor) this.#unbindTrigger(this.#currentAnchor);
82
- this.#currentAnchor = newAnchor;
83
- if (this.#currentAnchor && this._popoverEl) {
84
- this.#bindTrigger(this.#currentAnchor);
85
- this.#updateAutoUpdate();
116
+ valueChanged(previous, next) {
117
+ this.value = validNumber.test(next) ? next : "";
118
+ if (next !== this.value) return;
119
+ if (this.control && !this.isUserInput) this._presentationValue = this.#valueToPresentationValue(this.value);
120
+ super.valueChanged(previous, this.value);
121
+ if (previous !== void 0 && !this.isUserInput) {
122
+ this.$emit("input");
123
+ this.$emit("change");
86
124
  }
87
125
  }
88
126
  /**
89
127
  * @internal
90
128
  */
91
- #bindTrigger(anchor) {
92
- anchor.setAttribute("aria-haspopup", "dialog");
93
- if (anchor instanceof HTMLButtonElement || anchor instanceof HTMLInputElement) anchor.popoverTargetElement = this._popoverEl;
94
- else anchor.addEventListener("click", this.#manualToggle);
129
+ get _numberPatterns() {
130
+ return this.locale.common.useCommaAsDecimalSeparator ? numberPatternsWithComma : numberPatternsWithPeriod;
95
131
  }
96
- /**
97
- * @internal
98
- */
99
- #unbindTrigger(anchor) {
100
- anchor.removeAttribute("aria-haspopup");
101
- if (anchor instanceof HTMLButtonElement || anchor instanceof HTMLInputElement) anchor.popoverTargetElement = null;
102
- else anchor.removeEventListener("click", this.#manualToggle);
132
+ #valueToPresentationValue(value) {
133
+ return value.replace(".", this.locale.common.useCommaAsDecimalSeparator ? "," : ".");
103
134
  }
104
- /**
105
- * @internal
106
- */
107
- #manualToggle = () => {
108
- this._popoverEl.togglePopover();
109
- };
110
- /**
111
- * @internal
112
- */
113
- get #middleware() {
114
- let middleware = [
115
- inline(),
116
- flip(),
117
- shift(),
118
- hide()
119
- ];
120
- /* v8 ignore next -- @preserve */
121
- let offsetValue = this.offset ?? 0;
122
- if (this.arrow && this._arrowEl) {
123
- offsetValue = 12;
124
- middleware = [...middleware, arrow({
125
- element: this._arrowEl,
126
- padding: 10
127
- })];
128
- }
129
- /* v8 ignore else -- @preserve */
130
- if (offsetValue > 0) middleware.unshift(offset(offsetValue));
131
- return middleware;
135
+ #inputToPresentationValue(input) {
136
+ return input.replace(this._numberPatterns.invalidCharacters, "").replace(this._numberPatterns.additionalDecimalSeparators, "");
137
+ }
138
+ #presentationValueToValue(presentationValue) {
139
+ const candidate = presentationValue.replace(this._numberPatterns.trailingDecimalSeparator, "").replace(this._numberPatterns.decimalSeparator, ".");
140
+ return validNumber.test(candidate) ? candidate : "";
141
+ }
142
+ /** {@inheritDoc (FormAssociated:interface).validate} */
143
+ validate() {
144
+ super.validate(this.control);
132
145
  }
133
146
  /**
134
- * @internal
135
- */
136
- #cleanup;
137
- /**
138
- * @internal
147
+ * Increments the value using the step value
148
+ *
149
+ * @public
139
150
  */
140
- #updateAutoUpdate() {
141
- this.#cleanup?.();
142
- if (this.open && this.#currentAnchor && this._popoverEl) this.#cleanup = autoUpdate(this.#currentAnchor, this._popoverEl, this.#autoUpdateCallback);
151
+ stepUp() {
152
+ makeStep(this, STEP_DIRECTION.up);
143
153
  }
144
154
  /**
145
- * Tracks the promise of the last position update.
146
- * @internal
155
+ * Decrements the value using the step value
156
+ *
157
+ * @public
147
158
  */
148
- #lastPositionUpdate;
159
+ stepDown() {
160
+ makeStep(this, STEP_DIRECTION.down);
161
+ }
149
162
  /**
163
+ * Sets up the initial state of the number field
150
164
  * @internal
151
165
  */
152
- #autoUpdateCallback = () => {
153
- this.#lastPositionUpdate = this.updatePosition();
154
- };
166
+ connectedCallback() {
167
+ super.connectedCallback();
168
+ this.proxy.setAttribute("type", "number");
169
+ this.validate();
170
+ this._presentationValue = this.#valueToPresentationValue(this.value);
171
+ if (this.autofocus) Updates.enqueue(() => {
172
+ this.focus();
173
+ });
174
+ }
155
175
  /**
156
- * Updates the position of the popover
176
+ * Selects all the text in the number field
177
+ *
157
178
  * @public
158
179
  */
159
- async updatePosition() {
160
- /* v8 ignore if -- @preserve */
161
- if (!this.open || !this.#currentAnchor || !this._popoverEl) return;
162
- const positionData = await computePosition(this.#currentAnchor, this._popoverEl, {
163
- placement: this.placement,
164
- strategy: "fixed",
165
- middleware: this.#middleware
166
- });
167
- /* v8 ignore if -- @preserve */
168
- if (!this.open) return;
169
- this.#assignPopoverPosition(positionData);
170
- if (this.arrow && this._arrowEl) this.#assignArrowPosition(positionData);
180
+ select() {
181
+ this.control.select();
182
+ /**
183
+ * The select event does not permeate the shadow DOM boundary.
184
+ * This fn effectively proxies the select event,
185
+ * emitting a `select` event whenever the internal
186
+ * control emits a `select` event
187
+ */
188
+ this.$emit("select");
171
189
  }
172
190
  /**
191
+ * Handles the internal control's `input` event
173
192
  * @internal
174
193
  */
175
- #assignPopoverPosition(data) {
176
- const { x, y } = data;
177
- Object.assign(this._popoverEl.style, {
178
- left: `${x}px`,
179
- top: `${y}px`,
180
- visibility: data.middlewareData.hide?.referenceHidden ? "hidden" : "visible"
181
- });
194
+ handleTextInput() {
195
+ this._presentationValue = this.#inputToPresentationValue(this.control.value);
196
+ if (this.control.value !== this._presentationValue) this.control.value = this._presentationValue;
197
+ this.isUserInput = true;
198
+ this.value = this.#presentationValueToValue(this._presentationValue);
199
+ this.isUserInput = false;
182
200
  }
183
201
  /**
202
+ * Change event handler for inner control.
203
+ * @remarks
204
+ * "Change" events are not `composable` so they will not
205
+ * permeate the shadow DOM boundary. This fn effectively proxies
206
+ * the change event, emitting a `change` event whenever the internal
207
+ * control emits a `change` event
184
208
  * @internal
185
209
  */
186
- #assignArrowPosition(data) {
187
- /* v8 ignore if -- @preserve */
188
- if (!this._arrowEl) return;
189
- const { x: arrowX, y: arrowY } = data.middlewareData.arrow;
190
- const styles = {
191
- left: "calc(100% - 4px)",
192
- right: "-4px",
193
- top: "calc(100% - 4px)",
194
- bottom: "-4px"
195
- };
196
- const staticAxis = data.placement.split("-")[0];
197
- Object.assign(this._arrowEl.style, {
198
- left: arrowX ? `${arrowX}px` : styles[staticAxis],
199
- top: arrowY ? `${arrowY}px` : styles[staticAxis]
200
- });
210
+ handleChange() {
211
+ this.$emit("change");
201
212
  }
202
213
  /**
203
- * Syncs native toggle state (Esc key, light dismiss) back to the 'open' attribute.
214
+ * Handles the internal control's `keydown` event
204
215
  * @internal
205
216
  */
206
- #handleNativeToggle = (e) => {
207
- const isOpen = e.newState ? e.newState === "open" : this._popoverEl.matches(":popover-open");
208
- if (this.open !== isOpen) this.open = isOpen;
209
- this.$emit(isOpen ? "open" : "close", void 0, { bubbles: false });
210
- };
211
- connectedCallback() {
212
- super.connectedCallback();
213
- this.#updateAnchor();
214
- /* v8 ignore else -- @preserve */
215
- if (this._popoverEl) {
216
- this._popoverEl.addEventListener("toggle", this.#handleNativeToggle);
217
- if (this.open && !this._popoverEl.matches(":popover-open")) {
218
- this._popoverEl.showPopover();
219
- this.#updateAutoUpdate();
220
- }
221
- }
222
- }
223
- disconnectedCallback() {
224
- super.disconnectedCallback();
225
- this.#cleanup?.();
226
- if (this.#currentAnchor) {
227
- this.#unbindTrigger(this.#currentAnchor);
228
- this.#currentAnchor = null;
217
+ handleKeyDown(e) {
218
+ switch (e.key) {
219
+ case keyArrowUp:
220
+ this.stepUp();
221
+ return false;
222
+ case keyArrowDown:
223
+ this.stepDown();
224
+ return false;
229
225
  }
230
- /* v8 ignore else -- @preserve */
231
- if (this._popoverEl) this._popoverEl.removeEventListener("toggle", this.#handleNativeToggle);
232
- }
233
- show() {
234
- this.open = true;
235
- return this.#lastPositionUpdate ?? Promise.resolve();
236
- }
237
- hide() {
238
- this.open = false;
239
- }
240
- toggle() {
241
- this.open = !this.open;
226
+ return true;
242
227
  }
243
228
  };
244
- __decorate([attr({ mode: "fromView" })], Popover.prototype, "placement", void 0);
245
- __decorate([attr({ mode: "boolean" })], Popover.prototype, "manual", void 0);
246
- __decorate([attr({ mode: "fromView" })], Popover.prototype, "layout", void 0);
247
229
  __decorate([attr({
248
- attribute: "offset",
249
- mode: "fromView",
250
- converter: nullableNumberConverter
251
- })], Popover.prototype, "offset", void 0);
252
- __decorate([attr({ mode: "boolean" })], Popover.prototype, "alternate", void 0);
253
- __decorate([attr({ attribute: "dismiss-button-aria-label" })], Popover.prototype, "dismissButtonAriaLabel", void 0);
254
- __decorate([attr({ mode: "boolean" })], Popover.prototype, "arrow", void 0);
255
- __decorate([attr({ mode: "boolean" })], Popover.prototype, "open", void 0);
256
- __decorate([observable], Popover.prototype, "anchor", void 0);
257
- __decorate([observable], Popover.prototype, "_slottedAnchor", void 0);
230
+ attribute: "readonly",
231
+ mode: "boolean"
232
+ })], NumberField.prototype, "readOnly", void 0);
233
+ __decorate([attr({ mode: "boolean" })], NumberField.prototype, "autofocus", void 0);
234
+ __decorate([attr], NumberField.prototype, "placeholder", void 0);
235
+ __decorate([attr], NumberField.prototype, "list", void 0);
236
+ __decorate([attr({ converter: nullableNumberConverter })], NumberField.prototype, "maxlength", void 0);
237
+ __decorate([attr({ converter: nullableNumberConverter })], NumberField.prototype, "minlength", void 0);
238
+ __decorate([attr({ converter: nullableNumberConverter })], NumberField.prototype, "size", void 0);
239
+ __decorate([attr()], NumberField.prototype, "scale", void 0);
240
+ __decorate([attr({ converter: nullableNumberConverter })], NumberField.prototype, "step", void 0);
241
+ __decorate([attr({ converter: nullableNumberConverter })], NumberField.prototype, "max", void 0);
242
+ __decorate([attr({ converter: nullableNumberConverter })], NumberField.prototype, "min", void 0);
243
+ __decorate([observable], NumberField.prototype, "defaultSlottedNodes", void 0);
244
+ __decorate([observable], NumberField.prototype, "_presentationValue", void 0);
245
+ __decorate([observable], NumberField.prototype, "_updatedValueAnnouncement", void 0);
246
+ __decorate([attr({ attribute: "increment-button-aria-label" })], NumberField.prototype, "incrementButtonAriaLabel", void 0);
247
+ __decorate([attr({ attribute: "decrement-button-aria-label" })], NumberField.prototype, "decrementButtonAriaLabel", void 0);
248
+ __decorate([attr], NumberField.prototype, "appearance", void 0);
249
+ __decorate([attr], NumberField.prototype, "shape", void 0);
250
+ __decorate([attr], NumberField.prototype, "autoComplete", void 0);
258
251
  //#endregion
259
- //#region src/lib/popover/popover.template.ts
260
- var getClasses = ({ open, manual, layout }) => classNames("control", ["open", Boolean(open)], ["manual", Boolean(manual)], ["condensed", layout === "condensed"]);
252
+ //#region src/lib/number-field/number-field.template.ts
253
+ var getStateClasses = ({ errorValidationMessage, disabled, value, readOnly, placeholder, appearance, shape, label, successText, scale }) => classNames(["error", Boolean(errorValidationMessage)], ["disabled", disabled], ["has-value", Boolean(value)], ["readonly", readOnly], ["placeholder", Boolean(placeholder)], [`appearance-${appearance}`, Boolean(appearance)], [`shape-${shape}`, Boolean(shape)], ["no-label", !label], ["success", !!successText], [`size-${scale}`, Boolean(scale)]);
254
+ function renderLabel() {
255
+ return html` <label for="control" class="label">
256
+ ${(x) => x.label}
257
+ </label>`;
258
+ }
259
+ function setControlButtonShape(numberField) {
260
+ return numberField.shape === Shape.Pill ? Shape.Pill : null;
261
+ }
262
+ function getTabIndex(numberField) {
263
+ return numberField.disabled || numberField.readOnly ? "-1" : null;
264
+ }
261
265
  /**
262
- * The template for the Popover component.
263
- *
264
266
  * @param context - element definition context
265
- * @public
266
267
  */
267
- var popoverTemplate = (context) => {
268
- const elevationTag = context.tagFor(Elevation);
268
+ function numberControlButtons(context) {
269
269
  const buttonTag = context.tagFor(Button);
270
- const iconTag = context.tagFor(Icon);
270
+ const dividerTag = context.tagFor(Divider);
271
+ return html`
272
+ <div class="control-buttons" ?inert="${(x) => x.disabled || x.readOnly}">
273
+ <${buttonTag} id="subtract" icon="minus-line"
274
+ ?disabled="${(x) => x.disabled || x.readOnly}"
275
+ aria-label=${(x) => x.decrementButtonAriaLabel || x.locale.numberField.decrementButtonLabel(x.step)}
276
+ shape="${setControlButtonShape}"
277
+ type="button"
278
+ size="${(x) => x.scale === "condensed" ? "super-condensed" : "condensed"}"
279
+ tabindex="${getTabIndex}"
280
+ @click="${(x) => x.stepDown()}"></${buttonTag}>
281
+ <${dividerTag} class="divider" orientation="vertical"></${dividerTag}>
282
+ <${buttonTag} id="add" icon="plus-line"
283
+ ?disabled="${(x) => x.disabled || x.readOnly}"
284
+ aria-label=${(x) => x.incrementButtonAriaLabel || x.locale.numberField.incrementButtonLabel(x.step)}
285
+ shape="${setControlButtonShape}"
286
+ type="button"
287
+ size="${(x) => x.scale === "condensed" ? "super-condensed" : "condensed"}"
288
+ tabindex="${getTabIndex}"
289
+ @click="${(x) => x.stepUp()}"></${buttonTag}>
290
+ </div>
291
+ `;
292
+ }
293
+ var NumberFieldTemplate = (context) => {
294
+ const visuallyHiddenTag = context.tagFor(VisuallyHidden);
271
295
  return html`
272
- <slot name="anchor" ${slotted("_slottedAnchor")}></slot>
273
- <${elevationTag}>
274
- <div class="base"
275
- ${ref("_popoverEl")}
276
- popover="${(x) => x.manual ? "manual" : "auto"}"
277
- tabindex="-1"
278
- autofocus
279
- ${delegateAria({
280
- role: "dialog",
281
- ariaModal: "false"
282
- })}
283
- >
284
- <div class="${getClasses}"
285
- part="${(x) => x.alternate ? "vvd-theme-alternate" : ""}">
286
- <slot></slot>
287
- <slot name="footer"></slot>
288
- ${when((x) => x.manual, html`<${buttonTag}
289
- aria-label="${(x) => x.dismissButtonAriaLabel || x.locale.popover.dismissButtonLabel}"
290
- type="button"
291
- size="condensed"
292
- class="dismiss-button"
293
- @click="${(x) => x.hide()}">
294
- <${iconTag} name="close-line" slot="icon"></${iconTag}>
295
- </${buttonTag}>`)}
296
- ${when((x) => x.arrow, html`<div class="arrow" ${ref("_arrowEl")}></div>`)}
296
+ <div class="base ${getStateClasses}">
297
+ <div class="label-wrapper" ?hidden=${(x) => !x.label && !x._hasContextualHelp}>
298
+ ${when((x) => x.label, renderLabel())}
299
+ <slot name="contextual-help" ${slotted("_contextualHelpSlottedContent")}></slot>
300
+ </div>
301
+ <div class="fieldset">
302
+ <div class="wrapper">
303
+ <input
304
+ class="control"
305
+ id="control"
306
+ @input="${(x) => x.handleTextInput()}"
307
+ @change="${(x) => x.handleChange()}"
308
+ @keydown="${(x, c) => x.handleKeyDown(c.event)}"
309
+ ?autofocus="${(x) => x.autofocus}"
310
+ ?disabled="${(x) => x.disabled}"
311
+ list="${(x) => x.list}"
312
+ maxlength="${(x) => x.maxlength}"
313
+ minlength="${(x) => x.minlength}"
314
+ placeholder="${(x) => x.placeholder}"
315
+ ?readonly="${(x) => x.readOnly}"
316
+ ?required="${(x) => x.required}"
317
+ size="${(x) => x.size}"
318
+ autocomplete="${(x) => x.autoComplete}"
319
+ name="${(x) => x.name}"
320
+ ?spellcheck="${(x) => x.spellcheck}"
321
+ :value="${(x) => x._presentationValue}"
322
+ type="text"
323
+ aria-describedby="${(x) => x._feedbackDescribedBy}"
324
+ ${delegateAria()}
325
+ ${ref("control")}
326
+ />
297
327
  </div>
328
+ ${() => numberControlButtons(context)}
298
329
  </div>
299
- </${elevationTag}>
330
+ ${(x) => x._getFeedbackTemplate(context)}
331
+ <${visuallyHiddenTag} id="value-announcement" role="status" aria-atomic="true">
332
+ ${(x) => x._updatedValueAnnouncement}</${visuallyHiddenTag}>
333
+ </div>
300
334
  `;
301
335
  };
302
336
  //#endregion
303
- //#region src/lib/popover/definition.ts
304
- var popoverDefinition = defineVividComponent("popover", Popover, popoverTemplate, [
337
+ //#region src/lib/number-field/definition.ts
338
+ /**
339
+ * @internal
340
+ */
341
+ var numberFieldDefinition = defineVividComponent("number-field", NumberField, NumberFieldTemplate, [
305
342
  buttonDefinition,
343
+ dividerDefinition,
306
344
  iconDefinition,
307
- elevationDefinition
345
+ feedbackMessageDefinition,
346
+ visuallyHiddenDefinition,
347
+ contextualHelpDefinition
308
348
  ], {
309
- styles: popover_default,
349
+ styles: number_field_default,
310
350
  shadowOptions: { delegatesFocus: true }
311
351
  });
312
352
  /**
313
- * Registers the popover element with the design system.
353
+ * Registers the number-field elements with the design system.
314
354
  *
315
355
  * @param prefix - the prefix to use for the component name
316
356
  */
317
- var registerPopover = createRegisterFunction(popoverDefinition);
357
+ var registerNumberField = createRegisterFunction(numberFieldDefinition);
318
358
  //#endregion
319
- export { registerPopover as n, Popover as r, popoverDefinition as t };
359
+ export { registerNumberField as n, NumberField as r, numberFieldDefinition as t };