@dataloop-ai/components 0.16.44 → 0.16.46

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 (146) hide show
  1. package/.eslintrc.js +2 -2
  2. package/package.json +10 -9
  3. package/src/App.vue +116 -57
  4. package/src/assets/globals.scss +2 -0
  5. package/src/components/basic/DlAlert/DlAlert.vue +1 -1
  6. package/src/components/basic/DlButton/DlButton.vue +22 -10
  7. package/src/components/basic/DlCard/DlCard.vue +217 -0
  8. package/src/components/basic/DlCard/index.ts +3 -0
  9. package/src/components/basic/DlCard/types.ts +20 -0
  10. package/src/components/basic/DlChip/DlChip.vue +1 -0
  11. package/src/components/basic/DlEllipsis/DlEllipsis.vue +90 -0
  12. package/src/components/basic/DlEllipsis/index.ts +2 -0
  13. package/src/components/basic/DlListItem/DlListItem.vue +11 -5
  14. package/src/components/basic/index.ts +2 -0
  15. package/src/components/compound/DlCharts/charts/DlBarChart/DlBarChart.vue +8 -1
  16. package/src/components/compound/DlCharts/charts/DlColumnChart/DlColumnChart.vue +22 -6
  17. package/src/components/compound/DlCharts/charts/DlConfusionMatrix/DlConfusionMatrix.vue +526 -0
  18. package/src/components/compound/DlCharts/charts/DlConfusionMatrix/index.ts +2 -0
  19. package/src/components/compound/DlCharts/charts/DlConfusionMatrix/utils.ts +96 -0
  20. package/src/components/compound/DlCharts/charts/DlDoughnutChart/DlDoughnutChart.vue +2 -2
  21. package/src/components/compound/DlCharts/charts/DlLineChart/DlLineChart.vue +22 -6
  22. package/src/components/compound/DlCharts/charts/index.ts +1 -0
  23. package/src/components/compound/DlCharts/components/DlBrush.vue +8 -1
  24. package/src/components/compound/DlCharts/components/DlChartScrollBar.vue +34 -21
  25. package/src/components/compound/DlCharts/types/DlConfusionMatrix.types.ts +19 -0
  26. package/src/components/compound/DlCharts/types/index.ts +2 -1
  27. package/src/components/compound/DlCharts/types/props.ts +14 -0
  28. package/src/components/compound/DlDialogBox/DlDialogBox.vue +1 -1
  29. package/src/components/compound/DlDialogBox/components/DlDialogBoxFooter.vue +1 -0
  30. package/src/components/compound/DlDropdownButton/DlDropdownButton.vue +58 -12
  31. package/src/components/compound/DlInput/DlInput.vue +45 -23
  32. package/src/components/compound/DlJsonEditor/DlJsonEditor.vue +13 -29
  33. package/src/components/compound/DlPagination/DlPagination.vue +14 -4
  34. package/src/components/compound/DlPagination/components/PageNavigation.vue +24 -25
  35. package/src/components/compound/DlPagination/components/PaginationLegend.vue +2 -1
  36. package/src/components/compound/DlPagination/components/QuickNavigation.vue +1 -0
  37. package/src/components/compound/DlSearches/DlSmartSearch/DlSmartSearch.vue +86 -49
  38. package/src/components/compound/DlSearches/DlSmartSearch/components/DlSmartSearchInput.vue +20 -13
  39. package/src/components/compound/DlSearches/DlSmartSearch/components/DlSuggestionsDropdown.vue +43 -4
  40. package/src/components/compound/DlSearches/DlSmartSearch/utils/highlightSyntax.ts +1 -55
  41. package/src/components/compound/DlSearches/DlSmartSearch/utils/index.ts +42 -10
  42. package/src/components/compound/DlSearches/DlSmartSearch/utils/utils.ts +107 -0
  43. package/src/components/compound/DlSelect/DlSelect.vue +41 -8
  44. package/src/components/compound/DlTable/DlTable.vue +13 -10
  45. package/src/components/compound/DlTable/styles/dl-table-styles.scss +16 -4
  46. package/src/components/compound/DlToggleButton/DlToggleButton.vue +109 -0
  47. package/src/components/compound/DlToggleButton/config.ts +27 -0
  48. package/src/components/compound/DlToggleButton/index.ts +3 -0
  49. package/src/components/compound/DlToggleButton/types.ts +4 -0
  50. package/src/components/compound/index.ts +1 -0
  51. package/src/components/compound/types.ts +1 -0
  52. package/src/components/essential/DlColorPicker/DlColorPicker.vue +4 -1
  53. package/src/components/essential/DlColorPicker/components/DlColors.vue +2 -6
  54. package/src/components/essential/DlIcon/DlIcon.vue +5 -1
  55. package/src/components/essential/DlMenu/DlMenu.vue +30 -2
  56. package/src/components/essential/DlSeparator/DlSeparator.vue +62 -0
  57. package/src/components/essential/DlSeparator/index.ts +2 -0
  58. package/src/components/essential/DlSpinner/DlSpinner.vue +53 -217
  59. package/src/components/essential/DlSpinner/components/DlSpinnerCircle.vue +44 -0
  60. package/src/components/essential/DlSpinner/components/DlSpinnerClock.vue +79 -0
  61. package/src/components/essential/DlSpinner/components/DlSpinnerDots.vue +113 -0
  62. package/src/components/essential/DlSpinner/components/DlSpinnerGrid.vue +166 -0
  63. package/src/components/essential/DlSpinner/components/DlSpinnerLogo.vue +152 -0
  64. package/src/components/essential/DlSpinner/index.ts +14 -1
  65. package/src/components/essential/DlSpinner/styles/spinnerStyles.scss +111 -0
  66. package/src/components/essential/DlSpinner/types.ts +7 -0
  67. package/src/components/essential/index.ts +1 -0
  68. package/src/components/essential/types.ts +1 -0
  69. package/src/components/shared/DlItemSection/DlItemSection.vue +21 -15
  70. package/src/components/shared/DlVirtualScroll/DlVirtualScroll.vue +36 -21
  71. package/src/components/shared/DlVirtualScroll/useVirtualScroll.ts +8 -10
  72. package/src/{demo → demos}/DlButtonDemo.vue +36 -1
  73. package/src/demos/DlCardDemo.vue +47 -0
  74. package/src/{demo → demos}/DlColorPickerDemo.vue +16 -1
  75. package/src/demos/DlConfusionMatrixDemo.vue +53 -0
  76. package/src/{demo → demos}/DlDialogBoxDemo.vue +4 -1
  77. package/src/demos/DlDropdownButtonDemo.vue +386 -0
  78. package/src/demos/DlEllipsisDemo.vue +30 -0
  79. package/src/{demo → demos}/DlLineChartDemo.vue +8 -8
  80. package/src/{demo → demos}/DlMenuDemo.vue +61 -2
  81. package/src/{demo → demos}/DlSearchDemo.vue +3 -2
  82. package/src/demos/DlSeparatorDemo.vue +44 -0
  83. package/src/demos/DlSpinnerDemo.vue +59 -0
  84. package/src/{demo → demos}/DlTableDemo.vue +117 -29
  85. package/src/demos/DlToggleButtonDemo.vue +57 -0
  86. package/src/{demo → demos}/DlTooltipDemo.vue +43 -2
  87. package/src/{demo → demos}/DlWidgetDemo.vue +34 -19
  88. package/src/{demo → demos}/SmartSearchDemo/DlSmartSearchDemo.vue +2 -50
  89. package/src/{demo → demos}/index.ts +14 -56
  90. package/src/hooks/use-arrow-navigation.ts +58 -0
  91. package/src/hooks/use-suggestions.ts +97 -74
  92. package/src/utils/colors.ts +1 -1
  93. package/src/utils/draggable-table.ts +2 -2
  94. package/src/utils/index.ts +1 -0
  95. package/src/utils/parse-smart-query.ts +87 -0
  96. package/src/components/compound/DlCharts/types.ts +0 -1
  97. package/src/demo/DlDropdownButtonDemo.vue +0 -260
  98. package/src/demo/DlSpinnerDemo.vue +0 -20
  99. /package/src/{demo → demos}/BarChartDemo.vue +0 -0
  100. /package/src/{demo → demos}/ColumnChartDemo.vue +0 -0
  101. /package/src/{demo → demos}/DlAccordionDemo.vue +0 -0
  102. /package/src/{demo → demos}/DlAlertDemo.vue +0 -0
  103. /package/src/{demo → demos}/DlAvatarDemo.vue +0 -0
  104. /package/src/{demo → demos}/DlBadgeDemo.vue +0 -0
  105. /package/src/{demo → demos}/DlChartDoughnutDemo.vue +0 -0
  106. /package/src/{demo → demos}/DlCheckboxDemo.vue +0 -0
  107. /package/src/{demo → demos}/DlChipDemo.vue +0 -0
  108. /package/src/{demo → demos}/DlCounterDemo.vue +0 -0
  109. /package/src/{demo → demos}/DlDateTimeRangeDemo.vue +0 -0
  110. /package/src/{demo → demos}/DlIconDemo.vue +0 -0
  111. /package/src/{demo → demos}/DlInputDemo.vue +0 -0
  112. /package/src/{demo → demos}/DlKpiDemo.vue +0 -0
  113. /package/src/{demo → demos}/DlLinkDemo.vue +0 -0
  114. /package/src/{demo → demos}/DlListDemo.vue +0 -0
  115. /package/src/{demo → demos}/DlOptionGroupDemo.vue +0 -0
  116. /package/src/{demo → demos}/DlPaginationDemo.vue +0 -0
  117. /package/src/{demo → demos}/DlPanelContainerDemo.vue +0 -0
  118. /package/src/{demo → demos}/DlPopupDemo.vue +0 -0
  119. /package/src/{demo → demos}/DlProgressBarDemo.vue +0 -0
  120. /package/src/{demo → demos}/DlProgressChartDemo.vue +0 -0
  121. /package/src/{demo → demos}/DlRadioDemo.vue +0 -0
  122. /package/src/{demo → demos}/DlRangeDemo.vue +0 -0
  123. /package/src/{demo → demos}/DlSelectDemo.vue +0 -0
  124. /package/src/{demo → demos}/DlSkeletonDemo.vue +0 -0
  125. /package/src/{demo → demos}/DlSliderDemo.vue +0 -0
  126. /package/src/{demo → demos}/DlStepperDemo/CenteredStepperInDialogBox.vue +0 -0
  127. /package/src/{demo → demos}/DlStepperDemo/DlStepperDemo.vue +0 -0
  128. /package/src/{demo → demos}/DlStepperDemo/SimpleStepper.vue +0 -0
  129. /package/src/{demo → demos}/DlStepperDemo/StepperInDialogBox.vue +0 -0
  130. /package/src/{demo → demos}/DlStepperDemo/index.ts +0 -0
  131. /package/src/{demo → demos}/DlStepperDemo/steps/AssignmentsStep.vue +0 -0
  132. /package/src/{demo → demos}/DlStepperDemo/steps/DataStep.vue +0 -0
  133. /package/src/{demo → demos}/DlStepperDemo/steps/GeneralStep.vue +0 -0
  134. /package/src/{demo → demos}/DlStepperDemo/steps/InstructionStep.vue +0 -0
  135. /package/src/{demo → demos}/DlStepperDemo/steps/QualityStep.vue +0 -0
  136. /package/src/{demo → demos}/DlSwitchDemo.vue +0 -0
  137. /package/src/{demo → demos}/DlTabsDemo.vue +0 -0
  138. /package/src/{demo → demos}/DlTdDemo.vue +0 -0
  139. /package/src/{demo → demos}/DlTextAreaDemo.vue +0 -0
  140. /package/src/{demo → demos}/DlTextHolderDemo.vue +0 -0
  141. /package/src/{demo → demos}/DlThDemo.vue +0 -0
  142. /package/src/{demo → demos}/DlToastDemo.vue +0 -0
  143. /package/src/{demo → demos}/DlTrDemo.vue +0 -0
  144. /package/src/{demo → demos}/DlTrendDemo.vue +0 -0
  145. /package/src/{demo → demos}/DlTypographyDemo.vue +0 -0
  146. /package/src/{demo → demos}/SmartSearchDemo/schema.ts +0 -0
@@ -79,6 +79,7 @@ import {
79
79
  } from './utils'
80
80
  import { isMobileOrTablet } from '../../../utils'
81
81
  import { v4 } from 'uuid'
82
+ import { useArrowNavigation } from '../../../hooks/use-arrow-navigation'
82
83
 
83
84
  export default defineComponent({
84
85
  name: 'DlMenu',
@@ -140,10 +141,20 @@ export default defineComponent({
140
141
  menuClass: {
141
142
  type: String,
142
143
  default: ''
144
+ },
145
+ arrowNavItems: {
146
+ type: [String, Array, Object],
147
+ default: () => [] as any[]
143
148
  }
144
149
  },
145
150
 
146
- emits: [...useModelToggleEmits, 'click', 'escape-key'],
151
+ emits: [
152
+ ...useModelToggleEmits,
153
+ 'click',
154
+ 'escape-key',
155
+ 'highlightedIndex',
156
+ 'handleSelectedItem'
157
+ ],
147
158
 
148
159
  setup(props, { attrs }) {
149
160
  const vm = getCurrentInstance()
@@ -242,6 +253,7 @@ export default defineComponent({
242
253
  const isMobile = computed(() => isMobileOrTablet())
243
254
 
244
255
  function handleShow(evt: MouseEvent | TouchEvent) {
256
+ isMenuOpen.value = true
245
257
  removeTick()
246
258
  removeTimeout()
247
259
 
@@ -290,6 +302,7 @@ export default defineComponent({
290
302
  }
291
303
 
292
304
  function handleHide(evt: ClickOutsideEvent) {
305
+ isMenuOpen.value = false
293
306
  removeTick()
294
307
  removeTimeout()
295
308
  hidePortal()
@@ -396,6 +409,19 @@ export default defineComponent({
396
409
  // expose public methods
397
410
  Object.assign(proxy, { focus, updatePosition })
398
411
 
412
+ const isMenuOpen = ref(false)
413
+ const navItems = computed(() => props.arrowNavItems)
414
+ const { selectedItem, highlightedIndex } = useArrowNavigation(
415
+ navItems,
416
+ isMenuOpen
417
+ )
418
+ watch(selectedItem, (value: any) => {
419
+ emit('handleSelectedItem', value)
420
+ })
421
+ watch(highlightedIndex, (value: any) => {
422
+ emit('highlightedIndex', value)
423
+ })
424
+
399
425
  return {
400
426
  uuid: `dl-menu-${v4()}`,
401
427
  onClick,
@@ -406,7 +432,9 @@ export default defineComponent({
406
432
  portalEl: isVue2 ? '[data-test-id="portal"]' : portalEl,
407
433
  portalIsActive,
408
434
  classes: 'dl-menu dl-position-engine scroll' + classes.value,
409
- styles: [attrs.style, transitionStyle.value] as any
435
+ styles: [attrs.style, transitionStyle.value] as any,
436
+ selectedItem,
437
+ highlightedIndex
410
438
  }
411
439
  }
412
440
  })
@@ -0,0 +1,62 @@
1
+ <template>
2
+ <div :style="styles" />
3
+ </template>
4
+
5
+ <script lang="ts">
6
+ import { defineComponent } from 'vue-demi'
7
+ import { includes } from '../../../utils'
8
+
9
+ export default defineComponent({
10
+ name: 'DlSeparator',
11
+ props: {
12
+ color: {
13
+ type: String,
14
+ default: 'var(--dl-color-separator)'
15
+ },
16
+ type: {
17
+ type: String,
18
+ default: 'horizontal',
19
+ validator: (value: string) =>
20
+ includes(['horizontal', 'vertical'], value)
21
+ },
22
+ width: {
23
+ type: String,
24
+ default: null
25
+ },
26
+ height: {
27
+ type: String,
28
+ default: null
29
+ },
30
+ indent: {
31
+ type: String,
32
+ default: '10px'
33
+ }
34
+ },
35
+ computed: {
36
+ styles() {
37
+ let styles
38
+ switch (this.type) {
39
+ case 'horizontal':
40
+ styles = {
41
+ backgroundColor: this.color,
42
+ width: this.width || '300px',
43
+ height: this.height || '1px',
44
+ marginTop: this.indent,
45
+ marginBottom: this.indent
46
+ }
47
+ break
48
+ case 'vertical':
49
+ styles = {
50
+ backgroundColor: this.color,
51
+ width: this.width || '1px',
52
+ height: this.height || '300px',
53
+ marginLeft: this.indent,
54
+ marginRight: this.indent
55
+ }
56
+ break
57
+ }
58
+ return styles
59
+ }
60
+ }
61
+ })
62
+ </script>
@@ -0,0 +1,2 @@
1
+ import DlSeparator from './DlSeparator.vue'
2
+ export { DlSeparator }
@@ -1,117 +1,14 @@
1
1
  <template>
2
- <div class="wrapper">
3
- <div
4
- class="spinner"
5
- :style="spinnerStyles"
6
- >
7
- <div
8
- ref="spinBg"
9
- class="spin-bg"
10
- >
11
- <svg
12
- id="Layer_2"
13
- data-name="Layer 2"
14
- viewBox="0 0 140 140"
15
- >
16
- <g
17
- id="Layer_1-2"
18
- data-name="Layer 1"
19
- >
20
- <path
21
- class="dl-svg"
22
- d="M70,0C31.33,0,0,31.33,0,70s31.33,70,70,70,70-31.33,70-70S108.67,0,70,0Zm0,131.97c-34.2,0-61.97-27.77-61.97-61.97S35.8,8.03,70,8.03s61.97,27.77,61.97,61.97-27.77,61.97-61.97,61.97Z"
23
- />
24
- </g>
25
- </svg>
26
- </div>
27
- <div
28
- ref="spinColor"
29
- class="spin-loader"
30
- >
31
- <svg
32
- id="Layer_2"
33
- data-name="Layer 2"
34
- viewBox="0 0 140 140"
35
- >
36
- <defs>
37
- <linearGradient
38
- id="linear-gradient"
39
- x1="12.53"
40
- y1="229.07"
41
- x2="119.46"
42
- y2="229.07"
43
- gradientTransform="translate(0 246.89) scale(1 -1)"
44
- gradientUnits="userSpaceOnUse"
45
- >
46
- <stop
47
- offset="0"
48
- :stop-color="color"
49
- stop-opacity="0"
50
- />
51
- <stop
52
- offset=".12"
53
- :stop-color="color"
54
- stop-opacity="0"
55
- />
56
- <stop
57
- offset=".34"
58
- :stop-color="color"
59
- />
60
- <stop
61
- offset=".69"
62
- :stop-color="color"
63
- />
64
- <stop
65
- offset=".91"
66
- :stop-color="color"
67
- stop-opacity="0"
68
- />
69
- </linearGradient>
70
- </defs>
71
- <g
72
- id="Layer_1-2"
73
- data-name="Layer 1"
74
- >
75
- <g>
76
- <path
77
- class="spinner-color-bg"
78
- d="M70,0C31.33,0,0,31.33,0,70s31.33,70,70,70,70-31.33,70-70S108.67,0,70,0Zm0,131.97c-34.2,0-61.97-27.77-61.97-61.97S35.8,8.03,70,8.03s61.97,27.77,61.97,61.97-27.77,61.97-61.97,61.97Z"
79
- />
80
- <path
81
- class="spinner-color"
82
- d="M114.87,25.82c1.38-1.38,2.87-2.75,4.25-4.13,.46-.34,.46-1.03,0-1.49C106.49,7.69,89.16,0,70,0,46.36,0,25.48,11.7,12.74,29.72c-.34,.46-.23,.92,.11,1.38l4.25,4.25c.46,.46,1.15,.34,1.61-.11,11.25-16.52,29.95-27.2,51.3-27.2,16.98,0,32.25,6.77,43.49,17.79,.34,.34,1.03,.34,1.38,0Z"
83
- />
84
- </g>
85
- </g>
86
- </svg>
87
- </div>
88
- <div
89
- ref="dlIcon"
90
- class="dl-icon"
91
- >
92
- <svg
93
- viewBox="0 0 51 45"
94
- fill="none"
95
- >
96
- <path
97
- d="M23.2962 0.558083H0.830566V32.2536L10.1727 44.284H23.2962V38.5002H12.6195L6.39136 30.4028V6.11058H23.2962V0.558083Z"
98
- :fill="iconColor"
99
- />
100
- <path
101
- d="M27.5224 6.11058V0.558083C33.3056 -0.137737 52.8796 3.56565 50.6553 25.0816C48.9091 41.9727 34.3436 44.901 27.5224 44.284V38.5002C41.2242 39.4256 45.0945 29.1689 45.3169 23.9249C46.2067 8.19281 33.8246 5.49365 27.5224 6.11058Z"
102
- :fill="iconColor"
103
- />
104
- <path
105
- d="M23.2962 19.0664V13.5139H13.0643V27.3952L16.8457 31.7909H23.2962V26.2384H19.07L18.6251 25.5443V19.0664H23.2962Z"
106
- :fill="iconColor"
107
- />
108
- <path
109
- d="M27.5224 19.0664V13.5139C31.2296 13.2054 38.644 14.5782 38.644 22.5367C38.644 30.4953 31.2296 32.0223 27.5224 31.7909V26.2384C29.3018 26.7782 33.3056 26.9038 33.3056 22.9994C33.3056 19.0664 29.5984 18.758 27.5224 19.0664Z"
110
- :fill="iconColor"
111
- />
112
- </svg>
113
- </div>
114
- </div>
2
+ <div>
3
+ <component
4
+ :is="spinnerType"
5
+ :size="size"
6
+ :color="color"
7
+ :thickness="thickness"
8
+ :border-color="borderColor"
9
+ :icon-size="iconSize"
10
+ :icon-color="iconColor"
11
+ />
115
12
  <div
116
13
  v-if="text"
117
14
  class="spinner-text"
@@ -122,11 +19,23 @@
122
19
  </div>
123
20
  </template>
124
21
 
125
- <script>
126
- import { defineComponent } from 'vue-demi'
22
+ <script lang="ts">
23
+ import { defineComponent, PropType } from 'vue-demi'
24
+ import DlSpinnerGrid from './components/DlSpinnerGrid.vue'
25
+ import DlSpinnerCircle from './components/DlSpinnerCircle.vue'
26
+ import DlSpinnerClock from './components/DlSpinnerClock.vue'
27
+ import DlSpinnerDots from './components/DlSpinnerDots.vue'
28
+ import DlSpinnerLogo from './components/DlSpinnerLogo.vue'
29
+ import { DlSpinnerTypes } from './types'
127
30
 
128
31
  export default defineComponent({
129
- name: 'DlSpinner',
32
+ components: {
33
+ DlSpinnerGrid,
34
+ DlSpinnerCircle,
35
+ DlSpinnerClock,
36
+ DlSpinnerDots,
37
+ DlSpinnerLogo
38
+ },
130
39
  props: {
131
40
  text: {
132
41
  type: String,
@@ -136,17 +45,13 @@ export default defineComponent({
136
45
  type: Object,
137
46
  default: null
138
47
  },
139
- size: {
140
- type: String,
141
- default: '140px'
142
- },
143
- iconSize: {
144
- type: String,
145
- default: '50px'
48
+ type: {
49
+ type: String as PropType<DlSpinnerTypes>,
50
+ default: 'default'
146
51
  },
147
- borderColor: {
52
+ size: {
148
53
  type: String,
149
- default: 'var(--dl-color-separator)'
54
+ default: '60px'
150
55
  },
151
56
  color: {
152
57
  type: String,
@@ -156,104 +61,35 @@ export default defineComponent({
156
61
  type: String,
157
62
  default: 'var(--dl-color-tooltip-background)'
158
63
  },
159
- rotationSpeed: {
64
+ iconSize: {
65
+ type: String,
66
+ default: '25px'
67
+ },
68
+ borderColor: {
69
+ type: String,
70
+ default: 'var(--dl-color-separator)'
71
+ },
72
+ thickness: {
160
73
  type: String,
161
- default: '2s'
74
+ default: '3px'
162
75
  }
163
76
  },
164
77
  computed: {
165
- spinnerStyles() {
166
- return {
167
- '--dl-spinner-size': this.size,
168
- '--dl-spinner-icon-size': this.iconSize,
169
- '--dl-spinner-border-color': this.borderColor,
170
- '--dl-spinner-roation-speed': this.rotationSpeed
78
+ spinnerType() {
79
+ switch (this.type.toLowerCase()) {
80
+ case DlSpinnerTypes.GRID:
81
+ return 'DlSpinnerGrid'
82
+ case DlSpinnerTypes.CIRCLE:
83
+ return 'DlSpinnerCircle'
84
+ case DlSpinnerTypes.DOTS:
85
+ return 'DlSpinnerDots'
86
+ case DlSpinnerTypes.CLOCK:
87
+ return 'DlSpinnerClock'
88
+ case DlSpinnerTypes.LOGO:
89
+ default:
90
+ return 'DlSpinnerLogo'
171
91
  }
172
92
  }
173
- },
174
- mounted() {
175
- window.onresize = this.resizeSpinner
176
- this.resizeSpinner()
177
- },
178
- methods: {
179
- resizeSpinner() {
180
- const spinColor = this.$refs.spinColor
181
- const spinBg = this.$refs.spinBg
182
- const icon = this.$refs.dlIcon
183
-
184
- const info = spinBg.getBoundingClientRect()
185
- const x = info.x + window.scrollX
186
- const y = info.y + window.scrollY
187
-
188
- spinColor.style.left = `${x}px`
189
- spinColor.style.top = `${y}px`
190
- icon.style.top = `${
191
- y +
192
- spinBg.offsetHeight -
193
- spinBg.offsetHeight / 2 -
194
- icon.offsetHeight / 2.3
195
- }px`
196
- icon.style.left = `${
197
- x +
198
- spinBg.offsetWidth -
199
- spinBg.offsetWidth / 2 -
200
- icon.offsetWidth / 2.3
201
- }px`
202
- }
203
93
  }
204
94
  })
205
95
  </script>
206
-
207
- <style scoped lang="scss">
208
- .spin-loader,
209
- .spin-bg {
210
- width: var(--dl-spinner-size);
211
- height: var(--dl-spinner-size);
212
- }
213
-
214
- .spin-loader {
215
- position: absolute;
216
- animation: spin var(--dl-spinner-roation-speed) linear infinite;
217
- }
218
-
219
- .dl-icon {
220
- position: absolute;
221
- width: var(--dl-spinner-icon-size);
222
- height: var(--dl-spinner-icon-size);
223
- opacity: 1;
224
- animation: pulse var(--dl-spinner-roation-speed) infinite;
225
- }
226
-
227
- .dl-svg {
228
- fill: var(--dl-spinner-border-color);
229
- }
230
-
231
- .spinner-color-bg {
232
- fill: none;
233
- }
234
-
235
- .spinner-color {
236
- fill: url(#linear-gradient);
237
- }
238
-
239
- @keyframes spin {
240
- 0% {
241
- transform: rotate(0deg);
242
- }
243
- 100% {
244
- transform: rotate(360deg);
245
- }
246
- }
247
-
248
- @keyframes pulse {
249
- 0% {
250
- opacity: 1;
251
- }
252
- 50% {
253
- opacity: 0;
254
- }
255
- 100% {
256
- opacity: 1;
257
- }
258
- }
259
- </style>
@@ -0,0 +1,44 @@
1
+ <template>
2
+ <div class="spinner-wrapper">
3
+ <svg
4
+ class="dl-spinner dl-spinner-mat"
5
+ :width="size"
6
+ :height="size"
7
+ viewBox="25 25 50 50"
8
+ >
9
+ <circle
10
+ class="spinner-path"
11
+ cx="50"
12
+ cy="50"
13
+ r="20"
14
+ fill="none"
15
+ :stroke="color"
16
+ :stroke-width="thickness"
17
+ stroke-miterlimit="10"
18
+ />
19
+ </svg>
20
+ </div>
21
+ </template>
22
+
23
+ <script lang="ts">
24
+ import { defineComponent } from 'vue-demi'
25
+
26
+ export default defineComponent({
27
+ props: {
28
+ color: {
29
+ type: String,
30
+ default: 'var(--dl-color-secondary)'
31
+ },
32
+ size: {
33
+ type: String,
34
+ default: '40px'
35
+ },
36
+ thickness: {
37
+ type: String,
38
+ default: '5px'
39
+ }
40
+ }
41
+ })
42
+ </script>
43
+
44
+ <style src="../styles/spinnerStyles.scss" />
@@ -0,0 +1,79 @@
1
+ <template>
2
+ <div class="spinner-wrapper">
3
+ <svg
4
+ class="dl-spinner"
5
+ :width="size"
6
+ :height="size"
7
+ viewBox="0 0 100 100"
8
+ preserveAspectRatio="xMidYMid"
9
+ >
10
+ <circle
11
+ cx="50"
12
+ cy="50"
13
+ r="48"
14
+ fill="none"
15
+ stroke-width="4"
16
+ stroke-miterlimit="10"
17
+ :stroke="color"
18
+ />
19
+ <line
20
+ stroke-linecap="round"
21
+ stroke-width="4"
22
+ stroke-miterlimit="10"
23
+ :stroke="color"
24
+ x1="50"
25
+ y1="50"
26
+ x2="85"
27
+ y2="50.5"
28
+ >
29
+ <animateTransform
30
+ attributeName="transform"
31
+ type="rotate"
32
+ from="0 50 50"
33
+ to="360 50 50"
34
+ dur="2s"
35
+ repeatCount="indefinite"
36
+ />
37
+ </line>
38
+
39
+ <line
40
+ stroke-linecap="round"
41
+ stroke-width="4"
42
+ stroke-miterlimit="10"
43
+ :stroke="color"
44
+ x1="50"
45
+ y1="50"
46
+ x2="49.5"
47
+ y2="74"
48
+ >
49
+ <animateTransform
50
+ attributeName="transform"
51
+ type="rotate"
52
+ from="0 50 50"
53
+ to="360 50 50"
54
+ dur="15s"
55
+ repeatCount="indefinite"
56
+ />
57
+ </line>
58
+ </svg>
59
+ </div>
60
+ </template>
61
+
62
+ <script lang="ts">
63
+ import { defineComponent } from 'vue-demi'
64
+
65
+ export default defineComponent({
66
+ props: {
67
+ size: {
68
+ type: String,
69
+ default: '40px'
70
+ },
71
+ color: {
72
+ type: String,
73
+ default: 'var(--dl-color-secondary)'
74
+ }
75
+ }
76
+ })
77
+ </script>
78
+
79
+ <style src="../styles/spinnerStyles.scss" />
@@ -0,0 +1,113 @@
1
+ <template>
2
+ <div class="spinner-wrapper">
3
+ <svg
4
+ class="dl-spinner"
5
+ :fill="color"
6
+ :width="size"
7
+ :height="size"
8
+ viewBox="0 0 120 30"
9
+ >
10
+ <circle
11
+ cx="15"
12
+ cy="15"
13
+ r="15"
14
+ >
15
+ <animate
16
+ attributeName="r"
17
+ from="15"
18
+ to="15"
19
+ begin="0s"
20
+ dur="0.8s"
21
+ values="15;9;15"
22
+ calcMode="linear"
23
+ repeatCount="indefinite"
24
+ />
25
+ <animate
26
+ attributeName="fill-opacity"
27
+ from="1"
28
+ to="1"
29
+ begin="0s"
30
+ dur="0.8s"
31
+ values="1;.5;1"
32
+ calcMode="linear"
33
+ repeatCount="indefinite"
34
+ />
35
+ </circle>
36
+
37
+ <circle
38
+ cx="60"
39
+ cy="15"
40
+ r="9"
41
+ fill-opacity=".3"
42
+ >
43
+ <animate
44
+ attributeName="r"
45
+ from="9"
46
+ to="9"
47
+ begin="0s"
48
+ dur="0.8s"
49
+ values="9;15;9"
50
+ calcMode="linear"
51
+ repeatCount="indefinite"
52
+ />
53
+ <animate
54
+ attributeName="fill-opacity"
55
+ from=".5"
56
+ to=".5"
57
+ begin="0s"
58
+ dur="0.8s"
59
+ values=".5;1;.5"
60
+ calcMode="linear"
61
+ repeatCount="indefinite"
62
+ />
63
+ </circle>
64
+
65
+ <circle
66
+ cx="105"
67
+ cy="15"
68
+ r="15"
69
+ fill-opacity=".3"
70
+ >
71
+ <animate
72
+ attributeName="r"
73
+ from="15"
74
+ to="15"
75
+ begin="0s"
76
+ dur="0.8s"
77
+ values="15;9;15"
78
+ calcMode="linear"
79
+ repeatCount="indefinite"
80
+ />
81
+ <animate
82
+ attributeName="fill-opacity"
83
+ from="1"
84
+ to="1"
85
+ begin="0s"
86
+ dur="0.8s"
87
+ values="1;.5;1"
88
+ calcMode="linear"
89
+ repeatCount="indefinite"
90
+ />
91
+ </circle>
92
+ </svg>
93
+ </div>
94
+ </template>
95
+
96
+ <script lang="ts">
97
+ import { defineComponent } from 'vue-demi'
98
+
99
+ export default defineComponent({
100
+ props: {
101
+ size: {
102
+ type: String,
103
+ default: '40px'
104
+ },
105
+ color: {
106
+ type: String,
107
+ default: 'var(--dl-color-secondary)'
108
+ }
109
+ }
110
+ })
111
+ </script>
112
+
113
+ <style src="../styles/spinnerStyles.scss" />