@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,262 +1,173 @@
1
1
  'use strict';
2
2
 
3
- const definition = require('./definition28.cjs');
4
3
  const vividElement = require('./vivid-element.cjs');
5
- const applyMixinsWithObservables = require('./applyMixinsWithObservables.cjs');
4
+ const mixins = require('./mixins.cjs');
5
+ const definition = require('./definition66.cjs');
6
6
  const delegatesAria = require('./delegates-aria.cjs');
7
7
  const formAssociated = require('./form-associated.cjs');
8
- const formElements = require('./form-elements.cjs');
9
- const affix = require('./affix.cjs');
10
- const textField = require('./text-field.cjs');
8
+ const charCount = require('./char-count.cjs');
9
+ const withErrorText = require('./with-error-text.cjs');
10
+ const withSuccessText = require('./with-success-text.cjs');
11
+ const formElement = require('./form-element.cjs');
11
12
  const classNames = require('./class-names.cjs');
12
13
  const when = require('./when.cjs');
13
- const slotted = require('./slotted.cjs');
14
14
  const ref = require('./ref.cjs');
15
15
 
16
- const byteToHex = [];
17
- for (let i = 0; i < 256; ++i) {
18
- byteToHex.push((i + 0x100).toString(16).slice(1));
19
- }
20
- function unsafeStringify(arr, offset = 0) {
21
- return (byteToHex[arr[offset + 0]] +
22
- byteToHex[arr[offset + 1]] +
23
- byteToHex[arr[offset + 2]] +
24
- byteToHex[arr[offset + 3]] +
25
- '-' +
26
- byteToHex[arr[offset + 4]] +
27
- byteToHex[arr[offset + 5]] +
28
- '-' +
29
- byteToHex[arr[offset + 6]] +
30
- byteToHex[arr[offset + 7]] +
31
- '-' +
32
- byteToHex[arr[offset + 8]] +
33
- byteToHex[arr[offset + 9]] +
34
- '-' +
35
- byteToHex[arr[offset + 10]] +
36
- byteToHex[arr[offset + 11]] +
37
- byteToHex[arr[offset + 12]] +
38
- byteToHex[arr[offset + 13]] +
39
- byteToHex[arr[offset + 14]] +
40
- byteToHex[arr[offset + 15]]).toLowerCase();
41
- }
42
-
43
- let getRandomValues;
44
- const rnds8 = new Uint8Array(16);
45
- function rng() {
46
- if (!getRandomValues) {
47
- if (typeof crypto === 'undefined' || !crypto.getRandomValues) {
48
- throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');
49
- }
50
- getRandomValues = crypto.getRandomValues.bind(crypto);
51
- }
52
- return getRandomValues(rnds8);
53
- }
16
+ 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}";
54
17
 
55
- const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);
56
- const native = { randomUUID };
57
-
58
- function v4(options, buf, offset) {
59
- if (native.randomUUID && true && !options) {
60
- return native.randomUUID();
18
+ class Reflector {
19
+ #reflectedProperties = /* @__PURE__ */ new Map();
20
+ #source;
21
+ #target;
22
+ constructor(source, target) {
23
+ this.#source = source;
24
+ this.#target = target;
25
+ }
26
+ attribute(propertyName, attributeName) {
27
+ this.#addReflectedProperty(propertyName, {
28
+ type: "attribute",
29
+ destination: attributeName
30
+ });
31
+ }
32
+ booleanAttribute(propertyName, attributeName) {
33
+ this.#addReflectedProperty(propertyName, {
34
+ type: "boolean-attribute",
35
+ destination: attributeName
36
+ });
37
+ }
38
+ property(propertyName, targetProperty, skipIfEqual = false) {
39
+ this.#addReflectedProperty(propertyName, {
40
+ type: "property",
41
+ destination: targetProperty,
42
+ skipIfEqual
43
+ });
44
+ }
45
+ destroy() {
46
+ const notifier = vividElement.Observable.getNotifier(this.#source);
47
+ for (const prop of this.#reflectedProperties.keys()) {
48
+ notifier.unsubscribe(this.#propertyChangeHandler, prop);
61
49
  }
62
- options = options || {};
63
- const rnds = options.random ?? options.rng?.() ?? rng();
64
- if (rnds.length < 16) {
65
- throw new Error('Random bytes length must be >= 16');
50
+ this.#reflectedProperties.clear();
51
+ }
52
+ #addReflectedProperty(name, reflected) {
53
+ this.#reflectedProperties.set(name, reflected);
54
+ const notifier = vividElement.Observable.getNotifier(this.#source);
55
+ notifier.subscribe(this.#propertyChangeHandler, name);
56
+ this.#propertyChangeHandler.handleChange(this.#source, name);
57
+ }
58
+ #propertyChangeHandler = {
59
+ handleChange: (source, propertyName) => {
60
+ const reflectedProperty = this.#reflectedProperties.get(propertyName);
61
+ const value = source[propertyName];
62
+ switch (reflectedProperty.type) {
63
+ case "boolean-attribute":
64
+ vividElement.DOM.setBooleanAttribute(
65
+ this.#target,
66
+ reflectedProperty.destination,
67
+ Boolean(value)
68
+ );
69
+ break;
70
+ case "attribute":
71
+ vividElement.DOM.setAttribute(this.#target, reflectedProperty.destination, value);
72
+ break;
73
+ case "property":
74
+ if (reflectedProperty.skipIfEqual && this.#target[reflectedProperty.destination] === value) {
75
+ return;
76
+ }
77
+ this.#target[reflectedProperty.destination] = value;
78
+ break;
79
+ }
66
80
  }
67
- rnds[6] = (rnds[6] & 0x0f) | 0x40;
68
- rnds[8] = (rnds[8] & 0x3f) | 0x80;
69
- return unsafeStringify(rnds);
70
- }
71
-
72
- const generateRandomId = () => v4();
73
-
74
- class _TextField extends vividElement.VividElement {
75
- }
76
- class FormAssociatedTextField extends formAssociated.FormAssociated(_TextField) {
77
- constructor() {
78
- super(...arguments);
79
- this.proxy = document.createElement("input");
80
- }
81
+ };
81
82
  }
82
83
 
83
84
  var __defProp = Object.defineProperty;
84
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
85
- var __typeError = (msg) => {
86
- throw TypeError(msg);
87
- };
88
85
  var __decorateClass = (decorators, target, key, kind) => {
89
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
86
+ var result = void 0 ;
90
87
  for (var i = decorators.length - 1, decorator; i >= 0; i--)
91
88
  if (decorator = decorators[i])
92
- result = (kind ? decorator(target, key, result) : decorator(result)) || result;
93
- if (kind && result) __defProp(target, key, result);
89
+ result = (decorator(target, key, result) ) || result;
90
+ if (result) __defProp(target, key, result);
94
91
  return result;
95
92
  };
96
- var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
97
- var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
98
- 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);
99
- var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
100
- var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
101
- var _randomId, _helperTextSlotMutationObserver, _TextField_instances, updateHelperTextMutationObserver_fn, updateMirroredHelperText_fn;
102
- const TextFieldType = {
93
+ const TextAreaResize = {
103
94
  /**
104
- * A text TextField
95
+ * No resize.
105
96
  */
106
- text: "text"};
107
- const safariWorkaroundClassName = "_vvd-3-text-field-safari-workaround";
108
- const getSafariWorkaroundStyleSheet = definition.memoizeWith(
109
- () => "",
110
- () => {
111
- const styleSheet = new CSSStyleSheet();
112
- const supportsReplaceSync = "replaceSync" in styleSheet;
113
- if (supportsReplaceSync) {
114
- styleSheet.replaceSync(`
115
- .${safariWorkaroundClassName}::placeholder {
116
- opacity: 1 !important;
117
- -webkit-text-fill-color: var(--_low-ink-color) !important;
118
- }`);
119
- }
120
- return styleSheet;
121
- }
122
- );
123
- const installSafariWorkaroundStyleIfNeeded = (forElement) => {
124
- if (forElement._isSafariWorkaroundInstalled) {
125
- return;
126
- }
127
- forElement._isSafariWorkaroundInstalled = true;
128
- const root = forElement.getRootNode();
129
- const workaroundStyleSheet = getSafariWorkaroundStyleSheet();
130
- const supportsAdoptedStyleSheets = "adoptedStyleSheets" in root;
131
- if (!supportsAdoptedStyleSheets) {
132
- return;
133
- }
134
- if (!root.adoptedStyleSheets.includes(workaroundStyleSheet)) {
135
- root.adoptedStyleSheets = [
136
- ...root.adoptedStyleSheets,
137
- workaroundStyleSheet
138
- ];
139
- }
140
- };
141
- exports.TextField = class TextField extends affix.AffixIcon(
142
- delegatesAria.DelegatesAria(FormAssociatedTextField)
97
+ none: "none"};
98
+ class TextArea extends mixins.WithFeedback(
99
+ charCount.WithCharCount(
100
+ withErrorText.WithErrorText(
101
+ withSuccessText.WithSuccessText(formElement.FormElement(delegatesAria.DelegatesAria(formAssociated.FormAssociated(vividElement.VividElement))))
102
+ )
103
+ )
143
104
  ) {
144
105
  constructor() {
145
106
  super(...arguments);
146
- __privateAdd(this, _TextField_instances);
107
+ /**
108
+ * @internal
109
+ */
110
+ this.proxy = document.createElement("textarea");
147
111
  // eslint-disable-next-line @nrwl/nx/workspace/no-attribute-default-value
148
- this.type = TextFieldType.text;
149
- __privateAdd(this, _randomId, generateRandomId());
150
- this._mirroredHelperText = "";
151
- __privateAdd(this, _helperTextSlotMutationObserver);
112
+ this.resize = TextAreaResize.none;
113
+ this.cols = 20;
114
+ /**
115
+ * @internal
116
+ */
117
+ this.handleTextInput = () => {
118
+ this.value = this.control.value;
119
+ };
152
120
  }
153
121
  /**
154
122
  * @internal
155
123
  */
156
124
  readOnlyChanged() {
157
- if (this.proxy instanceof HTMLInputElement) {
125
+ if (this.proxy instanceof HTMLTextAreaElement) {
158
126
  this.proxy.readOnly = this.readOnly;
159
- this.validate();
160
127
  }
161
128
  }
162
129
  /**
163
130
  * @internal
164
131
  */
165
132
  autofocusChanged() {
166
- if (this.proxy instanceof HTMLInputElement) {
133
+ if (this.proxy instanceof HTMLTextAreaElement) {
167
134
  this.proxy.autofocus = this.autofocus;
168
- this.validate();
169
- }
170
- }
171
- /**
172
- * @internal
173
- */
174
- placeholderChanged() {
175
- if (this.proxy instanceof HTMLInputElement) {
176
- this.proxy.placeholder = this.placeholder;
177
- }
178
- }
179
- /**
180
- * @internal
181
- */
182
- typeChanged() {
183
- if (this.proxy instanceof HTMLInputElement) {
184
- this.proxy.type = this.type;
185
- this.validate();
186
135
  }
187
136
  }
188
137
  /**
189
138
  * @internal
190
139
  */
191
140
  listChanged() {
192
- if (this.proxy instanceof HTMLInputElement) {
141
+ if (this.proxy instanceof HTMLTextAreaElement) {
193
142
  this.proxy.setAttribute("list", this.list);
194
- this.validate();
195
143
  }
196
144
  }
197
145
  /**
198
146
  * @internal
199
147
  */
200
148
  maxlengthChanged() {
201
- if (this.proxy instanceof HTMLInputElement) {
149
+ if (this.proxy instanceof HTMLTextAreaElement) {
202
150
  this.proxy.maxLength = this.maxlength;
203
- this.validate();
204
151
  }
205
152
  }
206
153
  /**
207
154
  * @internal
208
155
  */
209
156
  minlengthChanged() {
210
- if (this.proxy instanceof HTMLInputElement) {
157
+ if (this.proxy instanceof HTMLTextAreaElement) {
211
158
  this.proxy.minLength = this.minlength;
212
- this.validate();
213
- }
214
- }
215
- /**
216
- * @internal
217
- */
218
- patternChanged() {
219
- if (this.proxy instanceof HTMLInputElement) {
220
- this.proxy.pattern = this.pattern;
221
- this.validate();
222
- }
223
- }
224
- /**
225
- * @internal
226
- */
227
- sizeChanged() {
228
- if (this.proxy instanceof HTMLInputElement) {
229
- this.proxy.size = this.size;
230
159
  }
231
160
  }
232
161
  /**
233
162
  * @internal
234
163
  */
235
164
  spellcheckChanged() {
236
- if (this.proxy instanceof HTMLInputElement) {
165
+ if (this.proxy instanceof HTMLTextAreaElement) {
237
166
  this.proxy.spellcheck = this.spellcheck;
238
167
  }
239
168
  }
240
169
  /**
241
- * @internal
242
- */
243
- valueChanged(previous, next) {
244
- super.valueChanged(previous, next);
245
- this._updateControlValueIfNeeded();
246
- }
247
- /**
248
- * Update the controls value only if it is actually different from the actual value.
249
- * This is important as to not reset the browser's "dirtiness" flag on the input, which is used for min/maxlength
250
- * constraints.
251
- * @internal
252
- */
253
- _updateControlValueIfNeeded() {
254
- if (this.control && this.control.value !== this.value) {
255
- this.control.value = this.value;
256
- }
257
- }
258
- /**
259
- * Selects all the text in the text field
170
+ * Selects all the text in the text area
260
171
  *
261
172
  * @public
262
173
  */
@@ -264,11 +175,13 @@ exports.TextField = class TextField extends affix.AffixIcon(
264
175
  this.control.select();
265
176
  }
266
177
  /**
267
- * Handles the internal control's `input` event
268
178
  * @internal
269
179
  */
270
- handleTextInput() {
271
- this.value = this.control.value;
180
+ valueChanged(previous, next) {
181
+ super.valueChanged(previous, next);
182
+ if (this.charCount && this.maxlength) {
183
+ this._updateCharCountRemaining();
184
+ }
272
185
  }
273
186
  /**
274
187
  * Change event handler for inner control.
@@ -286,338 +199,137 @@ exports.TextField = class TextField extends affix.AffixIcon(
286
199
  validate() {
287
200
  super.validate(this.control);
288
201
  }
202
+ #reflectToTextArea;
289
203
  connectedCallback() {
290
204
  super.connectedCallback();
291
- this.proxy.setAttribute("type", this.type);
292
- this.validate();
293
- if (this.autofocus) {
294
- vividElement.DOM.queueUpdate(() => {
295
- this.focus();
296
- });
297
- }
298
- this._updateControlValueIfNeeded();
299
- __privateMethod(this, _TextField_instances, updateHelperTextMutationObserver_fn).call(this);
300
- installSafariWorkaroundStyleIfNeeded(this);
205
+ this.#reflectToTextArea = new Reflector(this, this.control);
206
+ this.#reflectToTextArea.property("value", "value", true);
207
+ this._renderCharCountRemaining();
301
208
  }
302
209
  disconnectedCallback() {
303
210
  super.disconnectedCallback();
304
- __privateMethod(this, _TextField_instances, updateHelperTextMutationObserver_fn).call(this);
305
- }
306
- focus() {
307
- this.control?.focus();
308
- }
309
- /**
310
- * @internal
311
- */
312
- get _uniqueId() {
313
- return this.id || __privateGet(this, _randomId);
211
+ this.#reflectToTextArea.destroy();
314
212
  }
315
- /**
316
- * @internal
317
- */
318
- helperTextChanged() {
319
- __privateMethod(this, _TextField_instances, updateMirroredHelperText_fn).call(this);
320
- }
321
- /**
322
- * @internal
323
- */
324
- _helperTextSlottedContentChanged() {
325
- __privateMethod(this, _TextField_instances, updateMirroredHelperText_fn).call(this);
326
- __privateMethod(this, _TextField_instances, updateHelperTextMutationObserver_fn).call(this);
327
- }
328
- };
329
- _randomId = new WeakMap();
330
- _helperTextSlotMutationObserver = new WeakMap();
331
- _TextField_instances = new WeakSet();
332
- updateHelperTextMutationObserver_fn = function() {
333
- const usesHelperTextSlot = this._helperTextSlottedContent.length;
334
- const shouldHaveMutationObserver = usesHelperTextSlot && this.isConnected;
335
- if (shouldHaveMutationObserver && !__privateGet(this, _helperTextSlotMutationObserver)) {
336
- __privateSet(this, _helperTextSlotMutationObserver, new MutationObserver((records) => {
337
- if (
338
- // Ignore updates to the mirrored helper text itself
339
- records.some(
340
- (record) => record.target instanceof HTMLElement && record.target.slot !== "_mirrored-helper-text"
341
- )
342
- ) {
343
- __privateMethod(this, _TextField_instances, updateMirroredHelperText_fn).call(this);
344
- }
345
- }));
346
- __privateGet(this, _helperTextSlotMutationObserver).observe(this, {
347
- subtree: true,
348
- childList: true,
349
- characterData: true
350
- });
351
- }
352
- if (!shouldHaveMutationObserver && __privateGet(this, _helperTextSlotMutationObserver)) {
353
- __privateGet(this, _helperTextSlotMutationObserver).disconnect();
354
- __privateSet(this, _helperTextSlotMutationObserver, void 0);
355
- }
356
- };
357
- updateMirroredHelperText_fn = function() {
358
- let helperText = this.helperText ?? "";
359
- if (this._helperTextSlottedContent?.length) {
360
- helperText = this._helperTextSlottedContent.map((node) => node.innerText).join(" ");
361
- }
362
- this._mirroredHelperText = helperText;
363
- };
364
- __decorateClass([
365
- vividElement.attr({ attribute: "readonly", mode: "boolean" })
366
- ], exports.TextField.prototype, "readOnly", 2);
213
+ }
214
+ // @ts-expect-error Type is incorrectly non-optional
367
215
  __decorateClass([
368
216
  vividElement.attr({ mode: "boolean" })
369
- ], exports.TextField.prototype, "autofocus", 2);
370
- __decorateClass([
371
- vividElement.attr
372
- ], exports.TextField.prototype, "placeholder", 2);
373
- __decorateClass([
374
- vividElement.attr
375
- ], exports.TextField.prototype, "type", 2);
217
+ ], TextArea.prototype, "readOnly");
376
218
  __decorateClass([
377
219
  vividElement.attr
378
- ], exports.TextField.prototype, "list", 2);
220
+ ], TextArea.prototype, "resize");
221
+ // @ts-expect-error Type is incorrectly non-optional
379
222
  __decorateClass([
380
- vividElement.attr({ converter: vividElement.nullableNumberConverter })
381
- ], exports.TextField.prototype, "maxlength", 2);
223
+ vividElement.attr({ mode: "boolean" })
224
+ ], TextArea.prototype, "autofocus");
225
+ // @ts-expect-error Type is incorrectly non-optional
382
226
  __decorateClass([
383
- vividElement.attr({ converter: vividElement.nullableNumberConverter })
384
- ], exports.TextField.prototype, "minlength", 2);
227
+ vividElement.attr({ attribute: "form" })
228
+ ], TextArea.prototype, "formId");
229
+ // @ts-expect-error Type is incorrectly non-optional
385
230
  __decorateClass([
386
231
  vividElement.attr
387
- ], exports.TextField.prototype, "pattern", 2);
232
+ ], TextArea.prototype, "list");
388
233
  __decorateClass([
389
234
  vividElement.attr({ converter: vividElement.nullableNumberConverter })
390
- ], exports.TextField.prototype, "size", 2);
235
+ ], TextArea.prototype, "maxlength");
236
+ // @ts-expect-error Type is incorrectly non-optional
391
237
  __decorateClass([
392
- vividElement.attr({ mode: "boolean" })
393
- ], exports.TextField.prototype, "spellcheck", 2);
394
- __decorateClass([
395
- vividElement.attr
396
- ], exports.TextField.prototype, "appearance", 2);
397
- __decorateClass([
398
- vividElement.attr
399
- ], exports.TextField.prototype, "shape", 2);
238
+ vividElement.attr({ converter: vividElement.nullableNumberConverter })
239
+ ], TextArea.prototype, "minlength");
240
+ // @ts-expect-error Type is incorrectly non-optional
400
241
  __decorateClass([
401
242
  vividElement.attr
402
- ], exports.TextField.prototype, "autoComplete", 2);
243
+ ], TextArea.prototype, "placeholder");
403
244
  __decorateClass([
404
- vividElement.attr()
405
- ], exports.TextField.prototype, "scale", 2);
245
+ vividElement.attr({ converter: vividElement.nullableNumberConverter, mode: "fromView" })
246
+ ], TextArea.prototype, "cols");
247
+ // @ts-expect-error Type is incorrectly non-optional
406
248
  __decorateClass([
407
- vividElement.attr({ attribute: "inputmode" })
408
- ], exports.TextField.prototype, "inputMode", 2);
249
+ vividElement.attr({ converter: vividElement.nullableNumberConverter, mode: "fromView" })
250
+ ], TextArea.prototype, "rows");
251
+ // @ts-expect-error Type is incorrectly non-optional
409
252
  __decorateClass([
410
- vividElement.observable
411
- ], exports.TextField.prototype, "actionItemsSlottedContent", 2);
253
+ vividElement.attr({ mode: "boolean" })
254
+ ], TextArea.prototype, "spellcheck");
412
255
  __decorateClass([
413
256
  vividElement.observable
414
- ], exports.TextField.prototype, "leadingActionItemsSlottedContent", 2);
257
+ ], TextArea.prototype, "defaultSlottedNodes");
415
258
  __decorateClass([
416
- vividElement.observable
417
- ], exports.TextField.prototype, "_mirroredHelperText", 2);
418
- exports.TextField = __decorateClass([
419
- formElements.errorText,
420
- formElements.formElements
421
- ], exports.TextField);
422
- applyMixinsWithObservables.applyMixinsWithObservables(
423
- exports.TextField,
424
- formElements.FormElementCharCount,
425
- formElements.FormElementHelperText,
426
- formElements.FormElementSuccessText
427
- );
428
-
429
- class RenderInLightDomBehaviour {
430
- constructor(templateBinding, isTemplateBindingVolatile) {
431
- this.source = null;
432
- this.templateBindingObserver = vividElement.Observable.binding(
433
- templateBinding,
434
- this,
435
- isTemplateBindingVolatile
436
- );
437
- }
438
- bind(source, context) {
439
- this.source = source;
440
- this.context = context;
441
- if (!this.insertionPoint) {
442
- this.insertionPoint = document.createComment("");
443
- source.appendChild(this.insertionPoint);
444
- }
445
- this.handleChange();
446
- }
447
- unbind() {
448
- this.source = null;
449
- this.view.unbind();
450
- this.templateBindingObserver.disconnect();
451
- }
452
- /**
453
- * Handles change of the template itself.
454
- */
455
- handleChange() {
456
- this.instantiateTemplate(
457
- this.templateBindingObserver.observe(this.source, this.context)
458
- );
459
- }
460
- instantiateTemplate(template) {
461
- if (this.view) {
462
- this.view.dispose();
463
- }
464
- this.view = template.create();
465
- this.view.bind(this.source, this.context);
466
- this.view.insertBefore(this.insertionPoint);
467
- }
468
- }
469
- class RenderInLightDomDirective extends vividElement.HTMLDirective {
470
- constructor(templateBinding) {
471
- super();
472
- this.templateBinding = templateBinding;
473
- this.createPlaceholder = vividElement.DOM.createBlockPlaceholder;
474
- this.isTemplateBindingVolatile = vividElement.Observable.isVolatileBinding(templateBinding);
475
- }
476
- createBehavior() {
477
- return new RenderInLightDomBehaviour(
478
- this.templateBinding,
479
- this.isTemplateBindingVolatile
480
- );
481
- }
482
- }
483
- function renderInLightDOM(templateOrTemplateBinding) {
484
- const templateBinding = typeof templateOrTemplateBinding === "function" ? templateOrTemplateBinding : () => templateOrTemplateBinding;
485
- return new RenderInLightDomDirective(templateBinding);
486
- }
259
+ vividElement.attr
260
+ ], TextArea.prototype, "wrap");
487
261
 
488
- const getControlId = (id) => `vvd-text-field-control-${id}`;
489
- const getHelperTextId = (id) => `vvd-text-field-helper-text-${id}`;
490
- const getStateClasses = ({
262
+ const getClasses = ({
263
+ value,
491
264
  errorValidationMessage,
492
265
  disabled,
493
- value,
494
- readOnly,
495
266
  placeholder,
496
- appearance,
497
- shape,
498
- label,
499
- successText,
500
- actionItemsSlottedContent,
501
- leadingActionItemsSlottedContent,
502
- icon,
503
- scale
267
+ readOnly,
268
+ successText
504
269
  }) => classNames.classNames(
505
- ["error", Boolean(errorValidationMessage)],
506
- ["disabled", disabled],
507
- ["has-value", Boolean(value)],
270
+ "base",
508
271
  ["readonly", readOnly],
509
272
  ["placeholder", Boolean(placeholder)],
510
- [`appearance-${appearance}`, Boolean(appearance)],
511
- [`shape-${shape}`, Boolean(shape)],
512
- ["no-label", !label],
513
- ["has-icon", !!icon],
514
- ["success", Boolean(successText)],
515
- ["action-items", !!actionItemsSlottedContent?.length],
516
- ["leading-action-items", !!leadingActionItemsSlottedContent?.length],
517
- ["no-leading", !(leadingActionItemsSlottedContent?.length || icon)],
518
- [`size-${scale}`, Boolean(scale)]
273
+ ["disabled", disabled],
274
+ ["error", Boolean(errorValidationMessage)],
275
+ ["has-value", Boolean(value)],
276
+ ["success", !!successText]
519
277
  );
520
- function renderCharCount() {
521
- return vividElement.html`
522
- <span class="char-count"
523
- >${(x) => x.value ? x.value.length : 0} / ${(x) => x.maxlength}</span
524
- >
525
- `;
278
+ function renderLabel() {
279
+ return vividElement.html` <label for="control" class="label">
280
+ ${(x) => x.label}
281
+ </label>`;
526
282
  }
527
- const TextfieldTemplate = (context) => {
528
- const affixIconTemplate = affix.affixIconTemplateFactory(context);
283
+ const TextAreaTemplate = (context) => {
529
284
  return vividElement.html`
530
- <div class="base ${getStateClasses}">
531
- ${when.when((x) => x.charCount && x.maxlength, renderCharCount())}
532
- <slot class="label" name="_label"></slot>
533
- ${renderInLightDOM(vividElement.html`
534
- ${when.when(
535
- (x) => x.label,
536
- vividElement.html`
537
- <label slot="_label" for="${(x) => getControlId(x._uniqueId)}">
538
- ${(x) => x.label}
539
- </label>
540
- `
541
- )}
542
- `)}
543
- <div class="fieldset">
544
- <div class="leading-items-wrapper">
545
- <slot
546
- name="leading-action-items"
547
- ${slotted.slotted("leadingActionItemsSlottedContent")}
548
- ></slot>
549
- ${(x) => affixIconTemplate(x.icon)}
550
- </div>
551
- <div class="wrapper">
552
- <slot class="control" name="_control"></slot>
553
- ${renderInLightDOM(
554
- vividElement.html`<input
555
- slot="_control"
556
- id="${(x) => getControlId(x._uniqueId)}"
557
- class="_vvd-3-text-field-safari-workaround"
558
- @input="${(x) => x.handleTextInput()}"
559
- @change="${(x) => x.handleChange()}"
560
- @blur="${(x) => {
561
- x.$emit("blur", void 0, { bubbles: false });
562
- }}"
563
- @focus="${(x) => {
564
- x.$emit("focus", void 0, { bubbles: false });
565
- }}"
566
- ?autofocus="${(x) => x.autofocus}"
567
- ?disabled="${(x) => x.disabled}"
568
- ?readonly="${(x) => x.readOnly}"
569
- ?required="${(x) => x.required}"
570
- ?spellcheck="${(x) => x.spellcheck}"
571
- list="${(x) => x.list}"
572
- maxlength="${(x) => x.maxlength}"
573
- minlength="${(x) => x.minlength}"
574
- pattern="${(x) => x.pattern}"
575
- placeholder="${(x) => x.placeholder}"
576
- size="${(x) => x.size}"
577
- autocomplete="${(x) => x.autoComplete}"
578
- type="${(x) => x.type}"
579
- inputmode="${(x) => x.inputMode}"
580
- aria-describedby="${(x) => x._mirroredHelperText ? getHelperTextId(x._uniqueId) : null}"
581
- value="${(x) => x.initialValue}"
582
- ${delegatesAria.delegateAria()}
583
- ${ref.ref("control")}
584
- />`
285
+ <div class="${getClasses}">
286
+ ${when.when(
287
+ (x) => x.charCount && x.maxlength,
288
+ (x) => x._getCharCountTemplate(context)
585
289
  )}
586
- </div>
587
- <div class="action-items-wrapper">
588
- <slot
589
- name="action-items"
590
- ${slotted.slotted("actionItemsSlottedContent")}
591
- ></slot>
592
- </div>
593
- </div>
594
- ${formElements.getFeedbackTemplate(context)}
595
- </div>
596
- <slot name="_mirrored-helper-text"></slot>
597
- ${renderInLightDOM(vividElement.html`
598
- <div
599
- id="${(x) => getHelperTextId(x._uniqueId)}"
600
- slot="_mirrored-helper-text"
290
+ ${when.when((x) => x.label, renderLabel())}
291
+ <textarea
292
+ class="control"
293
+ id="control"
294
+ ?autofocus="${(x) => x.autofocus}"
295
+ placeholder="${(x) => x.placeholder ? x.placeholder : null}"
296
+ name="${(x) => x.name ? x.name : null}"
297
+ list="${(x) => x.list}"
298
+ minlength="${(x) => x.minlength ? x.minlength : null}"
299
+ maxlength="${(x) => x.maxlength ? x.maxlength : null}"
300
+ rows="${(x) => x.rows ? x.rows : null}"
301
+ cols="${(x) => x.cols ? x.cols : null}"
302
+ wrap="${(x) => x.wrap ? x.wrap : null}"
303
+ ?readonly="${(x) => x.readOnly}"
304
+ ?disabled="${(x) => x.disabled}"
305
+ ?required="${(x) => x.required}"
306
+ ?spellcheck="${(x) => x.spellcheck}"
307
+ aria-describedby="${(x) => x._feedbackDescribedBy} ${(x) => x.charCount && x.maxlength ? x._charCountDescribedBy : null}"
308
+ ${delegatesAria.delegateAria()}
309
+ @input="${(x) => x.handleTextInput()}"
310
+ @change="${(x) => x.handleChange()}"
311
+ ${ref.ref("control")}
601
312
  >
602
- ${(x) => x._mirroredHelperText}
603
- </div>
604
- `)}
313
+ </textarea>
314
+ ${(x) => x._getFeedbackTemplate(context)}
315
+ </div>
605
316
  `;
606
317
  };
607
318
 
608
- const textFieldDefinition = vividElement.defineVividComponent(
609
- "text-field",
610
- exports.TextField,
611
- TextfieldTemplate,
612
- [definition.iconDefinition],
319
+ const textAreaDefinition = vividElement.defineVividComponent(
320
+ "text-area",
321
+ TextArea,
322
+ TextAreaTemplate,
323
+ [mixins.feedbackMessageDefinition, definition.visuallyHiddenDefinition],
613
324
  {
614
- styles: textField.styles,
325
+ styles,
615
326
  shadowOptions: {
616
327
  delegatesFocus: true
617
328
  }
618
329
  }
619
330
  );
620
- const registerTextField = vividElement.createRegisterFunction(textFieldDefinition);
331
+ const registerTextArea = vividElement.createRegisterFunction(textAreaDefinition);
621
332
 
622
- exports.registerTextField = registerTextField;
623
- exports.textFieldDefinition = textFieldDefinition;
333
+ exports.TextArea = TextArea;
334
+ exports.registerTextArea = registerTextArea;
335
+ exports.textAreaDefinition = textAreaDefinition;