@dative-gpi/foundation-shared-components 1.0.106 → 1.0.108
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/components/FSButton.vue +5 -3
- package/components/FSClickable.vue +5 -3
- package/components/FSDialog.vue +1 -2
- package/components/FSLink.vue +17 -5
- package/components/FSRouterLink.vue +42 -0
- package/components/fields/periodicField/FSPeriodicField.vue +4 -4
- package/components/fields/periodicField/FSPeriodicYearlyField.vue +4 -4
- package/components/lists/FSDataTableUI.vue +3 -6
- package/components/map/FSMap.vue +34 -17
- package/components/map/FSMapLayerButton.vue +1 -1
- package/components/map/FSMapOverlay.vue +1 -1
- package/package.json +4 -4
- package/styles/components/fs_dialog.scss +3 -11
- package/styles/components/fs_image_card.scss +1 -1
package/components/FSButton.vue
CHANGED
|
@@ -129,7 +129,7 @@
|
|
|
129
129
|
<template
|
|
130
130
|
v-else-if="$props.to"
|
|
131
131
|
>
|
|
132
|
-
<
|
|
132
|
+
<FSRouterLink
|
|
133
133
|
:to="$props.to"
|
|
134
134
|
>
|
|
135
135
|
<FSIcon
|
|
@@ -143,7 +143,7 @@
|
|
|
143
143
|
>
|
|
144
144
|
{{ $props.label }}
|
|
145
145
|
</FSSpan>
|
|
146
|
-
</
|
|
146
|
+
</FSRouterLink>
|
|
147
147
|
</template>
|
|
148
148
|
<template
|
|
149
149
|
v-else
|
|
@@ -170,6 +170,7 @@ import { type RouteLocation } from "vue-router";
|
|
|
170
170
|
import { type ColorBase, ColorEnum } from "@dative-gpi/foundation-shared-components/models";
|
|
171
171
|
import { useColors } from "@dative-gpi/foundation-shared-components/composables";
|
|
172
172
|
|
|
173
|
+
import FSRouterLink from "./FSRouterLink.vue";
|
|
173
174
|
import FSClickable from "./FSClickable.vue";
|
|
174
175
|
import FSSpan from "./FSSpan.vue";
|
|
175
176
|
import FSIcon from "./FSIcon.vue";
|
|
@@ -185,6 +186,7 @@ const DEFAULT_PADDING = PADDING_ICON_LABEL;
|
|
|
185
186
|
export default defineComponent({
|
|
186
187
|
name: "FSButton",
|
|
187
188
|
components: {
|
|
189
|
+
FSRouterLink,
|
|
188
190
|
FSClickable,
|
|
189
191
|
FSSpan,
|
|
190
192
|
FSIcon,
|
|
@@ -198,7 +200,7 @@ export default defineComponent({
|
|
|
198
200
|
default: DEFAULT_PADDING
|
|
199
201
|
},
|
|
200
202
|
to: {
|
|
201
|
-
type:
|
|
203
|
+
type: Object as PropType<RouteLocation | null>,
|
|
202
204
|
required: false,
|
|
203
205
|
default: null
|
|
204
206
|
},
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
/>
|
|
41
41
|
</template>
|
|
42
42
|
</a>
|
|
43
|
-
<
|
|
43
|
+
<FSRouterLink
|
|
44
44
|
v-else-if="$props.to"
|
|
45
45
|
:style="style"
|
|
46
46
|
:to="$props.to"
|
|
@@ -80,7 +80,7 @@
|
|
|
80
80
|
:color="loadColor"
|
|
81
81
|
/>
|
|
82
82
|
</template>
|
|
83
|
-
</
|
|
83
|
+
</FSRouterLink>
|
|
84
84
|
<button
|
|
85
85
|
v-else
|
|
86
86
|
:type="$props.type"
|
|
@@ -134,11 +134,13 @@ import { type ColorBase, ColorEnum } from "@dative-gpi/foundation-shared-compone
|
|
|
134
134
|
import { useColors } from "@dative-gpi/foundation-shared-components/composables";
|
|
135
135
|
import { sizeToVar } from "@dative-gpi/foundation-shared-components/utils";
|
|
136
136
|
|
|
137
|
+
import FSRouterLink from "./FSRouterLink.vue";
|
|
137
138
|
import FSCard from "./FSCard.vue";
|
|
138
139
|
|
|
139
140
|
export default defineComponent({
|
|
140
141
|
name: "FSClickable",
|
|
141
142
|
components: {
|
|
143
|
+
FSRouterLink,
|
|
142
144
|
FSCard
|
|
143
145
|
},
|
|
144
146
|
props: {
|
|
@@ -163,7 +165,7 @@ export default defineComponent({
|
|
|
163
165
|
default: null
|
|
164
166
|
},
|
|
165
167
|
to: {
|
|
166
|
-
type:
|
|
168
|
+
type: Object as PropType<RouteLocation | null>,
|
|
167
169
|
required: false,
|
|
168
170
|
default: null
|
|
169
171
|
},
|
package/components/FSDialog.vue
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
:class="classes"
|
|
5
5
|
:modelValue="$props.modelValue"
|
|
6
6
|
@update:modelValue="$emit('update:modelValue', $event)"
|
|
7
|
-
|
|
7
|
+
:width="$props.width"
|
|
8
8
|
v-bind="$attrs"
|
|
9
9
|
>
|
|
10
10
|
<slot>
|
|
@@ -14,7 +14,6 @@
|
|
|
14
14
|
:width="$props.width"
|
|
15
15
|
:modelValue="$props.modelValue"
|
|
16
16
|
@update:modelValue="$emit('update:modelValue', $event)"
|
|
17
|
-
@click.stop="$emit('click', $event)"
|
|
18
17
|
>
|
|
19
18
|
<template
|
|
20
19
|
v-for="(_, name) in $slots"
|
package/components/FSLink.vue
CHANGED
|
@@ -2,13 +2,16 @@
|
|
|
2
2
|
<a
|
|
3
3
|
v-if="$props.href"
|
|
4
4
|
:href="$props.href"
|
|
5
|
+
:class="classes"
|
|
5
6
|
:style="style"
|
|
6
7
|
>
|
|
7
8
|
<slot>
|
|
8
|
-
|
|
9
|
+
<FSSpan>
|
|
10
|
+
{{ $props.label }}
|
|
11
|
+
</FSSpan>
|
|
9
12
|
</slot>
|
|
10
13
|
</a>
|
|
11
|
-
<
|
|
14
|
+
<FSRouterLink
|
|
12
15
|
v-else-if="$props.to"
|
|
13
16
|
:to="$props.to"
|
|
14
17
|
:class="classes"
|
|
@@ -19,9 +22,11 @@
|
|
|
19
22
|
<slot
|
|
20
23
|
v-bind="props"
|
|
21
24
|
>
|
|
22
|
-
|
|
25
|
+
<FSSpan>
|
|
26
|
+
{{ $props.label }}
|
|
27
|
+
</FSSpan>
|
|
23
28
|
</slot>
|
|
24
|
-
</
|
|
29
|
+
</FSRouterLink>
|
|
25
30
|
</template>
|
|
26
31
|
|
|
27
32
|
<script lang="ts">
|
|
@@ -31,8 +36,15 @@ import { type RouteLocation } from "vue-router";
|
|
|
31
36
|
import { useBreakpoints, useColors, useSlots } from "@dative-gpi/foundation-shared-components/composables";
|
|
32
37
|
import { type ColorBase, ColorEnum } from "@dative-gpi/foundation-shared-components/models";
|
|
33
38
|
|
|
39
|
+
import FSRouterLink from "./FSRouterLink.vue";
|
|
40
|
+
import FSSpan from "./FSSpan.vue";
|
|
41
|
+
|
|
34
42
|
export default defineComponent({
|
|
35
43
|
name: "FSLink",
|
|
44
|
+
components: {
|
|
45
|
+
FSRouterLink,
|
|
46
|
+
FSSpan
|
|
47
|
+
},
|
|
36
48
|
props: {
|
|
37
49
|
label: {
|
|
38
50
|
type: String as PropType<string | null>,
|
|
@@ -40,7 +52,7 @@ export default defineComponent({
|
|
|
40
52
|
default: null
|
|
41
53
|
},
|
|
42
54
|
to: {
|
|
43
|
-
type:
|
|
55
|
+
type: Object as PropType<RouteLocation | null>,
|
|
44
56
|
required: false,
|
|
45
57
|
default: null
|
|
46
58
|
},
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<router-link
|
|
3
|
+
:to="$props.to"
|
|
4
|
+
@auxclick="handleRoutingEvent($event, $props.to)"
|
|
5
|
+
@click="handleRoutingEvent($event, $props.to)"
|
|
6
|
+
v-bind="$attrs"
|
|
7
|
+
>
|
|
8
|
+
<template
|
|
9
|
+
v-for="(_, name) in $slots"
|
|
10
|
+
v-slot:[name]="slotData"
|
|
11
|
+
>
|
|
12
|
+
<slot
|
|
13
|
+
:name="name"
|
|
14
|
+
v-bind="{ ...slotData }"
|
|
15
|
+
/>
|
|
16
|
+
</template>
|
|
17
|
+
</router-link>
|
|
18
|
+
</template>
|
|
19
|
+
|
|
20
|
+
<script lang="ts">
|
|
21
|
+
import { defineComponent, type PropType } from "vue";
|
|
22
|
+
import { type RouteLocation } from "vue-router";
|
|
23
|
+
|
|
24
|
+
import { useRouting } from "@dative-gpi/foundation-shared-services/composables";
|
|
25
|
+
|
|
26
|
+
export default defineComponent({
|
|
27
|
+
name: "FSRouterLink",
|
|
28
|
+
props: {
|
|
29
|
+
to: {
|
|
30
|
+
type: Object as PropType<RouteLocation>,
|
|
31
|
+
required: true
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
setup() {
|
|
35
|
+
const { handleRoutingEvent } = useRouting();
|
|
36
|
+
|
|
37
|
+
return {
|
|
38
|
+
handleRoutingEvent
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
</script>
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
</template>
|
|
47
47
|
|
|
48
48
|
<script lang="ts">
|
|
49
|
-
import { ref, defineComponent,
|
|
49
|
+
import { ref, defineComponent, type PropType, watch } from "vue";
|
|
50
50
|
|
|
51
51
|
import { useTranslations as useTranslationsProvider } from "@dative-gpi/bones-ui";
|
|
52
52
|
|
|
@@ -71,7 +71,7 @@ export default defineComponent({
|
|
|
71
71
|
},
|
|
72
72
|
props: {
|
|
73
73
|
modelValue: {
|
|
74
|
-
type: String as PropType<
|
|
74
|
+
type: String as PropType<string>,
|
|
75
75
|
required: true
|
|
76
76
|
},
|
|
77
77
|
editable: {
|
|
@@ -118,9 +118,9 @@ export default defineComponent({
|
|
|
118
118
|
emit('update:modelValue', period.item.default);
|
|
119
119
|
});
|
|
120
120
|
|
|
121
|
-
|
|
121
|
+
watch(() => props.modelValue, () => {
|
|
122
122
|
selectedPeriod.value = getPeriod(props.modelValue);
|
|
123
|
-
});
|
|
123
|
+
}, { immediate: true });
|
|
124
124
|
|
|
125
125
|
return {
|
|
126
126
|
availablePeriod,
|
|
@@ -100,7 +100,7 @@ export default defineComponent({
|
|
|
100
100
|
if (isNaN(parseInt(props.modelValue[3]))) {
|
|
101
101
|
return 0;
|
|
102
102
|
}
|
|
103
|
-
return parseInt(props.modelValue[3])
|
|
103
|
+
return parseInt(props.modelValue[3]);
|
|
104
104
|
});
|
|
105
105
|
|
|
106
106
|
const time = computed((): number => {
|
|
@@ -113,19 +113,19 @@ export default defineComponent({
|
|
|
113
113
|
const onUpdateDay = (value: number): void => {
|
|
114
114
|
const hours = Math.floor(value / (60 * 60 * 1000));
|
|
115
115
|
const minutes = Math.floor(value / (60 * 1000) % 60);
|
|
116
|
-
emit("update:modelValue", [`${minutes}`, `${hours}`, `${value}`, `${month.value
|
|
116
|
+
emit("update:modelValue", [`${minutes}`, `${hours}`, `${value}`, `${month.value}`, "*"]);
|
|
117
117
|
};
|
|
118
118
|
|
|
119
119
|
const onUpdateHours = (value: number): void => {
|
|
120
120
|
const hours = Math.floor(value / (60 * 60 * 1000));
|
|
121
121
|
const minutes = Math.floor(value / (60 * 1000) % 60);
|
|
122
|
-
emit("update:modelValue", [`${minutes}`, `${hours}`, `${day.value}`, `${month.value
|
|
122
|
+
emit("update:modelValue", [`${minutes}`, `${hours}`, `${day.value}`, `${month.value}`, "*"]);
|
|
123
123
|
};
|
|
124
124
|
|
|
125
125
|
const onUpdateMonth = (value: number): void => {
|
|
126
126
|
const hours = Math.floor(value / (60 * 60 * 1000));
|
|
127
127
|
const minutes = Math.floor(value / (60 * 1000) % 60);
|
|
128
|
-
emit("update:modelValue", [`${minutes}`, `${hours}`, `${day.value}`, `${value
|
|
128
|
+
emit("update:modelValue", [`${minutes}`, `${hours}`, `${day.value}`, `${value}`, "*"]);
|
|
129
129
|
};
|
|
130
130
|
|
|
131
131
|
return {
|
|
@@ -696,6 +696,7 @@ import { useRouter } from "vue-router";
|
|
|
696
696
|
import { ColorEnum, type FSDataTableColumn, type FSDataTableFilter, type FSDataTableOrder, type FSToggle } from "@dative-gpi/foundation-shared-components/models";
|
|
697
697
|
import { useBreakpoints, useColors, useSlots } from "@dative-gpi/foundation-shared-components/composables";
|
|
698
698
|
import { useTranslations as useTranslationsProvider } from "@dative-gpi/bones-ui/composables";
|
|
699
|
+
import { useRouting } from "@dative-gpi/foundation-shared-services/composables";
|
|
699
700
|
import { uuidv4 } from "@dative-gpi/bones-ui/tools/uuid"
|
|
700
701
|
|
|
701
702
|
import { alphanumericSort, containsSearchTerm, sizeToVar } from "../../utils";
|
|
@@ -888,6 +889,7 @@ export default defineComponent({
|
|
|
888
889
|
},
|
|
889
890
|
emits: ["update:modelValue", "update:headers", "update:showFilters", "update:filters", "update:mode", "update:sortBy", "update:rowsPerPage", "update:page", "update:include", "update:items", "click:row"],
|
|
890
891
|
setup(props, { emit }) {
|
|
892
|
+
const { handleRoutingEvent } = useRouting();
|
|
891
893
|
const { isExtraSmall } = useBreakpoints();
|
|
892
894
|
const { $tr } = useTranslationsProvider();
|
|
893
895
|
const { getColors } = useColors();
|
|
@@ -1107,12 +1109,7 @@ export default defineComponent({
|
|
|
1107
1109
|
clickable: true,
|
|
1108
1110
|
row: (event: PointerEvent, row: any) => {
|
|
1109
1111
|
if (props.itemTo && router) {
|
|
1110
|
-
|
|
1111
|
-
window.open(router.resolve(props.itemTo(row.item)).href, "_blank");
|
|
1112
|
-
}
|
|
1113
|
-
else {
|
|
1114
|
-
router.push(props.itemTo(row.item));
|
|
1115
|
-
}
|
|
1112
|
+
handleRoutingEvent(event, props.itemTo(row.item), true);
|
|
1116
1113
|
}
|
|
1117
1114
|
else {
|
|
1118
1115
|
emit("click:row", row.item);
|
package/components/map/FSMap.vue
CHANGED
|
@@ -327,7 +327,24 @@ export default defineComponent({
|
|
|
327
327
|
if(!map.value) {
|
|
328
328
|
return;
|
|
329
329
|
}
|
|
330
|
-
|
|
330
|
+
|
|
331
|
+
if(isExtraSmall.value) {
|
|
332
|
+
// We wait for bottom offset to be calculated and stable to focus on the right position
|
|
333
|
+
let tries = 0;
|
|
334
|
+
let oldBottomOffset = bottomOffset.value;
|
|
335
|
+
const interval = setInterval(() => {
|
|
336
|
+
if(oldBottomOffset === bottomOffset.value || tries >= 30) {
|
|
337
|
+
clearInterval(interval);
|
|
338
|
+
map.value!.flyTo(calculateTargetPosition(latLng(lat, lng), zoom), zoom, options);
|
|
339
|
+
}
|
|
340
|
+
oldBottomOffset = bottomOffset.value;
|
|
341
|
+
tries++;
|
|
342
|
+
}, 20);
|
|
343
|
+
|
|
344
|
+
} else {
|
|
345
|
+
map.value.flyTo(calculateTargetPosition(latLng(lat, lng), zoom), zoom, options);
|
|
346
|
+
}
|
|
347
|
+
|
|
331
348
|
}
|
|
332
349
|
|
|
333
350
|
const setView = (lat: number, lng: number, zoom: number) => {
|
|
@@ -338,23 +355,23 @@ export default defineComponent({
|
|
|
338
355
|
}
|
|
339
356
|
|
|
340
357
|
const fitBounds = (bounds: LatLngBounds, options?: FitBoundsOptions) => {
|
|
341
|
-
if (!map.value) {
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
358
|
+
if (!map.value) {return;}
|
|
359
|
+
const paddingTopLeft: [number, number] = [
|
|
360
|
+
leftOffset.value,
|
|
361
|
+
0
|
|
362
|
+
];
|
|
363
|
+
|
|
364
|
+
const paddingBottomRight: [number, number] = [
|
|
365
|
+
0,
|
|
366
|
+
bottomOffset.value
|
|
367
|
+
];
|
|
368
|
+
const paddingOptions = {
|
|
369
|
+
paddingTopLeft,
|
|
370
|
+
paddingBottomRight,
|
|
371
|
+
...options,
|
|
372
|
+
};
|
|
356
373
|
|
|
357
|
-
map.value.fitBounds(
|
|
374
|
+
map.value.fitBounds(bounds, paddingOptions);
|
|
358
375
|
};
|
|
359
376
|
|
|
360
377
|
onMounted(() => {
|
|
@@ -7,7 +7,6 @@
|
|
|
7
7
|
/>
|
|
8
8
|
<FSDialog
|
|
9
9
|
v-model="dialog"
|
|
10
|
-
width="500px"
|
|
11
10
|
:title="$tr('ui.map.select-layer', 'Select layer')"
|
|
12
11
|
:contained="true"
|
|
13
12
|
>
|
|
@@ -16,6 +15,7 @@
|
|
|
16
15
|
>
|
|
17
16
|
<FSRow
|
|
18
17
|
align="center-center"
|
|
18
|
+
:wrap="false"
|
|
19
19
|
>
|
|
20
20
|
<FSImageCard
|
|
21
21
|
v-for="layer in layers"
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
v-show="isExtraSmall"
|
|
11
11
|
ref="mobileOverlayWrapper"
|
|
12
12
|
class="fs-map-overlay-mobile"
|
|
13
|
-
:style="{ height: $props.mode === 'expand' ? '90%' : ($props.mode === 'half' ? '
|
|
13
|
+
:style="{ height: $props.mode === 'expand' ? '90%' : ($props.mode === 'half' ? '60%' : '20px') }"
|
|
14
14
|
>
|
|
15
15
|
<FSCard
|
|
16
16
|
width="100%"
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dative-gpi/foundation-shared-components",
|
|
3
3
|
"sideEffects": false,
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.108",
|
|
5
5
|
"description": "",
|
|
6
6
|
"publishConfig": {
|
|
7
7
|
"access": "public"
|
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
"author": "",
|
|
11
11
|
"license": "ISC",
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"@dative-gpi/foundation-shared-domain": "1.0.
|
|
14
|
-
"@dative-gpi/foundation-shared-services": "1.0.
|
|
13
|
+
"@dative-gpi/foundation-shared-domain": "1.0.108",
|
|
14
|
+
"@dative-gpi/foundation-shared-services": "1.0.108"
|
|
15
15
|
},
|
|
16
16
|
"peerDependencies": {
|
|
17
17
|
"@dative-gpi/bones-ui": "^1.0.0",
|
|
@@ -35,5 +35,5 @@
|
|
|
35
35
|
"sass": "1.71.1",
|
|
36
36
|
"sass-loader": "13.3.2"
|
|
37
37
|
},
|
|
38
|
-
"gitHead": "
|
|
38
|
+
"gitHead": "f5ec01bfa6108f5140a55273e0abfc6b9b2e69bc"
|
|
39
39
|
}
|
|
@@ -1,16 +1,8 @@
|
|
|
1
1
|
.fs-dialog-mobile > .v-overlay__content {
|
|
2
|
-
flex-direction: column-reverse !important;
|
|
3
|
-
}
|
|
4
|
-
|
|
5
|
-
.fs-dialog > .v-overlay__content {
|
|
6
|
-
justify-content: center !important;
|
|
7
|
-
align-items: center !important;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
.v-dialog > .v-overlay__content {
|
|
11
2
|
max-height: 100vh !important;
|
|
12
3
|
max-width: 100vw !important;
|
|
13
|
-
height: 100% !important;
|
|
14
4
|
width: 100% !important;
|
|
15
5
|
margin: 0 !important;
|
|
16
|
-
|
|
6
|
+
position: absolute;
|
|
7
|
+
bottom: 0;
|
|
8
|
+
}
|