@central-design-system/components 4.0.0-alpha.4 → 4.0.0-alpha.5

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 (970) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/MIGRATION.md +14 -42
  3. package/dist/browser/entry.js +4917 -2238
  4. package/dist/browser/iconsets/cdsLegacy.js +1 -1
  5. package/dist/cds.d.ts +119065 -0
  6. package/dist/cjs/entry.js +9 -9
  7. package/dist/es/entry.css +0 -18
  8. package/dist/es/entry.js +3 -2
  9. package/dist/es/entry.js.map +1 -1
  10. package/dist/es/src/cds.js +1 -1
  11. package/dist/es/src/components/CdsApp/CdsApp.css +0 -18
  12. package/dist/es/src/components/CdsApp/api/CdsApp.props.js +1 -0
  13. package/dist/es/src/components/CdsApp/api/CdsApp.props.js.map +1 -1
  14. package/dist/es/src/components/CdsAutocomplete/CdsAutocomplete.css +0 -18
  15. package/dist/es/src/components/CdsAutocomplete/CdsAutocomplete.vue_vue_type_script_setup_true_lang.js +20 -5
  16. package/dist/es/src/components/CdsAutocomplete/CdsAutocomplete.vue_vue_type_script_setup_true_lang.js.map +1 -1
  17. package/dist/es/src/components/CdsAutocomplete/api/CdsAutocomplete.props.js +9 -2
  18. package/dist/es/src/components/CdsAutocomplete/api/CdsAutocomplete.props.js.map +1 -1
  19. package/dist/es/src/components/CdsAvatar/CdsAvatar.css +0 -18
  20. package/dist/es/src/components/CdsAvatar/api/CdsAvatar.props.js +20 -5
  21. package/dist/es/src/components/CdsAvatar/api/CdsAvatar.props.js.map +1 -1
  22. package/dist/es/src/components/CdsBadge/CdsBadge.css +0 -18
  23. package/dist/es/src/components/CdsBadge/api/CdsBadge.props.js +37 -9
  24. package/dist/es/src/components/CdsBadge/api/CdsBadge.props.js.map +1 -1
  25. package/dist/es/src/components/CdsBreadcrumbs/CdsBreadcrumbs.css +0 -18
  26. package/dist/es/src/components/CdsBreadcrumbs/api/CdsBreadcrumbs.props.js +32 -8
  27. package/dist/es/src/components/CdsBreadcrumbs/api/CdsBreadcrumbs.props.js.map +1 -1
  28. package/dist/es/src/components/CdsButton/CdsButton.css +0 -18
  29. package/dist/es/src/components/CdsButton/CdsButton.vue_vue_type_script_setup_true_lang.js +4 -1
  30. package/dist/es/src/components/CdsButton/CdsButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  31. package/dist/es/src/components/CdsButton/api/CdsButton.props.js +28 -7
  32. package/dist/es/src/components/CdsButton/api/CdsButton.props.js.map +1 -1
  33. package/dist/es/src/components/CdsButtonGroup/CdsButtonGroup.css +0 -18
  34. package/dist/es/src/components/CdsButtonGroup/api/CdsButtonGroup.props.js +4 -1
  35. package/dist/es/src/components/CdsButtonGroup/api/CdsButtonGroup.props.js.map +1 -1
  36. package/dist/es/src/components/CdsButtonToggle/CdsButtonToggle.css +0 -18
  37. package/dist/es/src/components/CdsButtonToggle/CdsButtonToggle.vue_vue_type_script_setup_true_lang.js +20 -5
  38. package/dist/es/src/components/CdsButtonToggle/CdsButtonToggle.vue_vue_type_script_setup_true_lang.js.map +1 -1
  39. package/dist/es/src/components/CdsCard/CdsCard.css +0 -18
  40. package/dist/es/src/components/CdsCard/CdsCardGroup.vue_vue_type_script_setup_true_lang.js +20 -5
  41. package/dist/es/src/components/CdsCard/CdsCardGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  42. package/dist/es/src/components/CdsCard/api/CdsCard.props.js +84 -20
  43. package/dist/es/src/components/CdsCard/api/CdsCard.props.js.map +1 -1
  44. package/dist/es/src/components/CdsCarousel/CdsCarousel.css +0 -18
  45. package/dist/es/src/components/CdsCarousel/api/CdsCarousel.props.js +36 -9
  46. package/dist/es/src/components/CdsCarousel/api/CdsCarousel.props.js.map +1 -1
  47. package/dist/es/src/components/CdsCheckbox/CdsCheckbox.css +0 -18
  48. package/dist/es/src/components/CdsCheckboxButton/CdsCheckboxButton.css +0 -18
  49. package/dist/es/src/components/CdsCheckboxButton/api/CdsCheckboxButton.props.js +8 -2
  50. package/dist/es/src/components/CdsCheckboxButton/api/CdsCheckboxButton.props.js.map +1 -1
  51. package/dist/es/src/components/CdsCombobox/CdsCombobox.css +0 -18
  52. package/dist/es/src/components/CdsCombobox/CdsCombobox.vue_vue_type_script_setup_true_lang.js +24 -6
  53. package/dist/es/src/components/CdsCombobox/CdsCombobox.vue_vue_type_script_setup_true_lang.js.map +1 -1
  54. package/dist/es/src/components/CdsCombobox/api/CdsCombobox.props.js +13 -3
  55. package/dist/es/src/components/CdsCombobox/api/CdsCombobox.props.js.map +1 -1
  56. package/dist/es/src/components/CdsCounter/CdsCounter.css +0 -18
  57. package/dist/es/src/components/CdsCounter/api/CdsCounter.props.js +12 -3
  58. package/dist/es/src/components/CdsCounter/api/CdsCounter.props.js.map +1 -1
  59. package/dist/es/src/components/CdsDateInput/CdsDateInput.css +0 -18
  60. package/dist/es/src/components/CdsDateInput/CdsDateInput.vue_vue_type_script_setup_true_lang.js +8 -0
  61. package/dist/es/src/components/CdsDateInput/CdsDateInput.vue_vue_type_script_setup_true_lang.js.map +1 -1
  62. package/dist/es/src/components/CdsDateInput/api/CdsDateInput.props.js +31 -7
  63. package/dist/es/src/components/CdsDateInput/api/CdsDateInput.props.js.map +1 -1
  64. package/dist/es/src/components/CdsDatePicker/CdsDatePicker.css +0 -18
  65. package/dist/es/src/components/CdsDatePicker/CdsDatePicker.vue_vue_type_script_setup_true_lang.js +20 -0
  66. package/dist/es/src/components/CdsDatePicker/CdsDatePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  67. package/dist/es/src/components/CdsDatePicker/api/CdsDatePicker.props.js +64 -15
  68. package/dist/es/src/components/CdsDatePicker/api/CdsDatePicker.props.js.map +1 -1
  69. package/dist/es/src/components/CdsDefaultsProvider/api/CdsDefaultsProvider.props.js +5 -0
  70. package/dist/es/src/components/CdsDefaultsProvider/api/CdsDefaultsProvider.props.js.map +1 -1
  71. package/dist/es/src/components/CdsDescription/CdsDescription.css +0 -18
  72. package/dist/es/src/components/CdsDivider/CdsDivider.css +0 -18
  73. package/dist/es/src/components/CdsDivider/CdsDivider.vue_vue_type_script_setup_true_lang.js.map +1 -1
  74. package/dist/es/src/components/CdsDivider/api/CdsDivider.props.js +33 -8
  75. package/dist/es/src/components/CdsDivider/api/CdsDivider.props.js.map +1 -1
  76. package/dist/es/src/components/CdsDrawer/CdsDrawer.css +0 -18
  77. package/dist/es/src/components/CdsDrawer/CdsDrawer.vue_vue_type_script_setup_true_lang.js +4 -0
  78. package/dist/es/src/components/CdsDrawer/CdsDrawer.vue_vue_type_script_setup_true_lang.js.map +1 -1
  79. package/dist/es/src/components/CdsDrawer/api/CdsDrawer.props.js +32 -8
  80. package/dist/es/src/components/CdsDrawer/api/CdsDrawer.props.js.map +1 -1
  81. package/dist/es/src/components/CdsEmptyState/CdsEmptyState.css +0 -18
  82. package/dist/es/src/components/CdsEmptyState/api/CdsEmptyState.props.js +33 -8
  83. package/dist/es/src/components/CdsEmptyState/api/CdsEmptyState.props.js.map +1 -1
  84. package/dist/es/src/components/CdsExpandablePanel/CdsExpandablePanel.vue_vue_type_script_setup_true_lang.js +16 -4
  85. package/dist/es/src/components/CdsExpandablePanel/CdsExpandablePanel.vue_vue_type_script_setup_true_lang.js.map +1 -1
  86. package/dist/es/src/components/CdsExpandablePanel/CdsExpandablePanelTitle.vue_vue_type_script_setup_true_lang.js +8 -2
  87. package/dist/es/src/components/CdsExpandablePanel/CdsExpandablePanelTitle.vue_vue_type_script_setup_true_lang.js.map +1 -1
  88. package/dist/es/src/components/CdsExpandablePanel/CdsExpandablePanels.css +0 -18
  89. package/dist/es/src/components/CdsExpandablePanel/CdsExpandablePanels.vue_vue_type_script_setup_true_lang.js +8 -2
  90. package/dist/es/src/components/CdsExpandablePanel/CdsExpandablePanels.vue_vue_type_script_setup_true_lang.js.map +1 -1
  91. package/dist/es/src/components/CdsExpandablePanel/api/CdsExpandablePanel.props.js +38 -9
  92. package/dist/es/src/components/CdsExpandablePanel/api/CdsExpandablePanel.props.js.map +1 -1
  93. package/dist/es/src/components/CdsField/CdsField.css +0 -18
  94. package/dist/es/src/components/CdsField/CdsField.vue_vue_type_script_setup_true_lang.js +13 -3
  95. package/dist/es/src/components/CdsField/CdsField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  96. package/dist/es/src/components/CdsField/api/CdsField.props.js +56 -14
  97. package/dist/es/src/components/CdsField/api/CdsField.props.js.map +1 -1
  98. package/dist/es/src/components/CdsField/composables/useAutocomplete.js +1 -0
  99. package/dist/es/src/components/CdsField/composables/useAutocomplete.js.map +1 -1
  100. package/dist/es/src/components/CdsFileInput/CdsFileInput.css +0 -18
  101. package/dist/es/src/components/CdsFileInput/api/CdsFileInput.props.js +40 -10
  102. package/dist/es/src/components/CdsFileInput/api/CdsFileInput.props.js.map +1 -1
  103. package/dist/es/src/components/CdsFileInput/composables/useFileFilter.js +4 -1
  104. package/dist/es/src/components/CdsFileInput/composables/useFileFilter.js.map +1 -1
  105. package/dist/es/src/components/CdsFileUpload/CdsFileUpload.css +0 -18
  106. package/dist/es/src/components/CdsFileUpload/CdsFileUpload.vue_vue_type_script_setup_true_lang.js +4 -0
  107. package/dist/es/src/components/CdsFileUpload/CdsFileUpload.vue_vue_type_script_setup_true_lang.js.map +1 -1
  108. package/dist/es/src/components/CdsFileUpload/api/CdsFileUpload.props.js +85 -21
  109. package/dist/es/src/components/CdsFileUpload/api/CdsFileUpload.props.js.map +1 -1
  110. package/dist/es/src/components/CdsFooter/CdsFooter.css +0 -18
  111. package/dist/es/src/components/CdsForm/CdsForm.css +0 -18
  112. package/dist/es/src/components/CdsForm/api/CdsForm.props.js +8 -2
  113. package/dist/es/src/components/CdsForm/api/CdsForm.props.js.map +1 -1
  114. package/dist/es/src/components/CdsFunctionalButton/CdsFunctionalButton.css +0 -18
  115. package/dist/es/src/components/CdsFunctionalButton/api/CdsFunctionalButton.props.js +4 -1
  116. package/dist/es/src/components/CdsFunctionalButton/api/CdsFunctionalButton.props.js.map +1 -1
  117. package/dist/es/src/components/CdsGrid/api/CdsGrid.props.js +40 -10
  118. package/dist/es/src/components/CdsGrid/api/CdsGrid.props.js.map +1 -1
  119. package/dist/es/src/components/CdsGrid/components/CSSGrid.css +0 -18
  120. package/dist/es/src/components/CdsGrid/components/FlexGrid.css +0 -18
  121. package/dist/es/src/components/CdsHeader/CdsHeader.css +0 -18
  122. package/dist/es/src/components/CdsHighlight/CdsHighlight.css +0 -18
  123. package/dist/es/src/components/CdsHighlight/api/CdsHighlight.props.js +32 -8
  124. package/dist/es/src/components/CdsHighlight/api/CdsHighlight.props.js.map +1 -1
  125. package/dist/es/src/components/CdsIcon/CdsIcon.css +0 -18
  126. package/dist/es/src/components/CdsIcon/api/CdsIcon.props.js +17 -4
  127. package/dist/es/src/components/CdsIcon/api/CdsIcon.props.js.map +1 -1
  128. package/dist/es/src/components/CdsImage/CdsImage.css +0 -18
  129. package/dist/es/src/components/CdsImage/CdsImage.vue_vue_type_script_setup_true_lang.js +20 -0
  130. package/dist/es/src/components/CdsImage/CdsImage.vue_vue_type_script_setup_true_lang.js.map +1 -1
  131. package/dist/es/src/components/CdsImage/api/CdsImage.props.js +64 -16
  132. package/dist/es/src/components/CdsImage/api/CdsImage.props.js.map +1 -1
  133. package/dist/es/src/components/CdsInput/CdsInput.css +0 -18
  134. package/dist/es/src/components/CdsInput/CdsInput.vue_vue_type_script_setup_true_lang.js +44 -11
  135. package/dist/es/src/components/CdsInput/CdsInput.vue_vue_type_script_setup_true_lang.js.map +1 -1
  136. package/dist/es/src/components/CdsInput/api/CdsInput.props.js +48 -12
  137. package/dist/es/src/components/CdsInput/api/CdsInput.props.js.map +1 -1
  138. package/dist/es/src/components/CdsLabel/CdsLabel.css +0 -18
  139. package/dist/es/src/components/CdsLabel/api/CdsLabel.props.js +4 -0
  140. package/dist/es/src/components/CdsLabel/api/CdsLabel.props.js.map +1 -1
  141. package/dist/es/src/components/CdsLayout/CdsLayout.css +0 -18
  142. package/dist/es/src/components/CdsLayout/api/CdsLayout.props.js +5 -1
  143. package/dist/es/src/components/CdsLayout/api/CdsLayout.props.js.map +1 -1
  144. package/dist/es/src/components/CdsLink/CdsLink.css +0 -18
  145. package/dist/es/src/components/CdsLink/api/CdsLink.props.js +4 -1
  146. package/dist/es/src/components/CdsLink/api/CdsLink.props.js.map +1 -1
  147. package/dist/es/src/components/CdsList/CdsList.css +0 -18
  148. package/dist/es/src/components/CdsList/CdsList.vue_vue_type_script_setup_true_lang.js +25 -7
  149. package/dist/es/src/components/CdsList/CdsList.vue_vue_type_script_setup_true_lang.js.map +1 -1
  150. package/dist/es/src/components/CdsList/CdsListGroup.vue_vue_type_script_setup_true_lang.js +5 -2
  151. package/dist/es/src/components/CdsList/CdsListGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  152. package/dist/es/src/components/CdsList/CdsListItem.css +0 -18
  153. package/dist/es/src/components/CdsList/CdsListItem.vue_vue_type_script_setup_true_lang.js +29 -8
  154. package/dist/es/src/components/CdsList/CdsListItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  155. package/dist/es/src/components/CdsList/CdsListItemAction.vue_vue_type_script_setup_true_lang.js +8 -2
  156. package/dist/es/src/components/CdsList/CdsListItemAction.vue_vue_type_script_setup_true_lang.js.map +1 -1
  157. package/dist/es/src/components/CdsList/CdsListItemDivider.vue_vue_type_script_setup_true_lang.js.map +1 -1
  158. package/dist/es/src/components/CdsList/CdsListItemMedia.vue_vue_type_script_setup_true_lang.js +8 -2
  159. package/dist/es/src/components/CdsList/CdsListItemMedia.vue_vue_type_script_setup_true_lang.js.map +1 -1
  160. package/dist/es/src/components/CdsList/CdsListSubheader.vue_vue_type_script_setup_true_lang.js +1 -1
  161. package/dist/es/src/components/CdsList/CdsListSubheader.vue_vue_type_script_setup_true_lang.js.map +1 -1
  162. package/dist/es/src/components/CdsList/api/CdsList.constants.js +4 -4
  163. package/dist/es/src/components/CdsList/api/CdsList.props.js +147 -39
  164. package/dist/es/src/components/CdsList/api/CdsList.props.js.map +1 -1
  165. package/dist/es/src/components/CdsList/components/ListChildren.vue_vue_type_script_setup_true_lang.js +8 -2
  166. package/dist/es/src/components/CdsList/components/ListChildren.vue_vue_type_script_setup_true_lang.js.map +1 -1
  167. package/dist/es/src/components/CdsList/components/ListGroupActivator.vue_vue_type_script_setup_true_lang.js.map +1 -1
  168. package/dist/es/src/components/CdsList/index.js +5 -2
  169. package/dist/es/src/components/CdsList/index.js.map +1 -1
  170. package/dist/es/src/components/CdsLoader/CdsLoader.css +0 -18
  171. package/dist/es/src/components/CdsLoader/api/CdsLoader.props.js +12 -3
  172. package/dist/es/src/components/CdsLoader/api/CdsLoader.props.js.map +1 -1
  173. package/dist/es/src/components/CdsMain/CdsMain.css +0 -18
  174. package/dist/es/src/components/CdsMenu/CdsMenu.css +0 -18
  175. package/dist/es/src/components/CdsMenu/api/CdsMenu.props.js +8 -2
  176. package/dist/es/src/components/CdsMenu/api/CdsMenu.props.js.map +1 -1
  177. package/dist/es/src/components/CdsMessages/CdsMessages.css +0 -18
  178. package/dist/es/src/components/CdsMessages/api/CdsMessages.props.js +12 -3
  179. package/dist/es/src/components/CdsMessages/api/CdsMessages.props.js.map +1 -1
  180. package/dist/es/src/components/CdsModal/CdsModal.css +0 -18
  181. package/dist/es/src/components/CdsModal/api/CdsModal.props.js +8 -2
  182. package/dist/es/src/components/CdsModal/api/CdsModal.props.js.map +1 -1
  183. package/dist/es/src/components/CdsNotification/CdsNotification.css +0 -18
  184. package/dist/es/src/components/CdsNotification/api/CdsNotification.props.js +28 -7
  185. package/dist/es/src/components/CdsNotification/api/CdsNotification.props.js.map +1 -1
  186. package/dist/es/src/components/CdsNotificationAlert/CdsNotificationAlert.css +0 -18
  187. package/dist/es/src/components/CdsNotificationAlert/api/CdsNotificationAlert.props.js +28 -7
  188. package/dist/es/src/components/CdsNotificationAlert/api/CdsNotificationAlert.props.js.map +1 -1
  189. package/dist/es/src/components/CdsOtpInput/CdsOtpInput.css +0 -18
  190. package/dist/es/src/components/CdsOtpInput/CdsOtpInput.vue_vue_type_script_setup_true_lang.js +20 -5
  191. package/dist/es/src/components/CdsOtpInput/CdsOtpInput.vue_vue_type_script_setup_true_lang.js.map +1 -1
  192. package/dist/es/src/components/CdsOtpInput/api/CdsOtpInput.props.js +52 -13
  193. package/dist/es/src/components/CdsOtpInput/api/CdsOtpInput.props.js.map +1 -1
  194. package/dist/es/src/components/CdsOverlay/CdsOverlay.css +0 -18
  195. package/dist/es/src/components/CdsOverlay/CdsOverlay.vue_vue_type_script_setup_true_lang.js +44 -11
  196. package/dist/es/src/components/CdsOverlay/CdsOverlay.vue_vue_type_script_setup_true_lang.js.map +1 -1
  197. package/dist/es/src/components/CdsOverlay/api/CdsOverlay.props.js +36 -8
  198. package/dist/es/src/components/CdsOverlay/api/CdsOverlay.props.js.map +1 -1
  199. package/dist/es/src/components/CdsOverlay/composables/useActivator.js +25 -6
  200. package/dist/es/src/components/CdsOverlay/composables/useActivator.js.map +1 -1
  201. package/dist/es/src/components/CdsOverlay/composables/useLocationStrategies.js +18 -4
  202. package/dist/es/src/components/CdsOverlay/composables/useLocationStrategies.js.map +1 -1
  203. package/dist/es/src/components/CdsOverlay/composables/useScrollStrategies.js +4 -1
  204. package/dist/es/src/components/CdsOverlay/composables/useScrollStrategies.js.map +1 -1
  205. package/dist/es/src/components/CdsPage/CdsPage.css +0 -18
  206. package/dist/es/src/components/CdsPage/api/CdsPage.props.js +5 -1
  207. package/dist/es/src/components/CdsPage/api/CdsPage.props.js.map +1 -1
  208. package/dist/es/src/components/CdsPagination/CdsPagination.css +0 -18
  209. package/dist/es/src/components/CdsPagination/CdsPagination.vue_vue_type_script_setup_true_lang.js +16 -0
  210. package/dist/es/src/components/CdsPagination/CdsPagination.vue_vue_type_script_setup_true_lang.js.map +1 -1
  211. package/dist/es/src/components/CdsPagination/api/CdsPagination.props.js +84 -21
  212. package/dist/es/src/components/CdsPagination/api/CdsPagination.props.js.map +1 -1
  213. package/dist/es/src/components/CdsProgressBar/CdsProgressBar.css +0 -18
  214. package/dist/es/src/components/CdsProgressBar/api/CdsProgressBar.props.js +64 -16
  215. package/dist/es/src/components/CdsProgressBar/api/CdsProgressBar.props.js.map +1 -1
  216. package/dist/es/src/components/CdsProgressBar/composables/useChunk.js +4 -0
  217. package/dist/es/src/components/CdsProgressBar/composables/useChunk.js.map +1 -1
  218. package/dist/es/src/components/CdsProgressCircle/CdsProgressCircle.css +0 -18
  219. package/dist/es/src/components/CdsProgressCircle/api/CdsProgressCircle.props.js +28 -7
  220. package/dist/es/src/components/CdsProgressCircle/api/CdsProgressCircle.props.js.map +1 -1
  221. package/dist/es/src/components/CdsRadio/CdsRadio.css +0 -18
  222. package/dist/es/src/components/CdsRadioGroup/CdsRadioGroup.css +0 -18
  223. package/dist/es/src/components/CdsRadioGroup/api/CdsRadioGroup.props.js +16 -4
  224. package/dist/es/src/components/CdsRadioGroup/api/CdsRadioGroup.props.js.map +1 -1
  225. package/dist/es/src/components/CdsResponsive/CdsResponsive.css +0 -18
  226. package/dist/es/src/components/CdsResponsive/api/CdsResponsive.props.js +12 -3
  227. package/dist/es/src/components/CdsResponsive/api/CdsResponsive.props.js.map +1 -1
  228. package/dist/es/src/components/CdsSelect/CdsSelect.css +0 -18
  229. package/dist/es/src/components/CdsSelect/CdsSelect.vue_vue_type_script_setup_true_lang.js +16 -4
  230. package/dist/es/src/components/CdsSelect/CdsSelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
  231. package/dist/es/src/components/CdsSelect/api/CdsSelect.props.js +4 -1
  232. package/dist/es/src/components/CdsSelect/api/CdsSelect.props.js.map +1 -1
  233. package/dist/es/src/components/CdsSelect/composables/useMenuActivator.js +8 -2
  234. package/dist/es/src/components/CdsSelect/composables/useMenuActivator.js.map +1 -1
  235. package/dist/es/src/components/CdsSelect/composables/useSelect.js +69 -17
  236. package/dist/es/src/components/CdsSelect/composables/useSelect.js.map +1 -1
  237. package/dist/es/src/components/CdsSelectionControl/CdsSelectionControl.css +0 -18
  238. package/dist/es/src/components/CdsSelectionControl/CdsSelectionControl.vue_vue_type_script_setup_true_lang.js +8 -0
  239. package/dist/es/src/components/CdsSelectionControl/CdsSelectionControl.vue_vue_type_script_setup_true_lang.js.map +1 -1
  240. package/dist/es/src/components/CdsSelectionControl/api/CdsSelectionControl.props.js +12 -3
  241. package/dist/es/src/components/CdsSelectionControl/api/CdsSelectionControl.props.js.map +1 -1
  242. package/dist/es/src/components/CdsSelectionControlGroup/CdsSelectionControlGroup.css +0 -18
  243. package/dist/es/src/components/CdsSelectionControlGroup/api/CdsSelectionControlGroup.props.js +44 -11
  244. package/dist/es/src/components/CdsSelectionControlGroup/api/CdsSelectionControlGroup.props.js.map +1 -1
  245. package/dist/es/src/components/CdsSkeletonLoader/CdsSkeletonLoader.css +0 -18
  246. package/dist/es/src/components/CdsSkeletonLoader/api/CdsSkeletonLoader.props.js +16 -4
  247. package/dist/es/src/components/CdsSkeletonLoader/api/CdsSkeletonLoader.props.js.map +1 -1
  248. package/dist/es/src/components/CdsSkeletonLoader/api/CdsSkeletonLoader.types.js.map +1 -1
  249. package/dist/es/src/components/CdsSlideGroup/CdsSlideGroup.css +0 -18
  250. package/dist/es/src/components/CdsSlideGroup/CdsSlideGroup.vue_vue_type_script_setup_true_lang.js +24 -6
  251. package/dist/es/src/components/CdsSlideGroup/CdsSlideGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  252. package/dist/es/src/components/CdsSlideGroup/api/CdsSlideGroup.props.js +25 -6
  253. package/dist/es/src/components/CdsSlideGroup/api/CdsSlideGroup.props.js.map +1 -1
  254. package/dist/es/src/components/CdsSlideView/CdsSlideView.css +0 -18
  255. package/dist/es/src/components/CdsSlideView/CdsSlideView.vue_vue_type_script_setup_true_lang.js +4 -0
  256. package/dist/es/src/components/CdsSlideView/CdsSlideView.vue_vue_type_script_setup_true_lang.js.map +1 -1
  257. package/dist/es/src/components/CdsSlideView/CdsSlideViewItem.vue_vue_type_script_setup_true_lang.js +5 -1
  258. package/dist/es/src/components/CdsSlideView/CdsSlideViewItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  259. package/dist/es/src/components/CdsSlideView/api/CdsSlideView.props.js +44 -0
  260. package/dist/es/src/components/CdsSlideView/api/CdsSlideView.props.js.map +1 -1
  261. package/dist/es/src/components/CdsStages/CdsStages.css +0 -18
  262. package/dist/es/src/components/CdsStages/CdsStages.vue_vue_type_script_setup_true_lang.js +8 -0
  263. package/dist/es/src/components/CdsStages/CdsStages.vue_vue_type_script_setup_true_lang.js.map +1 -1
  264. package/dist/es/src/components/CdsStages/api/CdsStages.props.js +8 -2
  265. package/dist/es/src/components/CdsStages/api/CdsStages.props.js.map +1 -1
  266. package/dist/es/src/components/CdsStatus/CdsStatus.css +0 -18
  267. package/dist/es/src/components/CdsStatus/api/CdsStatus.props.js +4 -1
  268. package/dist/es/src/components/CdsStatus/api/CdsStatus.props.js.map +1 -1
  269. package/dist/es/src/components/CdsSteps/CdsSteps.css +0 -18
  270. package/dist/es/src/components/CdsSteps/CdsSteps.vue_vue_type_script_setup_true_lang.js +8 -0
  271. package/dist/es/src/components/CdsSteps/CdsSteps.vue_vue_type_script_setup_true_lang.js.map +1 -1
  272. package/dist/es/src/components/CdsSteps/api/CdsSteps.props.js +44 -11
  273. package/dist/es/src/components/CdsSteps/api/CdsSteps.props.js.map +1 -1
  274. package/dist/es/src/components/CdsSurface/CdsSurface.css +0 -18
  275. package/dist/es/src/components/CdsSurface/api/CdsSurface.props.js +4 -1
  276. package/dist/es/src/components/CdsSurface/api/CdsSurface.props.js.map +1 -1
  277. package/dist/es/src/components/CdsTable/CdsTable.css +0 -18
  278. package/dist/es/src/components/CdsTable/CdsTable.vue_vue_type_script_setup_true_lang.js +4 -0
  279. package/dist/es/src/components/CdsTable/CdsTable.vue_vue_type_script_setup_true_lang.js.map +1 -1
  280. package/dist/es/src/components/CdsTable/composable/table.js +47 -0
  281. package/dist/es/src/components/CdsTable/composable/table.js.map +1 -1
  282. package/dist/es/src/components/CdsTabs/CdsTabs.css +0 -18
  283. package/dist/es/src/components/CdsTabs/api/CdsTabs.props.js +56 -0
  284. package/dist/es/src/components/CdsTabs/api/CdsTabs.props.js.map +1 -1
  285. package/dist/es/src/components/CdsTag/CdsTag.css +0 -18
  286. package/dist/es/src/components/CdsTag/api/CdsTag.props.js +72 -18
  287. package/dist/es/src/components/CdsTag/api/CdsTag.props.js.map +1 -1
  288. package/dist/es/src/components/CdsTagGroup/CdsTagGroup.css +0 -18
  289. package/dist/es/src/components/CdsTagGroup/CdsTagGroup.vue_vue_type_script_setup_true_lang.js +20 -5
  290. package/dist/es/src/components/CdsTagGroup/CdsTagGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  291. package/dist/es/src/components/CdsTagGroup/api/CdsTagGroup.props.js +11 -3
  292. package/dist/es/src/components/CdsTagGroup/api/CdsTagGroup.props.js.map +1 -1
  293. package/dist/es/src/components/CdsTextArea/CdsTextArea.css +0 -18
  294. package/dist/es/src/components/CdsTextArea/api/CdsTextArea.props.js +52 -13
  295. package/dist/es/src/components/CdsTextArea/api/CdsTextArea.props.js.map +1 -1
  296. package/dist/es/src/components/CdsTextInput/CdsTextInput.css +0 -18
  297. package/dist/es/src/components/CdsTextInput/api/CdsTextInput.props.js +40 -10
  298. package/dist/es/src/components/CdsTextInput/api/CdsTextInput.props.js.map +1 -1
  299. package/dist/es/src/components/CdsTimePicker/CdsTimePicker.css +0 -18
  300. package/dist/es/src/components/CdsTimePicker/CdsTimePicker.vue_vue_type_script_setup_true_lang.js +24 -0
  301. package/dist/es/src/components/CdsTimePicker/CdsTimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  302. package/dist/es/src/components/CdsTimePicker/api/CdsTimePicker.props.js +32 -8
  303. package/dist/es/src/components/CdsTimePicker/api/CdsTimePicker.props.js.map +1 -1
  304. package/dist/es/src/components/CdsToast/CdsToast.css +0 -18
  305. package/dist/es/src/components/CdsToast/api/CdsToast.props.js +48 -12
  306. package/dist/es/src/components/CdsToast/api/CdsToast.props.js.map +1 -1
  307. package/dist/es/src/components/CdsToastQueue/CdsToastQueue.vue_vue_type_script_setup_true_lang.js +4 -1
  308. package/dist/es/src/components/CdsToastQueue/CdsToastQueue.vue_vue_type_script_setup_true_lang.js.map +1 -1
  309. package/dist/es/src/components/CdsToastQueue/api/CdsToastQueue.props.js +28 -7
  310. package/dist/es/src/components/CdsToastQueue/api/CdsToastQueue.props.js.map +1 -1
  311. package/dist/es/src/components/CdsToggle/CdsToggle.css +0 -18
  312. package/dist/es/src/components/CdsToggle/api/CdsToggle.props.js +12 -3
  313. package/dist/es/src/components/CdsToggle/api/CdsToggle.props.js.map +1 -1
  314. package/dist/es/src/components/CdsToolbar/CdsToolbar.css +0 -18
  315. package/dist/es/src/components/CdsToolbar/api/CdsToolbar.props.js +20 -5
  316. package/dist/es/src/components/CdsToolbar/api/CdsToolbar.props.js.map +1 -1
  317. package/dist/es/src/components/CdsTooltip/CdsTooltip.css +0 -18
  318. package/dist/es/src/components/CdsTooltip/api/CdsTooltip.props.js +20 -5
  319. package/dist/es/src/components/CdsTooltip/api/CdsTooltip.props.js.map +1 -1
  320. package/dist/es/src/components/CdsTree/CdsTree.css +0 -18
  321. package/dist/es/src/components/CdsTree/CdsTree.vue_vue_type_script_setup_true_lang.js +16 -0
  322. package/dist/es/src/components/CdsTree/CdsTree.vue_vue_type_script_setup_true_lang.js.map +1 -1
  323. package/dist/es/src/components/CdsTree/composable/tree.js +28 -0
  324. package/dist/es/src/components/CdsTree/composable/tree.js.map +1 -1
  325. package/dist/es/src/components/CdsTree/composable/treeNode.js +68 -2
  326. package/dist/es/src/components/CdsTree/composable/treeNode.js.map +1 -1
  327. package/dist/es/src/components/CdsUploader/CdsUploader.css +0 -18
  328. package/dist/es/src/components/CdsUploader/CdsUploader.vue_vue_type_script_setup_true_lang.js +8 -0
  329. package/dist/es/src/components/CdsUploader/CdsUploader.vue_vue_type_script_setup_true_lang.js.map +1 -1
  330. package/dist/es/src/components/CdsUploader/composables/useUpload.js +104 -26
  331. package/dist/es/src/components/CdsUploader/composables/useUpload.js.map +1 -1
  332. package/dist/es/src/components/CdsVirtualScroll/CdsVirtualScroll.css +0 -18
  333. package/dist/es/src/components/CdsVirtualScroll/CdsVirtualScroll.vue_vue_type_script_setup_true_lang.js +8 -0
  334. package/dist/es/src/components/CdsVirtualScroll/CdsVirtualScroll.vue_vue_type_script_setup_true_lang.js.map +1 -1
  335. package/dist/es/src/components/CdsVirtualScroll/api/CdsVirtualScroll.props.js +12 -3
  336. package/dist/es/src/components/CdsVirtualScroll/api/CdsVirtualScroll.props.js.map +1 -1
  337. package/dist/es/src/components/index.js +2 -1
  338. package/dist/es/src/components/index.js.map +1 -1
  339. package/dist/es/src/composables/useAppearance/useAppearance.js +4 -1
  340. package/dist/es/src/composables/useAppearance/useAppearance.js.map +1 -1
  341. package/dist/es/src/composables/useColor/useColor.js +20 -5
  342. package/dist/es/src/composables/useColor/useColor.js.map +1 -1
  343. package/dist/es/src/composables/useDatetime/useDatetime.js +3 -0
  344. package/dist/es/src/composables/useDatetime/useDatetime.js.map +1 -1
  345. package/dist/es/src/composables/useDelay/useDelay.js +8 -2
  346. package/dist/es/src/composables/useDelay/useDelay.js.map +1 -1
  347. package/dist/es/src/composables/useDimensions/useDimensions.js +24 -6
  348. package/dist/es/src/composables/useDimensions/useDimensions.js.map +1 -1
  349. package/dist/es/src/composables/useDirection/useDirection.js +4 -1
  350. package/dist/es/src/composables/useDirection/useDirection.js.map +1 -1
  351. package/dist/es/src/composables/useDisabled/useDisabled.js +4 -1
  352. package/dist/es/src/composables/useDisabled/useDisabled.js.map +1 -1
  353. package/dist/es/src/composables/useDisplay/useDisplay.js +2 -0
  354. package/dist/es/src/composables/useDisplay/useDisplay.js.map +1 -1
  355. package/dist/es/src/composables/useFilter/useFilter.js +20 -0
  356. package/dist/es/src/composables/useFilter/useFilter.js.map +1 -1
  357. package/dist/es/src/composables/useFocus/useFocus.js +12 -3
  358. package/dist/es/src/composables/useFocus/useFocus.js.map +1 -1
  359. package/dist/es/src/composables/useFocus/useFocusTrap.js +8 -2
  360. package/dist/es/src/composables/useFocus/useFocusTrap.js.map +1 -1
  361. package/dist/es/src/composables/useForm/useForm.js +45 -0
  362. package/dist/es/src/composables/useForm/useForm.js.map +1 -1
  363. package/dist/es/src/composables/useGroup/useGroup.js +24 -6
  364. package/dist/es/src/composables/useGroup/useGroup.js.map +1 -1
  365. package/dist/es/src/composables/useGroup/useGroupItem.js +8 -2
  366. package/dist/es/src/composables/useGroup/useGroupItem.js.map +1 -1
  367. package/dist/es/src/composables/useItems/useItems.js +32 -8
  368. package/dist/es/src/composables/useItems/useItems.js.map +1 -1
  369. package/dist/es/src/composables/useLayout/context.js.map +1 -1
  370. package/dist/es/src/composables/useLayout/useLayout.js +24 -6
  371. package/dist/es/src/composables/useLayout/useLayout.js.map +1 -1
  372. package/dist/es/src/composables/useLazy/useLazy.js +1 -0
  373. package/dist/es/src/composables/useLazy/useLazy.js.map +1 -1
  374. package/dist/es/src/composables/useLoader/useLoader.js +4 -1
  375. package/dist/es/src/composables/useLoader/useLoader.js.map +1 -1
  376. package/dist/es/src/composables/useLocation/useLocation.js +4 -1
  377. package/dist/es/src/composables/useLocation/useLocation.js.map +1 -1
  378. package/dist/es/src/composables/useNested/useNested.js +44 -11
  379. package/dist/es/src/composables/useNested/useNested.js.map +1 -1
  380. package/dist/es/src/composables/usePosition/usePosition.js +4 -0
  381. package/dist/es/src/composables/usePosition/usePosition.js.map +1 -1
  382. package/dist/es/src/composables/useReadonly/useReadonly.js +4 -1
  383. package/dist/es/src/composables/useReadonly/useReadonly.js.map +1 -1
  384. package/dist/es/src/composables/useReveal/useReveal.js +4 -1
  385. package/dist/es/src/composables/useReveal/useReveal.js.map +1 -1
  386. package/dist/es/src/composables/useRouter/useRouter.js +16 -4
  387. package/dist/es/src/composables/useRouter/useRouter.js.map +1 -1
  388. package/dist/es/src/composables/useSize/useSize.js +4 -1
  389. package/dist/es/src/composables/useSize/useSize.js.map +1 -1
  390. package/dist/es/src/composables/useStatus/useStatus.js +4 -1
  391. package/dist/es/src/composables/useStatus/useStatus.js.map +1 -1
  392. package/dist/es/src/composables/useText/useText.js +8 -2
  393. package/dist/es/src/composables/useText/useText.js.map +1 -1
  394. package/dist/es/src/composables/useTheme/useTheme.js +4 -1
  395. package/dist/es/src/composables/useTheme/useTheme.js.map +1 -1
  396. package/dist/es/src/composables/useTransition/useTransition.js +4 -1
  397. package/dist/es/src/composables/useTransition/useTransition.js.map +1 -1
  398. package/dist/es/src/composables/useValidation/useValidation.js +26 -6
  399. package/dist/es/src/composables/useValidation/useValidation.js.map +1 -1
  400. package/dist/es/src/composables/useVirtual/useVirtual.js +12 -3
  401. package/dist/es/src/composables/useVirtual/useVirtual.js.map +1 -1
  402. package/dist/es/src/core/defineComponent.js +4 -1
  403. package/dist/es/src/core/defineComponent.js.map +1 -1
  404. package/dist/es/src/themes/lumaDark.js +8 -4
  405. package/dist/es/src/themes/lumaDark.js.map +1 -1
  406. package/dist/es/src/utils/date/date.js +4 -4
  407. package/dist/es/src/utils/date/date.js.map +1 -1
  408. package/dist/esm-node/entry.css +0 -18
  409. package/dist/esm-node/entry.mjs +3 -2
  410. package/dist/esm-node/src/cds.mjs +1 -1
  411. package/dist/esm-node/src/components/CdsApp/CdsApp.css +0 -18
  412. package/dist/esm-node/src/components/CdsApp/api/CdsApp.props.mjs +1 -0
  413. package/dist/esm-node/src/components/CdsAutocomplete/CdsAutocomplete.css +0 -18
  414. package/dist/esm-node/src/components/CdsAutocomplete/CdsAutocomplete.vue_vue_type_script_setup_true_lang.mjs +20 -5
  415. package/dist/esm-node/src/components/CdsAutocomplete/api/CdsAutocomplete.props.mjs +9 -2
  416. package/dist/esm-node/src/components/CdsAvatar/CdsAvatar.css +0 -18
  417. package/dist/esm-node/src/components/CdsAvatar/api/CdsAvatar.props.mjs +20 -5
  418. package/dist/esm-node/src/components/CdsBadge/CdsBadge.css +0 -18
  419. package/dist/esm-node/src/components/CdsBadge/api/CdsBadge.props.mjs +37 -9
  420. package/dist/esm-node/src/components/CdsBreadcrumbs/CdsBreadcrumbs.css +0 -18
  421. package/dist/esm-node/src/components/CdsBreadcrumbs/api/CdsBreadcrumbs.props.mjs +32 -8
  422. package/dist/esm-node/src/components/CdsButton/CdsButton.css +0 -18
  423. package/dist/esm-node/src/components/CdsButton/CdsButton.vue_vue_type_script_setup_true_lang.mjs +4 -1
  424. package/dist/esm-node/src/components/CdsButton/api/CdsButton.props.mjs +28 -7
  425. package/dist/esm-node/src/components/CdsButtonGroup/CdsButtonGroup.css +0 -18
  426. package/dist/esm-node/src/components/CdsButtonGroup/api/CdsButtonGroup.props.mjs +4 -1
  427. package/dist/esm-node/src/components/CdsButtonToggle/CdsButtonToggle.css +0 -18
  428. package/dist/esm-node/src/components/CdsButtonToggle/CdsButtonToggle.vue_vue_type_script_setup_true_lang.mjs +20 -5
  429. package/dist/esm-node/src/components/CdsCard/CdsCard.css +0 -18
  430. package/dist/esm-node/src/components/CdsCard/CdsCard.vue_vue_type_script_setup_true_lang.mjs +1 -1
  431. package/dist/esm-node/src/components/CdsCard/CdsCardActions.vue_vue_type_script_setup_true_lang.mjs +1 -1
  432. package/dist/esm-node/src/components/CdsCard/CdsCardDivider.vue_vue_type_script_setup_true_lang.mjs +1 -1
  433. package/dist/esm-node/src/components/CdsCard/CdsCardGroup.vue_vue_type_script_setup_true_lang.mjs +21 -6
  434. package/dist/esm-node/src/components/CdsCard/CdsCardItem.vue_vue_type_script_setup_true_lang.mjs +1 -1
  435. package/dist/esm-node/src/components/CdsCard/CdsCardSubtitle.vue_vue_type_script_setup_true_lang.mjs +1 -1
  436. package/dist/esm-node/src/components/CdsCard/CdsCardText.vue_vue_type_script_setup_true_lang.mjs +1 -1
  437. package/dist/esm-node/src/components/CdsCard/CdsCardTitle.vue_vue_type_script_setup_true_lang.mjs +1 -1
  438. package/dist/esm-node/src/components/CdsCard/api/CdsCard.constants.mjs +9 -9
  439. package/dist/esm-node/src/components/CdsCard/api/CdsCard.props.mjs +85 -21
  440. package/dist/esm-node/src/components/CdsCard/index.mjs +1 -1
  441. package/dist/esm-node/src/components/CdsCarousel/CdsCarousel.css +0 -18
  442. package/dist/esm-node/src/components/CdsCarousel/api/CdsCarousel.props.mjs +36 -9
  443. package/dist/esm-node/src/components/CdsCheckbox/CdsCheckbox.css +0 -18
  444. package/dist/esm-node/src/components/CdsCheckboxButton/CdsCheckboxButton.css +0 -18
  445. package/dist/esm-node/src/components/CdsCheckboxButton/api/CdsCheckboxButton.props.mjs +8 -2
  446. package/dist/esm-node/src/components/CdsCombobox/CdsCombobox.css +0 -18
  447. package/dist/esm-node/src/components/CdsCombobox/CdsCombobox.vue_vue_type_script_setup_true_lang.mjs +24 -6
  448. package/dist/esm-node/src/components/CdsCombobox/api/CdsCombobox.props.mjs +13 -3
  449. package/dist/esm-node/src/components/CdsCounter/CdsCounter.css +0 -18
  450. package/dist/esm-node/src/components/CdsCounter/api/CdsCounter.props.mjs +12 -3
  451. package/dist/esm-node/src/components/CdsDateInput/CdsDateInput.css +0 -18
  452. package/dist/esm-node/src/components/CdsDateInput/CdsDateInput.vue_vue_type_script_setup_true_lang.mjs +8 -0
  453. package/dist/esm-node/src/components/CdsDateInput/api/CdsDateInput.props.mjs +31 -7
  454. package/dist/esm-node/src/components/CdsDatePicker/CdsDatePicker.css +0 -18
  455. package/dist/esm-node/src/components/CdsDatePicker/CdsDatePicker.vue_vue_type_script_setup_true_lang.mjs +20 -0
  456. package/dist/esm-node/src/components/CdsDatePicker/api/CdsDatePicker.props.mjs +64 -15
  457. package/dist/esm-node/src/components/CdsDefaultsProvider/api/CdsDefaultsProvider.props.mjs +5 -0
  458. package/dist/esm-node/src/components/CdsDescription/CdsDescription.css +0 -18
  459. package/dist/esm-node/src/components/CdsDivider/CdsDivider.css +0 -18
  460. package/dist/esm-node/src/components/CdsDivider/api/CdsDivider.props.mjs +33 -8
  461. package/dist/esm-node/src/components/CdsDrawer/CdsDrawer.css +0 -18
  462. package/dist/esm-node/src/components/CdsDrawer/CdsDrawer.vue_vue_type_script_setup_true_lang.mjs +4 -0
  463. package/dist/esm-node/src/components/CdsDrawer/api/CdsDrawer.props.mjs +32 -8
  464. package/dist/esm-node/src/components/CdsEmptyState/CdsEmptyState.css +0 -18
  465. package/dist/esm-node/src/components/CdsEmptyState/api/CdsEmptyState.props.mjs +33 -8
  466. package/dist/esm-node/src/components/CdsExpandablePanel/CdsExpandablePanel.vue_vue_type_script_setup_true_lang.mjs +16 -4
  467. package/dist/esm-node/src/components/CdsExpandablePanel/CdsExpandablePanelTitle.vue_vue_type_script_setup_true_lang.mjs +8 -2
  468. package/dist/esm-node/src/components/CdsExpandablePanel/CdsExpandablePanels.css +0 -18
  469. package/dist/esm-node/src/components/CdsExpandablePanel/CdsExpandablePanels.vue_vue_type_script_setup_true_lang.mjs +8 -2
  470. package/dist/esm-node/src/components/CdsExpandablePanel/api/CdsExpandablePanel.props.mjs +38 -9
  471. package/dist/esm-node/src/components/CdsField/CdsField.css +0 -18
  472. package/dist/esm-node/src/components/CdsField/CdsField.vue_vue_type_script_setup_true_lang.mjs +13 -3
  473. package/dist/esm-node/src/components/CdsField/api/CdsField.props.mjs +56 -14
  474. package/dist/esm-node/src/components/CdsField/composables/useAutocomplete.mjs +1 -0
  475. package/dist/esm-node/src/components/CdsFileInput/CdsFileInput.css +0 -18
  476. package/dist/esm-node/src/components/CdsFileInput/api/CdsFileInput.props.mjs +40 -10
  477. package/dist/esm-node/src/components/CdsFileInput/composables/useFileFilter.mjs +4 -1
  478. package/dist/esm-node/src/components/CdsFileUpload/CdsFileUpload.css +0 -18
  479. package/dist/esm-node/src/components/CdsFileUpload/CdsFileUpload.vue_vue_type_script_setup_true_lang.mjs +4 -0
  480. package/dist/esm-node/src/components/CdsFileUpload/api/CdsFileUpload.props.mjs +85 -21
  481. package/dist/esm-node/src/components/CdsFooter/CdsFooter.css +0 -18
  482. package/dist/esm-node/src/components/CdsForm/CdsForm.css +0 -18
  483. package/dist/esm-node/src/components/CdsForm/api/CdsForm.props.mjs +8 -2
  484. package/dist/esm-node/src/components/CdsFunctionalButton/CdsFunctionalButton.css +0 -18
  485. package/dist/esm-node/src/components/CdsFunctionalButton/api/CdsFunctionalButton.props.mjs +4 -1
  486. package/dist/esm-node/src/components/CdsGrid/api/CdsGrid.props.mjs +40 -10
  487. package/dist/esm-node/src/components/CdsGrid/components/CSSGrid.css +0 -18
  488. package/dist/esm-node/src/components/CdsGrid/components/FlexGrid.css +0 -18
  489. package/dist/esm-node/src/components/CdsHeader/CdsHeader.css +0 -18
  490. package/dist/esm-node/src/components/CdsHighlight/CdsHighlight.css +0 -18
  491. package/dist/esm-node/src/components/CdsHighlight/api/CdsHighlight.props.mjs +32 -8
  492. package/dist/esm-node/src/components/CdsIcon/CdsIcon.css +0 -18
  493. package/dist/esm-node/src/components/CdsIcon/api/CdsIcon.props.mjs +17 -4
  494. package/dist/esm-node/src/components/CdsImage/CdsImage.css +0 -18
  495. package/dist/esm-node/src/components/CdsImage/CdsImage.vue_vue_type_script_setup_true_lang.mjs +20 -0
  496. package/dist/esm-node/src/components/CdsImage/api/CdsImage.props.mjs +64 -16
  497. package/dist/esm-node/src/components/CdsInput/CdsInput.css +0 -18
  498. package/dist/esm-node/src/components/CdsInput/CdsInput.vue_vue_type_script_setup_true_lang.mjs +44 -11
  499. package/dist/esm-node/src/components/CdsInput/api/CdsInput.props.mjs +48 -12
  500. package/dist/esm-node/src/components/CdsLabel/CdsLabel.css +0 -18
  501. package/dist/esm-node/src/components/CdsLabel/api/CdsLabel.props.mjs +4 -0
  502. package/dist/esm-node/src/components/CdsLayout/CdsLayout.css +0 -18
  503. package/dist/esm-node/src/components/CdsLayout/api/CdsLayout.props.mjs +5 -1
  504. package/dist/esm-node/src/components/CdsLink/CdsLink.css +0 -18
  505. package/dist/esm-node/src/components/CdsLink/api/CdsLink.props.mjs +4 -1
  506. package/dist/esm-node/src/components/CdsList/CdsList.css +0 -18
  507. package/dist/esm-node/src/components/CdsList/CdsList.vue_vue_type_script_setup_true_lang.mjs +24 -6
  508. package/dist/esm-node/src/components/CdsList/CdsListGroup.vue_vue_type_script_setup_true_lang.mjs +4 -1
  509. package/dist/esm-node/src/components/CdsList/CdsListItem.css +0 -18
  510. package/dist/esm-node/src/components/CdsList/CdsListItem.vue_vue_type_script_setup_true_lang.mjs +28 -7
  511. package/dist/esm-node/src/components/CdsList/CdsListItemAction.vue_vue_type_script_setup_true_lang.mjs +8 -2
  512. package/dist/esm-node/src/components/CdsList/CdsListItemMedia.vue_vue_type_script_setup_true_lang.mjs +8 -2
  513. package/dist/esm-node/src/components/CdsList/api/CdsList.props.mjs +144 -36
  514. package/dist/esm-node/src/components/CdsList/components/ListChildren.vue_vue_type_script_setup_true_lang.mjs +8 -2
  515. package/dist/esm-node/src/components/CdsList/index.mjs +5 -2
  516. package/dist/esm-node/src/components/CdsLoader/CdsLoader.css +0 -18
  517. package/dist/esm-node/src/components/CdsLoader/api/CdsLoader.props.mjs +12 -3
  518. package/dist/esm-node/src/components/CdsMain/CdsMain.css +0 -18
  519. package/dist/esm-node/src/components/CdsMenu/CdsMenu.css +0 -18
  520. package/dist/esm-node/src/components/CdsMenu/api/CdsMenu.props.mjs +8 -2
  521. package/dist/esm-node/src/components/CdsMessages/CdsMessages.css +0 -18
  522. package/dist/esm-node/src/components/CdsMessages/api/CdsMessages.props.mjs +12 -3
  523. package/dist/esm-node/src/components/CdsModal/CdsModal.css +0 -18
  524. package/dist/esm-node/src/components/CdsModal/api/CdsModal.props.mjs +8 -2
  525. package/dist/esm-node/src/components/CdsNotification/CdsNotification.css +0 -18
  526. package/dist/esm-node/src/components/CdsNotification/api/CdsNotification.props.mjs +28 -7
  527. package/dist/esm-node/src/components/CdsNotificationAlert/CdsNotificationAlert.css +0 -18
  528. package/dist/esm-node/src/components/CdsNotificationAlert/api/CdsNotificationAlert.props.mjs +28 -7
  529. package/dist/esm-node/src/components/CdsOtpInput/CdsOtpInput.css +0 -18
  530. package/dist/esm-node/src/components/CdsOtpInput/CdsOtpInput.vue_vue_type_script_setup_true_lang.mjs +20 -5
  531. package/dist/esm-node/src/components/CdsOtpInput/api/CdsOtpInput.props.mjs +52 -13
  532. package/dist/esm-node/src/components/CdsOverlay/CdsOverlay.css +0 -18
  533. package/dist/esm-node/src/components/CdsOverlay/CdsOverlay.vue_vue_type_script_setup_true_lang.mjs +44 -11
  534. package/dist/esm-node/src/components/CdsOverlay/api/CdsOverlay.props.mjs +36 -8
  535. package/dist/esm-node/src/components/CdsOverlay/composables/useActivator.mjs +25 -6
  536. package/dist/esm-node/src/components/CdsOverlay/composables/useLocationStrategies.mjs +18 -4
  537. package/dist/esm-node/src/components/CdsOverlay/composables/useScrollStrategies.mjs +4 -1
  538. package/dist/esm-node/src/components/CdsPage/CdsPage.css +0 -18
  539. package/dist/esm-node/src/components/CdsPage/api/CdsPage.props.mjs +5 -1
  540. package/dist/esm-node/src/components/CdsPagination/CdsPagination.css +0 -18
  541. package/dist/esm-node/src/components/CdsPagination/CdsPagination.vue_vue_type_script_setup_true_lang.mjs +16 -0
  542. package/dist/esm-node/src/components/CdsPagination/api/CdsPagination.props.mjs +84 -21
  543. package/dist/esm-node/src/components/CdsProgressBar/CdsProgressBar.css +0 -18
  544. package/dist/esm-node/src/components/CdsProgressBar/api/CdsProgressBar.props.mjs +64 -16
  545. package/dist/esm-node/src/components/CdsProgressBar/composables/useChunk.mjs +4 -0
  546. package/dist/esm-node/src/components/CdsProgressCircle/CdsProgressCircle.css +0 -18
  547. package/dist/esm-node/src/components/CdsProgressCircle/api/CdsProgressCircle.props.mjs +28 -7
  548. package/dist/esm-node/src/components/CdsRadio/CdsRadio.css +0 -18
  549. package/dist/esm-node/src/components/CdsRadioGroup/CdsRadioGroup.css +0 -18
  550. package/dist/esm-node/src/components/CdsRadioGroup/api/CdsRadioGroup.props.mjs +16 -4
  551. package/dist/esm-node/src/components/CdsResponsive/CdsResponsive.css +0 -18
  552. package/dist/esm-node/src/components/CdsResponsive/api/CdsResponsive.props.mjs +12 -3
  553. package/dist/esm-node/src/components/CdsSelect/CdsSelect.css +0 -18
  554. package/dist/esm-node/src/components/CdsSelect/CdsSelect.vue_vue_type_script_setup_true_lang.mjs +16 -4
  555. package/dist/esm-node/src/components/CdsSelect/api/CdsSelect.props.mjs +4 -1
  556. package/dist/esm-node/src/components/CdsSelect/composables/useMenuActivator.mjs +8 -2
  557. package/dist/esm-node/src/components/CdsSelect/composables/useSelect.mjs +69 -17
  558. package/dist/esm-node/src/components/CdsSelectionControl/CdsSelectionControl.css +0 -18
  559. package/dist/esm-node/src/components/CdsSelectionControl/CdsSelectionControl.vue_vue_type_script_setup_true_lang.mjs +8 -0
  560. package/dist/esm-node/src/components/CdsSelectionControl/api/CdsSelectionControl.props.mjs +12 -3
  561. package/dist/esm-node/src/components/CdsSelectionControlGroup/CdsSelectionControlGroup.css +0 -18
  562. package/dist/esm-node/src/components/CdsSelectionControlGroup/api/CdsSelectionControlGroup.props.mjs +44 -11
  563. package/dist/esm-node/src/components/CdsSkeletonLoader/CdsSkeletonLoader.css +0 -18
  564. package/dist/esm-node/src/components/CdsSkeletonLoader/api/CdsSkeletonLoader.props.mjs +16 -4
  565. package/dist/esm-node/src/components/CdsSlideGroup/CdsSlideGroup.css +0 -18
  566. package/dist/esm-node/src/components/CdsSlideGroup/CdsSlideGroup.vue_vue_type_script_setup_true_lang.mjs +24 -6
  567. package/dist/esm-node/src/components/CdsSlideGroup/api/CdsSlideGroup.props.mjs +25 -6
  568. package/dist/esm-node/src/components/CdsSlideView/CdsSlideView.css +0 -18
  569. package/dist/esm-node/src/components/CdsSlideView/CdsSlideView.vue_vue_type_script_setup_true_lang.mjs +4 -0
  570. package/dist/esm-node/src/components/CdsSlideView/CdsSlideViewItem.vue_vue_type_script_setup_true_lang.mjs +5 -1
  571. package/dist/esm-node/src/components/CdsSlideView/api/CdsSlideView.props.mjs +44 -0
  572. package/dist/esm-node/src/components/CdsStages/CdsStages.css +0 -18
  573. package/dist/esm-node/src/components/CdsStages/CdsStages.vue_vue_type_script_setup_true_lang.mjs +8 -0
  574. package/dist/esm-node/src/components/CdsStages/api/CdsStages.props.mjs +8 -2
  575. package/dist/esm-node/src/components/CdsStatus/CdsStatus.css +0 -18
  576. package/dist/esm-node/src/components/CdsStatus/api/CdsStatus.props.mjs +4 -1
  577. package/dist/esm-node/src/components/CdsSteps/CdsSteps.css +0 -18
  578. package/dist/esm-node/src/components/CdsSteps/CdsSteps.vue_vue_type_script_setup_true_lang.mjs +8 -0
  579. package/dist/esm-node/src/components/CdsSteps/api/CdsSteps.props.mjs +44 -11
  580. package/dist/esm-node/src/components/CdsSurface/CdsSurface.css +0 -18
  581. package/dist/esm-node/src/components/CdsSurface/api/CdsSurface.props.mjs +4 -1
  582. package/dist/esm-node/src/components/CdsTable/CdsTable.css +0 -18
  583. package/dist/esm-node/src/components/CdsTable/CdsTable.vue_vue_type_script_setup_true_lang.mjs +4 -0
  584. package/dist/esm-node/src/components/CdsTable/composable/table.mjs +47 -0
  585. package/dist/esm-node/src/components/CdsTabs/CdsTabs.css +0 -18
  586. package/dist/esm-node/src/components/CdsTabs/api/CdsTabs.props.mjs +56 -0
  587. package/dist/esm-node/src/components/CdsTag/CdsTag.css +0 -18
  588. package/dist/esm-node/src/components/CdsTag/api/CdsTag.props.mjs +72 -18
  589. package/dist/esm-node/src/components/CdsTagGroup/CdsTagGroup.css +0 -18
  590. package/dist/esm-node/src/components/CdsTagGroup/CdsTagGroup.vue_vue_type_script_setup_true_lang.mjs +20 -5
  591. package/dist/esm-node/src/components/CdsTagGroup/api/CdsTagGroup.props.mjs +11 -3
  592. package/dist/esm-node/src/components/CdsTextArea/CdsTextArea.css +0 -18
  593. package/dist/esm-node/src/components/CdsTextArea/api/CdsTextArea.props.mjs +52 -13
  594. package/dist/esm-node/src/components/CdsTextInput/CdsTextInput.css +0 -18
  595. package/dist/esm-node/src/components/CdsTextInput/api/CdsTextInput.props.mjs +40 -10
  596. package/dist/esm-node/src/components/CdsTimePicker/CdsTimePicker.css +0 -18
  597. package/dist/esm-node/src/components/CdsTimePicker/CdsTimePicker.vue_vue_type_script_setup_true_lang.mjs +24 -0
  598. package/dist/esm-node/src/components/CdsTimePicker/api/CdsTimePicker.props.mjs +32 -8
  599. package/dist/esm-node/src/components/CdsToast/CdsToast.css +0 -18
  600. package/dist/esm-node/src/components/CdsToast/api/CdsToast.props.mjs +48 -12
  601. package/dist/esm-node/src/components/CdsToastQueue/CdsToastQueue.vue_vue_type_script_setup_true_lang.mjs +4 -1
  602. package/dist/esm-node/src/components/CdsToastQueue/api/CdsToastQueue.props.mjs +28 -7
  603. package/dist/esm-node/src/components/CdsToggle/CdsToggle.css +0 -18
  604. package/dist/esm-node/src/components/CdsToggle/api/CdsToggle.props.mjs +12 -3
  605. package/dist/esm-node/src/components/CdsToolbar/CdsToolbar.css +0 -18
  606. package/dist/esm-node/src/components/CdsToolbar/api/CdsToolbar.props.mjs +20 -5
  607. package/dist/esm-node/src/components/CdsTooltip/CdsTooltip.css +0 -18
  608. package/dist/esm-node/src/components/CdsTooltip/api/CdsTooltip.props.mjs +20 -5
  609. package/dist/esm-node/src/components/CdsTree/CdsTree.css +0 -18
  610. package/dist/esm-node/src/components/CdsTree/CdsTree.vue_vue_type_script_setup_true_lang.mjs +16 -0
  611. package/dist/esm-node/src/components/CdsTree/composable/tree.mjs +28 -0
  612. package/dist/esm-node/src/components/CdsTree/composable/treeNode.mjs +68 -2
  613. package/dist/esm-node/src/components/CdsUploader/CdsUploader.css +0 -18
  614. package/dist/esm-node/src/components/CdsUploader/CdsUploader.vue_vue_type_script_setup_true_lang.mjs +8 -0
  615. package/dist/esm-node/src/components/CdsUploader/composables/useUpload.mjs +104 -26
  616. package/dist/esm-node/src/components/CdsVirtualScroll/CdsVirtualScroll.css +0 -18
  617. package/dist/esm-node/src/components/CdsVirtualScroll/CdsVirtualScroll.vue_vue_type_script_setup_true_lang.mjs +8 -0
  618. package/dist/esm-node/src/components/CdsVirtualScroll/api/CdsVirtualScroll.props.mjs +12 -3
  619. package/dist/esm-node/src/components/index.mjs +2 -1
  620. package/dist/esm-node/src/composables/useAppearance/useAppearance.mjs +4 -1
  621. package/dist/esm-node/src/composables/useColor/useColor.mjs +20 -5
  622. package/dist/esm-node/src/composables/useDatetime/useDatetime.mjs +3 -0
  623. package/dist/esm-node/src/composables/useDelay/useDelay.mjs +8 -2
  624. package/dist/esm-node/src/composables/useDimensions/useDimensions.mjs +24 -6
  625. package/dist/esm-node/src/composables/useDirection/useDirection.mjs +4 -1
  626. package/dist/esm-node/src/composables/useDisabled/index.mjs +1 -1
  627. package/dist/esm-node/src/composables/useDisabled/useDisabled.mjs +4 -1
  628. package/dist/esm-node/src/composables/useDisplay/useDisplay.mjs +2 -0
  629. package/dist/esm-node/src/composables/useFilter/useFilter.mjs +20 -0
  630. package/dist/esm-node/src/composables/useFocus/useFocus.mjs +12 -3
  631. package/dist/esm-node/src/composables/useFocus/useFocusTrap.mjs +8 -2
  632. package/dist/esm-node/src/composables/useForm/useForm.mjs +45 -0
  633. package/dist/esm-node/src/composables/useGroup/useGroup.mjs +24 -6
  634. package/dist/esm-node/src/composables/useGroup/useGroupItem.mjs +8 -2
  635. package/dist/esm-node/src/composables/useItems/useItems.mjs +32 -8
  636. package/dist/esm-node/src/composables/useLayout/useLayout.mjs +24 -6
  637. package/dist/esm-node/src/composables/useLazy/useLazy.mjs +1 -0
  638. package/dist/esm-node/src/composables/useLoader/index.mjs +1 -1
  639. package/dist/esm-node/src/composables/useLoader/useLoader.mjs +4 -1
  640. package/dist/esm-node/src/composables/useLocation/index.mjs +1 -1
  641. package/dist/esm-node/src/composables/useLocation/useLocation.mjs +4 -1
  642. package/dist/esm-node/src/composables/useNested/useNested.mjs +44 -11
  643. package/dist/esm-node/src/composables/usePosition/usePosition.mjs +4 -0
  644. package/dist/esm-node/src/composables/useReadonly/useReadonly.mjs +4 -1
  645. package/dist/esm-node/src/composables/useReveal/useReveal.mjs +4 -1
  646. package/dist/esm-node/src/composables/useRouter/index.mjs +1 -1
  647. package/dist/esm-node/src/composables/useRouter/useRouter.mjs +16 -4
  648. package/dist/esm-node/src/composables/useSize/useSize.mjs +4 -1
  649. package/dist/esm-node/src/composables/useStatus/useStatus.mjs +4 -1
  650. package/dist/esm-node/src/composables/useText/useText.mjs +8 -2
  651. package/dist/esm-node/src/composables/useTheme/useTheme.mjs +4 -1
  652. package/dist/esm-node/src/composables/useTransition/useTransition.mjs +4 -1
  653. package/dist/esm-node/src/composables/useValidation/useValidation.mjs +26 -6
  654. package/dist/esm-node/src/composables/useVirtual/useVirtual.mjs +12 -3
  655. package/dist/esm-node/src/core/defineComponent.mjs +4 -1
  656. package/dist/esm-node/src/themes/lumaDark.mjs +8 -4
  657. package/dist/esm-node/src/utils/date/date.mjs +4 -4
  658. package/dist/iife/entry.js +9 -9
  659. package/dist/styles/common.css +1 -1
  660. package/dist/styles/core.css +1 -1
  661. package/dist/styles/tailwind.css +1 -1
  662. package/dist/styles.css +2 -2
  663. package/dist/types/components/CdsApp/api/CdsApp.types.d.ts +4 -1
  664. package/dist/types/components/CdsAutocomplete/CdsAutocomplete.vue.d.ts +59 -20
  665. package/dist/types/components/CdsAutocomplete/api/CdsAutocomplete.types.d.ts +60 -15
  666. package/dist/types/components/CdsAutocomplete/index.d.ts +57 -30
  667. package/dist/types/components/CdsAvatar/api/CdsAvatar.types.d.ts +8 -2
  668. package/dist/types/components/CdsBadge/api/CdsBadge.types.d.ts +8 -2
  669. package/dist/types/components/CdsBreadcrumbs/api/CdsBreadcrumbs.types.d.ts +28 -7
  670. package/dist/types/components/CdsButton/CdsButton.vue.d.ts +4 -1
  671. package/dist/types/components/CdsButton/api/CdsButton.types.d.ts +20 -5
  672. package/dist/types/components/CdsButtonGroup/api/CdsButtonGroup.types.d.ts +4 -1
  673. package/dist/types/components/CdsButtonToggle/CdsButtonToggle.vue.d.ts +20 -5
  674. package/dist/types/components/CdsButtonToggle/api/CdsButtonToggle.types.d.ts +8 -2
  675. package/dist/types/components/CdsCard/CdsCardGroup.vue.d.ts +20 -5
  676. package/dist/types/components/CdsCard/api/CdsCard.types.d.ts +68 -17
  677. package/dist/types/components/CdsCarousel/api/CdsCarousel.types.d.ts +12 -3
  678. package/dist/types/components/CdsCheckbox/api/CdsCheckbox.types.d.ts +8 -2
  679. package/dist/types/components/CdsCheckboxButton/api/CdsCheckboxButton.types.d.ts +8 -0
  680. package/dist/types/components/CdsCombobox/CdsCombobox.vue.d.ts +67 -22
  681. package/dist/types/components/CdsCombobox/api/CdsCombobox.types.d.ts +60 -15
  682. package/dist/types/components/CdsCombobox/index.d.ts +57 -30
  683. package/dist/types/components/CdsCounter/api/CdsCounter.types.d.ts +4 -0
  684. package/dist/types/components/CdsDateInput/CdsDateInput.vue.d.ts +35 -10
  685. package/dist/types/components/CdsDateInput/api/CdsDateInput.types.d.ts +44 -11
  686. package/dist/types/components/CdsDateInput/index.d.ts +57 -30
  687. package/dist/types/components/CdsDatePicker/CdsDatePicker.vue.d.ts +20 -0
  688. package/dist/types/components/CdsDatePicker/api/CdsDatePicker.types.d.ts +28 -7
  689. package/dist/types/components/CdsDefaultsProvider/api/CdsDefaultsProvider.types.d.ts +1 -0
  690. package/dist/types/components/CdsDescription/api/CdsDescription.types.d.ts +4 -0
  691. package/dist/types/components/CdsDivider/CdsDivider.vue.d.ts +4 -0
  692. package/dist/types/components/CdsDrawer/CdsDrawer.vue.d.ts +4 -0
  693. package/dist/types/components/CdsDrawer/api/CdsDrawer.types.d.ts +24 -6
  694. package/dist/types/components/CdsEmptyState/api/CdsEmptyState.types.d.ts +36 -9
  695. package/dist/types/components/CdsExpandablePanel/CdsExpandablePanel.vue.d.ts +16 -4
  696. package/dist/types/components/CdsExpandablePanel/CdsExpandablePanelTitle.vue.d.ts +8 -2
  697. package/dist/types/components/CdsExpandablePanel/CdsExpandablePanels.vue.d.ts +8 -2
  698. package/dist/types/components/CdsExpandablePanel/api/CdsExpandablePanel.types.d.ts +56 -14
  699. package/dist/types/components/CdsField/CdsField.vue.d.ts +18 -2
  700. package/dist/types/components/CdsField/api/CdsField.types.d.ts +33 -7
  701. package/dist/types/components/CdsField/index.d.ts +5 -0
  702. package/dist/types/components/CdsFileInput/CdsFileInput.vue.d.ts +5 -2
  703. package/dist/types/components/CdsFileInput/api/CdsFileInput.types.d.ts +28 -7
  704. package/dist/types/components/CdsFileInput/index.d.ts +15 -6
  705. package/dist/types/components/CdsFileUpload/CdsFileUpload.vue.d.ts +8 -0
  706. package/dist/types/components/CdsFileUpload/api/CdsFileUpload.types.d.ts +116 -29
  707. package/dist/types/components/CdsFooter/api/CdsFooter.types.d.ts +12 -3
  708. package/dist/types/components/CdsForm/api/CdsForm.types.d.ts +20 -5
  709. package/dist/types/components/CdsFunctionalButton/api/CdsFunctionalButton.types.d.ts +8 -2
  710. package/dist/types/components/CdsGrid/api/CdsGrid.types.d.ts +12 -0
  711. package/dist/types/components/CdsHeader/api/CdsHeader.types.d.ts +12 -3
  712. package/dist/types/components/CdsIcon/api/CdsIcon.types.d.ts +4 -1
  713. package/dist/types/components/CdsImage/CdsImage.vue.d.ts +20 -0
  714. package/dist/types/components/CdsImage/api/CdsImage.props.d.ts +4 -1
  715. package/dist/types/components/CdsImage/api/CdsImage.types.d.ts +28 -7
  716. package/dist/types/components/CdsInput/CdsInput.vue.d.ts +44 -11
  717. package/dist/types/components/CdsInput/api/CdsInput.types.d.ts +36 -9
  718. package/dist/types/components/CdsLabel/api/CdsLabel.types.d.ts +4 -0
  719. package/dist/types/components/CdsLayout/api/CdsLayout.types.d.ts +16 -4
  720. package/dist/types/components/CdsLink/api/CdsLink.types.d.ts +8 -2
  721. package/dist/types/components/CdsList/CdsList.vue.d.ts +24 -6
  722. package/dist/types/components/CdsList/CdsListGroup.vue.d.ts +4 -1
  723. package/dist/types/components/CdsList/CdsListItem.vue.d.ts +28 -7
  724. package/dist/types/components/CdsList/CdsListItemAction.vue.d.ts +20 -5
  725. package/dist/types/components/CdsList/CdsListItemDivider.vue.d.ts +4 -0
  726. package/dist/types/components/CdsList/CdsListItemMedia.vue.d.ts +20 -5
  727. package/dist/types/components/CdsList/CdsListSubheader.vue.d.ts +4 -1
  728. package/dist/types/components/CdsList/api/CdsList.types.d.ts +84 -21
  729. package/dist/types/components/CdsList/components/ListChildren.vue.d.ts +16 -4
  730. package/dist/types/components/CdsList/components/ListGroupActivator.vue.d.ts +4 -1
  731. package/dist/types/components/CdsList/index.d.ts +76 -0
  732. package/dist/types/components/CdsMain/api/CdsMain.types.d.ts +4 -1
  733. package/dist/types/components/CdsMenu/api/CdsMenu.types.d.ts +12 -0
  734. package/dist/types/components/CdsMessages/api/CdsMessages.types.d.ts +8 -0
  735. package/dist/types/components/CdsModal/api/CdsModal.types.d.ts +12 -3
  736. package/dist/types/components/CdsNotification/api/CdsNotification.types.d.ts +36 -9
  737. package/dist/types/components/CdsNotificationAlert/api/CdsNotificationAlert.types.d.ts +40 -10
  738. package/dist/types/components/CdsOtpInput/CdsOtpInput.vue.d.ts +20 -5
  739. package/dist/types/components/CdsOtpInput/api/CdsOtpInput.types.d.ts +36 -9
  740. package/dist/types/components/CdsOverlay/CdsOverlay.vue.d.ts +44 -11
  741. package/dist/types/components/CdsOverlay/api/CdsOverlay.types.d.ts +28 -3
  742. package/dist/types/components/CdsPage/api/CdsPage.types.d.ts +4 -1
  743. package/dist/types/components/CdsPagination/CdsPagination.vue.d.ts +16 -0
  744. package/dist/types/components/CdsPagination/api/CdsPagination.types.d.ts +44 -11
  745. package/dist/types/components/CdsProgressBar/api/CdsProgressBar.types.d.ts +8 -0
  746. package/dist/types/components/CdsProgressCircle/api/CdsProgressCircle.types.d.ts +4 -1
  747. package/dist/types/components/CdsRadioGroup/api/CdsRadioGroup.types.d.ts +8 -2
  748. package/dist/types/components/CdsResponsive/api/CdsResponsive.types.d.ts +8 -2
  749. package/dist/types/components/CdsSelect/CdsSelect.vue.d.ts +51 -18
  750. package/dist/types/components/CdsSelect/api/CdsSelect.types.d.ts +60 -15
  751. package/dist/types/components/CdsSelect/index.d.ts +57 -30
  752. package/dist/types/components/CdsSelectionControl/CdsSelectionControl.vue.d.ts +8 -0
  753. package/dist/types/components/CdsSelectionControl/api/CdsSelectionControl.types.d.ts +12 -3
  754. package/dist/types/components/CdsSelectionControlGroup/api/CdsSelectionControlGroup.types.d.ts +8 -0
  755. package/dist/types/components/CdsSkeletonLoader/api/CdsSkeletonLoader.types.d.ts +4 -1
  756. package/dist/types/components/CdsSlideGroup/CdsSlideGroup.vue.d.ts +24 -6
  757. package/dist/types/components/CdsSlideGroup/api/CdsSlideGroup.types.d.ts +20 -5
  758. package/dist/types/components/CdsSlideView/CdsSlideView.vue.d.ts +4 -0
  759. package/dist/types/components/CdsSlideView/CdsSlideViewItem.vue.d.ts +4 -0
  760. package/dist/types/components/CdsSlideView/api/CdsSlideView.types.d.ts +31 -0
  761. package/dist/types/components/CdsStages/CdsStages.vue.d.ts +8 -0
  762. package/dist/types/components/CdsStatus/api/CdsStatus.types.d.ts +4 -1
  763. package/dist/types/components/CdsSteps/CdsSteps.vue.d.ts +8 -0
  764. package/dist/types/components/CdsSteps/api/CdsSteps.types.d.ts +72 -18
  765. package/dist/types/components/CdsSurface/api/CdsSurface.types.d.ts +4 -1
  766. package/dist/types/components/CdsTable/CdsTable.vue.d.ts +4 -0
  767. package/dist/types/components/CdsTable/api/CdsTable.types.d.ts +96 -24
  768. package/dist/types/components/CdsTabs/api/CdsTabs.types.d.ts +32 -0
  769. package/dist/types/components/CdsTag/api/CdsTag.types.d.ts +64 -16
  770. package/dist/types/components/CdsTagGroup/CdsTagGroup.vue.d.ts +20 -5
  771. package/dist/types/components/CdsTagGroup/api/CdsTagGroup.types.d.ts +8 -2
  772. package/dist/types/components/CdsTextArea/CdsTextArea.vue.d.ts +5 -2
  773. package/dist/types/components/CdsTextArea/api/CdsTextArea.types.d.ts +24 -6
  774. package/dist/types/components/CdsTextArea/index.d.ts +15 -6
  775. package/dist/types/components/CdsTextInput/CdsTextInput.vue.d.ts +7 -4
  776. package/dist/types/components/CdsTextInput/api/CdsTextInput.types.d.ts +44 -11
  777. package/dist/types/components/CdsTextInput/index.d.ts +20 -11
  778. package/dist/types/components/CdsTimePicker/CdsTimePicker.vue.d.ts +24 -0
  779. package/dist/types/components/CdsTimePicker/api/CdsTimePicker.types.d.ts +4 -1
  780. package/dist/types/components/CdsToast/api/CdsToast.types.d.ts +40 -10
  781. package/dist/types/components/CdsToastQueue/CdsToastQueue.vue.d.ts +4 -1
  782. package/dist/types/components/CdsToastQueue/api/CdsToastQueue.types.d.ts +20 -5
  783. package/dist/types/components/CdsToggle/api/CdsToggle.types.d.ts +28 -7
  784. package/dist/types/components/CdsToolbar/api/CdsToolbar.types.d.ts +8 -2
  785. package/dist/types/components/CdsTooltip/api/CdsTooltip.types.d.ts +4 -0
  786. package/dist/types/components/CdsTree/CdsTree.vue.d.ts +16 -0
  787. package/dist/types/components/CdsTree/api/CdsTree.types.d.ts +84 -21
  788. package/dist/types/components/CdsUploader/CdsUploader.vue.d.ts +8 -0
  789. package/dist/types/components/CdsUploader/api/CdsUploader.types.d.ts +68 -17
  790. package/dist/types/components/CdsVirtualScroll/CdsVirtualScroll.vue.d.ts +8 -0
  791. package/dist/types/components/CdsVirtualScroll/api/CdsVirtualScroll.types.d.ts +20 -5
  792. package/dist/types/composables/useForm/useForm.d.ts +33 -0
  793. package/dist/types/composables/useLayout/context.d.ts +61 -0
  794. package/dist/types/composables/useNested/useNested.d.ts +8 -2
  795. package/dist/types/entry.d.ts +1 -0
  796. package/dist/types/themes/lumaDark.d.ts +4 -4
  797. package/dist/types/utils/date/date.d.ts +1 -1
  798. package/llms/llms-components.txt +8861 -10675
  799. package/llms/llms-full.txt +10309 -11489
  800. package/llms/llms-guides.txt +1400 -738
  801. package/llms/llms-migration.txt +18 -46
  802. package/llms/llms-tokens.txt +55 -55
  803. package/llms/llms.txt +110 -109
  804. package/package.json +24 -11
  805. package/src/components/CdsApp/CdsApp.scss +43 -0
  806. package/src/components/CdsApp/styles/_CdsApp.variables.scss +2 -0
  807. package/src/components/CdsAutocomplete/CdsAutocomplete.scss +158 -0
  808. package/src/components/CdsAutocomplete/styles/_CdsAutocomplete.variables.scss +9 -0
  809. package/src/components/CdsAvatar/CdsAvatar.scss +42 -0
  810. package/src/components/CdsAvatar/styles/_CdsAvatar.variables.scss +22 -0
  811. package/src/components/CdsBadge/CdsBadge.scss +69 -0
  812. package/src/components/CdsBadge/styles/_CdsBadge.variables.scss +22 -0
  813. package/src/components/CdsBreadcrumbs/CdsBreadcrumbs.scss +49 -0
  814. package/src/components/CdsBreadcrumbs/styles/_CdsBreadcrumbs.variables.scss +14 -0
  815. package/src/components/CdsButton/CdsButton.scss +138 -0
  816. package/src/components/CdsButton/styles/_CdsButton.mixins.scss +76 -0
  817. package/src/components/CdsButton/styles/_CdsButton.variables.scss +180 -0
  818. package/src/components/CdsButtonGroup/CdsButtonGroup.scss +62 -0
  819. package/src/components/CdsButtonGroup/styles/_CdsButtonGroup.variables.scss +7 -0
  820. package/src/components/CdsButtonToggle/CdsButtonToggle.scss +19 -0
  821. package/src/components/CdsButtonToggle/styles/_CdsButtonToggle.variables.scss +3 -0
  822. package/src/components/CdsCard/CdsCard.scss +194 -0
  823. package/src/components/CdsCard/styles/CdsCard.variables.scss +36 -0
  824. package/src/components/CdsCarousel/CdsCarousel.scss +76 -0
  825. package/src/components/CdsCarousel/styles/_CdsCarousel.variables.scss +7 -0
  826. package/src/components/CdsCheckbox/CdsCheckbox.scss +20 -0
  827. package/src/components/CdsCheckbox/styles/_CdsCheckbox.mixins.scss +24 -0
  828. package/src/components/CdsCheckbox/styles/_CdsCheckbox.variables.scss +8 -0
  829. package/src/components/CdsCheckboxButton/CdsCheckboxButton.scss +78 -0
  830. package/src/components/CdsCheckboxButton/styles/_CdsCheckboxButton.variables.scss +46 -0
  831. package/src/components/CdsCombobox/CdsCombobox.scss +158 -0
  832. package/src/components/CdsCombobox/styles/_CdsCombobox.variables.scss +9 -0
  833. package/src/components/CdsCounter/CdsCounter.scss +11 -0
  834. package/src/components/CdsCounter/styles/_CdsCounter.variables.scss +1 -0
  835. package/src/components/CdsDateInput/CdsDateInput.scss +28 -0
  836. package/src/components/CdsDateInput/styles/_CdsDateInput.variables.scss +6 -0
  837. package/src/components/CdsDatePicker/CdsDatePicker.scss +574 -0
  838. package/src/components/CdsDatePicker/styles/_CdsDatePicker.variables.scss +56 -0
  839. package/src/components/CdsDescription/CdsDescription.scss +12 -0
  840. package/src/components/CdsDescription/styles/_CdsDescription.variables.scss +1 -0
  841. package/src/components/CdsDivider/CdsDivider.scss +83 -0
  842. package/src/components/CdsDivider/styles/_CdsDivider.variables.scss +28 -0
  843. package/src/components/CdsDrawer/CdsDrawer.scss +144 -0
  844. package/src/components/CdsDrawer/styles/_CdsDrawer.variables.scss +17 -0
  845. package/src/components/CdsEmptyState/CdsEmptyState.scss +103 -0
  846. package/src/components/CdsEmptyState/styles/_CdsEmptyState.variables.scss +15 -0
  847. package/src/components/CdsExpandablePanel/CdsExpandablePanel.scss +221 -0
  848. package/src/components/CdsExpandablePanel/styles/_CdsExpandablePanel.variables.scss +24 -0
  849. package/src/components/CdsField/CdsField.scss +209 -0
  850. package/src/components/CdsField/styles/_CdsField.mixins.scss +39 -0
  851. package/src/components/CdsField/styles/_CdsField.variables.scss +84 -0
  852. package/src/components/CdsFileInput/CdsFileInput.scss +40 -0
  853. package/src/components/CdsFileInput/styles/_CdsFileInput.variables.scss +5 -0
  854. package/src/components/CdsFileUpload/CdsFileUpload.scss +173 -0
  855. package/src/components/CdsFileUpload/styles/_CdsFileUpload.variables.scss +40 -0
  856. package/src/components/CdsFooter/CdsFooter.scss +36 -0
  857. package/src/components/CdsFooter/styles/_CdsFooter.variables.scss +4 -0
  858. package/src/components/CdsForm/CdsForm.scss +24 -0
  859. package/src/components/CdsForm/styles/_CdsForm.variables.scss +5 -0
  860. package/src/components/CdsFunctionalButton/CdsFunctionalButton.scss +49 -0
  861. package/src/components/CdsFunctionalButton/styles/_CdsFunctionalButton.variables.scss +25 -0
  862. package/src/components/CdsGrid/components/CSSGrid.scss +3 -0
  863. package/src/components/CdsGrid/components/FlexGrid.scss +3 -0
  864. package/src/components/CdsHeader/CdsHeader.scss +36 -0
  865. package/src/components/CdsHeader/styles/_CdsHeader.variables.scss +3 -0
  866. package/src/components/CdsHighlight/CdsHighlight.scss +16 -0
  867. package/src/components/CdsHighlight/styles/_CdsHighlight.variables.scss +8 -0
  868. package/src/components/CdsIcon/CdsIcon.scss +54 -0
  869. package/src/components/CdsIcon/styles/_CdsIcon.variables.scss +20 -0
  870. package/src/components/CdsImage/CdsImage.scss +62 -0
  871. package/src/components/CdsImage/styles/_CdsImage.variables.scss +4 -0
  872. package/src/components/CdsInput/CdsInput.scss +108 -0
  873. package/src/components/CdsInput/styles/_CdsInput.mixins.scss +54 -0
  874. package/src/components/CdsInput/styles/_CdsInput.variables.scss +98 -0
  875. package/src/components/CdsLabel/CdsLabel.scss +23 -0
  876. package/src/components/CdsLabel/styles/_CdsLabel.variables.scss +2 -0
  877. package/src/components/CdsLayout/CdsLayout.scss +61 -0
  878. package/src/components/CdsLayout/styles/_CdsLayout.variables.scss +2 -0
  879. package/src/components/CdsLink/CdsLink.scss +33 -0
  880. package/src/components/CdsLink/styles/_CdsLink.variables.scss +6 -0
  881. package/src/components/CdsList/CdsList.scss +104 -0
  882. package/src/components/CdsList/CdsListItem.scss +330 -0
  883. package/src/components/CdsList/styles/_CdsList.variables.scss +115 -0
  884. package/src/components/CdsLoader/CdsLoader.scss +78 -0
  885. package/src/components/CdsLoader/styles/_CdsLoader.mixins.scss +9 -0
  886. package/src/components/CdsLoader/styles/_CdsLoader.variables.scss +40 -0
  887. package/src/components/CdsMain/CdsMain.scss +7 -0
  888. package/src/components/CdsMenu/CdsMenu.scss +33 -0
  889. package/src/components/CdsMenu/styles/_CdsMenu.variables.scss +11 -0
  890. package/src/components/CdsMessages/CdsMessages.scss +20 -0
  891. package/src/components/CdsMessages/styles/_CdsMessages.variables.scss +5 -0
  892. package/src/components/CdsModal/CdsModal.scss +106 -0
  893. package/src/components/CdsModal/styles/_CdsModal.variables.scss +12 -0
  894. package/src/components/CdsNotification/CdsNotification.scss +99 -0
  895. package/src/components/CdsNotification/styles/_CdsNotification.variables.scss +13 -0
  896. package/src/components/CdsNotificationAlert/CdsNotificationAlert.scss +48 -0
  897. package/src/components/CdsNotificationAlert/styles/_CdsNotificationAlert.variables.scss +5 -0
  898. package/src/components/CdsOtpInput/CdsOtpInput.scss +192 -0
  899. package/src/components/CdsOtpInput/styles/_CdsOtpInput.variables.scss +31 -0
  900. package/src/components/CdsOverlay/CdsOverlay.scss +74 -0
  901. package/src/components/CdsOverlay/styles/_CdsOverlay.variables.scss +2 -0
  902. package/src/components/CdsPage/CdsPage.scss +9 -0
  903. package/src/components/CdsPagination/CdsPagination.scss +69 -0
  904. package/src/components/CdsPagination/styles/_CdsPagination.variables.scss +10 -0
  905. package/src/components/CdsProgressBar/CdsProgressBar.scss +285 -0
  906. package/src/components/CdsProgressBar/styles/_CdsProgressBar.variables.scss +23 -0
  907. package/src/components/CdsProgressCircle/CdsProgressCircle.scss +116 -0
  908. package/src/components/CdsProgressCircle/styles/_CdsProgressCircle.variables.scss +21 -0
  909. package/src/components/CdsRadio/CdsRadio.scss +42 -0
  910. package/src/components/CdsRadio/styles/_CdsRadio.variables.scss +26 -0
  911. package/src/components/CdsRadioGroup/CdsRadioGroup.scss +24 -0
  912. package/src/components/CdsRadioGroup/styles/_CdsRadioGroup.variables.scss +4 -0
  913. package/src/components/CdsResponsive/CdsResponsive.scss +33 -0
  914. package/src/components/CdsResponsive/styles/_CdsResponsive.variables.scss +3 -0
  915. package/src/components/CdsSelect/CdsSelect.scss +149 -0
  916. package/src/components/CdsSelect/styles/_CdsSelect.variables.scss +7 -0
  917. package/src/components/CdsSelectionControl/CdsSelectionControl.scss +104 -0
  918. package/src/components/CdsSelectionControlGroup/CdsSelectionControlGroup.scss +17 -0
  919. package/src/components/CdsSkeletonLoader/CdsSkeletonLoader.scss +292 -0
  920. package/src/components/CdsSkeletonLoader/styles/_CdsSkeletonLoader.variables.scss +52 -0
  921. package/src/components/CdsSlideGroup/CdsSlideGroup.scss +63 -0
  922. package/src/components/CdsSlideGroup/styles/_CdsSlideGroup.variables.scss +1 -0
  923. package/src/components/CdsSlideView/CdsSlideView.scss +183 -0
  924. package/src/components/CdsSlideView/styles/_CdsSlideView.variables.scss +4 -0
  925. package/src/components/CdsStages/CdsStages.scss +109 -0
  926. package/src/components/CdsStages/styles/_CdsStages.variables.scss +17 -0
  927. package/src/components/CdsStatus/CdsStatus.scss +49 -0
  928. package/src/components/CdsStatus/styles/_CdsStatus.variables.scss +7 -0
  929. package/src/components/CdsSteps/CdsSteps.scss +216 -0
  930. package/src/components/CdsSteps/styles/_CdsSteps.variables.scss +42 -0
  931. package/src/components/CdsSurface/CdsSurface.scss +16 -0
  932. package/src/components/CdsTable/CdsTable.scss +1140 -0
  933. package/src/components/CdsTable/styles/_CdsTable.mixins.scss +86 -0
  934. package/src/components/CdsTable/styles/_CdsTable.variables.scss +82 -0
  935. package/src/components/CdsTabs/CdsTabs.scss +94 -0
  936. package/src/components/CdsTabs/styles/_CdsTabs.variables.scss +30 -0
  937. package/src/components/CdsTag/CdsTag.scss +141 -0
  938. package/src/components/CdsTag/styles/_CdsTag.variables.scss +57 -0
  939. package/src/components/CdsTagGroup/CdsTagGroup.scss +32 -0
  940. package/src/components/CdsTagGroup/styles/_CdsTagGroup.variables.scss +8 -0
  941. package/src/components/CdsTextArea/CdsTextArea.scss +129 -0
  942. package/src/components/CdsTextArea/styles/_CdsTextArea.variables.scss +6 -0
  943. package/src/components/CdsTextInput/CdsTextInput.scss +84 -0
  944. package/src/components/CdsTextInput/styles/_CdsTextInput.variables.scss +7 -0
  945. package/src/components/CdsTimePicker/CdsTimePicker.scss +93 -0
  946. package/src/components/CdsTimePicker/styles/_CdsTimePicker.variables.scss +13 -0
  947. package/src/components/CdsToast/CdsToast.scss +207 -0
  948. package/src/components/CdsToast/styles/_CdsToast.variables.scss +16 -0
  949. package/src/components/CdsToggle/CdsToggle.scss +192 -0
  950. package/src/components/CdsToggle/styles/_CdsToggle.variables.scss +81 -0
  951. package/src/components/CdsToolbar/CdsToolbar.scss +72 -0
  952. package/src/components/CdsToolbar/styles/_CdsToolbar.variables.scss +3 -0
  953. package/src/components/CdsTooltip/CdsTooltip.scss +111 -0
  954. package/src/components/CdsTooltip/styles/_CdsTooltip.variables.scss +15 -0
  955. package/src/components/CdsTree/CdsTree.scss +290 -0
  956. package/src/components/CdsTree/styles/_CdsTree.variables.scss +29 -0
  957. package/src/components/CdsUploader/CdsUploader.scss +109 -0
  958. package/src/components/CdsUploader/styles/_CdsUploader.variables.scss +16 -0
  959. package/src/components/CdsVirtualScroll/CdsVirtualScroll.scss +16 -0
  960. package/src/components/CdsVirtualScroll/styles/_CdsVirtualScroll.variables.scss +3 -0
  961. package/src/styles/component-settings.scss +75 -0
  962. package/src/styles/generic/_fonts.scss +2 -2
  963. package/src/styles/settings/_index.scss +6 -0
  964. package/src/styles/tools/_absolute.sass +9 -0
  965. package/src/styles/tools/_border.sass +10 -0
  966. package/src/styles/tools/_motion.scss +11 -17
  967. package/src/styles/utilities/grid/_config.scss +0 -1
  968. package/src/themes/lumaDark.ts +8 -4
  969. package/dist/styles/breakpoints.css +0 -1
  970. package/dist/styles/index.css +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"useTransition.js","sources":["../../../../../src/composables/useTransition/useTransition.ts"],"sourcesContent":["import { propsFactory, type TagProps } from '@cds/core';\nimport { clamp, isObject, onlyDefinedProps, PREFERS_REDUCED_MOTION } from '@cds/utils';\nimport {\n type Component,\n computed,\n type FunctionalComponent,\n h,\n type HTMLAttributes,\n type MaybeRefOrGetter,\n mergeProps,\n type Prop,\n type Ref,\n shallowRef,\n toValue,\n Transition,\n TransitionGroup,\n type TransitionProps,\n unref,\n watch\n} from 'vue';\n\nexport const standardEasing = 'cubic-bezier(0.4, 0, 0.2, 1)';\nexport const deceleratedEasing = 'cubic-bezier(0.0, 0, 0.2, 1)'; // Entering\nexport const acceleratedEasing = 'cubic-bezier(0.4, 0, 1, 1)'; // Leaving\n\nexport type EasingFunction = (n: number) => number;\n\nexport const easingPatterns = {\n linear: (t: number) => t,\n easeInQuad: (t: number) => t ** 2,\n easeOutQuad: (t: number) => t * (2 - t),\n easeInOutQuad: (t: number) => (t < 0.5 ? 2 * t ** 2 : -1 + (4 - 2 * t) * t),\n easeInCubic: (t: number) => t ** 3,\n easeOutCubic: (t: number) => (--t) ** 3 + 1,\n easeInOutCubic: (t: number) => (t < 0.5 ? 4 * t ** 3 : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1),\n easeInQuart: (t: number) => t ** 4,\n easeOutQuart: (t: number) => 1 - (--t) ** 4,\n easeInOutQuart: (t: number) => (t < 0.5 ? 8 * t ** 4 : 1 - 8 * (--t) ** 4),\n easeInQuint: (t: number) => t ** 5,\n easeOutQuint: (t: number) => 1 + (--t) ** 5,\n easeInOutQuint: (t: number) => (t < 0.5 ? 16 * t ** 5 : 1 + 16 * (--t) ** 5),\n instant: (_t: number) => 1\n} as const;\n\nexport type EasingOptions = {\n duration?: number;\n transition?: EasingFunction;\n};\n\ntype InternalEasingOptions = {\n duration: number;\n transition: EasingFunction;\n};\n\n/**\n * Utility function for defining transition-related properties in a component.\n *\n * @param {Object} options - The set of properties and default values to define transition behavior for a component.\n *\n * @property {null|string|boolean|TransitionProps & { component?: Component }} transition\n * - Specifies the transition type or configuration for a component.\n * - Defaults to `'fade-transition'`.\n * - Validates that the value is not `true`.\n *\n * @returns {Object} A configured property object for handling transitions in the associated component.\n */\nexport const defineTransitionProps = propsFactory(\n {\n /** Анимация перехода */\n transition: {\n type: null,\n default: 'fade-transition',\n validator: (val) => val !== true\n } as Prop<null | string | boolean | (TransitionProps & { component?: Component })>\n },\n 'transition'\n);\n\ninterface MaybeTransitionProps extends TransitionProps, TagProps, HTMLAttributes {\n transition?: null | string | boolean | (TransitionProps & { component?: any });\n disabled?: boolean;\n group?: boolean;\n target?: HTMLElement | [x: number, y: number];\n}\n\n/**\n * A functional component that conditionally renders an animated transition or group transition\n * based on the provided properties. If transitions are disabled or undefined, it falls back to\n * rendering without animations.\n *\n * @typedef MaybeTransitionProps\n * @property {string|Object} [transition] - Specifies the transition animation name or an object defining custom transition properties.\n * @property {boolean} [disabled] - If true, disables transitions entirely.\n * @property {boolean} [group] - Determines if the transition should be handled as a group (uses `TransitionGroup` instead of `Transition`).\n * @property {Object} [props] - Additional properties to be passed to the component.\n *\n * @component\n * @param {MaybeTransitionProps & Object} props - Properties that define the behavior and configuration of the transition.\n * @param {Object} context.slots - Slots that define the content to be rendered inside the transition.\n * @returns {VNode} Rendered virtual DOM node with or without transitions applied.\n */\nexport const MaybeTransition: FunctionalComponent<MaybeTransitionProps> = (props, { slots }) => {\n const { transition, disabled, group, ...rest } = props;\n\n const { component = group ? TransitionGroup : Transition, ...customProps } = isObject(transition) ? transition : {};\n\n let transitionProps;\n if (isObject(transition)) {\n transitionProps = mergeProps(customProps, onlyDefinedProps({ disabled, group }), rest);\n } else {\n transitionProps = mergeProps({ name: disabled || !transition ? '' : transition }, rest);\n }\n\n return h(component as Component, transitionProps, slots);\n};\n\n/**\n * Creates a reactive transition between a source value and a target value using specified easing options.\n * This utility is useful for smooth animations or transitions of numeric values.\n *\n * @param {MaybeRefOrGetter<number>} source - The source numeric value to transition from. Can be a ref, reactive getter, or plain value.\n * @param {MaybeRefOrGetter<EasingOptions>} options - The easing options that specify the duration and easing pattern for the transition. Can be a ref, reactive getter, or plain object.\n * @return {ComputedRef<number>} A readonly computed ref representing the current interpolated value during the transition.\n */\nexport function useTransition(source: MaybeRefOrGetter<number>, options: MaybeRefOrGetter<EasingOptions>) {\n const defaultTransition: InternalEasingOptions = {\n duration: 300,\n transition: easingPatterns.easeInOutCubic\n };\n\n let raf = -1;\n const outputRef = shallowRef(toValue(source));\n\n watch(\n () => toValue(source),\n async (to) => {\n cancelAnimationFrame(raf);\n const easing = { ...defaultTransition, ...toValue(options) };\n await executeTransition(outputRef, outputRef.value, to, easing);\n }\n );\n\n function executeTransition(out: Ref<number>, from: number, to: number, options: InternalEasingOptions) {\n const startTime = performance.now();\n const ease = PREFERS_REDUCED_MOTION()\n ? easingPatterns.instant\n : (options.transition ?? easingPatterns.easeInOutCubic);\n\n return new Promise<void>((resolve) => {\n raf = requestAnimationFrame(function step(currentTime: number) {\n const timeElapsed = currentTime - startTime;\n const progress = timeElapsed / options.duration;\n out.value = from + (to - from) * ease(clamp(progress, 0, 1));\n\n if (progress < 1) {\n raf = requestAnimationFrame(step);\n } else {\n out.value = to;\n resolve();\n }\n });\n });\n }\n\n return computed(() => unref(outputRef));\n}\n"],"names":[],"mappings":";;;AAqBO,MAAM,iBAAiB;AACvB,MAAM,oBAAoB;AAC1B,MAAM,oBAAoB;AAI1B,MAAM,iBAAiB;AAAA,EAC5B,QAAQ,CAAC,MAAc;AAAA,EACvB,YAAY,CAAC,MAAc,KAAK;AAAA,EAChC,aAAa,CAAC,MAAc,KAAK,IAAI;AAAA,EACrC,eAAe,CAAC,MAAe,IAAI,MAAM,IAAI,KAAK,IAAI,MAAM,IAAI,IAAI,KAAK;AAAA,EACzE,aAAa,CAAC,MAAc,KAAK;AAAA,EACjC,cAAc,CAAC,MAAe,EAAE,KAAM,IAAI;AAAA,EAC1C,gBAAgB,CAAC,MAAe,IAAI,MAAM,IAAI,KAAK,KAAK,IAAI,MAAM,IAAI,IAAI,MAAM,IAAI,IAAI,KAAK;AAAA,EAC7F,aAAa,CAAC,MAAc,KAAK;AAAA,EACjC,cAAc,CAAC,MAAc,IAAK,EAAE,KAAM;AAAA,EAC1C,gBAAgB,CAAC,MAAe,IAAI,MAAM,IAAI,KAAK,IAAI,IAAI,IAAK,EAAE,KAAM;AAAA,EACxE,aAAa,CAAC,MAAc,KAAK;AAAA,EACjC,cAAc,CAAC,MAAc,IAAK,EAAE,KAAM;AAAA,EAC1C,gBAAgB,CAAC,MAAe,IAAI,MAAM,KAAK,KAAK,IAAI,IAAI,KAAM,EAAE,KAAM;AAAA,EAC1E,SAAS,CAAC,OAAe;AAC3B;AAwBO,MAAM,wBAAwB;AAAA,EACnC;AAAA;AAAA,IAEE,YAAY;AAAA,MACV,MAAM;AAAA,MACN,SAAS;AAAA,MACT,WAAW,CAAC,QAAQ,QAAQ;AAAA,IAAA;AAAA,EAC9B;AAAA,EAEF;AACF;AAyBO,MAAM,kBAA6D,CAAC,OAAO,EAAE,YAAY;AAC9F,QAAM,EAAE,YAAY,UAAU,OAAO,GAAG,SAAS;AAEjD,QAAM,EAAE,YAAY,QAAQ,kBAAkB,YAAY,GAAG,YAAA,IAAgB,SAAS,UAAU,IAAI,aAAa,CAAA;AAEjH,MAAI;AACJ,MAAI,SAAS,UAAU,GAAG;AACxB,sBAAkB,WAAW,aAAa,iBAAiB,EAAE,UAAU,MAAA,CAAO,GAAG,IAAI;AAAA,EACvF,OAAO;AACL,sBAAkB,WAAW,EAAE,MAAM,YAAY,CAAC,aAAa,KAAK,WAAA,GAAc,IAAI;AAAA,EACxF;AAEA,SAAO,EAAE,WAAwB,iBAAiB,KAAK;AACzD;"}
1
+ {"version":3,"file":"useTransition.js","sources":["../../../../../src/composables/useTransition/useTransition.ts"],"sourcesContent":["import { propsFactory, type TagProps } from '@cds/core';\nimport { clamp, isObject, onlyDefinedProps, PREFERS_REDUCED_MOTION } from '@cds/utils';\nimport {\n type Component,\n computed,\n type FunctionalComponent,\n h,\n type HTMLAttributes,\n type MaybeRefOrGetter,\n mergeProps,\n type Prop,\n type Ref,\n shallowRef,\n toValue,\n Transition,\n TransitionGroup,\n type TransitionProps,\n unref,\n watch\n} from 'vue';\n\nexport const standardEasing = 'cubic-bezier(0.4, 0, 0.2, 1)';\nexport const deceleratedEasing = 'cubic-bezier(0.0, 0, 0.2, 1)'; // Entering\nexport const acceleratedEasing = 'cubic-bezier(0.4, 0, 1, 1)'; // Leaving\n\nexport type EasingFunction = (n: number) => number;\n\nexport const easingPatterns = {\n linear: (t: number) => t,\n easeInQuad: (t: number) => t ** 2,\n easeOutQuad: (t: number) => t * (2 - t),\n easeInOutQuad: (t: number) => (t < 0.5 ? 2 * t ** 2 : -1 + (4 - 2 * t) * t),\n easeInCubic: (t: number) => t ** 3,\n easeOutCubic: (t: number) => (--t) ** 3 + 1,\n easeInOutCubic: (t: number) => (t < 0.5 ? 4 * t ** 3 : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1),\n easeInQuart: (t: number) => t ** 4,\n easeOutQuart: (t: number) => 1 - (--t) ** 4,\n easeInOutQuart: (t: number) => (t < 0.5 ? 8 * t ** 4 : 1 - 8 * (--t) ** 4),\n easeInQuint: (t: number) => t ** 5,\n easeOutQuint: (t: number) => 1 + (--t) ** 5,\n easeInOutQuint: (t: number) => (t < 0.5 ? 16 * t ** 5 : 1 + 16 * (--t) ** 5),\n instant: (_t: number) => 1\n} as const;\n\nexport type EasingOptions = {\n duration?: number;\n transition?: EasingFunction;\n};\n\ntype InternalEasingOptions = {\n duration: number;\n transition: EasingFunction;\n};\n\n/**\n * Utility function for defining transition-related properties in a component.\n *\n * @param {Object} options - The set of properties and default values to define transition behavior for a component.\n *\n * @property {null|string|boolean|TransitionProps & { component?: Component }} transition\n * - Specifies the transition type or configuration for a component.\n * - Defaults to `'fade-transition'`.\n * - Validates that the value is not `true`.\n *\n * @returns {Object} A configured property object for handling transitions in the associated component.\n */\nexport const defineTransitionProps = propsFactory(\n {\n /**\n * Анимация перехода\n * @en Transition animation\n */\n transition: {\n type: null,\n default: 'fade-transition',\n validator: (val) => val !== true\n } as Prop<null | string | boolean | (TransitionProps & { component?: Component })>\n },\n 'transition'\n);\n\ninterface MaybeTransitionProps extends TransitionProps, TagProps, HTMLAttributes {\n transition?: null | string | boolean | (TransitionProps & { component?: any });\n disabled?: boolean;\n group?: boolean;\n target?: HTMLElement | [x: number, y: number];\n}\n\n/**\n * A functional component that conditionally renders an animated transition or group transition\n * based on the provided properties. If transitions are disabled or undefined, it falls back to\n * rendering without animations.\n *\n * @typedef MaybeTransitionProps\n * @property {string|Object} [transition] - Specifies the transition animation name or an object defining custom transition properties.\n * @property {boolean} [disabled] - If true, disables transitions entirely.\n * @property {boolean} [group] - Determines if the transition should be handled as a group (uses `TransitionGroup` instead of `Transition`).\n * @property {Object} [props] - Additional properties to be passed to the component.\n *\n * @component\n * @param {MaybeTransitionProps & Object} props - Properties that define the behavior and configuration of the transition.\n * @param {Object} context.slots - Slots that define the content to be rendered inside the transition.\n * @returns {VNode} Rendered virtual DOM node with or without transitions applied.\n */\nexport const MaybeTransition: FunctionalComponent<MaybeTransitionProps> = (props, { slots }) => {\n const { transition, disabled, group, ...rest } = props;\n\n const { component = group ? TransitionGroup : Transition, ...customProps } = isObject(transition) ? transition : {};\n\n let transitionProps;\n if (isObject(transition)) {\n transitionProps = mergeProps(customProps, onlyDefinedProps({ disabled, group }), rest);\n } else {\n transitionProps = mergeProps({ name: disabled || !transition ? '' : transition }, rest);\n }\n\n return h(component as Component, transitionProps, slots);\n};\n\n/**\n * Creates a reactive transition between a source value and a target value using specified easing options.\n * This utility is useful for smooth animations or transitions of numeric values.\n *\n * @param {MaybeRefOrGetter<number>} source - The source numeric value to transition from. Can be a ref, reactive getter, or plain value.\n * @param {MaybeRefOrGetter<EasingOptions>} options - The easing options that specify the duration and easing pattern for the transition. Can be a ref, reactive getter, or plain object.\n * @return {ComputedRef<number>} A readonly computed ref representing the current interpolated value during the transition.\n */\nexport function useTransition(source: MaybeRefOrGetter<number>, options: MaybeRefOrGetter<EasingOptions>) {\n const defaultTransition: InternalEasingOptions = {\n duration: 300,\n transition: easingPatterns.easeInOutCubic\n };\n\n let raf = -1;\n const outputRef = shallowRef(toValue(source));\n\n watch(\n () => toValue(source),\n async (to) => {\n cancelAnimationFrame(raf);\n const easing = { ...defaultTransition, ...toValue(options) };\n await executeTransition(outputRef, outputRef.value, to, easing);\n }\n );\n\n function executeTransition(out: Ref<number>, from: number, to: number, options: InternalEasingOptions) {\n const startTime = performance.now();\n const ease = PREFERS_REDUCED_MOTION()\n ? easingPatterns.instant\n : (options.transition ?? easingPatterns.easeInOutCubic);\n\n return new Promise<void>((resolve) => {\n raf = requestAnimationFrame(function step(currentTime: number) {\n const timeElapsed = currentTime - startTime;\n const progress = timeElapsed / options.duration;\n out.value = from + (to - from) * ease(clamp(progress, 0, 1));\n\n if (progress < 1) {\n raf = requestAnimationFrame(step);\n } else {\n out.value = to;\n resolve();\n }\n });\n });\n }\n\n return computed(() => unref(outputRef));\n}\n"],"names":[],"mappings":";;;AAqBO,MAAM,iBAAiB;AACvB,MAAM,oBAAoB;AAC1B,MAAM,oBAAoB;AAI1B,MAAM,iBAAiB;AAAA,EAC5B,QAAQ,CAAC,MAAc;AAAA,EACvB,YAAY,CAAC,MAAc,KAAK;AAAA,EAChC,aAAa,CAAC,MAAc,KAAK,IAAI;AAAA,EACrC,eAAe,CAAC,MAAe,IAAI,MAAM,IAAI,KAAK,IAAI,MAAM,IAAI,IAAI,KAAK;AAAA,EACzE,aAAa,CAAC,MAAc,KAAK;AAAA,EACjC,cAAc,CAAC,MAAe,EAAE,KAAM,IAAI;AAAA,EAC1C,gBAAgB,CAAC,MAAe,IAAI,MAAM,IAAI,KAAK,KAAK,IAAI,MAAM,IAAI,IAAI,MAAM,IAAI,IAAI,KAAK;AAAA,EAC7F,aAAa,CAAC,MAAc,KAAK;AAAA,EACjC,cAAc,CAAC,MAAc,IAAK,EAAE,KAAM;AAAA,EAC1C,gBAAgB,CAAC,MAAe,IAAI,MAAM,IAAI,KAAK,IAAI,IAAI,IAAK,EAAE,KAAM;AAAA,EACxE,aAAa,CAAC,MAAc,KAAK;AAAA,EACjC,cAAc,CAAC,MAAc,IAAK,EAAE,KAAM;AAAA,EAC1C,gBAAgB,CAAC,MAAe,IAAI,MAAM,KAAK,KAAK,IAAI,IAAI,KAAM,EAAE,KAAM;AAAA,EAC1E,SAAS,CAAC,OAAe;AAC3B;AAwBO,MAAM,wBAAwB;AAAA,EACnC;AAAA;AAAA;AAAA;AAAA;AAAA,IAKE,YAAY;AAAA,MACV,MAAM;AAAA,MACN,SAAS;AAAA,MACT,WAAW,CAAC,QAAQ,QAAQ;AAAA,IAAA;AAAA,EAC9B;AAAA,EAEF;AACF;AAyBO,MAAM,kBAA6D,CAAC,OAAO,EAAE,YAAY;AAC9F,QAAM,EAAE,YAAY,UAAU,OAAO,GAAG,SAAS;AAEjD,QAAM,EAAE,YAAY,QAAQ,kBAAkB,YAAY,GAAG,YAAA,IAAgB,SAAS,UAAU,IAAI,aAAa,CAAA;AAEjH,MAAI;AACJ,MAAI,SAAS,UAAU,GAAG;AACxB,sBAAkB,WAAW,aAAa,iBAAiB,EAAE,UAAU,MAAA,CAAO,GAAG,IAAI;AAAA,EACvF,OAAO;AACL,sBAAkB,WAAW,EAAE,MAAM,YAAY,CAAC,aAAa,KAAK,WAAA,GAAc,IAAI;AAAA,EACxF;AAEA,SAAO,EAAE,WAAwB,iBAAiB,KAAK;AACzD;"}
@@ -12,35 +12,55 @@ import { w as warn } from "../../utils/dom/console.js";
12
12
  import { shallowRef, computed, unref, ref, onBeforeMount, onBeforeUnmount, onMounted, watch, nextTick, useId } from "vue";
13
13
  const defineValidationProps = propsFactory(
14
14
  {
15
- /** Имя поля ввода */
15
+ /**
16
+ * Имя поля ввода
17
+ * @en Name of the input
18
+ */
16
19
  name: String,
17
- /** Значение компонента в v-model. Если компонент поддерживает свойство multiple, по умолчанию используется пустой массив. */
20
+ /**
21
+ * Значение компонента в v-model. Если компонент поддерживает свойство multiple, по умолчанию используется пустой массив.
22
+ * @en Value of the component in v-model. If the component supports the multiple prop, an empty array is used by default.
23
+ */
18
24
  modelValue: null,
19
25
  /**
20
26
  * Принимает массив, состоящий из элементов различных типов: функций, логических значений и строк.
21
27
  * Функции принимают входное значение в качестве аргумента и должны возвращать либо true / false, либо строку, содержащую сообщение об ошибке.
22
28
  * Поле ввода перейдет в состояние ошибки, если функция возвращает значение false (или любое значение в массиве содержит false) либо является строкой.
29
+ * @en Accepts an array of items of different types: functions, booleans and strings. Functions take the input value as an argument and must return either true / false, or a string with an error message. The input goes into the error state if a function returns false (or any value in the array is false) or is a string.
23
30
  */
24
31
  rules: {
25
32
  type: Array,
26
33
  default: () => []
27
34
  },
28
- /** Изменяет тип события, при котором запускается валидация */
35
+ /**
36
+ * Изменяет тип события, при котором запускается валидация
37
+ * @en Changes the type of the event that triggers validation
38
+ */
29
39
  validateOn: String,
30
- /** Значение, используемое при применении правил валидации */
40
+ /**
41
+ * Значение, используемое при применении правил валидации
42
+ * @en Value used when applying the validation rules
43
+ */
31
44
  validationValue: null,
32
- /** Отображает компонент в состояние ошибки */
45
+ /**
46
+ * Отображает компонент в состояние ошибки
47
+ * @en Puts the component into the error state
48
+ */
33
49
  error: Boolean,
34
50
  /**
35
51
  * Отображает компонент в состояние ошибки и передает пользовательские сообщения об ошибках.
36
52
  * Будет объединяться с любыми проверками, заданными в свойстве `rules`.
37
53
  * Это поле не запускает валидацию.
54
+ * @en Puts the component into the error state and passes custom error messages. They are merged with any checks defined in the `rules` prop. This field does not trigger validation.
38
55
  */
39
56
  errorMessages: {
40
57
  type: [Array, String],
41
58
  default: () => []
42
59
  },
43
- /** Максимальное число отображаемых ошибок при валидации */
60
+ /**
61
+ * Максимальное число отображаемых ошибок при валидации
62
+ * @en Maximum number of validation errors shown
63
+ */
44
64
  maxErrors: {
45
65
  type: [Number, String],
46
66
  default: 1
@@ -1 +1 @@
1
- {"version":3,"file":"useValidation.js","sources":["../../../../../src/composables/useValidation/useValidation.ts"],"sourcesContent":["import { defineDisabledProps } from '@cds/composables/useDisabled';\nimport { defineFocusProps } from '@cds/composables/useFocus';\nimport { useForm } from '@cds/composables/useForm';\nimport { defineReadonlyProps } from '@cds/composables/useReadonly';\nimport { useRules } from '@cds/composables/useRules';\nimport { getCurrentInstance, getCurrentInstanceName, propsFactory, useProxyModel, useToggleScope } from '@cds/core';\nimport { type EventProp, warn, wrapInArray } from '@cds/utils';\nimport {\n computed,\n type ExtractPublicPropTypes,\n type MaybeRef,\n nextTick,\n onBeforeMount,\n onBeforeUnmount,\n onMounted,\n type PropType,\n ref,\n shallowRef,\n unref,\n useId,\n watch\n} from 'vue';\n\nimport type { ValidateOn, ValidationRule } from './internal/useValidation.types';\n\nexport const defineValidationProps = propsFactory(\n {\n /** Имя поля ввода */\n name: String,\n /** Значение компонента в v-model. Если компонент поддерживает свойство multiple, по умолчанию используется пустой массив. */\n modelValue: null,\n /**\n * Принимает массив, состоящий из элементов различных типов: функций, логических значений и строк.\n * Функции принимают входное значение в качестве аргумента и должны возвращать либо true / false, либо строку, содержащую сообщение об ошибке.\n * Поле ввода перейдет в состояние ошибки, если функция возвращает значение false (или любое значение в массиве содержит false) либо является строкой.\n */\n rules: {\n type: Array as PropType<readonly ValidationRule[]>,\n default: () => []\n },\n /** Изменяет тип события, при котором запускается валидация */\n validateOn: String as PropType<ValidateOn>,\n /** Значение, используемое при применении правил валидации */\n validationValue: null,\n /** Отображает компонент в состояние ошибки */\n error: Boolean,\n /**\n * Отображает компонент в состояние ошибки и передает пользовательские сообщения об ошибках.\n * Будет объединяться с любыми проверками, заданными в свойстве `rules`.\n * Это поле не запускает валидацию.\n */\n errorMessages: {\n type: [Array, String] as PropType<string | readonly string[] | null>,\n default: () => []\n },\n /** Максимальное число отображаемых ошибок при валидации */\n maxErrors: {\n type: [Number, String],\n default: 1\n },\n\n ...defineFocusProps(),\n ...defineReadonlyProps(),\n ...defineDisabledProps()\n },\n 'validation'\n);\n\nexport interface ValidationProps extends ExtractPublicPropTypes<ReturnType<typeof defineValidationProps>> {\n 'onUpdate:modelValue'?: EventProp | undefined;\n}\n\nexport function useValidation(\n props: ValidationProps,\n name = getCurrentInstanceName(),\n id: MaybeRef<string | number> = useId()\n) {\n const model = useProxyModel(props, 'modelValue');\n const form = useForm(props);\n const rules = useRules(() => props.rules);\n\n const isValidating = shallowRef(false);\n const validationModel = computed(() => (props.validationValue === undefined ? model.value : props.validationValue));\n const isPure = shallowRef(true);\n const isDirty = computed(\n () =>\n !!(\n wrapInArray(unref(model) === '' ? null : unref(model)).length ||\n wrapInArray(unref(validationModel) === '' ? null : unref(validationModel)).length\n )\n );\n\n const validateOn = computed(() => {\n let value = (props.validateOn ?? unref(form.validateOn)) || 'input';\n if (value === 'lazy') value = 'input lazy';\n if (value === 'eager') value = 'input eager';\n const set = new Set(value?.split(' ') ?? []);\n\n return {\n input: set.has('input'),\n blur: set.has('blur') || set.has('input') || set.has('invalid-input'),\n invalidInput: set.has('invalid-input'),\n lazy: set.has('lazy'),\n eager: set.has('eager')\n };\n });\n\n const internalErrorMessages = ref<string[]>([]);\n const errorMessages = computed(() => {\n return props.errorMessages?.length\n ? wrapInArray(props.errorMessages as string | string[])\n .concat(unref(internalErrorMessages))\n .slice(0, Math.max(0, Number(props.maxErrors)))\n : unref(internalErrorMessages);\n });\n\n const isValid = computed(() => {\n if (props.error || props.errorMessages?.length) return false;\n if (!props.rules?.length) return true;\n if (unref(isPure)) {\n return unref(internalErrorMessages).length || unref(validateOn).lazy ? null : true;\n } else {\n return !unref(internalErrorMessages).length;\n }\n });\n\n const validationClasses = computed(() => {\n return {\n [`${name}--error`]: unref(isValid) === false,\n [`${name}--dirty`]: unref(isDirty),\n [`${name}--disabled`]: unref(form.isDisabled),\n [`${name}--readonly`]: unref(form.isReadonly)\n };\n });\n\n const vm = getCurrentInstance('validation');\n const uid = computed(() => props.name ?? unref(id));\n\n onBeforeMount(() => {\n form.register?.({\n id: unref(uid),\n vm,\n validate,\n reset,\n resetValidation\n });\n });\n\n onBeforeUnmount(() => {\n form.unregister?.(unref(uid));\n });\n\n onMounted(async () => {\n if (!unref(validateOn).lazy) {\n await validate(!unref(validateOn).eager);\n }\n form.update?.(unref(uid), unref(isValid), unref(errorMessages));\n });\n\n watch([isValid, errorMessages], () => {\n form.update?.(unref(uid), unref(isValid), unref(errorMessages));\n });\n\n useToggleScope(\n () => unref(validateOn).input || (unref(validateOn).invalidInput && unref(isValid) === false),\n () => {\n watch(validationModel, () => {\n if (unref(validationModel) != null) {\n validate();\n } else if (props.focused) {\n const unwatch = watch(\n () => props.focused,\n (val) => {\n if (!val) validate();\n\n unwatch();\n }\n );\n }\n });\n }\n );\n\n useToggleScope(\n () => unref(validateOn).blur,\n () => {\n watch(\n () => props.focused,\n (val) => {\n if (!val) validate();\n }\n );\n }\n );\n\n async function reset() {\n model.value = null;\n\n await nextTick();\n await resetValidation();\n }\n\n async function resetValidation() {\n isPure.value = true;\n\n if (!unref(validateOn).lazy) {\n await validate(!unref(validateOn).eager);\n } else {\n internalErrorMessages.value = [];\n }\n }\n\n async function validate(silent = false) {\n const results = [];\n\n isValidating.value = true;\n\n for (const rule of unref(rules)!) {\n if (results.length >= Number(props.maxErrors ?? 1)) {\n break;\n }\n\n const handler = typeof rule === 'function' ? rule : () => rule;\n const result = await handler(validationModel.value);\n\n if (result === true) continue;\n\n if (result !== false && typeof result !== 'string') {\n warn('useValidation', `${result} is not a valid value. Rule functions must return boolean true or a string.`);\n\n continue;\n }\n\n results.push(result || '');\n }\n\n internalErrorMessages.value = results;\n isValidating.value = false;\n isPure.value = silent;\n\n return internalErrorMessages.value;\n }\n\n return {\n errorMessages,\n isDirty,\n isDisabled: form.isDisabled,\n isReadonly: form.isReadonly,\n isPure,\n isValid,\n isValidating,\n reset,\n resetValidation,\n validate,\n validationClasses\n };\n}\n"],"names":[],"mappings":";;;;;;;;;;;;AAyBO,MAAM,wBAAwB;AAAA,EACnC;AAAA;AAAA,IAEE,MAAM;AAAA;AAAA,IAEN,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMZ,OAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS,MAAM,CAAA;AAAA,IAAC;AAAA;AAAA,IAGlB,YAAY;AAAA;AAAA,IAEZ,iBAAiB;AAAA;AAAA,IAEjB,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMP,eAAe;AAAA,MACb,MAAM,CAAC,OAAO,MAAM;AAAA,MACpB,SAAS,MAAM,CAAA;AAAA,IAAC;AAAA;AAAA,IAGlB,WAAW;AAAA,MACT,MAAM,CAAC,QAAQ,MAAM;AAAA,MACrB,SAAS;AAAA,IAAA;AAAA,IAGX,GAAG,iBAAA;AAAA,IACH,GAAG,oBAAA;AAAA,IACH,GAAG,oBAAA;AAAA,EAAoB;AAAA,EAEzB;AACF;AAMO,SAAS,cACd,OACA,OAAO,0BACP,KAAgC,SAChC;AACA,QAAM,QAAQ,cAAc,OAAO,YAAY;AAC/C,QAAM,OAAO,QAAQ,KAAK;AAC1B,QAAM,QAAQ,SAAS,MAAM,MAAM,KAAK;AAExC,QAAM,eAAe,WAAW,KAAK;AACrC,QAAM,kBAAkB,SAAS,MAAO,MAAM,oBAAoB,SAAY,MAAM,QAAQ,MAAM,eAAgB;AAClH,QAAM,SAAS,WAAW,IAAI;AAC9B,QAAM,UAAU;AAAA,IACd,MACE,CAAC,EACC,YAAY,MAAM,KAAK,MAAM,KAAK,OAAO,MAAM,KAAK,CAAC,EAAE,UACvD,YAAY,MAAM,eAAe,MAAM,KAAK,OAAO,MAAM,eAAe,CAAC,EAAE;AAAA,EAAA;AAIjF,QAAM,aAAa,SAAS,MAAM;AAChC,QAAI,SAAS,MAAM,cAAc,MAAM,KAAK,UAAU,MAAM;AAC5D,QAAI,UAAU,OAAQ,SAAQ;AAC9B,QAAI,UAAU,QAAS,SAAQ;AAC/B,UAAM,MAAM,IAAI,KAAI,+BAAO,MAAM,SAAQ,EAAE;AAE3C,WAAO;AAAA,MACL,OAAO,IAAI,IAAI,OAAO;AAAA,MACtB,MAAM,IAAI,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,KAAK,IAAI,IAAI,eAAe;AAAA,MACpE,cAAc,IAAI,IAAI,eAAe;AAAA,MACrC,MAAM,IAAI,IAAI,MAAM;AAAA,MACpB,OAAO,IAAI,IAAI,OAAO;AAAA,IAAA;AAAA,EAE1B,CAAC;AAED,QAAM,wBAAwB,IAAc,EAAE;AAC9C,QAAM,gBAAgB,SAAS,MAAM;;AACnC,aAAO,WAAM,kBAAN,mBAAqB,UACxB,YAAY,MAAM,aAAkC,EACjD,OAAO,MAAM,qBAAqB,CAAC,EACnC,MAAM,GAAG,KAAK,IAAI,GAAG,OAAO,MAAM,SAAS,CAAC,CAAC,IAChD,MAAM,qBAAqB;AAAA,EACjC,CAAC;AAED,QAAM,UAAU,SAAS,MAAM;;AAC7B,QAAI,MAAM,WAAS,WAAM,kBAAN,mBAAqB,QAAQ,QAAO;AACvD,QAAI,GAAC,WAAM,UAAN,mBAAa,QAAQ,QAAO;AACjC,QAAI,MAAM,MAAM,GAAG;AACjB,aAAO,MAAM,qBAAqB,EAAE,UAAU,MAAM,UAAU,EAAE,OAAO,OAAO;AAAA,IAChF,OAAO;AACL,aAAO,CAAC,MAAM,qBAAqB,EAAE;AAAA,IACvC;AAAA,EACF,CAAC;AAED,QAAM,oBAAoB,SAAS,MAAM;AACvC,WAAO;AAAA,MACL,CAAC,GAAG,IAAI,SAAS,GAAG,MAAM,OAAO,MAAM;AAAA,MACvC,CAAC,GAAG,IAAI,SAAS,GAAG,MAAM,OAAO;AAAA,MACjC,CAAC,GAAG,IAAI,YAAY,GAAG,MAAM,KAAK,UAAU;AAAA,MAC5C,CAAC,GAAG,IAAI,YAAY,GAAG,MAAM,KAAK,UAAU;AAAA,IAAA;AAAA,EAEhD,CAAC;AAED,QAAM,KAAK,mBAAmB,YAAY;AAC1C,QAAM,MAAM,SAAS,MAAM,MAAM,QAAQ,MAAM,EAAE,CAAC;AAElD,gBAAc,MAAM;;AAClB,eAAK,aAAL,8BAAgB;AAAA,MACd,IAAI,MAAM,GAAG;AAAA,MACb;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,EAEJ,CAAC;AAED,kBAAgB,MAAM;;AACpB,eAAK,eAAL,8BAAkB,MAAM,GAAG;AAAA,EAC7B,CAAC;AAED,YAAU,YAAY;;AACpB,QAAI,CAAC,MAAM,UAAU,EAAE,MAAM;AAC3B,YAAM,SAAS,CAAC,MAAM,UAAU,EAAE,KAAK;AAAA,IACzC;AACA,eAAK,WAAL,8BAAc,MAAM,GAAG,GAAG,MAAM,OAAO,GAAG,MAAM,aAAa;AAAA,EAC/D,CAAC;AAED,QAAM,CAAC,SAAS,aAAa,GAAG,MAAM;;AACpC,eAAK,WAAL,8BAAc,MAAM,GAAG,GAAG,MAAM,OAAO,GAAG,MAAM,aAAa;AAAA,EAC/D,CAAC;AAED;AAAA,IACE,MAAM,MAAM,UAAU,EAAE,SAAU,MAAM,UAAU,EAAE,gBAAgB,MAAM,OAAO,MAAM;AAAA,IACvF,MAAM;AACJ,YAAM,iBAAiB,MAAM;AAC3B,YAAI,MAAM,eAAe,KAAK,MAAM;AAClC,mBAAA;AAAA,QACF,WAAW,MAAM,SAAS;AACxB,gBAAM,UAAU;AAAA,YACd,MAAM,MAAM;AAAA,YACZ,CAAC,QAAQ;AACP,kBAAI,CAAC,IAAK,UAAA;AAEV,sBAAA;AAAA,YACF;AAAA,UAAA;AAAA,QAEJ;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EAAA;AAGF;AAAA,IACE,MAAM,MAAM,UAAU,EAAE;AAAA,IACxB,MAAM;AACJ;AAAA,QACE,MAAM,MAAM;AAAA,QACZ,CAAC,QAAQ;AACP,cAAI,CAAC,IAAK,UAAA;AAAA,QACZ;AAAA,MAAA;AAAA,IAEJ;AAAA,EAAA;AAGF,iBAAe,QAAQ;AACrB,UAAM,QAAQ;AAEd,UAAM,SAAA;AACN,UAAM,gBAAA;AAAA,EACR;AAEA,iBAAe,kBAAkB;AAC/B,WAAO,QAAQ;AAEf,QAAI,CAAC,MAAM,UAAU,EAAE,MAAM;AAC3B,YAAM,SAAS,CAAC,MAAM,UAAU,EAAE,KAAK;AAAA,IACzC,OAAO;AACL,4BAAsB,QAAQ,CAAA;AAAA,IAChC;AAAA,EACF;AAEA,iBAAe,SAAS,SAAS,OAAO;AACtC,UAAM,UAAU,CAAA;AAEhB,iBAAa,QAAQ;AAErB,eAAW,QAAQ,MAAM,KAAK,GAAI;AAChC,UAAI,QAAQ,UAAU,OAAO,MAAM,aAAa,CAAC,GAAG;AAClD;AAAA,MACF;AAEA,YAAM,UAAU,OAAO,SAAS,aAAa,OAAO,MAAM;AAC1D,YAAM,SAAS,MAAM,QAAQ,gBAAgB,KAAK;AAElD,UAAI,WAAW,KAAM;AAErB,UAAI,WAAW,SAAS,OAAO,WAAW,UAAU;AAClD,aAAK,iBAAiB,GAAG,MAAM,6EAA6E;AAE5G;AAAA,MACF;AAEA,cAAQ,KAAK,UAAU,EAAE;AAAA,IAC3B;AAEA,0BAAsB,QAAQ;AAC9B,iBAAa,QAAQ;AACrB,WAAO,QAAQ;AAEf,WAAO,sBAAsB;AAAA,EAC/B;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,YAAY,KAAK;AAAA,IACjB,YAAY,KAAK;AAAA,IACjB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;"}
1
+ {"version":3,"file":"useValidation.js","sources":["../../../../../src/composables/useValidation/useValidation.ts"],"sourcesContent":["import { defineDisabledProps } from '@cds/composables/useDisabled';\nimport { defineFocusProps } from '@cds/composables/useFocus';\nimport { useForm } from '@cds/composables/useForm';\nimport { defineReadonlyProps } from '@cds/composables/useReadonly';\nimport { useRules } from '@cds/composables/useRules';\nimport { getCurrentInstance, getCurrentInstanceName, propsFactory, useProxyModel, useToggleScope } from '@cds/core';\nimport { type EventProp, warn, wrapInArray } from '@cds/utils';\nimport {\n computed,\n type ExtractPublicPropTypes,\n type MaybeRef,\n nextTick,\n onBeforeMount,\n onBeforeUnmount,\n onMounted,\n type PropType,\n ref,\n shallowRef,\n unref,\n useId,\n watch\n} from 'vue';\n\nimport type { ValidateOn, ValidationRule } from './internal/useValidation.types';\n\nexport const defineValidationProps = propsFactory(\n {\n /**\n * Имя поля ввода\n * @en Name of the input\n */\n name: String,\n /**\n * Значение компонента в v-model. Если компонент поддерживает свойство multiple, по умолчанию используется пустой массив.\n * @en Value of the component in v-model. If the component supports the multiple prop, an empty array is used by default.\n */\n modelValue: null,\n /**\n * Принимает массив, состоящий из элементов различных типов: функций, логических значений и строк.\n * Функции принимают входное значение в качестве аргумента и должны возвращать либо true / false, либо строку, содержащую сообщение об ошибке.\n * Поле ввода перейдет в состояние ошибки, если функция возвращает значение false (или любое значение в массиве содержит false) либо является строкой.\n * @en Accepts an array of items of different types: functions, booleans and strings. Functions take the input value as an argument and must return either true / false, or a string with an error message. The input goes into the error state if a function returns false (or any value in the array is false) or is a string.\n */\n rules: {\n type: Array as PropType<readonly ValidationRule[]>,\n default: () => []\n },\n /**\n * Изменяет тип события, при котором запускается валидация\n * @en Changes the type of the event that triggers validation\n */\n validateOn: String as PropType<ValidateOn>,\n /**\n * Значение, используемое при применении правил валидации\n * @en Value used when applying the validation rules\n */\n validationValue: null,\n /**\n * Отображает компонент в состояние ошибки\n * @en Puts the component into the error state\n */\n error: Boolean,\n /**\n * Отображает компонент в состояние ошибки и передает пользовательские сообщения об ошибках.\n * Будет объединяться с любыми проверками, заданными в свойстве `rules`.\n * Это поле не запускает валидацию.\n * @en Puts the component into the error state and passes custom error messages. They are merged with any checks defined in the `rules` prop. This field does not trigger validation.\n */\n errorMessages: {\n type: [Array, String] as PropType<string | readonly string[] | null>,\n default: () => []\n },\n /**\n * Максимальное число отображаемых ошибок при валидации\n * @en Maximum number of validation errors shown\n */\n maxErrors: {\n type: [Number, String],\n default: 1\n },\n\n ...defineFocusProps(),\n ...defineReadonlyProps(),\n ...defineDisabledProps()\n },\n 'validation'\n);\n\nexport interface ValidationProps extends ExtractPublicPropTypes<ReturnType<typeof defineValidationProps>> {\n 'onUpdate:modelValue'?: EventProp | undefined;\n}\n\nexport function useValidation(\n props: ValidationProps,\n name = getCurrentInstanceName(),\n id: MaybeRef<string | number> = useId()\n) {\n const model = useProxyModel(props, 'modelValue');\n const form = useForm(props);\n const rules = useRules(() => props.rules);\n\n const isValidating = shallowRef(false);\n const validationModel = computed(() => (props.validationValue === undefined ? model.value : props.validationValue));\n const isPure = shallowRef(true);\n const isDirty = computed(\n () =>\n !!(\n wrapInArray(unref(model) === '' ? null : unref(model)).length ||\n wrapInArray(unref(validationModel) === '' ? null : unref(validationModel)).length\n )\n );\n\n const validateOn = computed(() => {\n let value = (props.validateOn ?? unref(form.validateOn)) || 'input';\n if (value === 'lazy') value = 'input lazy';\n if (value === 'eager') value = 'input eager';\n const set = new Set(value?.split(' ') ?? []);\n\n return {\n input: set.has('input'),\n blur: set.has('blur') || set.has('input') || set.has('invalid-input'),\n invalidInput: set.has('invalid-input'),\n lazy: set.has('lazy'),\n eager: set.has('eager')\n };\n });\n\n const internalErrorMessages = ref<string[]>([]);\n const errorMessages = computed(() => {\n return props.errorMessages?.length\n ? wrapInArray(props.errorMessages as string | string[])\n .concat(unref(internalErrorMessages))\n .slice(0, Math.max(0, Number(props.maxErrors)))\n : unref(internalErrorMessages);\n });\n\n const isValid = computed(() => {\n if (props.error || props.errorMessages?.length) return false;\n if (!props.rules?.length) return true;\n if (unref(isPure)) {\n return unref(internalErrorMessages).length || unref(validateOn).lazy ? null : true;\n } else {\n return !unref(internalErrorMessages).length;\n }\n });\n\n const validationClasses = computed(() => {\n return {\n [`${name}--error`]: unref(isValid) === false,\n [`${name}--dirty`]: unref(isDirty),\n [`${name}--disabled`]: unref(form.isDisabled),\n [`${name}--readonly`]: unref(form.isReadonly)\n };\n });\n\n const vm = getCurrentInstance('validation');\n const uid = computed(() => props.name ?? unref(id));\n\n onBeforeMount(() => {\n form.register?.({\n id: unref(uid),\n vm,\n validate,\n reset,\n resetValidation\n });\n });\n\n onBeforeUnmount(() => {\n form.unregister?.(unref(uid));\n });\n\n onMounted(async () => {\n if (!unref(validateOn).lazy) {\n await validate(!unref(validateOn).eager);\n }\n form.update?.(unref(uid), unref(isValid), unref(errorMessages));\n });\n\n watch([isValid, errorMessages], () => {\n form.update?.(unref(uid), unref(isValid), unref(errorMessages));\n });\n\n useToggleScope(\n () => unref(validateOn).input || (unref(validateOn).invalidInput && unref(isValid) === false),\n () => {\n watch(validationModel, () => {\n if (unref(validationModel) != null) {\n validate();\n } else if (props.focused) {\n const unwatch = watch(\n () => props.focused,\n (val) => {\n if (!val) validate();\n\n unwatch();\n }\n );\n }\n });\n }\n );\n\n useToggleScope(\n () => unref(validateOn).blur,\n () => {\n watch(\n () => props.focused,\n (val) => {\n if (!val) validate();\n }\n );\n }\n );\n\n async function reset() {\n model.value = null;\n\n await nextTick();\n await resetValidation();\n }\n\n async function resetValidation() {\n isPure.value = true;\n\n if (!unref(validateOn).lazy) {\n await validate(!unref(validateOn).eager);\n } else {\n internalErrorMessages.value = [];\n }\n }\n\n async function validate(silent = false) {\n const results = [];\n\n isValidating.value = true;\n\n for (const rule of unref(rules)!) {\n if (results.length >= Number(props.maxErrors ?? 1)) {\n break;\n }\n\n const handler = typeof rule === 'function' ? rule : () => rule;\n const result = await handler(validationModel.value);\n\n if (result === true) continue;\n\n if (result !== false && typeof result !== 'string') {\n warn('useValidation', `${result} is not a valid value. Rule functions must return boolean true or a string.`);\n\n continue;\n }\n\n results.push(result || '');\n }\n\n internalErrorMessages.value = results;\n isValidating.value = false;\n isPure.value = silent;\n\n return internalErrorMessages.value;\n }\n\n return {\n errorMessages,\n isDirty,\n isDisabled: form.isDisabled,\n isReadonly: form.isReadonly,\n isPure,\n isValid,\n isValidating,\n reset,\n resetValidation,\n validate,\n validationClasses\n };\n}\n"],"names":[],"mappings":"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"}
@@ -6,17 +6,26 @@ import { shallowRef, watchEffect, ref, unref, computed, watch, onScopeDispose, n
6
6
  import { u as useDisplay } from "../useDisplay/useDisplay.js";
7
7
  const defineVirtualProps = propsFactory(
8
8
  {
9
- /** Высота одного элемента в пикселях. Если не задана — высота измеряется автоматически. */
9
+ /**
10
+ * Высота одного элемента в пикселях. Если не задана — высота измеряется автоматически.
11
+ * @en Height of a single item in pixels. When omitted, the height is measured automatically.
12
+ */
10
13
  itemHeight: {
11
14
  type: [Number, String],
12
15
  default: null
13
16
  },
14
- /** Ключ элемента для идентификации (имя поля, путь или функция). По умолчанию используется индекс. */
17
+ /**
18
+ * Ключ элемента для идентификации (имя поля, путь или функция). По умолчанию используется индекс.
19
+ * @en Key that identifies an item (a field name, a path or a function). The index is used by default.
20
+ */
15
21
  itemKey: {
16
22
  type: [String, Array, Function],
17
23
  default: null
18
24
  },
19
- /** Высота области просмотра виртуального списка. */
25
+ /**
26
+ * Высота области просмотра виртуального списка.
27
+ * @en Height of the viewport of the virtual list.
28
+ */
20
29
  height: [Number, String]
21
30
  },
22
31
  "virtual"
@@ -1 +1 @@
1
- {"version":3,"file":"useVirtual.js","sources":["../../../../../src/composables/useVirtual/useVirtual.ts"],"sourcesContent":["import { useDisplay } from '@cds/composables/useDisplay';\nimport { useResizeObserver } from '@cds/composables/useResizeObserver';\nimport { propsFactory } from '@cds/core';\nimport { clamp, debounce, getPropertyFromItem, IN_BROWSER, type SelectItemKey } from '@cds/utils';\nimport {\n computed,\n type ExtractPublicPropTypes,\n nextTick,\n onScopeDispose,\n type PropType,\n type Ref,\n ref,\n shallowRef,\n unref,\n watch,\n watchEffect\n} from 'vue';\n\nexport const defineVirtualProps = propsFactory(\n {\n /** Высота одного элемента в пикселях. Если не задана — высота измеряется автоматически. */\n itemHeight: {\n type: [Number, String],\n default: null\n },\n /** Ключ элемента для идентификации (имя поля, путь или функция). По умолчанию используется индекс. */\n itemKey: {\n type: [String, Array, Function] as PropType<SelectItemKey>,\n default: null\n },\n /** Высота области просмотра виртуального списка. */\n height: [Number, String]\n },\n 'virtual'\n);\n\nexport interface VirtualProps extends ExtractPublicPropTypes<ReturnType<typeof defineVirtualProps>> {}\n\nconst UP = -1;\nconst DOWN = 1;\nconst BUFFER_PX = 100;\n\nexport function useVirtual<T>(props: VirtualProps, items: Ref<readonly T[]>) {\n const display = useDisplay();\n\n const itemHeight = shallowRef(0);\n watchEffect(() => {\n itemHeight.value = parseFloat(props.itemHeight || 0);\n });\n\n const paddingTop = shallowRef(0);\n const paddingBottom = shallowRef(0);\n const first = shallowRef(0);\n const last = shallowRef(Math.ceil((parseInt(props.height!) || display.height.value) / (itemHeight.value || 16)) || 1);\n\n const containerRef = ref<HTMLElement>();\n const markerRef = ref<HTMLElement>();\n let markerOffset = 0;\n\n const { resizeRef, contentRect } = useResizeObserver();\n\n watchEffect(() => {\n resizeRef.value = unref(containerRef);\n });\n\n const viewportHeight = computed(() => {\n return containerRef.value === document.documentElement\n ? display.height.value\n : contentRect.value?.height || parseInt(props.height!) || 0;\n });\n\n const hasInitialRender = computed(() => {\n return !!(unref(containerRef) && unref(markerRef) && unref(viewportHeight) && unref(itemHeight));\n });\n\n let sizes = Array.from<number | null>({ length: items.value.length });\n let offsets = Array.from<number>({ length: items.value.length });\n let targetScrollIndex = -1;\n\n const updateTime = shallowRef(0);\n\n const updateOffsets = debounce(() => {\n const start = performance.now();\n offsets[0] = 0;\n const length = items.value.length;\n for (let i = 1; i <= length; i++) {\n offsets[i] = (offsets[i - 1] || 0) + getSize(i - 1);\n }\n updateTime.value = Math.max(updateTime.value, performance.now() - start);\n }, updateTime);\n\n const unwatch = watch(hasInitialRender, (v) => {\n if (!v) return;\n\n unwatch();\n\n markerOffset = markerRef.value!.offsetTop;\n updateOffsets.immediate();\n calculateVisibleItems();\n\n if (!~targetScrollIndex) return;\n\n nextTick(() => {\n IN_BROWSER &&\n window.requestAnimationFrame(() => {\n scrollToIndex(targetScrollIndex);\n targetScrollIndex = -1;\n });\n });\n });\n\n onScopeDispose(() => {\n updateOffsets.clear();\n });\n\n function getSize(index: number) {\n return sizes[index] || itemHeight.value;\n }\n\n function handleItemResize(index: number, height: number) {\n const prevHeight = sizes[index];\n const prevMinHeight = itemHeight.value;\n\n itemHeight.value = prevMinHeight ? Math.min(itemHeight.value, height) : height;\n\n if (prevHeight !== height || prevMinHeight !== itemHeight.value) {\n sizes[index] = height;\n updateOffsets();\n }\n }\n\n function calculateOffset(index: number) {\n index = clamp(index, 0, items.value.length);\n const whole = Math.floor(index);\n const fraction = index % 1;\n const next = whole + 1;\n const wholeOffset = offsets[whole] || 0;\n const nextOffset = offsets[next] || wholeOffset;\n return wholeOffset + (nextOffset - wholeOffset) * fraction;\n }\n\n function calculateIndex(scrollTop: number) {\n return binaryClosest(offsets, scrollTop);\n }\n\n let lastScrollTop = 0;\n let scrollVelocity = 0;\n let lastScrollTime = 0;\n\n watch(viewportHeight, (val, oldVal) => {\n calculateVisibleItems();\n if (val < oldVal) {\n requestAnimationFrame(() => {\n scrollVelocity = 0;\n calculateVisibleItems();\n });\n }\n });\n\n let scrollTimeout = -1;\n function handleScroll() {\n if (!containerRef.value || !markerRef.value) return;\n\n const scrollTop = containerRef.value.scrollTop;\n const scrollTime = performance.now();\n const scrollDeltaT = scrollTime - lastScrollTime;\n\n if (scrollDeltaT > 500) {\n scrollVelocity = Math.sign(scrollTop - lastScrollTop);\n markerOffset = markerRef.value.offsetTop;\n } else {\n scrollVelocity = scrollTop - lastScrollTop;\n }\n\n lastScrollTop = scrollTop;\n lastScrollTime = scrollTime;\n\n window.clearTimeout(scrollTimeout);\n scrollTimeout = window.setTimeout(handleScrollend, 500);\n\n calculateVisibleItems();\n }\n\n function handleScrollend() {\n if (!containerRef.value || !markerRef.value) return;\n\n scrollVelocity = 0;\n lastScrollTime = 0;\n\n window.clearTimeout(scrollTimeout);\n calculateVisibleItems();\n }\n\n let raf = -1;\n function calculateVisibleItems() {\n cancelAnimationFrame(raf);\n raf = requestAnimationFrame(_calculateVisibleItems);\n }\n\n function _calculateVisibleItems() {\n if (!containerRef.value || !viewportHeight.value || !itemHeight.value) return;\n const scrollTop = lastScrollTop - markerOffset;\n const direction = Math.sign(scrollVelocity);\n\n const startPx = Math.max(0, scrollTop - BUFFER_PX);\n const start = clamp(calculateIndex(startPx), 0, items.value.length);\n\n const endPx = scrollTop + viewportHeight.value + BUFFER_PX;\n const end = clamp(calculateIndex(endPx) + 1, start + 1, items.value.length);\n\n if (\n // Only update the side we're scrolling towards,\n // the other side will be updated incidentally\n (direction !== UP || start < first.value) &&\n (direction !== DOWN || end > last.value)\n ) {\n const topOverflow = calculateOffset(first.value) - calculateOffset(start);\n const bottomOverflow = calculateOffset(end) - calculateOffset(last.value);\n const bufferOverflow = Math.max(topOverflow, bottomOverflow);\n\n if (bufferOverflow > BUFFER_PX) {\n first.value = start;\n last.value = end;\n } else {\n // Only update the side that's reached its limit if there's still buffer left\n if (start <= 0) first.value = start;\n if (end >= items.value.length) last.value = end;\n }\n }\n\n paddingTop.value = calculateOffset(first.value);\n paddingBottom.value = calculateOffset(items.value.length) - calculateOffset(last.value);\n }\n\n function scrollToIndex(index: number) {\n const offset = calculateOffset(index);\n if (!containerRef.value || (index && !offset)) {\n targetScrollIndex = index;\n } else {\n containerRef.value.scrollTop = offset;\n }\n }\n\n const computedItems = computed(() => {\n return items.value.slice(first.value, last.value).map((item, index) => {\n const _index = index + first.value;\n return {\n raw: item,\n index: _index,\n key: getPropertyFromItem(item, props.itemKey, _index)\n };\n });\n });\n\n watch(\n items,\n () => {\n sizes = Array.from({ length: items.value.length });\n offsets = Array.from({ length: items.value.length });\n updateOffsets.immediate();\n calculateVisibleItems();\n },\n { deep: 1 }\n );\n\n return {\n containerRef,\n markerRef,\n computedItems,\n paddingTop,\n paddingBottom,\n calculateVisibleItems,\n scrollToIndex,\n handleScroll,\n handleScrollend,\n handleItemResize\n };\n}\n\nfunction binaryClosest(arr: ArrayLike<number>, val: number) {\n let high = arr.length - 1;\n let low = 0;\n let mid = 0;\n let item = null;\n let target = -1;\n\n if (arr[high]! < val) {\n return high;\n }\n\n while (low <= high) {\n mid = (low + high) >> 1;\n item = arr[mid]!;\n\n if (item > val) {\n high = mid - 1;\n } else if (item < val) {\n target = mid;\n low = mid + 1;\n } else if (item === val) {\n return mid;\n } else {\n return low;\n }\n }\n\n return target;\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useVirtual.js","sources":["../../../../../src/composables/useVirtual/useVirtual.ts"],"sourcesContent":["import { useDisplay } from '@cds/composables/useDisplay';\nimport { useResizeObserver } from '@cds/composables/useResizeObserver';\nimport { propsFactory } from '@cds/core';\nimport { clamp, debounce, getPropertyFromItem, IN_BROWSER, type SelectItemKey } from '@cds/utils';\nimport {\n computed,\n type ExtractPublicPropTypes,\n nextTick,\n onScopeDispose,\n type PropType,\n type Ref,\n ref,\n shallowRef,\n unref,\n watch,\n watchEffect\n} from 'vue';\n\nexport const defineVirtualProps = propsFactory(\n {\n /**\n * Высота одного элемента в пикселях. Если не задана — высота измеряется автоматически.\n * @en Height of a single item in pixels. When omitted, the height is measured automatically.\n */\n itemHeight: {\n type: [Number, String],\n default: null\n },\n /**\n * Ключ элемента для идентификации (имя поля, путь или функция). По умолчанию используется индекс.\n * @en Key that identifies an item (a field name, a path or a function). The index is used by default.\n */\n itemKey: {\n type: [String, Array, Function] as PropType<SelectItemKey>,\n default: null\n },\n /**\n * Высота области просмотра виртуального списка.\n * @en Height of the viewport of the virtual list.\n */\n height: [Number, String]\n },\n 'virtual'\n);\n\nexport interface VirtualProps extends ExtractPublicPropTypes<ReturnType<typeof defineVirtualProps>> {}\n\nconst UP = -1;\nconst DOWN = 1;\nconst BUFFER_PX = 100;\n\nexport function useVirtual<T>(props: VirtualProps, items: Ref<readonly T[]>) {\n const display = useDisplay();\n\n const itemHeight = shallowRef(0);\n watchEffect(() => {\n itemHeight.value = parseFloat(props.itemHeight || 0);\n });\n\n const paddingTop = shallowRef(0);\n const paddingBottom = shallowRef(0);\n const first = shallowRef(0);\n const last = shallowRef(Math.ceil((parseInt(props.height!) || display.height.value) / (itemHeight.value || 16)) || 1);\n\n const containerRef = ref<HTMLElement>();\n const markerRef = ref<HTMLElement>();\n let markerOffset = 0;\n\n const { resizeRef, contentRect } = useResizeObserver();\n\n watchEffect(() => {\n resizeRef.value = unref(containerRef);\n });\n\n const viewportHeight = computed(() => {\n return containerRef.value === document.documentElement\n ? display.height.value\n : contentRect.value?.height || parseInt(props.height!) || 0;\n });\n\n const hasInitialRender = computed(() => {\n return !!(unref(containerRef) && unref(markerRef) && unref(viewportHeight) && unref(itemHeight));\n });\n\n let sizes = Array.from<number | null>({ length: items.value.length });\n let offsets = Array.from<number>({ length: items.value.length });\n let targetScrollIndex = -1;\n\n const updateTime = shallowRef(0);\n\n const updateOffsets = debounce(() => {\n const start = performance.now();\n offsets[0] = 0;\n const length = items.value.length;\n for (let i = 1; i <= length; i++) {\n offsets[i] = (offsets[i - 1] || 0) + getSize(i - 1);\n }\n updateTime.value = Math.max(updateTime.value, performance.now() - start);\n }, updateTime);\n\n const unwatch = watch(hasInitialRender, (v) => {\n if (!v) return;\n\n unwatch();\n\n markerOffset = markerRef.value!.offsetTop;\n updateOffsets.immediate();\n calculateVisibleItems();\n\n if (!~targetScrollIndex) return;\n\n nextTick(() => {\n IN_BROWSER &&\n window.requestAnimationFrame(() => {\n scrollToIndex(targetScrollIndex);\n targetScrollIndex = -1;\n });\n });\n });\n\n onScopeDispose(() => {\n updateOffsets.clear();\n });\n\n function getSize(index: number) {\n return sizes[index] || itemHeight.value;\n }\n\n function handleItemResize(index: number, height: number) {\n const prevHeight = sizes[index];\n const prevMinHeight = itemHeight.value;\n\n itemHeight.value = prevMinHeight ? Math.min(itemHeight.value, height) : height;\n\n if (prevHeight !== height || prevMinHeight !== itemHeight.value) {\n sizes[index] = height;\n updateOffsets();\n }\n }\n\n function calculateOffset(index: number) {\n index = clamp(index, 0, items.value.length);\n const whole = Math.floor(index);\n const fraction = index % 1;\n const next = whole + 1;\n const wholeOffset = offsets[whole] || 0;\n const nextOffset = offsets[next] || wholeOffset;\n return wholeOffset + (nextOffset - wholeOffset) * fraction;\n }\n\n function calculateIndex(scrollTop: number) {\n return binaryClosest(offsets, scrollTop);\n }\n\n let lastScrollTop = 0;\n let scrollVelocity = 0;\n let lastScrollTime = 0;\n\n watch(viewportHeight, (val, oldVal) => {\n calculateVisibleItems();\n if (val < oldVal) {\n requestAnimationFrame(() => {\n scrollVelocity = 0;\n calculateVisibleItems();\n });\n }\n });\n\n let scrollTimeout = -1;\n function handleScroll() {\n if (!containerRef.value || !markerRef.value) return;\n\n const scrollTop = containerRef.value.scrollTop;\n const scrollTime = performance.now();\n const scrollDeltaT = scrollTime - lastScrollTime;\n\n if (scrollDeltaT > 500) {\n scrollVelocity = Math.sign(scrollTop - lastScrollTop);\n markerOffset = markerRef.value.offsetTop;\n } else {\n scrollVelocity = scrollTop - lastScrollTop;\n }\n\n lastScrollTop = scrollTop;\n lastScrollTime = scrollTime;\n\n window.clearTimeout(scrollTimeout);\n scrollTimeout = window.setTimeout(handleScrollend, 500);\n\n calculateVisibleItems();\n }\n\n function handleScrollend() {\n if (!containerRef.value || !markerRef.value) return;\n\n scrollVelocity = 0;\n lastScrollTime = 0;\n\n window.clearTimeout(scrollTimeout);\n calculateVisibleItems();\n }\n\n let raf = -1;\n function calculateVisibleItems() {\n cancelAnimationFrame(raf);\n raf = requestAnimationFrame(_calculateVisibleItems);\n }\n\n function _calculateVisibleItems() {\n if (!containerRef.value || !viewportHeight.value || !itemHeight.value) return;\n const scrollTop = lastScrollTop - markerOffset;\n const direction = Math.sign(scrollVelocity);\n\n const startPx = Math.max(0, scrollTop - BUFFER_PX);\n const start = clamp(calculateIndex(startPx), 0, items.value.length);\n\n const endPx = scrollTop + viewportHeight.value + BUFFER_PX;\n const end = clamp(calculateIndex(endPx) + 1, start + 1, items.value.length);\n\n if (\n // Only update the side we're scrolling towards,\n // the other side will be updated incidentally\n (direction !== UP || start < first.value) &&\n (direction !== DOWN || end > last.value)\n ) {\n const topOverflow = calculateOffset(first.value) - calculateOffset(start);\n const bottomOverflow = calculateOffset(end) - calculateOffset(last.value);\n const bufferOverflow = Math.max(topOverflow, bottomOverflow);\n\n if (bufferOverflow > BUFFER_PX) {\n first.value = start;\n last.value = end;\n } else {\n // Only update the side that's reached its limit if there's still buffer left\n if (start <= 0) first.value = start;\n if (end >= items.value.length) last.value = end;\n }\n }\n\n paddingTop.value = calculateOffset(first.value);\n paddingBottom.value = calculateOffset(items.value.length) - calculateOffset(last.value);\n }\n\n function scrollToIndex(index: number) {\n const offset = calculateOffset(index);\n if (!containerRef.value || (index && !offset)) {\n targetScrollIndex = index;\n } else {\n containerRef.value.scrollTop = offset;\n }\n }\n\n const computedItems = computed(() => {\n return items.value.slice(first.value, last.value).map((item, index) => {\n const _index = index + first.value;\n return {\n raw: item,\n index: _index,\n key: getPropertyFromItem(item, props.itemKey, _index)\n };\n });\n });\n\n watch(\n items,\n () => {\n sizes = Array.from({ length: items.value.length });\n offsets = Array.from({ length: items.value.length });\n updateOffsets.immediate();\n calculateVisibleItems();\n },\n { deep: 1 }\n );\n\n return {\n containerRef,\n markerRef,\n computedItems,\n paddingTop,\n paddingBottom,\n calculateVisibleItems,\n scrollToIndex,\n handleScroll,\n handleScrollend,\n handleItemResize\n };\n}\n\nfunction binaryClosest(arr: ArrayLike<number>, val: number) {\n let high = arr.length - 1;\n let low = 0;\n let mid = 0;\n let item = null;\n let target = -1;\n\n if (arr[high]! < val) {\n return high;\n }\n\n while (low <= high) {\n mid = (low + high) >> 1;\n item = arr[mid]!;\n\n if (item > val) {\n high = mid - 1;\n } else if (item < val) {\n target = mid;\n low = mid + 1;\n } else if (item === val) {\n return mid;\n } else {\n return low;\n }\n }\n\n return target;\n}\n"],"names":[],"mappings":"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"}
@@ -16,7 +16,10 @@ const defineComponentProps = propsFactory(
16
16
  );
17
17
  const defineTagProps = propsFactory(
18
18
  {
19
- /** Пользовательский HTML-тег для отображения */
19
+ /**
20
+ * Пользовательский HTML-тег для отображения
21
+ * @en Custom HTML tag or component to render
22
+ */
20
23
  tag: {
21
24
  type: [String, Object, Function],
22
25
  default: "div"
@@ -1 +1 @@
1
- {"version":3,"file":"defineComponent.js","sources":["../../../../src/core/defineComponent.ts"],"sourcesContent":["import { propsFactory } from '@cds/core/propsFactory';\nimport { useDefaults } from '@cds/core/useDefaults';\nimport { classNames, kebabCase, pick } from '@cds/utils';\nimport {\n type ComponentPublicInstance,\n defineComponent,\n type ExtractPublicPropTypes,\n type FunctionalComponent,\n h,\n type PropType,\n type StyleValue,\n type VNodeChild\n} from 'vue';\n\nexport type JSXComponent<Props = any> = { new (): ComponentPublicInstance<Props> } | FunctionalComponent<Props>;\n\nexport type SlotsToProps<U extends RawSlots, T = MakeInternalSlots<U>> = {\n $children?:\n | VNodeChild\n | (T extends { default: infer V } ? V : {})\n | { [K in keyof T]?: T[K] }\n | { $stable?: boolean };\n 'v-slots'?: { [K in keyof T]?: T[K] | false };\n} & {\n [K in keyof T as `v-slot:${K & string}`]?: T[K] | false;\n};\n\nexport type ClassValue = any;\n\n/**\n * Defines the properties for a customizable component.\n *\n * The `defineComponentProps` object is constructed using the `propsFactory` function,\n * and it provides two configurable props for a component:\n *\n * 1. `class`: A flexible prop that accepts a string, array, or object\n * for defining CSS class names. This allows dynamic class application based on user input.\n *\n * 2. `style`: A versatile prop that accepts a string, array, or object\n * for defining inline styles. The default value for this prop is `null`.\n */\nexport const defineComponentProps = propsFactory(\n {\n class: [String, Array, Object] as PropType<ClassValue>,\n style: {\n type: [String, Array, Object] as PropType<StyleValue>,\n default: null\n }\n },\n 'component'\n);\n\nexport type ComponentProps = ExtractPublicPropTypes<ReturnType<typeof defineComponentProps>>;\n\n/**\n * Defines configurable properties for a custom tag component.\n *\n * The `defineTagProps` is a property factory function that creates\n * reactive and type-safe props for a custom tag component. It primarily\n * includes a `tag` property to specify the HTML tag or component to render.\n */\nexport const defineTagProps = propsFactory(\n {\n /** Пользовательский HTML-тег для отображения */\n tag: {\n type: [String, Object, Function] as PropType<string | JSXComponent>,\n default: 'div'\n }\n },\n 'tag'\n);\n\nexport type TagProps = ExtractPublicPropTypes<ReturnType<typeof defineTagProps>>;\n\ntype PropsFactoryFn = (defaults?: any) => Record<string, any>;\n\n/**\n * Filters the given props object to include only the keys defined in the provided factory function.\n *\n * @example\n * const inputProps = filterProps(defineCdsInputProps, props);\n * const fieldProps = filterProps(defineCdsFieldProps, props);\n */\nexport function filterProps<F extends PropsFactoryFn, P extends Record<string, any>>(\n factory: F,\n props: P\n): Pick<P, Extract<keyof P, Exclude<keyof ReturnType<F>, 'class' | 'style'>>> {\n const factoryProps = factory();\n const keys = Object.keys(factoryProps).filter((key) => key !== 'class' && key !== 'style');\n return pick(props, keys as Extract<keyof P, string>[]) as any;\n}\n\ntype RawSlots = Record<string, unknown>;\ntype Slot<T> = [T] extends [never] ? () => VNodeChild : (arg: T) => VNodeChild;\ntype MakeInternalSlots<T extends RawSlots> = {\n [K in keyof T]: Slot<T[K]>;\n};\n\n/**\n * Creates a simple functional Vue component with the specified class name, tag, and optional name.\n *\n * @param {string} componentName - Name of the component.\n * @param {string} className - The class name to apply to the root element of the component.\n * @param {string} [tag='div'] - The HTML tag name to be used as the root element. Defaults to 'div'.\n * @return {import('vue').DefineComponent} A Vue component with the specified configuration.\n */\nexport function createSimpleFunctionalComponent(componentName: string, className?: string, tag = 'div') {\n return defineComponent({\n name: componentName,\n props: {\n ...defineTagProps(),\n ...defineComponentProps()\n },\n setup(_props, { slots }) {\n const props = useDefaults(_props);\n return () =>\n h(\n props.tag || tag,\n { class: classNames(className ?? kebabCase(componentName), props.class), style: props.style },\n slots.default?.()\n );\n }\n });\n}\n"],"names":[],"mappings":";;;;;;AAyCO,MAAM,uBAAuB;AAAA,EAClC;AAAA,IACE,OAAO,CAAC,QAAQ,OAAO,MAAM;AAAA,IAC7B,OAAO;AAAA,MACL,MAAM,CAAC,QAAQ,OAAO,MAAM;AAAA,MAC5B,SAAS;AAAA,IAAA;AAAA,EACX;AAAA,EAEF;AACF;AAWO,MAAM,iBAAiB;AAAA,EAC5B;AAAA;AAAA,IAEE,KAAK;AAAA,MACH,MAAM,CAAC,QAAQ,QAAQ,QAAQ;AAAA,MAC/B,SAAS;AAAA,IAAA;AAAA,EACX;AAAA,EAEF;AACF;AAaO,SAAS,YACd,SACA,OAC4E;AAC5E,QAAM,eAAe,QAAA;AACrB,QAAM,OAAO,OAAO,KAAK,YAAY,EAAE,OAAO,CAAC,QAAQ,QAAQ,WAAW,QAAQ,OAAO;AACzF,SAAO,KAAK,OAAO,IAAkC;AACvD;AAgBO,SAAS,gCAAgC,eAAuB,WAAoB,MAAM,OAAO;AACtG,SAAO,gBAAgB;AAAA,IACrB,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG,eAAA;AAAA,MACH,GAAG,qBAAA;AAAA,IAAqB;AAAA,IAE1B,MAAM,QAAQ,EAAE,SAAS;AACvB,YAAM,QAAQ,YAAY,MAAM;AAChC,aAAO;;AACL;AAAA,UACE,MAAM,OAAO;AAAA,UACb,EAAE,OAAO,WAAW,aAAa,UAAU,aAAa,GAAG,MAAM,KAAK,GAAG,OAAO,MAAM,MAAA;AAAA,WACtF,WAAM,YAAN;AAAA,QAAgB;AAAA;AAAA,IAEtB;AAAA,EAAA,CACD;AACH;"}
1
+ {"version":3,"file":"defineComponent.js","sources":["../../../../src/core/defineComponent.ts"],"sourcesContent":["import { propsFactory } from '@cds/core/propsFactory';\nimport { useDefaults } from '@cds/core/useDefaults';\nimport { classNames, kebabCase, pick } from '@cds/utils';\nimport {\n type ComponentPublicInstance,\n defineComponent,\n type ExtractPublicPropTypes,\n type FunctionalComponent,\n h,\n type PropType,\n type StyleValue,\n type VNodeChild\n} from 'vue';\n\nexport type JSXComponent<Props = any> = { new (): ComponentPublicInstance<Props> } | FunctionalComponent<Props>;\n\nexport type SlotsToProps<U extends RawSlots, T = MakeInternalSlots<U>> = {\n $children?:\n | VNodeChild\n | (T extends { default: infer V } ? V : {})\n | { [K in keyof T]?: T[K] }\n | { $stable?: boolean };\n 'v-slots'?: { [K in keyof T]?: T[K] | false };\n} & {\n [K in keyof T as `v-slot:${K & string}`]?: T[K] | false;\n};\n\nexport type ClassValue = any;\n\n/**\n * Defines the properties for a customizable component.\n *\n * The `defineComponentProps` object is constructed using the `propsFactory` function,\n * and it provides two configurable props for a component:\n *\n * 1. `class`: A flexible prop that accepts a string, array, or object\n * for defining CSS class names. This allows dynamic class application based on user input.\n *\n * 2. `style`: A versatile prop that accepts a string, array, or object\n * for defining inline styles. The default value for this prop is `null`.\n */\nexport const defineComponentProps = propsFactory(\n {\n class: [String, Array, Object] as PropType<ClassValue>,\n style: {\n type: [String, Array, Object] as PropType<StyleValue>,\n default: null\n }\n },\n 'component'\n);\n\nexport type ComponentProps = ExtractPublicPropTypes<ReturnType<typeof defineComponentProps>>;\n\n/**\n * Defines configurable properties for a custom tag component.\n *\n * The `defineTagProps` is a property factory function that creates\n * reactive and type-safe props for a custom tag component. It primarily\n * includes a `tag` property to specify the HTML tag or component to render.\n */\nexport const defineTagProps = propsFactory(\n {\n /**\n * Пользовательский HTML-тег для отображения\n * @en Custom HTML tag or component to render\n */\n tag: {\n type: [String, Object, Function] as PropType<string | JSXComponent>,\n default: 'div'\n }\n },\n 'tag'\n);\n\nexport type TagProps = ExtractPublicPropTypes<ReturnType<typeof defineTagProps>>;\n\ntype PropsFactoryFn = (defaults?: any) => Record<string, any>;\n\n/**\n * Filters the given props object to include only the keys defined in the provided factory function.\n *\n * @example\n * const inputProps = filterProps(defineCdsInputProps, props);\n * const fieldProps = filterProps(defineCdsFieldProps, props);\n */\nexport function filterProps<F extends PropsFactoryFn, P extends Record<string, any>>(\n factory: F,\n props: P\n): Pick<P, Extract<keyof P, Exclude<keyof ReturnType<F>, 'class' | 'style'>>> {\n const factoryProps = factory();\n const keys = Object.keys(factoryProps).filter((key) => key !== 'class' && key !== 'style');\n return pick(props, keys as Extract<keyof P, string>[]) as any;\n}\n\ntype RawSlots = Record<string, unknown>;\ntype Slot<T> = [T] extends [never] ? () => VNodeChild : (arg: T) => VNodeChild;\ntype MakeInternalSlots<T extends RawSlots> = {\n [K in keyof T]: Slot<T[K]>;\n};\n\n/**\n * Creates a simple functional Vue component with the specified class name, tag, and optional name.\n *\n * @param {string} componentName - Name of the component.\n * @param {string} className - The class name to apply to the root element of the component.\n * @param {string} [tag='div'] - The HTML tag name to be used as the root element. Defaults to 'div'.\n * @return {import('vue').DefineComponent} A Vue component with the specified configuration.\n */\nexport function createSimpleFunctionalComponent(componentName: string, className?: string, tag = 'div') {\n return defineComponent({\n name: componentName,\n props: {\n ...defineTagProps(),\n ...defineComponentProps()\n },\n setup(_props, { slots }) {\n const props = useDefaults(_props);\n return () =>\n h(\n props.tag || tag,\n { class: classNames(className ?? kebabCase(componentName), props.class), style: props.style },\n slots.default?.()\n );\n }\n });\n}\n"],"names":[],"mappings":";;;;;;AAyCO,MAAM,uBAAuB;AAAA,EAClC;AAAA,IACE,OAAO,CAAC,QAAQ,OAAO,MAAM;AAAA,IAC7B,OAAO;AAAA,MACL,MAAM,CAAC,QAAQ,OAAO,MAAM;AAAA,MAC5B,SAAS;AAAA,IAAA;AAAA,EACX;AAAA,EAEF;AACF;AAWO,MAAM,iBAAiB;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA;AAAA,IAKE,KAAK;AAAA,MACH,MAAM,CAAC,QAAQ,QAAQ,QAAQ;AAAA,MAC/B,SAAS;AAAA,IAAA;AAAA,EACX;AAAA,EAEF;AACF;AAaO,SAAS,YACd,SACA,OAC4E;AAC5E,QAAM,eAAe,QAAA;AACrB,QAAM,OAAO,OAAO,KAAK,YAAY,EAAE,OAAO,CAAC,QAAQ,QAAQ,WAAW,QAAQ,OAAO;AACzF,SAAO,KAAK,OAAO,IAAkC;AACvD;AAgBO,SAAS,gCAAgC,eAAuB,WAAoB,MAAM,OAAO;AACtG,SAAO,gBAAgB;AAAA,IACrB,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG,eAAA;AAAA,MACH,GAAG,qBAAA;AAAA,IAAqB;AAAA,IAE1B,MAAM,QAAQ,EAAE,SAAS;AACvB,YAAM,QAAQ,YAAY,MAAM;AAChC,aAAO;;AACL;AAAA,UACE,MAAM,OAAO;AAAA,UACb,EAAE,OAAO,WAAW,aAAa,UAAU,aAAa,GAAG,MAAM,KAAK,GAAG,OAAO,MAAM,MAAA;AAAA,WACtF,WAAM,YAAN;AAAA,QAAgB;AAAA;AAAA,IAEtB;AAAA,EAAA,CACD;AACH;"}
@@ -3,10 +3,14 @@ const lumaDark = {
3
3
  ...cdsDark,
4
4
  colors: {
5
5
  ...cdsDark.colors,
6
- "brand-secondary-hover": "#650B25",
7
- "brand-secondary-border": "#8A1034",
8
- "brand-secondary-active": "#8A1034",
9
- "brand-secondary": "#3A0715",
6
+ "surface-secondary": "#24262C",
7
+ "surface-primary": "#1B1D21",
8
+ "surface-elevated": "#24262C",
9
+ "page-primary": "#16171A",
10
+ "brand-secondary-hover": "#8A1034",
11
+ "brand-secondary-border": "#A01639",
12
+ "brand-secondary-active": "#A01639",
13
+ "brand-secondary": "#6F0C28",
10
14
  "brand-primary-hover": "#8A1034",
11
15
  "brand-primary-content": "#FFD9E1",
12
16
  "brand-primary-border": "#D2154B",
@@ -1 +1 @@
1
- {"version":3,"file":"lumaDark.js","sources":["../../../../src/themes/lumaDark.ts"],"sourcesContent":["import cdsDark from './cdsDark';\n\nexport default {\n ...cdsDark,\n colors: {\n ...cdsDark.colors,\n 'brand-secondary-hover': '#650B25',\n 'brand-secondary-border': '#8A1034',\n 'brand-secondary-active': '#8A1034',\n 'brand-secondary': '#3A0715',\n 'brand-primary-hover': '#8A1034',\n 'brand-primary-content': '#FFD9E1',\n 'brand-primary-border': '#D2154B',\n 'brand-primary-active': '#650B25',\n 'brand-primary': '#D2154B'\n }\n};\n"],"names":[],"mappings":";AAEA,MAAA,WAAe;AAAA,EACb,GAAG;AAAA,EACH,QAAQ;AAAA,IACN,GAAG,QAAQ;AAAA,IACX,yBAAyB;AAAA,IACzB,0BAA0B;AAAA,IAC1B,0BAA0B;AAAA,IAC1B,mBAAmB;AAAA,IACnB,uBAAuB;AAAA,IACvB,yBAAyB;AAAA,IACzB,wBAAwB;AAAA,IACxB,wBAAwB;AAAA,IACxB,iBAAiB;AAAA,EAAA;AAErB;"}
1
+ {"version":3,"file":"lumaDark.js","sources":["../../../../src/themes/lumaDark.ts"],"sourcesContent":["import cdsDark from './cdsDark';\n\nexport default {\n ...cdsDark,\n colors: {\n ...cdsDark.colors,\n 'surface-secondary': '#24262C',\n 'surface-primary': '#1B1D21',\n 'surface-elevated': '#24262C',\n 'page-primary': '#16171A',\n 'brand-secondary-hover': '#8A1034',\n 'brand-secondary-border': '#A01639',\n 'brand-secondary-active': '#A01639',\n 'brand-secondary': '#6F0C28',\n 'brand-primary-hover': '#8A1034',\n 'brand-primary-content': '#FFD9E1',\n 'brand-primary-border': '#D2154B',\n 'brand-primary-active': '#650B25',\n 'brand-primary': '#D2154B'\n }\n};\n"],"names":[],"mappings":";AAEA,MAAA,WAAe;AAAA,EACb,GAAG;AAAA,EACH,QAAQ;AAAA,IACN,GAAG,QAAQ;AAAA,IACX,qBAAqB;AAAA,IACrB,mBAAmB;AAAA,IACnB,oBAAoB;AAAA,IACpB,gBAAgB;AAAA,IAChB,yBAAyB;AAAA,IACzB,0BAA0B;AAAA,IAC1B,0BAA0B;AAAA,IAC1B,mBAAmB;AAAA,IACnB,uBAAuB;AAAA,IACvB,yBAAyB;AAAA,IACzB,wBAAwB;AAAA,IACxB,wBAAwB;AAAA,IACxB,iBAAiB;AAAA,EAAA;AAErB;"}
@@ -378,14 +378,14 @@ function endOfDate(date, unit, utc) {
378
378
  }
379
379
  function getMaxDate(date, ...args) {
380
380
  let _date = new Date(date);
381
- Array.prototype.slice.call(args, 1).forEach((date2) => {
381
+ args.forEach((date2) => {
382
382
  _date = Math.max(_date, new Date(date2));
383
383
  });
384
384
  return _date;
385
385
  }
386
386
  function getMinDate(date, ...args) {
387
387
  let _date = new Date(date);
388
- Array.prototype.slice.call(args, 1).forEach((date2) => {
388
+ args.forEach((date2) => {
389
389
  _date = Math.min(_date, new Date(date2));
390
390
  });
391
391
  return _date;
@@ -621,7 +621,7 @@ function formatTimezone(offset, delimiter = "") {
621
621
  function applyYearMonthDayChange(date, modified, sign) {
622
622
  let year = date.getFullYear();
623
623
  let month = date.getMonth();
624
- const day = date.getMonth();
624
+ const day = date.getDate();
625
625
  if (modified.year) {
626
626
  year += sign * modified.year;
627
627
  delete modified.year;
@@ -659,7 +659,7 @@ function applyYearMonthDay(date, modified, middle) {
659
659
  function getChange(date, rawModified, sign) {
660
660
  const modified = normalizeModified(rawModified);
661
661
  const _date = new Date(date);
662
- const changedDate = modified.year || modified.month || modified.date ? applyYearMonthDayChange(date, modified, sign) : _date;
662
+ const changedDate = modified.year || modified.month || modified.date ? applyYearMonthDayChange(_date, modified, sign) : _date;
663
663
  for (const key in modified) {
664
664
  const op = key.charAt(0).toUpperCase() + key.slice(1);
665
665
  changedDate[`set${op}`](