@vcmap/ui 5.0.0-rc.21 → 5.0.0-rc.23

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 (153) hide show
  1. package/README.md +2 -2
  2. package/app.config.json +5 -0
  3. package/build/buildHelpers.js +1 -0
  4. package/build/buildPreview.js +2 -2
  5. package/build/commonViteConfig.js +1 -0
  6. package/config/aerowest.config.json +2 -0
  7. package/config/base.config.json +1 -0
  8. package/config/codes.config.json +2 -0
  9. package/config/dev.config.json +6 -0
  10. package/config/graphFeatureInfo.config.json +3 -1
  11. package/config/projects.config.json +27 -0
  12. package/config/www.config.json +27 -14
  13. package/dist/assets/cesium.js +1 -1
  14. package/dist/assets/{core.59d4d1.js → core.9342a1.js} +7912 -5474
  15. package/dist/assets/core.js +1 -1
  16. package/dist/assets/favicon.decf54cc.svg +10 -0
  17. package/dist/assets/index.fd041928.js +1 -0
  18. package/dist/assets/{ol.c1c512.js → ol.d2cba3.js} +12406 -12152
  19. package/dist/assets/ol.js +1 -1
  20. package/dist/assets/ui.c27597.css +5 -0
  21. package/dist/assets/{ui.80175f.js → ui.c27597.js} +6508 -5169
  22. package/dist/assets/ui.js +1 -1
  23. package/dist/assets/vue.js +2 -2
  24. package/dist/assets/vuetify.2f1432.css +5 -0
  25. package/dist/assets/{vuetify.efc158.js → vuetify.2f1432.js} +1 -1
  26. package/dist/assets/vuetify.js +2 -2
  27. package/dist/index.html +6 -1
  28. package/index.html +5 -0
  29. package/index.js +7 -3
  30. package/lib/olLib.js +15 -1
  31. package/package.json +5 -4
  32. package/plugins/@vcmap/project-selector/{ContextsListComponent.vue → ModulesListComponent.vue} +10 -10
  33. package/plugins/@vcmap/project-selector/ProjectSelectorComponent.vue +16 -16
  34. package/plugins/@vcmap/project-selector/README.md +15 -21
  35. package/plugins/@vcmap/project-selector/config.json +3 -3
  36. package/plugins/@vcmap/project-selector/de.json +3 -0
  37. package/plugins/@vcmap/project-selector/en.json +3 -0
  38. package/plugins/@vcmap/project-selector/index.js +76 -101
  39. package/plugins/@vcmap/simple-graph/index.js +1 -1
  40. package/plugins/@vcmap/theme-changer/ThemeChangerComponent.vue +10 -4
  41. package/plugins/@vcmap-show-case/category-tester/Categories.vue +2 -2
  42. package/plugins/@vcmap-show-case/category-tester/Category.vue +1 -4
  43. package/plugins/@vcmap-show-case/config-editor/editor.vue +14 -14
  44. package/plugins/@vcmap-show-case/form-inputs-example/FormInputsExample.vue +92 -81
  45. package/plugins/@vcmap-show-case/form-inputs-example/index.js +8 -3
  46. package/plugins/@vcmap-show-case/form-inputs-example/validation.js +1 -1
  47. package/plugins/@vcmap-show-case/list-example/ListExample.vue +5 -2
  48. package/plugins/@vcmap-show-case/table-example/DataTableExample.vue +202 -0
  49. package/plugins/@vcmap-show-case/table-example/README.md +3 -0
  50. package/plugins/@vcmap-show-case/table-example/index.js +47 -0
  51. package/plugins/@vcmap-show-case/table-example/package.json +5 -0
  52. package/plugins/@vcmap-show-case/wizard-example/wizardExample.vue +57 -23
  53. package/plugins/package.json +2 -1
  54. package/src/actions/actionHelper.js +16 -27
  55. package/src/actions/styleSelector.vue +26 -19
  56. package/src/application/VcsApp.vue +13 -5
  57. package/src/application/VcsAttributions.vue +2 -3
  58. package/src/application/VcsAttributionsFooter.vue +10 -16
  59. package/src/application/VcsNavbar.vue +1 -2
  60. package/src/application/VcsSettings.vue +21 -8
  61. package/src/assets/favicon-128.png +0 -0
  62. package/src/assets/favicon-180.png +0 -0
  63. package/src/assets/favicon-192.png +0 -0
  64. package/src/assets/favicon-32.png +0 -0
  65. package/src/assets/favicon.svg +10 -0
  66. package/src/components/buttons/VcsButton.vue +2 -3
  67. package/src/components/form-inputs-controls/VcsCheckbox.vue +46 -26
  68. package/src/components/form-inputs-controls/VcsDatePicker.vue +111 -0
  69. package/src/components/form-inputs-controls/VcsFormSection.vue +15 -13
  70. package/src/components/form-inputs-controls/VcsLabel.vue +10 -1
  71. package/src/components/form-inputs-controls/VcsRadio.vue +38 -18
  72. package/src/components/form-inputs-controls/VcsSelect.vue +117 -59
  73. package/src/components/form-inputs-controls/VcsTextArea.vue +101 -60
  74. package/src/components/form-inputs-controls/VcsTextField.vue +182 -69
  75. package/src/components/form-inputs-controls/VcsWizard.vue +23 -15
  76. package/src/components/form-inputs-controls/VcsWizardStep.vue +18 -16
  77. package/src/components/form-inputs-controls/composables.js +26 -0
  78. package/src/components/form-output/VcsFormattedNumber.vue +1 -1
  79. package/src/components/icons/2DDistanceIcon.vue +0 -3
  80. package/src/components/icons/3DDistanceIcon.vue +0 -3
  81. package/src/components/icons/3DHeightIcon.vue +0 -3
  82. package/src/components/icons/CheckboxCheckedIcon.vue +4 -11
  83. package/src/components/icons/CheckboxIcon.vue +9 -2
  84. package/src/components/icons/CheckboxIndeterminateIcon.vue +4 -21
  85. package/src/components/icons/CommentIcon.vue +1 -5
  86. package/src/components/icons/LegendIcon.vue +10 -60
  87. package/src/components/icons/ObliqueViewIcon.vue +6 -8
  88. package/src/components/icons/SimpleCircleOutlinedIcon.vue +1 -1
  89. package/src/components/icons/SplitViewIcon.vue +0 -4
  90. package/src/components/icons/ToolsIcon.vue +2 -4
  91. package/src/components/lists/VcsActionList.vue +0 -1
  92. package/src/components/lists/VcsList.vue +30 -30
  93. package/src/components/lists/VcsTreeview.vue +2 -2
  94. package/src/components/lists/VcsTreeviewLeaf.vue +3 -9
  95. package/src/components/lists/VcsTreeviewSearchbar.vue +4 -4
  96. package/src/components/notification/VcsBadge.vue +6 -2
  97. package/src/components/notification/VcsHelp.vue +39 -0
  98. package/src/components/tables/VcsDataTable.vue +386 -0
  99. package/src/components/tables/VcsTable.vue +55 -254
  100. package/src/contentTree/contentTreeCollection.js +1 -1
  101. package/src/contentTree/layerContentTreeItem.js +3 -0
  102. package/src/downloadHelper.js +49 -0
  103. package/src/featureInfo/AddressBalloonComponent.vue +1 -1
  104. package/src/featureInfo/BalloonComponent.vue +21 -15
  105. package/src/featureInfo/abstractFeatureInfoView.js +1 -1
  106. package/src/featureInfo/featureInfo.js +27 -9
  107. package/src/featureInfo/tableFeatureInfoView.js +4 -0
  108. package/src/i18n/de.js +13 -1
  109. package/src/i18n/en.js +13 -1
  110. package/src/i18n/i18nCollection.js +22 -22
  111. package/src/init.js +90 -7
  112. package/src/legend/styleLegendItem.vue +24 -2
  113. package/src/legend/vcsLegend.vue +24 -31
  114. package/src/manager/categoryManager/CategoryComponent.vue +56 -47
  115. package/src/manager/categoryManager/CategoryManager.vue +23 -10
  116. package/src/manager/categoryManager/categoryManager.js +11 -11
  117. package/src/manager/navbarManager.js +18 -0
  118. package/src/manager/toolbox/GroupToolboxComponent.vue +2 -3
  119. package/src/manager/toolbox/SelectToolboxComponent.vue +11 -5
  120. package/src/manager/toolbox/ToolboxManager.vue +0 -7
  121. package/src/manager/window/WindowComponent.vue +10 -16
  122. package/src/manager/window/WindowComponentHeader.vue +6 -4
  123. package/src/manager/window/WindowManager.vue +14 -15
  124. package/src/manager/window/windowHelper.js +1 -1
  125. package/src/manager/window/windowManager.js +18 -7
  126. package/src/navigation/mapNavCompass.vue +1 -1
  127. package/src/navigation/mapNavigation.vue +6 -6
  128. package/src/navigation/obliqueRotation.vue +36 -13
  129. package/src/navigation/orientationToolsButton.vue +0 -1
  130. package/src/navigation/overviewMap.js +11 -20
  131. package/src/navigation/tiltSlider.vue +30 -6
  132. package/src/navigation/vcsZoomButton.vue +37 -11
  133. package/src/pluginHelper.js +20 -0
  134. package/src/search/resultsComponent.vue +0 -1
  135. package/src/search/search.js +19 -20
  136. package/src/search/searchComponent.vue +21 -7
  137. package/src/state.js +6 -6
  138. package/src/styles/_theming.scss +72 -3
  139. package/src/styles/_typography.scss +0 -5
  140. package/src/styles/main.scss +1 -0
  141. package/src/styles/shades.scss +2 -0
  142. package/src/styles/variables.scss +40 -4
  143. package/src/uiConfig.js +4 -3
  144. package/src/vcsUiApp.js +49 -40
  145. package/src/vuePlugins/i18n.js +1 -0
  146. package/src/vuePlugins/vuetify.js +59 -13
  147. package/start.js +8 -2
  148. package/dist/assets/index.a3861d4e.js +0 -1
  149. package/dist/assets/ui.80175f.css +0 -1
  150. package/dist/assets/vuetify.efc158.css +0 -5
  151. package/map.config.json +0 -44
  152. /package/dist/assets/{cesium.49585c.js → cesium.166f91.js} +0 -0
  153. /package/dist/assets/{vue.a08ab1.js → vue.5d00e9.js} +0 -0
@@ -0,0 +1,26 @@
1
+ import { computed } from 'vue';
2
+
3
+ /**
4
+ * Syncs the error and validation state with the underlying vuetify component.
5
+ * @param {Ref<any>} elementRef The template ref to the base vuetify component.
6
+ * @returns {Ref<string>} Error message to display. Is empty string if either there are no error messages or if the validation errors are not displayed because
7
+ * no interaction with the component or validation was reset by form. Validation errors have precedence over custom error messages.
8
+ */
9
+ // eslint-disable-next-line import/prefer-default-export
10
+ export function useErrorSync(elementRef) {
11
+ const errorMessage = computed(() => {
12
+ // if element is already mounted
13
+ if (elementRef.value) {
14
+ // errorMessages of selectField can either be (empty) array or string. Makes sure it is array.
15
+ const customErrorMessages = Array.isArray(elementRef.value.errorMessages) ?
16
+ elementRef.value.errorMessages : [elementRef.value.errorMessages];
17
+ // if validationState is 'error' (reset button removes this) or if there is errorMessages prop
18
+ if (elementRef.value.validationState === 'error' || !!customErrorMessages.length) {
19
+ // custom errorMessages are displayed when all validation error are solved.
20
+ return [...elementRef.value.errorBucket, ...customErrorMessages][0] || '';
21
+ }
22
+ }
23
+ return '';
24
+ });
25
+ return errorMessage;
26
+ }
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <span class="vcs-formatted-number" :class="{'vcs-formatted-number-dense': dense}">
2
+ <span class="vcs-formatted-number px-1" :class="{'vcs-formatted-number-dense': dense}">
3
3
  {{ formatted }}
4
4
  <span v-if="unit === SpecialUnits.SQM">
5
5
  m<sup>2</sup>
@@ -10,9 +10,6 @@
10
10
  d="M10956.373,13156.8h-11.986a1.387,1.387,0,0,1-1.387-1.39v-3.467a1.386,1.386,0,0,1,1.387-1.387h19.1a1.387,1.387,0,0,1,1.388,1.387v3.467a1.387,1.387,0,0,1-1.388,1.39Zm-11.986-4.51v2.773a.349.349,0,0,0,.347.347h18.411a.346.346,0,0,0,.347-.347v-2.773a.346.346,0,0,0-.347-.347h-2.255a.347.347,0,0,0-.347.347v.693a.52.52,0,0,1-1.04,0v-.693a.347.347,0,0,0-.347-.347h-.693a.35.35,0,0,0-.351.347v.693a.52.52,0,0,1-1.04,0v-.693a.346.346,0,0,0-.347-.347h-.71a.347.347,0,0,0-.347.347v.693a.52.52,0,0,1-1.04,0v-.693a.347.347,0,0,0-.347-.347h-.693a.347.347,0,0,0-.347.347v.693a.52.52,0,0,1-1.04,0v-.693a.347.347,0,0,0-.347-.347h-.7a.347.347,0,0,0-.347.347v.693a.52.52,0,0,1-1.04,0v-.693a.347.347,0,0,0-.347-.347h-.7a.343.343,0,0,0-.343.347v.693a.522.522,0,0,1-1.044,0v-.693a.347.347,0,0,0-.347-.347h-2.255A.349.349,0,0,0,10944.387,13152.286Zm.7,1.387a.694.694,0,1,1,.693.693A.693.693,0,0,1,10945.083,13153.673Zm17.382-5.376v-.35a.347.347,0,0,0-.347-.347h-16.342a.347.347,0,0,0-.347.347v.35a.522.522,0,0,1-.891.366l-1.388-1.387a.525.525,0,0,1,0-.736l1.388-1.387a.52.52,0,0,1,.891.367v.347a.347.347,0,0,0,.347.347h16.342a.347.347,0,0,0,.347-.347v-.347a.52.52,0,0,1,.888-.367l1.388,1.387a.519.519,0,0,1,0,.736l-1.388,1.387a.52.52,0,0,1-.888-.366Z"
11
11
  transform="translate(-10942 -13142.48)"
12
12
  fill="currentColor"
13
- stroke="rgba(0,0,0,0)"
14
- stroke-miterlimit="10"
15
- stroke-width="1"
16
13
  />
17
14
  </svg>
18
15
  </template>
@@ -10,9 +10,6 @@
10
10
  d="M10956.373,13156.8h-11.986a1.387,1.387,0,0,1-1.387-1.39v-3.467a1.386,1.386,0,0,1,1.387-1.387h19.1a1.387,1.387,0,0,1,1.388,1.387v3.467a1.387,1.387,0,0,1-1.388,1.39Zm-11.986-4.51v2.773a.349.349,0,0,0,.347.347h18.411a.346.346,0,0,0,.347-.347v-2.773a.346.346,0,0,0-.347-.347h-2.255a.347.347,0,0,0-.347.347v.693a.52.52,0,0,1-1.04,0v-.693a.347.347,0,0,0-.347-.347h-.693a.35.35,0,0,0-.351.347v.693a.52.52,0,0,1-1.04,0v-.693a.346.346,0,0,0-.347-.347h-.71a.347.347,0,0,0-.347.347v.693a.52.52,0,0,1-1.04,0v-.693a.347.347,0,0,0-.347-.347h-.693a.347.347,0,0,0-.347.347v.693a.52.52,0,0,1-1.04,0v-.693a.347.347,0,0,0-.347-.347h-.7a.347.347,0,0,0-.347.347v.693a.52.52,0,0,1-1.04,0v-.693a.347.347,0,0,0-.347-.347h-.7a.343.343,0,0,0-.343.347v.693a.522.522,0,0,1-1.044,0v-.693a.347.347,0,0,0-.347-.347h-2.255A.349.349,0,0,0,10944.387,13152.286Zm.7,1.387a.694.694,0,1,1,.693.693A.693.693,0,0,1,10945.083,13153.673Zm17.382-5.376v-.35a.347.347,0,0,0-.347-.347h-16.342a.347.347,0,0,0-.347.347v.35a.522.522,0,0,1-.891.366l-1.388-1.387a.525.525,0,0,1,0-.736l1.388-1.387a.52.52,0,0,1,.891.367v.347a.347.347,0,0,0,.347.347h16.342a.347.347,0,0,0,.347-.347v-.347a.52.52,0,0,1,.888-.367l1.388,1.387a.519.519,0,0,1,0,.736l-1.388,1.387a.52.52,0,0,1-.888-.366Z"
11
11
  transform="translate(-10942 -13140.795)"
12
12
  fill="currentColor"
13
- stroke="rgba(0,0,0,0)"
14
- stroke-miterlimit="10"
15
- stroke-width="1"
16
13
  />
17
14
  </svg>
18
15
  </template>
@@ -10,9 +10,6 @@
10
10
  d="M10944.387,13167.025a1.387,1.387,0,0,1-1.388-1.388v-19.106a1.387,1.387,0,0,1,1.388-1.388h3.47a1.388,1.388,0,0,1,1.389,1.388v19.106a1.388,1.388,0,0,1-1.389,1.388Zm0-20.147v18.41a.349.349,0,0,0,.348.35h2.775a.349.349,0,0,0,.347-.35v-2.254a.348.348,0,0,0-.347-.348h-.694a.52.52,0,0,1,0-1.04h.694a.346.346,0,0,0,.347-.344v-.7a.347.347,0,0,0-.347-.348h-.694a.521.521,0,0,1,0-1.041h.694a.347.347,0,0,0,.347-.347v-.707a.35.35,0,0,0-.347-.351h-.694a.519.519,0,0,1,0-1.037h.694a.349.349,0,0,0,.347-.347v-.694a.347.347,0,0,0-.347-.347h-.694a.521.521,0,0,1,0-1.041h.694a.347.347,0,0,0,.347-.348v-.7a.347.347,0,0,0-.347-.348h-.694a.52.52,0,0,1,0-1.04h.694a.347.347,0,0,0,.347-.344v-.7a.344.344,0,0,0-.347-.344h-.694a.522.522,0,0,1,0-1.045h.694a.346.346,0,0,0,.347-.343v-2.258a.349.349,0,0,0-.347-.347h-2.775A.349.349,0,0,0,10944.387,13146.878Zm8.338,19.863-1.389-1.388a.521.521,0,0,1,.367-.889h.347a.347.347,0,0,0,.348-.347v-16.345a.347.347,0,0,0-.348-.344h-.347a.51.51,0,0,1-.367-.155.518.518,0,0,1,0-.733l1.389-1.388a.518.518,0,0,1,.736,0l1.385,1.388a.506.506,0,0,1,.152.367.52.52,0,0,1-.52.521h-.347a.347.347,0,0,0-.347.344v16.345a.347.347,0,0,0,.347.347h.347a.521.521,0,0,1,.367.889l-1.385,1.388a.523.523,0,0,1-.369.151A.513.513,0,0,1,10952.725,13166.741Zm-7.3-18.822a.694.694,0,1,1,.694.694A.694.694,0,0,1,10945.428,13147.919Z"
11
11
  transform="translate(-10942 -13144.023)"
12
12
  fill="currentColor"
13
- stroke="rgba(0,0,0,0)"
14
- stroke-miterlimit="10"
15
- stroke-width="1"
16
13
  />
17
14
  </svg>
18
15
  </template>
@@ -1,16 +1,9 @@
1
1
  <!-- eslint-disable max-len -->
2
2
 
3
3
  <template>
4
- <svg id="icon-checkbox-check" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
5
- <rect
6
- id="bg"
7
- width="12"
8
- height="12"
9
- rx="1"
10
- transform="translate(2 2)"
11
- fill="rgba(34,34,34,0.8)"
12
- />
13
- <path id="hook" d="M13.525,6.363a.776.776,0,0,0-1.1.171h0L8.68,11.741,6.3,9.789a.778.778,0,0,0-1.108.15.825.825,0,0,0,.121,1.114l3.021,2.478a.784.784,0,0,0,1.12-.141l.009-.012L13.695,7.5a.824.824,0,0,0-.17-1.132Z" transform="translate(-1.364 -1.831)" fill="#fff" />
14
- <rect id="size" width="16" height="16" fill="none" />
4
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
5
+ <g id="icon-checkbox-check">
6
+ <path fill="currentColor" d="m13,2H3c-.55,0-1,.45-1,1v10c0,.55.45,1,1,1h10c.55,0,1-.45,1-1V3c0-.55-.45-1-1-1Zm-.67,3.67l-4.23,5.88h0s-.01.03-.02.03c-.27.34-.77.39-1.1.12l-3.02-2.48c-.33-.28-.38-.77-.12-1.11,0,0,.01-.01.02-.02.27-.34.76-.4,1.09-.13l2.38,1.95,3.74-5.21s0-.01.01-.02c.26-.34.74-.41,1.09-.15h0c.35.27.43.78.17,1.14Z" />
7
+ </g>
15
8
  </svg>
16
9
  </template>
@@ -1,11 +1,18 @@
1
1
  <template>
2
- <svg id="icon-checkbox-uncheck" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2
+ <svg
3
+ id="icon-checkbox-uncheck"
4
+ xmlns="http://www.w3.org/2000/svg"
5
+ width="16"
6
+ height="16"
7
+ viewBox="0 0 16 16"
8
+ >
3
9
  <g
4
10
  id="Rectangle_749"
5
11
  data-name="Rectangle 749"
6
12
  transform="translate(2 2)"
7
13
  fill="none"
8
- stroke="#cecece"
14
+ stroke="currentColor"
15
+ stroke-opacity="0.4"
9
16
  stroke-width="1"
10
17
  >
11
18
  <rect width="12" height="12" rx="2" stroke="none" />
@@ -1,24 +1,7 @@
1
+ <!-- eslint-disable max-len -->
2
+
1
3
  <template>
2
- <svg id="icon-checkbox-half" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
3
- <rect
4
- id="Rectangle_123"
5
- data-name="Rectangle 123"
6
- width="12"
7
- height="12"
8
- rx="1"
9
- transform="translate(2 2)"
10
- fill="rgba(34,34,34,0.8)"
11
- />
12
- <line
13
- id="Line_84"
14
- data-name="Line 84"
15
- x2="4"
16
- transform="translate(6 8)"
17
- fill="none"
18
- stroke="#fff"
19
- stroke-linecap="round"
20
- stroke-width="2"
21
- />
22
- <rect id="size" width="16" height="16" fill="none" />
4
+ <svg id="icon-checkbox-half" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
5
+ <path fill="currentColor" d="m13,2H3c-.55,0-1,.45-1,1v10c0,.55.45,1,1,1h10c.55,0,1-.45,1-1V3c0-.55-.45-1-1-1Zm-3,7h-4c-.55,0-1-.45-1-1s.45-1,1-1h4c.55,0,1,.45,1,1s-.45,1-1,1Z" />
23
6
  </svg>
24
7
  </template>
@@ -1,7 +1,7 @@
1
1
  <!-- eslint-disable max-len -->
2
2
 
3
3
  <template>
4
- <svg xmlns="http://www.w3.org/2000/svg" width="24.999" height="24" viewBox="0 0 24.999 24">
4
+ <svg xmlns="http://www.w3.org/2000/svg" width="25" height="24" viewBox="0 0 25 24">
5
5
  <g id="icon_24_comment" transform="translate(0.5)">
6
6
  <path
7
7
  id="Union_51"
@@ -9,11 +9,7 @@
9
9
  d="M6.381.477V4.287H3.523l-.03,0H3.487A1.39,1.39,0,0,0,2.1,5.665V7.959a4.11,4.11,0,0,1,.9-.1,4.207,4.207,0,0,1,1.1.146V6.287H8.381v-2.9L12.06,5.93l.513.357H22V18H4.1V15.988a4.176,4.176,0,0,1-1.1.146,4.13,4.13,0,0,1-.9-.1v2.536A1.429,1.429,0,0,0,3.523,20H22.571A1.432,1.432,0,0,0,24,18.571V5.714a1.43,1.43,0,0,0-1.428-1.427H13.2L7.129.086a.475.475,0,0,0-.748.391ZM0,12A3,3,0,1,0,3,9,3,3,0,0,0,0,12Z"
10
10
  transform="translate(23.999 22.997) rotate(180)"
11
11
  fill="currentColor"
12
- stroke="rgba(0,0,0,0)"
13
- stroke-miterlimit="10"
14
- stroke-width="1"
15
12
  />
16
- <rect id="size" width="24" height="24" fill="none" />
17
13
  </g>
18
14
  </svg>
19
15
  </template>
@@ -1,65 +1,15 @@
1
1
  <!-- eslint-disable max-len -->
2
2
  <template>
3
- <svg id="icon_24_legend" xmlns="http://www.w3.org/2000/svg" width="24" height="25.523" viewBox="0 0 24 25.523">
4
- <rect id="size" width="24" height="24" transform="translate(0 1.523)" fill="none" />
5
- <g id="Group_1711" data-name="Group 1711" transform="translate(-712 -904)">
6
- <rect
7
- id="size-2"
8
- data-name="size"
9
- width="24"
10
- height="24"
11
- transform="translate(712 904.521)"
12
- fill="none"
13
- />
14
- <rect
15
- id="Rectangle_747"
16
- data-name="Rectangle 747"
17
- width="6.677"
18
- height="6.677"
19
- rx="2"
20
- transform="translate(713 921.323)"
21
- fill="currentColor"
22
- />
23
- <path id="Polygon_8" data-name="Polygon 8" d="M3.474,0,6.947,5.955H0Z" transform="translate(713 904)" fill="currentColor" />
24
- <circle
25
- id="Ellipse_88"
26
- data-name="Ellipse 88"
27
- cx="3.338"
28
- cy="3.338"
29
- r="3.338"
30
- transform="translate(713 912.677)"
31
- fill="currentColor"
32
- />
33
- <line
34
- id="Line_297"
35
- data-name="Line 297"
36
- x2="9"
37
- transform="translate(724 907.978)"
38
- fill="none"
39
- stroke="currentColor"
40
- stroke-linecap="round"
41
- stroke-width="3"
42
- />
43
- <line
44
- id="Line_298"
45
- data-name="Line 298"
46
- x2="9"
47
- transform="translate(724 916.016)"
48
- fill="none"
49
- stroke="currentColor"
50
- stroke-linecap="round"
51
- stroke-width="3"
52
- />
53
- <line
54
- id="Line_299"
55
- data-name="Line 299"
56
- x2="9"
57
- transform="translate(724 924.053)"
58
- fill="none"
59
- stroke="currentColor"
60
- stroke-linecap="round"
61
- stroke-width="3"
62
- />
3
+ <svg id="icon_24_legend" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
4
+ <g transform="translate(-438 -549)">
5
+ <g fill="currentColor">
6
+ <path d="M446.8,562.318a2.87,2.87,0,0,0-4.052,0l-1.766,1.765a2.87,2.87,0,0,0,0,4.053l1.766,1.765a2.868,2.868,0,0,0,4.052,0l1.766-1.765a2.87,2.87,0,0,0,0-4.053Zm.352,4.4-1.766,1.765a.865.865,0,0,1-1.224,0l-1.766-1.765a.869.869,0,0,1,0-1.225l1.766-1.765a.867.867,0,0,1,1.224,0l1.765,1.765A.868.868,0,0,1,447.155,566.722Z" />
7
+ <path d="M445.642,551.372a1,1,0,0,0-1.728,0l-4.156,7.124a1,1,0,0,0,.864,1.5h8.311a1,1,0,0,0,.863-1.5ZM442.363,558l2.415-4.14,2.414,4.14Z" />
8
+ <path d="M459,563h-7a1,1,0,0,0,0,2h7a1,1,0,0,0,0-2Z" />
9
+ <path d="M459,567h-7a1,1,0,0,0,0,2h7a1,1,0,0,0,0-2Z" />
10
+ <path d="M452,554h7a1,1,0,0,0,0-2h-7a1,1,0,0,0,0,2Z" />
11
+ <path d="M459,556h-7a1,1,0,0,0,0,2h7a1,1,0,0,0,0-2Z" />
12
+ </g>
63
13
  </g>
64
14
  </svg>
65
15
  </template>
@@ -1,13 +1,11 @@
1
1
  <!-- eslint-disable max-len -->
2
2
  <template>
3
3
  <svg id="icon_24_oblique" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
4
- <rect id="size" width="24" height="24" fill="none" />
5
- <path
6
- id="Pfad_751"
7
- data-name="Pfad 751"
8
- d="M650,461H636a1,1,0,0,0-.707.293l-4,4A1,1,0,0,0,631,466v14a1,1,0,0,0,1,1h14a1,1,0,0,0,.707-.293l4-4A1,1,0,0,0,651,476V462A1,1,0,0,0,650,461Zm-1,14h-2v-8.586l2-2Zm-1.414,2-.586.586V477ZM635,475.586l-2,2V467h2ZM634.414,465l.586-.586V465ZM637,467h8v8h-8Zm10.586-4-2,2H637v-2Zm-13.172,16,2-2H645v2Z"
9
- transform="translate(-629 -459)"
10
- fill="currentColor"
11
- />
4
+ <rect width="24" height="24" fill="none" />
5
+ <g transform="translate(1 2.994)">
6
+ <g>
7
+ <path d="M19.769.862A1,1,0,0,0,18.778,0H3.222a1,1,0,0,0-.99.862l-2.222,16A1,1,0,0,0,1,18H21a1,1,0,0,0,.991-1.138ZM4.093,2H17.908l1.208,8.7L14.921,7.657a1,1,0,0,0-1.278.086L4.988,16H2.149ZM7.886,16l6.535-6.235L19.5,13.446,19.852,16Zm.753-7.6a2.876,2.876,0,0,0,3.083-2.6A2.841,2.841,0,0,0,8.639,3.2,2.841,2.841,0,0,0,5.556,5.8,2.876,2.876,0,0,0,8.639,8.4m0-3.2c.662,0,1.083.355,1.083.6s-.421.6-1.083.6-1.083-.355-1.083-.6.422-.6,1.083-.6" fill="currentColor" />
8
+ </g>
9
+ </g>
12
10
  </svg>
13
11
  </template>
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <svg xmlns="http://www.w3.org/2000/svg" width="8" height="8" viewBox="0 0 8 8">
3
- <g id="Rectangle_750" data-name="Rectangle 750" fill="none" stroke="#585858" stroke-width="2">
3
+ <g id="Rectangle_750" data-name="Rectangle 750" fill="none" stroke="currentColor" stroke-width="2">
4
4
  <rect width="8" height="8" rx="4" stroke="none" />
5
5
  <rect
6
6
  x="1"
@@ -9,11 +9,7 @@
9
9
  d="M10942,13196v-22a1,1,0,1,1,2,0v22a1,1,0,1,1-2,0Zm9.5-9.25v-.5a.5.5,0,0,0-.5-.5h-4v-2h4a.5.5,0,0,0,.5-.5v-.5a.75.75,0,0,1,1.281-.53l2,2a.747.747,0,0,1,0,1.06l-2,2a.757.757,0,0,1-.529.218A.748.748,0,0,1,10951.5,13186.75Zm-18.279.53-2-2a.75.75,0,0,1,0-1.063l2-2a.736.736,0,0,1,.526-.219.747.747,0,0,1,.752.749v.5a.5.5,0,0,0,.5.5h4v2h-4a.5.5,0,0,0-.5.5v.5a.763.763,0,0,1-.218.534.754.754,0,0,1-1.061,0Zm5.779-1.53Zm8-2Z"
10
10
  transform="translate(-10931 -13172.998)"
11
11
  fill="currentColor"
12
- stroke="rgba(0,0,0,0)"
13
- stroke-miterlimit="10"
14
- stroke-width="1"
15
12
  />
16
- <rect id="size" width="24" height="24" fill="none" />
17
13
  </g>
18
14
  </svg>
19
15
  </template>
@@ -1,9 +1,7 @@
1
1
  <!-- eslint-disable max-len -->
2
2
  <template>
3
3
  <svg id="icon_24_tools" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
4
- <g id="Gruppe_1966" transform="translate(-500.726 -577.125)">
5
- <path id="Pfad_763" d="M519,578h-6a1,1,0,0,0-1,1v20a1,1,0,0,0,1,1h6a1,1,0,0,0,1-1V579A1,1,0,0,0,519,578Zm-1,20h-4v-2h1a1,1,0,0,0,0-2h-1v-2h1a1,1,0,0,0,0-2h-1v-2h1a1,1,0,0,0,0-2h-1v-2h1a1,1,0,0,0,0-2h-1v-2h4Z" transform="translate(0.726 0.125)" fill="currentColor" />
6
- <path id="Pfad_764" d="M507.363,580.719a1,1,0,0,0-1.827,0l-2,4.5a1,1,0,0,0-.086.406v11.5a3,3,0,0,0,6,0v-11.5a1,1,0,0,0-.087-.406Zm-1.913,6.9h2v7.511h-2Zm1-4.027.9,2.027h-1.8Zm0,14.538a1,1,0,0,1-1-1h2A1,1,0,0,1,506.45,598.125Z" transform="translate(0.275)" fill="currentColor" />
7
- </g>
4
+ <rect width="24" height="24" fill="none" />
5
+ <path d="M86.444,100.021l.363-.363a4.962,4.962,0,0,0,5.509-6.213,1,1,0,0,0-1.674-.451l-1.021,1.021a1.024,1.024,0,0,1-1.415,0,1,1,0,0,1,0-1.414l1.022-1.021a1,1,0,0,0-.451-1.674,4.962,4.962,0,0,0-6.213,5.51l-.363.363-3.03-3.03a1.008,1.008,0,0,0-.348-.227l-4.6-1.767a1,1,0,0,0-1.292,1.293l1.768,4.6a1,1,0,0,0,.226.348l3.03,3.03-.766.766A4.963,4.963,0,0,0,71.683,107a1,1,0,0,0,.707.71,1.016,1.016,0,0,0,.968-.259l1.02-1.021a1,1,0,1,1,1.415,1.414l-1.022,1.021a1,1,0,0,0,.452,1.674,5.045,5.045,0,0,0,1.286.167,4.951,4.951,0,0,0,4.926-5.677l.766-.766,4.394,4.395a3,3,0,0,0,4.244-4.242Zm-8.765-5.8L76.4,95.5l-.8-2.069Zm.07,2.757,1.414-1.414,1.624,1.624-1.414,1.414Zm1.895,7.01a1,1,0,0,0-.26.962,2.969,2.969,0,0,1-1.588,3.472,3,3,0,0,0-4-4,2.969,2.969,0,0,1,3.472-1.59,1,1,0,0,0,.963-.26l6.127-6.127a1,1,0,0,0,.259-.962A2.972,2.972,0,0,1,86.2,92.018a3.006,3.006,0,0,0,.589,3.412,3.068,3.068,0,0,0,3.412.588,2.966,2.966,0,0,1-3.471,1.588,1,1,0,0,0-.963.26Zm9.78,3.251a1.022,1.022,0,0,1-1.414,0l-4.4-4.4,1.415-1.414,4.394,4.4a1,1,0,0,1,0,1.414" transform="translate(-69.515 -87.739)" fill="currentColor" />
8
6
  </svg>
9
7
  </template>
@@ -12,7 +12,6 @@
12
12
  <template #activator="{ on, attrs }">
13
13
  <v-list-item
14
14
  :class="action.active ? 'primary--text' : ''"
15
- color="primary"
16
15
  @click="action.callback($event)"
17
16
  v-bind="{...$attrs, ...attrs}"
18
17
  v-on="{...$listeners, ...on}"
@@ -17,12 +17,19 @@
17
17
  <v-list-item-action
18
18
  v-if="selectable"
19
19
  >
20
+ <v-spacer v-if="singleSelect" />
20
21
  <v-icon
21
- v-if="selected.length === renderingItems.length"
22
+ v-else-if="selected.length === renderingItems.length"
22
23
  @click="clear"
23
24
  >
24
25
  mdi-check-circle-outline
25
26
  </v-icon>
27
+ <v-icon
28
+ v-else-if="selected.length > 0 && selected.length < renderingItems.length"
29
+ @click="selectAll()"
30
+ >
31
+ mdi-minus-circle-outline
32
+ </v-icon>
26
33
  <v-icon
27
34
  v-else
28
35
  @click="selectAll()"
@@ -52,7 +59,6 @@
52
59
  :block-overflow="true"
53
60
  :overflow-count="actionButtonListOverflowCount"
54
61
  small
55
- right
56
62
  />
57
63
  </v-list-item-content>
58
64
  </v-list-item>
@@ -64,6 +70,7 @@
64
70
  @mousedown.shift="$event.preventDefault()"
65
71
  @mouseover="hovering = index"
66
72
  @mouseout="hovering = null"
73
+ :class="{ 'v-list-item__lighten_even': lightenEven, 'v-list-item__lighten_odd': !lightenEven }"
67
74
  >
68
75
  <v-list-item-action
69
76
  v-if="selectable"
@@ -112,7 +119,6 @@
112
119
  :block-overflow="true"
113
120
  :overflow-count="actionButtonListOverflowCount"
114
121
  small
115
- right
116
122
  />
117
123
  </v-list-item-content>
118
124
  </v-list-item>
@@ -129,6 +135,7 @@
129
135
  VListItemAction,
130
136
  VIcon,
131
137
  VListItemTitle,
138
+ VSpacer,
132
139
  } from 'vuetify/lib';
133
140
  import VcsActionButtonList from '../buttons/VcsActionButtonList.vue';
134
141
  import VcsTooltip from '../notification/VcsTooltip.vue';
@@ -182,6 +189,7 @@
182
189
  VListItemAction,
183
190
  VIcon,
184
191
  VListItemTitle,
192
+ VSpacer,
185
193
  },
186
194
  props: {
187
195
  /** @type {Array<VcsListItem>} */
@@ -246,6 +254,9 @@
246
254
  /** @type {import("vue").Ref<string>} */
247
255
  const query = ref('');
248
256
  const hovering = ref(null);
257
+ const lightenEven = computed(() => {
258
+ return !(!props.searchable && !props.showTitle);
259
+ });
249
260
  let firstSelected = null;
250
261
 
251
262
  watch(props, () => {
@@ -281,6 +292,7 @@
281
292
  return {
282
293
  query,
283
294
  hovering,
295
+ lightenEven,
284
296
  /**
285
297
  * @type {import("vue").ComputedRef<Array<VcsListItem>>}
286
298
  */
@@ -418,39 +430,27 @@
418
430
 
419
431
  <style lang="scss" scoped>
420
432
  ::v-deep {
421
- .v-list{
433
+ .v-list {
434
+ .v-list-item__lighten_even {
435
+ &:nth-child(even) {
436
+ background-color: var(--v-base-lighten4);
437
+ }
438
+ }
439
+ .v-list-item__lighten_odd {
440
+ &:nth-child(odd) {
441
+ background-color: var(--v-base-lighten4);
442
+ }
443
+ }
422
444
  .v-list-item {
423
445
  padding: 4px 8px 4px 16px;
424
446
  &:after{
425
447
  display: none;
426
448
  }
427
- &.font-weight-bold{
428
- .v-list-item__title{
449
+ &.font-weight-bold {
450
+ .v-list-item__title {
429
451
  font-weight: 700;
430
452
  }
431
453
  }
432
- &.v-list-item--active{
433
- padding: 4px 8px 3px 16px;
434
- &.theme--light{
435
- background-color: var(--v-primary-base);
436
- border-bottom: 1px solid var(--v-primary-darken1);
437
- }
438
- }
439
- &.v-list-item.theme--dark{
440
- &.v-list-item--active{
441
- background-color: var(--v-primary-darken1);
442
- border-bottom: 1px solid var(--v-primary-darken2);
443
- &:nth-child(even){
444
- background-color: var(--v-primary-darken1);
445
- }
446
- }
447
- &:nth-child(even){
448
- background-color: rgba(255, 255, 255, 0.15);
449
- }
450
- }
451
- &:nth-child(even) {
452
- background-color: var(--v-accent-base);
453
- }
454
454
  .v-list-item__action {
455
455
  .v-icon {
456
456
  font-size: 16px;
@@ -463,9 +463,9 @@
463
463
  .action-btn-wrap {
464
464
  flex: 1 1 auto;
465
465
  }
466
- .v-icon{
466
+ .v-icon {
467
467
  font-size: 16px;
468
- .v-icon__component{
468
+ .v-icon__component {
469
469
  width: 16px;
470
470
  height: 16px;
471
471
  }
@@ -32,8 +32,8 @@
32
32
  min-height: 40px;
33
33
  }
34
34
  // Border around root nodes with children included
35
- > .v-treeview-node {
36
- border-bottom: 1px solid var(--v-gray-200-base);
35
+ > .v-treeview-node:not(:last-child) {
36
+ border-bottom: 1px solid var(--v-base-lighten2);
37
37
  }
38
38
  // Only Root Entries have a bold font
39
39
  > .v-treeview-node > .v-treeview-node__root > .v-treeview-node__content > .v-treeview-node__label {
@@ -4,10 +4,11 @@
4
4
  v-if="item"
5
5
  >
6
6
  <div
7
- class="position-relative col-8 pa-0 d-flex align-center vcs-treeview-leaf"
7
+ class="position-relative col-8 pa-0 d-flex align-center"
8
8
  >
9
9
  <span
10
10
  v-if="item.icon"
11
+ class="d-inline-flex"
11
12
  >
12
13
  <v-icon
13
14
  v-if="isStringIcon"
@@ -24,7 +25,7 @@
24
25
  <span
25
26
  v-bind="attrs"
26
27
  v-on="on"
27
- class="vcs-treeview-item-title"
28
+ class="d-inline-block text-truncate"
28
29
  >{{ $t(item.title) }}</span>
29
30
  </template>
30
31
  </VcsTooltip>
@@ -41,13 +42,6 @@
41
42
  />
42
43
  </div>
43
44
  </template>
44
- <style lang="css" scoped>
45
- .vcs-treeview-leaf .vcs-treeview-item-title{
46
- white-space: nowrap;
47
- overflow: hidden;
48
- text-overflow: ellipsis;
49
- }
50
- </style>
51
45
 
52
46
  <script>
53
47
  import { computed } from 'vue';
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <div class="pa-2 accent position-relative d-flex flex-row justify-space-between align-center">
2
+ <div class="pa-2 base lighten-3 position-relative d-flex flex-row justify-space-between align-center rounded-0">
3
3
  <slot name="prepend">
4
4
  <v-icon
5
5
  class="search-icon my-0 ml-1"
@@ -14,7 +14,7 @@
14
14
  solo
15
15
  dense
16
16
  hide-details
17
- class="searchbar outlined rounded-xl align-center d-flex justify-center white pa-1 pl-6"
17
+ class="searchbar outlined rounded-xl align-center d-flex justify-center base lighten-4 pa-1 pl-6"
18
18
  :placeholder="$t(placeholder)"
19
19
  :value="value"
20
20
  v-on="$listeners"
@@ -44,7 +44,7 @@
44
44
  border-radius: 9999rem;
45
45
  outline-style: none;
46
46
  font-size: 12px;
47
- box-shadow: 0 0 0 1px #dedede;
47
+ box-shadow: 0 0 0 1px var(--v-base-lighten2);
48
48
 
49
49
  &:focus {
50
50
  box-shadow: 0 0 0 1px var(--v-primary-base);
@@ -81,7 +81,7 @@
81
81
  .v-input.outlined {
82
82
  outline-style: none;
83
83
  font-size: 12px;
84
- box-shadow: 0 0 0 1px #dedede;
84
+ box-shadow: 0 0 0 1px var(--v-base-lighten2);
85
85
 
86
86
  &:focus,
87
87
  &.v-input--is-focused {
@@ -3,9 +3,13 @@
3
3
  </template>
4
4
 
5
5
  <style lang="scss" scoped>
6
- .v-application .badge {
7
- border: 1px solid var(--v-basic-base) !important;
6
+ @import '../../styles/shades.scss';
7
+ .v-application .theme--light .badge {
8
+ border: 1px solid map-get($shades, 'white') !important;
8
9
  }
10
+ .v-application .theme--dark .badge {
11
+ border: 1px solid map-get($shades, 'black') !important;
12
+ }
9
13
  </style>
10
14
 
11
15
 
@@ -0,0 +1,39 @@
1
+ <template>
2
+ <v-alert
3
+ :value="show"
4
+ dense
5
+ text
6
+ class="mb-0 font-weight-regular rounded-0 px-2 pt-2"
7
+ >
8
+ <slot>
9
+ <span>{{ $t(text) }}</span>
10
+ </slot>
11
+ </v-alert>
12
+ </template>
13
+
14
+ <script>
15
+ import { VAlert } from 'vuetify/lib';
16
+
17
+ /**
18
+ * @description Wraps Vuetify VAlert for displaying help.
19
+ * @vue-data {slot} [#default] - Slot to specify html based help. Gets precedence over text prop.
20
+ * @vue-prop {boolean} show - If help should be displayed. If false, component is completely hidden.
21
+ * @vue-prop {string} [text] - Optional help text. Must be plain string. Use 'help' slot for html based help texts. Help slot has precedence over text prop.
22
+ */
23
+ export default {
24
+ name: 'VcsHelp',
25
+ components: {
26
+ VAlert,
27
+ },
28
+ props: {
29
+ text: {
30
+ type: String,
31
+ default: undefined,
32
+ },
33
+ show: {
34
+ type: Boolean,
35
+ required: true,
36
+ },
37
+ },
38
+ };
39
+ </script>