@dataloop-ai/components 0.18.0 → 0.18.2

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 (277) hide show
  1. package/package.json +6 -3
  2. package/src/App.vue +5 -227
  3. package/src/assets/constants.scss +2 -1
  4. package/src/assets/globals.scss +21 -0
  5. package/src/components/basic/DlAccordion/DlAccordion.vue +26 -4
  6. package/src/components/basic/DlAccordion/components/AccordionHeader.vue +2 -1
  7. package/src/components/basic/DlAvatar/DlAvatar.vue +1 -1
  8. package/src/components/basic/DlButton/DlButton.vue +115 -25
  9. package/src/components/basic/DlButton/utils.ts +45 -2
  10. package/src/components/basic/DlChip/DlChip.vue +3 -7
  11. package/src/components/basic/DlChip/utils.ts +4 -4
  12. package/src/components/basic/DlContainer/DlContainer.vue +70 -0
  13. package/src/components/basic/DlContainer/index.ts +3 -0
  14. package/src/components/basic/DlEmptyState/DlEmptyState.vue +282 -0
  15. package/src/components/basic/DlEmptyState/index.ts +2 -0
  16. package/src/components/basic/DlEmptyState/types.ts +20 -0
  17. package/src/components/basic/DlGrid/DlGrid.vue +163 -0
  18. package/src/components/basic/DlGrid/index.ts +4 -0
  19. package/src/components/basic/DlGrid/types.ts +5 -0
  20. package/src/components/basic/DlKpi/components/KpiInfo.vue +2 -1
  21. package/src/components/basic/DlListItem/DlListItem.vue +96 -66
  22. package/src/components/basic/DlListItem/utils.ts +0 -3
  23. package/src/components/basic/DlPanelContainer/DlPanelContainer.vue +37 -13
  24. package/src/components/basic/DlPopup/DlPopup.vue +58 -11
  25. package/src/components/basic/DlPopup/components/PopupHeader.vue +11 -6
  26. package/src/components/basic/DlProgressChart/DlProgressChart.vue +2 -1
  27. package/src/components/basic/DlWidget/DlWidget.vue +273 -141
  28. package/src/components/basic/DlWidget/index.ts +1 -3
  29. package/src/components/basic/DlWidget/utils.ts +90 -8
  30. package/src/components/basic/index.ts +4 -2
  31. package/src/components/basic/types.ts +2 -0
  32. package/src/components/compound/DlCard/DlCard.vue +796 -0
  33. package/src/components/compound/DlCard/components/DescriptionModal.vue +137 -0
  34. package/src/components/compound/DlCard/types.ts +38 -0
  35. package/src/components/compound/DlCharts/charts/DlBarChart/DlBarChart.vue +39 -4
  36. package/src/components/compound/DlCharts/charts/DlColumnChart/DlColumnChart.vue +128 -36
  37. package/src/components/compound/DlCharts/charts/DlConfusionMatrix/DlConfusionMatrix.vue +167 -87
  38. package/src/components/compound/DlCharts/charts/DlConfusionMatrix/utils.ts +2 -1
  39. package/src/components/compound/DlCharts/charts/DlDoughnutChart/DlDoughnutChart.vue +44 -3
  40. package/src/components/compound/DlCharts/charts/DlDoughnutChart/DlDoughnutChartWidget.vue +1 -2
  41. package/src/components/compound/DlCharts/charts/DlDoughnutChart/components/DlDoughnutChartLegend.vue +9 -18
  42. package/src/components/compound/DlCharts/charts/DlLineChart/DlLineChart.vue +48 -9
  43. package/src/components/compound/DlCharts/charts/DlScatterChart/DlScatterChart.vue +667 -0
  44. package/src/components/compound/DlCharts/charts/DlScatterChart/index.ts +2 -0
  45. package/src/components/compound/DlCharts/charts/index.ts +1 -0
  46. package/src/components/compound/DlCharts/components/DlBrush.vue +3 -2
  47. package/src/components/compound/DlCharts/components/DlChartLabels.vue +2 -1
  48. package/src/components/compound/DlCharts/components/DlChartScrollBar.vue +1 -0
  49. package/src/components/compound/DlCharts/types/props.ts +5 -1
  50. package/src/components/compound/DlCharts/utils.ts +1 -1
  51. package/src/components/compound/DlCodeEditor/DlCodeEditor.vue +173 -0
  52. package/src/components/compound/DlCodeEditor/README.md +11 -0
  53. package/src/components/compound/DlCodeEditor/components/CodeEditor.vue +705 -0
  54. package/src/components/compound/DlCodeEditor/index.ts +3 -0
  55. package/src/components/compound/DlCodeEditor/styles/themes-base16.css +12809 -0
  56. package/src/components/compound/DlCodeEditor/styles/themes.css +3999 -0
  57. package/src/components/compound/DlCodeEditor/types.ts +21 -0
  58. package/src/components/compound/DlDateTime/DlDatePicker/DlDatePicker.vue +9 -1
  59. package/src/components/compound/DlDateTime/DlDatePicker/components/DlCalendar.vue +4 -2
  60. package/src/components/compound/DlDateTime/DlDatePicker/components/DlMonthCalendar.vue +2 -1
  61. package/src/components/compound/DlDateTime/DlDateTimeRange/{DlCardSidebar.vue → CardSidebar.vue} +10 -11
  62. package/src/components/compound/DlDateTime/DlDateTimeRange/DlDateTimeRange.vue +18 -9
  63. package/src/components/compound/DlDateTime/DlTimePicker/DlTimePicker.vue +2 -2
  64. package/src/components/compound/DlDialogBox/DlDialogBox.vue +74 -15
  65. package/src/components/compound/DlDialogBox/components/DlDialogBoxFooter.vue +1 -1
  66. package/src/components/compound/DlDialogBox/components/DlDialogBoxHeader.vue +9 -7
  67. package/src/components/compound/DlDropdownButton/DlDropdownButton.vue +13 -4
  68. package/src/components/compound/DlInput/DlInput.vue +80 -17
  69. package/src/components/compound/DlJsonEditor/DlJsonEditor.vue +42 -219
  70. package/src/components/compound/DlOptionGroup/DlOptionGroup.vue +16 -17
  71. package/src/components/compound/DlOptionGroup/components/MenuItemWrapper.vue +2 -2
  72. package/src/components/compound/DlPagination/DlPagination.vue +1 -1
  73. package/src/components/compound/DlPagination/components/PaginationLegend.vue +0 -2
  74. package/src/components/compound/DlPagination/components/RowsSelector.vue +0 -2
  75. package/src/components/compound/DlRange/DlRange.vue +3 -2
  76. package/src/components/compound/DlSearches/DlSearch/DlSearch.vue +12 -5
  77. package/src/components/compound/DlSearches/DlSmartSearch/DlSmartSearch.vue +413 -97
  78. package/src/components/compound/DlSearches/DlSmartSearch/components/DlSmartSearchFilters.vue +4 -1
  79. package/src/components/compound/DlSearches/DlSmartSearch/components/DlSmartSearchInput.vue +100 -39
  80. package/src/components/compound/DlSearches/DlSmartSearch/components/DlSuggestionsDropdown.vue +12 -7
  81. package/src/components/compound/DlSearches/DlSmartSearch/components/FiltersQuery.vue +5 -6
  82. package/src/components/compound/DlSearches/DlSmartSearch/types.ts +14 -0
  83. package/src/components/compound/DlSearches/DlSmartSearch/utils/highlightSyntax.ts +10 -6
  84. package/src/components/compound/DlSearches/DlSmartSearch/utils/index.ts +172 -48
  85. package/src/components/compound/DlSelect/DlSelect.vue +264 -130
  86. package/src/components/compound/DlSelect/utils.ts +4 -1
  87. package/src/components/compound/DlSlider/DlSlider.vue +10 -2
  88. package/src/components/compound/DlSlider/components/DlSliderBase.vue +3 -3
  89. package/src/components/compound/DlSlider/components/DlSliderInput.vue +17 -26
  90. package/src/components/compound/DlSlider/sliderStyles.scss +5 -1
  91. package/src/components/compound/DlSlider/useSlider.ts +2 -2
  92. package/src/components/compound/DlSlider/utils.ts +2 -2
  93. package/src/components/compound/DlStepper/DlStepper.vue +46 -4
  94. package/src/components/compound/DlStepper/components/DlStepperContent.vue +6 -2
  95. package/src/components/compound/DlStepper/components/DlStepperFooter.vue +12 -0
  96. package/src/components/compound/DlStepper/components/DlStepperSidebar.vue +24 -11
  97. package/src/components/compound/DlStepper/models/Step.ts +37 -8
  98. package/src/components/compound/DlStepper/models/Stepper.ts +108 -15
  99. package/src/components/compound/DlStepper/models/interfaces.ts +2 -1
  100. package/src/components/compound/DlTable/DlTable.vue +49 -14
  101. package/src/components/compound/DlTable/components/DlTd.vue +9 -9
  102. package/src/components/compound/DlTable/components/DlTh.vue +3 -2
  103. package/src/components/compound/DlTable/hooks/tableColumnSelection.ts +35 -40
  104. package/src/components/compound/DlTable/hooks/tableFilter.ts +33 -21
  105. package/src/components/compound/DlTable/hooks/tablePagination.ts +18 -18
  106. package/src/components/compound/DlTable/hooks/tableRowExpand.ts +2 -1
  107. package/src/components/compound/DlTable/hooks/tableRowSelection.ts +0 -1
  108. package/src/components/compound/DlTable/hooks/tableSort.ts +52 -47
  109. package/src/components/compound/DlTable/styles/dl-table-styles.scss +8 -0
  110. package/src/components/compound/DlTabs/DlTabs.vue +83 -31
  111. package/src/components/compound/DlTabs/components/DlTab.vue +14 -4
  112. package/src/components/compound/DlTabs/components/TabsWrapper.vue +32 -27
  113. package/src/components/compound/DlThumbnailGallery/DlThumbnailGallery.vue +268 -0
  114. package/src/components/compound/DlThumbnailGallery/index.ts +2 -0
  115. package/src/components/compound/DlThumbnailGallery/types.ts +11 -0
  116. package/src/components/compound/DlToast/api/useToast.ts +42 -1
  117. package/src/components/compound/DlToast/components/ToastComponent.vue +24 -32
  118. package/src/components/compound/DlToast/types.ts +52 -0
  119. package/src/components/compound/DlTreeTable/DlTreeTable.vue +1293 -0
  120. package/src/components/compound/DlTreeTable/components/DlTdTree.vue +119 -0
  121. package/src/components/compound/DlTreeTable/components/DlTrTree.vue +52 -0
  122. package/src/components/compound/DlTreeTable/index.ts +3 -0
  123. package/src/components/compound/DlTreeTable/types.ts +1 -0
  124. package/src/components/compound/DlTreeTable/utils/convertToNestedObject.ts +51 -0
  125. package/src/components/compound/DlTreeTable/utils/flatTreeData.ts +19 -0
  126. package/src/components/compound/DlTreeTable/utils/getFromChildren.ts +39 -0
  127. package/src/components/compound/DlTreeTable/utils/trSpacing.ts +13 -0
  128. package/src/components/compound/DlTreeTable/utils/treeTableRowSelection.ts +184 -0
  129. package/src/components/compound/index.ts +14 -1
  130. package/src/components/compound/types.ts +2 -0
  131. package/src/components/essential/DlBadge/DlBadge.vue +3 -3
  132. package/src/components/essential/DlCheckbox/DlCheckbox.vue +10 -7
  133. package/src/components/essential/DlEllipsis/DlEllipsis.vue +141 -0
  134. package/src/components/essential/DlIcon/DlIcon.vue +5 -5
  135. package/src/components/essential/DlLabel/DlLabel.vue +190 -0
  136. package/src/components/essential/DlLabel/index.ts +2 -0
  137. package/src/components/essential/DlList/DlList.vue +3 -3
  138. package/src/components/essential/DlMenu/DlMenu.vue +41 -22
  139. package/src/components/essential/DlMenu/utils.ts +8 -7
  140. package/src/components/essential/DlPageLayout/DlPageLayout.vue +90 -0
  141. package/src/components/essential/DlPageLayout/index.ts +2 -0
  142. package/src/components/essential/DlProgressBar/DlProgressBar.vue +1 -1
  143. package/src/components/essential/DlRadio/DlRadio.vue +10 -5
  144. package/src/components/essential/DlSeparator/DlSeparator.vue +2 -2
  145. package/src/components/essential/DlSpinner/index.ts +1 -13
  146. package/src/components/essential/DlSpinner/styles/spinnerStyles.scss +7 -0
  147. package/src/components/essential/DlSwitch/DlSwitch.vue +6 -3
  148. package/src/components/essential/DlTextArea/DlTextArea.vue +212 -7
  149. package/src/components/essential/DlThemeProvider/DlThemeProvider.vue +6 -0
  150. package/src/components/essential/DlTypography/DlTypography.vue +7 -1
  151. package/src/components/essential/index.ts +3 -2
  152. package/src/components/shared/DlInfoErrorMessage/DlInfoErrorMessage.vue +1 -1
  153. package/src/components/{essential → shared}/DlTooltip/DlTooltip.vue +26 -19
  154. package/src/components/shared/DlVirtualScroll/DlVirtualScroll.vue +106 -43
  155. package/src/components/shared/DlVirtualScroll/useVirtualScroll.ts +28 -4
  156. package/src/components/shared/index.ts +1 -0
  157. package/src/components/types.ts +2 -0
  158. package/src/demos/BarChartDemo.vue +59 -2
  159. package/src/demos/ColumnChartDemo.vue +67 -2
  160. package/src/demos/DlAccordionDemo.vue +92 -43
  161. package/src/demos/DlAlertDemo.vue +14 -0
  162. package/src/demos/DlButtonDemo.vue +41 -4
  163. package/src/demos/DlCardDemo.vue +156 -19
  164. package/src/demos/DlChartDoughnutDemo.vue +49 -2
  165. package/src/demos/DlCheckboxDemo.vue +28 -3
  166. package/src/demos/DlCodeEditor/DlCodeEditorDemo.vue +247 -0
  167. package/src/demos/DlCodeEditor/index.ts +2 -0
  168. package/src/demos/DlConfusionMatrixDemo.vue +93 -37
  169. package/src/demos/DlDemoPage.vue +235 -0
  170. package/src/demos/DlDialogBoxDemo.vue +56 -51
  171. package/src/demos/DlDropdownButtonDemo.vue +35 -27
  172. package/src/demos/DlEmptyStateDemo.vue +81 -0
  173. package/src/demos/DlGridDemo.vue +40 -0
  174. package/src/demos/DlInputDemo.vue +21 -1
  175. package/src/demos/DlJsonEditorDemo.vue +59 -0
  176. package/src/demos/DlLabelDemo.vue +208 -0
  177. package/src/demos/DlLineChartDemo.vue +50 -2
  178. package/src/demos/DlListDemo.vue +12 -9
  179. package/src/demos/DlMenuDemo.vue +147 -20
  180. package/src/demos/DlPageLayoutDemo.vue +146 -0
  181. package/src/demos/DlPanelContainerDemo.vue +113 -2
  182. package/src/demos/DlPopupDemo.vue +82 -1
  183. package/src/demos/DlRadioDemo.vue +16 -1
  184. package/src/demos/DlScatterChartDemo.vue +161 -0
  185. package/src/demos/DlSearchDemo.vue +9 -0
  186. package/src/demos/DlSelectDemo.vue +124 -27
  187. package/src/demos/DlSpinnerDemo.vue +0 -2
  188. package/src/demos/DlStepperDemo/DlStepperDemo.vue +5 -1
  189. package/src/demos/DlStepperDemo/EmptyStateStepper.vue +149 -0
  190. package/src/demos/DlStepperDemo/SimpleStepper.vue +4 -0
  191. package/src/demos/DlStepperDemo/steps/GeneralStep.vue +1 -0
  192. package/src/demos/DlSwitchDemo.vue +12 -0
  193. package/src/demos/DlTableDemo.vue +84 -5
  194. package/src/demos/DlTabsDemo.vue +92 -3
  195. package/src/demos/DlTextAreaDemo.vue +14 -17
  196. package/src/demos/DlThumbnailGalleryDemo.vue +99 -0
  197. package/src/demos/DlToastDemo.vue +3 -9
  198. package/src/demos/DlTooltipDemo.vue +66 -2
  199. package/src/demos/DlTreeTableDemo.vue +694 -0
  200. package/src/demos/DlVirtualScrollDemo.vue +3 -12
  201. package/src/demos/DlWidgetDemo.vue +252 -61
  202. package/src/demos/SmartSearchDemo/DlSmartSearchDemo.vue +151 -32
  203. package/src/demos/index.ts +23 -4
  204. package/src/hooks/use-anchor.ts +15 -17
  205. package/src/hooks/use-arrow-navigation.ts +64 -21
  206. package/src/hooks/use-model-toggle.ts +14 -16
  207. package/src/hooks/use-portal.ts +9 -3
  208. package/src/hooks/use-scroll-target.ts +2 -4
  209. package/src/hooks/use-size-observer.ts +3 -2
  210. package/src/hooks/use-suggestions.ts +239 -49
  211. package/src/hooks/use-transition.ts +10 -4
  212. package/src/index.ts +22 -1
  213. package/src/layouts/DlDatasetBrowser/DemoComponents/DatasetFooter.vue +78 -0
  214. package/src/layouts/DlDatasetBrowser/DemoComponents/DatasetHeader.vue +22 -0
  215. package/src/layouts/DlDatasetBrowser/DemoComponents/DatasetLeftDrawer.vue +96 -0
  216. package/src/layouts/DlDatasetBrowser/DemoComponents/DatasetMainContent.vue +51 -0
  217. package/src/layouts/DlDatasetBrowser/DemoComponents/DatasetRightDrawer.vue +88 -0
  218. package/src/layouts/DlDatasetBrowser/DemoComponents/MainContent/ActionsMenu.vue +70 -0
  219. package/src/layouts/DlDatasetBrowser/DemoComponents/MainContent/AutomationMenu.vue +106 -0
  220. package/src/layouts/DlDatasetBrowser/DemoComponents/MainContent/CardView.vue +101 -0
  221. package/src/layouts/DlDatasetBrowser/DemoComponents/MainContent/CardViewGallery.vue +141 -0
  222. package/src/layouts/DlDatasetBrowser/DemoComponents/MainContent/CardViewTable.vue +193 -0
  223. package/src/layouts/DlDatasetBrowser/DemoComponents/MainContent/EmptyState/LayoutEmptyState.vue +227 -0
  224. package/src/layouts/DlDatasetBrowser/DemoComponents/MainContent/EmptyState/UploadData.vue +106 -0
  225. package/src/layouts/DlDatasetBrowser/DemoComponents/MainContent/MainContentImages.vue +540 -0
  226. package/src/layouts/DlDatasetBrowser/DemoComponents/MainContent/MainContentNav.vue +329 -0
  227. package/src/layouts/DlDatasetBrowser/DemoComponents/NavbarKpi.vue +84 -0
  228. package/src/layouts/DlDatasetBrowser/DemoComponents/NavbarSearch.vue +132 -0
  229. package/src/layouts/DlDatasetBrowser/DemoComponents/SearchFilterMenu.vue +19 -0
  230. package/src/layouts/DlDatasetBrowser/DemoComponents/filters/AddFilter.vue +212 -0
  231. package/src/layouts/DlDatasetBrowser/DemoComponents/types/imageMetadata.ts +28 -0
  232. package/src/layouts/DlDatasetBrowser/DlDatasetBrowser.vue +42 -0
  233. package/src/layouts/DlStudioLayout/DlStudioLayout.vue +42 -0
  234. package/src/layouts/DlStudioLayout/components/Demo/LeftMenuContent.vue +23 -0
  235. package/src/layouts/DlStudioLayout/components/Demo/StudioFooter.vue +25 -0
  236. package/src/layouts/DlStudioLayout/components/Demo/StudioHeader.vue +121 -0
  237. package/src/layouts/DlStudioLayout/components/Demo/StudioLeftDrawer.vue +245 -0
  238. package/src/layouts/DlStudioLayout/components/Demo/StudioMainContent.vue +31 -0
  239. package/src/layouts/DlStudioLayout/components/Demo/StudioTabsMenu.vue +117 -0
  240. package/src/layouts/DlStudioLayout/components/Demo/TabMenu/FilterMenu.vue +62 -0
  241. package/src/layouts/DlStudioLayout/components/Demo/TabMenu/TabMenuAnnotations.vue +98 -0
  242. package/src/layouts/DlStudioLayout/components/Demo/TabMenu/TabMenuItem.vue +66 -0
  243. package/src/layouts/DlStudioLayout/components/LayoutNavbar.vue +24 -0
  244. package/src/layouts/DlStudioLayout/components/ListAutocomplete.vue +149 -0
  245. package/src/layouts/DlStudioLayout/components/NavigationDrawer.vue +147 -0
  246. package/src/layouts/DlStudioLayout/index.ts +2 -0
  247. package/src/layouts/DlStudioLayout/types/HorizontalItems.ts +9 -0
  248. package/src/layouts/DlStudioLayout/types/VerticalItems.ts +10 -0
  249. package/src/simple-code-editor.d.ts +1 -0
  250. package/src/utils/click-outside.ts +1 -1
  251. package/src/utils/dom.ts +5 -5
  252. package/src/utils/events.ts +3 -3
  253. package/src/utils/global-nodes.ts +2 -2
  254. package/src/utils/input-sizes.ts +5 -2
  255. package/src/utils/is-ellipsis-active.ts +4 -1
  256. package/src/utils/parse-smart-query.ts +209 -111
  257. package/src/utils/portal.ts +5 -5
  258. package/src/utils/position-engine.ts +7 -7
  259. package/src/utils/render.ts +1 -1
  260. package/src/utils/scroll.ts +2 -2
  261. package/src/utils/selection.ts +3 -3
  262. package/vite.config.ts +9 -1
  263. package/src/components/basic/DlCard/DlCard.vue +0 -241
  264. package/src/components/basic/DlCard/types.ts +0 -20
  265. package/src/components/basic/DlEllipsis/DlEllipsis.vue +0 -114
  266. package/src/components/basic/DlWidget/DlGrid.vue +0 -33
  267. package/src/components/basic/DlWidget/DlGridRow.vue +0 -32
  268. package/src/components/compound/DlSearches/DlSmartSearch/utils/utils.ts +0 -124
  269. package/src/components/compound/DlToast/utils/config.ts +0 -17
  270. package/src/components/essential/DlTextHolder/DlTextHolder.vue +0 -65
  271. package/src/components/essential/DlTextHolder/index.ts +0 -2
  272. package/src/demos/DlTextHolderDemo.vue +0 -42
  273. package/src/utils/swapNodes.ts +0 -30
  274. /package/src/components/{basic → compound}/DlCard/index.ts +0 -0
  275. /package/src/components/compound/DlDateTime/DlDateTimeRange/{DlDateInput.vue → DateInput.vue} +0 -0
  276. /package/src/components/{basic → essential}/DlEllipsis/index.ts +0 -0
  277. /package/src/components/{essential → shared}/DlTooltip/index.ts +0 -0
@@ -0,0 +1,119 @@
1
+ <template>
2
+ <td
3
+ :class="classes"
4
+ :style="styles"
5
+ >
6
+ <div
7
+ ref="tableTd"
8
+ class="dl-table-cell-inner-div"
9
+ >
10
+ <slot name="icon" />
11
+ <dl-tooltip v-if="hasEllipsis">
12
+ <slot />
13
+ </dl-tooltip>
14
+ <slot />
15
+ </div>
16
+ </td>
17
+ </template>
18
+
19
+ <script lang="ts">
20
+ import { defineComponent, getCurrentInstance, computed, ref } from 'vue-demi'
21
+ import { getColor } from '../../../../utils'
22
+ import { DlTooltip } from '../../../shared'
23
+ import { useSizeObserver } from '../../../../hooks/use-size-observer'
24
+
25
+ export default defineComponent({
26
+ name: 'DlTdTree',
27
+ components: {
28
+ DlTooltip
29
+ },
30
+ props: {
31
+ props: { type: Object, default: () => {} },
32
+ autoWidth: Boolean,
33
+ noHover: Boolean,
34
+ row: {
35
+ type: Object,
36
+ default: () => {}
37
+ },
38
+ bgColor: {
39
+ type: String,
40
+ default: ''
41
+ }
42
+ },
43
+ setup(props) {
44
+ const vm = getCurrentInstance()
45
+
46
+ const tableTd = ref(null)
47
+
48
+ const { hasEllipsis } = useSizeObserver(tableTd)
49
+
50
+ const hasOptionalProps = computed(() => {
51
+ return props.props !== void 0
52
+ })
53
+
54
+ const tdClasses = computed(() => {
55
+ let classNames = 'dl-td dl-td-tree'
56
+
57
+ if (props.autoWidth) {
58
+ classNames = classNames.concat(' dl-table--col-auto-width')
59
+ }
60
+
61
+ if (props.noHover) {
62
+ classNames = classNames.concat(' dl-td--no-hover')
63
+ }
64
+
65
+ return classNames
66
+ })
67
+
68
+ const tdStyles = computed(() => {
69
+ let styles = ''
70
+
71
+ console.log(props)
72
+
73
+ if (props.bgColor) {
74
+ styles = styles.concat(
75
+ `background: ${getColor(props.bgColor, '')};`
76
+ )
77
+ }
78
+
79
+ return styles
80
+ })
81
+
82
+ const column = computed(() => {
83
+ const name = vm.vnode.key as string
84
+
85
+ return (
86
+ (props.props.colsMap !== void 0
87
+ ? props.props.colsMap[name]
88
+ : null) || props.props.col
89
+ )
90
+ })
91
+
92
+ if (!hasOptionalProps.value) {
93
+ return {
94
+ classes: tdClasses,
95
+ styles: tdStyles,
96
+ tableTd,
97
+ hasEllipsis
98
+ }
99
+ }
100
+
101
+ if (column.value === void 0) {
102
+ return
103
+ }
104
+
105
+ const { row } = props.props
106
+
107
+ return {
108
+ classes: tdClasses.value + column.value.tdClass(row),
109
+ styles: tdStyles.value + column.value.tdStyle(row),
110
+ tableTd,
111
+ hasEllipsis
112
+ }
113
+ }
114
+ })
115
+ </script>
116
+
117
+ <style scoped lang="scss">
118
+ @import '../../DlTable/styles/dl-table-styles.scss';
119
+ </style>
@@ -0,0 +1,52 @@
1
+ <template>
2
+ <tr
3
+ :class="trClasses"
4
+ v-bind="$attrs"
5
+ v-on="listeners"
6
+ >
7
+ <slot />
8
+ </tr>
9
+ </template>
10
+
11
+ <script lang="ts">
12
+ import { defineComponent, isVue2 } from 'vue-demi'
13
+
14
+ export default defineComponent({
15
+ name: 'DlTrTree',
16
+ props: {
17
+ props: { type: Object, default: () => {} },
18
+ noHover: Boolean
19
+ },
20
+ computed: {
21
+ listeners(): any {
22
+ if (isVue2) {
23
+ // @ts-ignore
24
+ return this.$listeners
25
+ } else {
26
+ return this.$attrs
27
+ }
28
+ },
29
+ trClasses(): string {
30
+ let classes = 'dl-tr'
31
+
32
+ if (
33
+ this.$props.props?.header // header slot
34
+ ) {
35
+ return classes
36
+ }
37
+
38
+ if (this.$props.props?._trClass) {
39
+ classes = classes.concat(' ' + this.$props.props._trClass)
40
+ }
41
+
42
+ if (this.$props.props?.noHover || this.$props.noHover) {
43
+ classes = classes.concat(' dl-tr--no-hover')
44
+ }
45
+
46
+ return classes
47
+ }
48
+ }
49
+ })
50
+ </script>
51
+
52
+ <style scoped src="../../DlTable/styles/dl-table-styles.scss" lang="scss" />
@@ -0,0 +1,3 @@
1
+ import DlTreeTable from './DlTreeTable.vue'
2
+
3
+ export { DlTreeTable }
@@ -0,0 +1 @@
1
+ export type RecordStringAny = Record<string, any>
@@ -0,0 +1,51 @@
1
+ import { RecordStringAny } from '../types'
2
+ import { cloneDeep } from 'lodash'
3
+
4
+ export function convertToNestedObject(selectedRows: RecordStringAny[]) {
5
+ const clonedSelectedRows = cloneDeep(selectedRows)
6
+ let selectedItems: RecordStringAny[] = []
7
+
8
+ function isObjectContained(row: RecordStringAny, rows: RecordStringAny[]) {
9
+ for (const rowsItem of rows) {
10
+ if (rowsItem.children) {
11
+ const indexItem = rowsItem.children.findIndex(
12
+ (item: RecordStringAny) => item.name === row.name
13
+ )
14
+
15
+ if (indexItem > -1) {
16
+ return true
17
+ }
18
+ }
19
+ }
20
+ return false
21
+ }
22
+
23
+ const filteredObjects = clonedSelectedRows.filter(
24
+ (obj) => !isObjectContained(obj, clonedSelectedRows)
25
+ )
26
+
27
+ function deleteMissingObjects(
28
+ rows: RecordStringAny[],
29
+ filteredObjects: RecordStringAny[]
30
+ ) {
31
+ const cloneFilteredObjects = filteredObjects.filter((obj) => {
32
+ // Check if the object's name exists in rows
33
+ return rows.some((row) => row.name === obj.name)
34
+ })
35
+
36
+ // Recursively delete missing objects from children arrays
37
+ cloneFilteredObjects.forEach((obj) => {
38
+ if (obj.children) {
39
+ obj.children = deleteMissingObjects(rows, obj.children)
40
+ }
41
+ })
42
+
43
+ return cloneFilteredObjects
44
+ }
45
+
46
+ selectedItems = deleteMissingObjects(selectedRows, filteredObjects)
47
+
48
+ return {
49
+ selectedItems
50
+ }
51
+ }
@@ -0,0 +1,19 @@
1
+ import { flatMapDeep } from 'lodash'
2
+
3
+ type TreeDataItem = Record<string, any>
4
+
5
+ const flatten = (item: TreeDataItem): TreeDataItem[] => {
6
+ if (!item.level) {
7
+ item.level = 1
8
+ }
9
+ const leveledItems = (item.children || []).map((i: any) => {
10
+ return {
11
+ ...i,
12
+ level: (item.level || 1) + 1
13
+ }
14
+ })
15
+
16
+ return [item, flatMapDeep(leveledItems, flatten)]
17
+ }
18
+
19
+ export const flatTreeData = (data: TreeDataItem[]) => flatMapDeep(data, flatten)
@@ -0,0 +1,39 @@
1
+ import { cloneDeep } from 'lodash'
2
+ import { RecordStringAny } from '../types'
3
+
4
+ export function getFromChildren(
5
+ parent: RecordStringAny,
6
+ propsRowKey: string | Function
7
+ ) {
8
+ const clonedParentRows = cloneDeep(parent)
9
+ const childrenKeys: string[] = []
10
+ const childrenCollection: RecordStringAny[] = []
11
+
12
+ childrenCollection.push(clonedParentRows)
13
+
14
+ if (typeof propsRowKey === 'function') {
15
+ const keys = clonedParentRows.map(propsRowKey)
16
+ childrenCollection.concat(keys)
17
+ }
18
+
19
+ function traverseChildren(parentRow: RecordStringAny) {
20
+ if (!parentRow) {
21
+ return
22
+ }
23
+
24
+ if (typeof propsRowKey === 'string') {
25
+ childrenKeys.push(parentRow[propsRowKey])
26
+ }
27
+
28
+ if (!(parentRow as any)?.children) {
29
+ return
30
+ }
31
+ for (const child of (parentRow as any).children) {
32
+ childrenCollection.push(child)
33
+ traverseChildren(child)
34
+ }
35
+ }
36
+ traverseChildren(clonedParentRows)
37
+
38
+ return { childrenKeys, childrenCollection }
39
+ }
@@ -0,0 +1,13 @@
1
+ const setTrSpacing = (item: Record<string, any>) => {
2
+ let paddingLeft = 10
3
+
4
+ if (item.children) {
5
+ paddingLeft = item.level * 16
6
+ } else {
7
+ paddingLeft = item.level * 16 + 16
8
+ }
9
+
10
+ return `padding-left: ${paddingLeft}px;`
11
+ }
12
+
13
+ export { setTrSpacing }
@@ -0,0 +1,184 @@
1
+ import { computed, ComputedRef, ref } from 'vue-demi'
2
+ import { DlTableProps, DlTableRow } from '../../DlTable/types'
3
+ import { convertToNestedObject } from './convertToNestedObject'
4
+ import { RecordStringAny } from '../types'
5
+
6
+ type booleanStringPartial = boolean | 'partial'
7
+
8
+ export const useTreeTableRowSelectionProps = {
9
+ selection: {
10
+ type: String,
11
+ default: 'none',
12
+ validator: (v: string) => ['single', 'multiple', 'none'].includes(v)
13
+ },
14
+ selected: {
15
+ type: Array,
16
+ default: () => [] as (string | DlTableRow)[]
17
+ }
18
+ }
19
+
20
+ export const useTreeTableRowSelectionEmits = ['selection', 'selectedItems']
21
+
22
+ export function useTreeTableRowSelection(
23
+ props: DlTableProps,
24
+ emit: (event: string, val: any) => void,
25
+ computedRows: ComputedRef<DlTableRow[]>,
26
+ getRowKey: ComputedRef<(val: string | DlTableRow) => any>
27
+ ) {
28
+ const selectedRows = ref<(string | DlTableRow)[]>([])
29
+ const selectedItemsNested = ref([])
30
+
31
+ const selectedKeys = computed(() => {
32
+ return selectedRows.value
33
+ .map(getRowKey.value)
34
+ .reduce((acc, key: string) => {
35
+ acc[key] = true
36
+
37
+ return acc
38
+ }, {} as Record<string, boolean>)
39
+ })
40
+
41
+ const hasSelectionMode = computed(() => {
42
+ console.log('test')
43
+ return props.selection !== 'none'
44
+ })
45
+
46
+ const singleSelection = computed(() => {
47
+ return props.selection === 'single'
48
+ })
49
+
50
+ const multipleSelection = computed(() => {
51
+ return props.selection === 'multiple'
52
+ })
53
+
54
+ const allRowsSelected = computed(
55
+ () =>
56
+ computedRows.value.length > 0 &&
57
+ computedRows.value.every(
58
+ (row) => selectedKeys.value[getRowKey.value(row)] === true
59
+ )
60
+ )
61
+
62
+ const someRowsSelected = computed(
63
+ () =>
64
+ allRowsSelected.value !== true &&
65
+ computedRows.value.some(
66
+ (row) => selectedKeys.value[getRowKey.value(row)] === true
67
+ )
68
+ )
69
+
70
+ const rowsSelectedNumber = computed(() => selectedRows.value.length)
71
+
72
+ function getRowByKey(rowKey: string) {
73
+ selectedItemsNested.value.findIndex((item) => item[rowKey] === rowKey)
74
+ }
75
+
76
+ function clearSelection() {
77
+ selectedRows.value = []
78
+ }
79
+
80
+ function updateSelection(
81
+ keys: string[],
82
+ rows: (string | DlTableRow)[],
83
+ added: boolean,
84
+ evt?: (event: string, val: any) => void
85
+ ) {
86
+ emit('selection', { rows, added, keys, evt })
87
+ /*
88
+ const payload =
89
+ singleSelection.value === true
90
+ ? added === true
91
+ ? rows
92
+ : []
93
+ : added === true
94
+ ? props.selected.concat(rows as string[])
95
+ : props.selected.filter(
96
+ (row) => keys.includes(getRowKey.value(row)) === false
97
+ )*/
98
+
99
+ let payload: any
100
+ if (singleSelection.value === true) {
101
+ if (added === true) {
102
+ payload = rows
103
+ } else {
104
+ payload = []
105
+ }
106
+ } else {
107
+ if (added === true) {
108
+ payload = selectedRows.value.concat(rows as string[])
109
+ } else {
110
+ payload = selectedRows.value.filter(
111
+ (row) => !keys.includes(getRowKey.value(row))
112
+ )
113
+ }
114
+ }
115
+
116
+ selectedRows.value = payload
117
+
118
+ const { selectedItems } = convertToNestedObject(payload)
119
+ selectedItemsNested.value = selectedItems
120
+
121
+ emit('selectedItems', selectedItems)
122
+ }
123
+
124
+ function isIncludedInSelectedNestedItems(
125
+ row: any,
126
+ rowKey: string
127
+ ): boolean {
128
+ const index = selectedItemsNested.value.findIndex(
129
+ (item) => item[rowKey] === row[rowKey]
130
+ )
131
+
132
+ return index > -1
133
+ }
134
+
135
+ function isRowSelected(
136
+ rowKey: string | Function,
137
+ rowKeyValue: string
138
+ ): booleanStringPartial {
139
+ let getOriginalRowByRowKey: any
140
+ let getSelectedRowByRowKey: RecordStringAny
141
+
142
+ if (typeof rowKey === 'string') {
143
+ const originalRows = selectedRows.value.filter((item) =>
144
+ isIncludedInSelectedNestedItems(item, rowKey)
145
+ )
146
+ getOriginalRowByRowKey = originalRows.find(
147
+ (originalItem: any) => originalItem[rowKey] === rowKeyValue
148
+ )
149
+ getSelectedRowByRowKey = selectedItemsNested.value.find(
150
+ (selectedItem: any) => {
151
+ if (getOriginalRowByRowKey) {
152
+ return (
153
+ selectedItem[rowKey] ===
154
+ getOriginalRowByRowKey[rowKey]
155
+ )
156
+ }
157
+ return false
158
+ }
159
+ )
160
+ }
161
+ if (getSelectedRowByRowKey && getOriginalRowByRowKey) {
162
+ if (
163
+ getOriginalRowByRowKey.children?.length !==
164
+ getSelectedRowByRowKey.children?.length
165
+ ) {
166
+ return 'partial'
167
+ }
168
+ }
169
+
170
+ return selectedKeys.value[rowKeyValue] === true
171
+ }
172
+
173
+ return {
174
+ hasSelectionMode,
175
+ singleSelection,
176
+ multipleSelection,
177
+ allRowsSelected,
178
+ someRowsSelected,
179
+ rowsSelectedNumber,
180
+ isRowSelected,
181
+ clearSelection,
182
+ updateSelection
183
+ }
184
+ }
@@ -7,7 +7,6 @@ export * from './DlItem'
7
7
  export * from './DlOptionGroup'
8
8
  export * from './DlPagination'
9
9
  export * from './DlRange'
10
- export * from './DlSearches'
11
10
  export * from './DlSelect'
12
11
  export * from './DlSlider'
13
12
  export * from './DlStepper'
@@ -15,5 +14,19 @@ export * from './DlTable'
15
14
  export * from './DlTabPanels'
16
15
  export * from './DlTabs'
17
16
  export * from './DlToast'
17
+
18
+ // uses other compound
18
19
  export * from './DlDialogBox'
20
+ export * from './DlThumbnailGallery'
19
21
  export * from './DlToggleButton'
22
+ export * from './DlTreeTable'
23
+ export * from './DlThumbnailGallery'
24
+ export * from './DlJsonEditor'
25
+ export * from './DlCodeEditor'
26
+ export * from './DlCard'
27
+
28
+ /**
29
+ * Moved to bottom of file as dlsmartsearch specifically uses other components here and needs to be initialized last
30
+ * todo: Fix potential circular dependency
31
+ */
32
+ export * from './DlSearches'
@@ -9,3 +9,5 @@ export * from './DlDialogBox/types'
9
9
  export * from './DlOptionGroup/types'
10
10
  export * from './DlTable/types'
11
11
  export * from './DlToggleButton/types'
12
+ export * from './DlCodeEditor/types'
13
+ export * from './DlCard/types'
@@ -42,7 +42,7 @@ export default defineComponent({
42
42
 
43
43
  const style = computed(() => {
44
44
  return {
45
- verticalAlign: props.align !== void 0 ? props.align : null,
45
+ verticalAlign: props.align ? props.align : null,
46
46
  aspectRatio: hasSlot.value || props.label ? '' : '1/1',
47
47
  padding:
48
48
  hasSlot.value || props.label
@@ -66,10 +66,10 @@ export default defineComponent({
66
66
  }-line` +
67
67
  (props.outline === true
68
68
  ? ' dl-badge--outline'
69
- : props.color !== void 0
69
+ : props.color
70
70
  ? ` bg-${props.color}`
71
71
  : '') +
72
- (text !== void 0 ? ` text-${text}` : '') +
72
+ (text ? ` text-${text}` : '') +
73
73
  (props.floating === true ? ' dl-badge--floating' : '') +
74
74
  (props.rounded === true ? ' dl-badge--rounded' : '') +
75
75
  (props.transparent === true ? ' dl-badge--transparent' : '')
@@ -84,7 +84,7 @@ import { getColor } from '../../../utils'
84
84
  import { v4 } from 'uuid'
85
85
  import { stopAndPrevent } from '../../../utils'
86
86
 
87
- const ValueTypes = [Array, Boolean, String, Number, Object, Function, null]
87
+ const ValueTypes = [Array, Boolean, String, Number, Object, Function]
88
88
 
89
89
  export default defineComponent({
90
90
  name: 'DlCheckbox',
@@ -103,7 +103,7 @@ export default defineComponent({
103
103
  indeterminateValue: { type: ValueTypes, default: null },
104
104
  value: { type: ValueTypes, default: null },
105
105
  falseValue: { type: ValueTypes, default: false },
106
- padding: { type: String, default: '5px' },
106
+ padding: { type: String, default: '0' },
107
107
  trueValue: { type: ValueTypes, default: true },
108
108
  tabindex: { type: String, default: '0' },
109
109
  subLabelSize: { type: String, default: '10px' }
@@ -116,7 +116,7 @@ export default defineComponent({
116
116
  },
117
117
  computed: {
118
118
  identifierClass(): string {
119
- return `dl-checkbox-${this.label ?? ''}`.replaceAll(' ', '-')
119
+ return `dl-checkbox-${this.label ?? ''}`.replace(/ /g, '-')
120
120
  },
121
121
  computedId(): string {
122
122
  return `${this.id || v4()}`
@@ -155,7 +155,8 @@ export default defineComponent({
155
155
  },
156
156
  cssSvgVars(): Record<string, string> {
157
157
  return {
158
- '--dl-active-color': this.getCurrentColor()
158
+ '--dl-active-color': this.getCurrentColor(),
159
+ 'min-width': '12px'
159
160
  }
160
161
  },
161
162
  hasLabel(): boolean {
@@ -242,7 +243,7 @@ export default defineComponent({
242
243
  display: inline-flex;
243
244
  max-width: max-content;
244
245
  align-items: center;
245
- gap: 10px;
246
+ gap: 6px;
246
247
  padding: var(--dl-checkbox-padding);
247
248
  user-select: none;
248
249
  }
@@ -250,7 +251,7 @@ export default defineComponent({
250
251
  cursor: not-allowed;
251
252
  color: var(--dl-color-disabled);
252
253
  & * {
253
- pointer-events: none;
254
+ pointer-events: auto;
254
255
  color: var(--dl-color-disabled);
255
256
  }
256
257
  }
@@ -279,7 +280,7 @@ input {
279
280
  }
280
281
 
281
282
  .sub-text {
282
- margin-left: 6%;
283
+ padding-left: var(--dl-checkbox-sub-label-left-padding, 20px);
283
284
  width: 80%;
284
285
  color: var(--dl-color-medium);
285
286
  word-break: break-all;
@@ -293,6 +294,8 @@ input {
293
294
  .checkbox-label {
294
295
  font-size: var(--dl-font-size-body);
295
296
  color: var(--dl-color-darker);
297
+ overflow-wrap: break-word;
298
+ width: 100%;
296
299
  }
297
300
  .check {
298
301
  position: absolute;