@vcmap/ui 5.0.0-rc.14 → 5.0.0-rc.16

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 (132) hide show
  1. package/README.md +33 -31
  2. package/build/build.js +9 -0
  3. package/build/buildHelpers.js +12 -10
  4. package/build/commonViteConfig.js +3 -10
  5. package/config/base.config.json +30 -24
  6. package/config/dev.config.json +13 -1
  7. package/config/www.config.json +104 -17
  8. package/dist/assets/cesium.430460.js +137226 -0
  9. package/dist/assets/cesium.js +1 -1
  10. package/dist/assets/core.5089ba.js +16024 -0
  11. package/dist/assets/core.js +1 -1
  12. package/dist/assets/index.854f8e2b.js +1 -0
  13. package/dist/assets/ol.9be53a.js +44279 -0
  14. package/dist/assets/ol.js +1 -1
  15. package/dist/assets/{ui.15ef6a.css → ui.49010a.css} +1 -1
  16. package/dist/assets/ui.49010a.js +16776 -0
  17. package/dist/assets/ui.js +1 -1
  18. package/dist/assets/vue.247c1c.js +4675 -0
  19. package/dist/assets/vue.js +5 -2
  20. package/dist/assets/{vuetify.202322.css → vuetify.735e58.css} +1 -1
  21. package/dist/assets/vuetify.735e58.js +21019 -0
  22. package/dist/assets/vuetify.js +5 -2
  23. package/dist/index.html +1 -1
  24. package/index.html +77 -0
  25. package/index.js +8 -1
  26. package/package.json +12 -10
  27. package/plugins/@vcmap/create-link/fallbackCreateLink.vue +4 -1
  28. package/plugins/@vcmap/create-link/index.js +4 -1
  29. package/plugins/@vcmap/pluginExample/exampleActions.js +45 -0
  30. package/plugins/@vcmap/pluginExample/index.js +38 -1
  31. package/plugins/@vcmap/pluginExample/pluginExampleComponent.vue +152 -98
  32. package/plugins/@vcmap/project-selector/ContextsListComponent.vue +8 -1
  33. package/plugins/@vcmap/project-selector/ProjectSelectorComponent.vue +27 -1
  34. package/plugins/@vcmap/search-nominatim/LICENSE.md +14 -0
  35. package/plugins/@vcmap/search-nominatim/README.md +2 -0
  36. package/plugins/@vcmap/search-nominatim/config.json +4 -0
  37. package/plugins/@vcmap/search-nominatim/index.js +26 -0
  38. package/plugins/@vcmap/search-nominatim/nominatim.js +170 -0
  39. package/plugins/@vcmap/search-nominatim/package.json +43 -0
  40. package/plugins/@vcmap/theme-changer/ThemeChangerComponent.vue +26 -0
  41. package/plugins/buttonExamples/ButtonExamples.vue +28 -1
  42. package/plugins/categoryTest/Categories.vue +16 -0
  43. package/plugins/categoryTest/Category.vue +30 -4
  44. package/plugins/example/mySuperComponent.vue +12 -1
  45. package/plugins/notifier/index.js +31 -0
  46. package/plugins/notifier/notifierTester.vue +88 -0
  47. package/plugins/package.json +2 -1
  48. package/plugins/simple-graph/SimpleGraphComponent.vue +5 -11
  49. package/plugins/test/allIconsComponent.vue +16 -0
  50. package/plugins/test/editor.vue +3 -0
  51. package/plugins/test/emptyComponent.vue +3 -0
  52. package/plugins/test/index.js +22 -0
  53. package/plugins/test/myCustomHeader.vue +9 -1
  54. package/plugins/test/testList.vue +287 -0
  55. package/plugins/test/vcsContent.vue +3 -0
  56. package/plugins/test/windowManagerExample.vue +3 -0
  57. package/plugins/wizardExample/index.js +41 -0
  58. package/plugins/wizardExample/wizardExample.vue +77 -0
  59. package/src/actions/actionHelper.js +103 -2
  60. package/src/actions/styleSelector.vue +9 -0
  61. package/src/application/VcsApp.vue +95 -17
  62. package/src/application/VcsAttributions.vue +63 -0
  63. package/src/application/VcsAttributionsFooter.vue +87 -0
  64. package/src/application/{Navbar.vue → VcsNavbar.vue} +35 -2
  65. package/src/application/VcsSettings.vue +4 -0
  66. package/src/application/attributionsHelper.js +150 -0
  67. package/src/application/vcsAppWrapper.vue +5 -1
  68. package/src/components/buttons/VcsActionButtonList.vue +8 -1
  69. package/src/components/buttons/VcsButton.vue +7 -1
  70. package/src/components/form-inputs-controls/VcsCheckbox.vue +7 -2
  71. package/src/components/form-inputs-controls/VcsColorPicker.vue +4 -0
  72. package/src/components/form-inputs-controls/VcsFormSection.vue +55 -9
  73. package/src/components/form-inputs-controls/VcsRadio.vue +7 -1
  74. package/src/components/form-inputs-controls/VcsSelect.vue +38 -2
  75. package/src/components/form-inputs-controls/VcsTextArea.vue +2 -0
  76. package/src/components/form-inputs-controls/VcsTextField.vue +16 -4
  77. package/src/components/form-inputs-controls/VcsWizard.vue +133 -0
  78. package/src/components/imageElementInjector.vue +22 -0
  79. package/src/components/lists/VcsActionList.vue +12 -1
  80. package/src/components/lists/VcsList.vue +466 -0
  81. package/src/components/lists/VcsTreeview.vue +7 -3
  82. package/src/components/lists/VcsTreeviewLeaf.vue +23 -51
  83. package/src/components/lists/VcsTreeviewSearchbar.vue +6 -23
  84. package/src/components/notification/VcsTooltip.vue +14 -9
  85. package/src/components/tables/VcsTable.vue +129 -38
  86. package/src/contentTree/LayerTree.vue +1 -1
  87. package/src/contentTree/contentTreeItem.js +13 -13
  88. package/src/contentTree/subContentTreeItem.js +1 -1
  89. package/src/contentTree/vcsObjectContentTreeItem.js +1 -1
  90. package/src/featureInfo/AddressBalloonComponent.vue +17 -1
  91. package/src/featureInfo/BalloonComponent.vue +63 -27
  92. package/src/featureInfo/balloonFeatureInfoView.js +14 -14
  93. package/src/featureInfo/balloonHelper.js +4 -0
  94. package/src/featureInfo/featureInfo.js +23 -2
  95. package/src/featureInfo/featureInfoInteraction.js +1 -1
  96. package/src/i18n/de.js +22 -0
  97. package/src/i18n/en.js +22 -0
  98. package/src/icons/+all.js +4 -0
  99. package/src/icons/WandIcon.vue +63 -0
  100. package/src/legend/legendHelper.js +18 -12
  101. package/src/legend/styleLegendItem.vue +20 -1
  102. package/src/legend/vcsLegend.vue +29 -3
  103. package/src/manager/toolbox/GroupToolboxComponent.vue +13 -1
  104. package/src/manager/toolbox/SelectToolboxComponent.vue +13 -1
  105. package/src/manager/toolbox/ToolboxManager.vue +3 -0
  106. package/src/manager/window/WindowComponent.vue +15 -2
  107. package/src/manager/window/WindowComponentHeader.vue +38 -7
  108. package/src/manager/window/WindowManager.vue +1 -0
  109. package/src/manager/window/windowManager.js +11 -1
  110. package/src/navigation/mapNavigation.vue +15 -36
  111. package/src/navigation/orientationToolsButton.vue +6 -1
  112. package/src/navigation/overviewMap.js +19 -47
  113. package/src/navigation/tiltSlider.vue +3 -0
  114. package/src/navigation/vcsCompass.vue +2 -0
  115. package/src/notifier/notifier.js +121 -0
  116. package/src/notifier/notifierComponent.vue +84 -0
  117. package/src/search/resultItem.vue +89 -0
  118. package/src/search/resultsComponent.vue +98 -0
  119. package/src/search/search.js +326 -0
  120. package/src/search/searchComponent.vue +90 -0
  121. package/src/styles/_typography.scss +3 -0
  122. package/src/styles/utils/_cursor.scss +4 -0
  123. package/src/styles/variables.scss +23 -4
  124. package/src/vcsUiApp.js +35 -1
  125. package/src/vuePlugins/vuetify.js +2 -0
  126. package/dist/assets/cesium.9489f8.js +0 -8699
  127. package/dist/assets/core.aa346a.js +0 -4
  128. package/dist/assets/index.3cd4fffa.js +0 -1
  129. package/dist/assets/ol.39651b.js +0 -439
  130. package/dist/assets/ui.15ef6a.js +0 -71
  131. package/dist/assets/vue.cbe9d8.js +0 -9
  132. package/dist/assets/vuetify.202322.js +0 -148
@@ -47,6 +47,7 @@
47
47
  }
48
48
  </style>
49
49
  <script>
50
+ import { VCheckbox } from 'vuetify/lib';
50
51
  import VcsLabel from './VcsLabel.vue';
51
52
  import VcsTooltip from '../notification/VcsTooltip.vue';
52
53
  import validate from '../notification/validation.js';
@@ -58,11 +59,15 @@
58
59
  * - if dense is set false, height is 32 px
59
60
  * Provides VcsTooltip to show error messages
60
61
  * @vue-prop {('bottom' | 'left' | 'top' | 'right')} [tooltipPosition='right'] - Position of the error tooltip.
61
- * @vue-prop {string} label Label to be displayed, will be translated.
62
+ * @vue-prop {string} label - Label to be displayed, will be translated.
62
63
  */
63
64
  export default {
64
65
  name: 'VcsCheckbox',
65
- components: { VcsTooltip, VcsLabel },
66
+ components: {
67
+ VcsTooltip,
68
+ VcsLabel,
69
+ VCheckbox,
70
+ },
66
71
  props: {
67
72
  tooltipPosition: {
68
73
  type: String,
@@ -31,6 +31,7 @@
31
31
  } from 'vue';
32
32
  import { Subject } from 'rxjs';
33
33
  import { debounceTime, takeUntil } from 'rxjs/operators';
34
+ import { VColorPicker } from 'vuetify/lib';
34
35
 
35
36
  /**
36
37
  * @description
@@ -38,6 +39,9 @@
38
39
  */
39
40
  export default {
40
41
  name: 'VcsColorPicker',
42
+ components: {
43
+ VColorPicker,
44
+ },
41
45
  props: {
42
46
  width: {
43
47
  type: Number,
@@ -1,16 +1,27 @@
1
1
  <template>
2
2
  <section class="vcs-form-section">
3
- <slot name="title">
3
+ <slot name="header">
4
4
  <article class="pa-2 accent">
5
5
  <div class="form-section-header d-flex justify-space-between align-center">
6
- <strong class="caption">{{ $t(title) }}</strong>
6
+ <strong class="caption">{{ $t(heading) }}</strong>
7
7
  <VcsActionButtonList
8
- :actions="titleActions"
8
+ :actions="actions"
9
9
  small
10
10
  />
11
11
  </div>
12
12
  </article>
13
13
  </slot>
14
+ <v-alert
15
+ :value="showHelp"
16
+ dense
17
+ text
18
+ color="secondary"
19
+ class="ma-0"
20
+ >
21
+ <slot name="help">
22
+ <span>{{ $t(helpText) }}</span>
23
+ </slot>
24
+ </v-alert>
14
25
  <article class="section-content">
15
26
  <slot />
16
27
  </article>
@@ -19,28 +30,63 @@
19
30
 
20
31
 
21
32
  <script>
33
+ import { computed, ref } from 'vue';
34
+ import { VAlert } from 'vuetify/lib';
22
35
  import VcsActionButtonList from '../buttons/VcsActionButtonList.vue';
23
36
 
24
37
  /**
25
38
  * @description
26
39
  * Stylized form section with action buttons
27
- * @vue-data {slot} [#title] - slot to override form section header
40
+ * @vue-data {slot} [#header] - slot to override form section header
28
41
  * @vue-data {slot} [#default] - slot with the section content
29
- * @vue-prop {string} title - Title to be displayed, will be translated.
30
- * @vue-prop {Array<VcsAction>} titleActions - Icons to be displayed on the right side
42
+ * @vue-data {slot} [#help] - Slot to specify html based help. Gets precedence over helpText prop.
43
+ * @vue-prop {string} heading - Title of the section to be displayed, will be translated.
44
+ * @vue-prop {Array<VcsAction>} headerActions - Icons to be displayed on the right side
45
+ * @vue-prop {string} [helpText] - Optional help text. Must be plain string. Use 'help' slot for html based help texts. Help slot has precedence over helpText prop.
46
+ * @vue-computed {Array<VcsAction>} actions - Returns header actions extended by a help action, if help prop is passed or help slot is used.
31
47
  */
32
48
  export default {
33
49
  name: 'VcsFormSection',
34
- components: { VcsActionButtonList },
50
+ components: {
51
+ VcsActionButtonList,
52
+ VAlert,
53
+ },
35
54
  props: {
36
- title: {
55
+ heading: {
37
56
  type: String,
38
57
  default: undefined,
39
58
  },
40
- titleActions: {
59
+ headerActions: {
41
60
  type: Array,
42
61
  default: () => ([]),
43
62
  },
63
+ helpText: {
64
+ type: String,
65
+ default: undefined,
66
+ },
67
+ },
68
+ setup(props, { slots }) {
69
+ const showHelp = ref(false);
70
+ const helpAction = {
71
+ name: 'help',
72
+ title: 'components.vcsFormSection.help',
73
+ icon: 'mdi-help-circle',
74
+ callback: () => { showHelp.value = !showHelp.value; },
75
+ };
76
+ /**
77
+ * @type {ComputedRef<VcsAction>}
78
+ */
79
+ const actions = computed(() => {
80
+ if (props.helpText || (slots.help && slots.help().length > 0)) {
81
+ return [helpAction, ...props.headerActions];
82
+ }
83
+ return props.headerActions;
84
+ });
85
+
86
+ return {
87
+ showHelp,
88
+ actions,
89
+ };
44
90
  },
45
91
  };
46
92
  </script>
@@ -70,6 +70,7 @@
70
70
  }
71
71
  </style>
72
72
  <script>
73
+ import { VRadio, VRadioGroup } from 'vuetify/lib';
73
74
  import VcsTooltip from '../notification/VcsTooltip.vue';
74
75
  import VcsLabel from './VcsLabel.vue';
75
76
  import validate from '../notification/validation.js';
@@ -94,7 +95,12 @@
94
95
  */
95
96
  export default {
96
97
  name: 'VcsRadio',
97
- components: { VcsTooltip, VcsLabel },
98
+ components: {
99
+ VcsTooltip,
100
+ VcsLabel,
101
+ VRadioGroup,
102
+ VRadio,
103
+ },
98
104
  props: {
99
105
  tooltipPosition: {
100
106
  type: String,
@@ -17,11 +17,21 @@
17
17
  :outlined="isOutlined"
18
18
  :dense="isDense"
19
19
  :height="isDense ? 24 : 32"
20
+ :item-text="item => $t(getText(item))"
20
21
  :class="$attrs.color === 'primary' ? 'primary--select' : ''"
21
22
  v-bind="{...$attrs, ...attrs}"
22
23
  v-on="{...$listeners, ...on}"
23
24
  @update:error="setError"
24
- />
25
+ >
26
+ <template #selection="{ item, index }">
27
+ <span v-if="index === 0" class="text-truncate">
28
+ {{ $t(getText(item)) }}
29
+ </span>
30
+ <span v-if="index === 1" class="text-no-wrap grey--text text-caption">
31
+ (+{{ $attrs.value.length - 1 }})
32
+ </span>
33
+ </template>
34
+ </v-select>
25
35
  </span>
26
36
  </template>
27
37
  </VcsTooltip>
@@ -46,30 +56,49 @@
46
56
  }
47
57
  }
48
58
  }
59
+ .v-select{
60
+ &.v-select--is-multi{
61
+ ::v-deep {
62
+ .v-select__selections{
63
+ flex-wrap: nowrap;
64
+ }
65
+ }
66
+ }
67
+ }
49
68
  </style>
50
69
  <script>
51
70
 
71
+ import { VSelect } from 'vuetify/lib';
52
72
  import VcsTooltip from '../notification/VcsTooltip.vue';
53
73
  import validate from '../notification/validation.js';
54
74
 
55
75
  /**
56
76
  * @description Stylized wrapper around {@link https://vuetifyjs.com/en/api/v-select/ |vuetify select}.
77
+ * Translates the items text if it is an i18n string.
57
78
  * Provides two height options depending on "dense" property:
58
79
  * - if dense is set true (default), height is 24 px
59
80
  * - if dense is set false, height is 32 px
60
81
  * Provides VcsTooltip to show error messages
61
82
  * @vue-prop {('bottom' | 'left' | 'top' | 'right')} [tooltipPosition='right'] - Position of the error tooltip.
83
+ * @vue-prop {Function} itemText - A function that is applied to each item and should return the item's text value.
62
84
  * @vue-computed {boolean} isDense - Whether size of select is dense.
63
85
  * @vue-computed {boolean} isOutlined - Select is outlined on either hover, focus or error, if not disabled.
64
86
  */
65
87
  export default {
66
88
  name: 'VcsSelect',
67
- components: { VcsTooltip },
89
+ components: {
90
+ VcsTooltip,
91
+ VSelect,
92
+ },
68
93
  props: {
69
94
  tooltipPosition: {
70
95
  type: String,
71
96
  default: 'right',
72
97
  },
98
+ itemText: {
99
+ type: Function,
100
+ default: undefined,
101
+ },
73
102
  },
74
103
  data() {
75
104
  return {
@@ -91,6 +120,13 @@
91
120
  const rules = [...this.$attrs.rules].concat(this.$attrs.errorMessages);
92
121
  this.errorMessage = validate(rules, this.$attrs.value).join('\n');
93
122
  },
123
+ getText(item) {
124
+ if (this.itemText) {
125
+ return this.itemText(item);
126
+ } else {
127
+ return item?.text ?? item;
128
+ }
129
+ },
94
130
  },
95
131
  };
96
132
  </script>
@@ -51,6 +51,7 @@
51
51
  </style>
52
52
 
53
53
  <script>
54
+ import { VTextarea } from 'vuetify/lib';
54
55
  import VcsTooltip from '../notification/VcsTooltip.vue';
55
56
 
56
57
  /**
@@ -73,6 +74,7 @@
73
74
  name: 'VcsTextArea',
74
75
  components: {
75
76
  VcsTooltip,
77
+ VTextarea,
76
78
  },
77
79
  props: {
78
80
  tooltipPosition: {
@@ -11,7 +11,8 @@
11
11
  :max-width="200"
12
12
  >
13
13
  <template #activator="{ attrs }">
14
- <v-text-field
14
+ <component
15
+ :is="inputComponent"
15
16
  ref="textFieldRef"
16
17
  hide-details
17
18
  :dense="isDense"
@@ -23,7 +24,7 @@
23
24
  v-bind="{...$attrs, ...attrs}"
24
25
  v-on="{...$listeners}"
25
26
  :height="isDense ? 24 : 32"
26
- class="ma-0 pb-1 pt-1 primary--placeholder"
27
+ class="ma-0 pb-1 pt-1 primary--placeholder align-center"
27
28
  :class="$attrs.color === 'primary' ? 'primary--textfield' : ''"
28
29
  />
29
30
  </template>
@@ -51,10 +52,11 @@
51
52
  </style>
52
53
 
53
54
  <script>
55
+ import { VTextField, VFileInput } from 'vuetify/lib';
54
56
  import VcsTooltip from '../notification/VcsTooltip.vue';
55
57
 
56
58
  /**
57
- * @description extends API of {@link https://vuetifyjs.com/en/api/v-text-field/|vuetify v-text-field}.
59
+ * @description extends API of {@link https://vuetifyjs.com/en/api/v-text-field v-text-field}.
58
60
  * Provides two height options depending on "dense" property:
59
61
  * - if dense is set true (default), height is 24 px
60
62
  * - if dense is set false, height is 32 px
@@ -72,6 +74,8 @@
72
74
  name: 'VcsTextField',
73
75
  components: {
74
76
  VcsTooltip,
77
+ VTextField,
78
+ VFileInput,
75
79
  },
76
80
  props: {
77
81
  tooltipPosition: {
@@ -90,6 +94,12 @@
90
94
  };
91
95
  },
92
96
  computed: {
97
+ inputComponent() {
98
+ if (this.$attrs.type === 'file') {
99
+ return 'VFileInput';
100
+ }
101
+ return 'VTextField';
102
+ },
93
103
  isClearable() {
94
104
  return (this.$attrs.clearable !== undefined && this.$attrs.clearable !== false) &&
95
105
  (this.hover || this.focus || this.isError);
@@ -101,7 +111,7 @@
101
111
  return this.joinedErrorBucket.length > 0 && (this.firstInput || !this.neverBlurred);
102
112
  },
103
113
  isOutlined() {
104
- return (this.hover || this.focus || this.isError) && !(this.$attrs.disabled || this.$attrs.disabled === '');
114
+ return (this.$attrs.outlined || this.hover || this.focus || this.isError) && !(this.$attrs.disabled || this.$attrs.disabled === '');
105
115
  },
106
116
  joinedErrorBucket() {
107
117
  if (!this.isMounted) {
@@ -124,6 +134,8 @@
124
134
  },
125
135
  mounted() {
126
136
  this.isMounted = true;
137
+ // fix for autofocus
138
+ this.focus = this.$attrs.autofocus != null;
127
139
  },
128
140
  };
129
141
  </script>
@@ -0,0 +1,133 @@
1
+ <template>
2
+ <v-stepper
3
+ vertical
4
+ :value="value"
5
+ @change="(value) => emitValue(value)"
6
+ >
7
+ <slot />
8
+ </v-stepper>
9
+ </template>
10
+
11
+ <script>
12
+ import { VStepper } from 'vuetify/lib';
13
+
14
+ /**
15
+ * @description Stylized wrapper around {@link https://vuetifyjs.com/en/api/v-stepper/ |vuetify stepper}
16
+ * Is always vertical.
17
+ * Only passes the step property, all other props are ignored.
18
+ * @vue-prop {number} step - The current step of the stepper.
19
+ */
20
+ export default {
21
+ name: 'VcsWizard',
22
+ components: {
23
+ VStepper,
24
+ },
25
+ props: {
26
+ value: {
27
+ type: Number,
28
+ default: undefined,
29
+ },
30
+ },
31
+ setup(props, { emit }) {
32
+ function emitValue(newValue) {
33
+ emit('input', typeof newValue !== 'number' ? Number(newValue) : newValue);
34
+ }
35
+
36
+ return {
37
+ emitValue,
38
+ };
39
+ },
40
+ };
41
+ </script>
42
+ <style scoped lang="scss">
43
+ .v-stepper{
44
+ &.theme--light {
45
+ ::v-deep{
46
+ .v-stepper__step {
47
+ &--active {
48
+ background-color: rgba(34, 34, 34, 0.1);
49
+ .v-stepper__label {
50
+ color: rgba(34, 34, 34, 0.8);
51
+ }
52
+ }
53
+ &--complete {
54
+ .v-stepper__label {
55
+ color: rgba(0, 0, 0, 0.38);
56
+ }
57
+ }
58
+ }
59
+ .v-stepper__content {
60
+ &:not(:last-child) {
61
+ border-left: 2px solid rgba(0, 0, 0, 0.12) !important;
62
+ }
63
+ }
64
+ }
65
+ }
66
+ &.theme--dark {
67
+ ::v-deep{
68
+ .v-stepper__step {
69
+ &--active {
70
+ background-color: rgba(255, 255, 255, 0.5);
71
+ .v-stepper__label {
72
+ color: rgba(255, 255, 255, 1);
73
+ }
74
+ }
75
+ &--complete {
76
+ .v-stepper__label {
77
+ color: rgba(255, 255, 255, 0.5);
78
+ }
79
+ }
80
+ .v-stepper__step__step {
81
+ .v-icon {
82
+ color: transparent;
83
+ }
84
+ }
85
+ &.v-stepper__step--error{
86
+ .v-stepper__label{
87
+ color: var(--v-error-darken2);
88
+ }
89
+ .v-stepper__step__step{
90
+ background-color: var(--v-error-darken1);
91
+ }
92
+ }
93
+ }
94
+ .v-stepper__content {
95
+ &:not(:last-child) {
96
+ border-left: 2px solid rgba(255, 255, 255, 0.8) !important;
97
+ }
98
+ }
99
+ }
100
+ }
101
+ ::v-deep{
102
+ .v-stepper__step {
103
+ height: 40px;
104
+ .v-stepper__label {
105
+ font-weight: 700;
106
+ text-shadow: none !important;
107
+ }
108
+ .v-stepper__step__step {
109
+ color: transparent;
110
+ position: relative;
111
+ &:before{
112
+ content: '\25cf';
113
+ color: var(--v-basic-base);
114
+ font-size: 18px;
115
+ position: absolute;
116
+ top: -9px;
117
+ }
118
+ }
119
+ &.v-stepper__step--error {
120
+ .v-stepper__step__step{
121
+ background-color: var(--v-error-base);
122
+ }
123
+ .v-stepper__label{
124
+ color: var(--v-error-base);
125
+ }
126
+ }
127
+ }
128
+ .v-stepper__content.v-stepper__wrapper {
129
+ margin: 4px 0;
130
+ }
131
+ }
132
+ }
133
+ </style>
@@ -0,0 +1,22 @@
1
+ <template>
2
+ <div />
3
+ </template>
4
+
5
+ <script>
6
+ export default {
7
+ name: 'ImageElementInjector',
8
+ props: {
9
+ element: {
10
+ type: [HTMLCanvasElement, HTMLImageElement],
11
+ required: true,
12
+ },
13
+ },
14
+ mounted() {
15
+ this.$el.replaceWith(this.element);
16
+ },
17
+ };
18
+ </script>
19
+
20
+ <style scoped>
21
+
22
+ </style>
@@ -40,6 +40,9 @@
40
40
  </style>
41
41
  <script>
42
42
  import { is } from '@vcsuite/check';
43
+ import {
44
+ VIcon, VList, VListItem, VListItemContent, VListItemIcon, VListItemTitle,
45
+ } from 'vuetify/lib';
43
46
  import VcsTooltip from '../notification/VcsTooltip.vue';
44
47
 
45
48
  /**
@@ -91,7 +94,15 @@
91
94
  */
92
95
  export default {
93
96
  name: 'VcsActionList',
94
- components: { VcsTooltip },
97
+ components: {
98
+ VcsTooltip,
99
+ VList,
100
+ VListItem,
101
+ VListItemIcon,
102
+ VIcon,
103
+ VListItemTitle,
104
+ VListItemContent,
105
+ },
95
106
  props: {
96
107
  actions: {
97
108
  type: Array,