@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
@@ -76,8 +76,12 @@ export default defineComponent({
76
76
  disabled: { type: Boolean, default: false },
77
77
  id: { type: [String, Number], default: null },
78
78
  label: { type: String, default: null },
79
- padding: { type: String, default: '5px' },
80
- modelValue: { type: [String, Number, Boolean], required: true },
79
+ padding: { type: String, default: '0' },
80
+ modelValue: {
81
+ type: [String, Number, Boolean],
82
+ required: false,
83
+ default: null
84
+ },
81
85
  value: { type: [String, Number, Boolean], required: true },
82
86
  tabindex: { type: String, default: '0' },
83
87
  subLabel: { type: String, default: '' },
@@ -158,7 +162,7 @@ export default defineComponent({
158
162
  cursor: pointer;
159
163
  display: inline-flex;
160
164
  max-width: max-content;
161
- gap: 10px;
165
+ gap: 6px;
162
166
  align-items: center;
163
167
  padding: var(--dl-radio-padding);
164
168
  user-select: none;
@@ -184,7 +188,8 @@ export default defineComponent({
184
188
  }
185
189
  input {
186
190
  position: absolute;
187
- opacity: 0;
191
+ // to deal with quasar conflicts.
192
+ opacity: 0 !important;
188
193
  margin: 0;
189
194
  width: 100%;
190
195
  height: 100%;
@@ -209,7 +214,7 @@ input {
209
214
  flex-direction: column;
210
215
  }
211
216
  .sub-text {
212
- margin-left: 6%;
217
+ margin-left: 5%;
213
218
  width: 80%;
214
219
  color: var(--dl-color-medium);
215
220
  word-break: break-all;
@@ -40,7 +40,7 @@ export default defineComponent({
40
40
  case 'horizontal':
41
41
  styles = {
42
42
  backgroundColor: color,
43
- width: width ?? '300px',
43
+ width: width ?? 'auto',
44
44
  height: height ?? '1px',
45
45
  marginTop: indent,
46
46
  marginBottom: indent
@@ -50,7 +50,7 @@ export default defineComponent({
50
50
  styles = {
51
51
  backgroundColor: color,
52
52
  width: width ?? '1px',
53
- height: height ?? '300px',
53
+ height: height ?? 'auto',
54
54
  marginLeft: indent,
55
55
  marginRight: indent
56
56
  }
@@ -1,15 +1,3 @@
1
- import DlSpinnerGrid from './components/DlSpinnerGrid.vue'
2
- import DlSpinnerCircle from './components/DlSpinnerCircle.vue'
3
- import DlSpinnerClock from './components/DlSpinnerClock.vue'
4
- import DlSpinnerDots from './components/DlSpinnerDots.vue'
5
- import DlSpinnerLogo from './components/DlSpinnerLogo.vue'
6
1
  import DlSpinner from './DlSpinner.vue'
7
2
 
8
- export {
9
- DlSpinner,
10
- DlSpinnerLogo,
11
- DlSpinnerCircle,
12
- DlSpinnerGrid,
13
- DlSpinnerDots,
14
- DlSpinnerClock
15
- }
3
+ export { DlSpinner }
@@ -109,3 +109,10 @@
109
109
  opacity: 1;
110
110
  }
111
111
  }
112
+
113
+ .spinner-text {
114
+ font-size: 1em;
115
+ margin-top: 15px;
116
+ display: flex;
117
+ justify-content: center;
118
+ }
@@ -2,7 +2,9 @@
2
2
  <div
3
3
  :id="uuid"
4
4
  class="dl-switch-wrapper"
5
- :style="`height: ${size}px; margin: ${margin}`"
5
+ :style="`height: ${size}px; margin: ${margin}; ${
6
+ fluid ? 'justify-content: space-between;' : ''
7
+ }`"
6
8
  >
7
9
  <label
8
10
  v-if="!!leftLabel"
@@ -79,7 +81,7 @@ export default defineComponent({
79
81
  type: String,
80
82
  default: '0'
81
83
  },
82
- modelValue: { type: Any, required: true },
84
+ modelValue: { type: Any, required: false, default: null },
83
85
  labelProps: {
84
86
  type: Object as PropType<{ fontSize: number; color: string }>,
85
87
  default: () => ({
@@ -102,7 +104,8 @@ export default defineComponent({
102
104
  value: { type: Any, default: null },
103
105
  falseValue: { type: Any, default: false },
104
106
  trueValue: { type: Any, default: true },
105
- tabindex: { type: String, default: '0' }
107
+ tabindex: { type: String, default: '0' },
108
+ fluid: { type: Boolean, default: false }
106
109
  },
107
110
  emits: ['update:model-value', 'toggle', 'click', 'change'],
108
111
  data() {
@@ -2,8 +2,62 @@
2
2
  <div
3
3
  :id="uuid"
4
4
  class="container"
5
+ :class="rootContainerClasses"
5
6
  :style="cssVars"
6
7
  >
8
+ <div class="dl-textarea__header">
9
+ <div
10
+ v-show="!!title.length || !!tooltip.length"
11
+ class="dl-textarea__title-container"
12
+ >
13
+ <label
14
+ v-show="!!title.length"
15
+ class="dl-textarea__title"
16
+ >
17
+ {{ title }}
18
+ <span
19
+ v-show="required"
20
+ :class="asteriskClasses"
21
+ > *</span>
22
+ {{ !required && optional ? ' (Optional)' : null }}
23
+ </label>
24
+ <span v-show="!!tooltip.length">
25
+ <dl-icon
26
+ class="dl-textarea__tooltip-icon"
27
+ icon="icon-dl-info"
28
+ size="12px"
29
+ />
30
+ <dl-tooltip>
31
+ {{ tooltip }}
32
+ </dl-tooltip>
33
+ </span>
34
+ </div>
35
+ <div
36
+ v-show="!!topMessage.length"
37
+ class="dl-textarea__top-message-container"
38
+ >
39
+ <dl-info-error-message
40
+ v-show="!!topMessage.length"
41
+ position="above"
42
+ :value="topMessage"
43
+ />
44
+ </div>
45
+ <span
46
+ v-show="showClearButton"
47
+ class="dl-textarea__clear-button"
48
+ >
49
+ <dl-button
50
+ ref="input-clear-button"
51
+ icon="icon-dl-close"
52
+ size="s"
53
+ text-color="dl-color-darker"
54
+ flat
55
+ fluid
56
+ @click="onClear"
57
+ />
58
+ <dl-tooltip v-if="clearButtonTooltip"> Remove text </dl-tooltip>
59
+ </span>
60
+ </div>
7
61
  <textarea
8
62
  ref="textarea"
9
63
  :value="modelValue"
@@ -11,6 +65,7 @@
11
65
  :placeholder="placeholder"
12
66
  :maxlength="maxLength"
13
67
  :disabled="disabled"
68
+ :readonly="readonly"
14
69
  @input="onChange"
15
70
  @keydown="onKeydown"
16
71
  @focus="onFocus"
@@ -42,9 +97,11 @@
42
97
  warning
43
98
  :value="warningMessage"
44
99
  />
45
- <span v-show="showCounter">
46
- {{ modelValue.length
47
- }}{{ maxLength && maxLength > 0 ? `/${maxLength}` : null }}
100
+ <span
101
+ v-if="showCounter && maxLength && maxLength > 0"
102
+ class="dl-text-input__counter"
103
+ >
104
+ {{ characterCounter }}
48
105
  </span>
49
106
  </div>
50
107
  </div>
@@ -55,10 +112,17 @@ import { v4 } from 'uuid'
55
112
  import { DlInfoErrorMessage } from '../../shared'
56
113
  import { defineComponent, computed, ref } from 'vue-demi'
57
114
  import { useSizeObserver } from '../../../hooks/use-size-observer'
115
+ //todo: this can cause issues
116
+ import { DlIcon } from '../'
117
+ import { DlTooltip } from '../../shared'
118
+ import DlButton from '../../basic/DlButton/DlButton.vue'
58
119
 
59
120
  export default defineComponent({
60
121
  name: 'DlTextArea',
61
122
  components: {
123
+ DlButton,
124
+ DlTooltip,
125
+ DlIcon,
62
126
  DlInfoErrorMessage
63
127
  },
64
128
  model: {
@@ -113,9 +177,54 @@ export default defineComponent({
113
177
  warning: {
114
178
  type: Boolean,
115
179
  default: false
180
+ },
181
+ required: {
182
+ type: Boolean,
183
+ default: false
184
+ },
185
+ tooltip: {
186
+ type: String,
187
+ default: ''
188
+ },
189
+ optional: {
190
+ type: Boolean,
191
+ default: false
192
+ },
193
+ title: {
194
+ type: String,
195
+ default: ''
196
+ },
197
+ topMessage: {
198
+ type: String,
199
+ default: ''
200
+ },
201
+ hideClearButton: {
202
+ type: Boolean,
203
+ default: false
204
+ },
205
+ clearButtonTooltip: {
206
+ type: Boolean,
207
+ default: false
208
+ },
209
+ dense: Boolean,
210
+ redAsterisk: {
211
+ type: Boolean,
212
+ default: false
213
+ },
214
+ readonly: {
215
+ type: Boolean,
216
+ default: false
217
+ },
218
+ counterReverse: {
219
+ type: Boolean,
220
+ default: false
221
+ },
222
+ maxHeight: {
223
+ type: String,
224
+ default: '120px'
116
225
  }
117
226
  },
118
- emits: ['input', 'focus', 'blur', 'update:model-value', 'keydown'],
227
+ emits: ['input', 'focus', 'blur', 'clear', 'update:model-value', 'keydown'],
119
228
  setup(props) {
120
229
  const uuid = ref(`dl-text-area-${v4()}`)
121
230
  const textarea = ref(null)
@@ -125,6 +234,7 @@ export default defineComponent({
125
234
  const cssVars = computed(() => {
126
235
  return {
127
236
  '--dl-textarea-max-width': props.width || 'auto',
237
+ '--dl-textarea-max-height': props.maxHeight,
128
238
  '--dl-textarea-width':
129
239
  borderBoxSize.value?.[0].inlineSize + 'px' || '100%'
130
240
  }
@@ -161,7 +271,56 @@ export default defineComponent({
161
271
  textarea
162
272
  }
163
273
  },
274
+ computed: {
275
+ showClearButton(): boolean {
276
+ return (
277
+ !this.hideClearButton &&
278
+ !this.disabled &&
279
+ !this.readonly &&
280
+ !!this.modelValue
281
+ )
282
+ },
283
+ asteriskClasses(): string[] {
284
+ const classes = ['dl-textarea__asterisk']
285
+
286
+ if (this.redAsterisk) {
287
+ classes.push('dl-textarea__asterisk--red')
288
+ }
289
+
290
+ return classes
291
+ },
292
+ rootContainerClasses(): string[] {
293
+ const classes = []
294
+ if (this.dense) {
295
+ classes.push('dl-textarea--dense')
296
+ }
297
+ return classes
298
+ },
299
+ textareaLength(): number {
300
+ return `${this.modelValue}`.length
301
+ },
302
+ characterCounter(): string {
303
+ if (!this.maxLength) {
304
+ return ''
305
+ }
306
+
307
+ const chars = this.counterReverse
308
+ ? this.maxLength - this.textareaLength
309
+ : this.textareaLength
310
+
311
+ return `${chars}/${this.maxLength}`
312
+ }
313
+ },
164
314
  methods: {
315
+ onClear(e: any): void {
316
+ this.$emit('clear', this.modelValue)
317
+ this.$emit('input', '', e)
318
+ this.$emit('update:model-value', '')
319
+
320
+ const inputRef = this.$refs.textarea as HTMLInputElement
321
+ inputRef.value = ''
322
+ inputRef.focus()
323
+ },
165
324
  onChange(e: any) {
166
325
  this.$emit('input', e.target.value, e)
167
326
  this.$emit('update:model-value', e.target.value)
@@ -207,11 +366,51 @@ export default defineComponent({
207
366
  min-width: 100px;
208
367
  max-width: 100%;
209
368
  min-height: 80px;
210
- max-height: 120px;
369
+ max-height: var(--dl-textarea-max-height);
211
370
  outline: none;
212
371
  color: var(--dl-color-darker);
213
372
  box-sizing: border-box;
214
-
373
+ &--dense {
374
+ padding: 0;
375
+ }
376
+ &__asterisk {
377
+ color: var(--dl-color-medium);
378
+ font-size: var(--dl-font-size-body);
379
+ user-select: none;
380
+ &--red {
381
+ color: var(--dl-color-negative);
382
+ }
383
+ }
384
+ &__clear-button {
385
+ position: absolute;
386
+ bottom: -25px;
387
+ right: 0;
388
+ }
389
+ &__header {
390
+ position: relative;
391
+ width: var(--dl-textarea-width);
392
+ }
393
+ &__title-container {
394
+ margin-bottom: 6px;
395
+ display: flex;
396
+ align-items: center;
397
+ text-align: start;
398
+ }
399
+ &__title {
400
+ color: var(--dl-color-medium);
401
+ font-size: var(--dl-font-size-body);
402
+ text-align: left;
403
+ margin-right: 5px;
404
+ white-space: nowrap;
405
+ }
406
+ &__tooltip-icon {
407
+ color: var(--dl-color-medium);
408
+ }
409
+ &__top-message-container {
410
+ display: flex;
411
+ margin-bottom: 10px;
412
+ text-align: start;
413
+ }
215
414
  &:hover {
216
415
  border-color: var(--dl-color-hover);
217
416
  }
@@ -226,7 +425,13 @@ export default defineComponent({
226
425
  cursor: not-allowed;
227
426
  user-select: none;
228
427
  }
229
-
428
+ &:readonly {
429
+ border-color: var(--dl-color-separator);
430
+ cursor: text;
431
+ &:hover {
432
+ border-color: var(--dl-color-separator) !important;
433
+ }
434
+ }
230
435
  &::placeholder {
231
436
  color: var(--dl-color-lighter);
232
437
  opacity: 1;
@@ -26,6 +26,9 @@ export default defineComponent({
26
26
 
27
27
  const isDarkTheme = ref(props.isDark)
28
28
 
29
+ // @ts-ignore
30
+ window.DlComponents?.setTheme(props.isDark ? 'dark' : 'light')
31
+
29
32
  provide('theme', isDarkTheme)
30
33
 
31
34
  watch(
@@ -36,6 +39,9 @@ export default defineComponent({
36
39
  'data-theme',
37
40
  getThemeModeAttr(isDark)
38
41
  ) // sets the dl data-theme attr
42
+
43
+ // @ts-ignore
44
+ window.DlComponents?.setTheme(props.isDark ? 'dark' : 'light')
39
45
  }
40
46
  )
41
47
  },
@@ -16,7 +16,7 @@ import { transformOptions } from '../../shared/types'
16
16
 
17
17
  type Variant = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p'
18
18
 
19
- const sizes = ['h1', 'h2', 'h3', 'h4', 'body', 'small']
19
+ const sizes = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'body', 'small']
20
20
 
21
21
  export default defineComponent({
22
22
  name: 'DlTypography',
@@ -108,6 +108,12 @@ export default defineComponent({
108
108
  &--h4 {
109
109
  font-size: var(--dl-font-size-h4);
110
110
  }
111
+ &--h5 {
112
+ font-size: var(--dl-font-size-h5);
113
+ }
114
+ &--h6 {
115
+ font-size: var(--dl-font-size-h6);
116
+ }
111
117
  &--body {
112
118
  font-size: var(--dl-font-size-body);
113
119
  }
@@ -7,9 +7,9 @@ export * from './DlProgressBar'
7
7
  export * from './DlRadio'
8
8
  export * from './DlSkeleton'
9
9
  export * from './DlSwitch'
10
- export * from './DlTextHolder'
10
+ export * from './DlEllipsis'
11
+ export * from './DlLabel'
11
12
  export * from './DlThemeProvider'
12
- export * from './DlTooltip'
13
13
  export * from './DlTrend'
14
14
  export * from './DlTypography'
15
15
  export * from './DlPanel'
@@ -18,3 +18,4 @@ export * from './DlLink'
18
18
  export * from './DlColorPicker'
19
19
  export * from './DlSpinner'
20
20
  export * from './DlSeparator'
21
+ export * from './DlPageLayout'
@@ -65,7 +65,7 @@ export default defineComponent({
65
65
  text-overflow: ellipsis;
66
66
  line-height: 11px;
67
67
  max-height: 22px;
68
- white-space: pre-wrap;
68
+ white-space: nowrap;
69
69
  overflow: hidden;
70
70
  display: inline-block;
71
71
  }
@@ -116,7 +116,7 @@ export default defineComponent({
116
116
  },
117
117
  scrollTarget: {
118
118
  type: String as PropType<Element | string>,
119
- default: void 0
119
+ default: null
120
120
  },
121
121
  delay: {
122
122
  type: Number,
@@ -131,6 +131,13 @@ export default defineComponent({
131
131
  default: 'left',
132
132
  validator: (v: string) =>
133
133
  ['left', 'right', 'justify', 'center'].includes(v)
134
+ },
135
+ /**
136
+ * the % of the parent element that triggers the tooltips visibility
137
+ */
138
+ triggerPercentage: {
139
+ type: Number,
140
+ default: 1
134
141
  }
135
142
  },
136
143
  setup(props, { emit, attrs }) {
@@ -173,7 +180,12 @@ export default defineComponent({
173
180
 
174
181
  const { showPortal, hidePortal, portalIsActive, portalEl } = usePortal(
175
182
  vm,
176
- innerRef
183
+ innerRef,
184
+ false,
185
+ {
186
+ parentId: attrs.id as string,
187
+ parentClass: attrs.class as string
188
+ }
177
189
  )
178
190
 
179
191
  const isMobile = computed(() => isMobileOrTablet())
@@ -212,7 +224,7 @@ export default defineComponent({
212
224
  configureScrollTarget()
213
225
  })
214
226
 
215
- if (unwatchPosition === void 0) {
227
+ if (!unwatchPosition) {
216
228
  unwatchPosition = watch(
217
229
  () =>
218
230
  width +
@@ -246,14 +258,14 @@ export default defineComponent({
246
258
  }
247
259
 
248
260
  function anchorCleanup() {
249
- if (observer !== void 0) {
261
+ if (observer) {
250
262
  observer.disconnect()
251
- observer = void 0
263
+ observer = null
252
264
  }
253
265
 
254
- if (unwatchPosition !== void 0) {
266
+ if (unwatchPosition) {
255
267
  unwatchPosition()
256
- unwatchPosition = void 0
268
+ unwatchPosition = null
257
269
  }
258
270
 
259
271
  unconfigureScrollTarget()
@@ -261,9 +273,10 @@ export default defineComponent({
261
273
  }
262
274
 
263
275
  function CheckAnchorElVisiblity(domElement: any) {
276
+ const intersectionRatio = props.triggerPercentage ?? 1
264
277
  return new Promise((resolve) => {
265
278
  const o = new IntersectionObserver(([entry]) => {
266
- resolve(entry.intersectionRatio === 1)
279
+ resolve(entry.intersectionRatio >= intersectionRatio)
267
280
  o.disconnect()
268
281
  })
269
282
  o.observe(domElement)
@@ -356,7 +369,7 @@ export default defineComponent({
356
369
  }
357
370
 
358
371
  function configureScrollTarget() {
359
- if (anchorEl.value !== null || props.scrollTarget !== void 0) {
372
+ if (anchorEl.value !== null || props.scrollTarget) {
360
373
  (localScrollTarget as Ref<any>).value = getScrollTarget(
361
374
  anchorEl.value as HTMLElement,
362
375
  props.scrollTarget as Element
@@ -386,7 +399,9 @@ export default defineComponent({
386
399
  Object.assign(vm!.proxy, { updatePosition })
387
400
 
388
401
  return {
389
- uuid: `dl-tooltip-${v4()}`,
402
+ uuid: (attrs.id as string)?.length
403
+ ? (attrs.id as string)
404
+ : `dl-tooltip-${v4()}`,
390
405
  portalIsActive,
391
406
  classes: ['dl-tooltip dl-position-engine', attrs.class],
392
407
  showing,
@@ -425,7 +440,7 @@ export default defineComponent({
425
440
  overflow-y: auto;
426
441
  overflow-x: hidden;
427
442
  min-height: 16px;
428
- padding: 2px 5px;
443
+ padding: var(--dl-tooltip-padding, 2px 5px);
429
444
  font-size: var(--dl-font-size-small);
430
445
  line-height: 16px;
431
446
  color: var(--dl-tooltip-color);
@@ -440,14 +455,6 @@ export default defineComponent({
440
455
  pointer-events: none;
441
456
  }
442
457
 
443
- .dl-tooltip {
444
- z-index: 9000;
445
- position: fixed !important;
446
- overflow-y: auto;
447
- overflow-x: hidden;
448
- padding: 2px 5px;
449
- }
450
-
451
458
  .capitalize::first-letter {
452
459
  text-transform: var(--dl-tooltip-text-transform);
453
460
  }