@dative-gpi/foundation-shared-components 0.0.69 → 0.0.71
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/FSBreadcrumbs.vue +5 -1
- package/components/FSCard.vue +28 -4
- package/components/FSIcon.vue +23 -7
- package/components/FSIconCard.vue +60 -0
- package/components/fields/FSColorField.vue +2 -0
- package/components/tiles/FSDeviceOrganisationTileUI.vue +7 -6
- package/components/tiles/FSGroupTileUI.vue +9 -10
- package/components/tiles/FSSimpleIconTileUI.vue +124 -0
- package/components/tiles/FSTile.vue +3 -2
- package/components/tiles/FSUserOrganisationTileUI.vue +174 -0
- package/composables/useColors.ts +5 -5
- package/package.json +4 -4
- package/styles/components/fs_breadcrumbs.scss +8 -0
- package/styles/components/fs_card.scss +8 -1
- package/styles/components/fs_icon.scss +2 -26
package/components/FSCard.vue
CHANGED
|
@@ -65,12 +65,12 @@ export default defineComponent({
|
|
|
65
65
|
default: "8px"
|
|
66
66
|
},
|
|
67
67
|
variant: {
|
|
68
|
-
type: String as PropType<"background" | "standard">,
|
|
68
|
+
type: String as PropType<"background" | "standard" | "gradient">,
|
|
69
69
|
required: false,
|
|
70
70
|
default: "background"
|
|
71
71
|
},
|
|
72
72
|
color: {
|
|
73
|
-
type: String as PropType<ColorBase>,
|
|
73
|
+
type: [Array, String] as PropType<ColorBase | ColorBase[]>,
|
|
74
74
|
required: false,
|
|
75
75
|
default: ColorEnum.Background
|
|
76
76
|
},
|
|
@@ -91,9 +91,15 @@ export default defineComponent({
|
|
|
91
91
|
}
|
|
92
92
|
},
|
|
93
93
|
setup(props) {
|
|
94
|
-
const { getColors } = useColors();
|
|
94
|
+
const { getColors, getGradients } = useColors();
|
|
95
95
|
|
|
96
|
-
const colors = computed(() =>
|
|
96
|
+
const colors = computed(() => {
|
|
97
|
+
if(Array.isArray(props.color)) {
|
|
98
|
+
return getColors(props.color[0]);
|
|
99
|
+
}
|
|
100
|
+
return getColors(props.color);
|
|
101
|
+
});
|
|
102
|
+
const gradients = computed(() => getGradients(props.color, 135));
|
|
97
103
|
const backgrounds = getColors(ColorEnum.Background);
|
|
98
104
|
const lights = getColors(ColorEnum.Light);
|
|
99
105
|
const darks = getColors(ColorEnum.Dark);
|
|
@@ -120,11 +126,29 @@ export default defineComponent({
|
|
|
120
126
|
"--fs-card-border-color" : lights.dark,
|
|
121
127
|
"--fs-card-color" : darks.base
|
|
122
128
|
}
|
|
129
|
+
case "gradient": return {
|
|
130
|
+
"--fs-card-border-size" : props.border ? "1px" : "0",
|
|
131
|
+
"--fs-card-border-radius" : sizeToVar(props.borderRadius),
|
|
132
|
+
"--fs-card-padding" : sizeToVar(props.padding),
|
|
133
|
+
"--fs-card-height" : sizeToVar(props.height),
|
|
134
|
+
"--fs-card-width" : sizeToVar(props.width),
|
|
135
|
+
"--fs-card-background-color": gradients.value.base,
|
|
136
|
+
"--fs-card-border-color" : colors.value.lightContrast,
|
|
137
|
+
"--fs-card-color" : colors.value.lightContrast
|
|
138
|
+
}
|
|
123
139
|
}
|
|
124
140
|
});
|
|
125
141
|
|
|
126
142
|
const classes = computed((): string[] => {
|
|
127
143
|
const classNames = ["fs-card"];
|
|
144
|
+
switch(props.variant) {
|
|
145
|
+
case "gradient":
|
|
146
|
+
classNames.push("fs-card-gradient");
|
|
147
|
+
break;
|
|
148
|
+
default:
|
|
149
|
+
classNames.push("fs-card-background");
|
|
150
|
+
break;
|
|
151
|
+
}
|
|
128
152
|
if (props.elevation) {
|
|
129
153
|
classNames.push("fs-card-elevation");
|
|
130
154
|
}
|
package/components/FSIcon.vue
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<v-icon
|
|
3
|
-
|
|
3
|
+
class="fs-icon"
|
|
4
4
|
:color="color"
|
|
5
|
+
:style="style"
|
|
5
6
|
v-bind="$attrs"
|
|
6
7
|
>
|
|
7
8
|
<slot />
|
|
@@ -11,14 +12,15 @@
|
|
|
11
12
|
<script lang="ts">
|
|
12
13
|
import { computed, defineComponent, PropType } from "vue";
|
|
13
14
|
|
|
14
|
-
import { useColors } from "@dative-gpi/foundation-shared-components/composables";
|
|
15
|
+
import { useBreakpoints, useColors } from "@dative-gpi/foundation-shared-components/composables";
|
|
15
16
|
import { ColorBase } from "@dative-gpi/foundation-shared-components/models";
|
|
17
|
+
import { sizeToVar } from "../utils";
|
|
16
18
|
|
|
17
19
|
export default defineComponent({
|
|
18
20
|
name: "FSIcon",
|
|
19
21
|
props: {
|
|
20
22
|
size: {
|
|
21
|
-
type: String as PropType<"s" | "m" | "l">,
|
|
23
|
+
type: [Array, String, Number] as PropType<"s" | "m" | "l" | string[] | number[] | string | number | null>,
|
|
22
24
|
required: false,
|
|
23
25
|
default: "m"
|
|
24
26
|
},
|
|
@@ -34,6 +36,7 @@ export default defineComponent({
|
|
|
34
36
|
}
|
|
35
37
|
},
|
|
36
38
|
setup(props) {
|
|
39
|
+
const { isMobileSized } = useBreakpoints();
|
|
37
40
|
const { getColors } = useColors();
|
|
38
41
|
|
|
39
42
|
const color = computed((): string | null => {
|
|
@@ -43,13 +46,26 @@ export default defineComponent({
|
|
|
43
46
|
return null;
|
|
44
47
|
});
|
|
45
48
|
|
|
46
|
-
const
|
|
47
|
-
|
|
49
|
+
const style = computed((): { [key: string] : string | undefined } => {
|
|
50
|
+
switch(props.size) {
|
|
51
|
+
case "s": return {
|
|
52
|
+
"--fs-icon-font-size": isMobileSized.value ? "14px" : "16px"
|
|
53
|
+
};
|
|
54
|
+
case "m": return {
|
|
55
|
+
"--fs-icon-font-size": isMobileSized.value ? "16px" : "20px"
|
|
56
|
+
};
|
|
57
|
+
case "l": return {
|
|
58
|
+
"--fs-icon-font-size": isMobileSized.value ? "20px" : "24px"
|
|
59
|
+
};
|
|
60
|
+
default: return {
|
|
61
|
+
"--fs-icon-font-size": sizeToVar(props.size)
|
|
62
|
+
};
|
|
63
|
+
}
|
|
48
64
|
});
|
|
49
65
|
|
|
50
66
|
return {
|
|
51
|
-
|
|
52
|
-
|
|
67
|
+
color,
|
|
68
|
+
style
|
|
53
69
|
};
|
|
54
70
|
}
|
|
55
71
|
});
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<FSCard
|
|
3
|
+
:variant="$props.backgroundColor == null ? 'background' : 'gradient'"
|
|
4
|
+
:border="$props.backgroundColor == null"
|
|
5
|
+
:color="$props.backgroundColor"
|
|
6
|
+
:height="$props.size"
|
|
7
|
+
:width="$props.size"
|
|
8
|
+
>
|
|
9
|
+
<FSRow
|
|
10
|
+
align="center-center"
|
|
11
|
+
>
|
|
12
|
+
<FSIcon
|
|
13
|
+
variant="dark"
|
|
14
|
+
size="56"
|
|
15
|
+
:color="$props.iconColor"
|
|
16
|
+
>
|
|
17
|
+
{{ $props.icon }}
|
|
18
|
+
</FSIcon>
|
|
19
|
+
</FSRow>
|
|
20
|
+
</FSCard>
|
|
21
|
+
</template>
|
|
22
|
+
|
|
23
|
+
<script lang="ts">
|
|
24
|
+
import { defineComponent, PropType } from "vue";
|
|
25
|
+
|
|
26
|
+
import { ColorBase, ColorEnum } from "@dative-gpi/foundation-shared-components/models";
|
|
27
|
+
|
|
28
|
+
import FSCard from "./FSCard.vue";
|
|
29
|
+
import FSIcon from "./FSIcon.vue";
|
|
30
|
+
|
|
31
|
+
export default defineComponent({
|
|
32
|
+
name: "FSIconCard",
|
|
33
|
+
components: {
|
|
34
|
+
FSCard,
|
|
35
|
+
FSIcon
|
|
36
|
+
},
|
|
37
|
+
props: {
|
|
38
|
+
size: {
|
|
39
|
+
type: [Array, String, Number] as PropType<string[] | number[] | string | number | null>,
|
|
40
|
+
required: false,
|
|
41
|
+
default: null
|
|
42
|
+
},
|
|
43
|
+
backgroundColor: {
|
|
44
|
+
type: [Array, String] as PropType<ColorBase | ColorBase[]>,
|
|
45
|
+
required: false,
|
|
46
|
+
default: null
|
|
47
|
+
},
|
|
48
|
+
icon: {
|
|
49
|
+
type: String as PropType<string>,
|
|
50
|
+
required: false,
|
|
51
|
+
default: "mdi-shape"
|
|
52
|
+
},
|
|
53
|
+
iconColor: {
|
|
54
|
+
type: String as PropType<ColorBase>,
|
|
55
|
+
required: false,
|
|
56
|
+
default: ColorEnum.Dark
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
</script>
|
|
@@ -34,6 +34,7 @@
|
|
|
34
34
|
prependIcon="mdi-pencil"
|
|
35
35
|
variant="full"
|
|
36
36
|
:editable="$props.editable"
|
|
37
|
+
v-bind="props"
|
|
37
38
|
/>
|
|
38
39
|
</template>
|
|
39
40
|
</FSTextField>
|
|
@@ -64,6 +65,7 @@
|
|
|
64
65
|
prependIcon="mdi-pencil"
|
|
65
66
|
variant="full"
|
|
66
67
|
:editable="$props.editable"
|
|
68
|
+
v-bind="props"
|
|
67
69
|
/>
|
|
68
70
|
</template>
|
|
69
71
|
</FSTextField>
|
|
@@ -22,17 +22,18 @@
|
|
|
22
22
|
gap="6px"
|
|
23
23
|
:width="infoWidth"
|
|
24
24
|
>
|
|
25
|
-
<
|
|
25
|
+
<FSText
|
|
26
26
|
font="text-button"
|
|
27
27
|
:lineClamp="2"
|
|
28
28
|
>
|
|
29
29
|
{{ $props.label }}
|
|
30
|
-
</
|
|
31
|
-
<
|
|
30
|
+
</FSText>
|
|
31
|
+
<FSText
|
|
32
32
|
font="text-overline"
|
|
33
|
+
variant="light"
|
|
33
34
|
>
|
|
34
35
|
{{ $props.code }}
|
|
35
|
-
</
|
|
36
|
+
</FSText>
|
|
36
37
|
</FSCol>
|
|
37
38
|
<FSRow
|
|
38
39
|
gap="4px"
|
|
@@ -82,7 +83,7 @@ import FSStatusesRow from "../deviceOrganisations/FSStatusesRow.vue";
|
|
|
82
83
|
import FSWorstAlert from "../deviceOrganisations/FSWorstAlert.vue";
|
|
83
84
|
import FSDivider from "../FSDivider.vue";
|
|
84
85
|
import FSImage from "../FSImage.vue";
|
|
85
|
-
import
|
|
86
|
+
import FSText from "../FSText.vue";
|
|
86
87
|
import FSTile from "./FSTile.vue";
|
|
87
88
|
import FSCol from "../FSCol.vue";
|
|
88
89
|
import FSRow from "../FSRow.vue";
|
|
@@ -96,8 +97,8 @@ export default defineComponent({
|
|
|
96
97
|
FSWorstAlert,
|
|
97
98
|
FSDivider,
|
|
98
99
|
FSImage,
|
|
100
|
+
FSText,
|
|
99
101
|
FSTile,
|
|
100
|
-
FSSpan,
|
|
101
102
|
FSCol,
|
|
102
103
|
FSRow
|
|
103
104
|
},
|
|
@@ -22,16 +22,17 @@
|
|
|
22
22
|
gap="6px"
|
|
23
23
|
:width="infoWidth"
|
|
24
24
|
>
|
|
25
|
-
<
|
|
25
|
+
<FSText
|
|
26
26
|
font="text-button"
|
|
27
27
|
>
|
|
28
28
|
{{ $props.label }}
|
|
29
|
-
</
|
|
30
|
-
<
|
|
29
|
+
</FSText>
|
|
30
|
+
<FSText
|
|
31
31
|
font="text-overline"
|
|
32
|
+
variant="light"
|
|
32
33
|
>
|
|
33
34
|
{{ $props.code }}
|
|
34
|
-
</
|
|
35
|
+
</FSText>
|
|
35
36
|
</FSCol>
|
|
36
37
|
<FSCol
|
|
37
38
|
gap="6px"
|
|
@@ -55,11 +56,11 @@
|
|
|
55
56
|
</FSText>
|
|
56
57
|
</FSRow>
|
|
57
58
|
</FSColor>
|
|
58
|
-
<
|
|
59
|
+
<FSText
|
|
59
60
|
font="text-overline"
|
|
60
61
|
>
|
|
61
62
|
{{ $tr("ui.group-tile.group(s)", "Group(s)") }}
|
|
62
|
-
</
|
|
63
|
+
</FSText>
|
|
63
64
|
</FSRow>
|
|
64
65
|
<FSRow
|
|
65
66
|
align="center-left"
|
|
@@ -80,11 +81,11 @@
|
|
|
80
81
|
</FSText>
|
|
81
82
|
</FSRow>
|
|
82
83
|
</FSColor>
|
|
83
|
-
<
|
|
84
|
+
<FSText
|
|
84
85
|
font="text-overline"
|
|
85
86
|
>
|
|
86
87
|
{{ $tr("ui.group-tile.device(s)", "Device(s)") }}
|
|
87
|
-
</
|
|
88
|
+
</FSText>
|
|
88
89
|
</FSRow>
|
|
89
90
|
</FSCol>
|
|
90
91
|
</FSCol>
|
|
@@ -106,7 +107,6 @@ import { ColorEnum } from "@dative-gpi/foundation-shared-components/models";
|
|
|
106
107
|
|
|
107
108
|
import FSImage from "../FSImage.vue";
|
|
108
109
|
import FSColor from "../FSColor.vue";
|
|
109
|
-
import FSSpan from "../FSSpan.vue";
|
|
110
110
|
import FSText from "../FSText.vue";
|
|
111
111
|
import FSTile from "./FSTile.vue";
|
|
112
112
|
import FSCol from "../FSCol.vue";
|
|
@@ -117,7 +117,6 @@ export default defineComponent({
|
|
|
117
117
|
components: {
|
|
118
118
|
FSImage,
|
|
119
119
|
FSColor,
|
|
120
|
-
FSSpan,
|
|
121
120
|
FSText,
|
|
122
121
|
FSTile,
|
|
123
122
|
FSCol,
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<FSTile
|
|
3
|
+
:bottomColor="$props.bottomColor"
|
|
4
|
+
:editable="$props.editable"
|
|
5
|
+
:modelValue="$props.modelValue"
|
|
6
|
+
v-bind="$attrs"
|
|
7
|
+
>
|
|
8
|
+
<FSCol
|
|
9
|
+
align="center-center"
|
|
10
|
+
width="fill"
|
|
11
|
+
>
|
|
12
|
+
<FSRow
|
|
13
|
+
align="center-center"
|
|
14
|
+
gap="24px"
|
|
15
|
+
:height="imageSize"
|
|
16
|
+
:wrap="false"
|
|
17
|
+
>
|
|
18
|
+
<FSCol
|
|
19
|
+
gap="6px"
|
|
20
|
+
>
|
|
21
|
+
<FSText
|
|
22
|
+
font="text-button"
|
|
23
|
+
:lineClamp="2"
|
|
24
|
+
>
|
|
25
|
+
{{ $props.label }}
|
|
26
|
+
</FSText>
|
|
27
|
+
<FSText
|
|
28
|
+
font="text-overline"
|
|
29
|
+
variant="light"
|
|
30
|
+
>
|
|
31
|
+
{{ $props.code }}
|
|
32
|
+
</FSText>
|
|
33
|
+
</FSCol>
|
|
34
|
+
<FSIconCard
|
|
35
|
+
:backgroundColor="$props.iconBackgroundColor"
|
|
36
|
+
:icon="$props.icon"
|
|
37
|
+
:size="imageSize"
|
|
38
|
+
/>
|
|
39
|
+
</FSRow>
|
|
40
|
+
</FSCol>
|
|
41
|
+
</FSTile>
|
|
42
|
+
</template>
|
|
43
|
+
|
|
44
|
+
<script lang="ts">
|
|
45
|
+
import { computed, defineComponent, PropType } from "vue";
|
|
46
|
+
|
|
47
|
+
import { useBreakpoints } from "@dative-gpi/foundation-shared-components/composables";
|
|
48
|
+
import { ColorBase, ColorEnum } from "@dative-gpi/foundation-shared-components/models";
|
|
49
|
+
|
|
50
|
+
import FSIconCard from "../FSIconCard.vue";
|
|
51
|
+
import FSText from "../FSText.vue";
|
|
52
|
+
import FSTile from "./FSTile.vue";
|
|
53
|
+
import FSCol from "../FSCol.vue";
|
|
54
|
+
import FSRow from "../FSRow.vue";
|
|
55
|
+
|
|
56
|
+
export default defineComponent({
|
|
57
|
+
name: "FSSimpleIconTileUI",
|
|
58
|
+
components: {
|
|
59
|
+
FSIconCard,
|
|
60
|
+
FSText,
|
|
61
|
+
FSTile,
|
|
62
|
+
FSCol,
|
|
63
|
+
FSRow
|
|
64
|
+
},
|
|
65
|
+
props: {
|
|
66
|
+
label: {
|
|
67
|
+
type: String as PropType<string | null>,
|
|
68
|
+
required: false,
|
|
69
|
+
default: null
|
|
70
|
+
},
|
|
71
|
+
modelValue: {
|
|
72
|
+
type: Boolean,
|
|
73
|
+
required: false,
|
|
74
|
+
default: false
|
|
75
|
+
},
|
|
76
|
+
code: {
|
|
77
|
+
type: String as PropType<string | null>,
|
|
78
|
+
required: false,
|
|
79
|
+
default: null
|
|
80
|
+
},
|
|
81
|
+
bottomColor: {
|
|
82
|
+
type: [Array, String] as PropType<ColorBase | ColorBase[]>,
|
|
83
|
+
required: false,
|
|
84
|
+
default: ColorEnum.Light
|
|
85
|
+
},
|
|
86
|
+
iconBackgroundColor: {
|
|
87
|
+
type: [Array, String] as PropType<ColorBase | ColorBase[]>,
|
|
88
|
+
required: false,
|
|
89
|
+
default: null
|
|
90
|
+
},
|
|
91
|
+
icon: {
|
|
92
|
+
type: String as PropType<string>,
|
|
93
|
+
required: false,
|
|
94
|
+
default: "mdi-ab-testing"
|
|
95
|
+
},
|
|
96
|
+
editable: {
|
|
97
|
+
type: Boolean,
|
|
98
|
+
required: false,
|
|
99
|
+
default: true
|
|
100
|
+
}
|
|
101
|
+
},
|
|
102
|
+
setup(props) {
|
|
103
|
+
const { isMobileSized } = useBreakpoints();
|
|
104
|
+
|
|
105
|
+
const imageSize = computed((): number => {
|
|
106
|
+
return isMobileSized.value ? 90 : 100;
|
|
107
|
+
});
|
|
108
|
+
|
|
109
|
+
const infoWidth = computed((): number => {
|
|
110
|
+
let width = isMobileSized.value ? 288 : 304;
|
|
111
|
+
if (props.icon) {
|
|
112
|
+
width -= imageSize.value;
|
|
113
|
+
}
|
|
114
|
+
return width;
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
return {
|
|
118
|
+
ColorEnum,
|
|
119
|
+
imageSize,
|
|
120
|
+
infoWidth
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
</script>
|
|
@@ -48,6 +48,7 @@
|
|
|
48
48
|
/>
|
|
49
49
|
</FSCard>
|
|
50
50
|
<div
|
|
51
|
+
v-if="$props.bottomColor"
|
|
51
52
|
class="fs-tile-bottom"
|
|
52
53
|
:style="style"
|
|
53
54
|
/>
|
|
@@ -89,9 +90,9 @@ export default defineComponent({
|
|
|
89
90
|
default: false
|
|
90
91
|
},
|
|
91
92
|
bottomColor: {
|
|
92
|
-
type: [Array, String] as PropType<ColorBase[] | ColorBase>,
|
|
93
|
+
type: [Array, String] as PropType<ColorBase[] | ColorBase | null>,
|
|
93
94
|
required: false,
|
|
94
|
-
default:
|
|
95
|
+
default: null
|
|
95
96
|
},
|
|
96
97
|
editable: {
|
|
97
98
|
type: Boolean,
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<FSTile
|
|
3
|
+
:editable="$props.editable"
|
|
4
|
+
:modelValue="$props.modelValue"
|
|
5
|
+
v-bind="$attrs"
|
|
6
|
+
>
|
|
7
|
+
<FSCol
|
|
8
|
+
align="center-center"
|
|
9
|
+
width="fill"
|
|
10
|
+
>
|
|
11
|
+
<FSRow
|
|
12
|
+
align="center-center"
|
|
13
|
+
gap="24px"
|
|
14
|
+
:wrap="false"
|
|
15
|
+
:height="imageSize"
|
|
16
|
+
>
|
|
17
|
+
<FSCol
|
|
18
|
+
gap="4px"
|
|
19
|
+
:width="infoWidth"
|
|
20
|
+
>
|
|
21
|
+
<FSText
|
|
22
|
+
font="text-button"
|
|
23
|
+
:lineClamp="2"
|
|
24
|
+
>
|
|
25
|
+
{{ title }}
|
|
26
|
+
</FSText>
|
|
27
|
+
<FSRow
|
|
28
|
+
v-if="roleLabel"
|
|
29
|
+
align="center-left"
|
|
30
|
+
gap="4px"
|
|
31
|
+
>
|
|
32
|
+
<FSIcon
|
|
33
|
+
v-if="roleIcon"
|
|
34
|
+
variant="light"
|
|
35
|
+
:color="ColorEnum.Dark"
|
|
36
|
+
>
|
|
37
|
+
{{ roleIcon }}
|
|
38
|
+
</FSIcon>
|
|
39
|
+
<FSText
|
|
40
|
+
font="text-overline"
|
|
41
|
+
variant="light"
|
|
42
|
+
>
|
|
43
|
+
{{ roleLabel }}
|
|
44
|
+
</FSText>
|
|
45
|
+
</FSRow>
|
|
46
|
+
</FSCol>
|
|
47
|
+
<FSImage
|
|
48
|
+
v-if="$props.imageId"
|
|
49
|
+
:imageId="$props.imageId"
|
|
50
|
+
:width="imageSize"
|
|
51
|
+
/>
|
|
52
|
+
</FSRow>
|
|
53
|
+
</FSCol>
|
|
54
|
+
</FSTile>
|
|
55
|
+
</template>
|
|
56
|
+
|
|
57
|
+
<script lang="ts">
|
|
58
|
+
import { computed, defineComponent, PropType } from "vue";
|
|
59
|
+
|
|
60
|
+
import { useTranslations as useTranslationsProvider } from "@dative-gpi/bones-ui/composables";
|
|
61
|
+
import { useBreakpoints } from "@dative-gpi/foundation-shared-components/composables";
|
|
62
|
+
import { ColorEnum } from "@dative-gpi/foundation-shared-components/models";
|
|
63
|
+
import { UserType } from "@dative-gpi/foundation-core-domain/models";
|
|
64
|
+
|
|
65
|
+
import FSImage from "../FSImage.vue";
|
|
66
|
+
import FSText from "../FSText.vue";
|
|
67
|
+
import FSTile from "./FSTile.vue";
|
|
68
|
+
import FSCol from "../FSCol.vue";
|
|
69
|
+
import FSRow from "../FSRow.vue";
|
|
70
|
+
|
|
71
|
+
export default defineComponent({
|
|
72
|
+
name: "FSUserOrganisationTileUI",
|
|
73
|
+
components: {
|
|
74
|
+
FSImage,
|
|
75
|
+
FSText,
|
|
76
|
+
FSTile,
|
|
77
|
+
FSCol,
|
|
78
|
+
FSRow
|
|
79
|
+
},
|
|
80
|
+
props: {
|
|
81
|
+
imageId: {
|
|
82
|
+
type: String as PropType<string | null>,
|
|
83
|
+
required: false,
|
|
84
|
+
default: null
|
|
85
|
+
},
|
|
86
|
+
name: {
|
|
87
|
+
type: String as PropType<string | null>,
|
|
88
|
+
required: false,
|
|
89
|
+
default: null
|
|
90
|
+
},
|
|
91
|
+
label: {
|
|
92
|
+
type: String as PropType<string | null>,
|
|
93
|
+
required: false,
|
|
94
|
+
default: null
|
|
95
|
+
},
|
|
96
|
+
userType: {
|
|
97
|
+
type: Number as PropType<UserType>,
|
|
98
|
+
required: false,
|
|
99
|
+
default: UserType.User
|
|
100
|
+
},
|
|
101
|
+
roleIcon: {
|
|
102
|
+
type: String as PropType<string | null>,
|
|
103
|
+
required: false,
|
|
104
|
+
default: null
|
|
105
|
+
},
|
|
106
|
+
roleLabel: {
|
|
107
|
+
type: String as PropType<string | null>,
|
|
108
|
+
required: false,
|
|
109
|
+
default: null
|
|
110
|
+
},
|
|
111
|
+
admin: {
|
|
112
|
+
type: Boolean,
|
|
113
|
+
required: false,
|
|
114
|
+
default: false
|
|
115
|
+
},
|
|
116
|
+
modelValue: {
|
|
117
|
+
type: Boolean,
|
|
118
|
+
required: false,
|
|
119
|
+
default: false
|
|
120
|
+
},
|
|
121
|
+
editable: {
|
|
122
|
+
type: Boolean,
|
|
123
|
+
required: false,
|
|
124
|
+
default: true
|
|
125
|
+
}
|
|
126
|
+
},
|
|
127
|
+
setup(props) {
|
|
128
|
+
const { isMobileSized } = useBreakpoints();
|
|
129
|
+
const { $tr } = useTranslationsProvider();
|
|
130
|
+
|
|
131
|
+
const title = computed((): string | null => {
|
|
132
|
+
switch (props.userType) {
|
|
133
|
+
case UserType.ServiceAccount: return props.label;
|
|
134
|
+
default: return props.name;
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
|
|
138
|
+
const roleIcon = computed((): string | null => {
|
|
139
|
+
if (props.admin) {
|
|
140
|
+
return "mdi-crown-outline";
|
|
141
|
+
}
|
|
142
|
+
return props.roleIcon;
|
|
143
|
+
});
|
|
144
|
+
|
|
145
|
+
const roleLabel = computed((): string | null => {
|
|
146
|
+
if (props.admin) {
|
|
147
|
+
return $tr("ui.user-organisation.admin", "Administrator");
|
|
148
|
+
}
|
|
149
|
+
return props.roleLabel;
|
|
150
|
+
});
|
|
151
|
+
|
|
152
|
+
const imageSize = computed((): number => {
|
|
153
|
+
return isMobileSized.value ? 90 : 100;
|
|
154
|
+
});
|
|
155
|
+
|
|
156
|
+
const infoWidth = computed((): number => {
|
|
157
|
+
let width = isMobileSized.value ? 288 : 304;
|
|
158
|
+
if (props.imageId) {
|
|
159
|
+
width -= imageSize.value;
|
|
160
|
+
}
|
|
161
|
+
return width;
|
|
162
|
+
});
|
|
163
|
+
|
|
164
|
+
return {
|
|
165
|
+
imageSize,
|
|
166
|
+
infoWidth,
|
|
167
|
+
ColorEnum,
|
|
168
|
+
roleLabel,
|
|
169
|
+
roleIcon,
|
|
170
|
+
title
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
});
|
|
174
|
+
</script>
|
package/composables/useColors.ts
CHANGED
|
@@ -101,17 +101,17 @@ export const useColors = () => {
|
|
|
101
101
|
}
|
|
102
102
|
};
|
|
103
103
|
|
|
104
|
-
const getGradients = (colors: ColorBase | ColorBase[]): ColorVariations => {
|
|
104
|
+
const getGradients = (colors: ColorBase | ColorBase[], rotation: number = 90): ColorVariations => {
|
|
105
105
|
const variations = Array.isArray(colors) ? colors.map(getColors) : [getColors(colors)];
|
|
106
106
|
|
|
107
107
|
if (variations.length === 1) {
|
|
108
108
|
return variations[0];
|
|
109
109
|
}
|
|
110
110
|
return {
|
|
111
|
-
light: `linear-gradient(
|
|
112
|
-
soft: `linear-gradient(
|
|
113
|
-
base: `linear-gradient(
|
|
114
|
-
dark: `linear-gradient(
|
|
111
|
+
light: `linear-gradient(${rotation}deg, ${variations.map(v => v.light).join(", ")})`,
|
|
112
|
+
soft: `linear-gradient(${rotation}deg, ${variations.map(v => v.soft).join(", ")})`,
|
|
113
|
+
base: `linear-gradient(${rotation}deg, ${variations.map(v => v.base).join(", ")})`,
|
|
114
|
+
dark: `linear-gradient(${rotation}deg, ${variations.map(v => v.dark).join(", ")})`,
|
|
115
115
|
};
|
|
116
116
|
}
|
|
117
117
|
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dative-gpi/foundation-shared-components",
|
|
3
3
|
"sideEffects": false,
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.71",
|
|
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": "0.0.
|
|
14
|
-
"@dative-gpi/foundation-shared-services": "0.0.
|
|
13
|
+
"@dative-gpi/foundation-shared-domain": "0.0.71",
|
|
14
|
+
"@dative-gpi/foundation-shared-services": "0.0.71",
|
|
15
15
|
"@fontsource/montserrat": "^5.0.16",
|
|
16
16
|
"@lexical/clipboard": "^0.12.5",
|
|
17
17
|
"@lexical/history": "^0.12.5",
|
|
@@ -32,5 +32,5 @@
|
|
|
32
32
|
"sass": "^1.69.5",
|
|
33
33
|
"sass-loader": "^13.3.2"
|
|
34
34
|
},
|
|
35
|
-
"gitHead": "
|
|
35
|
+
"gitHead": "72097470e9163b0da5e7ab5d67496ac5c403f918"
|
|
36
36
|
}
|
|
@@ -6,7 +6,6 @@
|
|
|
6
6
|
width: var(--fs-card-width);
|
|
7
7
|
display: flex;
|
|
8
8
|
|
|
9
|
-
background-color: var(--fs-card-background-color);
|
|
10
9
|
border-color: var(--fs-card-border-color);
|
|
11
10
|
color: var(--fs-card-color);
|
|
12
11
|
|
|
@@ -15,4 +14,12 @@
|
|
|
15
14
|
border-radius: 4px;
|
|
16
15
|
margin: 4px;
|
|
17
16
|
}
|
|
17
|
+
|
|
18
|
+
&-background {
|
|
19
|
+
background-color: var(--fs-card-background-color);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
&-gradient {
|
|
23
|
+
background: var(--fs-card-background-color);
|
|
24
|
+
}
|
|
18
25
|
}
|
|
@@ -1,27 +1,3 @@
|
|
|
1
|
-
.fs-icon
|
|
2
|
-
|
|
3
|
-
font-size: 16px !important;
|
|
4
|
-
}
|
|
5
|
-
@include mobile {
|
|
6
|
-
font-size: 14px !important;
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
.fs-icon-m {
|
|
11
|
-
@include web {
|
|
12
|
-
font-size: 20px !important;
|
|
13
|
-
}
|
|
14
|
-
@include mobile {
|
|
15
|
-
font-size: 16px !important;
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
.fs-icon-l {
|
|
20
|
-
@include web {
|
|
21
|
-
font-size: 24px !important;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
@include mobile {
|
|
25
|
-
font-size: 20px !important;
|
|
26
|
-
}
|
|
1
|
+
.fs-icon {
|
|
2
|
+
font-size: var(--fs-icon-font-size) !important;
|
|
27
3
|
}
|