@vcmap/ui 6.0.0-rc.8 → 6.0.0

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 (191) hide show
  1. package/README.md +2 -0
  2. package/build/buildHelpers.js +1 -1
  3. package/build/commonViteConfig.js +7 -0
  4. package/config/aerowest.config.json +12 -2
  5. package/config/analysis.config.json +17 -0
  6. package/config/base.config.json +19 -5
  7. package/config/components-show-case.config.json +53 -0
  8. package/config/concepts-show-case.config.json +39 -0
  9. package/config/dev.config.json +164 -105
  10. package/config/dynamic-layer.config.json +32 -0
  11. package/config/hello-world.config.json +11 -0
  12. package/config/projects.config.json +9 -1
  13. package/config/solar.config.json +65 -0
  14. package/config/vectorTile.config.json +70 -0
  15. package/config/www.config.json +34 -13
  16. package/dist/assets/{cesium-2ec6aae0.js → cesium-00deba88.js} +4672 -4704
  17. package/dist/assets/cesium.js +1 -1
  18. package/dist/assets/{core-6f2522e5.js → core-a599e8b6.js} +7932 -7342
  19. package/dist/assets/core.js +1 -1
  20. package/dist/assets/{ol-b0e134cb.js → ol-21bbc740.js} +12206 -11711
  21. package/dist/assets/ol.js +1 -1
  22. package/dist/assets/ui-adeddc7d.css +1 -0
  23. package/dist/assets/{ui-bf3d1f84.js → ui-adeddc7d.js} +10415 -9588
  24. package/dist/assets/ui.js +1 -1
  25. package/dist/assets/vue.js +1 -1
  26. package/dist/assets/{vuetify-99bf601c.css → vuetify-c0e02f11.css} +1 -1
  27. package/dist/assets/{vuetify-99bf601c.js → vuetify-c0e02f11.js} +5313 -5294
  28. package/dist/assets/vuetify.js +1 -1
  29. package/index.d.ts +4 -0
  30. package/index.js +2 -0
  31. package/lib/olLib.js +6 -0
  32. package/package.json +12 -12
  33. package/plugins/@vcmap-show-case/README.md +15 -6
  34. package/plugins/@vcmap-show-case/category-tester/package.json +1 -1
  35. package/plugins/@vcmap-show-case/category-tester/src/CollectionComponentOptions.vue +23 -23
  36. package/plugins/@vcmap-show-case/category-tester/src/FoobarEditor.vue +2 -8
  37. package/plugins/@vcmap-show-case/collection-manager-example/package.json +1 -1
  38. package/plugins/@vcmap-show-case/collection-manager-example/src/CollectionManagerExample.vue +10 -8
  39. package/plugins/@vcmap-show-case/context-menu-tester/package.json +1 -1
  40. package/plugins/@vcmap-show-case/extent-example/package.json +1 -1
  41. package/plugins/@vcmap-show-case/flight-component-example/package.json +1 -1
  42. package/plugins/@vcmap-show-case/form-inputs-example/package.json +1 -1
  43. package/plugins/@vcmap-show-case/hello-world/package.json +1 -1
  44. package/plugins/@vcmap-show-case/icons-example/package.json +1 -1
  45. package/plugins/@vcmap-show-case/notifier-tester/package.json +1 -1
  46. package/plugins/@vcmap-show-case/panel-tester/package.json +1 -1
  47. package/plugins/@vcmap-show-case/plugin-editors/package.json +1 -1
  48. package/plugins/@vcmap-show-case/plugin-editors/src/index.js +17 -6
  49. package/plugins/@vcmap-show-case/project-selector/package.json +1 -9
  50. package/plugins/@vcmap-show-case/project-selector/src/ModulesListComponent.vue +22 -31
  51. package/plugins/@vcmap-show-case/project-selector/src/ProjectSelectorComponent.vue +15 -23
  52. package/plugins/@vcmap-show-case/projection-example/README.md +3 -0
  53. package/plugins/@vcmap-show-case/projection-example/package.json +5 -0
  54. package/plugins/@vcmap-show-case/projection-example/src/ProjectionExample.vue +73 -0
  55. package/plugins/@vcmap-show-case/{table-example → projection-example}/src/index.js +22 -11
  56. package/plugins/@vcmap-show-case/search-example/package.json +1 -1
  57. package/plugins/@vcmap-show-case/simple-graph/package.json +1 -4
  58. package/plugins/@vcmap-show-case/style-input-example/package.json +1 -1
  59. package/plugins/@vcmap-show-case/switch-map-callback-example/README.md +2 -2
  60. package/plugins/@vcmap-show-case/switch-map-callback-example/package.json +2 -1
  61. package/plugins/@vcmap-show-case/switch-map-callback-example/src/index.js +4 -1
  62. package/plugins/@vcmap-show-case/theming-example/package.json +1 -1
  63. package/plugins/@vcmap-show-case/toolbox-example/package.json +1 -1
  64. package/plugins/@vcmap-show-case/vector-properties-example/package.json +1 -1
  65. package/plugins/@vcmap-show-case/viewpoint-component-example/package.json +1 -1
  66. package/plugins/@vcmap-show-case/window-tester/package.json +1 -1
  67. package/plugins/@vcmap-show-case/window-tester/src/WindowExample.vue +1 -1
  68. package/plugins/@vcmap-show-case/window-tester/src/WindowExampleToggleChild.vue +5 -1
  69. package/plugins/@vcmap-show-case/wizard-example/package.json +1 -1
  70. package/plugins/package.json +23 -3
  71. package/src/actions/flightActions.js +40 -20
  72. package/src/actions/listActions.d.ts +1 -1
  73. package/src/actions/listActions.js +1 -1
  74. package/src/application/VcsApp.vue +3 -0
  75. package/src/application/VcsApp.vue.d.ts +15 -0
  76. package/src/application/VcsAttributions.vue +1 -1
  77. package/src/application/VcsAttributionsFooter.vue +1 -1
  78. package/src/application/VcsContainer.vue +0 -1
  79. package/src/application/VcsContainer.vue.d.ts +15 -0
  80. package/src/application/VcsObliqueFooter.vue +110 -0
  81. package/src/application/VcsObliqueFooter.vue.d.ts +4 -0
  82. package/src/application/VcsTextPageFooter.vue +1 -0
  83. package/src/application/attributionsHelper.js +10 -6
  84. package/src/components/buttons/VcsButton.vue +2 -2
  85. package/src/components/buttons/VcsButton.vue.d.ts +1 -1
  86. package/src/components/buttons/VcsFormButton.vue +2 -2
  87. package/src/components/buttons/VcsFormButton.vue.d.ts +1 -1
  88. package/src/components/buttons/VcsToolButton.vue +2 -2
  89. package/src/components/buttons/VcsToolButton.vue.d.ts +1 -1
  90. package/src/components/composables.d.ts +2 -2
  91. package/src/components/composables.js +3 -5
  92. package/src/components/flight/VcsFlightPlayer.vue +26 -20
  93. package/src/components/form-inputs-controls/VcsCheckbox.vue +11 -5
  94. package/src/components/form-inputs-controls/VcsCheckbox.vue.d.ts +10 -1
  95. package/src/components/form-inputs-controls/VcsDatePicker.vue +23 -3
  96. package/src/components/form-inputs-controls/VcsDatePicker.vue.d.ts +1 -1
  97. package/src/components/form-inputs-controls/VcsFileInput.vue +3 -3
  98. package/src/components/form-inputs-controls/VcsFileInput.vue.d.ts +1 -1
  99. package/src/components/form-inputs-controls/VcsLabel.vue +10 -1
  100. package/src/components/form-inputs-controls/VcsLabel.vue.d.ts +9 -0
  101. package/src/components/form-inputs-controls/VcsRadio.vue +4 -0
  102. package/src/components/form-inputs-controls/VcsSelect.vue +2 -2
  103. package/src/components/form-inputs-controls/VcsSelect.vue.d.ts +3 -3
  104. package/src/components/form-inputs-controls/VcsSlider.vue +2 -2
  105. package/src/components/form-inputs-controls/VcsSlider.vue.d.ts +1 -1
  106. package/src/components/form-inputs-controls/VcsTextArea.vue +2 -2
  107. package/src/components/form-inputs-controls/VcsTextArea.vue.d.ts +1 -1
  108. package/src/components/form-inputs-controls/VcsTextField.vue +3 -3
  109. package/src/components/form-inputs-controls/VcsTextField.vue.d.ts +1 -1
  110. package/src/components/form-inputs-controls/VcsWizard.vue +2 -2
  111. package/src/components/form-inputs-controls/VcsWizard.vue.d.ts +1 -1
  112. package/src/components/form-inputs-controls/VcsWizardStep.vue +2 -2
  113. package/src/components/form-inputs-controls/VcsWizardStep.vue.d.ts +3 -3
  114. package/src/components/import/VcsImportComponent.vue +3 -3
  115. package/src/components/lists/VcsActionList.vue +1 -1
  116. package/src/components/lists/VcsList.vue +56 -39
  117. package/src/components/lists/VcsListItemComponent.vue +14 -12
  118. package/src/components/lists/VcsListItemComponent.vue.d.ts +5 -28
  119. package/src/components/lists/VcsTreeview.vue +4 -2
  120. package/src/components/lists/VcsTreeview.vue.d.ts +1 -1
  121. package/src/components/notification/VcsHelp.vue +0 -1
  122. package/src/components/notification/VcsHelpTooltip.vue +48 -0
  123. package/src/components/notification/VcsHelpTooltip.vue.d.ts +25 -0
  124. package/src/components/projection/VcsProjection.vue +329 -0
  125. package/src/components/projection/VcsProjection.vue.d.ts +7 -0
  126. package/src/components/section/VcsFormSection.vue +0 -1
  127. package/src/components/section/VcsFormSection.vue.d.ts +1 -1
  128. package/src/components/tables/VcsDataTable.vue +15 -4
  129. package/src/components/tables/VcsDataTable.vue.d.ts +13 -2
  130. package/src/components/vector-properties/VcsFeatureEditingWindow.vue +17 -1
  131. package/src/components/vector-properties/VcsFeatureEditingWindow.vue.d.ts +10 -1
  132. package/src/components/vector-properties/VcsFeatureTransforms.vue +39 -5
  133. package/src/components/vector-properties/VcsFeatureTransforms.vue.d.ts +2 -1
  134. package/src/components/vector-properties/VcsVectorPropertiesComponent.vue +44 -24
  135. package/src/components/vector-properties/VcsVectorPropertiesComponent.vue.d.ts +27 -2
  136. package/src/components/viewpoint/VcsViewpointComponent.vue +6 -6
  137. package/src/contentTree/contentTreeCollection.js +12 -1
  138. package/src/contentTree/obliqueCollectionContentTreeItem.js +6 -1
  139. package/src/featureInfo/abstractFeatureInfoView.d.ts +9 -0
  140. package/src/featureInfo/abstractFeatureInfoView.js +20 -3
  141. package/src/i18n/de.d.ts +93 -39
  142. package/src/i18n/de.js +68 -22
  143. package/src/i18n/en.d.ts +93 -39
  144. package/src/i18n/en.js +64 -18
  145. package/src/legend/StyleLegendItem.vue +1 -5
  146. package/src/legend/VcsLegend.vue +9 -10
  147. package/src/legend/VcsLegend.vue.d.ts +1 -1
  148. package/src/legend/legendHelper.js +6 -1
  149. package/src/manager/collectionManager/collectionComponentClass.js +9 -5
  150. package/src/manager/collectionManager/editorCollectionComponentClass.js +5 -3
  151. package/src/manager/toolbox/GroupToolboxComponent.vue +6 -1
  152. package/src/manager/toolbox/SelectToolboxComponent.vue +6 -2
  153. package/src/manager/toolbox/ToolboxManagerComponent.vue +7 -2
  154. package/src/manager/window/WindowComponentHeader.vue +1 -1
  155. package/src/manager/window/windowManager.d.ts +59 -3
  156. package/src/manager/window/windowManager.js +23 -2
  157. package/src/navigation/MapNavCompass.vue +166 -140
  158. package/src/navigation/MapNavCompass.vue.d.ts +3 -1
  159. package/src/navigation/MapNavigation.vue +22 -5
  160. package/src/navigation/VcsCompass.vue +2 -1
  161. package/src/navigation/overviewMap.js +4 -1
  162. package/src/obliqueFallbackWarnings.d.ts +5 -0
  163. package/src/obliqueFallbackWarnings.js +54 -0
  164. package/src/styles/main.scss +2 -2
  165. package/src/uiConfig.d.ts +30 -0
  166. package/src/uiConfig.js +3 -0
  167. package/src/vcsUiApp.d.ts +37 -10
  168. package/src/vcsUiApp.js +4 -0
  169. package/src/vuePlugins/i18n.js +1 -0
  170. package/src/vuePlugins/vuetify.js +2 -0
  171. package/dist/assets/ui-bf3d1f84.css +0 -1
  172. package/plugins/@vcmap-show-case/buttons-example/README.md +0 -4
  173. package/plugins/@vcmap-show-case/buttons-example/package.json +0 -5
  174. package/plugins/@vcmap-show-case/buttons-example/src/ButtonsExample.vue +0 -281
  175. package/plugins/@vcmap-show-case/buttons-example/src/index.js +0 -51
  176. package/plugins/@vcmap-show-case/config-editor/README.md +0 -3
  177. package/plugins/@vcmap-show-case/config-editor/package.json +0 -5
  178. package/plugins/@vcmap-show-case/config-editor/src/ConfigEditor.vue +0 -62
  179. package/plugins/@vcmap-show-case/config-editor/src/index.js +0 -49
  180. package/plugins/@vcmap-show-case/list-example/README.md +0 -3
  181. package/plugins/@vcmap-show-case/list-example/package.json +0 -5
  182. package/plugins/@vcmap-show-case/list-example/src/ListExample.vue +0 -403
  183. package/plugins/@vcmap-show-case/list-example/src/index.js +0 -46
  184. package/plugins/@vcmap-show-case/table-example/README.md +0 -3
  185. package/plugins/@vcmap-show-case/table-example/package.json +0 -5
  186. package/plugins/@vcmap-show-case/table-example/src/DataTableExample.vue +0 -203
  187. package/plugins/@vcmap-show-case/textfields-example/README.md +0 -3
  188. package/plugins/@vcmap-show-case/textfields-example/package.json +0 -5
  189. package/plugins/@vcmap-show-case/textfields-example/src/TextfieldsExample.vue +0 -115
  190. package/plugins/@vcmap-show-case/textfields-example/src/index.js +0 -64
  191. /package/dist/assets/{vue-43880c5a.js → vue-8269279d.js} +0 -0
@@ -9,7 +9,7 @@ declare const _default: import("vue").DefineComponent<{
9
9
  };
10
10
  }, {
11
11
  hasAppendSlot: import("vue").ComputedRef<boolean>;
12
- forwardSlots: import("vue").ComputedRef<string[]>;
12
+ forwardSlots: string[];
13
13
  sliderRef: import("vue").Ref<any>;
14
14
  thumbSize: import("vue").ComputedRef<number>;
15
15
  tickSize: import("vue").ComputedRef<number>;
@@ -141,7 +141,7 @@
141
141
  <script>
142
142
  import { ref } from 'vue';
143
143
  import { VTextarea, VTooltip } from 'vuetify/components';
144
- import { useForwardSlots, usePadding } from '../composables.js';
144
+ import { getForwardSlots, usePadding } from '../composables.js';
145
145
 
146
146
  /**
147
147
  * @description extends API of {@link https://vuetifyjs.com/en/api/v-textarea/|vuetify v-textarea}.
@@ -173,7 +173,7 @@
173
173
  const errorTooltipRef = ref();
174
174
 
175
175
  const paddingProvided = usePadding(attrs);
176
- const forwardSlots = useForwardSlots(slots, ['append-inner', 'message']);
176
+ const forwardSlots = getForwardSlots(slots, ['append-inner', 'message']);
177
177
 
178
178
  return {
179
179
  forwardSlots,
@@ -8,7 +8,7 @@ declare const _default: import("vue").DefineComponent<{
8
8
  default: string;
9
9
  };
10
10
  }, {
11
- forwardSlots: import("vue").ComputedRef<string[]>;
11
+ forwardSlots: string[];
12
12
  textAreaRef: import("vue").Ref<any>;
13
13
  errorTooltipRef: import("vue").Ref<any>;
14
14
  paddingProvided: import("vue").ComputedRef<boolean>;
@@ -55,12 +55,12 @@
55
55
  </template>
56
56
 
57
57
  <style lang="scss" scoped>
58
- @import './vcsTextField.scss';
58
+ @use './vcsTextField.scss';
59
59
  </style>
60
60
  <script>
61
61
  import { computed, ref } from 'vue';
62
62
  import { VTextField, VTooltip } from 'vuetify/components';
63
- import { useForwardSlots, usePadding } from '../composables.js';
63
+ import { getForwardSlots, usePadding } from '../composables.js';
64
64
  import { useProxiedAtomicModel } from '../modelHelper.js';
65
65
 
66
66
  function countDecimalPlaces(value) {
@@ -172,7 +172,7 @@
172
172
  });
173
173
 
174
174
  const paddingProvided = usePadding(attrs);
175
- const forwardSlots = useForwardSlots(slots, ['default', 'message']);
175
+ const forwardSlots = getForwardSlots(slots, ['default', 'message']);
176
176
 
177
177
  const prependedContent = computed(() => {
178
178
  return (props.forcePrefix && attrs.prefix) || !!slots['prepend-inner'];
@@ -29,7 +29,7 @@ declare const _default: import("vue").DefineComponent<{
29
29
  };
30
30
  }, {
31
31
  prependedContent: import("vue").ComputedRef<{}>;
32
- forwardSlots: import("vue").ComputedRef<string[]>;
32
+ forwardSlots: string[];
33
33
  paddingProvided: import("vue").ComputedRef<boolean>;
34
34
  visibleValue: import("vue").WritableComputedRef<string | number | boolean>;
35
35
  rules: import("vue").ComputedRef<unknown>;
@@ -12,7 +12,7 @@
12
12
  <script>
13
13
  import { VStepperVertical } from 'vuetify/labs/VStepperVertical';
14
14
  import { VIcon } from 'vuetify/components';
15
- import { useForwardSlots } from '../composables.js';
15
+ import { getForwardSlots } from '../composables.js';
16
16
 
17
17
  /**
18
18
  * @description Stylized wrapper around {@link https://vuetifyjs.com/en/api/v-stepper-vertical/ |vuetify stepper vertical}per.
@@ -25,7 +25,7 @@
25
25
  VIcon,
26
26
  },
27
27
  setup(_p, { slots }) {
28
- const forwardSlots = useForwardSlots(slots, ['icon']);
28
+ const forwardSlots = getForwardSlots(slots, ['icon']);
29
29
 
30
30
  return {
31
31
  forwardSlots,
@@ -1,4 +1,4 @@
1
1
  declare const _default: import("vue").DefineComponent<{}, {
2
- forwardSlots: import("vue").ComputedRef<string[]>;
2
+ forwardSlots: string[];
3
3
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}, {}>;
4
4
  export default _default;
@@ -52,7 +52,7 @@
52
52
  import { VStepperVerticalItem } from 'vuetify/labs/VStepperVertical';
53
53
  import { VSpacer } from 'vuetify/components';
54
54
  import { useProxiedComplexModel } from '../modelHelper.js';
55
- import { useForwardSlots } from '../composables.js';
55
+ import { getForwardSlots } from '../composables.js';
56
56
  import VcsActionButtonList from '../buttons/VcsActionButtonList.vue';
57
57
  import VcsHelp from '../notification/VcsHelp.vue';
58
58
 
@@ -167,7 +167,7 @@
167
167
  return props.headerActions;
168
168
  });
169
169
 
170
- const forwardSlots = useForwardSlots(slots, ['title', 'default']);
170
+ const forwardSlots = getForwardSlots(slots, ['title', 'default']);
171
171
 
172
172
  return {
173
173
  showHelp,
@@ -4,7 +4,7 @@ declare const _default: import("vue").DefineComponent<{
4
4
  default: boolean;
5
5
  };
6
6
  modelValue: {
7
- type: (BooleanConstructor | ArrayConstructor | StringConstructor | NumberConstructor)[];
7
+ type: (BooleanConstructor | StringConstructor | NumberConstructor | ArrayConstructor)[];
8
8
  default(rawProps: any): 0 | never[];
9
9
  };
10
10
  step: {
@@ -44,14 +44,14 @@ declare const _default: import("vue").DefineComponent<{
44
44
  showHelp: import("vue").ComputedRef<boolean>;
45
45
  actions: import("vue").ComputedRef<VcsAction>;
46
46
  isActiveStep: import("vue").ComputedRef<boolean>;
47
- forwardSlots: import("vue").ComputedRef<string[]>;
47
+ forwardSlots: string[];
48
48
  }, any, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
49
49
  multiple: {
50
50
  type: BooleanConstructor;
51
51
  default: boolean;
52
52
  };
53
53
  modelValue: {
54
- type: (BooleanConstructor | ArrayConstructor | StringConstructor | NumberConstructor)[];
54
+ type: (BooleanConstructor | StringConstructor | NumberConstructor | ArrayConstructor)[];
55
55
  default(rawProps: any): 0 | never[];
56
56
  };
57
57
  step: {
@@ -13,15 +13,15 @@
13
13
  v-model="files"
14
14
  />
15
15
  <div class="d-flex justify-end gc-1 mx-3 pt-2 pb-1">
16
- <vcs-form-button @click="$emit('close')">
17
- {{ $t('components.cancel') }}
18
- </vcs-form-button>
19
16
  <vcs-form-button
20
17
  variant="filled"
21
18
  :disabled="files.length === 0"
22
19
  @click="doImport"
23
20
  >{{ $t('components.import.submit') }}</vcs-form-button
24
21
  >
22
+ <vcs-form-button @click="$emit('close')">
23
+ {{ $t('components.cancel') }}
24
+ </vcs-form-button>
25
25
  </div>
26
26
  </v-card>
27
27
  </template>
@@ -13,7 +13,7 @@
13
13
  </template>
14
14
  <v-list-item-title>{{ $st(action.name) }}</v-list-item-title>
15
15
  <v-tooltip
16
- v-if="action.title"
16
+ v-if="action.title && $st(action.title)"
17
17
  activator="parent"
18
18
  :text="$st(action.title)"
19
19
  :location="tooltipPosition"
@@ -57,14 +57,17 @@
57
57
  }"
58
58
  @click="select(item, $event)"
59
59
  >
60
- <template #title="titleScope">
61
- <slot name="item.title" v-bind="{ ...titleScope, index }"></slot>
60
+ <template #append="scope">
61
+ <slot name="item.append" v-bind="{ ...scope, index, item }" />
62
62
  </template>
63
- <template #subtitle="subtitleScope">
64
- <slot name="item.subtitle" v-bind="{ ...subtitleScope, index }" />
63
+ <template #title="scope">
64
+ <slot name="item.title" v-bind="{ ...scope, index, item }" />
65
65
  </template>
66
- <template #default="scope">
67
- <slot name="item.default" v-bind="{ ...scope, index }" />
66
+ <template #subtitle="scope">
67
+ <slot name="item.subtitle" v-bind="{ ...scope, index, item }" />
68
+ </template>
69
+ <template #prepend="scope">
70
+ <slot name="item.prepend" v-bind="{ ...scope, index, item }" />
68
71
  </template>
69
72
  </VcsListItemComponent>
70
73
  <slot name="item.intermediate" :item="item" :index="index" />
@@ -83,6 +86,7 @@
83
86
  getCurrentInstance,
84
87
  inject,
85
88
  isReactive,
89
+ reactive,
86
90
  ref,
87
91
  shallowRef,
88
92
  watch,
@@ -106,36 +110,48 @@
106
110
  * @returns {Array<import("../../actions/actionHelper.js").VcsAction>}
107
111
  */
108
112
  export function createSelectionActions(items, selected, emit) {
109
- return [
110
- {
111
- name: 'list.selectAll',
112
- tooltip: 'list.selectAll',
113
- callback() {
114
- const currentSelection = [...selected.value];
115
- selected.value = items.value.filter((item) => !item.disabled);
113
+ const selectAllAction = reactive({
114
+ name: 'list.selectAll',
115
+ tooltip: 'list.selectAll',
116
+ disabled: items.value.length - selected.value.length < 1,
117
+ callback() {
118
+ const currentSelection = [...selected.value];
119
+ selected.value = items.value.filter((item) => !item.disabled);
116
120
 
117
- selected.value.forEach((item) => {
118
- if (item.selectionChanged && !currentSelection.includes(item)) {
119
- item.selectionChanged(true);
120
- }
121
- });
122
- emit('update:modelValue', selected.value);
123
- },
121
+ selected.value.forEach((item) => {
122
+ if (item.selectionChanged && !currentSelection.includes(item)) {
123
+ item.selectionChanged(true);
124
+ }
125
+ });
126
+ emit('update:modelValue', selected.value);
124
127
  },
125
- {
126
- name: 'list.clearSelection',
127
- tooltip: 'list.clearSelection',
128
- callback() {
129
- [...selected.value].forEach((item) => {
130
- if (item.selectionChanged) {
131
- item.selectionChanged(false);
132
- }
133
- });
134
- selected.value = [];
135
- emit('update:modelValue', selected.value);
136
- },
128
+ });
129
+ const clearSelectionAction = reactive({
130
+ name: 'list.clearSelection',
131
+ tooltip: 'list.clearSelection',
132
+ disabled: selected.value.length < 1,
133
+ callback() {
134
+ [...selected.value].forEach((item) => {
135
+ if (item.selectionChanged) {
136
+ item.selectionChanged(false);
137
+ }
138
+ });
139
+ selected.value = [];
140
+ emit('update:modelValue', selected.value);
137
141
  },
138
- ];
142
+ });
143
+
144
+ watch(
145
+ [items, selected],
146
+ () => {
147
+ selectAllAction.disabled =
148
+ items.value.length - selected.value.length < 1;
149
+ clearSelectionAction.disabled = selected.value.length < 1;
150
+ },
151
+ { deep: false, immediate: true },
152
+ );
153
+
154
+ return [selectAllAction, clearSelectionAction];
139
155
  }
140
156
 
141
157
  /**
@@ -170,10 +186,11 @@
170
186
  * @vue-prop {string} [tooltip] - tooltip to render on the list title
171
187
  * @vue-prop {Array<import("../../actions/actionHelper.js").VcsAction>} [actions] - actions to render in the list title
172
188
  * @vue-event {ItemMovedEvent} item-moved - event triggered after item was dragged and is dropped
173
- * @vue-data {slot} [#item.prepend-title] - A slot to adapt the list item titel, adding content before the title. Binds item and index.
174
- * @vue-data {slot} [#item.title] - A slot to adapt the list item titel. Default content is a span or VcsTextField for active rename action. Binds item and index.
175
- * @vue-data {slot} [#item.append-title] - A slot to adapt the list item titel, adding content after the title. Binds item and index.
176
- * @vue-data {slot} [#item.intermediate] - A slot to introduce content, e.g. buttons between two list items. Binds item and index.
189
+ * @vue-data {slot} [#item.prepend] - A slot that forwads to v-list-item prepend slot. Binds v-list-item append slot props, item and item index.
190
+ * @vue-data {slot} [#item.title] - A slot that forwards to v-list-item title slot. Binds v-list-item title slot props, item and item index.
191
+ * @vue-data {slot} [#item.subtitle] - A slot that forwards to v-list-item subtitle slot. Binds v-list-item subtitle slot props, item and item index.
192
+ * @vue-data {slot} [#item.append] - A slot that forwards to v-list-item append slot. Binds v-list-item append slot props, item and item index.
193
+ * @vue-data {slot} [#item.intermediate] - A slot to introduce content, e.g. buttons between two list items. Binds item and item index.
177
194
  */
178
195
  export default {
179
196
  name: 'VcsList',
@@ -568,7 +585,7 @@
568
585
  }
569
586
  &:hover {
570
587
  .v-list-item__overlay {
571
- background-color: rgb(var(--v-theme-base));
588
+ background-color: rgb(var(--v-theme-on-surface));
572
589
  }
573
590
  }
574
591
  .vcs-list-title__selected {
@@ -589,7 +606,7 @@
589
606
 
590
607
  &:hover {
591
608
  .v-list-item__overlay {
592
- background-color: transparent;
609
+ background-color: rgb(var(--v-theme-on-surface));
593
610
  }
594
611
  }
595
612
  }
@@ -94,13 +94,15 @@
94
94
  v-bind="$attrs"
95
95
  class="vcs-list-item-component"
96
96
  >
97
- <template #prepend>
98
- <v-icon v-if="item.icon">
99
- {{ item.icon }}
100
- </v-icon>
97
+ <template #prepend="scope">
98
+ <slot name="prepend" v-bind="scope">
99
+ <v-icon v-if="item.icon">
100
+ {{ item.icon }}
101
+ </v-icon>
102
+ </slot>
101
103
  </template>
102
- <template #title>
103
- <slot name="title" v-bind="{ item, dragging, tooltip }">
104
+ <template #title="scope">
105
+ <slot name="title" v-bind="{ ...scope, tooltip }">
104
106
  <v-list-item-title
105
107
  ref="title"
106
108
  :class="{ 'vcs-list-item__rename': rename }"
@@ -125,17 +127,17 @@
125
127
  </v-list-item-title>
126
128
  </slot>
127
129
  </template>
128
- <template #subtitle>
129
- <slot name="subtitle" v-bind="{ item }" />
130
+ <template #subtitle="scope">
131
+ <slot name="subtitle" v-bind="scope" />
130
132
  </template>
131
133
  <template #default="scope">
132
- <slot name="default" v-bind="{ ...scope, item, dragging, tooltip }" />
134
+ <slot name="default" v-bind="{ ...scope, tooltip }" />
133
135
  </template>
134
- <template #append="appendScope">
136
+ <template #append="scope">
135
137
  <slot
136
138
  name="append"
137
139
  v-bind="{
138
- ...appendScope,
140
+ ...scope,
139
141
  item,
140
142
  actions,
141
143
  actionButtonListOverflowCount,
@@ -205,7 +207,7 @@
205
207
  width: 8px;
206
208
  }
207
209
  :deep(.v-list-item__overlay) {
208
- background-color: transparent;
210
+ background-color: rgb(var(--v-theme-on-surface));
209
211
  }
210
212
  :deep(.vcs-list-item__rename) {
211
213
  color: rgb(var(--v-theme-on-surface));
@@ -3,34 +3,11 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<{}
3
3
  readonly [x: string]: any;
4
4
  };
5
5
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}, {}>, {
6
- title?(_: {
7
- item: any;
8
- dragging: any;
9
- tooltip: string;
10
- }): any;
11
- subtitle?(_: {
12
- item: any;
13
- }): any;
14
- default?(_: {
15
- item: any;
16
- dragging: any;
17
- tooltip: string;
18
- isActive: boolean;
19
- isOpen: boolean;
20
- isSelected: boolean;
21
- isIndeterminate: boolean;
22
- select: (value: boolean) => void;
23
- }): any;
24
- append?(_: {
25
- item: any;
26
- actions: any[];
27
- actionButtonListOverflowCount: any;
28
- isActive: boolean;
29
- isOpen: boolean;
30
- isSelected: boolean;
31
- isIndeterminate: boolean;
32
- select: (value: boolean) => void;
33
- }): any;
6
+ prepend?(_: any): any;
7
+ title?(_: any): any;
8
+ subtitle?(_: any): any;
9
+ default?(_: any): any;
10
+ append?(_: any): any;
34
11
  }>;
35
12
  export default _default;
36
13
  export type VcsListItem = {
@@ -92,6 +92,8 @@
92
92
  width: var(--v-vcs-font-size);
93
93
  height: var(--v-vcs-font-size);
94
94
  margin: auto;
95
+ // for alignment of chevron
96
+ display: flex;
95
97
  }
96
98
  }
97
99
 
@@ -118,7 +120,7 @@
118
120
  import { VIcon } from 'vuetify/components';
119
121
  import { VTreeview } from 'vuetify/labs/VTreeview';
120
122
  import { useProxiedAtomicModel } from '../modelHelper.js';
121
- import { useForwardSlots } from '../composables.js';
123
+ import { getForwardSlots } from '../composables.js';
122
124
  import VcsTreeviewSearchbar from './VcsTreeviewSearchbar.vue';
123
125
  import VcsActionButtonList from '../buttons/VcsActionButtonList.vue';
124
126
  import ImageElementInjector from '../ImageElementInjector.vue';
@@ -184,7 +186,7 @@
184
186
  .indexOf(q.toLocaleLowerCase());
185
187
  };
186
188
 
187
- const forwardSlots = useForwardSlots(slots, [
189
+ const forwardSlots = getForwardSlots(slots, [
188
190
  'append',
189
191
  'title',
190
192
  'prepend',
@@ -19,7 +19,7 @@ declare const _default: import("vue").DefineComponent<{
19
19
  iconSize: import("vue").ComputedRef<number>;
20
20
  localSearchValue: import("vue").Ref<any>;
21
21
  handleFilter: (value: string, q: string, item: Object) => number;
22
- forwardSlots: import("vue").ComputedRef<string[]>;
22
+ forwardSlots: string[];
23
23
  itemClicked(name: any, event: any): void;
24
24
  }, any, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "update:search"[], "update:search", import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
25
25
  items: {
@@ -13,7 +13,6 @@
13
13
  <style lang="scss">
14
14
  .vcs-help {
15
15
  box-sizing: border-box;
16
- padding-left: 16px;
17
16
  ol,
18
17
  ul {
19
18
  padding-left: 16px; /* Indentation for list items */
@@ -0,0 +1,48 @@
1
+ <template>
2
+ <v-tooltip class="vcs-help-tooltip">
3
+ <template #activator="{ props }">
4
+ <v-icon :size="fontSize" v-bind="props" :icon="icon" />
5
+ </template>
6
+ <v-container class="py-1 px-2 vcs-help-tooltip-container">
7
+ <slot>
8
+ <span class="vcs-help-tooltip-text">{{ $st(text) }}</span>
9
+ </slot>
10
+ </v-container>
11
+ </v-tooltip>
12
+ </template>
13
+ <style lang="scss" scoped></style>
14
+ <script>
15
+ import { VTooltip, VIcon, VContainer } from 'vuetify/components';
16
+ import { useFontSize } from '../../vuePlugins/vuetify.js';
17
+
18
+ /**
19
+ * @description A component for displaying help as tooltip via an icon.
20
+ * @vue-data {slot} [#default] - Slot to specify html based help. Gets precedence over text prop.
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: 'VcsHelpTooltip',
25
+ components: {
26
+ VTooltip,
27
+ VIcon,
28
+ VContainer,
29
+ },
30
+ props: {
31
+ icon: {
32
+ type: String,
33
+ default: '$vcsHelp',
34
+ },
35
+ text: {
36
+ type: String,
37
+ default: undefined,
38
+ },
39
+ },
40
+ setup() {
41
+ const fontSize = useFontSize();
42
+
43
+ return {
44
+ fontSize,
45
+ };
46
+ },
47
+ };
48
+ </script>
@@ -0,0 +1,25 @@
1
+ declare const _default: import("vue").DefineComponent<{
2
+ icon: {
3
+ type: StringConstructor;
4
+ default: string;
5
+ };
6
+ text: {
7
+ type: StringConstructor;
8
+ default: undefined;
9
+ };
10
+ }, {
11
+ fontSize: import("vue").ComputedRef<number>;
12
+ }, any, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
13
+ icon: {
14
+ type: StringConstructor;
15
+ default: string;
16
+ };
17
+ text: {
18
+ type: StringConstructor;
19
+ default: undefined;
20
+ };
21
+ }>>, {
22
+ text: string;
23
+ icon: string;
24
+ }, {}>;
25
+ export default _default;