@vonage/vivid 4.24.0 → 4.25.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 (392) hide show
  1. package/custom-elements.json +12314 -4711
  2. package/elevation/index.cjs +1 -1
  3. package/elevation/index.js +1 -1
  4. package/index.cjs +112 -150
  5. package/index.js +37 -35
  6. package/lib/accordion-item/accordion-item.d.ts +6 -0
  7. package/lib/action-group/action-group.d.ts +6 -0
  8. package/lib/alert/alert.d.ts +20 -0
  9. package/lib/audio-player/audio-player.d.ts +6 -0
  10. package/lib/badge/badge.d.ts +9 -1
  11. package/lib/banner/banner.d.ts +25 -0
  12. package/lib/breadcrumb/breadcrumb.d.ts +6 -0
  13. package/lib/breadcrumb-item/breadcrumb-item.d.ts +63 -7
  14. package/lib/button/button.d.ts +732 -7
  15. package/lib/button/locale.d.ts +3 -0
  16. package/lib/calendar-event/calendar-event.d.ts +6 -0
  17. package/lib/card/card.d.ts +394 -2
  18. package/lib/card/card.template.d.ts +2 -1
  19. package/lib/checkbox/checkbox.d.ts +1822 -5
  20. package/lib/combobox/combobox.d.ts +1827 -20
  21. package/lib/data-grid/data-grid-cell.d.ts +339 -1
  22. package/lib/data-grid/locale.d.ts +5 -0
  23. package/lib/date-picker/date-picker.d.ts +1676 -207
  24. package/lib/date-range-picker/date-range-picker.d.ts +840 -107
  25. package/lib/date-time-picker/date-time-picker.d.ts +1678 -209
  26. package/lib/dial-pad/dial-pad.d.ts +8 -0
  27. package/lib/dialog/dialog.d.ts +12 -0
  28. package/lib/divider/divider.d.ts +6 -0
  29. package/lib/fab/fab.d.ts +6 -0
  30. package/lib/file-picker/file-picker.d.ts +1508 -30
  31. package/lib/header/header.d.ts +6 -0
  32. package/lib/icon/icon.d.ts +1 -0
  33. package/lib/icon/icon.template.d.ts +2 -1
  34. package/lib/menu/menu.d.ts +16 -7
  35. package/lib/menu/name.d.ts +1 -0
  36. package/lib/menu-item/menu-item.d.ts +14 -2
  37. package/lib/nav/nav.d.ts +6 -0
  38. package/lib/nav-disclosure/nav-disclosure.d.ts +13 -0
  39. package/lib/nav-item/nav-item.d.ts +405 -3
  40. package/lib/note/note.d.ts +6 -0
  41. package/lib/number-field/number-field.d.ts +1857 -36
  42. package/lib/option/option.d.ts +12 -0
  43. package/lib/progress/progress.d.ts +6 -0
  44. package/lib/progress-ring/progress-ring.d.ts +6 -0
  45. package/lib/radio/radio.d.ts +1137 -4
  46. package/lib/radio-group/radio-group.d.ts +20 -2
  47. package/lib/range-slider/range-slider.d.ts +752 -5
  48. package/lib/rich-text-editor/definition.d.ts +2 -2
  49. package/lib/rich-text-editor/facades/vivid-prose-mirror.facade.d.ts +3 -1
  50. package/lib/rich-text-editor/locale.d.ts +1 -0
  51. package/lib/rich-text-editor/menubar/menubar.d.ts +6 -0
  52. package/lib/rich-text-editor/rich-text-editor.d.ts +352 -2
  53. package/lib/searchable-select/option-tag.d.ts +6 -0
  54. package/lib/searchable-select/searchable-select.d.ts +1857 -36
  55. package/lib/select/select.d.ts +1843 -28
  56. package/lib/selectable-box/selectable-box.d.ts +6 -0
  57. package/lib/slider/slider.d.ts +384 -2
  58. package/lib/split-button/split-button.d.ts +18 -0
  59. package/lib/switch/switch.d.ts +386 -3
  60. package/lib/tab/tab.d.ts +18 -1
  61. package/lib/tab-panel/tab-panel.d.ts +6 -0
  62. package/lib/tag/tag.d.ts +12 -0
  63. package/lib/tag-group/tag-group.d.ts +6 -0
  64. package/lib/text-area/text-area.d.ts +2174 -19
  65. package/lib/text-field/text-field.d.ts +2195 -31
  66. package/lib/time-picker/time-picker.d.ts +839 -106
  67. package/lib/toggletip/toggletip.d.ts +10 -4
  68. package/lib/tooltip/tooltip.d.ts +10 -4
  69. package/lib/tree-item/tree-item.d.ts +12 -0
  70. package/lib/tree-view/tree-view.d.ts +6 -0
  71. package/lib/video-player/video-player.d.ts +6 -0
  72. package/lib/visually-hidden/definition.d.ts +4 -0
  73. package/lib/visually-hidden/visually-hidden.d.ts +3 -0
  74. package/lib/visually-hidden/visually-hidden.template.d.ts +3 -0
  75. package/locales/de-DE.cjs +33 -1
  76. package/locales/de-DE.js +33 -1
  77. package/locales/en-GB.cjs +33 -1
  78. package/locales/en-GB.js +33 -1
  79. package/locales/en-US.cjs +33 -1
  80. package/locales/en-US.js +33 -1
  81. package/locales/ja-JP.cjs +33 -1
  82. package/locales/ja-JP.js +33 -1
  83. package/locales/zh-CN.cjs +33 -1
  84. package/locales/zh-CN.js +33 -1
  85. package/menu/index.cjs +1 -1
  86. package/menu/index.js +1 -1
  87. package/nav/index.cjs +1 -1
  88. package/nav/index.js +1 -1
  89. package/nav-disclosure/index.cjs +1 -1
  90. package/nav-disclosure/index.js +1 -1
  91. package/nav-item/index.cjs +1 -1
  92. package/nav-item/index.js +1 -1
  93. package/note/index.cjs +1 -1
  94. package/note/index.js +1 -1
  95. package/number-field/index.cjs +1 -1
  96. package/number-field/index.js +1 -1
  97. package/option/index.cjs +1 -1
  98. package/option/index.js +1 -1
  99. package/package.json +1 -1
  100. package/pagination/index.cjs +1 -1
  101. package/pagination/index.js +1 -1
  102. package/popup/index.cjs +1 -1
  103. package/popup/index.js +1 -1
  104. package/progress/index.cjs +1 -1
  105. package/progress/index.js +1 -1
  106. package/progress-ring/index.cjs +1 -1
  107. package/progress-ring/index.js +1 -1
  108. package/radio/index.cjs +1 -1
  109. package/radio/index.js +1 -1
  110. package/radio-group/index.cjs +1 -1
  111. package/radio-group/index.js +1 -1
  112. package/range-slider/index.cjs +1 -1
  113. package/range-slider/index.js +1 -1
  114. package/rich-text-editor/index.cjs +1 -1
  115. package/rich-text-editor/index.js +1 -1
  116. package/searchable-select/index.cjs +1 -1
  117. package/searchable-select/index.js +1 -1
  118. package/select/index.cjs +1 -1
  119. package/select/index.js +1 -1
  120. package/selectable-box/index.cjs +1 -1
  121. package/selectable-box/index.js +1 -1
  122. package/shared/affix.cjs +13 -7
  123. package/shared/affix.js +13 -8
  124. package/shared/aria/delegates-aria.d.ts +6 -0
  125. package/shared/aria/host-semantics.d.ts +6 -0
  126. package/shared/breadcrumb-item.cjs +2 -5
  127. package/shared/breadcrumb-item.js +2 -5
  128. package/shared/button.cjs +13 -11
  129. package/shared/button.js +13 -11
  130. package/shared/calendar-picker.template.cjs +3 -3
  131. package/shared/calendar-picker.template.js +1 -1
  132. package/shared/char-count.cjs +92 -0
  133. package/shared/char-count.js +90 -0
  134. package/shared/definition.js +1 -1
  135. package/shared/definition10.js +1 -1
  136. package/shared/definition11.cjs +27 -44
  137. package/shared/definition11.js +28 -45
  138. package/shared/definition12.js +1 -1
  139. package/shared/definition13.js +1 -1
  140. package/shared/definition14.cjs +53 -22
  141. package/shared/definition14.js +54 -23
  142. package/shared/definition15.cjs +31 -36
  143. package/shared/definition15.js +30 -36
  144. package/shared/definition16.cjs +43 -63
  145. package/shared/definition16.js +42 -63
  146. package/shared/definition17.cjs +8 -4
  147. package/shared/definition17.js +8 -4
  148. package/shared/definition18.cjs +10 -14
  149. package/shared/definition18.js +9 -14
  150. package/shared/definition19.cjs +85 -100
  151. package/shared/definition19.js +75 -91
  152. package/shared/definition2.js +1 -1
  153. package/shared/definition20.cjs +15 -20
  154. package/shared/definition20.js +14 -20
  155. package/shared/definition21.cjs +22 -3
  156. package/shared/definition21.js +23 -4
  157. package/shared/definition22.cjs +4 -4
  158. package/shared/definition22.js +5 -5
  159. package/shared/definition23.cjs +5 -38
  160. package/shared/definition23.js +5 -37
  161. package/shared/definition24.cjs +2 -7
  162. package/shared/definition24.js +3 -8
  163. package/shared/definition25.js +1 -1
  164. package/shared/definition26.cjs +157 -171
  165. package/shared/definition26.js +156 -171
  166. package/shared/definition27.cjs +1 -1
  167. package/shared/definition27.js +2 -2
  168. package/shared/definition28.cjs +32 -17
  169. package/shared/definition28.js +33 -18
  170. package/shared/definition29.js +1 -1
  171. package/shared/definition3.js +1 -1
  172. package/shared/definition30.cjs +96 -482
  173. package/shared/definition30.js +99 -482
  174. package/shared/definition31.cjs +334 -57
  175. package/shared/definition31.js +333 -56
  176. package/shared/definition32.cjs +104 -19
  177. package/shared/definition32.js +105 -20
  178. package/shared/definition33.cjs +67 -15
  179. package/shared/definition33.js +66 -14
  180. package/shared/definition34.cjs +15 -50
  181. package/shared/definition34.js +14 -49
  182. package/shared/definition35.cjs +28 -397
  183. package/shared/definition35.js +27 -397
  184. package/shared/definition36.cjs +404 -54
  185. package/shared/definition36.js +404 -55
  186. package/shared/definition37.cjs +57 -234
  187. package/shared/definition37.js +57 -233
  188. package/shared/definition38.cjs +221 -66
  189. package/shared/definition38.js +220 -65
  190. package/shared/definition39.cjs +52 -44
  191. package/shared/definition39.js +51 -43
  192. package/shared/definition4.cjs +31 -24
  193. package/shared/definition4.js +33 -26
  194. package/shared/definition40.cjs +56 -266
  195. package/shared/definition40.js +55 -265
  196. package/shared/definition41.cjs +285 -142
  197. package/shared/definition41.js +285 -142
  198. package/shared/definition42.cjs +156 -564
  199. package/shared/definition42.js +156 -565
  200. package/shared/definition43.cjs +554 -14378
  201. package/shared/definition43.js +553 -14377
  202. package/shared/definition44.cjs +14418 -1155
  203. package/shared/definition44.js +14417 -1156
  204. package/shared/definition45.cjs +1049 -677
  205. package/shared/definition45.js +1050 -678
  206. package/shared/definition46.cjs +848 -113
  207. package/shared/definition46.js +847 -112
  208. package/shared/definition47.cjs +125 -90
  209. package/shared/definition47.js +124 -89
  210. package/shared/definition48.cjs +88 -455
  211. package/shared/definition48.js +87 -454
  212. package/shared/definition49.cjs +466 -109
  213. package/shared/definition49.js +466 -109
  214. package/shared/definition5.cjs +8 -7
  215. package/shared/definition5.js +6 -5
  216. package/shared/definition50.cjs +106 -106
  217. package/shared/definition50.js +105 -105
  218. package/shared/definition51.cjs +136 -15
  219. package/shared/definition51.js +135 -14
  220. package/shared/definition52.cjs +16 -115
  221. package/shared/definition52.js +15 -114
  222. package/shared/definition53.cjs +78 -412
  223. package/shared/definition53.js +77 -410
  224. package/shared/definition54.cjs +445 -23
  225. package/shared/definition54.js +443 -22
  226. package/shared/definition55.cjs +22 -136
  227. package/shared/definition55.js +21 -135
  228. package/shared/definition56.cjs +95 -291
  229. package/shared/definition56.js +95 -292
  230. package/shared/definition57.cjs +192 -480
  231. package/shared/definition57.js +190 -479
  232. package/shared/definition58.cjs +411 -24
  233. package/shared/definition58.js +410 -24
  234. package/shared/definition59.cjs +27 -144
  235. package/shared/definition59.js +27 -143
  236. package/shared/definition6.js +1 -1
  237. package/shared/definition60.cjs +83 -54
  238. package/shared/definition60.js +82 -53
  239. package/shared/definition61.cjs +78 -166
  240. package/shared/definition61.js +77 -164
  241. package/shared/definition62.cjs +143 -232
  242. package/shared/definition62.js +141 -231
  243. package/shared/definition63.cjs +234 -69417
  244. package/shared/definition63.js +233 -69416
  245. package/shared/definition64.cjs +69454 -28
  246. package/shared/definition64.js +69453 -27
  247. package/shared/definition65.cjs +28 -2168
  248. package/shared/definition65.js +27 -2166
  249. package/shared/definition66.cjs +27 -0
  250. package/shared/definition66.js +23 -0
  251. package/shared/definition67.cjs +2195 -0
  252. package/shared/definition67.js +2190 -0
  253. package/shared/definition7.cjs +11 -2
  254. package/shared/definition7.js +12 -3
  255. package/shared/definition8.cjs +24 -11
  256. package/shared/definition8.js +26 -13
  257. package/shared/definition9.cjs +1 -2
  258. package/shared/definition9.js +2 -3
  259. package/shared/delegates-aria.js +1 -1
  260. package/shared/deprecation/replaced-props.d.ts +20 -0
  261. package/shared/divider.cjs +41 -0
  262. package/shared/divider.js +38 -0
  263. package/shared/feedback/feedback-message.d.ts +345 -0
  264. package/shared/feedback/locale.d.ts +4 -0
  265. package/{lib/text-anchor/text-anchor.d.ts → shared/feedback/mixins.d.ts} +62 -39
  266. package/shared/form-associated.cjs +124 -100
  267. package/shared/form-associated.js +125 -101
  268. package/shared/form-element.cjs +84 -0
  269. package/shared/form-element.js +82 -0
  270. package/shared/foundation/button/button.d.ts +378 -2
  271. package/shared/foundation/form-associated/form-associated.d.ts +753 -49
  272. package/shared/foundation/listbox/listbox.d.ts +1 -1
  273. package/shared/foundation/vivid-element/vivid-element.d.ts +14 -0
  274. package/shared/host-semantics.js +1 -1
  275. package/shared/key-codes.js +1 -1
  276. package/shared/linkable.cjs +70 -0
  277. package/shared/linkable.js +68 -0
  278. package/shared/localization/Locale.d.ts +14 -0
  279. package/shared/mixins.cjs +306 -0
  280. package/shared/mixins.js +300 -0
  281. package/shared/patterns/affix.d.ts +16 -1
  282. package/shared/patterns/anchored.d.ts +20 -8
  283. package/shared/patterns/char-count/char-count.d.ts +351 -0
  284. package/shared/patterns/char-count/index.d.ts +1 -0
  285. package/shared/patterns/char-count/locale.d.ts +4 -0
  286. package/shared/patterns/form-elements/form-element.d.ts +744 -0
  287. package/shared/patterns/form-elements/index.d.ts +3 -1
  288. package/shared/patterns/form-elements/with-error-text.d.ts +1122 -0
  289. package/shared/patterns/form-elements/with-success-text.d.ts +341 -0
  290. package/shared/patterns/index.d.ts +2 -0
  291. package/shared/patterns/linkable.d.ts +394 -0
  292. package/shared/patterns/localized.d.ts +6 -0
  293. package/shared/patterns/trapped-focus.d.ts +6 -0
  294. package/shared/picker-field/mixins/calendar-picker.d.ts +420 -52
  295. package/shared/picker-field/mixins/calendar-picker.template.d.ts +420 -52
  296. package/shared/picker-field/mixins/inline-time-picker/inline-time-picker.d.ts +6 -0
  297. package/shared/picker-field/mixins/min-max-calendar-picker.d.ts +843 -107
  298. package/shared/picker-field/mixins/single-date-picker.d.ts +1259 -155
  299. package/shared/picker-field/mixins/single-value-picker.d.ts +417 -49
  300. package/shared/picker-field/mixins/time-selection-picker.d.ts +842 -106
  301. package/shared/picker-field/mixins/time-selection-picker.template.d.ts +839 -103
  302. package/shared/picker-field/picker-field.d.ts +1491 -15
  303. package/shared/picker-field.template.cjs +13 -22
  304. package/shared/picker-field.template.js +14 -23
  305. package/shared/repeat.js +1 -1
  306. package/shared/slider.template.cjs +1 -1
  307. package/shared/slider.template.js +1 -1
  308. package/shared/time-selection-picker.template.cjs +10 -15
  309. package/shared/time-selection-picker.template.js +10 -16
  310. package/shared/vivid-element.cjs +53 -4
  311. package/shared/vivid-element.js +53 -3
  312. package/shared/with-error-text.cjs +56 -0
  313. package/shared/with-error-text.js +54 -0
  314. package/shared/with-success-text.cjs +23 -0
  315. package/shared/with-success-text.js +21 -0
  316. package/side-drawer/index.cjs +1 -1
  317. package/side-drawer/index.js +1 -1
  318. package/slider/index.cjs +1 -1
  319. package/slider/index.js +1 -1
  320. package/split-button/index.cjs +1 -1
  321. package/split-button/index.js +1 -1
  322. package/styles/core/all.css +1 -1
  323. package/styles/core/theme.css +1 -1
  324. package/styles/core/typography.css +1 -1
  325. package/styles/tokens/theme-dark.css +4 -4
  326. package/styles/tokens/theme-light.css +4 -4
  327. package/styles/tokens/vivid-2-compat.css +1 -1
  328. package/switch/index.cjs +1 -1
  329. package/switch/index.js +1 -1
  330. package/tab/index.cjs +1 -1
  331. package/tab/index.js +1 -1
  332. package/tab-panel/index.cjs +1 -1
  333. package/tab-panel/index.js +1 -1
  334. package/tabs/index.cjs +1 -1
  335. package/tabs/index.js +1 -1
  336. package/tag/index.cjs +1 -1
  337. package/tag/index.js +1 -1
  338. package/tag-group/index.cjs +1 -1
  339. package/tag-group/index.js +1 -1
  340. package/text-area/index.cjs +1 -1
  341. package/text-area/index.js +1 -1
  342. package/text-field/index.cjs +1 -1
  343. package/text-field/index.js +1 -1
  344. package/time-picker/index.cjs +1 -1
  345. package/time-picker/index.js +1 -1
  346. package/toggletip/index.cjs +1 -1
  347. package/toggletip/index.js +1 -1
  348. package/tooltip/index.cjs +1 -1
  349. package/tooltip/index.js +1 -1
  350. package/tree-item/index.cjs +1 -1
  351. package/tree-item/index.js +1 -1
  352. package/tree-view/index.cjs +1 -1
  353. package/tree-view/index.js +1 -1
  354. package/video-player/index.cjs +1 -1
  355. package/video-player/index.js +1 -1
  356. package/visually-hidden/index.cjs +5 -0
  357. package/visually-hidden/index.js +3 -0
  358. package/vivid.api.json +744 -1490
  359. package/lib/checkbox/checkbox.form-associated.d.ts +0 -11
  360. package/lib/file-picker/file-picker.form-associated.d.ts +0 -11
  361. package/lib/number-field/number-field.form-associated.d.ts +0 -11
  362. package/lib/radio/radio.form-associated.d.ts +0 -13
  363. package/lib/range-slider/range-slider.form-associated.d.ts +0 -11
  364. package/lib/searchable-select/searchable-select.form-associated.d.ts +0 -11
  365. package/lib/select/select.form-associated.d.ts +0 -11
  366. package/lib/slider/slider.form-associated.d.ts +0 -11
  367. package/lib/switch/switch.form-associated.d.ts +0 -11
  368. package/lib/text-anchor/definition.d.ts +0 -2
  369. package/lib/text-anchor/text-anchor.template.d.ts +0 -3
  370. package/lib/text-area/text-area.form-associated.d.ts +0 -11
  371. package/lib/text-field/text-field.form-associated.d.ts +0 -11
  372. package/shared/anchor.cjs +0 -49
  373. package/shared/anchor.js +0 -47
  374. package/shared/apply-mixins.cjs +0 -23
  375. package/shared/apply-mixins.js +0 -21
  376. package/shared/applyMixinsWithObservables.cjs +0 -15
  377. package/shared/applyMixinsWithObservables.js +0 -13
  378. package/shared/direction.cjs +0 -17
  379. package/shared/direction.js +0 -15
  380. package/shared/form-elements.cjs +0 -209
  381. package/shared/form-elements.js +0 -202
  382. package/shared/foundation/anchor/anchor.d.ts +0 -11
  383. package/shared/foundation/utilities/apply-mixins.d.ts +0 -1
  384. package/shared/patterns/form-elements/form-elements.d.ts +0 -58
  385. package/shared/picker-field/picker-field.form-associated.d.ts +0 -11
  386. package/shared/text-anchor.cjs +0 -38
  387. package/shared/text-anchor.js +0 -36
  388. package/shared/text-anchor.template.cjs +0 -35
  389. package/shared/text-anchor.template.js +0 -33
  390. package/shared/utils/applyMixinsWithObservables.d.ts +0 -1
  391. package/text-anchor/index.cjs +0 -17
  392. package/text-anchor/index.js +0 -15
@@ -1,260 +1,171 @@
1
- import { m as memoizeWith, i as iconDefinition } from './definition28.js';
2
- import { V as VividElement, D as DOM, a as attr, n as nullableNumberConverter, o as observable, H as HTMLDirective, O as Observable, h as html, g as createRegisterFunction, i as defineVividComponent } from './vivid-element.js';
3
- import { a as applyMixinsWithObservables } from './applyMixinsWithObservables.js';
1
+ import { O as Observable, D as DOM, V as VividElement, a as attr, n as nullableNumberConverter, o as observable, h as html, d as createRegisterFunction, f as defineVividComponent } from './vivid-element.js';
2
+ import { a as WithFeedback, f as feedbackMessageDefinition } from './mixins.js';
3
+ import { v as visuallyHiddenDefinition } from './definition66.js';
4
4
  import { D as DelegatesAria, d as delegateAria } from './delegates-aria.js';
5
5
  import { F as FormAssociated } from './form-associated.js';
6
- import { F as FormElementSuccessText, a as FormElementHelperText, b as FormElementCharCount, e as errorText, f as formElements, g as getFeedbackTemplate } from './form-elements.js';
7
- import { b as AffixIcon, a as affixIconTemplateFactory } from './affix.js';
8
- import { s as styles } from './text-field.js';
6
+ import { W as WithCharCount } from './char-count.js';
7
+ import { W as WithErrorText } from './with-error-text.js';
8
+ import { W as WithSuccessText } from './with-success-text.js';
9
+ import { F as FormElement } from './form-element.js';
9
10
  import { c as classNames } from './class-names.js';
10
11
  import { w as when } from './when.js';
11
- import { s as slotted } from './slotted.js';
12
12
  import { r as ref } from './ref.js';
13
13
 
14
- const byteToHex = [];
15
- for (let i = 0; i < 256; ++i) {
16
- byteToHex.push((i + 0x100).toString(16).slice(1));
17
- }
18
- function unsafeStringify(arr, offset = 0) {
19
- return (byteToHex[arr[offset + 0]] +
20
- byteToHex[arr[offset + 1]] +
21
- byteToHex[arr[offset + 2]] +
22
- byteToHex[arr[offset + 3]] +
23
- '-' +
24
- byteToHex[arr[offset + 4]] +
25
- byteToHex[arr[offset + 5]] +
26
- '-' +
27
- byteToHex[arr[offset + 6]] +
28
- byteToHex[arr[offset + 7]] +
29
- '-' +
30
- byteToHex[arr[offset + 8]] +
31
- byteToHex[arr[offset + 9]] +
32
- '-' +
33
- byteToHex[arr[offset + 10]] +
34
- byteToHex[arr[offset + 11]] +
35
- byteToHex[arr[offset + 12]] +
36
- byteToHex[arr[offset + 13]] +
37
- byteToHex[arr[offset + 14]] +
38
- byteToHex[arr[offset + 15]]).toLowerCase();
39
- }
40
-
41
- let getRandomValues;
42
- const rnds8 = new Uint8Array(16);
43
- function rng() {
44
- if (!getRandomValues) {
45
- if (typeof crypto === 'undefined' || !crypto.getRandomValues) {
46
- throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');
47
- }
48
- getRandomValues = crypto.getRandomValues.bind(crypto);
49
- }
50
- return getRandomValues(rnds8);
51
- }
14
+ const styles = ":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}.base:where(.hover,: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:where(.hover,: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:where(.disabled,: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:where(.disabled,:disabled).appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.base:where(.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:where(.readonly):where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-600);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.base:where(.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:where(.error):where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-alert-50);--_appearance-color-outline: transparent}.base:where(.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:where(.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-success{--_connotation-color-primary: var(--vvd-text-area-success-primary, var(--vvd-color-success-500));--_connotation-color-primary-text: var(--vvd-text-area-success-primary-text, var(--vvd-color-canvas));--_connotation-color-primary-increment: var(--vvd-text-area-success-primary-increment, var(--vvd-color-success-600));--_connotation-color-intermediate: var(--vvd-text-area-success-intermediate, var(--vvd-color-success-500));--_connotation-color-firm: var(--vvd-text-area-success-firm, var(--vvd-color-success-600));--_connotation-color-fierce: var(--vvd-text-area-success-fierce, var(--vvd-color-success-700));--_connotation-color-faint: var(--vvd-text-area-success-faint, var(--vvd-color-success-50));--_connotation-color-soft: var(--vvd-text-area-success-soft, var(--vvd-color-success-100))}.base.connotation-alert{--_connotation-color-primary: var(--vvd-text-area-alert-primary, var(--vvd-color-alert-500));--_connotation-color-primary-text: var(--vvd-text-area-alert-primary-text, var(--vvd-color-canvas));--_connotation-color-primary-increment: var(--vvd-text-area-alert-primary-increment, var(--vvd-color-alert-600));--_connotation-color-intermediate: var(--vvd-text-area-alert-intermediate, var(--vvd-color-alert-500));--_connotation-color-firm: var(--vvd-text-area-alert-firm, var(--vvd-color-alert-600));--_connotation-color-fierce: var(--vvd-text-area-alert-fierce, var(--vvd-color-alert-700));--_connotation-color-faint: var(--vvd-text-area-alert-faint, var(--vvd-color-alert-50));--_connotation-color-soft: var(--vvd-text-area-alert-soft, var(--vvd-color-alert-100))}.base:not(.connotation-success,.connotation-alert){--_connotation-color-primary: var(--vvd-text-area-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-primary-text: var(--vvd-text-area-accent-primary-text, var(--vvd-color-canvas));--_connotation-color-primary-increment: var(--vvd-text-area-accent-primary-increment, var(--vvd-color-neutral-800));--_connotation-color-intermediate: var(--vvd-text-area-accent-intermediate, var(--vvd-color-neutral-500));--_connotation-color-firm: var(--vvd-text-area-accent-firm, var(--vvd-color-canvas-text));--_connotation-color-fierce: var(--vvd-text-area-accent-fierce, var(--vvd-color-neutral-700));--_connotation-color-faint: var(--vvd-text-area-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-soft: var(--vvd-text-area-accent-soft, var(--vvd-color-neutral-100))}.base{display:inline-grid;grid-template-columns:1fr max-content;inline-size:100%;row-gap: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);cursor:not-allowed}.label{color:var(--vvd-color-canvas-text);contain:inline-size;font:var(--vvd-typography-base);grid-column:1/2;grid-row:1;line-height:20px}.char-count{color:var(--_low-ink-color);font:var(--vvd-typography-base);grid-column:2/-1}.control{--scrollbar-track-color: transparent;--scrollbar-thumb-color: color-mix(in srgb, var(--vvd-color-neutral-950), transparent 70%)}.control{scrollbar-color:var(--scrollbar-thumb-color) var(--scrollbar-track-color);scrollbar-width:thin}.control ::-webkit-scrollbar{width:4px}.control ::-webkit-scrollbar-track{background:var(--scrollbar-track-color)}.control ::-webkit-scrollbar-thumb{border:0;border-radius:4px;background-color:var(--scrollbar-fallback-track-color, var(--scrollbar-thumb-color))}.control{box-sizing:border-box;padding:8px 16px;border:0 none;border-radius:8px;appearance:none;background-color:var(--_appearance-color-fill);box-shadow:inset 0 0 0 1px var(--_appearance-color-outline);color:var(--_appearance-color-text);font:var(--vvd-typography-base);grid-column:1/-1;min-block-size:calc(1px*(32 + 4*clamp(-1,var(--vvd-size-density, 0),2)));resize:none;transition:box-shadow .2s,background-color .2s,color .2s}@supports selector(::-webkit-resizer){.control::-webkit-resizer{background-image:linear-gradient(315deg,transparent 0,transparent 2px,var(--vvd-color-canvas-text) 2px,var(--vvd-color-canvas-text) 3px,transparent 3px,transparent 5px,var(--vvd-color-canvas-text) 5px,var(--vvd-color-canvas-text) 6px,transparent 6px,transparent 8px,transparent 100%);background-repeat:no-repeat;background-size:10px 10px;block-size:10px;inline-size:10px}}.control:disabled{opacity:1;pointer-events:none;-webkit-text-fill-color:var(--_appearance-color-text)}.control::placeholder,.control:disabled::placeholder{opacity:1;pointer-events:none;-webkit-text-fill-color:var(--_low-ink-color)}.control:focus-visible{--focus-stroke-gap-color: transparent;box-shadow:0 0 0 4px color-mix(in srgb,var(--vvd-color-cta-500),transparent 85%),inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:1px solid var(--focus-stroke-color, var(--vvd-color-cta-500));outline-offset:calc(-1px - var(--focus-inset, 0px))}:host([resize=both]) .control{resize:both}:host([resize=horizontal]) .control{resize:horizontal}:host([resize=vertical]) .control{resize:vertical}";
52
15
 
53
- const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);
54
- const native = { randomUUID };
55
-
56
- function v4(options, buf, offset) {
57
- if (native.randomUUID && true && !options) {
58
- return native.randomUUID();
16
+ class Reflector {
17
+ #reflectedProperties = /* @__PURE__ */ new Map();
18
+ #source;
19
+ #target;
20
+ constructor(source, target) {
21
+ this.#source = source;
22
+ this.#target = target;
23
+ }
24
+ attribute(propertyName, attributeName) {
25
+ this.#addReflectedProperty(propertyName, {
26
+ type: "attribute",
27
+ destination: attributeName
28
+ });
29
+ }
30
+ booleanAttribute(propertyName, attributeName) {
31
+ this.#addReflectedProperty(propertyName, {
32
+ type: "boolean-attribute",
33
+ destination: attributeName
34
+ });
35
+ }
36
+ property(propertyName, targetProperty, skipIfEqual = false) {
37
+ this.#addReflectedProperty(propertyName, {
38
+ type: "property",
39
+ destination: targetProperty,
40
+ skipIfEqual
41
+ });
42
+ }
43
+ destroy() {
44
+ const notifier = Observable.getNotifier(this.#source);
45
+ for (const prop of this.#reflectedProperties.keys()) {
46
+ notifier.unsubscribe(this.#propertyChangeHandler, prop);
59
47
  }
60
- options = options || {};
61
- const rnds = options.random ?? options.rng?.() ?? rng();
62
- if (rnds.length < 16) {
63
- throw new Error('Random bytes length must be >= 16');
48
+ this.#reflectedProperties.clear();
49
+ }
50
+ #addReflectedProperty(name, reflected) {
51
+ this.#reflectedProperties.set(name, reflected);
52
+ const notifier = Observable.getNotifier(this.#source);
53
+ notifier.subscribe(this.#propertyChangeHandler, name);
54
+ this.#propertyChangeHandler.handleChange(this.#source, name);
55
+ }
56
+ #propertyChangeHandler = {
57
+ handleChange: (source, propertyName) => {
58
+ const reflectedProperty = this.#reflectedProperties.get(propertyName);
59
+ const value = source[propertyName];
60
+ switch (reflectedProperty.type) {
61
+ case "boolean-attribute":
62
+ DOM.setBooleanAttribute(
63
+ this.#target,
64
+ reflectedProperty.destination,
65
+ Boolean(value)
66
+ );
67
+ break;
68
+ case "attribute":
69
+ DOM.setAttribute(this.#target, reflectedProperty.destination, value);
70
+ break;
71
+ case "property":
72
+ if (reflectedProperty.skipIfEqual && this.#target[reflectedProperty.destination] === value) {
73
+ return;
74
+ }
75
+ this.#target[reflectedProperty.destination] = value;
76
+ break;
77
+ }
64
78
  }
65
- rnds[6] = (rnds[6] & 0x0f) | 0x40;
66
- rnds[8] = (rnds[8] & 0x3f) | 0x80;
67
- return unsafeStringify(rnds);
68
- }
69
-
70
- const generateRandomId = () => v4();
71
-
72
- class _TextField extends VividElement {
73
- }
74
- class FormAssociatedTextField extends FormAssociated(_TextField) {
75
- constructor() {
76
- super(...arguments);
77
- this.proxy = document.createElement("input");
78
- }
79
+ };
79
80
  }
80
81
 
81
82
  var __defProp = Object.defineProperty;
82
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
83
- var __typeError = (msg) => {
84
- throw TypeError(msg);
85
- };
86
83
  var __decorateClass = (decorators, target, key, kind) => {
87
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
84
+ var result = void 0 ;
88
85
  for (var i = decorators.length - 1, decorator; i >= 0; i--)
89
86
  if (decorator = decorators[i])
90
- result = (kind ? decorator(target, key, result) : decorator(result)) || result;
91
- if (kind && result) __defProp(target, key, result);
87
+ result = (decorator(target, key, result) ) || result;
88
+ if (result) __defProp(target, key, result);
92
89
  return result;
93
90
  };
94
- var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
95
- var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
96
- var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
97
- var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
98
- var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
99
- var _randomId, _helperTextSlotMutationObserver, _TextField_instances, updateHelperTextMutationObserver_fn, updateMirroredHelperText_fn;
100
- const TextFieldType = {
91
+ const TextAreaResize = {
101
92
  /**
102
- * A text TextField
93
+ * No resize.
103
94
  */
104
- text: "text"};
105
- const safariWorkaroundClassName = "_vvd-3-text-field-safari-workaround";
106
- const getSafariWorkaroundStyleSheet = memoizeWith(
107
- () => "",
108
- () => {
109
- const styleSheet = new CSSStyleSheet();
110
- const supportsReplaceSync = "replaceSync" in styleSheet;
111
- if (supportsReplaceSync) {
112
- styleSheet.replaceSync(`
113
- .${safariWorkaroundClassName}::placeholder {
114
- opacity: 1 !important;
115
- -webkit-text-fill-color: var(--_low-ink-color) !important;
116
- }`);
117
- }
118
- return styleSheet;
119
- }
120
- );
121
- const installSafariWorkaroundStyleIfNeeded = (forElement) => {
122
- if (forElement._isSafariWorkaroundInstalled) {
123
- return;
124
- }
125
- forElement._isSafariWorkaroundInstalled = true;
126
- const root = forElement.getRootNode();
127
- const workaroundStyleSheet = getSafariWorkaroundStyleSheet();
128
- const supportsAdoptedStyleSheets = "adoptedStyleSheets" in root;
129
- if (!supportsAdoptedStyleSheets) {
130
- return;
131
- }
132
- if (!root.adoptedStyleSheets.includes(workaroundStyleSheet)) {
133
- root.adoptedStyleSheets = [
134
- ...root.adoptedStyleSheets,
135
- workaroundStyleSheet
136
- ];
137
- }
138
- };
139
- let TextField = class extends AffixIcon(
140
- DelegatesAria(FormAssociatedTextField)
95
+ none: "none"};
96
+ class TextArea extends WithFeedback(
97
+ WithCharCount(
98
+ WithErrorText(
99
+ WithSuccessText(FormElement(DelegatesAria(FormAssociated(VividElement))))
100
+ )
101
+ )
141
102
  ) {
142
103
  constructor() {
143
104
  super(...arguments);
144
- __privateAdd(this, _TextField_instances);
105
+ /**
106
+ * @internal
107
+ */
108
+ this.proxy = document.createElement("textarea");
145
109
  // eslint-disable-next-line @nrwl/nx/workspace/no-attribute-default-value
146
- this.type = TextFieldType.text;
147
- __privateAdd(this, _randomId, generateRandomId());
148
- this._mirroredHelperText = "";
149
- __privateAdd(this, _helperTextSlotMutationObserver);
110
+ this.resize = TextAreaResize.none;
111
+ this.cols = 20;
112
+ /**
113
+ * @internal
114
+ */
115
+ this.handleTextInput = () => {
116
+ this.value = this.control.value;
117
+ };
150
118
  }
151
119
  /**
152
120
  * @internal
153
121
  */
154
122
  readOnlyChanged() {
155
- if (this.proxy instanceof HTMLInputElement) {
123
+ if (this.proxy instanceof HTMLTextAreaElement) {
156
124
  this.proxy.readOnly = this.readOnly;
157
- this.validate();
158
125
  }
159
126
  }
160
127
  /**
161
128
  * @internal
162
129
  */
163
130
  autofocusChanged() {
164
- if (this.proxy instanceof HTMLInputElement) {
131
+ if (this.proxy instanceof HTMLTextAreaElement) {
165
132
  this.proxy.autofocus = this.autofocus;
166
- this.validate();
167
- }
168
- }
169
- /**
170
- * @internal
171
- */
172
- placeholderChanged() {
173
- if (this.proxy instanceof HTMLInputElement) {
174
- this.proxy.placeholder = this.placeholder;
175
- }
176
- }
177
- /**
178
- * @internal
179
- */
180
- typeChanged() {
181
- if (this.proxy instanceof HTMLInputElement) {
182
- this.proxy.type = this.type;
183
- this.validate();
184
133
  }
185
134
  }
186
135
  /**
187
136
  * @internal
188
137
  */
189
138
  listChanged() {
190
- if (this.proxy instanceof HTMLInputElement) {
139
+ if (this.proxy instanceof HTMLTextAreaElement) {
191
140
  this.proxy.setAttribute("list", this.list);
192
- this.validate();
193
141
  }
194
142
  }
195
143
  /**
196
144
  * @internal
197
145
  */
198
146
  maxlengthChanged() {
199
- if (this.proxy instanceof HTMLInputElement) {
147
+ if (this.proxy instanceof HTMLTextAreaElement) {
200
148
  this.proxy.maxLength = this.maxlength;
201
- this.validate();
202
149
  }
203
150
  }
204
151
  /**
205
152
  * @internal
206
153
  */
207
154
  minlengthChanged() {
208
- if (this.proxy instanceof HTMLInputElement) {
155
+ if (this.proxy instanceof HTMLTextAreaElement) {
209
156
  this.proxy.minLength = this.minlength;
210
- this.validate();
211
- }
212
- }
213
- /**
214
- * @internal
215
- */
216
- patternChanged() {
217
- if (this.proxy instanceof HTMLInputElement) {
218
- this.proxy.pattern = this.pattern;
219
- this.validate();
220
- }
221
- }
222
- /**
223
- * @internal
224
- */
225
- sizeChanged() {
226
- if (this.proxy instanceof HTMLInputElement) {
227
- this.proxy.size = this.size;
228
157
  }
229
158
  }
230
159
  /**
231
160
  * @internal
232
161
  */
233
162
  spellcheckChanged() {
234
- if (this.proxy instanceof HTMLInputElement) {
163
+ if (this.proxy instanceof HTMLTextAreaElement) {
235
164
  this.proxy.spellcheck = this.spellcheck;
236
165
  }
237
166
  }
238
167
  /**
239
- * @internal
240
- */
241
- valueChanged(previous, next) {
242
- super.valueChanged(previous, next);
243
- this._updateControlValueIfNeeded();
244
- }
245
- /**
246
- * Update the controls value only if it is actually different from the actual value.
247
- * This is important as to not reset the browser's "dirtiness" flag on the input, which is used for min/maxlength
248
- * constraints.
249
- * @internal
250
- */
251
- _updateControlValueIfNeeded() {
252
- if (this.control && this.control.value !== this.value) {
253
- this.control.value = this.value;
254
- }
255
- }
256
- /**
257
- * Selects all the text in the text field
168
+ * Selects all the text in the text area
258
169
  *
259
170
  * @public
260
171
  */
@@ -262,11 +173,13 @@ let TextField = class extends AffixIcon(
262
173
  this.control.select();
263
174
  }
264
175
  /**
265
- * Handles the internal control's `input` event
266
176
  * @internal
267
177
  */
268
- handleTextInput() {
269
- this.value = this.control.value;
178
+ valueChanged(previous, next) {
179
+ super.valueChanged(previous, next);
180
+ if (this.charCount && this.maxlength) {
181
+ this._updateCharCountRemaining();
182
+ }
270
183
  }
271
184
  /**
272
185
  * Change event handler for inner control.
@@ -284,330 +197,128 @@ let TextField = class extends AffixIcon(
284
197
  validate() {
285
198
  super.validate(this.control);
286
199
  }
200
+ #reflectToTextArea;
287
201
  connectedCallback() {
288
202
  super.connectedCallback();
289
- this.proxy.setAttribute("type", this.type);
290
- this.validate();
291
- if (this.autofocus) {
292
- DOM.queueUpdate(() => {
293
- this.focus();
294
- });
295
- }
296
- this._updateControlValueIfNeeded();
297
- __privateMethod(this, _TextField_instances, updateHelperTextMutationObserver_fn).call(this);
298
- installSafariWorkaroundStyleIfNeeded(this);
203
+ this.#reflectToTextArea = new Reflector(this, this.control);
204
+ this.#reflectToTextArea.property("value", "value", true);
205
+ this._renderCharCountRemaining();
299
206
  }
300
207
  disconnectedCallback() {
301
208
  super.disconnectedCallback();
302
- __privateMethod(this, _TextField_instances, updateHelperTextMutationObserver_fn).call(this);
303
- }
304
- focus() {
305
- this.control?.focus();
306
- }
307
- /**
308
- * @internal
309
- */
310
- get _uniqueId() {
311
- return this.id || __privateGet(this, _randomId);
209
+ this.#reflectToTextArea.destroy();
312
210
  }
313
- /**
314
- * @internal
315
- */
316
- helperTextChanged() {
317
- __privateMethod(this, _TextField_instances, updateMirroredHelperText_fn).call(this);
318
- }
319
- /**
320
- * @internal
321
- */
322
- _helperTextSlottedContentChanged() {
323
- __privateMethod(this, _TextField_instances, updateMirroredHelperText_fn).call(this);
324
- __privateMethod(this, _TextField_instances, updateHelperTextMutationObserver_fn).call(this);
325
- }
326
- };
327
- _randomId = new WeakMap();
328
- _helperTextSlotMutationObserver = new WeakMap();
329
- _TextField_instances = new WeakSet();
330
- updateHelperTextMutationObserver_fn = function() {
331
- const usesHelperTextSlot = this._helperTextSlottedContent.length;
332
- const shouldHaveMutationObserver = usesHelperTextSlot && this.isConnected;
333
- if (shouldHaveMutationObserver && !__privateGet(this, _helperTextSlotMutationObserver)) {
334
- __privateSet(this, _helperTextSlotMutationObserver, new MutationObserver((records) => {
335
- if (
336
- // Ignore updates to the mirrored helper text itself
337
- records.some(
338
- (record) => record.target instanceof HTMLElement && record.target.slot !== "_mirrored-helper-text"
339
- )
340
- ) {
341
- __privateMethod(this, _TextField_instances, updateMirroredHelperText_fn).call(this);
342
- }
343
- }));
344
- __privateGet(this, _helperTextSlotMutationObserver).observe(this, {
345
- subtree: true,
346
- childList: true,
347
- characterData: true
348
- });
349
- }
350
- if (!shouldHaveMutationObserver && __privateGet(this, _helperTextSlotMutationObserver)) {
351
- __privateGet(this, _helperTextSlotMutationObserver).disconnect();
352
- __privateSet(this, _helperTextSlotMutationObserver, void 0);
353
- }
354
- };
355
- updateMirroredHelperText_fn = function() {
356
- let helperText = this.helperText ?? "";
357
- if (this._helperTextSlottedContent?.length) {
358
- helperText = this._helperTextSlottedContent.map((node) => node.innerText).join(" ");
359
- }
360
- this._mirroredHelperText = helperText;
361
- };
362
- __decorateClass([
363
- attr({ attribute: "readonly", mode: "boolean" })
364
- ], TextField.prototype, "readOnly", 2);
211
+ }
212
+ // @ts-expect-error Type is incorrectly non-optional
365
213
  __decorateClass([
366
214
  attr({ mode: "boolean" })
367
- ], TextField.prototype, "autofocus", 2);
368
- __decorateClass([
369
- attr
370
- ], TextField.prototype, "placeholder", 2);
371
- __decorateClass([
372
- attr
373
- ], TextField.prototype, "type", 2);
215
+ ], TextArea.prototype, "readOnly");
374
216
  __decorateClass([
375
217
  attr
376
- ], TextField.prototype, "list", 2);
218
+ ], TextArea.prototype, "resize");
219
+ // @ts-expect-error Type is incorrectly non-optional
377
220
  __decorateClass([
378
- attr({ converter: nullableNumberConverter })
379
- ], TextField.prototype, "maxlength", 2);
221
+ attr({ mode: "boolean" })
222
+ ], TextArea.prototype, "autofocus");
223
+ // @ts-expect-error Type is incorrectly non-optional
380
224
  __decorateClass([
381
- attr({ converter: nullableNumberConverter })
382
- ], TextField.prototype, "minlength", 2);
225
+ attr({ attribute: "form" })
226
+ ], TextArea.prototype, "formId");
227
+ // @ts-expect-error Type is incorrectly non-optional
383
228
  __decorateClass([
384
229
  attr
385
- ], TextField.prototype, "pattern", 2);
230
+ ], TextArea.prototype, "list");
386
231
  __decorateClass([
387
232
  attr({ converter: nullableNumberConverter })
388
- ], TextField.prototype, "size", 2);
233
+ ], TextArea.prototype, "maxlength");
234
+ // @ts-expect-error Type is incorrectly non-optional
389
235
  __decorateClass([
390
- attr({ mode: "boolean" })
391
- ], TextField.prototype, "spellcheck", 2);
392
- __decorateClass([
393
- attr
394
- ], TextField.prototype, "appearance", 2);
395
- __decorateClass([
396
- attr
397
- ], TextField.prototype, "shape", 2);
236
+ attr({ converter: nullableNumberConverter })
237
+ ], TextArea.prototype, "minlength");
238
+ // @ts-expect-error Type is incorrectly non-optional
398
239
  __decorateClass([
399
240
  attr
400
- ], TextField.prototype, "autoComplete", 2);
241
+ ], TextArea.prototype, "placeholder");
401
242
  __decorateClass([
402
- attr()
403
- ], TextField.prototype, "scale", 2);
243
+ attr({ converter: nullableNumberConverter, mode: "fromView" })
244
+ ], TextArea.prototype, "cols");
245
+ // @ts-expect-error Type is incorrectly non-optional
404
246
  __decorateClass([
405
- attr({ attribute: "inputmode" })
406
- ], TextField.prototype, "inputMode", 2);
247
+ attr({ converter: nullableNumberConverter, mode: "fromView" })
248
+ ], TextArea.prototype, "rows");
249
+ // @ts-expect-error Type is incorrectly non-optional
407
250
  __decorateClass([
408
- observable
409
- ], TextField.prototype, "actionItemsSlottedContent", 2);
251
+ attr({ mode: "boolean" })
252
+ ], TextArea.prototype, "spellcheck");
410
253
  __decorateClass([
411
254
  observable
412
- ], TextField.prototype, "leadingActionItemsSlottedContent", 2);
255
+ ], TextArea.prototype, "defaultSlottedNodes");
413
256
  __decorateClass([
414
- observable
415
- ], TextField.prototype, "_mirroredHelperText", 2);
416
- TextField = __decorateClass([
417
- errorText,
418
- formElements
419
- ], TextField);
420
- applyMixinsWithObservables(
421
- TextField,
422
- FormElementCharCount,
423
- FormElementHelperText,
424
- FormElementSuccessText
425
- );
426
-
427
- class RenderInLightDomBehaviour {
428
- constructor(templateBinding, isTemplateBindingVolatile) {
429
- this.source = null;
430
- this.templateBindingObserver = Observable.binding(
431
- templateBinding,
432
- this,
433
- isTemplateBindingVolatile
434
- );
435
- }
436
- bind(source, context) {
437
- this.source = source;
438
- this.context = context;
439
- if (!this.insertionPoint) {
440
- this.insertionPoint = document.createComment("");
441
- source.appendChild(this.insertionPoint);
442
- }
443
- this.handleChange();
444
- }
445
- unbind() {
446
- this.source = null;
447
- this.view.unbind();
448
- this.templateBindingObserver.disconnect();
449
- }
450
- /**
451
- * Handles change of the template itself.
452
- */
453
- handleChange() {
454
- this.instantiateTemplate(
455
- this.templateBindingObserver.observe(this.source, this.context)
456
- );
457
- }
458
- instantiateTemplate(template) {
459
- if (this.view) {
460
- this.view.dispose();
461
- }
462
- this.view = template.create();
463
- this.view.bind(this.source, this.context);
464
- this.view.insertBefore(this.insertionPoint);
465
- }
466
- }
467
- class RenderInLightDomDirective extends HTMLDirective {
468
- constructor(templateBinding) {
469
- super();
470
- this.templateBinding = templateBinding;
471
- this.createPlaceholder = DOM.createBlockPlaceholder;
472
- this.isTemplateBindingVolatile = Observable.isVolatileBinding(templateBinding);
473
- }
474
- createBehavior() {
475
- return new RenderInLightDomBehaviour(
476
- this.templateBinding,
477
- this.isTemplateBindingVolatile
478
- );
479
- }
480
- }
481
- function renderInLightDOM(templateOrTemplateBinding) {
482
- const templateBinding = typeof templateOrTemplateBinding === "function" ? templateOrTemplateBinding : () => templateOrTemplateBinding;
483
- return new RenderInLightDomDirective(templateBinding);
484
- }
257
+ attr
258
+ ], TextArea.prototype, "wrap");
485
259
 
486
- const getControlId = (id) => `vvd-text-field-control-${id}`;
487
- const getHelperTextId = (id) => `vvd-text-field-helper-text-${id}`;
488
- const getStateClasses = ({
260
+ const getClasses = ({
261
+ value,
489
262
  errorValidationMessage,
490
263
  disabled,
491
- value,
492
- readOnly,
493
264
  placeholder,
494
- appearance,
495
- shape,
496
- label,
497
- successText,
498
- actionItemsSlottedContent,
499
- leadingActionItemsSlottedContent,
500
- icon,
501
- scale
265
+ readOnly,
266
+ successText
502
267
  }) => classNames(
503
- ["error", Boolean(errorValidationMessage)],
504
- ["disabled", disabled],
505
- ["has-value", Boolean(value)],
268
+ "base",
506
269
  ["readonly", readOnly],
507
270
  ["placeholder", Boolean(placeholder)],
508
- [`appearance-${appearance}`, Boolean(appearance)],
509
- [`shape-${shape}`, Boolean(shape)],
510
- ["no-label", !label],
511
- ["has-icon", !!icon],
512
- ["success", Boolean(successText)],
513
- ["action-items", !!actionItemsSlottedContent?.length],
514
- ["leading-action-items", !!leadingActionItemsSlottedContent?.length],
515
- ["no-leading", !(leadingActionItemsSlottedContent?.length || icon)],
516
- [`size-${scale}`, Boolean(scale)]
271
+ ["disabled", disabled],
272
+ ["error", Boolean(errorValidationMessage)],
273
+ ["has-value", Boolean(value)],
274
+ ["success", !!successText]
517
275
  );
518
- function renderCharCount() {
519
- return html`
520
- <span class="char-count"
521
- >${(x) => x.value ? x.value.length : 0} / ${(x) => x.maxlength}</span
522
- >
523
- `;
276
+ function renderLabel() {
277
+ return html` <label for="control" class="label">
278
+ ${(x) => x.label}
279
+ </label>`;
524
280
  }
525
- const TextfieldTemplate = (context) => {
526
- const affixIconTemplate = affixIconTemplateFactory(context);
281
+ const TextAreaTemplate = (context) => {
527
282
  return html`
528
- <div class="base ${getStateClasses}">
529
- ${when((x) => x.charCount && x.maxlength, renderCharCount())}
530
- <slot class="label" name="_label"></slot>
531
- ${renderInLightDOM(html`
532
- ${when(
533
- (x) => x.label,
534
- html`
535
- <label slot="_label" for="${(x) => getControlId(x._uniqueId)}">
536
- ${(x) => x.label}
537
- </label>
538
- `
539
- )}
540
- `)}
541
- <div class="fieldset">
542
- <div class="leading-items-wrapper">
543
- <slot
544
- name="leading-action-items"
545
- ${slotted("leadingActionItemsSlottedContent")}
546
- ></slot>
547
- ${(x) => affixIconTemplate(x.icon)}
548
- </div>
549
- <div class="wrapper">
550
- <slot class="control" name="_control"></slot>
551
- ${renderInLightDOM(
552
- html`<input
553
- slot="_control"
554
- id="${(x) => getControlId(x._uniqueId)}"
555
- class="_vvd-3-text-field-safari-workaround"
556
- @input="${(x) => x.handleTextInput()}"
557
- @change="${(x) => x.handleChange()}"
558
- @blur="${(x) => {
559
- x.$emit("blur", void 0, { bubbles: false });
560
- }}"
561
- @focus="${(x) => {
562
- x.$emit("focus", void 0, { bubbles: false });
563
- }}"
564
- ?autofocus="${(x) => x.autofocus}"
565
- ?disabled="${(x) => x.disabled}"
566
- ?readonly="${(x) => x.readOnly}"
567
- ?required="${(x) => x.required}"
568
- ?spellcheck="${(x) => x.spellcheck}"
569
- list="${(x) => x.list}"
570
- maxlength="${(x) => x.maxlength}"
571
- minlength="${(x) => x.minlength}"
572
- pattern="${(x) => x.pattern}"
573
- placeholder="${(x) => x.placeholder}"
574
- size="${(x) => x.size}"
575
- autocomplete="${(x) => x.autoComplete}"
576
- type="${(x) => x.type}"
577
- inputmode="${(x) => x.inputMode}"
578
- aria-describedby="${(x) => x._mirroredHelperText ? getHelperTextId(x._uniqueId) : null}"
579
- value="${(x) => x.initialValue}"
580
- ${delegateAria()}
581
- ${ref("control")}
582
- />`
283
+ <div class="${getClasses}">
284
+ ${when(
285
+ (x) => x.charCount && x.maxlength,
286
+ (x) => x._getCharCountTemplate(context)
583
287
  )}
584
- </div>
585
- <div class="action-items-wrapper">
586
- <slot
587
- name="action-items"
588
- ${slotted("actionItemsSlottedContent")}
589
- ></slot>
590
- </div>
591
- </div>
592
- ${getFeedbackTemplate(context)}
593
- </div>
594
- <slot name="_mirrored-helper-text"></slot>
595
- ${renderInLightDOM(html`
596
- <div
597
- id="${(x) => getHelperTextId(x._uniqueId)}"
598
- slot="_mirrored-helper-text"
288
+ ${when((x) => x.label, renderLabel())}
289
+ <textarea
290
+ class="control"
291
+ id="control"
292
+ ?autofocus="${(x) => x.autofocus}"
293
+ placeholder="${(x) => x.placeholder ? x.placeholder : null}"
294
+ name="${(x) => x.name ? x.name : null}"
295
+ list="${(x) => x.list}"
296
+ minlength="${(x) => x.minlength ? x.minlength : null}"
297
+ maxlength="${(x) => x.maxlength ? x.maxlength : null}"
298
+ rows="${(x) => x.rows ? x.rows : null}"
299
+ cols="${(x) => x.cols ? x.cols : null}"
300
+ wrap="${(x) => x.wrap ? x.wrap : null}"
301
+ ?readonly="${(x) => x.readOnly}"
302
+ ?disabled="${(x) => x.disabled}"
303
+ ?required="${(x) => x.required}"
304
+ ?spellcheck="${(x) => x.spellcheck}"
305
+ aria-describedby="${(x) => x._feedbackDescribedBy} ${(x) => x.charCount && x.maxlength ? x._charCountDescribedBy : null}"
306
+ ${delegateAria()}
307
+ @input="${(x) => x.handleTextInput()}"
308
+ @change="${(x) => x.handleChange()}"
309
+ ${ref("control")}
599
310
  >
600
- ${(x) => x._mirroredHelperText}
601
- </div>
602
- `)}
311
+ </textarea>
312
+ ${(x) => x._getFeedbackTemplate(context)}
313
+ </div>
603
314
  `;
604
315
  };
605
316
 
606
- const textFieldDefinition = defineVividComponent(
607
- "text-field",
608
- TextField,
609
- TextfieldTemplate,
610
- [iconDefinition],
317
+ const textAreaDefinition = defineVividComponent(
318
+ "text-area",
319
+ TextArea,
320
+ TextAreaTemplate,
321
+ [feedbackMessageDefinition, visuallyHiddenDefinition],
611
322
  {
612
323
  styles,
613
324
  shadowOptions: {
@@ -615,6 +326,6 @@ const textFieldDefinition = defineVividComponent(
615
326
  }
616
327
  }
617
328
  );
618
- const registerTextField = createRegisterFunction(textFieldDefinition);
329
+ const registerTextArea = createRegisterFunction(textAreaDefinition);
619
330
 
620
- export { TextField as T, registerTextField as r, textFieldDefinition as t };
331
+ export { TextArea as T, registerTextArea as r, textAreaDefinition as t };