@vcmap/ui 5.0.0-rc.15 → 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 (75) hide show
  1. package/config/base.config.json +4 -0
  2. package/config/dev.config.json +5 -1
  3. package/config/www.config.json +5 -3
  4. package/dist/assets/{cesium.2e288a.js → cesium.430460.js} +0 -0
  5. package/dist/assets/cesium.js +1 -1
  6. package/dist/assets/{core.8014d3.js → core.5089ba.js} +5925 -4374
  7. package/dist/assets/core.js +1 -1
  8. package/dist/assets/{index.3f74fa92.js → index.854f8e2b.js} +1 -1
  9. package/dist/assets/{ol.31c3a5.js → ol.9be53a.js} +0 -0
  10. package/dist/assets/ol.js +1 -1
  11. package/dist/assets/ui.49010a.css +1 -0
  12. package/dist/assets/{ui.36f84f.js → ui.49010a.js} +3907 -3232
  13. package/dist/assets/ui.js +1 -1
  14. package/dist/assets/{vue.a39c10.js → vue.247c1c.js} +0 -0
  15. package/dist/assets/vue.js +2 -2
  16. package/dist/assets/{vuetify.378637.css → vuetify.735e58.css} +1 -1
  17. package/dist/assets/{vuetify.378637.js → vuetify.735e58.js} +1 -1
  18. package/dist/assets/vuetify.js +2 -2
  19. package/dist/index.html +1 -1
  20. package/index.html +77 -0
  21. package/index.js +4 -0
  22. package/package.json +4 -2
  23. package/plugins/@vcmap/create-link/fallbackCreateLink.vue +4 -1
  24. package/plugins/@vcmap/create-link/index.js +4 -1
  25. package/plugins/@vcmap/pluginExample/exampleActions.js +45 -0
  26. package/plugins/@vcmap/pluginExample/index.js +24 -1
  27. package/plugins/@vcmap/pluginExample/pluginExampleComponent.vue +70 -42
  28. package/plugins/@vcmap/search-nominatim/nominatim.js +1 -1
  29. package/plugins/@vcmap/theme-changer/ThemeChangerComponent.vue +4 -2
  30. package/plugins/notifier/index.js +31 -0
  31. package/plugins/notifier/notifierTester.vue +88 -0
  32. package/plugins/package.json +1 -1
  33. package/plugins/test/allIconsComponent.vue +2 -2
  34. package/plugins/test/emptyComponent.vue +1 -1
  35. package/plugins/test/index.js +22 -0
  36. package/plugins/test/myCustomHeader.vue +9 -1
  37. package/plugins/test/testList.vue +287 -0
  38. package/plugins/test/windowManagerExample.vue +3 -0
  39. package/plugins/wizardExample/index.js +41 -0
  40. package/plugins/wizardExample/wizardExample.vue +77 -0
  41. package/src/application/VcsApp.vue +18 -8
  42. package/src/components/form-inputs-controls/VcsFormSection.vue +10 -10
  43. package/src/components/form-inputs-controls/VcsSelect.vue +33 -1
  44. package/src/components/form-inputs-controls/VcsTextField.vue +11 -3
  45. package/src/components/form-inputs-controls/VcsWizard.vue +133 -0
  46. package/src/components/imageElementInjector.vue +22 -0
  47. package/src/components/lists/VcsList.vue +466 -0
  48. package/src/components/lists/VcsTreeview.vue +1 -2
  49. package/src/components/lists/VcsTreeviewLeaf.vue +18 -50
  50. package/src/components/lists/VcsTreeviewSearchbar.vue +1 -23
  51. package/src/components/tables/VcsTable.vue +13 -1
  52. package/src/contentTree/LayerTree.vue +1 -1
  53. package/src/contentTree/contentTreeItem.js +13 -13
  54. package/src/contentTree/subContentTreeItem.js +1 -1
  55. package/src/contentTree/vcsObjectContentTreeItem.js +1 -1
  56. package/src/featureInfo/BalloonComponent.vue +10 -8
  57. package/src/featureInfo/balloonFeatureInfoView.js +14 -14
  58. package/src/featureInfo/balloonHelper.js +4 -0
  59. package/src/featureInfo/featureInfo.js +13 -0
  60. package/src/featureInfo/featureInfoInteraction.js +1 -1
  61. package/src/i18n/de.js +7 -0
  62. package/src/i18n/en.js +7 -0
  63. package/src/icons/+all.js +4 -0
  64. package/src/icons/WandIcon.vue +63 -0
  65. package/src/manager/window/WindowComponent.vue +9 -2
  66. package/src/manager/window/WindowComponentHeader.vue +33 -7
  67. package/src/manager/window/WindowManager.vue +1 -0
  68. package/src/manager/window/windowManager.js +11 -1
  69. package/src/navigation/overviewMap.js +10 -9
  70. package/src/notifier/notifier.js +121 -0
  71. package/src/notifier/notifierComponent.vue +84 -0
  72. package/src/styles/variables.scss +19 -3
  73. package/src/vcsUiApp.js +19 -1
  74. package/src/vuePlugins/vuetify.js +2 -0
  75. package/dist/assets/ui.36f84f.css +0 -1
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "dependencies": {
3
- "@vcmap/hello-world": "^1.0.0",
3
+ "@vcmap/hello-world": "^1.0.7",
4
4
  "@vcmap/print": "^1.0.1"
5
5
  }
6
6
  }
@@ -27,14 +27,14 @@
27
27
 
28
28
  export default {
29
29
  name: 'AllIconsComponent',
30
- components: [
30
+ components: {
31
31
  VSheet,
32
32
  VList,
33
33
  VListItem,
34
34
  VListItemIcon,
35
35
  VIcon,
36
36
  VListItemTitle,
37
- ],
37
+ },
38
38
  computed: {
39
39
  icons() {
40
40
  return Object.keys(Icons).map(n => `$${n}`);
@@ -11,6 +11,6 @@
11
11
 
12
12
  export default {
13
13
  name: 'EmptyComponent',
14
- components: [VSheet],
14
+ components: { VSheet },
15
15
  };
16
16
  </script>
@@ -7,6 +7,7 @@ import { toolboxData } from './toolbox-data.js';
7
7
  import editor from './editor.vue';
8
8
  import windowManagerExample from './windowManagerExample.vue';
9
9
  import AllIconsComponent from './allIconsComponent.vue';
10
+ import TestList from './testList.vue';
10
11
 
11
12
  let source;
12
13
 
@@ -97,11 +98,27 @@ export default async function () {
97
98
  app.windowManager,
98
99
  '@vcmap/test',
99
100
  );
101
+ const { action: listAction, destroy: destroyList } = createToggleAction(
102
+ {
103
+ name: 'TestList',
104
+ },
105
+ {
106
+ id: 'testList',
107
+ state: {
108
+ headerTitle: 'Test List',
109
+ },
110
+ slot: WindowSlot.DYNAMIC_LEFT,
111
+ component: TestList,
112
+ },
113
+ app.windowManager,
114
+ '@vcmap/test',
115
+ );
100
116
  this._destroyActions = [
101
117
  destroyConfigEditorAction,
102
118
  destroyWindowAction,
103
119
  destroyIconAction,
104
120
  destroryClipboardDialogAction,
121
+ destroyList,
105
122
  ];
106
123
  const alertAction = {
107
124
  name: 'VC Systems',
@@ -130,6 +147,11 @@ export default async function () {
130
147
  '@vcmap/test',
131
148
  ButtonLocation.TOOL,
132
149
  );
150
+ app.navbarManager.add(
151
+ { id: 'list', action: listAction },
152
+ '@vcmap/test',
153
+ ButtonLocation.TOOL,
154
+ );
133
155
  app.navbarManager.add(
134
156
  {
135
157
  id: 'createLink',
@@ -1,6 +1,9 @@
1
1
  <template>
2
2
  <div>
3
- Ha, this is a custom Header with a <span @click="clicked"> CLOSE thing </span>
3
+ <div>
4
+ Ha, this is a custom Header with a <span @click="clicked"> CLOSE thing. </span>
5
+ </div>
6
+ <div>And here is '<b>{{ sample }}</b>' passed through</div>
4
7
  </div>
5
8
  </template>
6
9
 
@@ -8,6 +11,11 @@
8
11
 
9
12
  export default {
10
13
  name: 'MyCustomHeader',
14
+ props: {
15
+ sample: {
16
+ type: String,
17
+ },
18
+ },
11
19
  setup(props, { emit }) {
12
20
  return {
13
21
  clicked: () => {
@@ -0,0 +1,287 @@
1
+ <template>
2
+ <v-sheet>
3
+ <v-sheet class="pa-2">
4
+ <v-switch
5
+ v-model="selectable"
6
+ label="Selectable"
7
+ />
8
+ <v-switch
9
+ :disabled="!selectable"
10
+ v-model="selectSingle"
11
+ label=" Single Select"
12
+ />
13
+ <v-switch
14
+ v-model="searchable"
15
+ label="Searchable"
16
+ />
17
+ <v-dialog
18
+ v-model="dialog"
19
+ width="400"
20
+ >
21
+ <template #activator="{ on }">
22
+ <vcs-button v-on="on">
23
+ Add An item
24
+ </vcs-button>
25
+ </template>
26
+ <v-card class="pa-2">
27
+ <v-form
28
+ @submit.prevent="add"
29
+ >
30
+ <vcs-text-field
31
+ v-model="newItem.name"
32
+ label="Name"
33
+ :rules="required"
34
+ />
35
+ <vcs-text-field
36
+ v-model="newItem.title"
37
+ label="Title"
38
+ :rules="required"
39
+ />
40
+ <v-switch label="visible" v-model="newItem.visible" />
41
+ <v-switch label="disabled" v-model="newItem.disabled" />
42
+ <v-switch label="random icon" v-model="newItem.icon" />
43
+ <v-switch label="console.log action" v-model="newItem.action" />
44
+ <v-switch label="console.log on clicked" v-model="newItem.clicked" />
45
+ <v-switch label="console.log selected state" v-model="newItem.selected" />
46
+ <vcs-button
47
+ type="submit"
48
+ >
49
+ Add
50
+ </vcs-button>
51
+ </v-form>
52
+ </v-card>
53
+ </v-dialog>
54
+ <v-divider class="ma-2" />
55
+ <v-switch
56
+ v-model="showTitle"
57
+ label="Show Title"
58
+ />
59
+ <vcs-text-field v-model="title" placeholder="Title" />
60
+ <v-switch
61
+ v-model="titleActions"
62
+ label="Title Actions"
63
+ />
64
+ <v-switch
65
+ v-model="titleIcon"
66
+ label="Title Icon"
67
+ />
68
+ <v-divider class="ma-2" />
69
+ <template v-if="selectable">
70
+ <vcs-button
71
+ @click="selected = []"
72
+ >
73
+ Clear Selection
74
+ </vcs-button>
75
+ <v-switch v-model="showSelection" label="Show Selection" />
76
+ <ul v-if="showSelection">
77
+ <li
78
+ v-for="(i, index) in selected"
79
+ :key="`item-${index}`"
80
+ >
81
+ {{ i.title }}
82
+ </li>
83
+ </ul>
84
+ </template>
85
+ <v-divider class="ma-2" />
86
+ </v-sheet>
87
+
88
+ <vcs-list
89
+ :items="items"
90
+ :selectable="selectable"
91
+ :single-select="selectSingle"
92
+ :searchable="searchable"
93
+ :show-title="showTitle"
94
+ :icon="titleIconSrc"
95
+ :actions="titleActionsArray"
96
+ :title="title"
97
+ v-model="selected"
98
+ />
99
+ </v-sheet>
100
+ </template>
101
+
102
+ <script>
103
+ import { VcsList, VcsButton, VcsTextField, Icons } from '@vcmap/ui';
104
+ import {
105
+ VSwitch,
106
+ VDivider,
107
+ VSheet,
108
+ VDialog,
109
+ VCard,
110
+ VForm,
111
+ } from 'vuetify/lib';
112
+ import { computed, ref } from 'vue';
113
+
114
+ function getRandomIcon() {
115
+ const keys = Object.keys(Icons);
116
+ const index = Math.floor(keys.length * Math.random());
117
+ return `$${keys[index]}`;
118
+ }
119
+
120
+ const defaultItems = [
121
+ {
122
+ name: 'foo',
123
+ title: 'Foo',
124
+ tooltip: 'this is the foo',
125
+ icon: 'mdi-pen',
126
+ },
127
+ {
128
+ name: 'bar',
129
+ title: 'Bar',
130
+ tooltip: 'just a bar',
131
+ actions: [
132
+ {
133
+ name: 'console.log',
134
+ callback() {
135
+ console.log('bar action');
136
+ },
137
+ },
138
+ ],
139
+ },
140
+ {
141
+ name: 'bar',
142
+ title: 'Baz',
143
+ tooltip: 'special baz',
144
+ },
145
+ ];
146
+
147
+ export default {
148
+ name: 'TestList',
149
+ components: {
150
+ VcsList,
151
+ VcsButton,
152
+ VcsTextField,
153
+ VSwitch,
154
+ VDivider,
155
+ VSheet,
156
+ VDialog,
157
+ VCard,
158
+ VForm,
159
+ },
160
+ setup() {
161
+ const selectable = ref(true);
162
+ const searchable = ref(true);
163
+ const selectSingle = ref(false);
164
+ const showSelection = ref(false);
165
+ const showTitle = ref(true);
166
+ const title = ref('Title');
167
+ const titleActionsArray = ref([]);
168
+ const titleIconSrc = ref(null);
169
+ const selected = ref([]);
170
+ const items = ref(defaultItems);
171
+ const newItem = ref({
172
+ name: 'foo',
173
+ title: 'foo',
174
+ disabled: false,
175
+ visible: true,
176
+ icon: false,
177
+ action: false,
178
+ clicked: false,
179
+ selected: false,
180
+ });
181
+ const dialog = ref(false);
182
+
183
+ return {
184
+ selectable,
185
+ searchable,
186
+ selectSingle,
187
+ selected,
188
+ showSelection,
189
+ showTitle,
190
+ title,
191
+ titleActionsArray,
192
+ titleIconSrc,
193
+ items,
194
+ newItem,
195
+ dialog,
196
+ required: [
197
+ v => !!v || 'Input may not be null',
198
+ v => v.length > 0 || 'Input must have a length',
199
+ ],
200
+ add() {
201
+ const item = {
202
+ name: newItem.value.name,
203
+ title: newItem.value.title,
204
+ disabled: newItem.value.disabled,
205
+ visible: newItem.value.visible,
206
+ };
207
+
208
+ if (newItem.value.icon) {
209
+ item.icon = getRandomIcon();
210
+ }
211
+
212
+ if (newItem.value.action) {
213
+ item.actions = [
214
+ {
215
+ name: 'console.log',
216
+ callback() {
217
+ console.log('hi, i\'m: ', item.name);
218
+ },
219
+ },
220
+ ];
221
+ }
222
+
223
+ if (newItem.value.clicked) {
224
+ item.clicked = () => {
225
+ console.log(`${item.name} just got clicked`);
226
+ };
227
+ }
228
+
229
+ if (newItem.value.selected) {
230
+ item.selectionChanged = (selected) => {
231
+ if (selected) {
232
+ console.log(`${item.name} is selected`);
233
+ } else {
234
+ console.log(`${item.name} is no longer selected`);
235
+ }
236
+ };
237
+ }
238
+ items.value.push(item);
239
+ newItem.value = {
240
+ name: 'foo',
241
+ title: 'foo',
242
+ disabled: false,
243
+ visible: true,
244
+ icon: false,
245
+ action: false,
246
+ clicked: false,
247
+ selected: false,
248
+ };
249
+ dialog.value = false;
250
+ },
251
+ titleActions: computed({
252
+ get() {
253
+ return titleActionsArray.value.length > 0;
254
+ },
255
+ set(value) {
256
+ if (value) {
257
+ titleActionsArray.value = [{
258
+ name: 'console.log foo',
259
+ callback() {
260
+ console.log('foo');
261
+ },
262
+ }];
263
+ } else {
264
+ titleActionsArray.value = [];
265
+ }
266
+ },
267
+ }),
268
+ titleIcon: computed({
269
+ get() {
270
+ return !!titleIconSrc.value;
271
+ },
272
+ set(value) {
273
+ if (value) {
274
+ titleIconSrc.value = getRandomIcon();
275
+ } else {
276
+ titleIconSrc.value = null;
277
+ }
278
+ },
279
+ }),
280
+ };
281
+ },
282
+ };
283
+ </script>
284
+
285
+ <style lang="scss" scoped>
286
+
287
+ </style>
@@ -51,6 +51,9 @@
51
51
  component: EmptyComponent,
52
52
  headerComponent: MyCustomHeader,
53
53
  slot: WindowSlot.DYNAMIC_RIGHT,
54
+ props: {
55
+ sample: 'A window property',
56
+ },
54
57
  },
55
58
  {
56
59
  id: 'dynamicRight2',
@@ -0,0 +1,41 @@
1
+ import { createToggleAction, ButtonLocation, WindowSlot } from '@vcmap/ui';
2
+ import WizardExample from './wizardExample.vue';
3
+
4
+ export default async () => {
5
+ return {
6
+ name: 'wizardExample',
7
+ onVcsAppMounted(app) {
8
+ const { action, destroy } = createToggleAction(
9
+ {
10
+ name: 'wizardExample',
11
+ icon: '$vcsLegend',
12
+ title: 'VCS Wizard Example',
13
+ },
14
+ {
15
+ id: 'wizard-example',
16
+ component: WizardExample,
17
+ slot: WindowSlot.DYNAMIC_LEFT,
18
+ state: {
19
+ headerTitle: 'VCS Wizard',
20
+ headerIcon: '$vcsWand',
21
+ styles: { width: '350px', height: 'auto' },
22
+ },
23
+ },
24
+ app.windowManager,
25
+ 'wizardExample',
26
+ );
27
+ app.navbarManager.add(
28
+ { id: 'wizard-example', action },
29
+ 'wizardExample',
30
+ ButtonLocation.TOOL,
31
+ );
32
+ this._destroyAction = destroy;
33
+ },
34
+ destroy() {
35
+ if (this._destroyAction) {
36
+ this._destroyAction();
37
+ this._destroyAction = null;
38
+ }
39
+ },
40
+ };
41
+ };
@@ -0,0 +1,77 @@
1
+ <template>
2
+ <VcsWizard
3
+ v-model="step"
4
+ >
5
+ <v-stepper-step
6
+ step="1"
7
+ editable
8
+ :complete="step > 1"
9
+ >
10
+ This is the first step
11
+ </v-stepper-step>
12
+ <v-stepper-content
13
+ step="1"
14
+ >
15
+ <v-sheet>
16
+ This is the content of the first step.
17
+ </v-sheet>
18
+ <VcsButton
19
+ @click="increaseStep()"
20
+ class="my-2"
21
+ >
22
+ Next
23
+ </VcsButton>
24
+ </v-stepper-content>
25
+ <v-stepper-step
26
+ :rules="[() => false]"
27
+ step="2"
28
+ editable
29
+ >
30
+ This is the second step
31
+ </v-stepper-step>
32
+ <v-stepper-content
33
+ step="2"
34
+ >
35
+ <VcsSelect
36
+ :items="['this', 'is', 'a', 'test']"
37
+ label="Select"
38
+ class="my-2"
39
+ />
40
+ <VcsButton
41
+ @click="decreaseStep()"
42
+ >
43
+ Back
44
+ </VcsButton>
45
+ </v-stepper-content>
46
+ </VcsWizard>
47
+ </template>
48
+
49
+ <script>
50
+ import { VcsWizard, VcsButton, VcsSelect } from '@vcmap/ui';
51
+ import { VStepperStep, VStepperContent, VSheet } from 'vuetify/lib';
52
+ import { ref } from 'vue';
53
+
54
+ export default {
55
+ name: 'WizardExample',
56
+ components: {
57
+ VcsWizard,
58
+ VStepperStep,
59
+ VStepperContent,
60
+ VSheet,
61
+ VcsButton,
62
+ VcsSelect,
63
+ },
64
+ setup() {
65
+ const step = ref(1);
66
+ return {
67
+ step,
68
+ increaseStep() { step.value += 1; },
69
+ decreaseStep() { step.value -= 1; },
70
+ };
71
+ },
72
+ };
73
+ </script>
74
+
75
+ <style scoped>
76
+
77
+ </style>
@@ -20,6 +20,7 @@
20
20
  <MapNavigation />
21
21
  <ToolboxManagerComponent />
22
22
  <WindowManagerComponent />
23
+ <NotifierComponent />
23
24
  </v-container>
24
25
  <v-footer absolute v-if="$vuetify.breakpoint.smAndUp" min-height="22px">
25
26
  <VcsAttributionsFooter :entries="attributionEntries" :attribution-action="attributionAction" />
@@ -73,6 +74,7 @@
73
74
  } from 'vue';
74
75
  import { getVcsAppById } from '@vcmap/core';
75
76
  import { VContainer, VFooter } from 'vuetify/lib';
77
+ import { getLogger } from '@vcsuite/logger';
76
78
  import WindowManagerComponent from '../manager/window/WindowManager.vue';
77
79
  import ToolboxManagerComponent from '../manager/toolbox/ToolboxManager.vue';
78
80
  import { ButtonLocation } from '../manager/navbarManager.js';
@@ -91,6 +93,7 @@
91
93
  import VcsButton from '../components/buttons/VcsButton.vue';
92
94
  import VcsAttributions from './VcsAttributions.vue';
93
95
  import { getAttributions } from './attributionsHelper.js';
96
+ import NotifierComponent from '../notifier/notifierComponent.vue';
94
97
 
95
98
  /**
96
99
  * You should call this function in the component providing the vcsUiApp to your
@@ -101,17 +104,23 @@
101
104
  * @returns {function():void}
102
105
  */
103
106
  export function setupPluginMountedListeners(app) {
104
- [...app.plugins].forEach((plugin) => {
107
+ /**
108
+ * wrapped execution of onVcsAppMounted hook
109
+ * @param {VcsPlugin} plugin
110
+ */
111
+ function onVcsAppMounted(plugin) {
105
112
  if (plugin.onVcsAppMounted) {
106
- plugin.onVcsAppMounted(app);
113
+ try {
114
+ plugin.onVcsAppMounted(app);
115
+ } catch (e) {
116
+ getLogger('VcsUiApp').error(`Error in plugin ${plugin.name} onVcsAppMounted hook`, e);
117
+ }
107
118
  }
108
- });
119
+ }
109
120
 
110
- return app.plugins.added.addEventListener((plugin) => {
111
- if (plugin.onVcsAppMounted) {
112
- plugin.onVcsAppMounted(app);
113
- }
114
- });
121
+ [...app.plugins].forEach(onVcsAppMounted);
122
+
123
+ return app.plugins.added.addEventListener(onVcsAppMounted);
115
124
  }
116
125
 
117
126
  /**
@@ -405,6 +414,7 @@
405
414
  ToolboxManagerComponent,
406
415
  VContainer,
407
416
  VFooter,
417
+ NotifierComponent,
408
418
  },
409
419
  props: {
410
420
  appId: {
@@ -1,9 +1,9 @@
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
8
  :actions="actions"
9
9
  small
@@ -37,13 +37,13 @@
37
37
  /**
38
38
  * @description
39
39
  * Stylized form section with action buttons
40
- * @vue-data {slot} [#title] - slot to override form section header
40
+ * @vue-data {slot} [#header] - slot to override form section header
41
41
  * @vue-data {slot} [#default] - slot with the section content
42
42
  * @vue-data {slot} [#help] - Slot to specify html based help. Gets precedence over helpText prop.
43
- * @vue-prop {string} title - Title to be displayed, will be translated.
44
- * @vue-prop {Array<VcsAction>} titleActions - Icons to be displayed on the right side
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
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 title actions extended by a help action, if help prop is passed or help slot is used.
46
+ * @vue-computed {Array<VcsAction>} actions - Returns header actions extended by a help action, if help prop is passed or help slot is used.
47
47
  */
48
48
  export default {
49
49
  name: 'VcsFormSection',
@@ -52,11 +52,11 @@
52
52
  VAlert,
53
53
  },
54
54
  props: {
55
- title: {
55
+ heading: {
56
56
  type: String,
57
57
  default: undefined,
58
58
  },
59
- titleActions: {
59
+ headerActions: {
60
60
  type: Array,
61
61
  default: () => ([]),
62
62
  },
@@ -78,9 +78,9 @@
78
78
  */
79
79
  const actions = computed(() => {
80
80
  if (props.helpText || (slots.help && slots.help().length > 0)) {
81
- return [helpAction, ...props.titleActions];
81
+ return [helpAction, ...props.headerActions];
82
82
  }
83
- return props.titleActions;
83
+ return props.headerActions;
84
84
  });
85
85
 
86
86
  return {