@rotki/ui-library 2.27.0 → 3.0.0-beta.1

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 (391) hide show
  1. package/README.md +36 -15
  2. package/dist/components/accordions/accordion/RuiAccordion.js.map +1 -1
  3. package/dist/components/accordions/accordion/RuiAccordion.vue.d.ts +0 -4
  4. package/dist/components/accordions/accordion/RuiAccordion.vue_vue_type_script_setup_true_lang.js +6 -7
  5. package/dist/components/accordions/accordion/RuiAccordion.vue_vue_type_script_setup_true_lang.js.map +1 -1
  6. package/dist/components/accordions/accordions/RuiAccordions.js.map +1 -1
  7. package/dist/components/accordions/accordions/RuiAccordions.vue_vue_type_script_setup_true_lang.js +15 -2
  8. package/dist/components/accordions/accordions/RuiAccordions.vue_vue_type_script_setup_true_lang.js.map +1 -1
  9. package/dist/components/alerts/RuiAlert.js.map +1 -1
  10. package/dist/components/alerts/RuiAlert.vue_vue_type_script_setup_true_lang.js +43 -212
  11. package/dist/components/alerts/RuiAlert.vue_vue_type_script_setup_true_lang.js.map +1 -1
  12. package/dist/components/avatars/RuiAvatar.js.map +1 -1
  13. package/dist/components/avatars/RuiAvatar.vue_vue_type_script_setup_true_lang.js +21 -31
  14. package/dist/components/avatars/RuiAvatar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  15. package/dist/components/avatars/RuiAvatarGroup.js.map +1 -1
  16. package/dist/components/avatars/RuiAvatarGroup.vue.d.ts +6 -0
  17. package/dist/components/avatars/RuiAvatarGroup.vue_vue_type_script_setup_true_lang.js +16 -12
  18. package/dist/components/avatars/RuiAvatarGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  19. package/dist/components/avatars/avatar-props.d.ts +16 -3
  20. package/dist/components/avatars/avatar-props.js +42 -5
  21. package/dist/components/avatars/avatar-props.js.map +1 -1
  22. package/dist/components/buttons/button/RuiButton.js.map +1 -1
  23. package/dist/components/buttons/button/RuiButton.vue.d.ts +0 -1
  24. package/dist/components/buttons/button/RuiButton.vue_vue_type_script_setup_true_lang.js +29 -16
  25. package/dist/components/buttons/button/RuiButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  26. package/dist/components/buttons/button/button-props.d.ts +0 -2
  27. package/dist/components/buttons/button/button-props.js +5 -5
  28. package/dist/components/buttons/button/button-props.js.map +1 -1
  29. package/dist/components/buttons/button/button-styles.d.ts +4 -1
  30. package/dist/components/buttons/button/button-styles.js +127 -54
  31. package/dist/components/buttons/button/button-styles.js.map +1 -1
  32. package/dist/components/buttons/button-group/RuiButtonGroup.js.map +1 -1
  33. package/dist/components/buttons/button-group/RuiButtonGroup.vue.d.ts +8 -2
  34. package/dist/components/buttons/button-group/RuiButtonGroup.vue_vue_type_script_setup_true_lang.js +65 -96
  35. package/dist/components/buttons/button-group/RuiButtonGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  36. package/dist/components/buttons/button-group/button-group-context.d.ts +28 -0
  37. package/dist/components/buttons/button-group/button-group-context.js +22 -0
  38. package/dist/components/buttons/button-group/button-group-context.js.map +1 -0
  39. package/dist/components/calendar/RuiCalendar.js.map +1 -1
  40. package/dist/components/calendar/RuiCalendar.vue_vue_type_script_setup_true_lang.js +5 -2
  41. package/dist/components/calendar/RuiCalendar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  42. package/dist/components/calendar/RuiCalendarGrid.js.map +1 -1
  43. package/dist/components/calendar/RuiCalendarGrid.vue_vue_type_script_setup_true_lang.js +11 -7
  44. package/dist/components/calendar/RuiCalendarGrid.vue_vue_type_script_setup_true_lang.js.map +1 -1
  45. package/dist/components/calendar/RuiCalendarHeader.js.map +1 -1
  46. package/dist/components/calendar/RuiCalendarHeader.vue_vue_type_script_setup_true_lang.js +20 -21
  47. package/dist/components/calendar/RuiCalendarHeader.vue_vue_type_script_setup_true_lang.js.map +1 -1
  48. package/dist/components/calendar/RuiCalendarMenu.js.map +1 -1
  49. package/dist/components/calendar/RuiCalendarMenu.vue_vue_type_script_setup_true_lang.js +16 -20
  50. package/dist/components/calendar/RuiCalendarMenu.vue_vue_type_script_setup_true_lang.js.map +1 -1
  51. package/dist/components/cards/RuiCard.js.map +1 -1
  52. package/dist/components/cards/RuiCard.vue.d.ts +0 -3
  53. package/dist/components/cards/RuiCard.vue_vue_type_script_setup_true_lang.js +31 -19
  54. package/dist/components/cards/RuiCard.vue_vue_type_script_setup_true_lang.js.map +1 -1
  55. package/dist/components/cards/RuiCardHeader.js.map +1 -1
  56. package/dist/components/cards/RuiCardHeader.vue_vue_type_script_setup_true_lang.js +13 -25
  57. package/dist/components/cards/RuiCardHeader.vue_vue_type_script_setup_true_lang.js.map +1 -1
  58. package/dist/components/chips/RuiChip.js.map +1 -1
  59. package/dist/components/chips/RuiChip.vue.d.ts +5 -2
  60. package/dist/components/chips/RuiChip.vue_vue_type_script_setup_true_lang.js +127 -78
  61. package/dist/components/chips/RuiChip.vue_vue_type_script_setup_true_lang.js.map +1 -1
  62. package/dist/components/chips/chip-props.d.ts +2 -0
  63. package/dist/components/chips/chip-props.js +5 -3
  64. package/dist/components/chips/chip-props.js.map +1 -1
  65. package/dist/components/color-picker/RuiColorBoard.js.map +1 -1
  66. package/dist/components/color-picker/RuiColorBoard.vue_vue_type_script_setup_true_lang.js +4 -4
  67. package/dist/components/color-picker/RuiColorBoard.vue_vue_type_script_setup_true_lang.js.map +1 -1
  68. package/dist/components/color-picker/RuiColorHue.js.map +1 -1
  69. package/dist/components/color-picker/RuiColorHue.vue_vue_type_script_setup_true_lang.js +1 -1
  70. package/dist/components/color-picker/RuiColorHue.vue_vue_type_script_setup_true_lang.js.map +1 -1
  71. package/dist/components/color-picker/RuiColorInput.js.map +1 -1
  72. package/dist/components/color-picker/RuiColorInput.vue_vue_type_script_setup_true_lang.js +38 -27
  73. package/dist/components/color-picker/RuiColorInput.vue_vue_type_script_setup_true_lang.js.map +1 -1
  74. package/dist/components/color-picker/RuiColorPicker.js.map +1 -1
  75. package/dist/components/color-picker/RuiColorPicker.vue_vue_type_script_setup_true_lang.js +1 -1
  76. package/dist/components/color-picker/RuiColorPicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  77. package/dist/components/date-time-picker/RuiDateTimePicker.js.map +1 -1
  78. package/dist/components/date-time-picker/RuiDateTimePicker.vue.d.ts +3 -2
  79. package/dist/components/date-time-picker/RuiDateTimePicker.vue_vue_type_script_setup_true_lang.js +48 -47
  80. package/dist/components/date-time-picker/RuiDateTimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  81. package/dist/components/date-time-picker/RuiDateTimePickerMenu.js.map +1 -1
  82. package/dist/components/date-time-picker/RuiDateTimePickerMenu.vue_vue_type_script_setup_true_lang.js +2 -2
  83. package/dist/components/date-time-picker/RuiDateTimePickerMenu.vue_vue_type_script_setup_true_lang.js.map +1 -1
  84. package/dist/components/date-time-picker/RuiTimezoneSelect.js.map +1 -1
  85. package/dist/components/date-time-picker/RuiTimezoneSelect.vue.d.ts +4 -3
  86. package/dist/components/date-time-picker/RuiTimezoneSelect.vue_vue_type_script_setup_true_lang.js +3 -3
  87. package/dist/components/date-time-picker/RuiTimezoneSelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
  88. package/dist/components/date-time-picker/date-time-picker-styles.d.ts +128 -219
  89. package/dist/components/date-time-picker/date-time-picker-styles.js +1 -2
  90. package/dist/components/date-time-picker/date-time-picker-styles.js.map +1 -1
  91. package/dist/components/forms/auto-complete/RuiAutoComplete.js.map +1 -1
  92. package/dist/components/forms/auto-complete/RuiAutoComplete.vue.d.ts +1 -68
  93. package/dist/components/forms/auto-complete/RuiAutoComplete.vue_vue_type_script_setup_true_lang.js +184 -179
  94. package/dist/components/forms/auto-complete/RuiAutoComplete.vue_vue_type_script_setup_true_lang.js.map +1 -1
  95. package/dist/components/forms/auto-complete/RuiAutoCompleteOption.js.map +1 -1
  96. package/dist/components/forms/auto-complete/RuiAutoCompleteOption.vue_vue_type_script_setup_true_lang.js +1 -0
  97. package/dist/components/forms/auto-complete/RuiAutoCompleteOption.vue_vue_type_script_setup_true_lang.js.map +1 -1
  98. package/dist/components/forms/auto-complete/RuiAutoCompleteOptionList.js.map +1 -1
  99. package/dist/components/forms/auto-complete/RuiAutoCompleteOptionList.vue.d.ts +2 -0
  100. package/dist/components/forms/auto-complete/RuiAutoCompleteOptionList.vue_vue_type_script_setup_true_lang.js +8 -3
  101. package/dist/components/forms/auto-complete/RuiAutoCompleteOptionList.vue_vue_type_script_setup_true_lang.js.map +1 -1
  102. package/dist/components/forms/auto-complete/RuiAutoCompleteSelection.js.map +1 -1
  103. package/dist/components/forms/auto-complete/RuiAutoCompleteSelection.vue.d.ts +4 -0
  104. package/dist/components/forms/auto-complete/RuiAutoCompleteSelection.vue_vue_type_script_setup_true_lang.js +24 -10
  105. package/dist/components/forms/auto-complete/RuiAutoCompleteSelection.vue_vue_type_script_setup_true_lang.js.map +1 -1
  106. package/dist/components/forms/auto-complete/auto-complete-props.d.ts +66 -0
  107. package/dist/components/forms/auto-complete/auto-complete-styles.d.ts +128 -218
  108. package/dist/components/forms/auto-complete/auto-complete-styles.js +4 -2
  109. package/dist/components/forms/auto-complete/auto-complete-styles.js.map +1 -1
  110. package/dist/components/forms/category-picker/RuiCategoryPicker.js.map +1 -1
  111. package/dist/components/forms/category-picker/RuiCategoryPicker.vue.d.ts +3 -6
  112. package/dist/components/forms/category-picker/RuiCategoryPicker.vue_vue_type_script_setup_true_lang.js +105 -105
  113. package/dist/components/forms/category-picker/RuiCategoryPicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  114. package/dist/components/forms/category-picker/category-picker-styles.d.ts +83 -232
  115. package/dist/components/forms/category-picker/category-picker-styles.js +20 -26
  116. package/dist/components/forms/category-picker/category-picker-styles.js.map +1 -1
  117. package/dist/components/forms/check-control-styles.d.ts +61 -2
  118. package/dist/components/forms/check-control-styles.js +53 -46
  119. package/dist/components/forms/check-control-styles.js.map +1 -1
  120. package/dist/components/forms/checkbox/RuiCheckbox.js.map +1 -1
  121. package/dist/components/forms/checkbox/RuiCheckbox.vue_vue_type_script_setup_true_lang.js +31 -18
  122. package/dist/components/forms/checkbox/RuiCheckbox.vue_vue_type_script_setup_true_lang.js.map +1 -1
  123. package/dist/components/forms/checkbox/checkbox-group/RuiCheckboxGroup.js.map +1 -1
  124. package/dist/components/forms/checkbox/checkbox-group/RuiCheckboxGroup.vue_vue_type_script_setup_true_lang.js +3 -3
  125. package/dist/components/forms/checkbox/checkbox-group/RuiCheckboxGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  126. package/dist/components/forms/field-defaults/RuiFieldDefaults.js +7 -0
  127. package/dist/components/forms/field-defaults/RuiFieldDefaults.js.map +1 -0
  128. package/dist/components/forms/field-defaults/RuiFieldDefaults.vue.d.ts +16 -0
  129. package/dist/components/forms/field-defaults/RuiFieldDefaults.vue_vue_type_script_setup_true_lang.js +18 -0
  130. package/dist/components/forms/field-defaults/RuiFieldDefaults.vue_vue_type_script_setup_true_lang.js.map +1 -0
  131. package/dist/components/forms/field-label/RuiFieldLabel.js +7 -0
  132. package/dist/components/forms/field-label/RuiFieldLabel.js.map +1 -0
  133. package/dist/components/forms/field-label/RuiFieldLabel.vue.d.ts +17 -0
  134. package/dist/components/forms/field-label/RuiFieldLabel.vue_vue_type_script_setup_true_lang.js +57 -0
  135. package/dist/components/forms/field-label/RuiFieldLabel.vue_vue_type_script_setup_true_lang.js.map +1 -0
  136. package/dist/components/forms/file-upload/RuiFileUpload.js.map +1 -1
  137. package/dist/components/forms/file-upload/RuiFileUpload.vue.d.ts +1 -1
  138. package/dist/components/forms/file-upload/RuiFileUpload.vue_vue_type_script_setup_true_lang.js +39 -20
  139. package/dist/components/forms/file-upload/RuiFileUpload.vue_vue_type_script_setup_true_lang.js.map +1 -1
  140. package/dist/components/forms/radio-button/radio/RuiRadio.js.map +1 -1
  141. package/dist/components/forms/radio-button/radio/RuiRadio.vue_vue_type_script_setup_true_lang.js +13 -14
  142. package/dist/components/forms/radio-button/radio/RuiRadio.vue_vue_type_script_setup_true_lang.js.map +1 -1
  143. package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.js.map +1 -1
  144. package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.vue_vue_type_script_setup_true_lang.js +3 -3
  145. package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  146. package/dist/components/forms/revealable-text-field/RuiRevealableTextField.js.map +1 -1
  147. package/dist/components/forms/revealable-text-field/RuiRevealableTextField.vue_vue_type_script_setup_true_lang.js +6 -6
  148. package/dist/components/forms/revealable-text-field/RuiRevealableTextField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  149. package/dist/components/forms/select/RuiMenuSelect.js.map +1 -1
  150. package/dist/components/forms/select/RuiMenuSelect.vue.d.ts +3 -12
  151. package/dist/components/forms/select/RuiMenuSelect.vue_vue_type_script_setup_true_lang.js +50 -45
  152. package/dist/components/forms/select/RuiMenuSelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
  153. package/dist/components/forms/select/RuiSimpleSelect.js.map +1 -1
  154. package/dist/components/forms/select/RuiSimpleSelect.vue.d.ts +0 -1
  155. package/dist/components/forms/select/RuiSimpleSelect.vue_vue_type_script_setup_true_lang.js +13 -20
  156. package/dist/components/forms/select/RuiSimpleSelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
  157. package/dist/components/forms/select/menu-select-styles.d.ts +99 -221
  158. package/dist/components/forms/select/menu-select-styles.js +1 -4
  159. package/dist/components/forms/select/menu-select-styles.js.map +1 -1
  160. package/dist/components/forms/slider/RuiSlider.js.map +1 -1
  161. package/dist/components/forms/slider/RuiSlider.vue.d.ts +0 -4
  162. package/dist/components/forms/slider/RuiSlider.vue_vue_type_script_setup_true_lang.js +113 -90
  163. package/dist/components/forms/slider/RuiSlider.vue_vue_type_script_setup_true_lang.js.map +1 -1
  164. package/dist/components/forms/slider/slider-styles.d.ts +40 -40
  165. package/dist/components/forms/slider/slider-styles.js +67 -109
  166. package/dist/components/forms/slider/slider-styles.js.map +1 -1
  167. package/dist/components/forms/switch/RuiSwitch.js.map +1 -1
  168. package/dist/components/forms/switch/RuiSwitch.vue_vue_type_script_setup_true_lang.js +32 -44
  169. package/dist/components/forms/switch/RuiSwitch.vue_vue_type_script_setup_true_lang.js.map +1 -1
  170. package/dist/components/forms/text-area/RuiTextArea.js.map +1 -1
  171. package/dist/components/forms/text-area/RuiTextArea.vue.d.ts +3 -2
  172. package/dist/components/forms/text-area/RuiTextArea.vue_vue_type_script_setup_true_lang.js +120 -99
  173. package/dist/components/forms/text-area/RuiTextArea.vue_vue_type_script_setup_true_lang.js.map +1 -1
  174. package/dist/components/forms/text-area/text-area-styles.d.ts +41 -115
  175. package/dist/components/forms/text-area/text-area-styles.js +34 -194
  176. package/dist/components/forms/text-area/text-area-styles.js.map +1 -1
  177. package/dist/components/forms/text-field/RuiTextField.js.map +1 -1
  178. package/dist/components/forms/text-field/RuiTextField.vue.d.ts +3 -2
  179. package/dist/components/forms/text-field/RuiTextField.vue_vue_type_script_setup_true_lang.js +93 -90
  180. package/dist/components/forms/text-field/RuiTextField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  181. package/dist/components/forms/text-field/text-field-styles.d.ts +37 -145
  182. package/dist/components/forms/text-field/text-field-styles.js +24 -267
  183. package/dist/components/forms/text-field/text-field-styles.js.map +1 -1
  184. package/dist/components/forms/text-input-styles.d.ts +98 -229
  185. package/dist/components/forms/text-input-styles.js +63 -193
  186. package/dist/components/forms/text-input-styles.js.map +1 -1
  187. package/dist/components/helpers/RuiFormTextDetail.js.map +1 -1
  188. package/dist/components/helpers/RuiFormTextDetail.vue_vue_type_script_setup_true_lang.js +2 -2
  189. package/dist/components/helpers/RuiFormTextDetail.vue_vue_type_script_setup_true_lang.js.map +1 -1
  190. package/dist/components/icons/RuiIcon.js.map +1 -1
  191. package/dist/components/icons/RuiIcon.vue_vue_type_script_setup_true_lang.js +6 -3
  192. package/dist/components/icons/RuiIcon.vue_vue_type_script_setup_true_lang.js.map +1 -1
  193. package/dist/components/index.d.ts +5 -3
  194. package/dist/components/index.js +4 -3
  195. package/dist/components/loaders/RuiSkeletonBase.js.map +1 -1
  196. package/dist/components/loaders/RuiSkeletonBase.vue_vue_type_script_setup_true_lang.js +6 -5
  197. package/dist/components/loaders/RuiSkeletonBase.vue_vue_type_script_setup_true_lang.js.map +1 -1
  198. package/dist/components/loaders/RuiSkeletonLoader.js.map +1 -1
  199. package/dist/components/loaders/RuiSkeletonLoader.vue_vue_type_script_setup_true_lang.js +8 -8
  200. package/dist/components/loaders/RuiSkeletonLoader.vue_vue_type_script_setup_true_lang.js.map +1 -1
  201. package/dist/components/logos/RuiLogo.js.map +1 -1
  202. package/dist/components/logos/RuiLogo.vue_vue_type_script_setup_true_lang.js +1 -1
  203. package/dist/components/logos/RuiLogo.vue_vue_type_script_setup_true_lang.js.map +1 -1
  204. package/dist/components/overlays/badge/RuiBadge.js.map +1 -1
  205. package/dist/components/overlays/badge/RuiBadge.vue_vue_type_script_setup_true_lang.js +75 -47
  206. package/dist/components/overlays/badge/RuiBadge.vue_vue_type_script_setup_true_lang.js.map +1 -1
  207. package/dist/components/overlays/dialog/RuiDialog.js.map +1 -1
  208. package/dist/components/overlays/dialog/RuiDialog.vue.d.ts +3 -2
  209. package/dist/components/overlays/dialog/RuiDialog.vue_vue_type_script_setup_true_lang.js +16 -12
  210. package/dist/components/overlays/dialog/RuiDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  211. package/dist/components/overlays/menu/RuiMenu.js.map +1 -1
  212. package/dist/components/overlays/menu/RuiMenu.vue.d.ts +9 -7
  213. package/dist/components/overlays/menu/RuiMenu.vue_vue_type_script_setup_true_lang.js +16 -12
  214. package/dist/components/overlays/menu/RuiMenu.vue_vue_type_script_setup_true_lang.js.map +1 -1
  215. package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.js.map +1 -1
  216. package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.vue.d.ts +6 -2
  217. package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.vue_vue_type_script_setup_true_lang.js +40 -16
  218. package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.vue_vue_type_script_setup_true_lang.js.map +1 -1
  219. package/dist/components/overlays/notification/RuiNotification.js.map +1 -1
  220. package/dist/components/overlays/notification/RuiNotification.vue_vue_type_script_setup_true_lang.js +4 -4
  221. package/dist/components/overlays/notification/RuiNotification.vue_vue_type_script_setup_true_lang.js.map +1 -1
  222. package/dist/components/overlays/tooltip/RuiTooltip.js.map +1 -1
  223. package/dist/components/overlays/tooltip/RuiTooltip.vue.d.ts +0 -5
  224. package/dist/components/overlays/tooltip/RuiTooltip.vue_vue_type_script_setup_true_lang.js +16 -10
  225. package/dist/components/overlays/tooltip/RuiTooltip.vue_vue_type_script_setup_true_lang.js.map +1 -1
  226. package/dist/components/overlays/tooltip/tooltip-styles.d.ts +5 -12
  227. package/dist/components/overlays/tooltip/tooltip-styles.js +11 -18
  228. package/dist/components/overlays/tooltip/tooltip-styles.js.map +1 -1
  229. package/dist/components/progress/RuiProgress.js.map +1 -1
  230. package/dist/components/progress/RuiProgress.vue.d.ts +4 -0
  231. package/dist/components/progress/RuiProgress.vue_vue_type_script_setup_true_lang.js +72 -46
  232. package/dist/components/progress/RuiProgress.vue_vue_type_script_setup_true_lang.js.map +1 -1
  233. package/dist/components/steppers/RuiFooterStepper.js.map +1 -1
  234. package/dist/components/steppers/RuiFooterStepper.vue_vue_type_script_setup_true_lang.js +27 -28
  235. package/dist/components/steppers/RuiFooterStepper.vue_vue_type_script_setup_true_lang.js.map +1 -1
  236. package/dist/components/steppers/RuiStepper.js.map +1 -1
  237. package/dist/components/steppers/RuiStepper.vue.d.ts +0 -4
  238. package/dist/components/steppers/RuiStepper.vue_vue_type_script_setup_true_lang.js +25 -23
  239. package/dist/components/steppers/RuiStepper.vue_vue_type_script_setup_true_lang.js.map +1 -1
  240. package/dist/components/steppers/RuiStepperIcon.js.map +1 -1
  241. package/dist/components/steppers/RuiStepperIcon.vue.d.ts +2 -0
  242. package/dist/components/steppers/RuiStepperIcon.vue_vue_type_script_setup_true_lang.js +47 -47
  243. package/dist/components/steppers/RuiStepperIcon.vue_vue_type_script_setup_true_lang.js.map +1 -1
  244. package/dist/components/tables/RuiDataTable.js.map +1 -1
  245. package/dist/components/tables/RuiDataTable.vue.d.ts +3 -6
  246. package/dist/components/tables/RuiDataTable.vue_vue_type_script_setup_true_lang.js +65 -47
  247. package/dist/components/tables/RuiDataTable.vue_vue_type_script_setup_true_lang.js.map +1 -1
  248. package/dist/components/tables/RuiExpandButton.js.map +1 -1
  249. package/dist/components/tables/RuiExpandButton.vue_vue_type_script_setup_true_lang.js +1 -0
  250. package/dist/components/tables/RuiExpandButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  251. package/dist/components/tables/RuiTable.js.map +1 -1
  252. package/dist/components/tables/RuiTable.vue_vue_type_script_setup_true_lang.js +8 -5
  253. package/dist/components/tables/RuiTable.vue_vue_type_script_setup_true_lang.js.map +1 -1
  254. package/dist/components/tables/RuiTableEmptyState.js.map +1 -1
  255. package/dist/components/tables/RuiTableEmptyState.vue_vue_type_script_setup_true_lang.js +1 -1
  256. package/dist/components/tables/RuiTableEmptyState.vue_vue_type_script_setup_true_lang.js.map +1 -1
  257. package/dist/components/tables/RuiTableHead.js.map +1 -1
  258. package/dist/components/tables/RuiTableHead.vue_vue_type_script_setup_true_lang.js +88 -66
  259. package/dist/components/tables/RuiTableHead.vue_vue_type_script_setup_true_lang.js.map +1 -1
  260. package/dist/components/tables/RuiTablePagination.js.map +1 -1
  261. package/dist/components/tables/RuiTablePagination.vue_vue_type_script_setup_true_lang.js +8 -11
  262. package/dist/components/tables/RuiTablePagination.vue_vue_type_script_setup_true_lang.js.map +1 -1
  263. package/dist/components/tables/data-table/RuiDataTableExpandedRow.js.map +1 -1
  264. package/dist/components/tables/data-table/RuiDataTableExpandedRow.vue_vue_type_script_setup_true_lang.js +3 -3
  265. package/dist/components/tables/data-table/RuiDataTableExpandedRow.vue_vue_type_script_setup_true_lang.js.map +1 -1
  266. package/dist/components/tables/data-table/RuiDataTableGroupRow.js.map +1 -1
  267. package/dist/components/tables/data-table/RuiDataTableGroupRow.vue_vue_type_script_setup_true_lang.js +7 -3
  268. package/dist/components/tables/data-table/RuiDataTableGroupRow.vue_vue_type_script_setup_true_lang.js.map +1 -1
  269. package/dist/components/tables/data-table/RuiDataTableMobileSort.js.map +1 -1
  270. package/dist/components/tables/data-table/RuiDataTableMobileSort.vue_vue_type_script_setup_true_lang.js +1 -1
  271. package/dist/components/tables/data-table/RuiDataTableMobileSort.vue_vue_type_script_setup_true_lang.js.map +1 -1
  272. package/dist/components/tables/data-table/RuiDataTableRow.js.map +1 -1
  273. package/dist/components/tables/data-table/RuiDataTableRow.vue_vue_type_script_setup_true_lang.js +58 -19
  274. package/dist/components/tables/data-table/RuiDataTableRow.vue_vue_type_script_setup_true_lang.js.map +1 -1
  275. package/dist/components/tables/data-table-styles.d.ts +24 -0
  276. package/dist/components/tables/data-table-styles.js +35 -20
  277. package/dist/components/tables/data-table-styles.js.map +1 -1
  278. package/dist/components/tables/table_no_data_placeholder.js +1 -1
  279. package/dist/components/tables/table_no_data_placeholder.js.map +1 -1
  280. package/dist/components/tables/table_no_data_placeholder_dark.js +1 -1
  281. package/dist/components/tables/table_no_data_placeholder_dark.js.map +1 -1
  282. package/dist/components/tabs/tab/RuiTab.js.map +1 -1
  283. package/dist/components/tabs/tab/RuiTab.vue.d.ts +2 -5
  284. package/dist/components/tabs/tab/RuiTab.vue_vue_type_script_setup_true_lang.js +94 -68
  285. package/dist/components/tabs/tab/RuiTab.vue_vue_type_script_setup_true_lang.js.map +1 -1
  286. package/dist/components/tabs/tab-item/RuiTabItem.js.map +1 -1
  287. package/dist/components/tabs/tab-item/RuiTabItem.vue.d.ts +0 -1
  288. package/dist/components/tabs/tab-item/RuiTabItem.vue_vue_type_script_setup_true_lang.js +5 -11
  289. package/dist/components/tabs/tab-item/RuiTabItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  290. package/dist/components/tabs/tab-items/RuiTabItems.js.map +1 -1
  291. package/dist/components/tabs/tab-items/RuiTabItems.vue_vue_type_script_setup_true_lang.js +3 -8
  292. package/dist/components/tabs/tab-items/RuiTabItems.vue_vue_type_script_setup_true_lang.js.map +1 -1
  293. package/dist/components/tabs/tab-props.d.ts +7 -1
  294. package/dist/components/tabs/tab-props.js +7 -1
  295. package/dist/components/tabs/tab-props.js.map +1 -1
  296. package/dist/components/tabs/tabs/RuiTabs.js.map +1 -1
  297. package/dist/components/tabs/tabs/RuiTabs.vue.d.ts +2 -1
  298. package/dist/components/tabs/tabs/RuiTabs.vue_vue_type_script_setup_true_lang.js +178 -32
  299. package/dist/components/tabs/tabs/RuiTabs.vue_vue_type_script_setup_true_lang.js.map +1 -1
  300. package/dist/components/tabs/tabs/use-tab-indicator.d.ts +27 -0
  301. package/dist/components/tabs/tabs/use-tab-indicator.js +67 -0
  302. package/dist/components/tabs/tabs/use-tab-indicator.js.map +1 -0
  303. package/dist/components/tabs/tabs/use-tab-keyboard.d.ts +17 -0
  304. package/dist/components/tabs/tabs/use-tab-keyboard.js +57 -0
  305. package/dist/components/tabs/tabs/use-tab-keyboard.js.map +1 -0
  306. package/dist/components/tabs/tabs/use-tab-routing.js +1 -2
  307. package/dist/components/tabs/tabs/use-tab-routing.js.map +1 -1
  308. package/dist/components/time-picker/RuiTimePicker.js.map +1 -1
  309. package/dist/components/time-picker/RuiTimePicker.vue_vue_type_script_setup_true_lang.js +35 -32
  310. package/dist/components/time-picker/RuiTimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  311. package/dist/components/time-picker/time-picker-styles.d.ts +18 -0
  312. package/dist/components/time-picker/time-picker-styles.js +16 -10
  313. package/dist/components/time-picker/time-picker-styles.js.map +1 -1
  314. package/dist/composables/defaults/field.d.ts +22 -0
  315. package/dist/composables/defaults/field.js +29 -0
  316. package/dist/composables/defaults/field.js.map +1 -0
  317. package/dist/composables/dropdown-menu.d.ts +14 -2
  318. package/dist/composables/dropdown-menu.js +12 -2
  319. package/dist/composables/dropdown-menu.js.map +1 -1
  320. package/dist/composables/floating.d.ts +0 -2
  321. package/dist/composables/floating.js +5 -2
  322. package/dist/composables/floating.js.map +1 -1
  323. package/dist/composables/forms/auto-complete/chips.d.ts +22 -0
  324. package/dist/composables/forms/auto-complete/chips.js +42 -0
  325. package/dist/composables/forms/auto-complete/chips.js.map +1 -0
  326. package/dist/composables/forms/auto-complete/combobox.d.ts +25 -0
  327. package/dist/composables/forms/auto-complete/combobox.js +35 -0
  328. package/dist/composables/forms/auto-complete/combobox.js.map +1 -0
  329. package/dist/composables/forms/auto-complete/focus.d.ts +5 -2
  330. package/dist/composables/forms/auto-complete/focus.js +36 -10
  331. package/dist/composables/forms/auto-complete/focus.js.map +1 -1
  332. package/dist/composables/forms/auto-complete/index.d.ts +3 -0
  333. package/dist/composables/forms/auto-complete/keyboard-navigation.d.ts +8 -1
  334. package/dist/composables/forms/auto-complete/keyboard-navigation.js +48 -20
  335. package/dist/composables/forms/auto-complete/keyboard-navigation.js.map +1 -1
  336. package/dist/composables/forms/auto-complete/selection.d.ts +37 -0
  337. package/dist/composables/forms/auto-complete/selection.js +60 -0
  338. package/dist/composables/forms/auto-complete/selection.js.map +1 -0
  339. package/dist/composables/forms/auto-complete/value.js +19 -0
  340. package/dist/composables/forms/auto-complete/value.js.map +1 -1
  341. package/dist/composables/keyboard-scroll.d.ts +17 -0
  342. package/dist/composables/keyboard-scroll.js +58 -0
  343. package/dist/composables/keyboard-scroll.js.map +1 -0
  344. package/dist/composables/sticky-header.d.ts +8 -0
  345. package/dist/composables/sticky-header.js +13 -2
  346. package/dist/composables/sticky-header.js.map +1 -1
  347. package/dist/composables/tables/data-table/page-scroll.d.ts +30 -0
  348. package/dist/composables/tables/data-table/page-scroll.js +113 -0
  349. package/dist/composables/tables/data-table/page-scroll.js.map +1 -0
  350. package/dist/consts/colors.d.ts +4 -0
  351. package/dist/consts/colors.js +1 -37
  352. package/dist/consts/colors.js.map +1 -1
  353. package/dist/consts/tokens.d.ts +56 -0
  354. package/dist/consts/tokens.js +46 -0
  355. package/dist/consts/tokens.js.map +1 -0
  356. package/dist/consts/typography.d.ts +51 -18
  357. package/dist/index.d.ts +5 -0
  358. package/dist/index.js +9 -5
  359. package/dist/index.js.map +1 -1
  360. package/dist/library-icons.json +0 -10
  361. package/dist/style.css +5644 -4677
  362. package/dist/styles/colors.css +315 -0
  363. package/dist/styles/tokens.css +50 -0
  364. package/dist/tailwind.css +145 -0
  365. package/dist/theme/theme.css +403 -0
  366. package/dist/theme.css +403 -0
  367. package/dist/utils/helpers.d.ts +0 -8
  368. package/dist/utils/helpers.js +0 -1
  369. package/dist/utils/helpers.js.map +1 -1
  370. package/dist/utils/tv.js +13 -21
  371. package/dist/utils/tv.js.map +1 -1
  372. package/dist/web-types.json +275 -407
  373. package/package.json +13 -16
  374. package/dist/components/icons/LazyIcon.vue.d.ts +0 -8
  375. package/dist/components/steppers/RuiStepperCustomIcon.js +0 -7
  376. package/dist/components/steppers/RuiStepperCustomIcon.js.map +0 -1
  377. package/dist/components/steppers/RuiStepperCustomIcon.vue.d.ts +0 -8
  378. package/dist/components/steppers/RuiStepperCustomIcon.vue_vue_type_script_setup_true_lang.js +0 -43
  379. package/dist/components/steppers/RuiStepperCustomIcon.vue_vue_type_script_setup_true_lang.js.map +0 -1
  380. package/dist/composables/colors/common.d.ts +0 -20
  381. package/dist/composables/colors/index.d.ts +0 -3
  382. package/dist/composables/colors/text-input.d.ts +0 -27
  383. package/dist/composables/forms/use-label-with-quote.d.ts +0 -2
  384. package/dist/composables/popper.d.ts +0 -16
  385. package/dist/composables/popper.js +0 -23
  386. package/dist/composables/popper.js.map +0 -1
  387. package/dist/consts/forms/auto-complete/index.d.ts +0 -4
  388. package/dist/theme/index.d.ts +0 -5
  389. package/dist/theme/index.js +0 -162
  390. package/dist/theme/index.js.map +0 -1
  391. package/dist/utils/forms/auto-complete/index.d.ts +0 -2
@@ -1,11 +1,12 @@
1
1
  import type { ContextColorsType } from '../../../consts/colors.js';
2
2
  import type { RuiIcons } from '../../../icons/index.js';
3
- import { type TextAreaVariant } from './text-area-styles.js';
3
+ import { type LabelPlacement } from '../../../composables/defaults/field.js';
4
4
  export interface TextAreaProps {
5
5
  label?: string;
6
6
  placeholder?: string;
7
7
  disabled?: boolean;
8
- variant?: TextAreaVariant;
8
+ /** Where the label shows; falls back to the nearest `RuiFieldDefaults`, then the app default, then `top`. */
9
+ labelPlacement?: LabelPlacement;
9
10
  color?: ContextColorsType;
10
11
  textColor?: ContextColorsType;
11
12
  dense?: boolean;
@@ -1,17 +1,20 @@
1
+ import { useLabelPlacement } from "../../../composables/defaults/field.js";
1
2
  import RuiIcon_default from "../../icons/RuiIcon.js";
2
3
  import RuiButton_default from "../../buttons/button/RuiButton.js";
3
4
  import { useFormTextDetail } from "../../../utils/form-text-detail.js";
4
5
  import RuiFormTextDetail_default from "../../helpers/RuiFormTextDetail.js";
5
6
  import { useTimeoutManager } from "../../../composables/timeout-manager.js";
6
- import { usePrependAppendWidth } from "../../../composables/forms/use-prepend-append-width.js";
7
+ import RuiFieldLabel_default from "../field-label/RuiFieldLabel.js";
7
8
  import { getNonRootAttrs, getRootAttrs } from "../../../utils/helpers.js";
8
9
  import { textAreaStyles } from "./text-area-styles.js";
9
- import { computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, guardReactiveProps, mergeModels, mergeProps, nextTick, normalizeClass, normalizeProps, normalizeStyle, onMounted, openBlock, ref, renderSlot, toDisplayString, unref, useModel, useTemplateRef, vModelText, watch, withCtx, withDirectives, withModifiers } from "vue";
10
+ import { usePrependAppendWidth } from "../../../composables/forms/use-prepend-append-width.js";
11
+ import { computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, guardReactiveProps, mergeModels, mergeProps, nextTick, normalizeClass, normalizeProps, normalizeStyle, onMounted, openBlock, ref, renderSlot, unref, useAttrs, useId, useModel, useTemplateRef, vModelText, watch, withCtx, withDirectives, withModifiers } from "vue";
10
12
  import { useFocus, watchDebounced } from "@vueuse/core";
11
13
  import { get as get$1, set as set$1 } from "@vueuse/shared";
12
14
  //#region src/components/forms/text-area/RuiTextArea.vue?vue&type=script&setup=true&lang.ts
13
15
  var _hoisted_1 = ["value"];
14
16
  var _hoisted_2 = [
17
+ "id",
15
18
  "placeholder",
16
19
  "disabled",
17
20
  "readonly",
@@ -28,7 +31,7 @@ var RuiTextArea_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defi
28
31
  type: Boolean,
29
32
  default: false
30
33
  },
31
- variant: { default: "default" },
34
+ labelPlacement: { default: () => void 0 },
32
35
  color: { default: () => void 0 },
33
36
  textColor: { default: () => void 0 },
34
37
  dense: {
@@ -81,11 +84,17 @@ var RuiTextArea_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defi
81
84
  const append = useTemplateRef("append");
82
85
  const textarea = useTemplateRef("textarea");
83
86
  const textareaSizer = useTemplateRef("textareaSizer");
87
+ const generatedId = useId();
88
+ const attrs = useAttrs();
84
89
  const { focused } = useFocus(textarea);
85
- const { create: delayClearHide } = useTimeoutManager();
90
+ const placement = useLabelPlacement(() => __props.labelPlacement);
91
+ const { clear: cancelClearHide, create: delayClearHide } = useTimeoutManager();
86
92
  const { prependWidth, appendWidth } = usePrependAppendWidth(prepend, append, 24);
87
93
  const { hasError, hasSuccess, hasMessages, validation } = useFormTextDetail(() => __props.errorMessages, () => __props.successMessages);
88
- const active = computed(() => get$1(focused) || !!get$1(modelValue));
94
+ const textareaId = computed(() => {
95
+ const id = attrs.id;
96
+ return typeof id === "string" && id ? id : generatedId;
97
+ });
89
98
  const showClearIcon = computed(() => __props.clearable && !!get$1(modelValue) && !__props.disabled && !__props.readonly);
90
99
  const effectiveTextColor = computed(() => {
91
100
  if (get$1(hasError)) return "error";
@@ -94,27 +103,20 @@ var RuiTextArea_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defi
94
103
  });
95
104
  const effectiveColor = computed(() => get$1(validation) ?? __props.color);
96
105
  const ui = computed(() => textAreaStyles({
97
- variant: __props.variant,
98
106
  dense: __props.dense,
99
107
  disabled: __props.disabled,
108
+ readonly: __props.readonly,
100
109
  noResize: __props.noResize,
101
110
  hovered: get$1(isHovered),
102
111
  focused: get$1(focused),
103
- active: get$1(active),
104
- noLabel: !__props.label,
105
112
  color: get$1(effectiveColor),
106
113
  textColor: get$1(effectiveTextColor),
107
- validation: get$1(validation),
108
- showLabel: !!__props.label
114
+ validation: get$1(validation)
109
115
  }));
110
116
  const wrapperStyle = computed(() => ({
111
117
  "--prepend-w": get$1(prependWidth),
112
118
  "--append-w": get$1(appendWidth)
113
119
  }));
114
- const legendText = computed(() => {
115
- if (!get$1(active) || !__props.label) return "";
116
- return __props.required ? `${__props.label} ﹡` : __props.label;
117
- });
118
120
  const fieldStyles = computed(() => {
119
121
  const height = Number(__props.rowHeight);
120
122
  const min = Number(__props.minRows);
@@ -142,8 +144,10 @@ var RuiTextArea_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defi
142
144
  });
143
145
  }
144
146
  watch(focused, (value) => {
145
- if (value) set$1(showClearButton, true);
146
- else delayClearHide(() => set$1(showClearButton, false), 500);
147
+ if (value) {
148
+ cancelClearHide();
149
+ set$1(showClearButton, true);
150
+ } else delayClearHide(() => set$1(showClearButton, false), 500);
147
151
  });
148
152
  watchDebounced(modelValue, computeFieldHeight, { debounce: 50 });
149
153
  onMounted(computeFieldHeight);
@@ -152,93 +156,110 @@ var RuiTextArea_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defi
152
156
  element: textarea
153
157
  });
154
158
  return (_ctx, _cache) => {
155
- return openBlock(), createElementBlock("div", normalizeProps(guardReactiveProps(unref(getRootAttrs)(_ctx.$attrs))), [createElementVNode("div", {
156
- class: normalizeClass(unref(ui).wrapper()),
157
- style: normalizeStyle(unref(wrapperStyle)),
158
- "data-id": "wrapper",
159
- onMouseenter: _cache[2] || (_cache[2] = ($event) => isHovered.value = true),
160
- onMouseleave: _cache[3] || (_cache[3] = ($event) => isHovered.value = false)
161
- }, [
162
- _ctx.$slots.prepend || __props.prependIcon ? (openBlock(), createElementBlock("div", {
159
+ return openBlock(), createElementBlock("div", normalizeProps(guardReactiveProps(unref(getRootAttrs)(_ctx.$attrs))), [
160
+ __props.label ? (openBlock(), createBlock(RuiFieldLabel_default, {
163
161
  key: 0,
164
- ref_key: "prepend",
165
- ref: prepend,
166
- class: normalizeClass(unref(ui).prepend()),
167
- "data-id": "prepend"
168
- }, [_ctx.$slots.prepend ? renderSlot(_ctx.$slots, "prepend", {}, void 0, void 0, 0) : __props.prependIcon ? (openBlock(), createElementBlock("div", {
169
- key: 1,
170
- class: normalizeClass(unref(ui).icon())
171
- }, [createVNode(RuiIcon_default, { name: __props.prependIcon }, null, 8, ["name"])], 2)) : createCommentVNode("", true)], 2)) : createCommentVNode("", true),
172
- createElementVNode("div", { class: normalizeClass(unref(ui).inputWrapper()) }, [
173
- __props.autoGrow ? (openBlock(), createElementBlock("textarea", {
162
+ text: __props.label,
163
+ for: unref(textareaId),
164
+ hidden: unref(placement) === "hidden",
165
+ required: __props.required,
166
+ disabled: __props.disabled
167
+ }, null, 8, [
168
+ "text",
169
+ "for",
170
+ "hidden",
171
+ "required",
172
+ "disabled"
173
+ ])) : createCommentVNode("", true),
174
+ createElementVNode("div", {
175
+ class: normalizeClass(unref(ui).wrapper()),
176
+ style: normalizeStyle(unref(wrapperStyle)),
177
+ "data-id": "wrapper",
178
+ onMouseenter: _cache[2] || (_cache[2] = ($event) => isHovered.value = true),
179
+ onMouseleave: _cache[3] || (_cache[3] = ($event) => isHovered.value = false)
180
+ }, [
181
+ _ctx.$slots.prepend || __props.prependIcon ? (openBlock(), createElementBlock("div", {
174
182
  key: 0,
175
- ref_key: "textareaSizer",
176
- ref: textareaSizer,
177
- value: modelValue.value,
178
- class: normalizeClass(unref(ui).textareaSizer()),
179
- style: normalizeStyle(unref(fieldStyles)),
180
- "aria-hidden": "true",
181
- disabled: "",
182
- readonly: ""
183
- }, null, 14, _hoisted_1)) : createCommentVNode("", true),
184
- withDirectives(createElementVNode("textarea", mergeProps({
185
- ref_key: "textarea",
186
- ref: textarea,
187
- "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => modelValue.value = $event),
188
- placeholder: __props.placeholder || " ",
189
- class: unref(ui).textarea(),
190
- style: unref(fieldStyles),
191
- disabled: __props.disabled,
192
- readonly: __props.readonly,
193
- "aria-invalid": unref(hasError)
194
- }, unref(getNonRootAttrs)(_ctx.$attrs)), null, 16, _hoisted_2), [[vModelText, modelValue.value]]),
195
- createElementVNode("label", { class: normalizeClass(unref(ui).label()) }, [createElementVNode("span", { class: normalizeClass(unref(ui).labelText()) }, [createTextVNode(toDisplayString(__props.label) + " ", 1), __props.required ? (openBlock(), createElementBlock("span", {
196
- key: 0,
197
- class: normalizeClass(unref(ui).required())
198
- }, " ﹡ ", 2)) : createCommentVNode("", true)], 2)], 2),
199
- __props.variant === "outlined" ? (openBlock(), createElementBlock("fieldset", {
183
+ ref_key: "prepend",
184
+ ref: prepend,
185
+ class: normalizeClass(unref(ui).prepend()),
186
+ "data-id": "prepend"
187
+ }, [_ctx.$slots.prepend ? renderSlot(_ctx.$slots, "prepend", {}, void 0, void 0, 0) : __props.prependIcon ? (openBlock(), createElementBlock("div", {
188
+ key: 1,
189
+ class: normalizeClass(unref(ui).icon())
190
+ }, [createVNode(RuiIcon_default, {
191
+ name: __props.prependIcon,
192
+ size: 18
193
+ }, null, 8, ["name"])], 2)) : createCommentVNode("", true)], 2)) : createCommentVNode("", true),
194
+ createElementVNode("div", { class: normalizeClass(unref(ui).inputWrapper()) }, [
195
+ __props.autoGrow ? (openBlock(), createElementBlock("textarea", {
196
+ key: 0,
197
+ ref_key: "textareaSizer",
198
+ ref: textareaSizer,
199
+ value: modelValue.value,
200
+ class: normalizeClass(unref(ui).textareaSizer()),
201
+ style: normalizeStyle(unref(fieldStyles)),
202
+ "aria-hidden": "true",
203
+ disabled: "",
204
+ readonly: ""
205
+ }, null, 14, _hoisted_1)) : createCommentVNode("", true),
206
+ withDirectives(createElementVNode("textarea", mergeProps({
207
+ id: unref(textareaId),
208
+ ref_key: "textarea",
209
+ ref: textarea,
210
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => modelValue.value = $event),
211
+ placeholder: __props.placeholder || " ",
212
+ class: unref(ui).textarea(),
213
+ style: unref(fieldStyles),
214
+ disabled: __props.disabled,
215
+ readonly: __props.readonly,
216
+ "aria-invalid": unref(hasError)
217
+ }, unref(getNonRootAttrs)(_ctx.$attrs)), null, 16, _hoisted_2), [[vModelText, modelValue.value]]),
218
+ createElementVNode("fieldset", { class: normalizeClass(unref(ui).fieldset()) }, null, 2)
219
+ ], 2),
220
+ _ctx.$slots.append || __props.appendIcon || unref(showClearIcon) ? (openBlock(), createElementBlock("div", {
200
221
  key: 1,
201
- class: normalizeClass(unref(ui).fieldset())
202
- }, [createElementVNode("legend", { class: normalizeClass(unref(ui).legend()) }, toDisplayString(unref(legendText)), 3)], 2)) : createCommentVNode("", true)
203
- ], 2),
204
- _ctx.$slots.append || __props.appendIcon || unref(showClearIcon) ? (openBlock(), createElementBlock("div", {
222
+ ref_key: "append",
223
+ ref: append,
224
+ class: normalizeClass(unref(ui).append()),
225
+ "data-id": "append"
226
+ }, [unref(showClearIcon) ? (openBlock(), createBlock(RuiButton_default, {
227
+ key: 0,
228
+ class: normalizeClass([unref(ui).clearButton(), { hidden: !unref(showClearButton) }]),
229
+ variant: "text",
230
+ type: "button",
231
+ icon: "",
232
+ "data-id": "clear-btn",
233
+ "aria-label": "Clear",
234
+ tabindex: "-1",
235
+ onClick: _cache[1] || (_cache[1] = withModifiers(($event) => clearIconClicked(), ["stop"]))
236
+ }, {
237
+ default: withCtx(() => [createVNode(RuiIcon_default, {
238
+ name: "lu-x",
239
+ size: "16"
240
+ })]),
241
+ _: 1
242
+ }, 8, ["class"])) : createCommentVNode("", true), _ctx.$slots.append ? renderSlot(_ctx.$slots, "append", {}, void 0, void 0, 1) : __props.appendIcon ? (openBlock(), createElementBlock("div", {
243
+ key: 2,
244
+ class: normalizeClass(unref(ui).icon())
245
+ }, [createVNode(RuiIcon_default, {
246
+ name: __props.appendIcon,
247
+ size: 18
248
+ }, null, 8, ["name"])], 2)) : createCommentVNode("", true)], 2)) : createCommentVNode("", true)
249
+ ], 38),
250
+ !__props.hideDetails ? (openBlock(), createBlock(RuiFormTextDetail_default, {
205
251
  key: 1,
206
- ref_key: "append",
207
- ref: append,
208
- class: normalizeClass(unref(ui).append()),
209
- "data-id": "append"
210
- }, [unref(showClearIcon) ? (openBlock(), createBlock(RuiButton_default, {
211
- key: 0,
212
- class: normalizeClass([unref(ui).clearButton(), { hidden: !unref(showClearButton) }]),
213
- variant: "text",
214
- type: "button",
215
- icon: "",
216
- color: "error",
217
- "data-id": "clear-btn",
218
- tabindex: "-1",
219
- onClick: _cache[1] || (_cache[1] = withModifiers(($event) => clearIconClicked(), ["stop"]))
220
- }, {
221
- default: withCtx(() => [createVNode(RuiIcon_default, {
222
- name: "lu-x",
223
- size: "20"
224
- })]),
225
- _: 1
226
- }, 8, ["class"])) : createCommentVNode("", true), _ctx.$slots.append ? renderSlot(_ctx.$slots, "append", {}, void 0, void 0, 1) : __props.appendIcon ? (openBlock(), createElementBlock("div", {
227
- key: 2,
228
- class: normalizeClass(unref(ui).icon())
229
- }, [createVNode(RuiIcon_default, { name: __props.appendIcon }, null, 8, ["name"])], 2)) : createCommentVNode("", true)], 2)) : createCommentVNode("", true)
230
- ], 38), !__props.hideDetails ? (openBlock(), createBlock(RuiFormTextDetail_default, {
231
- key: 0,
232
- class: normalizeClass(unref(ui).details()),
233
- "error-messages": __props.errorMessages,
234
- "success-messages": __props.successMessages,
235
- hint: __props.hint
236
- }, null, 8, [
237
- "class",
238
- "error-messages",
239
- "success-messages",
240
- "hint"
241
- ])) : createCommentVNode("", true)], 16);
252
+ class: normalizeClass(unref(ui).details()),
253
+ "error-messages": __props.errorMessages,
254
+ "success-messages": __props.successMessages,
255
+ hint: __props.hint
256
+ }, null, 8, [
257
+ "class",
258
+ "error-messages",
259
+ "success-messages",
260
+ "hint"
261
+ ])) : createCommentVNode("", true)
262
+ ], 16);
242
263
  };
243
264
  }
244
265
  });
@@ -1 +1 @@
1
- {"version":3,"file":"RuiTextArea.vue_vue_type_script_setup_true_lang.js","names":["$attrs","$slots"],"sources":["../../../../src/components/forms/text-area/RuiTextArea.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { ContextColorsType } from '@/consts/colors';\nimport type { RuiIcons } from '@/icons';\nimport RuiButton from '@/components/buttons/button/RuiButton.vue';\nimport { textAreaStyles, type TextAreaVariant } from '@/components/forms/text-area/text-area-styles';\nimport RuiFormTextDetail from '@/components/helpers/RuiFormTextDetail.vue';\nimport RuiIcon from '@/components/icons/RuiIcon.vue';\nimport { usePrependAppendWidth } from '@/composables/forms/use-prepend-append-width';\nimport { useTimeoutManager } from '@/composables/timeout-manager';\nimport { useFormTextDetail } from '@/utils/form-text-detail';\nimport { getNonRootAttrs, getRootAttrs } from '@/utils/helpers';\n\nexport interface TextAreaProps {\n label?: string;\n placeholder?: string;\n disabled?: boolean;\n variant?: TextAreaVariant;\n color?: ContextColorsType;\n textColor?: ContextColorsType;\n dense?: boolean;\n hint?: string;\n errorMessages?: string | string[];\n successMessages?: string | string[];\n hideDetails?: boolean;\n prependIcon?: RuiIcons;\n appendIcon?: RuiIcons;\n readonly?: boolean;\n clearable?: boolean;\n noResize?: boolean;\n minRows?: number | string;\n maxRows?: number | string;\n rowHeight?: number | string;\n autoGrow?: boolean;\n required?: boolean;\n}\n\ndefineOptions({\n name: 'RuiTextArea',\n inheritAttrs: false,\n});\n\nconst modelValue = defineModel<string>({ required: true });\n\nconst {\n label = '',\n placeholder = '',\n disabled = false,\n variant = 'default',\n color = undefined,\n textColor = undefined,\n dense = false,\n hint = '',\n errorMessages = [],\n successMessages = [],\n hideDetails = false,\n prependIcon = undefined,\n appendIcon = undefined,\n readonly = false,\n clearable = false,\n noResize = false,\n minRows = 2,\n rowHeight = 1.5,\n maxRows = undefined,\n autoGrow = false,\n required = false,\n} = defineProps<TextAreaProps>();\n\nconst emit = defineEmits<{\n 'click:clear': [];\n}>();\n\ndefineSlots<{\n prepend?: () => any;\n append?: () => any;\n}>();\n\nconst isHovered = ref<boolean>(false);\nconst showClearButton = ref<boolean>(false);\n\nconst prepend = useTemplateRef<HTMLDivElement>('prepend');\nconst append = useTemplateRef<HTMLDivElement>('append');\nconst textarea = useTemplateRef<HTMLTextAreaElement>('textarea');\nconst textareaSizer = useTemplateRef<HTMLTextAreaElement>('textareaSizer');\n\nconst { focused } = useFocus(textarea);\nconst { create: delayClearHide } = useTimeoutManager();\nconst { prependWidth, appendWidth } = usePrependAppendWidth(prepend, append, 24);\nconst { hasError, hasSuccess, hasMessages, validation } = useFormTextDetail(\n () => errorMessages,\n () => successMessages,\n);\n\nconst active = computed<boolean>(() => get(focused) || !!get(modelValue));\n\nconst showClearIcon = computed<boolean>(() => clearable && !!get(modelValue) && !disabled && !readonly);\n\nconst effectiveTextColor = computed<ContextColorsType | undefined>(() => {\n if (get(hasError))\n return 'error';\n if (get(hasSuccess))\n return 'success';\n if (textColor && !get(hasMessages))\n return textColor;\n return undefined;\n});\n\nconst effectiveColor = computed<ContextColorsType | undefined>(() => get(validation) ?? color);\n\nconst ui = computed<ReturnType<typeof textAreaStyles>>(() => textAreaStyles({\n variant,\n dense,\n disabled,\n noResize,\n hovered: get(isHovered),\n focused: get(focused),\n active: get(active),\n noLabel: !label,\n color: get(effectiveColor),\n textColor: get(effectiveTextColor),\n validation: get(validation),\n showLabel: !!label,\n}));\n\nconst wrapperStyle = computed<Record<string, string>>(() => ({\n '--prepend-w': get(prependWidth),\n '--append-w': get(appendWidth),\n}));\n\nconst legendText = computed<string>(() => {\n if (!get(active) || !label)\n return '';\n return required ? `${label} ﹡` : label;\n});\n\nconst fieldStyles = computed<{ minHeight: string; maxHeight?: string }>(() => {\n const height = Number(rowHeight);\n const min = Number(minRows);\n const max = Number(maxRows);\n const value: { minHeight: string; maxHeight?: string } = {\n minHeight: `${min * height + 0.75}rem`,\n };\n if (max)\n value.maxHeight = `${max * height + 0.75}rem`;\n\n return value;\n});\n\nfunction clearIconClicked(): void {\n set(modelValue, '');\n emit('click:clear');\n}\n\nfunction computeFieldHeight(newVal?: string, oldVal?: string): void {\n if (!autoGrow)\n return;\n\n const field = get(textarea);\n const fieldValue = newVal ?? get(modelValue);\n const fieldSizer = get(textareaSizer);\n if (!(field && fieldSizer))\n return;\n\n nextTick(() => {\n const sizerHeight = fieldSizer.scrollHeight;\n const fieldHeight = field.scrollHeight;\n let height = `${Math.max(sizerHeight, fieldHeight) / 16}rem`;\n if (oldVal && oldVal.length > fieldValue.length)\n height = `${Math.min(sizerHeight, fieldHeight) / 16}rem`;\n\n field.style.height = height;\n });\n}\n\nwatch(focused, (value) => {\n if (value) {\n set(showClearButton, true);\n }\n else {\n delayClearHide(() => set(showClearButton, false), 500);\n }\n});\n\nwatchDebounced(modelValue, computeFieldHeight, { debounce: 50 });\n\nonMounted(computeFieldHeight);\n\ndefineExpose({\n focus: () => get(textarea)?.focus(),\n element: textarea,\n});\n</script>\n\n<template>\n <div v-bind=\"getRootAttrs($attrs)\">\n <div\n :class=\"ui.wrapper()\"\n :style=\"wrapperStyle\"\n data-id=\"wrapper\"\n @mouseenter=\"isHovered = true\"\n @mouseleave=\"isHovered = false\"\n >\n <div\n v-if=\"$slots.prepend || prependIcon\"\n ref=\"prepend\"\n :class=\"ui.prepend()\"\n data-id=\"prepend\"\n >\n <slot\n v-if=\"$slots.prepend\"\n name=\"prepend\"\n />\n <div\n v-else-if=\"prependIcon\"\n :class=\"ui.icon()\"\n >\n <RuiIcon :name=\"prependIcon\" />\n </div>\n </div>\n <div :class=\"ui.inputWrapper()\">\n <textarea\n v-if=\"autoGrow\"\n ref=\"textareaSizer\"\n :value=\"modelValue\"\n :class=\"ui.textareaSizer()\"\n :style=\"fieldStyles\"\n aria-hidden=\"true\"\n disabled\n readonly\n />\n <textarea\n ref=\"textarea\"\n v-model=\"modelValue\"\n :placeholder=\"placeholder || ' '\"\n :class=\"ui.textarea()\"\n :style=\"fieldStyles\"\n :disabled=\"disabled\"\n :readonly=\"readonly\"\n :aria-invalid=\"hasError\"\n v-bind=\"getNonRootAttrs($attrs)\"\n />\n <label :class=\"ui.label()\">\n <span :class=\"ui.labelText()\">\n {{ label }}\n <span\n v-if=\"required\"\n :class=\"ui.required()\"\n >\n ﹡\n </span>\n </span>\n </label>\n <fieldset\n v-if=\"variant === 'outlined'\"\n :class=\"ui.fieldset()\"\n >\n <legend :class=\"ui.legend()\">\n {{ legendText }}\n </legend>\n </fieldset>\n </div>\n <div\n v-if=\"$slots.append || appendIcon || showClearIcon\"\n ref=\"append\"\n :class=\"ui.append()\"\n data-id=\"append\"\n >\n <RuiButton\n v-if=\"showClearIcon\"\n :class=\"[ui.clearButton(), { hidden: !showClearButton }]\"\n variant=\"text\"\n type=\"button\"\n icon\n color=\"error\"\n data-id=\"clear-btn\"\n tabindex=\"-1\"\n @click.stop=\"clearIconClicked()\"\n >\n <RuiIcon\n name=\"lu-x\"\n size=\"20\"\n />\n </RuiButton>\n <slot\n v-if=\"$slots.append\"\n name=\"append\"\n />\n <div\n v-else-if=\"appendIcon\"\n :class=\"ui.icon()\"\n >\n <RuiIcon :name=\"appendIcon\" />\n </div>\n </div>\n </div>\n <RuiFormTextDetail\n v-if=\"!hideDetails\"\n :class=\"ui.details()\"\n :error-messages=\"errorMessages\"\n :success-messages=\"successMessages\"\n :hint=\"hint\"\n />\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyCA,MAAM,aAAa,SAAmB,SAAA,YAAmB;EA0BzD,MAAM,OAAO;EASb,MAAM,YAAY,IAAa,KAAK;EACpC,MAAM,kBAAkB,IAAa,KAAK;EAE1C,MAAM,UAAU,eAA+B,SAAS;EACxD,MAAM,SAAS,eAA+B,QAAQ;EACtD,MAAM,WAAW,eAAoC,UAAU;EAC/D,MAAM,gBAAgB,eAAoC,eAAe;EAEzE,MAAM,EAAE,YAAY,SAAS,QAAQ;EACrC,MAAM,EAAE,QAAQ,mBAAmB,kBAAkB;EACrD,MAAM,EAAE,cAAc,gBAAgB,sBAAsB,SAAS,QAAQ,EAAE;EAC/E,MAAM,EAAE,UAAU,YAAY,aAAa,eAAe,wBAClD,QAAA,qBACA,QAAA,eACR;EAEA,MAAM,SAAS,eAAwB,MAAI,OAAO,KAAK,CAAC,CAAC,MAAI,UAAU,CAAC;EAExE,MAAM,gBAAgB,eAAwB,QAAA,aAAa,CAAC,CAAC,MAAI,UAAU,KAAK,CAAC,QAAA,YAAY,CAAC,QAAA,QAAQ;EAEtG,MAAM,qBAAqB,eAA8C;GACvE,IAAI,MAAI,QAAQ,GACd,OAAO;GACT,IAAI,MAAI,UAAU,GAChB,OAAO;GACT,IAAI,QAAA,aAAa,CAAC,MAAI,WAAW,GAC/B,OAAO,QAAA;EAEX,CAAC;EAED,MAAM,iBAAiB,eAA8C,MAAI,UAAU,KAAK,QAAA,KAAK;EAE7F,MAAM,KAAK,eAAkD,eAAe;GAC1E,SAAM,QAAA;GACN,OAAI,QAAA;GACJ,UAAO,QAAA;GACP,UAAO,QAAA;GACP,SAAS,MAAI,SAAS;GACtB,SAAS,MAAI,OAAO;GACpB,QAAQ,MAAI,MAAM;GAClB,SAAS,CAAC,QAAA;GACV,OAAO,MAAI,cAAc;GACzB,WAAW,MAAI,kBAAkB;GACjC,YAAY,MAAI,UAAU;GAC1B,WAAW,CAAC,CAAC,QAAA;EACf,CAAC,CAAC;EAEF,MAAM,eAAe,gBAAwC;GAC3D,eAAe,MAAI,YAAY;GAC/B,cAAc,MAAI,WAAW;EAC/B,EAAE;EAEF,MAAM,aAAa,eAAuB;GACxC,IAAI,CAAC,MAAI,MAAM,KAAK,CAAC,QAAA,OACnB,OAAO;GACT,OAAO,QAAA,WAAW,GAAG,QAAA,MAAM,MAAM,QAAA;EACnC,CAAC;EAED,MAAM,cAAc,eAA0D;GAC5E,MAAM,SAAS,OAAO,QAAA,SAAS;GAC/B,MAAM,MAAM,OAAO,QAAA,OAAO;GAC1B,MAAM,MAAM,OAAO,QAAA,OAAO;GAC1B,MAAM,QAAmD,EACvD,WAAW,GAAG,MAAM,SAAS,IAAK,KACpC;GACA,IAAI,KACF,MAAM,YAAY,GAAG,MAAM,SAAS,IAAK;GAE3C,OAAO;EACT,CAAC;EAED,SAAS,mBAAyB;GAChC,MAAI,YAAY,EAAE;GAClB,KAAK,aAAa;EACpB;EAEA,SAAS,mBAAmB,QAAiB,QAAuB;GAClE,IAAI,CAAC,QAAA,UACH;GAEF,MAAM,QAAQ,MAAI,QAAQ;GAC1B,MAAM,aAAa,UAAU,MAAI,UAAU;GAC3C,MAAM,aAAa,MAAI,aAAa;GACpC,IAAI,EAAE,SAAS,aACb;GAEF,eAAe;IACb,MAAM,cAAc,WAAW;IAC/B,MAAM,cAAc,MAAM;IAC1B,IAAI,SAAS,GAAG,KAAK,IAAI,aAAa,WAAW,IAAI,GAAG;IACxD,IAAI,UAAU,OAAO,SAAS,WAAW,QACvC,SAAS,GAAG,KAAK,IAAI,aAAa,WAAW,IAAI,GAAG;IAEtD,MAAM,MAAM,SAAS;GACvB,CAAC;EACH;EAEA,MAAM,UAAU,UAAU;GACxB,IAAI,OACF,MAAI,iBAAiB,IAAI;QAGzB,qBAAqB,MAAI,iBAAiB,KAAK,GAAG,GAAG;EAEzD,CAAC;EAED,eAAe,YAAY,oBAAoB,EAAE,UAAU,GAAG,CAAC;EAE/D,UAAU,kBAAkB;EAE5B,SAAa;GACX,aAAa,MAAI,QAAQ,CAAC,EAAE,MAAM;GAClC,SAAS;EACX,CAAC;;GAIC,OAAA,UAAA,GAAA,mBA4GM,OAAA,eAAA,mBA5GO,MAAA,YAAA,CAAY,CAACA,KAAAA,MAAM,CAAA,CAAA,GAAA,CAC9B,mBAmGM,OAAA;IAlGH,OAAK,eAAE,MAAA,EAAA,CAAE,CAAC,QAAO,CAAA;IACjB,OAAK,eAAE,MAAA,YAAA,CAAY;IACpB,WAAQ;IACP,cAAU,OAAA,OAAA,OAAA,MAAA,WAAE,UAAA,QAAS;IACrB,cAAU,OAAA,OAAA,OAAA,MAAA,WAAE,UAAA,QAAS;;IAGdC,KAAAA,OAAO,WAAW,QAAA,eAD1B,UAAA,GAAA,mBAgBM,OAAA;;KAdA,SAAA;KAAJ,KAAI;KACH,OAAK,eAAE,MAAA,EAAA,CAAE,CAAC,QAAO,CAAA;KAClB,WAAQ;IAGAA,GAAAA,CAAAA,KAAAA,OAAO,UADf,WAGE,KAAA,QAAA,WAAA,CAAA,GAAA,KAAA,GAAA,KAAA,GAAA,CAAA,IAEW,QAAA,eADb,UAAA,GAAA,mBAKM,OAAA;;KAHH,OAAK,eAAE,MAAA,EAAA,CAAE,CAAC,KAAI,CAAA;IAEf,GAAA,CAAA,YAA+B,iBAAA,EAArB,MAAM,QAAA,YAAW,GAAA,MAAA,GAAA,CAAA,MAAA,CAAA,CAAA,GAAA,CAAA,KAAA,mBAAA,IAAA,IAAA,CAAA,GAAA,CAAA,KAAA,mBAAA,IAAA,IAAA;IAG/B,mBAyCM,OAAA,EAzCA,OAAK,eAAE,MAAA,EAAA,CAAE,CAAC,aAAY,CAAA,EAAA,GAAA;KAElB,QAAA,YADR,UAAA,GAAA,mBASE,YAAA;;MAPI,SAAA;MAAJ,KAAI;MACH,OAAO,WAAA;MACP,OAAK,eAAE,MAAA,EAAA,CAAE,CAAC,cAAa,CAAA;MACvB,OAAK,eAAE,MAAA,WAAA,CAAW;MACnB,eAAY;MACZ,UAAA;MACA,UAAA;;KAEF,eAAA,mBAUE,YAVF,WAUE;MATI,SAAA;MAAJ,KAAI;MACK,uBAAA,OAAA,OAAA,OAAA,MAAA,WAAA,WAAU,QAAA;MAClB,aAAa,QAAA,eAAW;MACxB,OAAO,MAAA,EAAA,CAAE,CAAC,SAAQ;MAClB,OAAO,MAAA,WAAA;MACP,UAAU,QAAA;MACV,UAAU,QAAA;MACV,gBAAc,MAAA,QAAA;KACP,GAAA,MAAA,eAAA,CAAe,CAACD,KAAAA,MAAM,CAAA,GAAA,MAAA,IAAA,UAAA,GAAA,CAPrB,CAAA,YAAA,WAAA,KAAU,CAAA,CAAA;KASrB,mBAUQ,SAAA,EAVA,OAAK,eAAE,MAAA,EAAA,CAAE,CAAC,MAAK,CAAA,EAAA,GAAA,CACrB,mBAQO,QAAA,EARA,OAAK,eAAE,MAAA,EAAA,CAAE,CAAC,UAAS,CAAA,EAAA,GAAA,CACrB,gBAAA,gBAAA,QAAA,KAAK,IAAG,KACX,CAAA,GACQ,QAAA,YADR,UAAA,GAAA,mBAKO,QAAA;;MAHJ,OAAK,eAAE,MAAA,EAAA,CAAE,CAAC,SAAQ,CAAA;KACpB,GAAA,OAED,CAAA,KAAA,mBAAA,IAAA,IAAA,CAAA,GAAA,CAAA,CAAA,GAAA,CAAA;KAII,QAAA,YAAO,cADf,UAAA,GAAA,mBAOW,YAAA;;MALR,OAAK,eAAE,MAAA,EAAA,CAAE,CAAC,SAAQ,CAAA;KAEnB,GAAA,CAAA,mBAES,UAAA,EAFA,OAAK,eAAE,MAAA,EAAA,CAAE,CAAC,OAAM,CAAA,EACpB,GAAA,gBAAA,MAAA,UAAA,CAAU,GAAA,CAAA,CAAA,GAAA,CAAA,KAAA,mBAAA,IAAA,IAAA;;IAKXC,KAAAA,OAAO,UAAU,QAAA,cAAc,MAAA,aAAA,KADvC,UAAA,GAAA,mBAgCM,OAAA;;KA9BA,SAAA;KAAJ,KAAI;KACH,OAAK,eAAE,MAAA,EAAA,CAAE,CAAC,OAAM,CAAA;KACjB,WAAQ;IAGA,GAAA,CAAA,MAAA,aAAA,KADR,UAAA,GAAA,YAeY,mBAAA;;KAbT,OAAK,eAAA,CAAG,MAAA,EAAA,CAAE,CAAC,YAAW,GAAA,EAAA,QAAA,CAAe,MAAA,eAAA,EAAe,CAAA,CAAA;KACrD,SAAQ;KACR,MAAK;KACL,MAAA;KACA,OAAM;KACN,WAAQ;KACR,UAAS;KACR,SAAK,OAAA,OAAA,OAAA,KAAA,eAAA,WAAO,iBAAgB,GAAA,CAAA,MAAA,CAAA;;KAE7B,SAAA,cAGE,CAHF,YAGE,iBAAA;MAFA,MAAK;MACL,MAAK;;;IAIDA,GAAAA,GAAAA,CAAAA,OAAAA,CAAAA,KAAAA,mBAAAA,IAAAA,IAAAA,GAAAA,KAAAA,OAAO,SADf,WAGE,KAAA,QAAA,UAAA,CAAA,GAAA,KAAA,GAAA,KAAA,GAAA,CAAA,IAEW,QAAA,cADb,UAAA,GAAA,mBAKM,OAAA;;KAHH,OAAK,eAAE,MAAA,EAAA,CAAE,CAAC,KAAI,CAAA;IAEf,GAAA,CAAA,YAA8B,iBAAA,EAApB,MAAM,QAAA,WAAU,GAAA,MAAA,GAAA,CAAA,MAAA,CAAA,CAAA,GAAA,CAAA,KAAA,mBAAA,IAAA,IAAA,CAAA,GAAA,CAAA,KAAA,mBAAA,IAAA,IAAA;GAKvB,GAAA,EAAA,GAAA,CAAA,QAAA,eADT,UAAA,GAAA,YAME,2BAAA;;IAJC,OAAK,eAAE,MAAA,EAAA,CAAE,CAAC,QAAO,CAAA;IACjB,kBAAgB,QAAA;IAChB,oBAAkB,QAAA;IAClB,MAAM,QAAA"}
1
+ {"version":3,"file":"RuiTextArea.vue_vue_type_script_setup_true_lang.js","names":["$attrs","$slots"],"sources":["../../../../src/components/forms/text-area/RuiTextArea.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { ContextColorsType } from '@/consts/colors';\nimport type { RuiIcons } from '@/icons';\nimport RuiButton from '@/components/buttons/button/RuiButton.vue';\nimport RuiFieldLabel from '@/components/forms/field-label/RuiFieldLabel.vue';\nimport { textAreaStyles } from '@/components/forms/text-area/text-area-styles';\nimport RuiFormTextDetail from '@/components/helpers/RuiFormTextDetail.vue';\nimport RuiIcon from '@/components/icons/RuiIcon.vue';\nimport { type LabelPlacement, useLabelPlacement } from '@/composables/defaults/field';\nimport { usePrependAppendWidth } from '@/composables/forms/use-prepend-append-width';\nimport { useTimeoutManager } from '@/composables/timeout-manager';\nimport { useFormTextDetail } from '@/utils/form-text-detail';\nimport { getNonRootAttrs, getRootAttrs } from '@/utils/helpers';\n\nexport interface TextAreaProps {\n label?: string;\n placeholder?: string;\n disabled?: boolean;\n /** Where the label shows; falls back to the nearest `RuiFieldDefaults`, then the app default, then `top`. */\n labelPlacement?: LabelPlacement;\n color?: ContextColorsType;\n textColor?: ContextColorsType;\n dense?: boolean;\n hint?: string;\n errorMessages?: string | string[];\n successMessages?: string | string[];\n hideDetails?: boolean;\n prependIcon?: RuiIcons;\n appendIcon?: RuiIcons;\n readonly?: boolean;\n clearable?: boolean;\n noResize?: boolean;\n minRows?: number | string;\n maxRows?: number | string;\n rowHeight?: number | string;\n autoGrow?: boolean;\n required?: boolean;\n}\n\ndefineOptions({\n name: 'RuiTextArea',\n inheritAttrs: false,\n});\n\nconst modelValue = defineModel<string>({ required: true });\n\nconst {\n label = '',\n placeholder = '',\n disabled = false,\n labelPlacement = undefined,\n color = undefined,\n textColor = undefined,\n dense = false,\n hint = '',\n errorMessages = [],\n successMessages = [],\n hideDetails = false,\n prependIcon = undefined,\n appendIcon = undefined,\n readonly = false,\n clearable = false,\n noResize = false,\n minRows = 2,\n rowHeight = 1.5,\n maxRows = undefined,\n autoGrow = false,\n required = false,\n} = defineProps<TextAreaProps>();\n\nconst emit = defineEmits<{\n 'click:clear': [];\n}>();\n\ndefineSlots<{\n prepend?: () => any;\n append?: () => any;\n}>();\n\nconst isHovered = ref<boolean>(false);\nconst showClearButton = ref<boolean>(false);\n\nconst prepend = useTemplateRef<HTMLDivElement>('prepend');\nconst append = useTemplateRef<HTMLDivElement>('append');\nconst textarea = useTemplateRef<HTMLTextAreaElement>('textarea');\nconst textareaSizer = useTemplateRef<HTMLTextAreaElement>('textareaSizer');\n\nconst generatedId = useId();\nconst attrs = useAttrs();\n\nconst { focused } = useFocus(textarea);\nconst placement = useLabelPlacement(() => labelPlacement);\nconst { clear: cancelClearHide, create: delayClearHide } = useTimeoutManager();\nconst { prependWidth, appendWidth } = usePrependAppendWidth(prepend, append, 24);\nconst { hasError, hasSuccess, hasMessages, validation } = useFormTextDetail(\n () => errorMessages,\n () => successMessages,\n);\n\nconst textareaId = computed<string>(() => {\n const id = attrs.id;\n return typeof id === 'string' && id ? id : generatedId;\n});\n\nconst showClearIcon = computed<boolean>(() => clearable && !!get(modelValue) && !disabled && !readonly);\n\nconst effectiveTextColor = computed<ContextColorsType | undefined>(() => {\n if (get(hasError))\n return 'error';\n if (get(hasSuccess))\n return 'success';\n if (textColor && !get(hasMessages))\n return textColor;\n return undefined;\n});\n\nconst effectiveColor = computed<ContextColorsType | undefined>(() => get(validation) ?? color);\n\nconst ui = computed<ReturnType<typeof textAreaStyles>>(() => textAreaStyles({\n dense,\n disabled,\n readonly,\n noResize,\n hovered: get(isHovered),\n focused: get(focused),\n color: get(effectiveColor),\n textColor: get(effectiveTextColor),\n validation: get(validation),\n}));\n\nconst wrapperStyle = computed<Record<string, string>>(() => ({\n '--prepend-w': get(prependWidth),\n '--append-w': get(appendWidth),\n}));\n\nconst fieldStyles = computed<{ minHeight: string; maxHeight?: string }>(() => {\n const height = Number(rowHeight);\n const min = Number(minRows);\n const max = Number(maxRows);\n const value: { minHeight: string; maxHeight?: string } = {\n minHeight: `${min * height + 0.75}rem`,\n };\n if (max)\n value.maxHeight = `${max * height + 0.75}rem`;\n\n return value;\n});\n\nfunction clearIconClicked(): void {\n set(modelValue, '');\n emit('click:clear');\n}\n\nfunction computeFieldHeight(newVal?: string, oldVal?: string): void {\n if (!autoGrow)\n return;\n\n const field = get(textarea);\n const fieldValue = newVal ?? get(modelValue);\n const fieldSizer = get(textareaSizer);\n if (!(field && fieldSizer))\n return;\n\n nextTick(() => {\n const sizerHeight = fieldSizer.scrollHeight;\n const fieldHeight = field.scrollHeight;\n let height = `${Math.max(sizerHeight, fieldHeight) / 16}rem`;\n if (oldVal && oldVal.length > fieldValue.length)\n height = `${Math.min(sizerHeight, fieldHeight) / 16}rem`;\n\n field.style.height = height;\n });\n}\n\nwatch(focused, (value) => {\n if (value) {\n // a refocus within the delay keeps the button\n cancelClearHide();\n set(showClearButton, true);\n }\n else {\n delayClearHide(() => set(showClearButton, false), 500);\n }\n});\n\nwatchDebounced(modelValue, computeFieldHeight, { debounce: 50 });\n\nonMounted(computeFieldHeight);\n\ndefineExpose({\n focus: () => get(textarea)?.focus(),\n element: textarea,\n});\n</script>\n\n<template>\n <div v-bind=\"getRootAttrs($attrs)\">\n <RuiFieldLabel\n v-if=\"label\"\n :text=\"label\"\n :for=\"textareaId\"\n :hidden=\"placement === 'hidden'\"\n :required=\"required\"\n :disabled=\"disabled\"\n />\n <div\n :class=\"ui.wrapper()\"\n :style=\"wrapperStyle\"\n data-id=\"wrapper\"\n @mouseenter=\"isHovered = true\"\n @mouseleave=\"isHovered = false\"\n >\n <div\n v-if=\"$slots.prepend || prependIcon\"\n ref=\"prepend\"\n :class=\"ui.prepend()\"\n data-id=\"prepend\"\n >\n <slot\n v-if=\"$slots.prepend\"\n name=\"prepend\"\n />\n <div\n v-else-if=\"prependIcon\"\n :class=\"ui.icon()\"\n >\n <RuiIcon\n :name=\"prependIcon\"\n :size=\"18\"\n />\n </div>\n </div>\n <div :class=\"ui.inputWrapper()\">\n <textarea\n v-if=\"autoGrow\"\n ref=\"textareaSizer\"\n :value=\"modelValue\"\n :class=\"ui.textareaSizer()\"\n :style=\"fieldStyles\"\n aria-hidden=\"true\"\n disabled\n readonly\n />\n <textarea\n :id=\"textareaId\"\n ref=\"textarea\"\n v-model=\"modelValue\"\n :placeholder=\"placeholder || ' '\"\n :class=\"ui.textarea()\"\n :style=\"fieldStyles\"\n :disabled=\"disabled\"\n :readonly=\"readonly\"\n :aria-invalid=\"hasError\"\n v-bind=\"getNonRootAttrs($attrs)\"\n />\n <fieldset :class=\"ui.fieldset()\" />\n </div>\n <div\n v-if=\"$slots.append || appendIcon || showClearIcon\"\n ref=\"append\"\n :class=\"ui.append()\"\n data-id=\"append\"\n >\n <RuiButton\n v-if=\"showClearIcon\"\n :class=\"[ui.clearButton(), { hidden: !showClearButton }]\"\n variant=\"text\"\n type=\"button\"\n icon\n data-id=\"clear-btn\"\n aria-label=\"Clear\"\n tabindex=\"-1\"\n @click.stop=\"clearIconClicked()\"\n >\n <RuiIcon\n name=\"lu-x\"\n size=\"16\"\n />\n </RuiButton>\n <slot\n v-if=\"$slots.append\"\n name=\"append\"\n />\n <div\n v-else-if=\"appendIcon\"\n :class=\"ui.icon()\"\n >\n <RuiIcon\n :name=\"appendIcon\"\n :size=\"18\"\n />\n </div>\n </div>\n </div>\n <RuiFormTextDetail\n v-if=\"!hideDetails\"\n :class=\"ui.details()\"\n :error-messages=\"errorMessages\"\n :success-messages=\"successMessages\"\n :hint=\"hint\"\n />\n </div>\n</template>\n"],"mappings":"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"}