@dataloop-ai/components 0.17.134 → 0.18.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (180) hide show
  1. package/package.json +3 -1
  2. package/src/App.vue +5 -227
  3. package/src/assets/globals.scss +4 -0
  4. package/src/components/basic/DlAccordion/DlAccordion.vue +26 -4
  5. package/src/components/basic/DlButton/DlButton.vue +2 -6
  6. package/src/components/basic/DlChip/DlChip.vue +1 -5
  7. package/src/components/basic/DlEmptyState/DlEmptyState.vue +282 -0
  8. package/src/components/basic/DlEmptyState/index.ts +2 -0
  9. package/src/components/basic/DlEmptyState/types.ts +20 -0
  10. package/src/components/basic/DlListItem/DlListItem.vue +96 -63
  11. package/src/components/basic/DlListItem/utils.ts +0 -3
  12. package/src/components/basic/DlPanelContainer/DlPanelContainer.vue +35 -12
  13. package/src/components/basic/DlPopup/DlPopup.vue +29 -7
  14. package/src/components/basic/DlWidget/DlWidget.vue +32 -4
  15. package/src/components/basic/index.ts +2 -1
  16. package/src/components/basic/types.ts +2 -0
  17. package/src/components/compound/DlCard/DlCard.vue +796 -0
  18. package/src/components/compound/DlCard/components/DescriptionModal.vue +137 -0
  19. package/src/components/compound/DlCard/types.ts +38 -0
  20. package/src/components/compound/DlCharts/charts/DlBarChart/DlBarChart.vue +35 -3
  21. package/src/components/compound/DlCharts/charts/DlColumnChart/DlColumnChart.vue +51 -12
  22. package/src/components/compound/DlCharts/charts/DlConfusionMatrix/DlConfusionMatrix.vue +71 -14
  23. package/src/components/compound/DlCharts/charts/DlDoughnutChart/DlDoughnutChart.vue +28 -4
  24. package/src/components/compound/DlCharts/charts/DlDoughnutChart/components/DlDoughnutChartLegend.vue +1 -1
  25. package/src/components/compound/DlCharts/charts/DlLineChart/DlLineChart.vue +46 -8
  26. package/src/components/compound/DlCharts/components/DlBrush.vue +2 -2
  27. package/src/components/compound/DlCharts/types/props.ts +5 -1
  28. package/src/components/compound/DlCharts/utils.ts +1 -1
  29. package/src/components/compound/DlCodeEditor/DlCodeEditor.vue +171 -0
  30. package/src/components/compound/DlCodeEditor/README.md +11 -0
  31. package/src/components/compound/DlCodeEditor/components/CodeEditor.vue +705 -0
  32. package/src/components/compound/DlCodeEditor/index.ts +3 -0
  33. package/src/components/compound/DlCodeEditor/styles/themes-base16.css +12809 -0
  34. package/src/components/compound/DlCodeEditor/styles/themes.css +3999 -0
  35. package/src/components/compound/DlCodeEditor/types.ts +21 -0
  36. package/src/components/compound/DlDateTime/DlDateTimeRange/{DlCardSidebar.vue → CardSidebar.vue} +10 -11
  37. package/src/components/compound/DlDateTime/DlDateTimeRange/DlDateTimeRange.vue +8 -8
  38. package/src/components/compound/DlDialogBox/DlDialogBox.vue +26 -2
  39. package/src/components/compound/DlInput/DlInput.vue +2 -2
  40. package/src/components/compound/DlOptionGroup/components/MenuItemWrapper.vue +2 -2
  41. package/src/components/compound/DlRange/DlRange.vue +2 -2
  42. package/src/components/compound/DlSearches/DlSmartSearch/components/DlSmartSearchInput.vue +1 -1
  43. package/src/components/compound/DlSearches/DlSmartSearch/components/DlSuggestionsDropdown.vue +1 -1
  44. package/src/components/compound/DlSearches/DlSmartSearch/utils/highlightSyntax.ts +10 -6
  45. package/src/components/compound/DlSelect/DlSelect.vue +78 -70
  46. package/src/components/compound/DlSlider/components/DlSliderBase.vue +2 -2
  47. package/src/components/compound/DlSlider/useSlider.ts +2 -2
  48. package/src/components/compound/DlStepper/DlStepper.vue +33 -3
  49. package/src/components/compound/DlStepper/components/DlStepperContent.vue +6 -2
  50. package/src/components/compound/DlStepper/components/DlStepperSidebar.vue +12 -6
  51. package/src/components/compound/DlTable/DlTable.vue +30 -4
  52. package/src/components/compound/DlTable/components/DlTd.vue +8 -8
  53. package/src/components/compound/DlTable/components/DlTh.vue +1 -1
  54. package/src/components/compound/DlTable/hooks/tableColumnSelection.ts +35 -40
  55. package/src/components/compound/DlTable/hooks/tableFilter.ts +33 -21
  56. package/src/components/compound/DlTable/hooks/tablePagination.ts +10 -13
  57. package/src/components/compound/DlTable/hooks/tableRowExpand.ts +2 -1
  58. package/src/components/compound/DlTable/hooks/tableRowSelection.ts +0 -1
  59. package/src/components/compound/DlTable/hooks/tableSort.ts +52 -47
  60. package/src/components/compound/DlThumbnailGallery/DlThumbnailGallery.vue +268 -0
  61. package/src/components/compound/DlThumbnailGallery/index.ts +2 -0
  62. package/src/components/compound/DlThumbnailGallery/types.ts +11 -0
  63. package/src/components/compound/DlTreeTable/DlTreeTable.vue +1293 -0
  64. package/src/components/compound/DlTreeTable/components/DlTdTree.vue +119 -0
  65. package/src/components/compound/DlTreeTable/components/DlTrTree.vue +52 -0
  66. package/src/components/compound/DlTreeTable/index.ts +3 -0
  67. package/src/components/compound/DlTreeTable/types.ts +1 -0
  68. package/src/components/compound/DlTreeTable/utils/convertToNestedObject.ts +51 -0
  69. package/src/components/compound/DlTreeTable/utils/flatTreeData.ts +19 -0
  70. package/src/components/compound/DlTreeTable/utils/getFromChildren.ts +39 -0
  71. package/src/components/compound/DlTreeTable/utils/trSpacing.ts +13 -0
  72. package/src/components/compound/DlTreeTable/utils/treeTableRowSelection.ts +184 -0
  73. package/src/components/compound/index.ts +5 -0
  74. package/src/components/compound/types.ts +2 -0
  75. package/src/components/essential/DlBadge/DlBadge.vue +3 -3
  76. package/src/components/essential/DlCheckbox/DlCheckbox.vue +6 -3
  77. package/src/components/essential/DlEllipsis/DlEllipsis.vue +18 -14
  78. package/src/components/essential/DlIcon/DlIcon.vue +1 -1
  79. package/src/components/essential/DlLabel/DlLabel.vue +174 -0
  80. package/src/components/essential/DlLabel/index.ts +2 -0
  81. package/src/components/essential/DlList/DlList.vue +2 -2
  82. package/src/components/essential/DlMenu/DlMenu.vue +26 -20
  83. package/src/components/essential/DlMenu/utils.ts +7 -6
  84. package/src/components/essential/DlPageLayout/DlPageLayout.vue +90 -0
  85. package/src/components/essential/DlPageLayout/index.ts +2 -0
  86. package/src/components/essential/DlSeparator/DlSeparator.vue +2 -2
  87. package/src/components/essential/DlThemeProvider/DlThemeProvider.vue +6 -0
  88. package/src/components/essential/index.ts +2 -1
  89. package/src/components/shared/DlTooltip/DlTooltip.vue +9 -10
  90. package/src/demos/BarChartDemo.vue +47 -2
  91. package/src/demos/ColumnChartDemo.vue +51 -2
  92. package/src/demos/DlAccordionDemo.vue +92 -43
  93. package/src/demos/DlCardDemo.vue +156 -19
  94. package/src/demos/DlChartDoughnutDemo.vue +49 -2
  95. package/src/demos/DlCheckboxDemo.vue +13 -0
  96. package/src/demos/DlCodeEditor/DlCodeEditorDemo.vue +247 -0
  97. package/src/demos/DlCodeEditor/index.ts +2 -0
  98. package/src/demos/DlConfusionMatrixDemo.vue +51 -6
  99. package/src/demos/DlDemoPage.vue +235 -0
  100. package/src/demos/DlDialogBoxDemo.vue +56 -51
  101. package/src/demos/DlDropdownButtonDemo.vue +1 -1
  102. package/src/demos/DlEmptyStateDemo.vue +81 -0
  103. package/src/demos/DlLabelDemo.vue +128 -0
  104. package/src/demos/DlLineChartDemo.vue +50 -2
  105. package/src/demos/DlListDemo.vue +12 -9
  106. package/src/demos/DlMenuDemo.vue +13 -14
  107. package/src/demos/DlPageLayoutDemo.vue +146 -0
  108. package/src/demos/DlPanelContainerDemo.vue +113 -2
  109. package/src/demos/DlPopupDemo.vue +51 -0
  110. package/src/demos/DlSelectDemo.vue +14 -5
  111. package/src/demos/DlStepperDemo/DlStepperDemo.vue +5 -1
  112. package/src/demos/DlStepperDemo/EmptyStateStepper.vue +149 -0
  113. package/src/demos/DlTableDemo.vue +65 -2
  114. package/src/demos/DlTabsDemo.vue +1 -1
  115. package/src/demos/DlThumbnailGalleryDemo.vue +99 -0
  116. package/src/demos/DlTreeTableDemo.vue +694 -0
  117. package/src/demos/DlWidgetDemo.vue +48 -3
  118. package/src/demos/index.ts +17 -4
  119. package/src/hooks/use-anchor.ts +14 -16
  120. package/src/hooks/use-model-toggle.ts +12 -14
  121. package/src/hooks/use-portal.ts +2 -2
  122. package/src/hooks/use-scroll-target.ts +2 -4
  123. package/src/hooks/use-size-observer.ts +3 -2
  124. package/src/hooks/use-transition.ts +10 -4
  125. package/src/index.ts +22 -1
  126. package/src/layouts/DlDatasetBrowser/DemoComponents/DatasetFooter.vue +78 -0
  127. package/src/layouts/DlDatasetBrowser/DemoComponents/DatasetHeader.vue +22 -0
  128. package/src/layouts/DlDatasetBrowser/DemoComponents/DatasetLeftDrawer.vue +96 -0
  129. package/src/layouts/DlDatasetBrowser/DemoComponents/DatasetMainContent.vue +51 -0
  130. package/src/layouts/DlDatasetBrowser/DemoComponents/DatasetRightDrawer.vue +88 -0
  131. package/src/layouts/DlDatasetBrowser/DemoComponents/MainContent/ActionsMenu.vue +70 -0
  132. package/src/layouts/DlDatasetBrowser/DemoComponents/MainContent/AutomationMenu.vue +106 -0
  133. package/src/layouts/DlDatasetBrowser/DemoComponents/MainContent/CardView.vue +101 -0
  134. package/src/layouts/DlDatasetBrowser/DemoComponents/MainContent/CardViewGallery.vue +141 -0
  135. package/src/layouts/DlDatasetBrowser/DemoComponents/MainContent/CardViewTable.vue +193 -0
  136. package/src/layouts/DlDatasetBrowser/DemoComponents/MainContent/EmptyState/LayoutEmptyState.vue +227 -0
  137. package/src/layouts/DlDatasetBrowser/DemoComponents/MainContent/EmptyState/UploadData.vue +106 -0
  138. package/src/layouts/DlDatasetBrowser/DemoComponents/MainContent/MainContentImages.vue +540 -0
  139. package/src/layouts/DlDatasetBrowser/DemoComponents/MainContent/MainContentNav.vue +329 -0
  140. package/src/layouts/DlDatasetBrowser/DemoComponents/NavbarKpi.vue +84 -0
  141. package/src/layouts/DlDatasetBrowser/DemoComponents/NavbarSearch.vue +132 -0
  142. package/src/layouts/DlDatasetBrowser/DemoComponents/SearchFilterMenu.vue +19 -0
  143. package/src/layouts/DlDatasetBrowser/DemoComponents/filters/AddFilter.vue +212 -0
  144. package/src/layouts/DlDatasetBrowser/DemoComponents/types/imageMetadata.ts +28 -0
  145. package/src/layouts/DlDatasetBrowser/DlDatasetBrowser.vue +42 -0
  146. package/src/layouts/DlStudioLayout/DlStudioLayout.vue +42 -0
  147. package/src/layouts/DlStudioLayout/components/Demo/LeftMenuContent.vue +23 -0
  148. package/src/layouts/DlStudioLayout/components/Demo/StudioFooter.vue +25 -0
  149. package/src/layouts/DlStudioLayout/components/Demo/StudioHeader.vue +121 -0
  150. package/src/layouts/DlStudioLayout/components/Demo/StudioLeftDrawer.vue +245 -0
  151. package/src/layouts/DlStudioLayout/components/Demo/StudioMainContent.vue +31 -0
  152. package/src/layouts/DlStudioLayout/components/Demo/StudioTabsMenu.vue +117 -0
  153. package/src/layouts/DlStudioLayout/components/Demo/TabMenu/FilterMenu.vue +62 -0
  154. package/src/layouts/DlStudioLayout/components/Demo/TabMenu/TabMenuAnnotations.vue +98 -0
  155. package/src/layouts/DlStudioLayout/components/Demo/TabMenu/TabMenuItem.vue +66 -0
  156. package/src/layouts/DlStudioLayout/components/LayoutNavbar.vue +24 -0
  157. package/src/layouts/DlStudioLayout/components/ListAutocomplete.vue +149 -0
  158. package/src/layouts/DlStudioLayout/components/NavigationDrawer.vue +147 -0
  159. package/src/layouts/DlStudioLayout/index.ts +2 -0
  160. package/src/layouts/DlStudioLayout/types/HorizontalItems.ts +9 -0
  161. package/src/layouts/DlStudioLayout/types/VerticalItems.ts +10 -0
  162. package/src/simple-code-editor.d.ts +1 -0
  163. package/src/utils/click-outside.ts +1 -1
  164. package/src/utils/dom.ts +5 -5
  165. package/src/utils/events.ts +3 -3
  166. package/src/utils/global-nodes.ts +2 -2
  167. package/src/utils/is-ellipsis-active.ts +4 -1
  168. package/src/utils/portal.ts +5 -5
  169. package/src/utils/position-engine.ts +5 -5
  170. package/src/utils/render.ts +1 -1
  171. package/src/utils/scroll.ts +2 -2
  172. package/src/utils/selection.ts +3 -3
  173. package/vite.config.ts +9 -1
  174. package/src/components/basic/DlCard/DlCard.vue +0 -242
  175. package/src/components/basic/DlCard/types.ts +0 -20
  176. package/src/components/essential/DlTextHolder/DlTextHolder.vue +0 -93
  177. package/src/components/essential/DlTextHolder/index.ts +0 -2
  178. package/src/demos/DlTextHolderDemo.vue +0 -50
  179. /package/src/components/{basic → compound}/DlCard/index.ts +0 -0
  180. /package/src/components/compound/DlDateTime/DlDateTimeRange/{DlDateInput.vue → DateInput.vue} +0 -0
@@ -0,0 +1,245 @@
1
+ <template>
2
+ <div class="studio-layout-left-drawer-content">
3
+ <div
4
+ style="
5
+ display: flex;
6
+ align-items: center;
7
+ margin: 0px 5px 7px 0px;
8
+ padding: 5px 0px 0px;
9
+ width: 100%;
10
+ "
11
+ >
12
+ <dl-typography
13
+ color="dl-color-medium"
14
+ variant="h3"
15
+ size="10px"
16
+ style="text-transform: capitalize; margin-right: 5px"
17
+ >
18
+ LABEL PICKER
19
+ </dl-typography>
20
+ <dl-icon
21
+ size="12px"
22
+ icon="icon-dl-info"
23
+ color="dl-color-medium"
24
+ style="margin: 0px 0px 3px"
25
+ >
26
+ <dl-tooltip>
27
+ Use dot separation to create nested labels. For example:
28
+ "Vehicle" and "Vehicle.Car"
29
+ </dl-tooltip>
30
+ </dl-icon>
31
+ </div>
32
+ <div style="margin: 0px 0px 10px">
33
+ <dl-typography
34
+ color="dl-color-medium"
35
+ variant="h3"
36
+ size="12px"
37
+ style="text-align: center"
38
+ >
39
+ For more ontology settings <br>
40
+ <a href="https://google.com/">go to receipe</a>
41
+ </dl-typography>
42
+ </div>
43
+ <div
44
+ style="
45
+ height: 300px;
46
+ padding: 5px;
47
+ resize: vertical;
48
+ overflow: auto;
49
+ "
50
+ >
51
+ <ListAutocomplete
52
+ :items="listAutocomleteItems"
53
+ @selectedOption="handleOption"
54
+ />
55
+ </div>
56
+ <hr>
57
+ <div>
58
+ <div>
59
+ <dl-button
60
+ v-for="(iconMenu, iconMenuIndex) in iconsMenu"
61
+ :key="iconMenuIndex"
62
+ flat
63
+ :style="`background-color: ${
64
+ selectedIconMenu && iconMenu.id === selectedIconMenu.id
65
+ ? 'var(--dl-color-fill)'
66
+ : ''
67
+ }`"
68
+ :icon-color="
69
+ selectedIconMenu &&
70
+ selectedItem &&
71
+ iconMenu.id === selectedIconMenu.id
72
+ ? selectedItem.color
73
+ : 'dl-color-darker'
74
+ "
75
+ size="l"
76
+ :icon="iconMenu.icon"
77
+ @click="handleSelectedIconMenu(iconMenu)"
78
+ >
79
+ <dl-tooltip>
80
+ {{ iconMenu.tooltip }} ({{ iconMenuIndex }})
81
+ </dl-tooltip>
82
+ </dl-button>
83
+ </div>
84
+ </div>
85
+ <hr>
86
+ <div
87
+ style="
88
+ display: flex;
89
+ align-items: center;
90
+ margin: 0px 5px 7px 0px;
91
+ padding: 5px 0px 0px;
92
+ "
93
+ >
94
+ <dl-icon
95
+ size="16px"
96
+ icon="icon-dl-classification"
97
+ color="dl-color-medium"
98
+ style="margin: 0px 3px 0px"
99
+ />
100
+ <dl-typography
101
+ color="dl-color-lighter"
102
+ size="12px"
103
+ style="text-transform: capitalize; margin-right: 5px"
104
+ >
105
+ CLASSIFICATION
106
+ </dl-typography>
107
+ </div>
108
+ <dl-checkbox
109
+ v-model="autoNextItem"
110
+ color="dl-color-lighter"
111
+ label="Auto next item"
112
+ label-color="dl-color-lighter"
113
+ @update:model-value="logValue"
114
+ />
115
+ </div>
116
+ </template>
117
+
118
+ <script lang="ts">
119
+ import { defineComponent, ref } from 'vue-demi'
120
+ import ListAutocomplete from '../ListAutocomplete.vue'
121
+ import {
122
+ DlButton,
123
+ DlCheckbox,
124
+ DlTooltip,
125
+ DlIcon,
126
+ DlTypography
127
+ } from '../../../../components'
128
+
129
+ export default defineComponent({
130
+ name: 'StudioLeftDrawer',
131
+ components: {
132
+ DlTypography,
133
+ DlIcon,
134
+ DlTooltip,
135
+ ListAutocomplete,
136
+ DlButton,
137
+ DlCheckbox
138
+ },
139
+ setup() {
140
+ const listAutocomleteItems = [
141
+ {
142
+ name: 'Affff fffff ffffffff fffffffff fffffffff fffffffffff fffffff f f f f f f f f',
143
+ color: 'red'
144
+ },
145
+ { name: 'B', color: 'green' },
146
+ { name: 'C', color: 'purple' },
147
+ { name: 'D', color: 'yellow' }
148
+ ]
149
+ const selectedItem = ref<any>('')
150
+
151
+ const handleOption = (item: any) => {
152
+ console.log('handle option demo: ', item)
153
+ selectedItem.value = item
154
+ }
155
+ const iconsMenu = [
156
+ {
157
+ id: 1,
158
+ icon: 'icon-dl-selection',
159
+ tooltip: 'Selection',
160
+ link: ''
161
+ },
162
+ {
163
+ id: 2,
164
+ icon: 'icon-dl-classification',
165
+ tooltip: 'Classification',
166
+ link: ''
167
+ },
168
+ {
169
+ id: 3,
170
+ icon: 'icon-dl-point',
171
+ tooltip: 'Point',
172
+ link: ''
173
+ },
174
+ {
175
+ id: 4,
176
+ icon: 'icon-dl-box',
177
+ tooltip: 'Box',
178
+ link: ''
179
+ },
180
+ {
181
+ id: 5,
182
+ icon: 'icon-dl-cubiod',
183
+ tooltip: 'Cube',
184
+ link: ''
185
+ },
186
+ {
187
+ id: 6,
188
+ icon: 'icon-dl-brush',
189
+ tooltip: 'Semantic segmentation',
190
+ link: ''
191
+ },
192
+ {
193
+ id: 7,
194
+ icon: 'icon-dl-polygon',
195
+ tooltip: 'Polygon',
196
+ link: ''
197
+ },
198
+ {
199
+ id: 8,
200
+ icon: 'icon-dl-polyline',
201
+ tooltip: 'Polyline',
202
+ link: ''
203
+ },
204
+ {
205
+ id: 9,
206
+ icon: 'icon-dl-ellipse',
207
+ tooltip: 'Ellipse',
208
+ link: ''
209
+ },
210
+ {
211
+ id: 10,
212
+ icon: 'icon-dl-note-tool',
213
+ tooltip: 'Notes',
214
+ link: ''
215
+ },
216
+ {
217
+ id: 11,
218
+ icon: 'icon-dl-faas-outline',
219
+ tooltip: 'Applications',
220
+ link: ''
221
+ }
222
+ ]
223
+ const selectedIconMenu = ref(null)
224
+
225
+ const handleSelectedIconMenu = (iconMenu: any) => {
226
+ selectedIconMenu.value = iconMenu
227
+ }
228
+
229
+ return {
230
+ listAutocomleteItems,
231
+ handleOption,
232
+ selectedItem,
233
+ iconsMenu,
234
+ selectedIconMenu,
235
+ handleSelectedIconMenu
236
+ }
237
+ }
238
+ })
239
+ </script>
240
+
241
+ <style scoped lang="scss">
242
+ .studio-layout-left-drawer-content {
243
+ width: 250px;
244
+ }
245
+ </style>
@@ -0,0 +1,31 @@
1
+ <template>
2
+ <div
3
+ class="flex items-center"
4
+ style="height: 100%; background-color: var(--dl-color-body-background)"
5
+ >
6
+ <ul>
7
+ <li>
8
+ You need to develop the layouts as you can see here with option
9
+ to enter different kinds of component in the future
10
+ </li>
11
+ <li>this layout need to be responsive,</li>
12
+ <li>Our components should be able to be applied to this layout</li>
13
+ <li>its would be our design QA</li>
14
+ <li>We will explain where and how to apply the components</li>
15
+ <li>
16
+ After we apply the components, we could simulate the behavior
17
+ and see how it works
18
+ </li>
19
+ </ul>
20
+ </div>
21
+ </template>
22
+
23
+ <script lang="ts">
24
+ import { defineComponent } from 'vue-demi'
25
+
26
+ export default defineComponent({
27
+ name: 'StudioMainContent'
28
+ })
29
+ </script>
30
+
31
+ <style scoped></style>
@@ -0,0 +1,117 @@
1
+ <template>
2
+ <div
3
+ class="tabs-menu"
4
+ :style="cssVars"
5
+ >
6
+ <dl-tabs
7
+ v-model="selectedTab"
8
+ :items="tabItems"
9
+ @update:model-value="handleSelectedOption"
10
+ />
11
+ <div class="tabs-menu__border-icon">
12
+ <dl-button
13
+ flat
14
+ :icon="expandIcon"
15
+ @click="onToggle"
16
+ />
17
+ </div>
18
+ <component :is="tabs" />
19
+ </div>
20
+ </template>
21
+
22
+ <script lang="ts">
23
+ import { defineComponent, ref, computed } from 'vue-demi'
24
+ import TabMenuAnnotations from './TabMenu/TabMenuAnnotations.vue'
25
+ import TabMenuItem from './TabMenu/TabMenuItem.vue'
26
+ import {
27
+ DlTabs,
28
+ DlTabPanels,
29
+ DlTabPanel,
30
+ DlIcon,
31
+ DlButton
32
+ } from '../../../../components'
33
+ import { DlTabDetails } from '../../../../components/types'
34
+
35
+ export default defineComponent({
36
+ name: 'StudioTabsMenu',
37
+ components: {
38
+ DlTabs,
39
+ DlTabPanels,
40
+ DlTabPanel,
41
+ TabMenuAnnotations,
42
+ TabMenuItem,
43
+ DlButton,
44
+ DlIcon
45
+ },
46
+ props: {},
47
+ setup() {
48
+ const LARGE_WIDTH = '250px'
49
+ const SMALL_WIDTH = '0px'
50
+ const tabsMenuWidth = ref('')
51
+ const isExpanded = ref(true)
52
+ const selectedTab = ref('annotations')
53
+ const tabItems = [
54
+ {
55
+ label: 'Annotations',
56
+ name: 'annotations'
57
+ },
58
+ { label: 'Item', name: 'item' }
59
+ ] as DlTabDetails[]
60
+
61
+ const selectedOption = ref(null)
62
+
63
+ const handleSelectedOption = (option: any) => {
64
+ selectedOption.value = option
65
+ }
66
+ const tabs = computed(() => {
67
+ switch (selectedTab.value) {
68
+ case 'annotations':
69
+ return 'TabMenuAnnotations'
70
+ case 'item':
71
+ return 'TabMenuItem'
72
+ default:
73
+ return 'TabMenuAnnotations'
74
+ }
75
+ })
76
+
77
+ const onToggle = () => {
78
+ isExpanded.value = !isExpanded.value
79
+ tabsMenuWidth.value = isExpanded.value ? LARGE_WIDTH : SMALL_WIDTH
80
+ }
81
+ const expandIcon = computed(() =>
82
+ isExpanded.value ? 'icon-dl-right-chevron' : 'icon-dl-left-chevron'
83
+ )
84
+ const cssVars = computed(() => {
85
+ return {
86
+ '--tabs-menu-width': tabsMenuWidth.value
87
+ }
88
+ })
89
+
90
+ return {
91
+ selectedOption,
92
+ handleSelectedOption,
93
+ selectedTab,
94
+ tabItems,
95
+ tabs,
96
+ cssVars,
97
+ onToggle,
98
+ expandIcon
99
+ }
100
+ }
101
+ })
102
+ </script>
103
+
104
+ <style scoped lang="scss">
105
+ .tabs-menu {
106
+ width: var(--tabs-menu-width);
107
+ overflow: auto;
108
+ transition: all 300ms;
109
+
110
+ &__border-icon {
111
+ position: absolute;
112
+ margin-left: -21px;
113
+ background-color: var(--dl-color-bg);
114
+ border-radius: 50%;
115
+ }
116
+ }
117
+ </style>
@@ -0,0 +1,62 @@
1
+ <template>
2
+ <dl-button
3
+ flat
4
+ icon="icon-dl-filter"
5
+ >
6
+ <dl-menu>
7
+ <dl-list
8
+ style="display: flex"
9
+ bordered
10
+ separator
11
+ >
12
+ <dl-list-item
13
+ v-for="(listItem, listItemIndex) in listItems"
14
+ :key="listItemIndex"
15
+ clickable
16
+ :start-icon="listItem.icon"
17
+ :start-icon-color="listItem.color"
18
+ >
19
+ <dl-item-section no-wrap>
20
+ {{ listItem.label }}
21
+ </dl-item-section>
22
+ </dl-list-item>
23
+ </dl-list>
24
+ </dl-menu>
25
+ </dl-button>
26
+ </template>
27
+
28
+ <script lang="ts">
29
+ import { defineComponent } from 'vue-demi'
30
+ import {
31
+ DlButton,
32
+ DlMenu,
33
+ DlList,
34
+ DlListItem,
35
+ DlItemSection
36
+ } from '../../../../../components'
37
+
38
+ export default defineComponent({
39
+ name: 'FilterMenu',
40
+ components: {
41
+ DlButton,
42
+ DlMenu,
43
+ DlList,
44
+ DlListItem,
45
+ DlItemSection
46
+ },
47
+ setup() {
48
+ const listItems = [
49
+ {
50
+ icon: 'icon-dl-classification',
51
+ color: '',
52
+ label: 'Classification'
53
+ }
54
+ ]
55
+ return {
56
+ listItems
57
+ }
58
+ }
59
+ })
60
+ </script>
61
+
62
+ <style scoped></style>
@@ -0,0 +1,98 @@
1
+ <template>
2
+ <div>
3
+ <dl-separator />
4
+ <div
5
+ style="
6
+ display: flex;
7
+ height: 100%;
8
+ align-items: center;
9
+ justify-content: start;
10
+ padding-right: 10px;
11
+ gap: 5px;
12
+ "
13
+ >
14
+ <dl-button
15
+ v-for="(buttonItem, buttonIndex) in disabledButtons"
16
+ :key="buttonIndex"
17
+ flat
18
+ dense
19
+ disabled
20
+ >
21
+ <dl-icon
22
+ size="16px"
23
+ :icon="buttonItem.icon"
24
+ color="dl-color-disabled"
25
+ />
26
+ </dl-button>
27
+ </div>
28
+ <div class="tab-menu-annotations__autocomplete">
29
+ <div>
30
+ <dl-input
31
+ v-model="searchAnnotation"
32
+ placeholder="Search Annotations"
33
+ size="l"
34
+ has-prepend
35
+ padding-prop="0px 0px 0px 0px"
36
+ >
37
+ <template #prepend>
38
+ <dl-icon
39
+ style="margin-bottom: 5px"
40
+ icon="icon-dl-search"
41
+ size="12px"
42
+ />
43
+ </template>
44
+ </dl-input>
45
+ </div>
46
+ <div>
47
+ <filter-menu />
48
+ </div>
49
+ </div>
50
+ </div>
51
+ </template>
52
+
53
+ <script lang="ts">
54
+ import { defineComponent, ref } from 'vue-demi'
55
+ import FilterMenu from './FilterMenu.vue'
56
+ import {
57
+ DlSeparator,
58
+ DlButton,
59
+ DlIcon,
60
+ DlInput
61
+ } from '../../../../../components'
62
+
63
+ export default defineComponent({
64
+ name: 'TabMenuAnnotations',
65
+ components: {
66
+ DlSeparator,
67
+ DlButton,
68
+ DlIcon,
69
+ DlInput,
70
+ FilterMenu
71
+ },
72
+ setup() {
73
+ const name = ref('Annotations tab')
74
+ const searchAnnotation = ref('')
75
+
76
+ const disabledButtons = [
77
+ { icon: 'icon-dl-clone' },
78
+ { icon: 'icon-dl-label' },
79
+ { icon: 'icon-dl-hide' },
80
+ { icon: 'icon-dl-delete' }
81
+ ]
82
+
83
+ return {
84
+ name,
85
+ disabledButtons,
86
+ searchAnnotation
87
+ }
88
+ }
89
+ })
90
+ </script>
91
+
92
+ <style scoped lang="scss">
93
+ .tab-menu-annotations {
94
+ &__autocomplete {
95
+ display: flex;
96
+ }
97
+ }
98
+ </style>
@@ -0,0 +1,66 @@
1
+ <template>
2
+ <div>
3
+ <div
4
+ style="
5
+ display: flex;
6
+ height: 100%;
7
+ align-items: center;
8
+ justify-content: start;
9
+ padding-right: 10px;
10
+ gap: 5px;
11
+ "
12
+ >
13
+ <dl-button
14
+ v-for="(itemButton, buttonIndex) in itemsButton"
15
+ :key="buttonIndex"
16
+ flat
17
+ dense
18
+ >
19
+ <dl-icon
20
+ size="16px"
21
+ :icon="itemButton.icon"
22
+ color="dl-color-darker"
23
+ />
24
+ <dl-tooltip>
25
+ {{ itemButton.tooltip }}
26
+ </dl-tooltip>
27
+ </dl-button>
28
+ </div>
29
+ <dl-separator />
30
+ </div>
31
+ </template>
32
+
33
+ <script lang="ts">
34
+ import { defineComponent, ref } from 'vue-demi'
35
+ import {
36
+ DlSeparator,
37
+ DlButton,
38
+ DlIcon,
39
+ DlTooltip
40
+ } from '../../../../../components'
41
+
42
+ export default defineComponent({
43
+ name: 'TabMenuItem',
44
+ components: {
45
+ DlSeparator,
46
+ DlButton,
47
+ DlIcon,
48
+ DlTooltip
49
+ },
50
+ setup() {
51
+ const name = ref('Item tab')
52
+ const itemsButton = [
53
+ { icon: 'icon-dl-import', tooltip: 'Import Annotations' },
54
+ { icon: 'icon-dl-export', tooltip: 'Export' },
55
+ { icon: 'icon-dl-recipe', tooltip: 'Recipe' }
56
+ ]
57
+
58
+ return {
59
+ name,
60
+ itemsButton
61
+ }
62
+ }
63
+ })
64
+ </script>
65
+
66
+ <style scoped></style>
@@ -0,0 +1,24 @@
1
+ <template>
2
+ <div class="dl-layout-navbar">
3
+ <div style="width: 100%; height: 100%">
4
+ <slot />
5
+ </div>
6
+ </div>
7
+ </template>
8
+
9
+ <script lang="ts">
10
+ import { defineComponent } from 'vue-demi'
11
+
12
+ export default defineComponent({
13
+ name: 'DlLayoutNavbar'
14
+ })
15
+ </script>
16
+
17
+ <style scoped lang="scss">
18
+ .dl-layout-navbar {
19
+ display: flex;
20
+ width: 100%;
21
+ height: 50px;
22
+ align-items: center;
23
+ }
24
+ </style>