@vcmap/ui 6.0.0-rc.3 → 6.0.0-rc.6

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 (235) hide show
  1. package/build/buildHelpers.js +60 -11
  2. package/build/buildTypes.js +9 -5
  3. package/build/bundle.js +1 -1
  4. package/build/info/publish.js +25 -31
  5. package/build/lintTypes.js +5 -0
  6. package/config/base.config.json +2 -7
  7. package/config/dev.config.json +11 -1
  8. package/config/projects.config.json +2 -1
  9. package/config/theming.config.json +68 -0
  10. package/config/www.config.json +27 -23
  11. package/dist/assets/@mdi/font/css/{materialdesignicons.min-7a4f6be0.css → materialdesignicons.min-680621ca.css} +1 -1
  12. package/dist/assets/{cesium-cb4dbfba.js → cesium-ccb4cc30.js} +272 -385
  13. package/dist/assets/cesium.js +1 -1
  14. package/dist/assets/{core-72f21835.js → core-e06aa7a6.js} +2313 -2321
  15. package/dist/assets/core.js +1 -1
  16. package/dist/assets/{ol-2d33bc8b.js → ol-e7981d5c.js} +233 -329
  17. package/dist/assets/ol.js +1 -1
  18. package/dist/assets/ui-5dda32d2.css +1 -0
  19. package/dist/assets/{ui-2ab43a16.js → ui-5dda32d2.js} +11344 -11078
  20. package/dist/assets/ui.js +1 -1
  21. package/dist/assets/vue-87bc6efe.js +6083 -0
  22. package/dist/assets/vue.js +1 -1
  23. package/dist/assets/{vuetify-760ced3b.css → vuetify-4c4e4217.css} +2 -2
  24. package/dist/assets/{vuetify-760ced3b.js → vuetify-4c4e4217.js} +8063 -8262
  25. package/dist/assets/vuetify.js +1 -1
  26. package/index.d.ts +27 -17
  27. package/index.js +16 -8
  28. package/package.json +17 -17
  29. package/plugins/@vcmap-show-case/custom-icons-example/README.md +3 -0
  30. package/plugins/@vcmap-show-case/custom-icons-example/assets/imageExample.png +0 -0
  31. package/plugins/@vcmap-show-case/custom-icons-example/assets/svgExample.svg +1 -0
  32. package/plugins/@vcmap-show-case/custom-icons-example/package.json +5 -0
  33. package/plugins/@vcmap-show-case/custom-icons-example/src/CustomIconsExample.vue +90 -0
  34. package/plugins/@vcmap-show-case/custom-icons-example/src/index.js +45 -0
  35. package/plugins/@vcmap-show-case/form-inputs-example/src/FormInputsExample.vue +2 -3
  36. package/plugins/@vcmap-show-case/plugin-editors/src/PluginEditors.vue +11 -7
  37. package/plugins/@vcmap-show-case/project-selector/src/ModulesListComponent.vue +18 -11
  38. package/plugins/@vcmap-show-case/search-example/src/index.js +1 -0
  39. package/plugins/@vcmap-show-case/search-example/src/searchImpl.js +35 -5
  40. package/plugins/@vcmap-show-case/theming-example/README.md +3 -0
  41. package/plugins/@vcmap-show-case/theming-example/package.json +5 -0
  42. package/plugins/@vcmap-show-case/theming-example/src/ThemingExample.vue +116 -0
  43. package/plugins/@vcmap-show-case/theming-example/src/index.js +53 -0
  44. package/plugins/@vcmap-show-case/toolbox-example/src/index.js +2 -1
  45. package/plugins/package.json +7 -23
  46. package/public/assets/@mdi/font/css/materialdesignicons.min.css +1 -1
  47. package/src/actions/StyleSelector.vue +1 -1
  48. package/src/actions/actionHelper.d.ts +4 -11
  49. package/src/actions/actionHelper.js +15 -7
  50. package/src/actions/listActions.d.ts +5 -5
  51. package/src/actions/listActions.js +2 -2
  52. package/src/application/VcsApp.vue +113 -50
  53. package/src/application/VcsApp.vue.d.ts +301 -4
  54. package/src/application/VcsAttributionsFooter.vue.d.ts +1 -1
  55. package/src/application/VcsContainer.vue +27 -10
  56. package/src/application/VcsContainer.vue.d.ts +241 -0
  57. package/src/application/VcsMainMap.vue +7 -7
  58. package/src/application/VcsMainMap.vue.d.ts +2 -2
  59. package/src/application/VcsNavbar.vue +14 -2
  60. package/src/application/VcsNavbar.vue.d.ts +1 -0
  61. package/src/application/VcsSplashScreen.vue +33 -26
  62. package/src/application/VcsTextPageFooter.vue +2 -1
  63. package/src/application/attributionsHelper.d.ts +20 -22
  64. package/src/application/attributionsHelper.js +4 -4
  65. package/src/callback/vcsCallback.d.ts +2 -2
  66. package/src/callback/vcsCallback.js +1 -1
  67. package/src/components/buttons/VcsActionButtonList.vue +61 -6
  68. package/src/components/buttons/VcsActionButtonList.vue.d.ts +28 -0
  69. package/src/components/buttons/VcsButton.vue +2 -4
  70. package/src/components/buttons/VcsButton.vue.d.ts +1 -1
  71. package/src/components/buttons/VcsFormButton.vue +4 -4
  72. package/src/components/buttons/VcsToolButton.vue +4 -2
  73. package/src/components/buttons/VcsToolButton.vue.d.ts +2 -2
  74. package/src/components/composables.d.ts +5 -0
  75. package/src/components/composables.js +79 -9
  76. package/src/components/extent/VcsExtent.vue +10 -6
  77. package/src/components/extent/VcsExtent.vue.d.ts +1 -0
  78. package/src/components/flight/VcsFlightComponent.vue +13 -13
  79. package/src/components/flight/VcsFlightComponent.vue.d.ts +1 -0
  80. package/src/components/form-inputs-controls/VcsCheckbox.vue +8 -3
  81. package/src/components/form-inputs-controls/VcsChipArrayInput.vue +13 -16
  82. package/src/components/form-inputs-controls/VcsChipArrayInput.vue.d.ts +2 -4
  83. package/src/components/form-inputs-controls/VcsCoordinate.vue +4 -4
  84. package/src/components/form-inputs-controls/VcsFileInput.vue +1 -1
  85. package/src/components/form-inputs-controls/VcsLabel.vue +1 -1
  86. package/src/components/form-inputs-controls/VcsRadio.vue +8 -6
  87. package/src/components/form-inputs-controls/VcsRadio.vue.d.ts +1 -0
  88. package/src/components/form-inputs-controls/VcsSelect.vue +2 -5
  89. package/src/components/form-inputs-controls/VcsSlider.vue +5 -6
  90. package/src/components/form-inputs-controls/VcsSlider.vue.d.ts +2 -4
  91. package/src/components/form-inputs-controls/VcsTextArea.vue +2 -5
  92. package/src/components/form-inputs-controls/VcsTextField.vue +24 -1
  93. package/src/components/form-inputs-controls/VcsTextField.vue.d.ts +11 -1
  94. package/src/components/form-inputs-controls/VcsWizard.vue +3 -3
  95. package/src/components/form-inputs-controls/VcsWizardStep.vue +6 -5
  96. package/src/components/form-inputs-controls/vcsTextField.scss +8 -5
  97. package/src/components/form-output/VcsFormattedNumber.vue +7 -5
  98. package/src/components/form-output/VcsMarkdown.vue +15 -12
  99. package/src/components/form-output/VcsMarkdown.vue.d.ts +1 -0
  100. package/src/components/form-output/markdownHelper.d.ts +30 -0
  101. package/src/components/form-output/markdownHelper.js +398 -0
  102. package/src/components/import/VcsFileDrop.vue +8 -5
  103. package/src/components/import/VcsImportComponent.vue +8 -4
  104. package/src/components/import/VcsImportComponent.vue.d.ts +1 -2
  105. package/src/components/lists/VcsActionList.vue +6 -6
  106. package/src/components/lists/VcsList.vue +22 -37
  107. package/src/components/lists/VcsList.vue.d.ts +14 -55
  108. package/src/components/lists/{VcsListItem.vue → VcsListItemComponent.vue} +37 -11
  109. package/src/components/lists/VcsListItemComponent.vue.d.ts +79 -0
  110. package/src/components/lists/VcsTreeview.vue +95 -26
  111. package/src/components/lists/VcsTreeview.vue.d.ts +16 -3
  112. package/src/components/lists/VcsTreeviewSearchbar.vue +16 -5
  113. package/src/components/lists/VcsTreeviewSearchbar.vue.d.ts +3 -1
  114. package/src/components/lists/VcsTreeviewTitle.vue +36 -0
  115. package/src/components/modelHelper.d.ts +10 -8
  116. package/src/components/modelHelper.js +8 -6
  117. package/src/components/notification/VcsHelp.vue +6 -7
  118. package/src/components/notification/VcsHelp.vue.d.ts +0 -8
  119. package/src/components/plugins/AbstractConfigEditor.vue +1 -22
  120. package/src/components/plugins/AbstractConfigEditor.vue.d.ts +6 -29
  121. package/src/components/section/VcsExpansionPanel.vue +9 -3
  122. package/src/components/section/VcsExpansionPanel.vue.d.ts +2 -2
  123. package/src/components/section/VcsFormSection.vue +13 -7
  124. package/src/components/section/VcsFormSection.vue.d.ts +2 -3
  125. package/src/components/style/VcsImageSelector.vue +14 -6
  126. package/src/components/style/VcsImageSelector.vue.d.ts +1 -0
  127. package/src/components/style/VcsStrokeSelector.vue +5 -2
  128. package/src/components/style/VcsStrokeSelector.vue.d.ts +1 -0
  129. package/src/components/style/VcsTextMenu.vue +3 -3
  130. package/src/components/style/VcsVectorStyleComponent.vue +1 -1
  131. package/src/components/tables/VcsDataTable.vue +42 -32
  132. package/src/components/tables/VcsDataTable.vue.d.ts +1 -0
  133. package/src/components/tables/VcsTable.vue +45 -62
  134. package/src/components/tables/VcsTable.vue.d.ts +30 -17
  135. package/src/components/tables/VcsTableCell.vue +72 -0
  136. package/src/components/tables/VcsTableCell.vue.d.ts +13 -0
  137. package/src/components/vector-properties/VcsFeatureEditingWindow.vue +6 -5
  138. package/src/components/vector-properties/VcsFeatureTransforms.vue +5 -0
  139. package/src/components/vector-properties/VcsVectorPropertiesComponent.vue +42 -31
  140. package/src/components/vector-properties/VcsVectorPropertiesComponent.vue.d.ts +1 -0
  141. package/src/components/viewpoint/VcsViewpointComponent.vue +14 -11
  142. package/src/components/viewpoint/VcsViewpointComponent.vue.d.ts +1 -0
  143. package/src/components/viewpoint/VcsViewpointEditor.vue +2 -2
  144. package/src/contentTree/LayerTree.vue +9 -27
  145. package/src/contentTree/LayerTree.vue.d.ts +1 -1
  146. package/src/contentTree/contentTreeCollection.d.ts +1 -0
  147. package/src/contentTree/contentTreeCollection.js +45 -11
  148. package/src/contentTree/contentTreeItem.d.ts +2 -2
  149. package/src/contentTree/contentTreeItem.js +1 -1
  150. package/src/featureInfo/BalloonComponent.vue +32 -25
  151. package/src/featureInfo/BalloonComponent.vue.d.ts +1 -0
  152. package/src/featureInfo/MarkdownBalloonComponent.vue +4 -2
  153. package/src/featureInfo/MarkdownBalloonComponent.vue.d.ts +2 -2
  154. package/src/featureInfo/abstractFeatureInfoView.d.ts +10 -4
  155. package/src/featureInfo/abstractFeatureInfoView.js +19 -11
  156. package/src/featureInfo/featureInfo.d.ts +7 -7
  157. package/src/featureInfo/featureInfo.js +51 -31
  158. package/src/featureInfo/iframeFeatureInfoView.d.ts +8 -2
  159. package/src/featureInfo/iframeFeatureInfoView.js +15 -5
  160. package/src/featureInfo/markdownBalloonFeatureInfoView.d.ts +1 -1
  161. package/src/featureInfo/markdownBalloonFeatureInfoView.js +5 -5
  162. package/src/featureInfo/markdownFeatureInfoView.d.ts +1 -1
  163. package/src/featureInfo/markdownFeatureInfoView.js +9 -11
  164. package/src/featureInfo/tableFeatureInfoView.js +13 -4
  165. package/src/i18n/i18nCollection.d.ts +9 -15
  166. package/src/i18n/i18nCollection.js +3 -3
  167. package/src/legend/VcsLegend.vue +6 -2
  168. package/src/legend/VcsLegend.vue.d.ts +1 -0
  169. package/src/manager/collectionManager/CollectionComponentList.vue +2 -2
  170. package/src/manager/collectionManager/CollectionComponentList.vue.d.ts +2 -2
  171. package/src/manager/collectionManager/categoryManager.d.ts +1 -1
  172. package/src/manager/collectionManager/collectionComponentClass.d.ts +3 -3
  173. package/src/manager/collectionManager/collectionComponentClass.js +6 -6
  174. package/src/manager/collectionManager/collectionManager.d.ts +1 -1
  175. package/src/manager/collectionManager/editorCollectionComponentClass.js +2 -1
  176. package/src/manager/panel/PanelComponent.vue +2 -9
  177. package/src/manager/panel/PanelManagerComponent.vue +7 -3
  178. package/src/manager/panel/panelHelper.js +3 -3
  179. package/src/manager/panel/panelManager.d.ts +9 -1
  180. package/src/manager/panel/panelManager.js +15 -3
  181. package/src/manager/toolbox/GroupToolboxComponent.vue +11 -5
  182. package/src/manager/toolbox/GroupToolboxComponent.vue.d.ts +1 -0
  183. package/src/manager/toolbox/SelectToolboxComponent.vue +11 -6
  184. package/src/manager/toolbox/SelectToolboxComponent.vue.d.ts +1 -0
  185. package/src/manager/toolbox/{ToolboxManager.vue → ToolboxManagerComponent.vue} +13 -7
  186. package/src/manager/toolbox/{ToolboxManager.vue.d.ts → ToolboxManagerComponent.vue.d.ts} +1 -0
  187. package/src/manager/window/WindowComponent.vue +12 -8
  188. package/src/manager/window/WindowComponentHeader.vue +33 -9
  189. package/src/manager/window/WindowComponentHeader.vue.d.ts +3 -0
  190. package/src/manager/window/WindowManager.vue +2 -2
  191. package/src/manager/window/windowManager.d.ts +6 -6
  192. package/src/manager/window/windowManager.js +3 -3
  193. package/src/navigation/MapNavigation.vue +20 -0
  194. package/src/navigation/OrientationToolsButton.vue +2 -4
  195. package/src/navigation/TiltSlider.vue +3 -5
  196. package/src/navigation/locatorHelper.js +1 -1
  197. package/src/navigation/overviewMap.js +1 -1
  198. package/src/notifier/NotifierComponent.vue +18 -15
  199. package/src/search/ResultItem.vue +18 -6
  200. package/src/search/ResultsComponent.vue +31 -20
  201. package/src/search/ResultsComponent.vue.d.ts +2 -1
  202. package/src/search/SearchComponent.vue +11 -15
  203. package/src/search/SearchComponent.vue.d.ts +1 -0
  204. package/src/siteConfig.js +8 -8
  205. package/src/styles/_typography.scss +0 -2
  206. package/src/styles/main.scss +0 -4
  207. package/src/styles/vcsList.scss +1 -1
  208. package/src/uiConfig.d.ts +311 -7
  209. package/src/uiConfig.js +30 -17
  210. package/src/vcsUiApp.d.ts +48 -63
  211. package/src/vcsUiApp.js +44 -37
  212. package/src/vuePlugins/vuetify.d.ts +88 -62
  213. package/src/vuePlugins/vuetify.js +119 -20
  214. package/dist/assets/ui-2ab43a16.css +0 -1
  215. package/dist/assets/vue-03b265aa.js +0 -6096
  216. package/plugins/@vcmap-show-case/theme-changer/README.md +0 -23
  217. package/plugins/@vcmap-show-case/theme-changer/config.json +0 -69
  218. package/plugins/@vcmap-show-case/theme-changer/package.json +0 -11
  219. package/plugins/@vcmap-show-case/theme-changer/src/ThemeChangerComponent.vue +0 -120
  220. package/plugins/@vcmap-show-case/theme-changer/src/index.js +0 -108
  221. package/src/application/markdownHelper.d.ts +0 -12
  222. package/src/application/markdownHelper.js +0 -70
  223. package/src/components/lists/VcsListItem.vue.d.ts +0 -27
  224. package/src/components/lists/VcsTreeviewLeaf.vue +0 -83
  225. package/src/components/notification/VcsTooltip.vue +0 -156
  226. package/src/components/notification/VcsTooltip.vue.d.ts +0 -27
  227. package/src/featureInfo/MarkdownComponent.vue +0 -16
  228. package/src/featureInfo/MarkdownComponent.vue.d.ts +0 -7
  229. package/src/styles/_theming.scss +0 -73
  230. package/src/styles/settings.scss +0 -6
  231. package/src/styles/shades.scss +0 -4
  232. package/src/styles/variables.scss +0 -140
  233. package/src/styles/vcsFont.scss +0 -2
  234. package/src/styles/vcsGrid.scss +0 -3
  235. /package/src/components/lists/{VcsTreeviewLeaf.vue.d.ts → VcsTreeviewTitle.vue.d.ts} +0 -0
@@ -1,34 +1,33 @@
1
1
  <template>
2
- <VcsDataTable :items="items" :headers="headers" v-bind="$attrs">
3
- <template #item.key="{ item }">
4
- <td
5
- class="vcs-table px-2 overflow-max-width rounded-0 noBorder"
6
- :style="{ 'max-width': headers[0].width }"
2
+ <VcsDataTable
3
+ v-bind="$attrs"
4
+ :items="items"
5
+ :headers="[keyHeader, valueHeader]"
6
+ >
7
+ <template #body="{ page, itemsPerPage }">
8
+ <tr
9
+ class="v-data-table__tr"
10
+ v-for="(item, idx) in items.slice(
11
+ (page - 1) * itemsPerPage,
12
+ page * itemsPerPage,
13
+ )"
14
+ :key="`row-${idx}`"
7
15
  >
8
- {{ $st(item.key) }}
9
- </td>
10
- </template>
11
- <template #item.value="{ item }">
12
- <td
13
- class="vcs-table px-2 overflow-max-width rounded-0 noBorder"
14
- :style="{ 'max-width': headers[1].width }"
15
- >
16
- <component
17
- :is="getTag(tags, item.key)"
18
- v-bind="getTagOptions(tags, item.key)"
19
- :class="{
20
- 'single-line': !/\s/.test(item.value),
21
- 'multi-line': /\s/.test(item.value),
22
- }"
16
+ <vcs-table-cell :title="item.key" :width="keyHeader.width" />
17
+ <vcs-table-cell
18
+ :title="item.value"
19
+ :width="valueHeader.width"
20
+ :tag="getTag(tags, item.key)"
21
+ :tag-options="getTagOptions(tags, item.key)"
23
22
  >
24
- {{ $st(item.value) }}
25
- </component>
26
- </td>
23
+ </vcs-table-cell>
24
+ </tr>
27
25
  </template>
28
26
  </VcsDataTable>
29
27
  </template>
30
28
  <script>
31
29
  import { computed } from 'vue';
30
+ import VcsTableCell from './VcsTableCell.vue';
32
31
  import VcsDataTable from './VcsDataTable.vue';
33
32
 
34
33
  /**
@@ -125,22 +124,19 @@
125
124
 
126
125
  /**
127
126
  * @description A table view for feature attributes using VcsDataTable
128
- * @vue-prop {string} featureId - feature's id
129
127
  * @vue-prop {Object} attributes - feature's attributes
130
128
  * @vue-prop {Object} tags - Allows to render the value column for specific attribute keys with special html elements. See 'defaultTagOptions' for supported html tags.
131
- * @vue-prop {Array<{title: string, value: string}>} [headers] - optional array defining column names
129
+ * @vue-prop {{title: string, key: 'key', width: string|undefined}} [keyHeader] - optional header defining the key column
130
+ * @vue-prop {{title: string, key: 'value', width: string|undefined}} [valueHeader] - optional header defining the value column
132
131
  * @vue-computed {Array<TableItem>} items - from attributes derived table items
133
132
  */
134
133
  export default {
135
134
  name: 'VcsTable',
136
135
  components: {
136
+ VcsTableCell,
137
137
  VcsDataTable,
138
138
  },
139
139
  props: {
140
- featureId: {
141
- type: String,
142
- required: true,
143
- },
144
140
  attributes: {
145
141
  type: Object,
146
142
  required: true,
@@ -149,16 +145,23 @@
149
145
  type: Object,
150
146
  default: undefined,
151
147
  },
152
- headers: {
153
- type: Array,
154
- default: () => [
155
- { title: 'components.vcsTable.key', value: 'key', width: '160px' },
156
- {
157
- title: 'components.vcsTable.value',
158
- value: 'value',
159
- width: '160px',
160
- },
161
- ],
148
+ keyHeader: {
149
+ type: Object,
150
+ default: () => ({
151
+ title: 'components.vcsTable.key',
152
+ key: 'key',
153
+ width: '128px',
154
+ }),
155
+ validator: (value) => value.key === 'key',
156
+ },
157
+ valueHeader: {
158
+ type: Object,
159
+ default: () => ({
160
+ title: 'components.vcsTable.value',
161
+ key: 'value',
162
+ width: '192px',
163
+ }),
164
+ validator: (value) => value.key === 'value',
162
165
  },
163
166
  },
164
167
  setup(props) {
@@ -166,10 +169,7 @@
166
169
  * @type {ComputedRef<Array<TableItem>>}
167
170
  */
168
171
  const items = computed(() => {
169
- return attributesToItems({
170
- featureId: props.featureId,
171
- ...props.attributes,
172
- });
172
+ return attributesToItems(props.attributes);
173
173
  });
174
174
 
175
175
  return {
@@ -182,28 +182,11 @@
182
182
  </script>
183
183
 
184
184
  <style lang="scss" scoped>
185
- .single-line {
186
- display: block;
187
- white-space: nowrap;
188
- overflow: hidden;
189
- text-overflow: ellipsis;
190
- }
191
- .multi-line {
192
- display: -webkit-box;
193
- -webkit-box-orient: vertical;
194
- -webkit-line-clamp: 3;
195
- overflow: hidden;
196
- height: auto;
197
- max-height: 96px;
198
- }
199
-
200
- .noBorder {
201
- border-bottom: none !important;
202
- }
203
-
204
185
  :deep(.v-data-table__mobile-row__cell) {
205
186
  td.vcs-table.overflow-max-width {
206
187
  max-width: 100% !important;
207
188
  }
208
189
  }
190
+ :deep(.v-table__wrapper) {
191
+ }
209
192
  </style>
@@ -32,10 +32,6 @@ export const defaultTagOptions: {
32
32
  };
33
33
  };
34
34
  declare const _default: import("vue").DefineComponent<{
35
- featureId: {
36
- type: StringConstructor;
37
- required: true;
38
- };
39
35
  attributes: {
40
36
  type: ObjectConstructor;
41
37
  required: true;
@@ -44,23 +40,29 @@ declare const _default: import("vue").DefineComponent<{
44
40
  type: ObjectConstructor;
45
41
  default: undefined;
46
42
  };
47
- headers: {
48
- type: ArrayConstructor;
43
+ keyHeader: {
44
+ type: ObjectConstructor;
45
+ default: () => {
46
+ title: string;
47
+ key: string;
48
+ width: string;
49
+ };
50
+ validator: (value: unknown) => boolean;
51
+ };
52
+ valueHeader: {
53
+ type: ObjectConstructor;
49
54
  default: () => {
50
55
  title: string;
51
- value: string;
56
+ key: string;
52
57
  width: string;
53
- }[];
58
+ };
59
+ validator: (value: unknown) => boolean;
54
60
  };
55
61
  }, {
56
62
  items: ComputedRef<TableItem[]>;
57
63
  getTag: typeof getTag;
58
64
  getTagOptions: typeof getTagOptions;
59
65
  }, any, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
60
- featureId: {
61
- type: StringConstructor;
62
- required: true;
63
- };
64
66
  attributes: {
65
67
  type: ObjectConstructor;
66
68
  required: true;
@@ -69,17 +71,28 @@ declare const _default: import("vue").DefineComponent<{
69
71
  type: ObjectConstructor;
70
72
  default: undefined;
71
73
  };
72
- headers: {
73
- type: ArrayConstructor;
74
+ keyHeader: {
75
+ type: ObjectConstructor;
76
+ default: () => {
77
+ title: string;
78
+ key: string;
79
+ width: string;
80
+ };
81
+ validator: (value: unknown) => boolean;
82
+ };
83
+ valueHeader: {
84
+ type: ObjectConstructor;
74
85
  default: () => {
75
86
  title: string;
76
- value: string;
87
+ key: string;
77
88
  width: string;
78
- }[];
89
+ };
90
+ validator: (value: unknown) => boolean;
79
91
  };
80
92
  }>>, {
81
- headers: unknown[];
82
93
  tags: Record<string, any>;
94
+ keyHeader: Record<string, any>;
95
+ valueHeader: Record<string, any>;
83
96
  }, {}>;
84
97
  export default _default;
85
98
  export type TableItem = {
@@ -0,0 +1,72 @@
1
+ <script setup>
2
+ import { ref, computed } from 'vue';
3
+ import { VTooltip } from 'vuetify/components';
4
+ import { createEllipseTooltip } from '../composables.js';
5
+
6
+ const props = defineProps({
7
+ title: {
8
+ type: [String, Number],
9
+ default: undefined,
10
+ },
11
+ width: {
12
+ type: [String, Number],
13
+ default: undefined,
14
+ },
15
+ tag: {
16
+ type: String,
17
+ default: 'div',
18
+ },
19
+ tagOptions: {
20
+ type: Object,
21
+ default: () => {},
22
+ },
23
+ });
24
+
25
+ const td = ref(null);
26
+
27
+ const tooltip = createEllipseTooltip(
28
+ computed(() => td.value),
29
+ computed(() => undefined),
30
+ computed(() => props.title),
31
+ );
32
+
33
+ const hasWhiteSpace = computed(() => /\s/.test(props.title));
34
+ // important: tooltip has evaluated before single-line and multi-line class are applied
35
+ const isSingleLine = computed(() => tooltip.value && !hasWhiteSpace.value);
36
+ const isMultiLine = computed(() => tooltip.value && hasWhiteSpace.value);
37
+ </script>
38
+
39
+ <template>
40
+ <td ref="td" :style="{ 'max-width': width }">
41
+ <component
42
+ :is="tag"
43
+ :class="{
44
+ 'single-line': isSingleLine,
45
+ 'multi-line': isMultiLine,
46
+ }"
47
+ v-bind="tagOptions"
48
+ >
49
+ {{ $st(title) }}
50
+ </component>
51
+ <v-tooltip v-if="tooltip" activator="parent">
52
+ {{ $st(tooltip) }}
53
+ </v-tooltip>
54
+ </td>
55
+ </template>
56
+
57
+ <style scoped>
58
+ .single-line {
59
+ display: block;
60
+ white-space: nowrap;
61
+ overflow: hidden;
62
+ text-overflow: ellipsis;
63
+ }
64
+ .multi-line {
65
+ display: -webkit-box;
66
+ -webkit-box-orient: vertical;
67
+ -webkit-line-clamp: 3;
68
+ overflow: hidden;
69
+ height: auto;
70
+ max-height: 96px;
71
+ }
72
+ </style>
@@ -0,0 +1,13 @@
1
+ declare const _default: import("vue").DefineComponent<{}, {
2
+ tag: string;
3
+ tagOptions: Record<string, any>;
4
+ title?: string | number | undefined;
5
+ width?: string | number | undefined;
6
+ $props: {
7
+ readonly tag?: string | undefined;
8
+ readonly tagOptions?: Record<string, any> | undefined;
9
+ readonly title?: string | number | undefined;
10
+ readonly width?: string | number | undefined;
11
+ };
12
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}, {}>;
13
+ export default _default;
@@ -1,7 +1,7 @@
1
1
  <template>
2
2
  <v-sheet>
3
3
  <VcsFormSection
4
- v-if="session.type === SessionType.SELECT"
4
+ v-if="session?.type === SessionType.SELECT"
5
5
  heading="components.editor.modifyHeader"
6
6
  :action-button-list-overflow-count="5"
7
7
  :header-actions="availableModifyActions"
@@ -45,6 +45,7 @@
45
45
  provide,
46
46
  computed,
47
47
  shallowRef,
48
+ reactive,
48
49
  } from 'vue';
49
50
  import {
50
51
  CesiumMap,
@@ -300,7 +301,7 @@
300
301
  );
301
302
 
302
303
  const allowedActions = allowedModes.map((mode) => {
303
- return {
304
+ return reactive({
304
305
  name: mode,
305
306
  title: `components.editor.${mode}`,
306
307
  icon: EditorTransformationIcons[mode],
@@ -308,7 +309,7 @@
308
309
  callback: () => {
309
310
  toggleTransformationSession(mode);
310
311
  },
311
- };
312
+ });
312
313
  });
313
314
 
314
315
  const transformationModeWatcher = watch(
@@ -324,7 +325,7 @@
324
325
 
325
326
  let geometryEditingWatcher;
326
327
  if (features.value.length === 1) {
327
- const editGeometryAction = {
328
+ const editGeometryAction = reactive({
328
329
  name: 'editGeometry',
329
330
  title: `components.editor.edit`,
330
331
  icon: '$vcsEditVertices',
@@ -332,7 +333,7 @@
332
333
  callback: () => {
333
334
  toggleEditGeometrySession();
334
335
  },
335
- };
336
+ });
336
337
  allowedActions.unshift(editGeometryAction);
337
338
 
338
339
  geometryEditingWatcher = watch(isGeometryEditing, () => {
@@ -11,6 +11,7 @@
11
11
  type="number"
12
12
  placeholder="0"
13
13
  prefix="X"
14
+ force-prefix
14
15
  v-model.number="xValue"
15
16
  unit="m"
16
17
  @keydown.enter.prevent="translate"
@@ -22,6 +23,7 @@
22
23
  type="number"
23
24
  placeholder="0"
24
25
  prefix="Y"
26
+ force-prefix
25
27
  v-model.number="yValue"
26
28
  unit="m"
27
29
  @keydown.enter.prevent="translate"
@@ -33,6 +35,7 @@
33
35
  type="number"
34
36
  placeholder="0"
35
37
  prefix="Z"
38
+ force-prefix
36
39
  v-model.number="zValue"
37
40
  unit="m"
38
41
  :disabled="
@@ -89,6 +92,7 @@
89
92
  <v-col cols="3">
90
93
  <VcsTextField
91
94
  prefix="X"
95
+ force-prefix
92
96
  v-model.number="xValue"
93
97
  placeholder="1"
94
98
  @keydown.enter.prevent="scale"
@@ -97,6 +101,7 @@
97
101
  <v-col cols="3">
98
102
  <VcsTextField
99
103
  prefix="Y"
104
+ force-prefix
100
105
  v-model.number="yValue"
101
106
  placeholder="1"
102
107
  @keydown.enter.prevent="scale"
@@ -9,13 +9,13 @@
9
9
  <template v-if="show3DProperties">
10
10
  <v-row v-if="visibleProperties.has('altitudeMode')" no-gutters>
11
11
  <v-col>
12
- <VcsLabel html-for="vp-altitude-mode">{{
12
+ <VcsLabel :html-for="`${cid}-vp-altitude-mode`">{{
13
13
  $t('components.vectorProperties.altitudeMode')
14
14
  }}</VcsLabel>
15
15
  </v-col>
16
16
  <v-col>
17
17
  <VcsSelect
18
- id="vp-altitude-mode"
18
+ :id="`${cid}-vp-altitude-mode`"
19
19
  :items="availableAltitudeModes"
20
20
  v-model="localValue.altitudeMode"
21
21
  />
@@ -29,13 +29,13 @@
29
29
  no-gutters
30
30
  >
31
31
  <v-col>
32
- <VcsLabel html-for="vp-height-above-ground">{{
32
+ <VcsLabel :html-for="`${cid}-vp-height-above-ground`">{{
33
33
  $t('components.vectorProperties.heightAboveGround')
34
34
  }}</VcsLabel>
35
35
  </v-col>
36
36
  <v-col>
37
37
  <VcsTextField
38
- id="vp-height-above-ground"
38
+ :id="`${cid}-vp-height-above-ground`"
39
39
  v-model.number="localValue.heightAboveGround"
40
40
  :hide-spin-buttons="true"
41
41
  type="number"
@@ -46,13 +46,13 @@
46
46
  </v-row>
47
47
  <v-row v-if="visibleProperties.has('groundLevel')" no-gutters>
48
48
  <v-col>
49
- <VcsLabel html-for="vp-ground-level">{{
49
+ <VcsLabel :html-for="`${cid}-vp-ground-level`">{{
50
50
  $t('components.vectorProperties.groundLevel')
51
51
  }}</VcsLabel>
52
52
  </v-col>
53
53
  <v-col>
54
54
  <VcsTextField
55
- id="vp-ground-level"
55
+ :id="`${cid}-vp-ground-level`"
56
56
  v-model.number="localValue.groundLevel"
57
57
  :hide-spin-buttons="true"
58
58
  type="number"
@@ -142,13 +142,13 @@
142
142
  no-gutters
143
143
  >
144
144
  <v-col>
145
- <VcsLabel html-for="vp-classification-type">
145
+ <VcsLabel :html-for="`${cid}-vp-classification-type`">
146
146
  {{ $t('components.vectorProperties.classificationType') }}
147
147
  </VcsLabel>
148
148
  </v-col>
149
149
  <v-col>
150
150
  <VcsSelect
151
- id="vp-classification-type"
151
+ :id="`${cid}-vp-classification-type`"
152
152
  :items="availableClassificationTypes"
153
153
  v-model="classificationType"
154
154
  />
@@ -186,7 +186,7 @@
186
186
  <v-row v-if="visibleProperties.has('extrudedHeight')" no-gutters>
187
187
  <v-col>
188
188
  <VcsLabel
189
- html-for="vp-extruded-height"
189
+ :html-for="`${cid}-vp-extruded-height`"
190
190
  :class="{
191
191
  'px-4':
192
192
  visibleProperties.has('storeysAboveGround') ||
@@ -197,7 +197,7 @@
197
197
  </v-col>
198
198
  <v-col>
199
199
  <VcsTextField
200
- id="vp-extruded-height"
200
+ :id="`${cid}-vp-extruded-height`"
201
201
  v-model.number="localValue.extrudedHeight"
202
202
  :hide-spin-buttons="true"
203
203
  type="number"
@@ -212,13 +212,13 @@
212
212
  </v-row>
213
213
  <v-row v-if="visibleProperties.has('storeysAboveGround')" no-gutters>
214
214
  <v-col>
215
- <VcsLabel html-for="vp-storeys-above" class="px-4">{{
215
+ <VcsLabel :html-for="`${cid}-vp-storeys-above`" class="px-4">{{
216
216
  $t('components.vectorProperties.storeys')
217
217
  }}</VcsLabel>
218
218
  </v-col>
219
219
  <v-col>
220
220
  <VcsTextField
221
- id="vp-storeys-above"
221
+ :id="`${cid}-vp-storeys-above`"
222
222
  v-model.number="localValue.storeysAboveGround"
223
223
  :hide-spin-buttons="true"
224
224
  type="number"
@@ -235,13 +235,15 @@
235
235
  no-gutters
236
236
  >
237
237
  <v-col>
238
- <VcsLabel :html-for="'vp-storey-heights-above'" class="px-4">{{
239
- $t('components.vectorProperties.storeyHeights')
240
- }}</VcsLabel>
238
+ <VcsLabel
239
+ :html-for="`${cid}-vp-storey-heights-above`"
240
+ class="px-4"
241
+ >{{ $t('components.vectorProperties.storeyHeights') }}</VcsLabel
242
+ >
241
243
  </v-col>
242
244
  <v-col>
243
245
  <VcsChipArrayInput
244
- id="vp-storey-heights-above"
246
+ :id="`${cid}-vp-storey-heights-above`"
245
247
  column
246
248
  type="number"
247
249
  v-model="storeyHeights.storeyHeightsAboveGround.value"
@@ -266,7 +268,7 @@
266
268
  <v-row v-if="visibleProperties.has('skirt')" no-gutters>
267
269
  <v-col>
268
270
  <VcsLabel
269
- html-for="vp-skirt"
271
+ :html-for="`${cid}-vp-skirt`"
270
272
  :class="{
271
273
  'px-4':
272
274
  visibleProperties.has('storeysBelowGround') ||
@@ -277,7 +279,7 @@
277
279
  </v-col>
278
280
  <v-col>
279
281
  <VcsTextField
280
- id="vp-skirt"
282
+ :id="`${cid}-vp-skirt`"
281
283
  v-model.number="localValue.skirt"
282
284
  :hide-spin-buttons="true"
283
285
  type="number"
@@ -292,13 +294,13 @@
292
294
  </v-row>
293
295
  <v-row v-if="visibleProperties.has('storeysBelowGround')" no-gutters>
294
296
  <v-col>
295
- <VcsLabel html-for="vp-storeys-below" class="px-4">{{
297
+ <VcsLabel :html-for="`${cid}-vp-storeys-below`" class="px-4">{{
296
298
  $t('components.vectorProperties.storeys')
297
299
  }}</VcsLabel>
298
300
  </v-col>
299
301
  <v-col>
300
302
  <VcsTextField
301
- id="vp-storeys-below"
303
+ :id="`${cid}-vp-storeys-below`"
302
304
  v-model.number="localValue.storeysBelowGround"
303
305
  :hide-spin-buttons="true"
304
306
  type="number"
@@ -315,13 +317,15 @@
315
317
  no-gutters
316
318
  >
317
319
  <v-col>
318
- <VcsLabel :html-for="'vp-storey-heights-below'" class="px-4">{{
319
- $t('components.vectorProperties.storeyHeights')
320
- }}</VcsLabel>
320
+ <VcsLabel
321
+ :html-for="`${cid}-vp-storey-heights-below`"
322
+ class="px-4"
323
+ >{{ $t('components.vectorProperties.storeyHeights') }}</VcsLabel
324
+ >
321
325
  </v-col>
322
326
  <v-col>
323
327
  <VcsChipArrayInput
324
- :id="'vp-storey-heights-below'"
328
+ :id="`${cid}-vp-storey-heights-below`"
325
329
  column
326
330
  type="number"
327
331
  v-model="storeyHeights.storeyHeightsBelowGround.value"
@@ -348,13 +352,13 @@
348
352
  <v-container class="px-1 py-0">
349
353
  <v-row v-if="visibleProperties.has('modelUrl')" no-gutters>
350
354
  <v-col>
351
- <VcsLabel html-for="vp-model-url">
355
+ <VcsLabel :html-for="`${cid}-vp-model-url`">
352
356
  {{ $t('components.vectorProperties.modelUrl') }}
353
357
  </VcsLabel>
354
358
  </v-col>
355
359
  <v-col>
356
360
  <VcsTextField
357
- id="vp-model-url"
361
+ :id="`${cid}-vp-model-url`"
358
362
  v-model="localValue.modelUrl"
359
363
  clearable
360
364
  :placeholder="'modelUrl' in localValue ? 'example.glb' : ''"
@@ -384,12 +388,13 @@
384
388
  </template>
385
389
  <v-row v-if="visibleProperties.has('modelHeading')" no-gutters>
386
390
  <v-col cols="6">
387
- <VcsLabel>{{
391
+ <VcsLabel :html-for="`${cid}-vp-model-heading`">{{
388
392
  $t('components.vectorProperties.modelHeading')
389
393
  }}</VcsLabel>
390
394
  </v-col>
391
395
  <v-col>
392
396
  <VcsTextField
397
+ :id="`${cid}-vp-model-heading`"
393
398
  v-model.number="localValue.modelHeading"
394
399
  :hide-spin-buttons="true"
395
400
  type="number"
@@ -401,12 +406,13 @@
401
406
  </v-row>
402
407
  <v-row v-if="visibleProperties.has('modelPitch')" no-gutters>
403
408
  <v-col cols="6">
404
- <VcsLabel>{{
409
+ <VcsLabel :html-for="`${cid}-vp-model-pitch`">{{
405
410
  $t('components.vectorProperties.modelPitch')
406
411
  }}</VcsLabel>
407
412
  </v-col>
408
413
  <v-col>
409
414
  <VcsTextField
415
+ :id="`${cid}-vp-model-pitch`"
410
416
  v-model.number="localValue.modelPitch"
411
417
  :hide-spin-buttons="true"
412
418
  type="number"
@@ -418,12 +424,13 @@
418
424
  </v-row>
419
425
  <v-row v-if="visibleProperties.has('modelRoll')" no-gutters>
420
426
  <v-col cols="6">
421
- <VcsLabel>{{
427
+ <VcsLabel :html-for="`${cid}-vp-model-roll`">{{
422
428
  $t('components.vectorProperties.modelRoll')
423
429
  }}</VcsLabel>
424
430
  </v-col>
425
431
  <v-col>
426
432
  <VcsTextField
433
+ :id="`${cid}-vp-model-roll`"
427
434
  v-model.number="localValue.modelRoll"
428
435
  :hide-spin-buttons="true"
429
436
  type="number"
@@ -435,13 +442,13 @@
435
442
  </v-row>
436
443
  <v-row v-if="visibleProperties.has('baseUrl')" no-gutters>
437
444
  <v-col>
438
- <VcsLabel html-for="vp-base-url">{{
445
+ <VcsLabel :html-for="`${cid}-vp-base-url`">{{
439
446
  $t('components.vectorProperties.baseUrl')
440
447
  }}</VcsLabel>
441
448
  </v-col>
442
449
  <v-col>
443
450
  <VcsTextField
444
- id="vp-base-url"
451
+ :id="`${cid}-vp-base-url`"
445
452
  clearable
446
453
  v-model="localValue.baseUrl"
447
454
  :placeholder="'baseUrl' in localValue ? 'path/to/files/' : ''"
@@ -466,6 +473,7 @@
466
473
  import VcsSelect from '../form-inputs-controls/VcsSelect.vue';
467
474
  import VcsCheckbox from '../form-inputs-controls/VcsCheckbox.vue';
468
475
  import VcsChipArrayInput from '../form-inputs-controls/VcsChipArrayInput.vue';
476
+ import { useComponentId } from '../composables.js';
469
477
 
470
478
  export const genericVectorProperties = [
471
479
  'altitudeMode',
@@ -698,6 +706,8 @@
698
706
  : [],
699
707
  );
700
708
 
709
+ const cid = useComponentId();
710
+
701
711
  return {
702
712
  localValue,
703
713
  headerActions,
@@ -712,6 +722,7 @@
712
722
  storeyHeights,
713
723
  modelScale,
714
724
  dimensionsUpperCase,
725
+ cid,
715
726
  };
716
727
  },
717
728
  };