@vcmap/ui 6.0.12 → 6.1.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/config/base.config.json +25 -3
  2. package/config/dev.config.json +17 -3
  3. package/config/splashscreen.config.json +13 -0
  4. package/dist/assets/cesium.js +1 -1
  5. package/dist/assets/{core-1d7afc4a.js → core-9d0cfec3.js} +6861 -5788
  6. package/dist/assets/core.js +1 -1
  7. package/dist/assets/ol.js +1 -1
  8. package/dist/assets/ui-08446666.css +1 -0
  9. package/dist/assets/{ui-21d54a73.js → ui-08446666.js} +17374 -19067
  10. package/dist/assets/ui.js +1 -1
  11. package/dist/assets/vue.js +1 -1
  12. package/dist/assets/{vuetify-e7de6710.js → vuetify-67025c41.js} +1 -1
  13. package/dist/assets/vuetify.js +1 -1
  14. package/index.d.ts +11 -1
  15. package/index.js +6 -0
  16. package/package.json +2 -2
  17. package/plugins/@vcmap-show-case/dev-tools/package.json +5 -0
  18. package/plugins/@vcmap-show-case/dev-tools/src/eventLogger.js +35 -0
  19. package/plugins/@vcmap-show-case/dev-tools/src/index.js +59 -0
  20. package/plugins/@vcmap-show-case/search-example/src/searchImpl.js +10 -0
  21. package/src/application/VcsApp.vue.d.ts +22 -0
  22. package/src/application/VcsContainer.vue.d.ts +15 -0
  23. package/src/application/VcsSplashScreen.vue +35 -28
  24. package/src/application/VcsSplashScreen.vue.d.ts +1 -0
  25. package/src/callback/addModuleCallback.d.ts +29 -0
  26. package/src/callback/addModuleCallback.js +61 -0
  27. package/src/callback/removeModuleCallback.d.ts +29 -0
  28. package/src/callback/removeModuleCallback.js +53 -0
  29. package/src/callback/startRotationCallback.d.ts +37 -0
  30. package/src/callback/startRotationCallback.js +67 -0
  31. package/src/callback/stopRotationCallback.d.ts +8 -0
  32. package/src/callback/stopRotationCallback.js +37 -0
  33. package/src/components/icons/+all.js +4 -0
  34. package/src/components/icons/View360Icon.vue +55 -0
  35. package/src/components/icons/View360Icon.vue.d.ts +2 -0
  36. package/src/components/lists/VcsTreeNode.vue +237 -0
  37. package/src/components/lists/VcsTreeNode.vue.d.ts +31 -0
  38. package/src/components/lists/VcsTreeview.vue +103 -173
  39. package/src/components/lists/VcsTreeview.vue.d.ts +41 -4
  40. package/src/components/lists/VcsTreeviewTitle.vue +10 -3
  41. package/src/components/lists/VcsTreeviewTitle.vue.d.ts +2 -0
  42. package/src/featureInfo/BalloonComponent.vue +18 -47
  43. package/src/featureInfo/BalloonComponent.vue.d.ts +0 -1
  44. package/src/featureInfo/IframeComponent.vue +1 -32
  45. package/src/featureInfo/IframeComponent.vue.d.ts +1 -4
  46. package/src/i18n/de.d.ts +1 -0
  47. package/src/i18n/de.js +1 -0
  48. package/src/i18n/en.d.ts +1 -0
  49. package/src/i18n/en.js +1 -0
  50. package/src/init.d.ts +6 -0
  51. package/src/init.js +26 -14
  52. package/src/manager/window/WindowComponent.vue +1 -1
  53. package/src/navigation/MapNavigation.vue +83 -1
  54. package/src/navigation/MapNavigation.vue.d.ts +2 -0
  55. package/src/search/ResultItem.vue +1 -10
  56. package/src/search/ResultsComponent.vue +11 -1
  57. package/src/search/ResultsComponent.vue.d.ts +9 -0
  58. package/src/search/SearchComponent.vue +88 -11
  59. package/src/search/SearchComponent.vue.d.ts +7 -0
  60. package/src/search/search.d.ts +3 -0
  61. package/src/search/search.js +3 -2
  62. package/src/uiConfig.d.ts +31 -0
  63. package/src/uiConfig.js +5 -0
  64. package/src/vuePlugins/vuetify.js +2 -0
  65. package/dist/assets/ui-21d54a73.css +0 -1
  66. /package/dist/assets/{cesium-72d0b355.js → cesium-11e5bbc6.js} +0 -0
  67. /package/dist/assets/{ol-6dcd0d3d.js → ol-0d0ebb27.js} +0 -0
  68. /package/dist/assets/{vue-24ff798c.js → vue-2f81c7f8.js} +0 -0
  69. /package/dist/assets/{vuetify-e7de6710.css → vuetify-67025c41.css} +0 -0
@@ -0,0 +1,67 @@
1
+ import { CesiumMap, startRotation } from '@vcmap/core';
2
+ import VcsCallback, { callbackClassRegistry } from './vcsCallback.js';
3
+
4
+ /**
5
+ * @typedef {import("./vcsCallback.js").VcsCallbackOptions & { viewpoint: string, timePerRotation: number }} StartRotationOptions
6
+ * @property {string?} viewpoint - name of the viewpoint
7
+ * @property {number?} timePerRotation - time in seconds for a full rotation
8
+ */
9
+
10
+ /**
11
+ * @class
12
+ * @extends {VcsCallback}
13
+ */
14
+ class StartRotationCallback extends VcsCallback {
15
+ /**
16
+ * @type {string}
17
+ */
18
+ static get className() {
19
+ return 'StartRotationCallback';
20
+ }
21
+
22
+ /**
23
+ * @param {StartRotationOptions} options
24
+ * @param {import("@src/vcsUiApp.js").default} app
25
+ */
26
+ constructor(options, app) {
27
+ super(options, app);
28
+ /**
29
+ * @type {string | undefined}
30
+ * @private
31
+ */
32
+ this._viewpoint = options.viewpoint;
33
+ /**
34
+ * @type {number | undefined}
35
+ * @private
36
+ */
37
+ this._timePerRotation = options.timePerRotation;
38
+ }
39
+
40
+ async callback() {
41
+ const vp = this._app.viewpoints.getByKey(this._viewpoint);
42
+ const speed = this._timePerRotation;
43
+ if (this._app.maps.activeMap instanceof CesiumMap) {
44
+ await startRotation(this._app, vp, speed);
45
+ }
46
+ }
47
+
48
+ /**
49
+ * @returns {StartRotationOptions}
50
+ */
51
+ toJSON() {
52
+ const config = super.toJSON();
53
+ if (this._viewpoint) {
54
+ config.viewpoint = this._viewpoint;
55
+ }
56
+ if (this._timePerRotation) {
57
+ config.timePerRotation = this._timePerRotation;
58
+ }
59
+ return config;
60
+ }
61
+ }
62
+
63
+ export default StartRotationCallback;
64
+ callbackClassRegistry.registerClass(
65
+ StartRotationCallback.className,
66
+ StartRotationCallback,
67
+ );
@@ -0,0 +1,8 @@
1
+ export default StopRotationCallback;
2
+ /**
3
+ * @class
4
+ * @extends {VcsCallback}
5
+ */
6
+ declare class StopRotationCallback extends VcsCallback {
7
+ }
8
+ import VcsCallback from './vcsCallback.js';
@@ -0,0 +1,37 @@
1
+ import { rotationMapControlSymbol } from '@vcmap/core';
2
+ import VcsCallback, { callbackClassRegistry } from './vcsCallback.js';
3
+
4
+ /**
5
+ * @class
6
+ * @extends {VcsCallback}
7
+ */
8
+ class StopRotationCallback extends VcsCallback {
9
+ /**
10
+ * @type {string}
11
+ */
12
+ static get className() {
13
+ return 'StopRotationCallback';
14
+ }
15
+
16
+ // eslint-disable-next-line class-methods-use-this
17
+ callback() {
18
+ if (this._app.maps.exclusiveMapControlsId === rotationMapControlSymbol) {
19
+ this._app.maps.resetExclusiveMapControls();
20
+ }
21
+ }
22
+
23
+ /**
24
+ * @returns {import('./vcsCallback.js').VcsCallbackOptions}
25
+ */
26
+ toJSON() {
27
+ return super.toJSON();
28
+ }
29
+ }
30
+
31
+ export default StopRotationCallback;
32
+
33
+ // Register the class
34
+ callbackClassRegistry.registerClass(
35
+ StopRotationCallback.className,
36
+ StopRotationCallback,
37
+ );
@@ -110,6 +110,7 @@ import ViewshedConeIcon from './ViewshedConeIcon.vue';
110
110
  import WalkingIcon from './WalkingIcon.vue';
111
111
  import WallIcon from './WallIcon.vue';
112
112
  import WandIcon from './WandIcon.vue';
113
+ import View360Icon from './View360Icon.vue';
113
114
 
114
115
  // * // IconMap.boundingBox
115
116
  // * <v-icon size="16" v-text="'$vcsBoundingBox'" />
@@ -459,6 +460,9 @@ const IconMap = {
459
460
  viewshed360: {
460
461
  component: Viewshed360Icon,
461
462
  },
463
+ view360: {
464
+ component: View360Icon,
465
+ },
462
466
  viewshedCone: {
463
467
  component: ViewshedConeIcon,
464
468
  },
@@ -0,0 +1,55 @@
1
+ <!-- eslint-disable max-len -->
2
+
3
+ <template>
4
+ <svg
5
+ id="Ebene_1"
6
+ data-name="Ebene 1"
7
+ xmlns="http://www.w3.org/2000/svg"
8
+ viewBox="46 75 301 268"
9
+ >
10
+ <path
11
+ d="M302.18,95.55c0-5.63,1.98-10.41,5.94-14.35,3.96-3.94,8.73-5.9,14.31-5.9s10.36,1.98,14.31,5.93c3.96,3.96,5.93,8.73,5.93,14.31s-1.98,10.36-5.93,14.31c-3.96,3.96-8.73,5.93-14.31,5.93s-10.36-1.98-14.31-5.93c-3.96-3.96-5.94-8.73-5.94-14.31ZM312.72,95.55c0,2.67.95,4.95,2.86,6.86s4.19,2.86,6.86,2.86,4.95-.95,6.86-2.86,2.86-4.19,2.86-6.86-.95-4.95-2.86-6.86-4.19-2.86-6.86-2.86-4.95.95-6.86,2.86-2.86,4.19-2.86,6.86Z"
12
+ style="fill: currentColor; stroke-width: 0px"
13
+ />
14
+ <path
15
+ d="M68.99,176.62s-17.77,19.47-7.44,43.07c10.78,23.59,58.52,59.55,147.63,57.9"
16
+ style="
17
+ fill: none;
18
+ stroke: currentColor;
19
+ stroke-miterlimit: 10;
20
+ stroke-width: 24px;
21
+ "
22
+ />
23
+ <path
24
+ d="M88.05,150.42l18.59-2.26c.59,4.74,2.19,8.36,4.79,10.87,2.6,2.51,5.74,3.76,9.43,3.76,3.96,0,7.3-1.5,10.01-4.51,2.71-3.01,4.07-7.06,4.07-12.17,0-4.83-1.3-8.66-3.9-11.48-2.6-2.83-5.77-4.24-9.5-4.24-2.46,0-5.4.48-8.82,1.44l2.12-15.65c5.2.14,9.16-.99,11.89-3.38s4.1-5.57,4.1-9.54c0-3.37-1-6.06-3.01-8.07-2.01-2-4.67-3.01-8-3.01s-6.08,1.14-8.41,3.42c-2.32,2.28-3.74,5.61-4.24,9.98l-17.71-3.01c1.23-6.06,3.09-10.9,5.57-14.53,2.48-3.62,5.95-6.47,10.39-8.54,4.44-2.07,9.42-3.11,14.94-3.11,9.43,0,17,3.01,22.7,9.02,4.69,4.92,7.04,10.48,7.04,16.68,0,8.8-4.81,15.81-14.42,21.05,5.74,1.23,10.33,3.99,13.77,8.27,3.44,4.28,5.16,9.46,5.16,15.52,0,8.8-3.21,16.29-9.64,22.49-6.43,6.2-14.42,9.3-23.99,9.3-9.07,0-16.59-2.61-22.56-7.83-5.97-5.22-9.43-12.04-10.39-20.47Z"
25
+ style="fill: currentColor; stroke-width: 0px"
26
+ />
27
+ <path
28
+ d="M227.48,101.33l-18.59,2.05c-.46-3.83-1.64-6.65-3.55-8.48-1.91-1.82-4.4-2.73-7.45-2.73-4.06,0-7.49,1.82-10.29,5.47-2.8,3.65-4.57,11.23-5.3,22.76,4.79-5.65,10.73-8.48,17.84-8.48,8.02,0,14.89,3.05,20.61,9.16,5.72,6.11,8.58,13.99,8.58,23.65,0,10.25-3.01,18.48-9.02,24.68-6.02,6.2-13.74,9.3-23.17,9.3-10.12,0-18.43-3.93-24.95-11.79-6.52-7.86-9.78-20.75-9.78-38.66s3.39-31.6,10.19-39.72c6.79-8.11,15.61-12.17,26.46-12.17,7.61,0,13.91,2.13,18.9,6.39,4.99,4.26,8.17,10.45,9.54,18.56ZM183.93,143.24c0,6.24,1.44,11.06,4.31,14.46,2.87,3.4,6.15,5.09,9.84,5.09s6.52-1.39,8.89-4.17c2.37-2.78,3.55-7.34,3.55-13.67s-1.28-11.29-3.83-14.32c-2.55-3.03-5.74-4.55-9.57-4.55s-6.81,1.45-9.37,4.34c-2.55,2.89-3.83,7.17-3.83,12.82Z"
29
+ style="fill: currentColor; stroke-width: 0px"
30
+ />
31
+ <path
32
+ d="M268.53,76.38c9.71,0,17.29,3.46,22.76,10.39,6.52,8.2,9.78,21.81,9.78,40.81s-3.28,32.58-9.84,40.88c-5.42,6.84-12.99,10.25-22.7,10.25s-17.61-3.75-23.58-11.24c-5.97-7.5-8.96-20.86-8.96-40.09s3.28-32.45,9.84-40.74c5.42-6.84,12.99-10.25,22.7-10.25ZM268.53,92.31c-2.32,0-4.4.74-6.22,2.22-1.82,1.48-3.24,4.14-4.24,7.96-1.32,4.97-1.98,13.33-1.98,25.09s.59,19.84,1.78,24.23c1.18,4.4,2.68,7.33,4.48,8.78,1.8,1.46,3.86,2.19,6.19,2.19s4.4-.74,6.22-2.22c1.82-1.48,3.24-4.14,4.24-7.96,1.32-4.92,1.98-13.26,1.98-25.02s-.59-19.83-1.78-24.23c-1.19-4.4-2.68-7.34-4.48-8.82-1.8-1.48-3.86-2.22-6.19-2.22Z"
33
+ style="fill: currentColor; stroke-width: 0px"
34
+ />
35
+ <polyline
36
+ points="167.32 222.17 212.66 279.35 161.89 325.7"
37
+ style="
38
+ fill: none;
39
+ stroke: currentColor;
40
+ stroke-linecap: square;
41
+ stroke-miterlimit: 10;
42
+ stroke-width: 24px;
43
+ "
44
+ />
45
+ <path
46
+ d="M323.31,175.13s18.39,18.8,8.83,42.77c-7.13,17.07-32.78,41.11-79.15,54.13"
47
+ style="
48
+ fill: none;
49
+ stroke: currentColor;
50
+ stroke-miterlimit: 10;
51
+ stroke-width: 24px;
52
+ "
53
+ />
54
+ </svg>
55
+ </template>
@@ -0,0 +1,2 @@
1
+ declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}, {}>;
2
+ export default _default;
@@ -0,0 +1,237 @@
1
+ <template>
2
+ <div class="vcs-tree-node" v-if="matchFilter">
3
+ <v-row
4
+ no-gutters
5
+ class="treenode flex-nowrap text-truncate"
6
+ :class="`level-${level} ${children.length ? 'group' : 'item'}`"
7
+ >
8
+ <VBtn
9
+ v-if="children.length"
10
+ class="chevron-btn"
11
+ variant="text"
12
+ :icon="isOpen ? 'mdi-chevron-down' : 'mdi-chevron-right'"
13
+ @click="isOpen = !isOpen"
14
+ />
15
+ <slot name="prepend" v-bind="{ item }">
16
+ <span class="prepend">
17
+ <div v-if="item.icon">
18
+ <v-icon v-if="typeof item?.icon === 'string'" :size="iconSize">
19
+ {{ item.icon }}
20
+ </v-icon>
21
+ <ImageElementInjector :element="item.icon" v-else />
22
+ </div>
23
+ </span>
24
+ </slot>
25
+ <slot name="title" v-bind="{ item }">
26
+ <VcsTreeviewTitle
27
+ :item="item"
28
+ :cursor-pointer="item.clickable || (openOnClick && !!children.length)"
29
+ @click="(event) => $emit('click', item, event)"
30
+ />
31
+ </slot>
32
+ <slot name="append" v-bind="{ item }">
33
+ <VcsActionButtonList
34
+ v-if="item.actions?.length > 0"
35
+ :actions="item.actions"
36
+ :overflow-count="3"
37
+ :disabled="item.disabled"
38
+ right
39
+ tooltip-position="right"
40
+ block-overflow
41
+ class="col-4 pa-0 ml-auto pr-4"
42
+ />
43
+ </slot>
44
+ </v-row>
45
+ <v-expand-transition>
46
+ <div v-if="isOpen && children.length" class="children">
47
+ <VcsTreeNode
48
+ v-for="child in children"
49
+ :key="child.name"
50
+ :item="child"
51
+ :search="search"
52
+ :level="level + 1"
53
+ :open-on-click="openOnClick"
54
+ :item-children="itemChildren"
55
+ :opened="opened"
56
+ @item-toggled="bubbleItemToggled(child, e)"
57
+ @click="bubbleItemClicked"
58
+ >
59
+ <template v-for="slot of forwardSlots" #[slot]="scope">
60
+ <slot :name="slot" v-bind="scope ?? {}" />
61
+ </template>
62
+ </VcsTreeNode>
63
+ </div>
64
+ </v-expand-transition>
65
+ </div>
66
+ </template>
67
+
68
+ <script>
69
+ import { computed, getCurrentInstance } from 'vue';
70
+ import { VBtn, VExpandTransition, VIcon, VRow } from 'vuetify/components';
71
+ import { useIconSize } from '../../vuePlugins/vuetify.js';
72
+ import { getForwardSlots } from '../composables.js';
73
+ import ImageElementInjector from '../ImageElementInjector.vue';
74
+ import VcsActionButtonList from '../buttons/VcsActionButtonList.vue';
75
+ import VcsTreeviewTitle from './VcsTreeviewTitle.vue';
76
+
77
+ /**
78
+ * @typedef {Object} VcsTreeNodeItem
79
+ * @property {string} name
80
+ * @property {string} [title] - An optional translatable title.
81
+ * @property {string} [tooltip]
82
+ * @property {boolean} [clickable] - Whether this item reacts to click events.
83
+ * @property {boolean} [disabled] - Whether this item should be displayed as disabled.
84
+ * @property {Array<import("../../actions/actionHelper.js").VcsAction>} [actions]
85
+ * @property {Array<VcsTreeNodeItem>} [children] - An optional array of children. Can be binded to another key, using the `item-children` attributes of the VcsTreeview component.
86
+ * @property {string|HTMLCanvasElement|HTMLImageElement|undefined} [icon] - An optional icon to display with this item. Can be a URL or HTMLElement.
87
+ * @property {function(string):void} [clicked] - A callback called when the item is clicked.
88
+ */
89
+
90
+ /**
91
+ * @description
92
+ * A recursive component to render a treenode and its children.
93
+ * Exposes the `prepend`, `title` and `append` slots for customization.
94
+ * Emits `itemToggled` and `click` events.
95
+ * @vue-prop {VcsTreeNodeItem} item - The item to render.
96
+ * @vue-prop {Array<string>} opened - Names of the opened items.
97
+ * @vue-prop {number} [level=0] - The level of the item
98
+ * @vue-prop {string} [itemChildren='children'] - The property key of the children.
99
+ * @vue-prop {boolean} [openOnClick=false] - Whether to open items on title click..
100
+ * @vue-prop {string} [search] - The search string to filter the tree.
101
+ * @vue-data {slot} [#prepend] - A slot prepended to the item, binding the item. Default fallback renders an image.
102
+ * @vue-data {slot} [#title] - A slot to render the item title, binding the item. Default fallback renders a translatable title using the VcsTreeviewTitle component.
103
+ * @vue-data {slot} [#append] - A slot appended to the item, binding the item. Default fallback renders the VcsActionButtonList if the item has an array of Actions.
104
+ */
105
+ export default {
106
+ name: 'VcsTreeNode',
107
+ components: {
108
+ ImageElementInjector,
109
+ VBtn,
110
+ VExpandTransition,
111
+ VIcon,
112
+ VRow,
113
+ VcsActionButtonList,
114
+ VcsTreeviewTitle,
115
+ },
116
+ props: {
117
+ /** @type {VcsTreeNodeItem} */
118
+ item: {
119
+ type: Object,
120
+ required: true,
121
+ },
122
+ opened: {
123
+ type: Array,
124
+ required: true,
125
+ },
126
+ level: {
127
+ type: Number,
128
+ default: 0,
129
+ },
130
+ openOnClick: {
131
+ type: Boolean,
132
+ default: false,
133
+ },
134
+ itemChildren: {
135
+ type: String,
136
+ default: 'children',
137
+ },
138
+ search: {
139
+ type: String,
140
+ default: undefined,
141
+ },
142
+ },
143
+ emits: ['itemToggled', 'click'],
144
+ setup(props, { emit, slots }) {
145
+ const vm = getCurrentInstance().proxy;
146
+ const iconSize = useIconSize();
147
+ const forwardSlots = getForwardSlots(slots);
148
+
149
+ const isOpen = computed({
150
+ get: () => props.opened?.includes(props.item.name),
151
+ set: (value) => {
152
+ emit('itemToggled', props.item.name, value);
153
+ },
154
+ });
155
+
156
+ const children = computed(() => props.item[props.itemChildren] ?? []);
157
+
158
+ const matchFilter = computed(() => {
159
+ if (!props.search) {
160
+ return true;
161
+ }
162
+ const translatedTitle = (item) =>
163
+ item.title ? vm.$t(item.title) : item.name;
164
+
165
+ const hasText = (item) =>
166
+ translatedTitle(item)
167
+ .toLocaleLowerCase()
168
+ .indexOf(props.search.toLocaleLowerCase()) > -1 ||
169
+ item[props.itemChildren]?.some(hasText);
170
+
171
+ return hasText(props.item);
172
+ });
173
+
174
+ return {
175
+ forwardSlots,
176
+ isOpen,
177
+ matchFilter,
178
+ iconSize,
179
+ children,
180
+
181
+ // Bubble up events for the nested tree-items
182
+ bubbleItemToggled: (itemName, openState) => {
183
+ emit('itemToggled', itemName, openState);
184
+ },
185
+ bubbleItemClicked: (item, event) => {
186
+ emit('click', item, event);
187
+ },
188
+ };
189
+ },
190
+ };
191
+ </script>
192
+
193
+ <style lang="scss" scoped>
194
+ .treenode {
195
+ align-items: center !important;
196
+ min-height: calc(var(--v-vcs-font-size) * 2 + 6px);
197
+ }
198
+ @for $i from 0 through 6 {
199
+ .level-#{$i} {
200
+ padding-left: calc(var(--v-vcs-font-size) * $i + 2px);
201
+ &.item {
202
+ & > .prepend:not(:has(.v-icon)) {
203
+ margin-left: calc(var(--v-vcs-font-size) * 2);
204
+ }
205
+ & > .prepend:has(.v-icon) {
206
+ margin-left: 4px;
207
+ }
208
+ }
209
+ }
210
+ }
211
+ .prepend {
212
+ :deep(.v-icon) {
213
+ margin-right: 6px;
214
+ display: flex;
215
+ align-items: start;
216
+ }
217
+ }
218
+ // Indent children padding
219
+ .children {
220
+ padding-left: var(--v-vcs-font-size);
221
+ }
222
+ // set the size of the buttons, except for the ActionButtonList
223
+ :deep(.v-btn):not(.vcs-button) {
224
+ width: var(--v-vcs-font-size);
225
+ height: var(--v-vcs-font-size);
226
+ // for alignment of chevron
227
+ display: flex;
228
+ &.chevron-btn {
229
+ margin-left: 4px;
230
+ margin-right: 8px;
231
+ }
232
+ }
233
+ // remove hover shadow over button
234
+ :deep(.v-btn__overlay) {
235
+ --v-hover-opacity: 0;
236
+ }
237
+ </style>
@@ -0,0 +1,31 @@
1
+ declare const _default: import("vue").DefineSetupFnComponent<Record<string, any>, {}, {}, Record<string, any> & {}, import("vue").PublicProps>;
2
+ export default _default;
3
+ export type VcsTreeNodeItem = {
4
+ name: string;
5
+ /**
6
+ * - An optional translatable title.
7
+ */
8
+ title?: string | undefined;
9
+ tooltip?: string | undefined;
10
+ /**
11
+ * - Whether this item reacts to click events.
12
+ */
13
+ clickable?: boolean | undefined;
14
+ /**
15
+ * - Whether this item should be displayed as disabled.
16
+ */
17
+ disabled?: boolean | undefined;
18
+ actions?: import("../../actions/actionHelper.js", { with: { "resolution-mode": "import" } }).VcsAction[] | undefined;
19
+ /**
20
+ * - An optional array of children. Can be binded to another key, using the `item-children` attributes of the VcsTreeview component.
21
+ */
22
+ children?: VcsTreeNodeItem[] | undefined;
23
+ /**
24
+ * - An optional icon to display with this item. Can be a URL or HTMLElement.
25
+ */
26
+ icon?: string | HTMLCanvasElement | HTMLImageElement | undefined;
27
+ /**
28
+ * - A callback called when the item is clicked.
29
+ */
30
+ clicked?: ((arg0: string) => void) | undefined;
31
+ };