@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.
- package/build/buildHelpers.js +60 -11
- package/build/buildTypes.js +9 -5
- package/build/bundle.js +1 -1
- package/build/info/publish.js +25 -31
- package/build/lintTypes.js +5 -0
- package/config/base.config.json +2 -7
- package/config/dev.config.json +11 -1
- package/config/projects.config.json +2 -1
- package/config/theming.config.json +68 -0
- package/config/www.config.json +27 -23
- package/dist/assets/@mdi/font/css/{materialdesignicons.min-7a4f6be0.css → materialdesignicons.min-680621ca.css} +1 -1
- package/dist/assets/{cesium-cb4dbfba.js → cesium-ccb4cc30.js} +272 -385
- package/dist/assets/cesium.js +1 -1
- package/dist/assets/{core-72f21835.js → core-e06aa7a6.js} +2313 -2321
- package/dist/assets/core.js +1 -1
- package/dist/assets/{ol-2d33bc8b.js → ol-e7981d5c.js} +233 -329
- package/dist/assets/ol.js +1 -1
- package/dist/assets/ui-5dda32d2.css +1 -0
- package/dist/assets/{ui-2ab43a16.js → ui-5dda32d2.js} +11344 -11078
- package/dist/assets/ui.js +1 -1
- package/dist/assets/vue-87bc6efe.js +6083 -0
- package/dist/assets/vue.js +1 -1
- package/dist/assets/{vuetify-760ced3b.css → vuetify-4c4e4217.css} +2 -2
- package/dist/assets/{vuetify-760ced3b.js → vuetify-4c4e4217.js} +8063 -8262
- package/dist/assets/vuetify.js +1 -1
- package/index.d.ts +27 -17
- package/index.js +16 -8
- package/package.json +17 -17
- package/plugins/@vcmap-show-case/custom-icons-example/README.md +3 -0
- package/plugins/@vcmap-show-case/custom-icons-example/assets/imageExample.png +0 -0
- package/plugins/@vcmap-show-case/custom-icons-example/assets/svgExample.svg +1 -0
- package/plugins/@vcmap-show-case/custom-icons-example/package.json +5 -0
- package/plugins/@vcmap-show-case/custom-icons-example/src/CustomIconsExample.vue +90 -0
- package/plugins/@vcmap-show-case/custom-icons-example/src/index.js +45 -0
- package/plugins/@vcmap-show-case/form-inputs-example/src/FormInputsExample.vue +2 -3
- package/plugins/@vcmap-show-case/plugin-editors/src/PluginEditors.vue +11 -7
- package/plugins/@vcmap-show-case/project-selector/src/ModulesListComponent.vue +18 -11
- package/plugins/@vcmap-show-case/search-example/src/index.js +1 -0
- package/plugins/@vcmap-show-case/search-example/src/searchImpl.js +35 -5
- package/plugins/@vcmap-show-case/theming-example/README.md +3 -0
- package/plugins/@vcmap-show-case/theming-example/package.json +5 -0
- package/plugins/@vcmap-show-case/theming-example/src/ThemingExample.vue +116 -0
- package/plugins/@vcmap-show-case/theming-example/src/index.js +53 -0
- package/plugins/@vcmap-show-case/toolbox-example/src/index.js +2 -1
- package/plugins/package.json +7 -23
- package/public/assets/@mdi/font/css/materialdesignicons.min.css +1 -1
- package/src/actions/StyleSelector.vue +1 -1
- package/src/actions/actionHelper.d.ts +4 -11
- package/src/actions/actionHelper.js +15 -7
- package/src/actions/listActions.d.ts +5 -5
- package/src/actions/listActions.js +2 -2
- package/src/application/VcsApp.vue +113 -50
- package/src/application/VcsApp.vue.d.ts +301 -4
- package/src/application/VcsAttributionsFooter.vue.d.ts +1 -1
- package/src/application/VcsContainer.vue +27 -10
- package/src/application/VcsContainer.vue.d.ts +241 -0
- package/src/application/VcsMainMap.vue +7 -7
- package/src/application/VcsMainMap.vue.d.ts +2 -2
- package/src/application/VcsNavbar.vue +14 -2
- package/src/application/VcsNavbar.vue.d.ts +1 -0
- package/src/application/VcsSplashScreen.vue +33 -26
- package/src/application/VcsTextPageFooter.vue +2 -1
- package/src/application/attributionsHelper.d.ts +20 -22
- package/src/application/attributionsHelper.js +4 -4
- package/src/callback/vcsCallback.d.ts +2 -2
- package/src/callback/vcsCallback.js +1 -1
- package/src/components/buttons/VcsActionButtonList.vue +61 -6
- package/src/components/buttons/VcsActionButtonList.vue.d.ts +28 -0
- package/src/components/buttons/VcsButton.vue +2 -4
- package/src/components/buttons/VcsButton.vue.d.ts +1 -1
- package/src/components/buttons/VcsFormButton.vue +4 -4
- package/src/components/buttons/VcsToolButton.vue +4 -2
- package/src/components/buttons/VcsToolButton.vue.d.ts +2 -2
- package/src/components/composables.d.ts +5 -0
- package/src/components/composables.js +79 -9
- package/src/components/extent/VcsExtent.vue +10 -6
- package/src/components/extent/VcsExtent.vue.d.ts +1 -0
- package/src/components/flight/VcsFlightComponent.vue +13 -13
- package/src/components/flight/VcsFlightComponent.vue.d.ts +1 -0
- package/src/components/form-inputs-controls/VcsCheckbox.vue +8 -3
- package/src/components/form-inputs-controls/VcsChipArrayInput.vue +13 -16
- package/src/components/form-inputs-controls/VcsChipArrayInput.vue.d.ts +2 -4
- package/src/components/form-inputs-controls/VcsCoordinate.vue +4 -4
- package/src/components/form-inputs-controls/VcsFileInput.vue +1 -1
- package/src/components/form-inputs-controls/VcsLabel.vue +1 -1
- package/src/components/form-inputs-controls/VcsRadio.vue +8 -6
- package/src/components/form-inputs-controls/VcsRadio.vue.d.ts +1 -0
- package/src/components/form-inputs-controls/VcsSelect.vue +2 -5
- package/src/components/form-inputs-controls/VcsSlider.vue +5 -6
- package/src/components/form-inputs-controls/VcsSlider.vue.d.ts +2 -4
- package/src/components/form-inputs-controls/VcsTextArea.vue +2 -5
- package/src/components/form-inputs-controls/VcsTextField.vue +24 -1
- package/src/components/form-inputs-controls/VcsTextField.vue.d.ts +11 -1
- package/src/components/form-inputs-controls/VcsWizard.vue +3 -3
- package/src/components/form-inputs-controls/VcsWizardStep.vue +6 -5
- package/src/components/form-inputs-controls/vcsTextField.scss +8 -5
- package/src/components/form-output/VcsFormattedNumber.vue +7 -5
- package/src/components/form-output/VcsMarkdown.vue +15 -12
- package/src/components/form-output/VcsMarkdown.vue.d.ts +1 -0
- package/src/components/form-output/markdownHelper.d.ts +30 -0
- package/src/components/form-output/markdownHelper.js +398 -0
- package/src/components/import/VcsFileDrop.vue +8 -5
- package/src/components/import/VcsImportComponent.vue +8 -4
- package/src/components/import/VcsImportComponent.vue.d.ts +1 -2
- package/src/components/lists/VcsActionList.vue +6 -6
- package/src/components/lists/VcsList.vue +22 -37
- package/src/components/lists/VcsList.vue.d.ts +14 -55
- package/src/components/lists/{VcsListItem.vue → VcsListItemComponent.vue} +37 -11
- package/src/components/lists/VcsListItemComponent.vue.d.ts +79 -0
- package/src/components/lists/VcsTreeview.vue +95 -26
- package/src/components/lists/VcsTreeview.vue.d.ts +16 -3
- package/src/components/lists/VcsTreeviewSearchbar.vue +16 -5
- package/src/components/lists/VcsTreeviewSearchbar.vue.d.ts +3 -1
- package/src/components/lists/VcsTreeviewTitle.vue +36 -0
- package/src/components/modelHelper.d.ts +10 -8
- package/src/components/modelHelper.js +8 -6
- package/src/components/notification/VcsHelp.vue +6 -7
- package/src/components/notification/VcsHelp.vue.d.ts +0 -8
- package/src/components/plugins/AbstractConfigEditor.vue +1 -22
- package/src/components/plugins/AbstractConfigEditor.vue.d.ts +6 -29
- package/src/components/section/VcsExpansionPanel.vue +9 -3
- package/src/components/section/VcsExpansionPanel.vue.d.ts +2 -2
- package/src/components/section/VcsFormSection.vue +13 -7
- package/src/components/section/VcsFormSection.vue.d.ts +2 -3
- package/src/components/style/VcsImageSelector.vue +14 -6
- package/src/components/style/VcsImageSelector.vue.d.ts +1 -0
- package/src/components/style/VcsStrokeSelector.vue +5 -2
- package/src/components/style/VcsStrokeSelector.vue.d.ts +1 -0
- package/src/components/style/VcsTextMenu.vue +3 -3
- package/src/components/style/VcsVectorStyleComponent.vue +1 -1
- package/src/components/tables/VcsDataTable.vue +42 -32
- package/src/components/tables/VcsDataTable.vue.d.ts +1 -0
- package/src/components/tables/VcsTable.vue +45 -62
- package/src/components/tables/VcsTable.vue.d.ts +30 -17
- package/src/components/tables/VcsTableCell.vue +72 -0
- package/src/components/tables/VcsTableCell.vue.d.ts +13 -0
- package/src/components/vector-properties/VcsFeatureEditingWindow.vue +6 -5
- package/src/components/vector-properties/VcsFeatureTransforms.vue +5 -0
- package/src/components/vector-properties/VcsVectorPropertiesComponent.vue +42 -31
- package/src/components/vector-properties/VcsVectorPropertiesComponent.vue.d.ts +1 -0
- package/src/components/viewpoint/VcsViewpointComponent.vue +14 -11
- package/src/components/viewpoint/VcsViewpointComponent.vue.d.ts +1 -0
- package/src/components/viewpoint/VcsViewpointEditor.vue +2 -2
- package/src/contentTree/LayerTree.vue +9 -27
- package/src/contentTree/LayerTree.vue.d.ts +1 -1
- package/src/contentTree/contentTreeCollection.d.ts +1 -0
- package/src/contentTree/contentTreeCollection.js +45 -11
- package/src/contentTree/contentTreeItem.d.ts +2 -2
- package/src/contentTree/contentTreeItem.js +1 -1
- package/src/featureInfo/BalloonComponent.vue +32 -25
- package/src/featureInfo/BalloonComponent.vue.d.ts +1 -0
- package/src/featureInfo/MarkdownBalloonComponent.vue +4 -2
- package/src/featureInfo/MarkdownBalloonComponent.vue.d.ts +2 -2
- package/src/featureInfo/abstractFeatureInfoView.d.ts +10 -4
- package/src/featureInfo/abstractFeatureInfoView.js +19 -11
- package/src/featureInfo/featureInfo.d.ts +7 -7
- package/src/featureInfo/featureInfo.js +51 -31
- package/src/featureInfo/iframeFeatureInfoView.d.ts +8 -2
- package/src/featureInfo/iframeFeatureInfoView.js +15 -5
- package/src/featureInfo/markdownBalloonFeatureInfoView.d.ts +1 -1
- package/src/featureInfo/markdownBalloonFeatureInfoView.js +5 -5
- package/src/featureInfo/markdownFeatureInfoView.d.ts +1 -1
- package/src/featureInfo/markdownFeatureInfoView.js +9 -11
- package/src/featureInfo/tableFeatureInfoView.js +13 -4
- package/src/i18n/i18nCollection.d.ts +9 -15
- package/src/i18n/i18nCollection.js +3 -3
- package/src/legend/VcsLegend.vue +6 -2
- package/src/legend/VcsLegend.vue.d.ts +1 -0
- package/src/manager/collectionManager/CollectionComponentList.vue +2 -2
- package/src/manager/collectionManager/CollectionComponentList.vue.d.ts +2 -2
- package/src/manager/collectionManager/categoryManager.d.ts +1 -1
- package/src/manager/collectionManager/collectionComponentClass.d.ts +3 -3
- package/src/manager/collectionManager/collectionComponentClass.js +6 -6
- package/src/manager/collectionManager/collectionManager.d.ts +1 -1
- package/src/manager/collectionManager/editorCollectionComponentClass.js +2 -1
- package/src/manager/panel/PanelComponent.vue +2 -9
- package/src/manager/panel/PanelManagerComponent.vue +7 -3
- package/src/manager/panel/panelHelper.js +3 -3
- package/src/manager/panel/panelManager.d.ts +9 -1
- package/src/manager/panel/panelManager.js +15 -3
- package/src/manager/toolbox/GroupToolboxComponent.vue +11 -5
- package/src/manager/toolbox/GroupToolboxComponent.vue.d.ts +1 -0
- package/src/manager/toolbox/SelectToolboxComponent.vue +11 -6
- package/src/manager/toolbox/SelectToolboxComponent.vue.d.ts +1 -0
- package/src/manager/toolbox/{ToolboxManager.vue → ToolboxManagerComponent.vue} +13 -7
- package/src/manager/toolbox/{ToolboxManager.vue.d.ts → ToolboxManagerComponent.vue.d.ts} +1 -0
- package/src/manager/window/WindowComponent.vue +12 -8
- package/src/manager/window/WindowComponentHeader.vue +33 -9
- package/src/manager/window/WindowComponentHeader.vue.d.ts +3 -0
- package/src/manager/window/WindowManager.vue +2 -2
- package/src/manager/window/windowManager.d.ts +6 -6
- package/src/manager/window/windowManager.js +3 -3
- package/src/navigation/MapNavigation.vue +20 -0
- package/src/navigation/OrientationToolsButton.vue +2 -4
- package/src/navigation/TiltSlider.vue +3 -5
- package/src/navigation/locatorHelper.js +1 -1
- package/src/navigation/overviewMap.js +1 -1
- package/src/notifier/NotifierComponent.vue +18 -15
- package/src/search/ResultItem.vue +18 -6
- package/src/search/ResultsComponent.vue +31 -20
- package/src/search/ResultsComponent.vue.d.ts +2 -1
- package/src/search/SearchComponent.vue +11 -15
- package/src/search/SearchComponent.vue.d.ts +1 -0
- package/src/siteConfig.js +8 -8
- package/src/styles/_typography.scss +0 -2
- package/src/styles/main.scss +0 -4
- package/src/styles/vcsList.scss +1 -1
- package/src/uiConfig.d.ts +311 -7
- package/src/uiConfig.js +30 -17
- package/src/vcsUiApp.d.ts +48 -63
- package/src/vcsUiApp.js +44 -37
- package/src/vuePlugins/vuetify.d.ts +88 -62
- package/src/vuePlugins/vuetify.js +119 -20
- package/dist/assets/ui-2ab43a16.css +0 -1
- package/dist/assets/vue-03b265aa.js +0 -6096
- package/plugins/@vcmap-show-case/theme-changer/README.md +0 -23
- package/plugins/@vcmap-show-case/theme-changer/config.json +0 -69
- package/plugins/@vcmap-show-case/theme-changer/package.json +0 -11
- package/plugins/@vcmap-show-case/theme-changer/src/ThemeChangerComponent.vue +0 -120
- package/plugins/@vcmap-show-case/theme-changer/src/index.js +0 -108
- package/src/application/markdownHelper.d.ts +0 -12
- package/src/application/markdownHelper.js +0 -70
- package/src/components/lists/VcsListItem.vue.d.ts +0 -27
- package/src/components/lists/VcsTreeviewLeaf.vue +0 -83
- package/src/components/notification/VcsTooltip.vue +0 -156
- package/src/components/notification/VcsTooltip.vue.d.ts +0 -27
- package/src/featureInfo/MarkdownComponent.vue +0 -16
- package/src/featureInfo/MarkdownComponent.vue.d.ts +0 -7
- package/src/styles/_theming.scss +0 -73
- package/src/styles/settings.scss +0 -6
- package/src/styles/shades.scss +0 -4
- package/src/styles/variables.scss +0 -140
- package/src/styles/vcsFont.scss +0 -2
- package/src/styles/vcsGrid.scss +0 -3
- /package/src/components/lists/{VcsTreeviewLeaf.vue.d.ts → VcsTreeviewTitle.vue.d.ts} +0 -0
@@ -18,20 +18,13 @@
|
|
18
18
|
</template>
|
19
19
|
|
20
20
|
<style scoped lang="scss">
|
21
|
-
@import '../../styles/shades.scss';
|
22
|
-
|
23
21
|
.panel-component {
|
24
22
|
padding: 0 4px;
|
25
23
|
}
|
26
|
-
.panel-component
|
27
|
-
content: '';
|
28
|
-
position: absolute;
|
29
|
-
background: map-get($shades, 'black');
|
30
|
-
}
|
31
|
-
.panel-component.theme--light::after {
|
24
|
+
.panel-component::after {
|
32
25
|
content: '';
|
33
26
|
position: absolute;
|
34
|
-
background:
|
27
|
+
background: rgb(var(--v-theme-surface-light));
|
35
28
|
}
|
36
29
|
|
37
30
|
.panel-component-left::after {
|
@@ -143,17 +143,21 @@
|
|
143
143
|
((panelFrameRef.value.offsetTop + e.y) /
|
144
144
|
panelFrameRef.value.parentElement.offsetHeight) *
|
145
145
|
100;
|
146
|
-
setPanelPosition(panel, {
|
146
|
+
setPanelPosition(panelManager, panel, {
|
147
|
+
height: `${Math.round(100 - height)}%`,
|
148
|
+
});
|
147
149
|
} else {
|
148
150
|
const width =
|
149
151
|
((panelFrameRef.value.offsetLeft + e.x) /
|
150
152
|
panelFrameRef.value.parentElement.offsetWidth) *
|
151
153
|
100;
|
152
154
|
if (panel[panelLocationSymbol] === PanelLocation.LEFT) {
|
153
|
-
setPanelPosition(panel, { width: `${width}%` });
|
155
|
+
setPanelPosition(panelManager, panel, { width: `${width}%` });
|
154
156
|
resizeKey = 'left';
|
155
157
|
} else if (panel[panelLocationSymbol] === PanelLocation.RIGHT) {
|
156
|
-
setPanelPosition(panel, {
|
158
|
+
setPanelPosition(panelManager, panel, {
|
159
|
+
width: `${Math.round(100 - width)}%`,
|
160
|
+
});
|
157
161
|
resizeKey = 'right';
|
158
162
|
}
|
159
163
|
}
|
@@ -239,7 +239,7 @@ export function updatePanelSizes(
|
|
239
239
|
},
|
240
240
|
targetSize,
|
241
241
|
);
|
242
|
-
setPanelPosition(leftPanel, updatedLeft);
|
242
|
+
setPanelPosition(panelManager, leftPanel, updatedLeft);
|
243
243
|
}
|
244
244
|
if (panelManager.hasLocation(PanelLocation.RIGHT) && resizeKey !== 'left') {
|
245
245
|
const updatedRight = handleSidePanel(
|
@@ -252,7 +252,7 @@ export function updatePanelSizes(
|
|
252
252
|
},
|
253
253
|
targetSize,
|
254
254
|
);
|
255
|
-
setPanelPosition(rightPanel, updatedRight);
|
255
|
+
setPanelPosition(panelManager, rightPanel, updatedRight);
|
256
256
|
}
|
257
257
|
|
258
258
|
const main = percentageFromPanelOptions(
|
@@ -267,6 +267,6 @@ export function updatePanelSizes(
|
|
267
267
|
return acc;
|
268
268
|
}, {});
|
269
269
|
if (Object.keys(toUpdate).length > 0) {
|
270
|
-
setPanelPosition(mainPanel, toUpdate);
|
270
|
+
setPanelPosition(panelManager, mainPanel, toUpdate);
|
271
271
|
}
|
272
272
|
}
|
@@ -30,10 +30,11 @@
|
|
30
30
|
*/
|
31
31
|
export function getPanelPosition(panelComponent: Partial<PanelComponent>): PanelPosition | undefined;
|
32
32
|
/**
|
33
|
+
* @param {PanelManager} panelManager
|
33
34
|
* @param {PanelComponent} panelComponent
|
34
35
|
* @param {Partial<PanelPosition>} panelPosition
|
35
36
|
*/
|
36
|
-
export function setPanelPosition(panelComponent: PanelComponent, panelPosition: Partial<PanelPosition>): void;
|
37
|
+
export function setPanelPosition(panelManager: PanelManager, panelComponent: PanelComponent, panelPosition: Partial<PanelPosition>): void;
|
37
38
|
export const panelLocationSymbol: unique symbol;
|
38
39
|
export const panelPositionSymbol: unique symbol;
|
39
40
|
/**
|
@@ -249,6 +250,13 @@ declare class PanelManager implements IPanelManager {
|
|
249
250
|
* @type {import("@vcmap/core").VcsEvent<PanelComponent>}
|
250
251
|
*/
|
251
252
|
removed: import("@vcmap/core").VcsEvent<PanelComponent>;
|
253
|
+
/**
|
254
|
+
* @type {import("@vcmap/core").VcsEvent<{panelId: string, panelPosition: PanelPosition}>}
|
255
|
+
*/
|
256
|
+
positionChanged: import("@vcmap/core").VcsEvent<{
|
257
|
+
panelId: string;
|
258
|
+
panelPosition: PanelPosition;
|
259
|
+
}>;
|
252
260
|
/**
|
253
261
|
* reactive ordered array of ids,
|
254
262
|
* @type {import("vue").UnwrapRef<string[]>}
|
@@ -114,10 +114,11 @@ export function getPanelPosition(panelComponent) {
|
|
114
114
|
}
|
115
115
|
|
116
116
|
/**
|
117
|
+
* @param {PanelManager} panelManager
|
117
118
|
* @param {PanelComponent} panelComponent
|
118
119
|
* @param {Partial<PanelPosition>} panelPosition
|
119
120
|
*/
|
120
|
-
export function setPanelPosition(panelComponent, panelPosition) {
|
121
|
+
export function setPanelPosition(panelManager, panelComponent, panelPosition) {
|
121
122
|
const position = getPanelPosition(panelComponent);
|
122
123
|
const toUpdate = Object.keys(panelPosition).reduce((acc, key) => {
|
123
124
|
if (position?.[key] !== panelPosition[key]) {
|
@@ -126,7 +127,14 @@ export function setPanelPosition(panelComponent, panelPosition) {
|
|
126
127
|
return acc;
|
127
128
|
}, {});
|
128
129
|
if (Object.keys(toUpdate).length > 0) {
|
129
|
-
Object.assign(
|
130
|
+
const newPosition = Object.assign(
|
131
|
+
panelComponent[panelPositionSymbol],
|
132
|
+
panelPosition,
|
133
|
+
);
|
134
|
+
panelManager.positionChanged.raiseEvent({
|
135
|
+
panelId: panelComponent.id,
|
136
|
+
panelPosition: newPosition,
|
137
|
+
});
|
130
138
|
}
|
131
139
|
}
|
132
140
|
|
@@ -149,6 +157,10 @@ class PanelManager {
|
|
149
157
|
* @type {import("@vcmap/core").VcsEvent<PanelComponent>}
|
150
158
|
*/
|
151
159
|
this.removed = new VcsEvent();
|
160
|
+
/**
|
161
|
+
* @type {import("@vcmap/core").VcsEvent<{panelId: string, panelPosition: PanelPosition}>}
|
162
|
+
*/
|
163
|
+
this.positionChanged = new VcsEvent();
|
152
164
|
/**
|
153
165
|
* reactive ordered array of ids,
|
154
166
|
* @type {import("vue").UnwrapRef<string[]>}
|
@@ -266,7 +278,7 @@ class PanelManager {
|
|
266
278
|
return acc;
|
267
279
|
}, {});
|
268
280
|
if (Object.keys(toUpdate).length > 0) {
|
269
|
-
setPanelPosition(panelComponent, toUpdate);
|
281
|
+
setPanelPosition(this, panelComponent, toUpdate);
|
270
282
|
}
|
271
283
|
}
|
272
284
|
}
|
@@ -13,7 +13,7 @@
|
|
13
13
|
:icon="group.icon"
|
14
14
|
:disabled="group.disabled"
|
15
15
|
:tooltip="group.title"
|
16
|
-
:active="
|
16
|
+
:active="hasActiveAction"
|
17
17
|
:color="hasActiveAction ? 'primary' : ''"
|
18
18
|
v-bind="props"
|
19
19
|
>
|
@@ -22,12 +22,11 @@
|
|
22
22
|
</template>
|
23
23
|
|
24
24
|
<v-toolbar
|
25
|
-
|
26
|
-
|
27
|
-
:height="40"
|
25
|
+
class="vcs-toolbox-toolbar--secondary mx-auto marginToTop rounded-b elevation-4 opacity-80 px-1"
|
26
|
+
:height="toolboxHeight"
|
28
27
|
>
|
29
28
|
<v-toolbar-items class="w-100">
|
30
|
-
<div class="d-flex align-center justify-space-between w-100">
|
29
|
+
<div class="d-flex align-center justify-space-between gc-1 w-100">
|
31
30
|
<VcsToolButton
|
32
31
|
v-for="{ id, action } in orderedButtons"
|
33
32
|
:key="id"
|
@@ -54,6 +53,7 @@
|
|
54
53
|
import { VMenu, VIcon, VToolbar, VToolbarItems } from 'vuetify/components';
|
55
54
|
import VcsToolButton from '../../components/buttons/VcsToolButton.vue';
|
56
55
|
import { getComponentsByOrder } from './toolboxManager.js';
|
56
|
+
import { useFontSize } from '../../vuePlugins/vuetify.js';
|
57
57
|
|
58
58
|
/**
|
59
59
|
* @description
|
@@ -94,10 +94,16 @@
|
|
94
94
|
orderedButtons.value.some((a) => a.action.active),
|
95
95
|
);
|
96
96
|
|
97
|
+
const fontSize = useFontSize();
|
98
|
+
const toolboxHeight = computed(() => {
|
99
|
+
return fontSize.value * 3 + 1;
|
100
|
+
});
|
101
|
+
|
97
102
|
return {
|
98
103
|
open,
|
99
104
|
orderedButtons,
|
100
105
|
hasActiveAction,
|
106
|
+
toolboxHeight,
|
101
107
|
};
|
102
108
|
},
|
103
109
|
};
|
@@ -7,6 +7,7 @@ declare const _default: import("vue").DefineComponent<{
|
|
7
7
|
open: import("vue").Ref<boolean>;
|
8
8
|
orderedButtons: import("vue").ComputedRef<(import("../buttonManager.js", { with: { "resolution-mode": "import" } }).ButtonComponent | import("./toolboxManager.js", { with: { "resolution-mode": "import" } }).ToolboxComponent)[]>;
|
9
9
|
hasActiveAction: import("vue").ComputedRef<boolean>;
|
10
|
+
toolboxHeight: import("vue").ComputedRef<number>;
|
10
11
|
}, any, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
11
12
|
group: {
|
12
13
|
type: ObjectConstructor;
|
@@ -28,7 +28,7 @@
|
|
28
28
|
:tooltip="group.action.title"
|
29
29
|
:disabled="group.action.disabled"
|
30
30
|
v-bind="props"
|
31
|
-
class="vcs-toolbox-action-select"
|
31
|
+
class="vcs-toolbox-action-select px-0"
|
32
32
|
:min-width="16"
|
33
33
|
:width="16"
|
34
34
|
>
|
@@ -37,12 +37,12 @@
|
|
37
37
|
</template>
|
38
38
|
|
39
39
|
<v-toolbar
|
40
|
-
class="vcs-toolbox-2 mx-auto marginToTop rounded-b opacity-80 px-1"
|
41
|
-
:height="
|
40
|
+
class="vcs-toolbox-2 mx-auto marginToTop rounded-b elevation-4 opacity-80 px-1"
|
41
|
+
:height="toolboxHeight"
|
42
42
|
dense
|
43
43
|
>
|
44
44
|
<v-toolbar-items class="w-100">
|
45
|
-
<div class="d-flex align-center justify-space-between w-100">
|
45
|
+
<div class="d-flex align-center justify-space-between gc-1 w-100">
|
46
46
|
<VcsToolButton
|
47
47
|
v-for="(item, index) in group.action.tools"
|
48
48
|
:key="`${item.name}-${index}`"
|
@@ -64,9 +64,10 @@
|
|
64
64
|
}
|
65
65
|
</style>
|
66
66
|
<script>
|
67
|
-
import { ref } from 'vue';
|
67
|
+
import { ref, computed } from 'vue';
|
68
68
|
import { VMenu, VIcon, VToolbar, VToolbarItems } from 'vuetify/components';
|
69
69
|
import VcsToolButton from '../../components/buttons/VcsToolButton.vue';
|
70
|
+
import { useFontSize } from '../../vuePlugins/vuetify.js';
|
70
71
|
|
71
72
|
/**
|
72
73
|
* @description
|
@@ -90,9 +91,13 @@
|
|
90
91
|
},
|
91
92
|
setup() {
|
92
93
|
const open = ref(false);
|
93
|
-
|
94
|
+
const fontSize = useFontSize();
|
95
|
+
const toolboxHeight = computed(() => {
|
96
|
+
return fontSize.value * 3 + 1;
|
97
|
+
});
|
94
98
|
return {
|
95
99
|
open,
|
100
|
+
toolboxHeight,
|
96
101
|
};
|
97
102
|
},
|
98
103
|
};
|
@@ -5,6 +5,7 @@ declare const _default: import("vue").DefineComponent<{
|
|
5
5
|
};
|
6
6
|
}, {
|
7
7
|
open: import("vue").Ref<boolean>;
|
8
|
+
toolboxHeight: import("vue").ComputedRef<number>;
|
8
9
|
}, any, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
9
10
|
group: {
|
10
11
|
type: ObjectConstructor;
|
@@ -1,14 +1,13 @@
|
|
1
1
|
<template>
|
2
2
|
<v-toolbar
|
3
3
|
v-if="toolboxOpen && orderedGroups.length > 0 && mdAndUp"
|
4
|
-
class="vcs-toolbox mx-auto
|
4
|
+
class="vcs-toolbox mx-auto elevation-4 opacity-80"
|
5
5
|
:class="{
|
6
6
|
'rounded-b': !open,
|
7
7
|
}"
|
8
|
-
:height="
|
8
|
+
:height="toolboxHeight"
|
9
9
|
:style="{ zIndex }"
|
10
10
|
@click.stop="bringToTop"
|
11
|
-
style="width: fit-content"
|
12
11
|
>
|
13
12
|
<v-toolbar-items class="w-100 px-4 gc-1">
|
14
13
|
<div
|
@@ -42,8 +41,9 @@
|
|
42
41
|
</template>
|
43
42
|
|
44
43
|
<style lang="scss" scoped>
|
45
|
-
.
|
44
|
+
.vcs-toolbox {
|
46
45
|
margin-top: 2px;
|
46
|
+
width: fit-content;
|
47
47
|
}
|
48
48
|
</style>
|
49
49
|
|
@@ -61,6 +61,7 @@
|
|
61
61
|
import VcsToolButton from '../../components/buttons/VcsToolButton.vue';
|
62
62
|
import { vcsAppSymbol } from '../../pluginHelper.js';
|
63
63
|
import { ButtonLocation } from '../navbarManager.js';
|
64
|
+
import { useFontSize } from '../../vuePlugins/vuetify.js';
|
64
65
|
|
65
66
|
/**
|
66
67
|
* @typedef {Object} ToolboxButtonGroup
|
@@ -84,7 +85,7 @@
|
|
84
85
|
* @vue-computed {Array<ToolboxButtonGroup>} orderedGroups - Array of group components sorted by owner
|
85
86
|
*/
|
86
87
|
export default {
|
87
|
-
name: '
|
88
|
+
name: 'ToolboxManagerComponent',
|
88
89
|
components: {
|
89
90
|
ToolboxActionSelect,
|
90
91
|
ToolboxActionGroup,
|
@@ -163,12 +164,12 @@
|
|
163
164
|
}
|
164
165
|
handleToolboxButton();
|
165
166
|
|
166
|
-
|
167
|
+
watch(groups, () => handleToolboxButton());
|
167
168
|
|
168
169
|
onUnmounted(() => {
|
169
|
-
stopWatching();
|
170
170
|
nameChangeListener();
|
171
171
|
app.windowManager.removeExternalIdFromZIndex('toolbox');
|
172
|
+
app.navbarManager.remove('toolbox');
|
172
173
|
});
|
173
174
|
|
174
175
|
watch(toolboxOpen, () => {
|
@@ -183,6 +184,10 @@
|
|
183
184
|
};
|
184
185
|
|
185
186
|
const { mdAndUp } = useDisplay();
|
187
|
+
const fontSize = useFontSize();
|
188
|
+
const toolboxHeight = computed(() => {
|
189
|
+
return fontSize.value * 3 + 1;
|
190
|
+
});
|
186
191
|
return {
|
187
192
|
mdAndUp,
|
188
193
|
toolboxOpen,
|
@@ -200,6 +205,7 @@
|
|
200
205
|
bringToTop();
|
201
206
|
}
|
202
207
|
},
|
208
|
+
toolboxHeight,
|
203
209
|
};
|
204
210
|
},
|
205
211
|
};
|
@@ -12,6 +12,7 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
12
12
|
open: import("vue").Ref<boolean>;
|
13
13
|
bringToTop: () => void;
|
14
14
|
openGroup(group: any): void;
|
15
|
+
toolboxHeight: import("vue").ComputedRef<number>;
|
15
16
|
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}, {}>;
|
16
17
|
export default _default;
|
17
18
|
export type ToolboxButtonGroup = {
|
@@ -9,8 +9,8 @@
|
|
9
9
|
:class="{
|
10
10
|
rounded: !isDocked,
|
11
11
|
marginToTop: isDocked || !isChild,
|
12
|
-
'rounded-
|
13
|
-
'rounded-
|
12
|
+
'rounded-be': isDynamicLeft,
|
13
|
+
'rounded-bs': isDynamicRight,
|
14
14
|
}"
|
15
15
|
>
|
16
16
|
<div
|
@@ -89,17 +89,21 @@
|
|
89
89
|
});
|
90
90
|
|
91
91
|
const isChild = computed(() => !!props.windowState.parentId);
|
92
|
-
const isDynamic = computed(
|
93
|
-
|
92
|
+
const isDynamic = computed(
|
93
|
+
() => props.slotWindow.value !== WindowSlot.STATIC,
|
94
|
+
);
|
95
|
+
const isDocked = computed(
|
96
|
+
() => props.slotWindow.value !== WindowSlot.DETACHED,
|
97
|
+
);
|
94
98
|
const isDockedLeft = computed(() => {
|
95
99
|
return (
|
96
|
-
props.slotWindow === WindowSlot.STATIC ||
|
97
|
-
props.slotWindow === WindowSlot.DYNAMIC_LEFT ||
|
98
|
-
props.slotWindow === WindowSlot.DYNAMIC_CHILD
|
100
|
+
props.slotWindow.value === WindowSlot.STATIC ||
|
101
|
+
props.slotWindow.value === WindowSlot.DYNAMIC_LEFT ||
|
102
|
+
props.slotWindow.value === WindowSlot.DYNAMIC_CHILD
|
99
103
|
);
|
100
104
|
});
|
101
105
|
const isDockedRight = computed(
|
102
|
-
() => props.slotWindow === WindowSlot.DYNAMIC_RIGHT,
|
106
|
+
() => props.slotWindow.value === WindowSlot.DYNAMIC_RIGHT,
|
103
107
|
);
|
104
108
|
const isDraggable = ref(false);
|
105
109
|
/**
|
@@ -2,21 +2,25 @@
|
|
2
2
|
<div
|
3
3
|
class="d-flex justify-space-between align-center window-component-header"
|
4
4
|
>
|
5
|
-
<h3 class="d-flex align-center">
|
5
|
+
<h3 class="d-flex align-center flex-grow-1">
|
6
6
|
<v-icon
|
7
7
|
v-if="windowState.headerIcon"
|
8
8
|
class="mr-1"
|
9
|
-
:class="{ 'primary
|
10
|
-
size="
|
9
|
+
:class="{ 'text-primary': isOnTop }"
|
10
|
+
:size="iconSize"
|
11
11
|
>
|
12
12
|
{{ windowState.headerIcon }}
|
13
13
|
</v-icon>
|
14
14
|
<span
|
15
|
-
|
16
|
-
|
15
|
+
ref="headerRef"
|
16
|
+
class="d-inline-block user-select-none font-weight-bold vcs-window-header-title"
|
17
|
+
:class="{ 'text-primary': isOnTop }"
|
17
18
|
>
|
18
19
|
{{ translatedHeaderTitle }}
|
19
20
|
</span>
|
21
|
+
<v-tooltip v-if="headerTooltip" activator="parent">
|
22
|
+
{{ $st(headerTooltip) }}
|
23
|
+
</v-tooltip>
|
20
24
|
</h3>
|
21
25
|
<div class="d-flex justify-space-between align-center">
|
22
26
|
<template v-if="windowState.headerActions?.length > 0">
|
@@ -52,10 +56,10 @@
|
|
52
56
|
|
53
57
|
<style lang="scss" scoped>
|
54
58
|
.window-component-header {
|
55
|
-
max-height:
|
59
|
+
max-height: calc(var(--v-vcs-font-size) * 2 - 10px);
|
56
60
|
|
57
61
|
h3 {
|
58
|
-
line-height:
|
62
|
+
line-height: calc(var(--v-vcs-font-size) * 2 - 10px);
|
59
63
|
}
|
60
64
|
.v-divider--vertical.v-divider--inset {
|
61
65
|
margin-top: 2px;
|
@@ -64,14 +68,23 @@
|
|
64
68
|
.user-select-none {
|
65
69
|
user-select: none;
|
66
70
|
}
|
71
|
+
.vcs-window-header-title {
|
72
|
+
width: 10px;
|
73
|
+
white-space: nowrap;
|
74
|
+
overflow: hidden;
|
75
|
+
text-overflow: ellipsis;
|
76
|
+
flex: 1;
|
77
|
+
}
|
67
78
|
</style>
|
68
79
|
|
69
80
|
<script>
|
70
|
-
import { VIcon, VDivider } from 'vuetify/components';
|
71
|
-
import { computed, getCurrentInstance } from 'vue';
|
81
|
+
import { VIcon, VDivider, VTooltip } from 'vuetify/components';
|
82
|
+
import { computed, getCurrentInstance, ref } from 'vue';
|
83
|
+
import { createEllipseTooltip } from '../../components/composables.js';
|
72
84
|
import VcsButton from '../../components/buttons/VcsButton.vue';
|
73
85
|
import VcsActionButtonList from '../../components/buttons/VcsActionButtonList.vue';
|
74
86
|
import { createLinkAction } from '../../actions/actionHelper.js';
|
87
|
+
import { useIconSize } from '../../vuePlugins/vuetify.js';
|
75
88
|
|
76
89
|
/**
|
77
90
|
* @description Default window component header with drag functionality close action and further optional window actions.
|
@@ -88,6 +101,7 @@
|
|
88
101
|
VcsButton,
|
89
102
|
VIcon,
|
90
103
|
VDivider,
|
104
|
+
VTooltip,
|
91
105
|
},
|
92
106
|
inheritAttrs: false,
|
93
107
|
props: {
|
@@ -124,6 +138,8 @@
|
|
124
138
|
: vm.$st(props.windowState.headerTitle),
|
125
139
|
);
|
126
140
|
|
141
|
+
const headerRef = ref(null);
|
142
|
+
|
127
143
|
const infoAction =
|
128
144
|
props.windowState.infoUrl || props.windowState.infoUrlCallback
|
129
145
|
? createLinkAction(
|
@@ -136,11 +152,19 @@
|
|
136
152
|
)
|
137
153
|
: undefined;
|
138
154
|
|
155
|
+
const iconSize = useIconSize();
|
139
156
|
return {
|
140
157
|
pin,
|
141
158
|
close,
|
142
159
|
isDockable,
|
143
160
|
translatedHeaderTitle,
|
161
|
+
headerRef,
|
162
|
+
iconSize,
|
163
|
+
headerTooltip: createEllipseTooltip(
|
164
|
+
computed(() => headerRef.value),
|
165
|
+
computed(() => undefined),
|
166
|
+
translatedHeaderTitle,
|
167
|
+
),
|
144
168
|
infoAction,
|
145
169
|
};
|
146
170
|
},
|
@@ -17,6 +17,9 @@ declare const _default: import("vue").DefineComponent<{
|
|
17
17
|
close: () => void;
|
18
18
|
isDockable: import("vue").ComputedRef<any>;
|
19
19
|
translatedHeaderTitle: import("vue").ComputedRef<any>;
|
20
|
+
headerRef: import("vue").Ref<null>;
|
21
|
+
iconSize: import("vue").ComputedRef<number>;
|
22
|
+
headerTooltip: import("vue").ComputedRef<string>;
|
20
23
|
infoAction: import("../../actions/actionHelper.js", { with: { "resolution-mode": "import" } }).VcsAction | undefined;
|
21
24
|
}, any, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
22
25
|
windowState: {
|
@@ -160,9 +160,9 @@
|
|
160
160
|
const position = getPosition(windowComponent);
|
161
161
|
moveWindow(id, translation, windowManager, targetSize.value, position);
|
162
162
|
};
|
163
|
-
|
163
|
+
const display = useDisplay();
|
164
164
|
const addMobileClass = computed(() => {
|
165
|
-
return
|
165
|
+
return display.xs.value && componentIds.length > 0;
|
166
166
|
});
|
167
167
|
|
168
168
|
const setTargetSize = () => {
|
@@ -15,15 +15,15 @@ export function isSlotPosition(windowPosition: WindowPosition): boolean;
|
|
15
15
|
* @typedef {{
|
16
16
|
* id?: string,
|
17
17
|
* parentId?: string,
|
18
|
-
* component: import("vue").Component<T
|
19
|
-
* headerComponent?: import("vue").Component<T
|
18
|
+
* component: import("vue").Component<T>,
|
19
|
+
* headerComponent?: import("vue").Component<T>,
|
20
20
|
* state? : Partial<WindowState>,
|
21
21
|
* position? : Partial<WindowPositionOptions>,
|
22
22
|
* slot?: WindowSlot,
|
23
23
|
* props?: T,
|
24
24
|
* provides?: Record<string, unknown>
|
25
25
|
* }} WindowComponentOptions
|
26
|
-
* @template
|
26
|
+
* @template [T=any]
|
27
27
|
* @property {string} [id] Optional ID, If not provided an uuid will be generated.
|
28
28
|
* @property {string} [parentId] An optional ID of a parent window for 'dynamicChild' slot. Parent windows with slot dynamicRight are not supported.
|
29
29
|
* @property {import("vue").Component<T, unknown, unknown>} component Main Component which is shown below the header.
|
@@ -129,11 +129,11 @@ export namespace WindowPositions {
|
|
129
129
|
export { DETACHED_1 as DETACHED };
|
130
130
|
}
|
131
131
|
export default WindowManager;
|
132
|
-
export type WindowComponentOptions<T
|
132
|
+
export type WindowComponentOptions<T = any> = {
|
133
133
|
id?: string;
|
134
134
|
parentId?: string;
|
135
|
-
component: import("vue").Component<T
|
136
|
-
headerComponent?: import("vue").Component<T
|
135
|
+
component: import("vue").Component<T>;
|
136
|
+
headerComponent?: import("vue").Component<T>;
|
137
137
|
state?: Partial<WindowState>;
|
138
138
|
position?: Partial<WindowPositionOptions>;
|
139
139
|
slot?: WindowSlot;
|
@@ -105,15 +105,15 @@ export function isSlotPosition(windowPosition) {
|
|
105
105
|
* @typedef {{
|
106
106
|
* id?: string,
|
107
107
|
* parentId?: string,
|
108
|
-
* component: import("vue").Component<T
|
109
|
-
* headerComponent?: import("vue").Component<T
|
108
|
+
* component: import("vue").Component<T>,
|
109
|
+
* headerComponent?: import("vue").Component<T>,
|
110
110
|
* state? : Partial<WindowState>,
|
111
111
|
* position? : Partial<WindowPositionOptions>,
|
112
112
|
* slot?: WindowSlot,
|
113
113
|
* props?: T,
|
114
114
|
* provides?: Record<string, unknown>
|
115
115
|
* }} WindowComponentOptions
|
116
|
-
* @template
|
116
|
+
* @template [T=any]
|
117
117
|
* @property {string} [id] Optional ID, If not provided an uuid will be generated.
|
118
118
|
* @property {string} [parentId] An optional ID of a parent window for 'dynamicChild' slot. Parent windows with slot dynamicRight are not supported.
|
119
119
|
* @property {import("vue").Component<T, unknown, unknown>} component Main Component which is shown below the header.
|
@@ -249,6 +249,25 @@
|
|
249
249
|
const showOverviewButton = ref(
|
250
250
|
app.overviewMap.map.layerCollection.size > 0,
|
251
251
|
);
|
252
|
+
|
253
|
+
const handleOverviewMapActiveOnStartup = (item) => {
|
254
|
+
if (
|
255
|
+
item &&
|
256
|
+
item.name === 'overviewMapActiveOnStartup' &&
|
257
|
+
showOverviewButton.value &&
|
258
|
+
item.value &&
|
259
|
+
!overviewAction.active
|
260
|
+
) {
|
261
|
+
overviewAction.callback();
|
262
|
+
}
|
263
|
+
};
|
264
|
+
handleOverviewMapActiveOnStartup(
|
265
|
+
app.uiConfig.getByKey('overviewMapActiveOnStartup'),
|
266
|
+
);
|
267
|
+
const uiConfigListener = app.uiConfig.added.addEventListener(
|
268
|
+
handleOverviewMapActiveOnStartup,
|
269
|
+
);
|
270
|
+
|
252
271
|
// Locator
|
253
272
|
const { action: locatorAction, destroy: destroyLocator } =
|
254
273
|
createLocatorAction(app);
|
@@ -286,6 +305,7 @@
|
|
286
305
|
const { action: homeAction, destroy: homeDestroy } = setupHomeButton(app);
|
287
306
|
|
288
307
|
onUnmounted(() => {
|
308
|
+
uiConfigListener();
|
289
309
|
if (overviewDestroy) {
|
290
310
|
overviewDestroy();
|
291
311
|
}
|
@@ -18,7 +18,7 @@
|
|
18
18
|
<script>
|
19
19
|
import { VCard, VIcon, VTooltip } from 'vuetify/components';
|
20
20
|
import { computed } from 'vue';
|
21
|
-
import { useFontSize } from '../vuePlugins/vuetify.js';
|
21
|
+
import { useFontSize, useIconSize } from '../vuePlugins/vuetify.js';
|
22
22
|
|
23
23
|
/**
|
24
24
|
* @description v-card with h & w 8. Requires an icon and binds all attributes & listeners to the v-card
|
@@ -50,9 +50,7 @@
|
|
50
50
|
setup() {
|
51
51
|
const fontSize = useFontSize();
|
52
52
|
|
53
|
-
const iconSize =
|
54
|
-
return fontSize.value * (1.2 + 0.1 / 3);
|
55
|
-
});
|
53
|
+
const iconSize = useIconSize();
|
56
54
|
const height = computed(() => {
|
57
55
|
return fontSize.value * 2.5;
|
58
56
|
});
|
@@ -65,7 +65,7 @@
|
|
65
65
|
<script>
|
66
66
|
import { computed, defineComponent } from 'vue';
|
67
67
|
import { VCard, VSlider, VTooltip } from 'vuetify/components';
|
68
|
-
import { useFontSize
|
68
|
+
import { useFontSize } from '../vuePlugins/vuetify.js';
|
69
69
|
import { useProxiedAtomicModel } from '../components/modelHelper.js';
|
70
70
|
|
71
71
|
export default defineComponent({
|
@@ -87,15 +87,13 @@
|
|
87
87
|
},
|
88
88
|
},
|
89
89
|
setup(props, { emit }) {
|
90
|
-
const
|
91
|
-
|
90
|
+
const fontSize = useFontSize();
|
92
91
|
const trackSize = computed(() => {
|
93
|
-
return Math.floor(
|
92
|
+
return Math.floor((fontSize.value + 3) / 6);
|
94
93
|
});
|
95
94
|
const tickSize = computed(() => {
|
96
95
|
return trackSize.value * 2;
|
97
96
|
});
|
98
|
-
const fontSize = useFontSize();
|
99
97
|
const minWidth = computed(() => {
|
100
98
|
return fontSize.value * 2.5;
|
101
99
|
});
|