dxd-style-code 0.1.7 → 0.1.9

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 (335) hide show
  1. package/dist/dxd-style-code.js +11974 -3725
  2. package/dist/dxd-style-code.umd.cjs +10 -1
  3. package/dist/style.css +1 -1
  4. package/package.json +14 -6
  5. package/src/components/atoms/DXAvatar/DXAvatar.stories.js +319 -0
  6. package/src/components/atoms/DXAvatar/DXAvatar.vue +167 -0
  7. package/src/components/atoms/DXAvatar/index.js +2 -0
  8. package/src/components/atoms/DXBackdrop/DXBackdrop.stories.js +341 -0
  9. package/src/components/atoms/DXBackdrop/DXBackdrop.vue +102 -0
  10. package/src/components/atoms/DXBackdrop/index.js +2 -0
  11. package/src/components/atoms/DXBadge/DXBadge.stories.js +239 -0
  12. package/src/components/atoms/DXBadge/DXBadge.vue +45 -0
  13. package/src/components/atoms/DXBadge/index.js +2 -0
  14. package/src/components/atoms/DXButton/DXButton.stories.js +178 -0
  15. package/src/components/atoms/DXButton/DXButton.vue +84 -0
  16. package/src/components/atoms/DXButton/index.js +2 -0
  17. package/src/components/atoms/DXCard/DXCard.stories.js +133 -0
  18. package/src/components/atoms/DXCard/DXCard.vue +46 -0
  19. package/src/components/atoms/DXCard/index.js +2 -0
  20. package/src/components/atoms/DXCheckbox/DXCheckbox.stories.js +294 -0
  21. package/src/components/atoms/DXCheckbox/DXCheckbox.vue +191 -0
  22. package/src/components/atoms/DXCheckbox/index.js +2 -0
  23. package/src/components/atoms/DXDivider/DXDivider.stories.js +135 -0
  24. package/src/components/atoms/DXDivider/DXDivider.vue +74 -0
  25. package/src/components/atoms/DXDivider/index.js +2 -0
  26. package/src/components/atoms/DXDropdownItem/DXDropdownItem.vue +116 -0
  27. package/src/components/atoms/DXDropdownItem/index.js +2 -0
  28. package/src/components/atoms/DXFormLabel/DXFormLabel.stories.js +194 -0
  29. package/src/components/atoms/DXFormLabel/DXFormLabel.vue +94 -0
  30. package/src/components/atoms/DXFormLabel/index.js +2 -0
  31. package/src/components/atoms/DXIcon/DXIcon.stories.js +156 -0
  32. package/src/components/atoms/DXIcon/DXIcon.vue +102 -0
  33. package/src/components/atoms/DXIcon/index.js +3 -0
  34. package/src/components/atoms/DXIconWrapper/DXIconWrapper.stories.js +237 -0
  35. package/src/components/atoms/DXIconWrapper/DXIconWrapper.vue +79 -0
  36. package/src/components/atoms/DXIconWrapper/index.js +2 -0
  37. package/src/components/atoms/DXInputAddon/DXInputAddon.stories.js +230 -0
  38. package/src/components/atoms/DXInputAddon/DXInputAddon.vue +64 -0
  39. package/src/components/atoms/DXInputAddon/index.js +2 -0
  40. package/src/components/atoms/DXLink/DXLink.stories.js +475 -0
  41. package/src/components/atoms/DXLink/DXLink.vue +229 -0
  42. package/src/components/atoms/DXLink/index.js +2 -0
  43. package/src/components/atoms/DXLoader/DXLoader.stories.js +280 -0
  44. package/src/components/atoms/DXLoader/DXLoader.vue +78 -0
  45. package/src/components/atoms/DXLoader/index.js +2 -0
  46. package/src/components/atoms/DXProgress/DXProgress.stories.js +312 -0
  47. package/src/components/atoms/DXProgress/DXProgress.vue +85 -0
  48. package/src/components/atoms/DXProgress/index.js +2 -0
  49. package/src/components/atoms/DXQuote/DXQuote.stories.js +255 -0
  50. package/src/components/atoms/DXQuote/DXQuote.vue +97 -0
  51. package/src/components/atoms/DXQuote/index.js +2 -0
  52. package/src/components/atoms/DXRadio/DXRadio.stories.js +277 -0
  53. package/src/components/atoms/DXRadio/DXRadio.vue +144 -0
  54. package/src/components/atoms/DXRadio/index.js +2 -0
  55. package/src/components/atoms/DXSkeleton/DXSkeleton.stories.js +50 -0
  56. package/src/components/atoms/DXSkeleton/DXSkeleton.vue +19 -0
  57. package/src/components/atoms/DXSkeleton/index.js +2 -0
  58. package/src/components/atoms/DXSlider/DXSlider.stories.js +522 -0
  59. package/src/components/atoms/DXSlider/DXSlider.vue +338 -0
  60. package/src/components/atoms/DXSlider/index.js +2 -0
  61. package/src/components/atoms/DXTags/DXTags.stories.js +206 -0
  62. package/src/components/atoms/DXTags/DXTags.vue +111 -0
  63. package/src/components/atoms/DXTags/index.js +2 -0
  64. package/src/components/atoms/DXToast/DXToast.stories.js +40 -0
  65. package/src/components/atoms/DXToast/DXToast.vue +32 -0
  66. package/src/components/atoms/DXToast/index.js +2 -0
  67. package/src/components/atoms/DXToggle/DXToggle.stories.js +143 -0
  68. package/src/components/atoms/DXToggle/DXToggle.vue +142 -0
  69. package/src/components/atoms/DXToggle/index.js +2 -0
  70. package/src/components/atoms/DXToggleButton/DXToggleButton.stories.js +513 -0
  71. package/src/components/atoms/DXToggleButton/DXToggleButton.vue +140 -0
  72. package/src/components/atoms/DXToggleButton/index.js +2 -0
  73. package/src/components/atoms/DXTooltip/DXTooltip.stories.js +243 -0
  74. package/src/components/atoms/DXTooltip/DXTooltip.vue +151 -0
  75. package/src/components/atoms/DXTooltip/index.js +2 -0
  76. package/src/components/atoms/index.js +24 -0
  77. package/src/components/index.js +20 -0
  78. package/src/components/layout/DXBox/DXBox.stories.js +238 -0
  79. package/src/components/layout/DXBox/DXBox.vue +198 -0
  80. package/src/components/layout/DXBox/index.js +2 -0
  81. package/src/components/layout/DXContainer/DXContainer.stories.js +147 -0
  82. package/src/components/layout/DXContainer/DXContainer.vue +83 -0
  83. package/src/components/layout/DXContainer/index.js +2 -0
  84. package/src/components/layout/DXFlex/DXFlex.stories.js +210 -0
  85. package/src/components/layout/DXFlex/DXFlex.vue +149 -0
  86. package/src/components/layout/DXFlex/index.js +2 -0
  87. package/src/components/layout/DXGrid/DXGrid.stories.js +238 -0
  88. package/src/components/layout/DXGrid/DXGrid.vue +167 -0
  89. package/src/components/layout/DXGrid/index.js +2 -0
  90. package/src/components/layout/DXSpacer/DXSpacer.stories.js +187 -0
  91. package/src/components/layout/DXSpacer/DXSpacer.vue +102 -0
  92. package/src/components/layout/DXSpacer/index.js +2 -0
  93. package/src/components/layout/DXStack/DXStack.stories.js +199 -0
  94. package/src/components/layout/DXStack/DXStack.vue +140 -0
  95. package/src/components/layout/DXStack/index.js +2 -0
  96. package/src/components/layout/index.js +8 -0
  97. package/src/components/molecules/DXActionButtons/DXActionButtons.stories.js +288 -0
  98. package/src/components/molecules/DXActionButtons/DXActionButtons.vue +106 -0
  99. package/src/components/molecules/DXActionButtons/index.js +2 -0
  100. package/src/components/molecules/DXAlert/DXAlert.stories.js +70 -0
  101. package/src/components/molecules/DXAlert/DXAlert.vue +116 -0
  102. package/src/components/molecules/DXAlert/index.js +2 -0
  103. package/src/components/molecules/DXBaseTable/DXBaseTable.stories.js +433 -0
  104. package/src/components/molecules/DXBaseTable/DXBaseTable.vue +459 -0
  105. package/src/components/molecules/DXBaseTable/index.js +4 -0
  106. package/src/components/molecules/DXBreadcrumb/DXBreadcrumb.stories.js +227 -0
  107. package/src/components/molecules/DXBreadcrumb/DXBreadcrumb.vue +96 -0
  108. package/src/components/molecules/DXBreadcrumb/index.js +2 -0
  109. package/src/components/molecules/DXButtonGroup/DXButtonGroup.stories.js +26 -0
  110. package/src/components/molecules/DXButtonGroup/DXButtonGroup.vue +78 -0
  111. package/src/components/molecules/DXButtonGroup/index.js +2 -0
  112. package/src/components/molecules/DXCloseButton/DXCloseButton.stories.js +53 -0
  113. package/src/components/molecules/DXCloseButton/DXCloseButton.vue +62 -0
  114. package/src/components/molecules/DXCloseButton/index.js +3 -0
  115. package/src/components/molecules/DXComboBox/DXComboBox.stories.js +62 -0
  116. package/src/components/molecules/DXComboBox/DXComboBox.vue +167 -0
  117. package/src/components/molecules/DXComboBox/index.js +2 -0
  118. package/src/components/molecules/DXCopyField/DXCopyField.stories.js +231 -0
  119. package/src/components/molecules/DXCopyField/DXCopyField.vue +75 -0
  120. package/src/components/molecules/DXCopyField/index.js +2 -0
  121. package/src/components/molecules/DXDataFilter/DXDataFilter.stories.js +275 -0
  122. package/src/components/molecules/DXDataFilter/DXDataFilter.vue +385 -0
  123. package/src/components/molecules/DXDataFilter/index.js +2 -0
  124. package/src/components/molecules/DXDatePicker/DXDatePicker.stories.js +42 -0
  125. package/src/components/molecules/DXDatePicker/DXDatePicker.vue +121 -0
  126. package/src/components/molecules/DXDatePicker/index.js +2 -0
  127. package/src/components/molecules/DXDropdownDivider/DXDropdownDivider.vue +30 -0
  128. package/src/components/molecules/DXDropdownDivider/index.js +2 -0
  129. package/src/components/molecules/DXFileUpload/DXFileUpload.stories.js +53 -0
  130. package/src/components/molecules/DXFileUpload/DXFileUpload.vue +199 -0
  131. package/src/components/molecules/DXFileUpload/index.js +2 -0
  132. package/src/components/molecules/DXFilterGroup/DXFilterGroup.stories.js +43 -0
  133. package/src/components/molecules/DXFilterGroup/DXFilterGroup.vue +43 -0
  134. package/src/components/molecules/DXFilterGroup/index.js +2 -0
  135. package/src/components/molecules/DXFormControl/DXFormControl.stories.js +69 -0
  136. package/src/components/molecules/DXFormControl/DXFormControl.vue +72 -0
  137. package/src/components/molecules/DXFormControl/index.js +2 -0
  138. package/src/components/molecules/DXInput/DXInput.stories.js +291 -0
  139. package/src/components/molecules/DXInput/DXInput.vue +156 -0
  140. package/src/components/molecules/DXInput/index.js +3 -0
  141. package/src/components/molecules/DXInputGroup/DXInputGroup.stories.js +228 -0
  142. package/src/components/molecules/DXInputGroup/DXInputGroup.vue +64 -0
  143. package/src/components/molecules/DXInputGroup/index.js +2 -0
  144. package/src/components/molecules/DXInputMask/DXInputMask.stories.js +53 -0
  145. package/src/components/molecules/DXInputMask/DXInputMask.vue +89 -0
  146. package/src/components/molecules/DXInputMask/index.js +2 -0
  147. package/src/components/molecules/DXMenu/DXMenu.stories.js +379 -0
  148. package/src/components/molecules/DXMenu/DXMenu.vue +331 -0
  149. package/src/components/molecules/DXMenu/README.md +479 -0
  150. package/src/components/molecules/DXMenu/index.js +2 -0
  151. package/src/components/molecules/DXPagination/DXPagination.stories.js +62 -0
  152. package/src/components/molecules/DXPagination/DXPagination.vue +123 -0
  153. package/src/components/molecules/DXPagination/index.js +2 -0
  154. package/src/components/molecules/DXPasswordInput/DXPasswordInput.stories.js +42 -0
  155. package/src/components/molecules/DXPasswordInput/DXPasswordInput.vue +74 -0
  156. package/src/components/molecules/DXPasswordInput/index.js +2 -0
  157. package/src/components/molecules/DXRadioCard/DXRadioCard.stories.js +60 -0
  158. package/src/components/molecules/DXRadioCard/DXRadioCard.vue +71 -0
  159. package/src/components/molecules/DXRadioCard/index.js +2 -0
  160. package/src/components/molecules/DXRadioGroup/DXRadioGroup.stories.js +297 -0
  161. package/src/components/molecules/DXRadioGroup/DXRadioGroup.vue +73 -0
  162. package/src/components/molecules/DXRadioGroup/index.js +2 -0
  163. package/src/components/molecules/DXRating/DXRating.stories.js +322 -0
  164. package/src/components/molecules/DXRating/DXRating.vue +402 -0
  165. package/src/components/molecules/DXRating/index.js +2 -0
  166. package/src/components/molecules/DXSearchBar/DXSearchBar.stories.js +357 -0
  167. package/src/components/molecules/DXSearchBar/DXSearchBar.vue +525 -0
  168. package/src/components/molecules/DXSearchBar/index.js +2 -0
  169. package/src/components/molecules/DXSearchSelect/DXSearchSelect.stories.js +50 -0
  170. package/src/components/molecules/DXSearchSelect/DXSearchSelect.vue +207 -0
  171. package/src/components/molecules/DXSearchSelect/index.js +2 -0
  172. package/src/components/molecules/DXSegmentedControl/DXSegmentedControl.stories.js +326 -0
  173. package/src/components/molecules/DXSegmentedControl/DXSegmentedControl.vue +116 -0
  174. package/src/components/molecules/DXSegmentedControl/index.js +2 -0
  175. package/src/components/molecules/DXSelect/DXSelect.stories.js +259 -0
  176. package/src/components/molecules/DXSelect/DXSelect.vue +149 -0
  177. package/src/components/molecules/DXSelect/index.js +3 -0
  178. package/src/components/molecules/DXStatCard/DXStatCard.stories.js +335 -0
  179. package/src/components/molecules/DXStatCard/DXStatCard.vue +309 -0
  180. package/src/components/molecules/DXStatCard/index.js +2 -0
  181. package/src/components/molecules/DXTableFiltersPanel/DXTableFiltersPanel.vue +72 -0
  182. package/src/components/molecules/DXTableFiltersPanel/index.js +7 -0
  183. package/src/components/molecules/DXTablePagination/DXTablePagination.stories.js +236 -0
  184. package/src/components/molecules/DXTablePagination/DXTablePagination.vue +93 -0
  185. package/src/components/molecules/DXTablePagination/index.js +2 -0
  186. package/src/components/molecules/DXTableToolbar/DXTableToolbar.stories.js +271 -0
  187. package/src/components/molecules/DXTableToolbar/DXTableToolbar.vue +102 -0
  188. package/src/components/molecules/DXTableToolbar/index.js +2 -0
  189. package/src/components/molecules/DXTextarea/DXTextarea.stories.js +239 -0
  190. package/src/components/molecules/DXTextarea/DXTextarea.vue +158 -0
  191. package/src/components/molecules/DXTextarea/index.js +3 -0
  192. package/src/components/molecules/DXTimePicker/DXTimePicker.stories.js +282 -0
  193. package/src/components/molecules/DXTimePicker/DXTimePicker.vue +640 -0
  194. package/src/components/molecules/DXTimePicker/index.js +2 -0
  195. package/src/components/molecules/DXValidationIcon/DXValidationIcon.stories.js +60 -0
  196. package/src/components/molecules/DXValidationIcon/DXValidationIcon.vue +53 -0
  197. package/src/components/molecules/DXValidationIcon/index.js +3 -0
  198. package/src/components/molecules/index.js +34 -0
  199. package/src/components/organisms/DXAccordion/DXAccordion.stories.js +33 -0
  200. package/src/components/organisms/DXAccordion/DXAccordion.vue +104 -0
  201. package/src/components/organisms/DXAccordion/index.js +2 -0
  202. package/src/components/organisms/DXAppLayout/DXAppLayout.stories.js +689 -0
  203. package/src/components/organisms/DXAppLayout/DXAppLayout.vue +460 -0
  204. package/src/components/organisms/DXAppLayout/index.js +2 -0
  205. package/src/components/organisms/DXAuthenticationForm/DXAuthenticationForm.stories.js +232 -0
  206. package/src/components/organisms/DXAuthenticationForm/DXAuthenticationForm.vue +458 -0
  207. package/src/components/organisms/DXAuthenticationForm/index.js +2 -0
  208. package/src/components/organisms/DXChartContainer/DXChartContainer.stories.js +286 -0
  209. package/src/components/organisms/DXChartContainer/DXChartContainer.vue +273 -0
  210. package/src/components/organisms/DXChartContainer/index.js +2 -0
  211. package/src/components/organisms/DXChatInterface/DXChatInterface.stories.js +164 -0
  212. package/src/components/organisms/DXChatInterface/DXChatInterface.vue +583 -0
  213. package/src/components/organisms/DXChatInterface/index.js +2 -0
  214. package/src/components/organisms/DXCommentSection/DXCommentSection.stories.js +173 -0
  215. package/src/components/organisms/DXCommentSection/DXCommentSection.vue +487 -0
  216. package/src/components/organisms/DXCommentSection/index.js +2 -0
  217. package/src/components/organisms/DXDashboardGrid/DXDashboardGrid.stories.js +331 -0
  218. package/src/components/organisms/DXDashboardGrid/DXDashboardGrid.vue +309 -0
  219. package/src/components/organisms/DXDashboardGrid/index.js +2 -0
  220. package/src/components/organisms/DXDashboardWidget/DXDashboardWidget.stories.js +271 -0
  221. package/src/components/organisms/DXDashboardWidget/DXDashboardWidget.vue +260 -0
  222. package/src/components/organisms/DXDashboardWidget/index.js +2 -0
  223. package/src/components/organisms/DXDataTable/DXDataTable.stories.js +247 -0
  224. package/src/components/organisms/DXDataTable/DXDataTable.vue +496 -0
  225. package/src/components/organisms/DXDataTable/index.js +2 -0
  226. package/src/components/organisms/DXDropdown/DXDropdown.stories.js +795 -0
  227. package/src/components/organisms/DXDropdown/DXDropdown.vue +238 -0
  228. package/src/components/organisms/DXDropdown/index.js +2 -0
  229. package/src/components/organisms/DXEmptyState/DXEmptyState.stories.js +37 -0
  230. package/src/components/organisms/DXEmptyState/DXEmptyState.vue +41 -0
  231. package/src/components/organisms/DXEmptyState/index.js +2 -0
  232. package/src/components/organisms/DXFormWizard/DXFormWizard.stories.js +378 -0
  233. package/src/components/organisms/DXFormWizard/DXFormWizard.vue +578 -0
  234. package/src/components/organisms/DXFormWizard/index.js +2 -0
  235. package/src/components/organisms/DXHeaderBar/DXHeaderBar.stories.js +448 -0
  236. package/src/components/organisms/DXHeaderBar/DXHeaderBar.vue +190 -0
  237. package/src/components/organisms/DXHeaderBar/index.js +2 -0
  238. package/src/components/organisms/DXMediaGallery/DXMediaGallery.stories.js +347 -0
  239. package/src/components/organisms/DXMediaGallery/DXMediaGallery.vue +422 -0
  240. package/src/components/organisms/DXMediaGallery/index.js +2 -0
  241. package/src/components/organisms/DXModal/DXModal.stories.js +138 -0
  242. package/src/components/organisms/DXModal/DXModal.vue +213 -0
  243. package/src/components/organisms/DXModal/index.js +2 -0
  244. package/src/components/organisms/DXNotificationCenter/DXNotificationCenter.stories.js +183 -0
  245. package/src/components/organisms/DXNotificationCenter/DXNotificationCenter.vue +566 -0
  246. package/src/components/organisms/DXNotificationCenter/index.js +2 -0
  247. package/src/components/organisms/DXReportGenerator/DXReportGenerator.stories.js +199 -0
  248. package/src/components/organisms/DXReportGenerator/DXReportGenerator.vue +344 -0
  249. package/src/components/organisms/DXReportGenerator/index.js +2 -0
  250. package/src/components/organisms/DXSettingsPanel/DXSettingsPanel.stories.js +245 -0
  251. package/src/components/organisms/DXSettingsPanel/DXSettingsPanel.vue +454 -0
  252. package/src/components/organisms/DXSettingsPanel/index.js +2 -0
  253. package/src/components/organisms/DXSidebar/DXSidebar.stories.js +316 -0
  254. package/src/components/organisms/DXSidebar/DXSidebar.vue +212 -0
  255. package/src/components/organisms/DXSidebar/index.js +2 -0
  256. package/src/components/organisms/DXSidebarMenu/DATA_STRUCTURE.md +299 -0
  257. package/src/components/organisms/DXSidebarMenu/DXSidebarMenu.stories.js +729 -0
  258. package/src/components/organisms/DXSidebarMenu/DXSidebarMenu.vue +257 -0
  259. package/src/components/organisms/DXSidebarMenu/DXSidebarMenuItem.vue +249 -0
  260. package/src/components/organisms/DXSidebarMenu/README.md +333 -0
  261. package/src/components/organisms/DXSidebarMenu/index.js +3 -0
  262. package/src/components/organisms/DXTable/DXTable.stories.js +550 -0
  263. package/src/components/organisms/DXTable/DXTable.vue +324 -0
  264. package/src/components/organisms/DXTable/index.js +2 -0
  265. package/src/components/organisms/DXTabs/DXTabs.stories.js +407 -0
  266. package/src/components/organisms/DXTabs/DXTabs.vue +301 -0
  267. package/src/components/organisms/DXTabs/index.js +2 -0
  268. package/src/components/organisms/DXUserProfileCard/DXUserProfileCard.stories.js +194 -0
  269. package/src/components/organisms/DXUserProfileCard/DXUserProfileCard.vue +403 -0
  270. package/src/components/organisms/DXUserProfileCard/index.js +2 -0
  271. package/src/components/organisms/DXWizard/DXWizard.stories.js +212 -0
  272. package/src/components/organisms/DXWizard/DXWizard.vue +615 -0
  273. package/src/components/organisms/DXWizard/index.js +2 -0
  274. package/src/components/organisms/index.js +25 -0
  275. package/src/components/typography/DXBlockquote/DXBlockquote.stories.js +33 -0
  276. package/src/components/typography/DXBlockquote/DXBlockquote.vue +44 -0
  277. package/src/components/typography/DXBlockquote/index.js +2 -0
  278. package/src/components/typography/DXCode/DXCode.stories.js +29 -0
  279. package/src/components/typography/DXCode/DXCode.vue +46 -0
  280. package/src/components/typography/DXCode/index.js +2 -0
  281. package/src/components/typography/DXHeading/DXHeading.stories.js +54 -0
  282. package/src/components/typography/DXHeading/DXHeading.vue +68 -0
  283. package/src/components/typography/DXHeading/index.js +2 -0
  284. package/src/components/typography/DXLabel/DXLabel.stories.js +40 -0
  285. package/src/components/typography/DXLabel/DXLabel.vue +49 -0
  286. package/src/components/typography/DXLabel/index.js +2 -0
  287. package/src/components/typography/DXList/DXList.stories.js +50 -0
  288. package/src/components/typography/DXList/DXList.vue +55 -0
  289. package/src/components/typography/DXList/index.js +2 -0
  290. package/src/components/typography/DXText/DXText.stories.js +47 -0
  291. package/src/components/typography/DXText/DXText.vue +67 -0
  292. package/src/components/typography/DXText/index.js +2 -0
  293. package/src/components/typography/index.js +8 -0
  294. package/src/components/utilities/DXAnimatePresence/DXAnimatePresence.stories.js +335 -0
  295. package/src/components/utilities/DXAnimatePresence/DXAnimatePresence.vue +207 -0
  296. package/src/components/utilities/DXAnimatePresence/index.js +2 -0
  297. package/src/components/utilities/DXBreakpointProvider/DXBreakpointProvider.stories.js +321 -0
  298. package/src/components/utilities/DXBreakpointProvider/DXBreakpointProvider.vue +158 -0
  299. package/src/components/utilities/DXBreakpointProvider/index.js +2 -0
  300. package/src/components/utilities/DXObserver/DXObserver.stories.js +324 -0
  301. package/src/components/utilities/DXObserver/DXObserver.vue +182 -0
  302. package/src/components/utilities/DXObserver/index.js +2 -0
  303. package/src/components/utilities/DXPortal/DXPortal.stories.js +267 -0
  304. package/src/components/utilities/DXPortal/DXPortal.vue +69 -0
  305. package/src/components/utilities/DXPortal/index.js +2 -0
  306. package/src/components/utilities/DXStaggeredAnimation/DXStaggeredAnimation.stories.js +339 -0
  307. package/src/components/utilities/DXStaggeredAnimation/DXStaggeredAnimation.vue +155 -0
  308. package/src/components/utilities/DXStaggeredAnimation/index.js +2 -0
  309. package/src/components/utilities/DXThemeProvider/DXThemeProvider.stories.js +327 -0
  310. package/src/components/utilities/DXThemeProvider/DXThemeProvider.vue +227 -0
  311. package/src/components/utilities/DXThemeProvider/index.js +2 -0
  312. package/src/components/utilities/DXTransitionGroup/DXTransitionGroup.stories.js +368 -0
  313. package/src/components/utilities/DXTransitionGroup/DXTransitionGroup.vue +212 -0
  314. package/src/components/utilities/DXTransitionGroup/index.js +2 -0
  315. package/src/components/utilities/index.js +9 -0
  316. package/src/composables/useAnimation.js +264 -0
  317. package/src/composables/useClassComposition.js +35 -0
  318. package/src/composables/useDataAttributes.js +83 -0
  319. package/src/composables/useMenu.js +88 -0
  320. package/src/composables/useSize.js +135 -0
  321. package/src/composables/useSpacing.js +37 -0
  322. package/src/composables/useTableColumns.js +88 -0
  323. package/src/composables/useTableData.js +82 -0
  324. package/src/composables/useTableFilter.js +158 -0
  325. package/src/composables/useTablePagination.js +89 -0
  326. package/src/composables/useTableSelection.js +77 -0
  327. package/src/composables/useTableSort.js +75 -0
  328. package/src/composables/useTabsScroll.js +88 -0
  329. package/src/composables/useVariant.js +700 -0
  330. package/src/index.js +86 -0
  331. package/src/styles/animations.css +171 -0
  332. package/src/styles/index.css +99 -0
  333. package/src/styles/tokens.js +123 -0
  334. package/src/utils/propTypes.js +77 -0
  335. package/src/utils/toggleButtonPresets.js +115 -0
@@ -0,0 +1,496 @@
1
+ <template>
2
+ <DXTable
3
+ :class="tableClasses"
4
+ :columns="columns"
5
+ :data="displayData"
6
+ :loading="loading"
7
+ :paginated="paginated"
8
+ :selectable="selectable"
9
+ :sortable="sortable"
10
+ :filterable="filterable"
11
+ :size="size"
12
+ :sticky-header="stickyHeader"
13
+ :striped="striped"
14
+ :bordered="bordered"
15
+ :hoverable="hoverable"
16
+ :dense="dense"
17
+ data-component="DXDataTable"
18
+ :data-editable="editable"
19
+ :data-edit-mode="editMode"
20
+ @row-click="handleRowClick"
21
+ >
22
+ <!-- Переопределение ячеек для редактирования -->
23
+ <template
24
+ v-for="column in editableColumns"
25
+ :key="column.key"
26
+ #[`cell-${column.key}`]="{ row, value, column: col }"
27
+ >
28
+ <div v-if="isEditing(row, column.key)" class="dx-data-table-editor">
29
+ <!-- Текстовый редактор -->
30
+ <DXInput
31
+ v-if="!column.editor || column.editor === 'input'"
32
+ v-model="editingData[row.id][column.key]"
33
+ :type="column.type || 'text'"
34
+ :size="size"
35
+ @blur="handleCellBlur(row, column.key)"
36
+ @keydown.enter="handleCellBlur(row, column.key)"
37
+ @keydown.escape="handleCellCancel(row, column.key)"
38
+ />
39
+
40
+ <!-- Select редактор -->
41
+ <DXSelect
42
+ v-else-if="column.editor === 'select'"
43
+ v-model="editingData[row.id][column.key]"
44
+ :options="column.options || []"
45
+ :size="size"
46
+ @update:model-value="handleCellChange(row, column.key)"
47
+ />
48
+
49
+ <!-- Date редактор -->
50
+ <DXDatePicker
51
+ v-else-if="column.editor === 'date'"
52
+ v-model="editingData[row.id][column.key]"
53
+ :size="size"
54
+ @update:model-value="handleCellChange(row, column.key)"
55
+ />
56
+
57
+ <!-- Кастомный редактор через slot -->
58
+ <slot
59
+ v-else
60
+ :name="`editor-${column.editor}`"
61
+ :row="row"
62
+ :column="column"
63
+ :value="editingData[row.id][column.key]"
64
+ :update-value="(val) => updateEditingValue(row.id, column.key, val)"
65
+ >
66
+ <span class="text-sm text-slate-500">
67
+ Используйте slot editor-{{ column.editor }}
68
+ </span>
69
+ </slot>
70
+ </div>
71
+ <span v-else>{{ formatCellValue(value, column) }}</span>
72
+ </template>
73
+
74
+ <!-- Действия для редактирования строки -->
75
+ <template #cell-actions="{ row }">
76
+ <div v-if="editMode === 'row' && isRowEditing(row.id)" class="flex gap-2">
77
+ <DXButton size="sm" variant="primary" @click="handleRowSave(row)">
78
+ Сохранить
79
+ </DXButton>
80
+ <DXButton size="sm" variant="ghost" @click="handleRowCancel(row)">
81
+ Отмена
82
+ </DXButton>
83
+ </div>
84
+ <div v-else-if="editMode === 'row' && editable" class="flex gap-2">
85
+ <DXButton size="sm" variant="ghost" @click="handleRowEdit(row)">
86
+ Редактировать
87
+ </DXButton>
88
+ <slot name="row-actions" :row="row" />
89
+ </div>
90
+ <slot v-else name="row-actions" :row="row" />
91
+ </template>
92
+
93
+ <!-- Передача остальных слотов -->
94
+ <template v-for="(_, slot) in $slots" v-slot:[slot]="scope">
95
+ <slot :name="slot" v-bind="scope || {}" />
96
+ </template>
97
+ </DXTable>
98
+ </template>
99
+
100
+ <script setup>
101
+ import { ref, computed, watch } from "vue";
102
+ import { useClassComposition } from "@/composables/useClassComposition";
103
+ import DXTable from "../DXTable/DXTable.vue";
104
+ import DXInput from "../../molecules/DXInput/DXInput.vue";
105
+ import DXSelect from "../../molecules/DXSelect/DXSelect.vue";
106
+ import DXDatePicker from "../../molecules/DXDatePicker/DXDatePicker.vue";
107
+ import DXButton from "../../atoms/DXButton/DXButton.vue";
108
+
109
+ const props = defineProps({
110
+ /**
111
+ * Колонки таблицы
112
+ * Формат: [{ key, label, editable?, editor?, type?, options? }]
113
+ */
114
+ columns: {
115
+ type: Array,
116
+ required: true,
117
+ },
118
+ /**
119
+ * Данные таблицы
120
+ */
121
+ data: {
122
+ type: Array,
123
+ required: true,
124
+ },
125
+ /**
126
+ * Редактируемая таблица
127
+ * @default false
128
+ */
129
+ editable: { type: Boolean, default: false },
130
+ /**
131
+ * Режим редактирования: cell | row
132
+ * @default 'cell'
133
+ */
134
+ editMode: {
135
+ type: String,
136
+ default: "cell",
137
+ validator: (v) => ["cell", "row"].includes(v),
138
+ },
139
+ /**
140
+ * Валидация при редактировании
141
+ * Формат: { [columnKey]: (value) => boolean | string }
142
+ */
143
+ validation: {
144
+ type: Object,
145
+ default: () => ({}),
146
+ },
147
+ /**
148
+ * Загрузка данных
149
+ * @default false
150
+ */
151
+ loading: { type: Boolean, default: false },
152
+ /**
153
+ * Пагинация
154
+ * @default true
155
+ */
156
+ paginated: { type: Boolean, default: true },
157
+ /**
158
+ * Выбор строк
159
+ * @default false
160
+ */
161
+ selectable: { type: Boolean, default: false },
162
+ /**
163
+ * Сортировка
164
+ * @default true
165
+ */
166
+ sortable: { type: Boolean, default: true },
167
+ /**
168
+ * Фильтрация
169
+ * @default false
170
+ */
171
+ filterable: { type: Boolean, default: false },
172
+ /**
173
+ * Размер таблицы
174
+ * @default 'md'
175
+ */
176
+ size: {
177
+ type: String,
178
+ default: "md",
179
+ validator: (v) => ["sm", "md", "lg"].includes(v),
180
+ },
181
+ /**
182
+ * Липкий заголовок
183
+ * @default false
184
+ */
185
+ stickyHeader: { type: Boolean, default: false },
186
+ /**
187
+ * Чередующиеся строки
188
+ * @default false
189
+ */
190
+ striped: { type: Boolean, default: false },
191
+ /**
192
+ * Границы
193
+ * @default true
194
+ */
195
+ bordered: { type: Boolean, default: true },
196
+ /**
197
+ * Подсветка при наведении
198
+ * @default true
199
+ */
200
+ hoverable: { type: Boolean, default: true },
201
+ /**
202
+ * Плотный режим
203
+ * @default false
204
+ */
205
+ dense: { type: Boolean, default: false },
206
+ });
207
+
208
+ const emit = defineEmits([
209
+ "cell-edit",
210
+ "row-edit",
211
+ "row-save",
212
+ "row-cancel",
213
+ "row-click",
214
+ "update:data",
215
+ ]);
216
+
217
+ const editingData = ref({});
218
+ const editingRows = ref(new Set());
219
+ const editingCells = ref({});
220
+
221
+ /**
222
+ * Колонки, доступные для редактирования
223
+ *
224
+ * @description
225
+ * Фильтрует колонки, которые можно редактировать.
226
+ *
227
+ * @returns {Array} Массив редактируемых колонок
228
+ */
229
+ const editableColumns = computed(() => {
230
+ return props.columns.filter((col) => col.editable !== false);
231
+ });
232
+
233
+ /**
234
+ * Отображаемые данные
235
+ *
236
+ * @description
237
+ * Возвращает данные с учетом редактирования.
238
+ *
239
+ * @returns {Array} Массив данных
240
+ */
241
+ const displayData = computed(() => {
242
+ if (!props.editable) return props.data;
243
+
244
+ return props.data.map((row) => {
245
+ if (editingData.value[row.id]) {
246
+ return { ...row, ...editingData.value[row.id] };
247
+ }
248
+ return row;
249
+ });
250
+ });
251
+
252
+ /**
253
+ * Классы для таблицы
254
+ *
255
+ * @description
256
+ * Базовые классы для таблицы данных.
257
+ *
258
+ * @returns {Array} Массив классов
259
+ */
260
+ const tableClasses = computed(() => useClassComposition("w-full"));
261
+
262
+ /**
263
+ * Проверка, редактируется ли строка
264
+ *
265
+ * @description
266
+ * Проверяет, находится ли строка в режиме редактирования.
267
+ *
268
+ * @param {number|string} rowId - ID строки
269
+ * @returns {boolean} true, если строка редактируется
270
+ */
271
+ function isRowEditing(rowId) {
272
+ return editingRows.value.has(rowId);
273
+ }
274
+
275
+ /**
276
+ * Проверка, редактируется ли ячейка
277
+ *
278
+ * @description
279
+ * Проверяет, находится ли ячейка в режиме редактирования.
280
+ *
281
+ * @param {Object} row - Объект строки
282
+ * @param {string} columnKey - Ключ колонки
283
+ * @returns {boolean} true, если ячейка редактируется
284
+ */
285
+ function isEditing(row, columnKey) {
286
+ if (props.editMode === "row") {
287
+ return isRowEditing(row.id);
288
+ }
289
+ return editingCells.value[`${row.id}-${columnKey}`] === true;
290
+ }
291
+
292
+ /**
293
+ * Форматирование значения ячейки
294
+ *
295
+ * @description
296
+ * Форматирует значение ячейки для отображения.
297
+ *
298
+ * @param {any} value - Значение
299
+ * @param {Object} column - Колонка
300
+ * @returns {string} Отформатированное значение
301
+ */
302
+ function formatCellValue(value, column) {
303
+ if (value === null || value === undefined) return "";
304
+ if (column.format) {
305
+ return column.format(value);
306
+ }
307
+ return String(value);
308
+ }
309
+
310
+ /**
311
+ * Обновление значения редактирования
312
+ *
313
+ * @description
314
+ * Обновляет значение в объекте редактирования.
315
+ *
316
+ * @param {number|string} rowId - ID строки
317
+ * @param {string} columnKey - Ключ колонки
318
+ * @param {any} value - Новое значение
319
+ */
320
+ function updateEditingValue(rowId, columnKey, value) {
321
+ if (!editingData.value[rowId]) {
322
+ editingData.value[rowId] = {};
323
+ }
324
+ editingData.value[rowId][columnKey] = value;
325
+ }
326
+
327
+ /**
328
+ * Обработчик изменения ячейки
329
+ *
330
+ * @description
331
+ * Обрабатывает изменение значения ячейки.
332
+ *
333
+ * @param {Object} row - Объект строки
334
+ * @param {string} columnKey - Ключ колонки
335
+ */
336
+ function handleCellChange(row, columnKey) {
337
+ const value = editingData.value[row.id]?.[columnKey];
338
+ emit("cell-edit", { row, column: columnKey, value });
339
+ }
340
+
341
+ /**
342
+ * Обработчик blur ячейки
343
+ *
344
+ * @description
345
+ * Сохраняет изменения ячейки при потере фокуса.
346
+ *
347
+ * @param {Object} row - Объект строки
348
+ * @param {string} columnKey - Ключ колонки
349
+ */
350
+ function handleCellBlur(row, columnKey) {
351
+ if (props.editMode === "cell") {
352
+ const value = editingData.value[row.id]?.[columnKey];
353
+ const originalValue = row[columnKey];
354
+
355
+ if (value !== originalValue) {
356
+ // Валидация
357
+ const column = props.columns.find((col) => col.key === columnKey);
358
+ if (column && props.validation[columnKey]) {
359
+ const validationResult = props.validation[columnKey](value);
360
+ if (validationResult !== true) {
361
+ console.warn("Валидация не пройдена:", validationResult);
362
+ return;
363
+ }
364
+ }
365
+
366
+ emit("cell-edit", { row, column: columnKey, value, originalValue });
367
+ emit("update:data", displayData.value);
368
+ }
369
+
370
+ delete editingCells.value[`${row.id}-${columnKey}`];
371
+ if (editingData.value[row.id]) {
372
+ delete editingData.value[row.id][columnKey];
373
+ if (Object.keys(editingData.value[row.id]).length === 0) {
374
+ delete editingData.value[row.id];
375
+ }
376
+ }
377
+ }
378
+ }
379
+
380
+ /**
381
+ * Обработчик отмены редактирования ячейки
382
+ *
383
+ * @description
384
+ * Отменяет изменения ячейки.
385
+ *
386
+ * @param {Object} row - Объект строки
387
+ * @param {string} columnKey - Ключ колонки
388
+ */
389
+ function handleCellCancel(row, columnKey) {
390
+ if (editingData.value[row.id]) {
391
+ delete editingData.value[row.id][columnKey];
392
+ if (Object.keys(editingData.value[row.id]).length === 0) {
393
+ delete editingData.value[row.id];
394
+ }
395
+ }
396
+ delete editingCells.value[`${row.id}-${columnKey}`];
397
+ }
398
+
399
+ /**
400
+ * Обработчик клика по строке
401
+ *
402
+ * @description
403
+ * Обрабатывает клик по строке для начала редактирования (в режиме cell).
404
+ *
405
+ * @param {Object} row - Объект строки
406
+ */
407
+ function handleRowClick(row) {
408
+ if (props.editable && props.editMode === "cell") {
409
+ // Начинаем редактирование ячейки при клике
410
+ // В реальной реализации можно добавить логику выбора ячейки
411
+ }
412
+ emit("row-click", row);
413
+ }
414
+
415
+ /**
416
+ * Обработчик начала редактирования строки
417
+ *
418
+ * @description
419
+ * Начинает редактирование строки (в режиме row).
420
+ *
421
+ * @param {Object} row - Объект строки
422
+ */
423
+ function handleRowEdit(row) {
424
+ editingRows.value.add(row.id);
425
+ editingData.value[row.id] = { ...row };
426
+ emit("row-edit", row);
427
+ }
428
+
429
+ /**
430
+ * Обработчик сохранения строки
431
+ *
432
+ * @description
433
+ * Сохраняет изменения строки.
434
+ *
435
+ * @param {Object} row - Объект строки
436
+ */
437
+ function handleRowSave(row) {
438
+ const editedRow = editingData.value[row.id];
439
+ if (editedRow) {
440
+ // Валидация
441
+ let isValid = true;
442
+ for (const column of editableColumns.value) {
443
+ if (props.validation[column.key]) {
444
+ const validationResult = props.validation[column.key](
445
+ editedRow[column.key]
446
+ );
447
+ if (validationResult !== true) {
448
+ console.warn("Валидация не пройдена:", validationResult);
449
+ isValid = false;
450
+ break;
451
+ }
452
+ }
453
+ }
454
+
455
+ if (isValid) {
456
+ emit("row-save", { row, editedRow });
457
+ emit("update:data", displayData.value);
458
+ editingRows.value.delete(row.id);
459
+ delete editingData.value[row.id];
460
+ }
461
+ }
462
+ }
463
+
464
+ /**
465
+ * Обработчик отмены редактирования строки
466
+ *
467
+ * @description
468
+ * Отменяет изменения строки.
469
+ *
470
+ * @param {Object} row - Объект строки
471
+ */
472
+ function handleRowCancel(row) {
473
+ editingRows.value.delete(row.id);
474
+ delete editingData.value[row.id];
475
+ emit("row-cancel", row);
476
+ }
477
+
478
+ // Синхронизация с prop data
479
+ watch(
480
+ () => props.data,
481
+ () => {
482
+ // Очищаем редактирование при изменении данных
483
+ editingData.value = {};
484
+ editingRows.value.clear();
485
+ editingCells.value = {};
486
+ },
487
+ { deep: true }
488
+ );
489
+ </script>
490
+
491
+ <style scoped>
492
+ .dx-data-table-editor {
493
+ min-width: 100px;
494
+ }
495
+ </style>
496
+
@@ -0,0 +1,2 @@
1
+ export { default } from './DXDataTable.vue';
2
+