@dative-gpi/foundation-shared-components 1.0.142 → 1.0.143-onboarding

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.
@@ -30,6 +30,14 @@
30
30
  </FSRow>
31
31
  </FSCol>
32
32
  </slot>
33
+ <FSRow
34
+ v-if="$slots['top-right']"
35
+ class="fs-card-top-right"
36
+ >
37
+ <slot
38
+ name="top-right"
39
+ />
40
+ </FSRow>
33
41
  </div>
34
42
  </template>
35
43
 
@@ -99,6 +107,11 @@ export default defineComponent({
99
107
  type: Boolean,
100
108
  required: false,
101
109
  default: false
110
+ },
111
+ topRightPadding: {
112
+ type: [String, Number],
113
+ required: false,
114
+ default: "4px"
102
115
  }
103
116
  },
104
117
  setup(props) {
@@ -143,7 +156,8 @@ export default defineComponent({
143
156
  "--fs-card-width" : sizeToVar(props.width),
144
157
  "--fs-card-background-color": backgrounds.base,
145
158
  "--fs-card-border-color" : borderColor.value,
146
- "--fs-card-color" : darks.base
159
+ "--fs-card-color" : darks.base,
160
+ "--fs-card-top-right-padding": sizeToVar(props.topRightPadding)
147
161
  }
148
162
  case "standard": return {
149
163
  "--fs-card-border-size" : props.border ? "1px" : "0",
@@ -154,7 +168,8 @@ export default defineComponent({
154
168
  "--fs-card-width" : sizeToVar(props.width),
155
169
  "--fs-card-background-color": colors.value.light,
156
170
  "--fs-card-border-color" : borderColor.value,
157
- "--fs-card-color" : colors.value.lightContrast!
171
+ "--fs-card-color" : colors.value.lightContrast!,
172
+ "--fs-card-top-right-padding": sizeToVar(props.topRightPadding)
158
173
  }
159
174
  case "full": return {
160
175
  "--fs-card-border-size" : props.border ? "1px" : "0",
@@ -165,7 +180,8 @@ export default defineComponent({
165
180
  "--fs-card-width" : sizeToVar(props.width),
166
181
  "--fs-card-background-color": colors.value.base,
167
182
  "--fs-card-border-color" : borderColor.value,
168
- "--fs-card-color" : colors.value.baseContrast!
183
+ "--fs-card-color" : colors.value.baseContrast!,
184
+ "--fs-card-top-right-padding": sizeToVar(props.topRightPadding)
169
185
  }
170
186
  case "gradient": return {
171
187
  "--fs-card-border-size" : props.border ? "1px" : "0",
@@ -176,7 +192,8 @@ export default defineComponent({
176
192
  "--fs-card-width" : sizeToVar(props.width),
177
193
  "--fs-card-background-color": gradients.value.base,
178
194
  "--fs-card-border-color" : borderColor.value,
179
- "--fs-card-color" : colors.value.lightContrast!
195
+ "--fs-card-color" : colors.value.lightContrast!,
196
+ "--fs-card-top-right-padding": sizeToVar(props.topRightPadding)
180
197
  }
181
198
  }
182
199
  });
@@ -1,50 +1,56 @@
1
1
  <template>
2
- <FSRow
3
- :align="$props.align"
4
- :width="$props.width"
5
- :class="classes"
6
- :style="style"
7
- :wrap="false"
8
- v-bind="$attrs"
2
+ <component
3
+ :is="$props.to ? 'FSRouterLink' : 'div'"
4
+ v-bind="$props.to ? { to: $props.to } : {}"
9
5
  >
10
- <slot
11
- name="prepend"
12
- v-bind="{ color: $props.color, colors }"
6
+ <FSRow
7
+ :align="$props.align"
8
+ :width="$props.width"
9
+ :class="classes"
10
+ :style="style"
11
+ :wrap="false"
12
+ v-bind="$attrs"
13
13
  >
14
- <FSIcon
15
- v-if="$props.prependIcon"
16
- size="s"
14
+ <slot
15
+ name="prepend"
16
+ v-bind="{ color: $props.color, colors }"
17
17
  >
18
- {{ $props.prependIcon }}
19
- </FSIcon>
20
- </slot>
21
- <slot
22
- v-bind="{ color: $props.color, colors }"
23
- >
24
- <FSSpan
25
- v-if="$props.label"
26
- font="text-overline"
27
- class="fs-chip-label"
18
+ <FSIcon
19
+ v-if="$props.prependIcon"
20
+ size="s"
21
+ >
22
+ {{ $props.prependIcon }}
23
+ </FSIcon>
24
+ </slot>
25
+ <slot
26
+ v-bind="{ color: $props.color, colors }"
28
27
  >
29
- {{ $props.label }}
30
- </FSSpan>
31
- </slot>
32
- <slot
33
- name="append"
34
- v-bind="{ color: $props.color, colors }"
35
- >
36
- <FSIcon
37
- v-if="$props.appendIcon"
38
- size="s"
28
+ <FSSpan
29
+ v-if="$props.label"
30
+ font="text-overline"
31
+ class="fs-chip-label"
32
+ >
33
+ {{ $props.label }}
34
+ </FSSpan>
35
+ </slot>
36
+ <slot
37
+ name="append"
38
+ v-bind="{ color: $props.color, colors }"
39
39
  >
40
- {{ $props.appendIcon }}
41
- </FSIcon>
42
- </slot>
43
- </FSRow>
40
+ <FSIcon
41
+ v-if="$props.appendIcon"
42
+ size="s"
43
+ >
44
+ {{ $props.appendIcon }}
45
+ </FSIcon>
46
+ </slot>
47
+ </FSRow>
48
+ </component>
44
49
  </template>
45
50
 
46
51
  <script lang="ts">
47
52
  import { computed, defineComponent, type PropType, type StyleValue } from "vue";
53
+ import { type RouteLocation } from "vue-router";
48
54
 
49
55
  import { type ColorBase, ColorEnum } from "@dative-gpi/foundation-shared-components/models";
50
56
  import { useColors } from "@dative-gpi/foundation-shared-components/composables";
@@ -53,6 +59,7 @@ import { sizeToVar } from "@dative-gpi/foundation-shared-components/utils";
53
59
  import FSIcon from "./FSIcon.vue";
54
60
  import FSSpan from "./FSSpan.vue";
55
61
  import FSRow from "./FSRow.vue";
62
+ import FSRouterLink from '@dative-gpi/foundation-shared-components/components/FSRouterLink.vue';
56
63
 
57
64
  export default defineComponent({
58
65
  name: "FSChip",
@@ -61,6 +68,7 @@ export default defineComponent({
61
68
  FSSpan,
62
69
  FSRow
63
70
  },
71
+ inheritsAttrs: false,
64
72
  props: {
65
73
  prependIcon: {
66
74
  type: String as PropType<string | null>,
@@ -106,7 +114,12 @@ export default defineComponent({
106
114
  type: String as PropType<"center-center" | "center-left">,
107
115
  required: false,
108
116
  default: "center-center"
109
- }
117
+ },
118
+ to: {
119
+ type: Object as PropType<RouteLocation | null>,
120
+ required: false,
121
+ default: null
122
+ },
110
123
  },
111
124
  setup(props) {
112
125
  const { getColors } = useColors();
@@ -165,6 +178,7 @@ export default defineComponent({
165
178
  });
166
179
 
167
180
  return {
181
+ FSRouterLink,
168
182
  classes,
169
183
  colors,
170
184
  style
@@ -0,0 +1,124 @@
1
+ <template>
2
+ <FSMenu
3
+ :location="$props.location"
4
+ :closeOnContentClick="false"
5
+ minWidth="0"
6
+ v-model="modelValue"
7
+ v-bind="$attrs"
8
+ >
9
+ <template
10
+ #activator="{ props }"
11
+ >
12
+ <slot
13
+ name="activator"
14
+ v-bind="props"
15
+ >
16
+ <FSButton
17
+ v-bind="props"
18
+ :color="lightColors.dark"
19
+ :iconSize="$props.iconSize"
20
+ variant="icon"
21
+ icon="mdi-information-outline"
22
+ />
23
+ </slot>
24
+ </template>
25
+ <slot
26
+ name="menuContent"
27
+ >
28
+ <FSCard
29
+ :width="$props.width"
30
+ :padding="$props.padding"
31
+ :elevation="true"
32
+ align="center"
33
+ >
34
+ <slot
35
+ name="cardContent"
36
+ >
37
+ <FSRow
38
+ align="center-center"
39
+ >
40
+ <FSText
41
+ font="text-overline"
42
+ :lineClamp="4"
43
+ >
44
+ {{ $props.content }}
45
+ </FSText>
46
+ </FSRow>
47
+ </slot>
48
+ <template
49
+ #top-right
50
+ >
51
+ <FSButton
52
+ variant="icon"
53
+ icon="mdi-close"
54
+ iconSize="18px"
55
+ :color="lightColors.dark"
56
+ @click="modelValue = false"
57
+ />
58
+ </template>
59
+ </FSCard>
60
+ </slot>
61
+ </FSMenu>
62
+ </template>
63
+
64
+ <script lang="ts">
65
+ import { defineComponent, ref, type PropType } from "vue";
66
+
67
+ import { useColors } from "@dative-gpi/foundation-shared-components/composables";
68
+
69
+ import { ColorEnum } from '@dative-gpi/foundation-shared-components/models';
70
+
71
+ import FSRow from '@dative-gpi/foundation-shared-components/components/FSRow.vue';
72
+ import FSMenu from '@dative-gpi/foundation-shared-components/components/FSMenu.vue';
73
+ import FSCard from '@dative-gpi/foundation-shared-components/components/FSCard.vue';
74
+ import FSText from '@dative-gpi/foundation-shared-components/components/FSText.vue';
75
+ import FSButton from '@dative-gpi/foundation-shared-components/components/FSButton.vue';
76
+
77
+ export default defineComponent({
78
+ name: "FSInformationsMenu",
79
+ components: {
80
+ FSMenu,
81
+ FSCard,
82
+ FSRow,
83
+ FSText,
84
+ FSButton
85
+ },
86
+ props: {
87
+ content: {
88
+ type: String as PropType<string | null>,
89
+ required: false,
90
+ default: null
91
+ },
92
+ location: {
93
+ type: String,
94
+ default: "top"
95
+ },
96
+ width: {
97
+ type: [Array, String, Number] as PropType<string[] | number[] | string | number | null>,
98
+ default: 182
99
+ },
100
+ padding: {
101
+ type: [Array, String, Number] as PropType<string[] | number[] | string | number | null>,
102
+ default: "16px 8px"
103
+ },
104
+ iconSize: {
105
+ type: String,
106
+ default: "18px"
107
+ }
108
+ },
109
+ emits: ["update:modelValue"],
110
+ setup() {
111
+ const modelValue = ref(false);
112
+
113
+ const { getColors } = useColors();
114
+
115
+ const lightColors = getColors(ColorEnum.Light);
116
+
117
+ return {
118
+ ColorEnum,
119
+ modelValue,
120
+ lightColors
121
+ };
122
+ }
123
+ });
124
+ </script>
@@ -0,0 +1,47 @@
1
+ <template>
2
+ <v-menu
3
+ :modelValue="$props.modelValue"
4
+ :scrollStrategy="$props.scrollStrategy"
5
+ :offset="$props.offset"
6
+ @update:modelValue="$emit('update:modelValue', $event)"
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
+ <slot />
18
+ </v-menu>
19
+ </template>
20
+
21
+ <script lang="ts">
22
+ import { defineComponent, type PropType } from "vue";
23
+
24
+ export default defineComponent({
25
+ name: "FSMenu",
26
+ props: {
27
+ modelValue: {
28
+ type: Boolean,
29
+ default: false
30
+ },
31
+ scrollStrategy: {
32
+ type: String,
33
+ default: "close"
34
+ },
35
+ offset: {
36
+ type: [String, Number] as PropType<string | number | null>,
37
+ default: "4px"
38
+ },
39
+ },
40
+ emits: ["update:modelValue"],
41
+ setup() {
42
+
43
+ return {
44
+ };
45
+ }
46
+ });
47
+ </script>
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <v-menu
2
+ <FSMenu
3
3
  :closeOnContentClick="false"
4
4
  v-model="menu"
5
5
  location="bottom center"
@@ -22,7 +22,7 @@
22
22
  :deviceConnectivity="$props.deviceConnectivity"
23
23
  @close="menu = false"
24
24
  />
25
- </v-menu>
25
+ </FSMenu>
26
26
  </template>
27
27
 
28
28
  <script lang="ts">
@@ -33,12 +33,14 @@ import type { FSDeviceConnectivity } from "@dative-gpi/foundation-shared-compone
33
33
 
34
34
  import FSConnectivityCard from "./FSConnectivityCard.vue";
35
35
  import FSColorIcon from "../FSColorIcon.vue";
36
+ import FSMenu from '../FSMenu.vue';
36
37
 
37
38
  export default defineComponent({
38
39
  name: "FSConnectivity",
39
40
  components: {
40
41
  FSConnectivityCard,
41
- FSColorIcon
42
+ FSColorIcon,
43
+ FSMenu
42
44
  },
43
45
  props: {
44
46
  deviceConnectivity: {
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <v-menu
2
+ <FSMenu
3
3
  :closeOnContentClick="false"
4
4
  v-model="menu"
5
5
  location="bottom center"
@@ -23,7 +23,7 @@
23
23
  :statusGroup="$props.statusGroup"
24
24
  @close="menu = false"
25
25
  />
26
- </v-menu>
26
+ </FSMenu>
27
27
  </template>
28
28
 
29
29
  <script lang="ts">
@@ -34,12 +34,14 @@ import type { FSDeviceStatusGroup, FSModelStatus } from "@dative-gpi/foundation-
34
34
 
35
35
  import FSStatusCard from "./FSStatusCard.vue";
36
36
  import FSColorIcon from "../FSColorIcon.vue";
37
+ import FSMenu from '../FSMenu.vue';
37
38
 
38
39
  export default defineComponent({
39
40
  name: "FSStatus",
40
41
  components: {
41
42
  FSStatusCard,
42
- FSColorIcon
43
+ FSColorIcon,
44
+ FSMenu
43
45
  },
44
46
  props: {
45
47
  modelStatus: {
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <v-menu
2
+ <FSMenu
3
3
  :closeOnContentClick="false"
4
4
  v-model="menu"
5
5
  location="bottom center"
@@ -28,25 +28,29 @@
28
28
  :alertTo="$props.alertTo"
29
29
  @close="menu = false"
30
30
  />
31
- </v-menu>
31
+ </FSMenu>
32
32
  </template>
33
33
 
34
34
  <script lang="ts">
35
35
  import { computed, defineComponent, type PropType, ref } from "vue";
36
36
 
37
- import { type FSDeviceAlert } from "@dative-gpi/foundation-shared-components/models";
37
+ import { capNumberToString } from '@dative-gpi/foundation-shared-components/utils';
38
38
  import { AlertTools } from "@dative-gpi/foundation-shared-components/tools";
39
39
 
40
+ import { type FSDeviceAlert } from "@dative-gpi/foundation-shared-components/models";
41
+
40
42
  import FSWorstAlertCard from "./FSWorstAlertCard.vue";
41
43
  import FSColorIcon from "../FSColorIcon.vue";
42
44
  import FSBadge from "../FSBadge.vue";
45
+ import FSMenu from '../FSMenu.vue';
43
46
 
44
47
  export default defineComponent({
45
48
  name: "FSWorstAlert",
46
49
  components: {
47
50
  FSWorstAlertCard,
48
51
  FSColorIcon,
49
- FSBadge
52
+ FSBadge,
53
+ FSMenu
50
54
  },
51
55
  props: {
52
56
  deviceWorstAlert: {
@@ -79,10 +83,8 @@ export default defineComponent({
79
83
  if (!props.deviceAlerts || props.deviceAlerts.length < 1) {
80
84
  return null;
81
85
  }
82
- if (props.deviceAlerts.length > 9) {
83
- return "9+";
84
- }
85
- return props.deviceAlerts.length.toString();
86
+
87
+ return capNumberToString(props.deviceAlerts.length, 9);
86
88
  });
87
89
 
88
90
  return {
@@ -17,7 +17,7 @@
17
17
  gap="0px"
18
18
  >
19
19
  <FSText>
20
- {{ $tr('ui.alert.status', 'Status') }} : {{ AlertTools.statusLabel($props.deviceAlert?.status) }}
20
+ {{ $tr('entity.alert.current-status', 'Status') }} : {{ AlertTools.statusLabel($props.deviceAlert?.status) }}
21
21
  </FSText>
22
22
  <FSText
23
23
  font="text-button"
@@ -1,5 +1,4 @@
1
1
  <template>
2
-
3
2
  <FSBaseField
4
3
  class="fs-color-field"
5
4
  :description="$props.description"
@@ -34,7 +33,7 @@
34
33
  </FSRow>
35
34
  </FSCard>
36
35
  </FSBaseField>
37
- <v-menu
36
+ <FSMenu
38
37
  origin="top left"
39
38
  min-width="300px"
40
39
  :activator="`#${activatorId}`"
@@ -73,7 +72,7 @@
73
72
  />
74
73
  </FSCol>
75
74
  </FSCard>
76
- </v-menu>
75
+ </FSMenu>
77
76
  </template>
78
77
 
79
78
  <script lang="ts">
@@ -87,6 +86,7 @@ import FSBaseField from "./FSBaseField.vue";
87
86
  import FSCard from "../FSCard.vue";
88
87
  import FSIcon from "../FSIcon.vue";
89
88
  import FSText from "../FSText.vue";
89
+ import FSMenu from "../FSMenu.vue";
90
90
  import FSRow from "../FSRow.vue";
91
91
  import FSCol from "../FSCol.vue";
92
92
 
@@ -94,6 +94,7 @@ export default defineComponent({
94
94
  name: "FSColorField",
95
95
  components: {
96
96
  FSBaseField,
97
+ FSMenu,
97
98
  FSText,
98
99
  FSCard,
99
100
  FSIcon,
@@ -71,7 +71,7 @@
71
71
  <template
72
72
  v-else
73
73
  >
74
- <v-menu
74
+ <FSMenu
75
75
  min-width="300px"
76
76
  :closeOnContentClick="false"
77
77
  :modelValue="menu && !$props.disabled"
@@ -142,7 +142,7 @@
142
142
  />
143
143
  </FSCol>
144
144
  </FSCard>
145
- </v-menu>
145
+ </FSMenu>
146
146
  </template>
147
147
  </FSCol>
148
148
  </template>
@@ -160,6 +160,7 @@ import FSTextField from "./FSTextField.vue";
160
160
  import FSCalendar from "../FSCalendar.vue";
161
161
  import FSButton from "../FSButton.vue";
162
162
  import FSCard from "../FSCard.vue";
163
+ import FSMenu from '../FSMenu.vue';
163
164
  import FSCol from "../FSCol.vue";
164
165
 
165
166
  export default defineComponent({
@@ -170,6 +171,7 @@ export default defineComponent({
170
171
  FSCalendar,
171
172
  FSButton,
172
173
  FSCard,
174
+ FSMenu,
173
175
  FSCol
174
176
  },
175
177
  props: {
@@ -91,7 +91,8 @@
91
91
  <template
92
92
  v-else
93
93
  >
94
- <v-menu
94
+ <FSMenu
95
+ min-width="300px"
95
96
  :closeOnContentClick="false"
96
97
  :modelValue="menu && !$props.disabled"
97
98
  @update:modelValue="menu = $event"
@@ -187,7 +188,7 @@
187
188
  </FSCol>
188
189
  </FSCard>
189
190
  </FSWindow>
190
- </v-menu>
191
+ </FSMenu>
191
192
  </template>
192
193
  </FSCol>
193
194
  </template>
@@ -206,6 +207,7 @@ import FSWindow from "../FSWindow.vue";
206
207
  import FSButton from "../FSButton.vue";
207
208
  import FSClock from "../FSClock.vue";
208
209
  import FSCard from "../FSCard.vue";
210
+ import FSMenu from '../FSMenu.vue';
209
211
  import FSCol from "../FSCol.vue";
210
212
 
211
213
  export default defineComponent({
@@ -218,6 +220,7 @@ export default defineComponent({
218
220
  FSButton,
219
221
  FSClock,
220
222
  FSCard,
223
+ FSMenu,
221
224
  FSCol
222
225
  },
223
226
  props: {
@@ -116,7 +116,7 @@
116
116
  >
117
117
  mdi-link
118
118
  </FSIcon>
119
- <v-menu
119
+ <FSMenu
120
120
  v-if="$props.variableReferences && $props.variableReferences.length > 0"
121
121
  :closeOnContentClick="false"
122
122
  v-model="menuVariable"
@@ -146,7 +146,7 @@
146
146
  @update:modelValue="insertVariable($event)"
147
147
  />
148
148
  </FSCard>
149
- </v-menu>
149
+ </FSMenu>
150
150
  <v-divider
151
151
  vertical
152
152
  />
@@ -246,6 +246,7 @@ import FSTextField from "./FSTextField.vue";
246
246
  import FSIcon from "../FSIcon.vue";
247
247
  import FSCard from "../FSCard.vue";
248
248
  import FSText from "../FSText.vue";
249
+ import FSMenu from '../FSMenu.vue';
249
250
  import FSCol from "../FSCol.vue";
250
251
  import FSRow from "../FSRow.vue";
251
252
 
@@ -257,6 +258,7 @@ export default defineComponent({
257
258
  FSText,
258
259
  FSIcon,
259
260
  FSCard,
261
+ FSMenu,
260
262
  FSCol,
261
263
  FSRow
262
264
  },
@@ -131,7 +131,7 @@
131
131
  <template
132
132
  v-else
133
133
  >
134
- <v-menu
134
+ <FSMenu
135
135
  :closeOnContentClick="false"
136
136
  :modelValue="menu && !$props.disabled"
137
137
  @update:modelValue="menu = $event"
@@ -233,7 +233,7 @@
233
233
  #title
234
234
  />
235
235
  </v-treeview>
236
- </v-menu>
236
+ </FSMenu>
237
237
  </template>
238
238
  </FSCol>
239
239
  </template>
@@ -253,6 +253,7 @@ import FSFadeOut from "../FSFadeOut.vue";
253
253
  import FSLoader from "../FSLoader.vue";
254
254
  import FSRadio from "../FSRadio.vue";
255
255
  import FSSpan from "../FSSpan.vue";
256
+ import FSMenu from '../FSMenu.vue';
256
257
  import FSCol from "../FSCol.vue";
257
258
 
258
259
  export default defineComponent({
@@ -266,6 +267,7 @@ export default defineComponent({
266
267
  FSLoader,
267
268
  FSRadio,
268
269
  FSSpan,
270
+ FSMenu,
269
271
  FSCol,
270
272
  },
271
273
  props: {