@dative-gpi/foundation-shared-components 1.1.2 → 1.1.3-groupings
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.
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
<slot />
|
|
14
14
|
</FSWrapGroup>
|
|
15
15
|
<FSSlideGroup
|
|
16
|
-
v-if="$props.variant === 'slide'"
|
|
16
|
+
v-else-if="$props.variant === 'slide'"
|
|
17
17
|
v-bind="$attrs"
|
|
18
18
|
>
|
|
19
19
|
<FSChip
|
|
@@ -25,23 +25,103 @@
|
|
|
25
25
|
/>
|
|
26
26
|
<slot />
|
|
27
27
|
</FSSlideGroup>
|
|
28
|
+
<FSRow
|
|
29
|
+
v-else-if="$props.variant === 'menu'"
|
|
30
|
+
align="center-left"
|
|
31
|
+
width="hug"
|
|
32
|
+
:wrap="false"
|
|
33
|
+
v-bind="$attrs"
|
|
34
|
+
>
|
|
35
|
+
<component
|
|
36
|
+
v-if="hasSlots"
|
|
37
|
+
:is="slotElements[0]"
|
|
38
|
+
/>
|
|
39
|
+
<FSChip
|
|
40
|
+
v-else
|
|
41
|
+
:variant="$props.chipVariant"
|
|
42
|
+
:color="$props.color"
|
|
43
|
+
:label="menuLabels[0]"
|
|
44
|
+
/>
|
|
45
|
+
<FSMenu
|
|
46
|
+
v-if="slotElements.length > 1 || menuLabels.length > 1"
|
|
47
|
+
location="bottom end"
|
|
48
|
+
v-model="menuOpen"
|
|
49
|
+
>
|
|
50
|
+
<template
|
|
51
|
+
#activator="{ props: activatorProps }"
|
|
52
|
+
>
|
|
53
|
+
<FSChip
|
|
54
|
+
v-bind="activatorProps"
|
|
55
|
+
variant="full"
|
|
56
|
+
:label="`+${hasSlots ? (slotElements.length - 1) : (menuLabels.length - 1)}`"
|
|
57
|
+
:color="menuActivatorColor"
|
|
58
|
+
:clickable="true"
|
|
59
|
+
/>
|
|
60
|
+
</template>
|
|
61
|
+
<FSCard
|
|
62
|
+
padding="16px 24px"
|
|
63
|
+
>
|
|
64
|
+
<FSButton
|
|
65
|
+
style="position: absolute;top:3px;right:3px;"
|
|
66
|
+
icon="mdi-close"
|
|
67
|
+
variant="icon"
|
|
68
|
+
iconSize="18px"
|
|
69
|
+
:color="ColorEnum.Dark"
|
|
70
|
+
@click="menuOpen = false"
|
|
71
|
+
/>
|
|
72
|
+
<FSCol
|
|
73
|
+
v-if="hasSlots"
|
|
74
|
+
gap="12px"
|
|
75
|
+
>
|
|
76
|
+
<component
|
|
77
|
+
v-for="(element, index) in slotElements.slice(1)"
|
|
78
|
+
:key="index"
|
|
79
|
+
:is="element"
|
|
80
|
+
/>
|
|
81
|
+
</FSCol>
|
|
82
|
+
<FSCol
|
|
83
|
+
v-else
|
|
84
|
+
gap="12px"
|
|
85
|
+
>
|
|
86
|
+
<FSChip
|
|
87
|
+
v-for="(label, index) in menuLabels"
|
|
88
|
+
:key="index"
|
|
89
|
+
:variant="$props.chipVariant"
|
|
90
|
+
:color="$props.color"
|
|
91
|
+
:label="label"
|
|
92
|
+
/>
|
|
93
|
+
</FSCol>
|
|
94
|
+
</FSCard>
|
|
95
|
+
</FSMenu>
|
|
96
|
+
</FSRow>
|
|
28
97
|
</template>
|
|
29
98
|
|
|
30
99
|
<script lang="ts">
|
|
31
|
-
import { defineComponent, type PropType } from "vue";
|
|
100
|
+
import { defineComponent, ref, type PropType, useSlots, computed, type VNode } from "vue";
|
|
32
101
|
|
|
33
102
|
import { type CardVariant, CardVariants, type ColorBase, ColorEnum } from "@dative-gpi/foundation-shared-components/models";
|
|
34
103
|
|
|
35
104
|
import FSSlideGroup from "./FSSlideGroup.vue";
|
|
36
105
|
import FSWrapGroup from "./FSWrapGroup.vue";
|
|
106
|
+
import FSButton from "./FSButton.vue";
|
|
37
107
|
import FSChip from "./FSChip.vue";
|
|
108
|
+
import FSCard from "./FSCard.vue";
|
|
109
|
+
import FSMenu from "./FSMenu.vue";
|
|
110
|
+
import FSCol from "./FSCol.vue";
|
|
111
|
+
import FSRow from "./FSRow.vue";
|
|
112
|
+
import { useColors } from "../composables";
|
|
38
113
|
|
|
39
114
|
export default defineComponent({
|
|
40
115
|
name: "FSChipGroup",
|
|
41
116
|
components: {
|
|
42
117
|
FSSlideGroup,
|
|
43
118
|
FSWrapGroup,
|
|
44
|
-
|
|
119
|
+
FSButton,
|
|
120
|
+
FSChip,
|
|
121
|
+
FSCard,
|
|
122
|
+
FSMenu,
|
|
123
|
+
FSCol,
|
|
124
|
+
FSRow
|
|
45
125
|
},
|
|
46
126
|
props: {
|
|
47
127
|
labels: {
|
|
@@ -50,7 +130,7 @@ export default defineComponent({
|
|
|
50
130
|
default: () => []
|
|
51
131
|
},
|
|
52
132
|
variant: {
|
|
53
|
-
type: String as PropType<"wrap" | "slide">,
|
|
133
|
+
type: String as PropType<"wrap" | "slide" | "menu">,
|
|
54
134
|
required: false,
|
|
55
135
|
default: "wrap"
|
|
56
136
|
},
|
|
@@ -64,6 +144,45 @@ export default defineComponent({
|
|
|
64
144
|
required: false,
|
|
65
145
|
default: ColorEnum.Light
|
|
66
146
|
}
|
|
147
|
+
},
|
|
148
|
+
setup(props) {
|
|
149
|
+
const slots = useSlots();
|
|
150
|
+
const { getColors } = useColors();
|
|
151
|
+
const menuOpen = ref(false);
|
|
152
|
+
|
|
153
|
+
const slotElements = computed((): VNode[] => {
|
|
154
|
+
const defaultSlot = slots.default?.();
|
|
155
|
+
if (!defaultSlot) {
|
|
156
|
+
return [];
|
|
157
|
+
}
|
|
158
|
+
return defaultSlot.flatMap(node => {
|
|
159
|
+
if (node.type === Symbol.for('v-fgt')) {
|
|
160
|
+
return (node.children as VNode[]) ?? [];
|
|
161
|
+
}
|
|
162
|
+
return [node];
|
|
163
|
+
}).filter(node => typeof node.type !== 'symbol');
|
|
164
|
+
});
|
|
165
|
+
|
|
166
|
+
const hasSlots = computed((): boolean => {
|
|
167
|
+
return slotElements.value.length > 0;
|
|
168
|
+
});
|
|
169
|
+
|
|
170
|
+
const menuLabels = computed((): string[] => {
|
|
171
|
+
return props.labels ?? [];
|
|
172
|
+
});
|
|
173
|
+
|
|
174
|
+
const menuActivatorColor = computed((): string => {
|
|
175
|
+
return getColors(props.color).dark;
|
|
176
|
+
});
|
|
177
|
+
|
|
178
|
+
return {
|
|
179
|
+
menuActivatorColor,
|
|
180
|
+
slotElements,
|
|
181
|
+
menuLabels,
|
|
182
|
+
ColorEnum,
|
|
183
|
+
hasSlots,
|
|
184
|
+
menuOpen
|
|
185
|
+
};
|
|
67
186
|
}
|
|
68
187
|
});
|
|
69
188
|
</script>
|
|
@@ -10,6 +10,11 @@
|
|
|
10
10
|
:color="$props.color"
|
|
11
11
|
:class="classes"
|
|
12
12
|
>
|
|
13
|
+
<FSCol>
|
|
14
|
+
<slot
|
|
15
|
+
name="body"
|
|
16
|
+
/>
|
|
17
|
+
</FSCol>
|
|
13
18
|
<template
|
|
14
19
|
v-for="(_, name) in $slots"
|
|
15
20
|
v-slot:[name]="slotData"
|
|
@@ -30,11 +35,13 @@ import { type ColorBase, ColorEnum } from "@dative-gpi/foundation-shared-compone
|
|
|
30
35
|
import { useBreakpoints } from "@dative-gpi/foundation-shared-components/composables";
|
|
31
36
|
|
|
32
37
|
import FSCard from "./FSCard.vue";
|
|
38
|
+
import FSCol from "./FSCol.vue";
|
|
33
39
|
|
|
34
40
|
export default defineComponent({
|
|
35
41
|
name: "FSDialogMenu",
|
|
36
42
|
components: {
|
|
37
|
-
FSCard
|
|
43
|
+
FSCard,
|
|
44
|
+
FSCol
|
|
38
45
|
},
|
|
39
46
|
props: {
|
|
40
47
|
classes: {
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<FSChip
|
|
3
|
+
:height="$props.height"
|
|
4
|
+
:width="$props.width"
|
|
5
|
+
:variant="$props.variant"
|
|
6
|
+
:color="borderColor"
|
|
7
|
+
>
|
|
8
|
+
<FSRow
|
|
9
|
+
align="center-center"
|
|
10
|
+
width="hug"
|
|
11
|
+
:wrap="false"
|
|
12
|
+
>
|
|
13
|
+
<FSRow
|
|
14
|
+
align="center-center"
|
|
15
|
+
width="hug"
|
|
16
|
+
gap="6px"
|
|
17
|
+
:wrap="false"
|
|
18
|
+
>
|
|
19
|
+
<FSIcon
|
|
20
|
+
:color="$props.iconColor"
|
|
21
|
+
:size="$props.iconSize"
|
|
22
|
+
>
|
|
23
|
+
{{ $props.icon }}
|
|
24
|
+
</FSIcon>
|
|
25
|
+
<FSText
|
|
26
|
+
font="text-overline"
|
|
27
|
+
:color="textColor"
|
|
28
|
+
>
|
|
29
|
+
{{ $props.label }}
|
|
30
|
+
</FSText>
|
|
31
|
+
</FSRow>
|
|
32
|
+
</FSRow>
|
|
33
|
+
</FSChip>
|
|
34
|
+
</template>
|
|
35
|
+
|
|
36
|
+
<script lang="ts">
|
|
37
|
+
import { defineComponent, type PropType } from "vue";
|
|
38
|
+
|
|
39
|
+
import { type ColorBase, ColorEnum } from "@dative-gpi/foundation-shared-components/models";
|
|
40
|
+
|
|
41
|
+
import FSIcon from "./FSIcon.vue";
|
|
42
|
+
import FSText from "./FSText.vue";
|
|
43
|
+
import FSChip from "./FSChip.vue";
|
|
44
|
+
import FSRow from "./FSRow.vue";
|
|
45
|
+
|
|
46
|
+
import { useColors } from "../composables";
|
|
47
|
+
|
|
48
|
+
export default defineComponent({
|
|
49
|
+
name: "FSSubgroupingChip",
|
|
50
|
+
components: {
|
|
51
|
+
FSChip,
|
|
52
|
+
FSIcon,
|
|
53
|
+
FSText,
|
|
54
|
+
FSRow
|
|
55
|
+
},
|
|
56
|
+
inheritAttrs: false,
|
|
57
|
+
props: {
|
|
58
|
+
label: {
|
|
59
|
+
type: String as PropType<string>,
|
|
60
|
+
required: true
|
|
61
|
+
},
|
|
62
|
+
icon: {
|
|
63
|
+
type: String as PropType<string>,
|
|
64
|
+
required: true
|
|
65
|
+
},
|
|
66
|
+
iconColor: {
|
|
67
|
+
type: String as PropType<ColorBase>,
|
|
68
|
+
required: false,
|
|
69
|
+
default: ColorEnum.Dark
|
|
70
|
+
},
|
|
71
|
+
height: {
|
|
72
|
+
type: [Array, String, Number] as PropType<string[] | number[] | string | number | null>,
|
|
73
|
+
required: false,
|
|
74
|
+
default: () => [24, 20]
|
|
75
|
+
},
|
|
76
|
+
width: {
|
|
77
|
+
type: [Array, String, Number] as PropType<string[] | number[] | string | number | null>,
|
|
78
|
+
required: false,
|
|
79
|
+
default: "hug"
|
|
80
|
+
},
|
|
81
|
+
color: {
|
|
82
|
+
type: String as PropType<ColorBase>,
|
|
83
|
+
required: false,
|
|
84
|
+
default: ColorEnum.Light
|
|
85
|
+
},
|
|
86
|
+
variant: {
|
|
87
|
+
type: String as PropType<"standard" | "full" | "borderless">,
|
|
88
|
+
required: false,
|
|
89
|
+
default: "standard"
|
|
90
|
+
},
|
|
91
|
+
iconSize: {
|
|
92
|
+
type: [Array, String, Number] as PropType<"s" | "m" | "l" | string[] | number[] | string | number | null>,
|
|
93
|
+
required: false,
|
|
94
|
+
default: "18px"
|
|
95
|
+
}
|
|
96
|
+
},
|
|
97
|
+
setup(props) {
|
|
98
|
+
const { getColors } = useColors();
|
|
99
|
+
|
|
100
|
+
const borderColor = getColors(props.color).dark;
|
|
101
|
+
const textColor = getColors(ColorEnum.Dark).dark;
|
|
102
|
+
|
|
103
|
+
return {
|
|
104
|
+
borderColor,
|
|
105
|
+
textColor,
|
|
106
|
+
ColorEnum
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
</script>
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<FSChip
|
|
3
|
+
:height="$props.height"
|
|
4
|
+
:width="$props.width"
|
|
5
|
+
:variant="$props.variant"
|
|
6
|
+
:color="borderColor"
|
|
7
|
+
>
|
|
8
|
+
<FSRow
|
|
9
|
+
align="center-center"
|
|
10
|
+
width="hug"
|
|
11
|
+
:wrap="false"
|
|
12
|
+
>
|
|
13
|
+
<FSRow
|
|
14
|
+
align="center-center"
|
|
15
|
+
width="hug"
|
|
16
|
+
gap="6px"
|
|
17
|
+
:wrap="false"
|
|
18
|
+
>
|
|
19
|
+
<FSIcon
|
|
20
|
+
:color="$props.groupingColor"
|
|
21
|
+
:size="$props.iconSize"
|
|
22
|
+
>
|
|
23
|
+
{{ $props.groupingIcon }}
|
|
24
|
+
</FSIcon>
|
|
25
|
+
<FSText
|
|
26
|
+
font="text-overline"
|
|
27
|
+
:color="textColor"
|
|
28
|
+
>
|
|
29
|
+
{{ $props.groupingLabel }}
|
|
30
|
+
</FSText>
|
|
31
|
+
</FSRow>
|
|
32
|
+
<FSRow
|
|
33
|
+
align="center-center"
|
|
34
|
+
width="hug"
|
|
35
|
+
gap="6px"
|
|
36
|
+
:wrap="false"
|
|
37
|
+
>
|
|
38
|
+
<FSIcon
|
|
39
|
+
:size="$props.iconSize"
|
|
40
|
+
:color="textColor"
|
|
41
|
+
>
|
|
42
|
+
{{ $props.icon }}
|
|
43
|
+
</FSIcon>
|
|
44
|
+
<FSText
|
|
45
|
+
font="text-overline"
|
|
46
|
+
:color="textColor"
|
|
47
|
+
>
|
|
48
|
+
{{ $props.label }}
|
|
49
|
+
</FSText>
|
|
50
|
+
</FSRow>
|
|
51
|
+
</FSRow>
|
|
52
|
+
</FSChip>
|
|
53
|
+
</template>
|
|
54
|
+
|
|
55
|
+
<script lang="ts">
|
|
56
|
+
import { defineComponent, type PropType } from "vue";
|
|
57
|
+
|
|
58
|
+
import { type ColorBase, ColorEnum } from "@dative-gpi/foundation-shared-components/models";
|
|
59
|
+
|
|
60
|
+
import FSIcon from "./FSIcon.vue";
|
|
61
|
+
import FSText from "./FSText.vue";
|
|
62
|
+
import FSChip from "./FSChip.vue";
|
|
63
|
+
import FSRow from "./FSRow.vue";
|
|
64
|
+
import { useColors } from "../composables";
|
|
65
|
+
|
|
66
|
+
export default defineComponent({
|
|
67
|
+
name: "FSSubgroupingChip",
|
|
68
|
+
components: {
|
|
69
|
+
FSChip,
|
|
70
|
+
FSIcon,
|
|
71
|
+
FSText,
|
|
72
|
+
FSRow
|
|
73
|
+
},
|
|
74
|
+
props: {
|
|
75
|
+
groupingLabel: {
|
|
76
|
+
type: String as PropType<string>,
|
|
77
|
+
required: true
|
|
78
|
+
},
|
|
79
|
+
groupingIcon: {
|
|
80
|
+
type: String as PropType<string>,
|
|
81
|
+
required: true
|
|
82
|
+
},
|
|
83
|
+
groupingColor: {
|
|
84
|
+
type: String as PropType<ColorBase>,
|
|
85
|
+
required: false,
|
|
86
|
+
default: ColorEnum.Dark
|
|
87
|
+
},
|
|
88
|
+
label: {
|
|
89
|
+
type: String as PropType<string>,
|
|
90
|
+
required: true
|
|
91
|
+
},
|
|
92
|
+
icon: {
|
|
93
|
+
type: String as PropType<string>,
|
|
94
|
+
required: true
|
|
95
|
+
},
|
|
96
|
+
height: {
|
|
97
|
+
type: [Array, String, Number] as PropType<string[] | number[] | string | number | null>,
|
|
98
|
+
required: false,
|
|
99
|
+
default: () => [24, 20]
|
|
100
|
+
},
|
|
101
|
+
width: {
|
|
102
|
+
type: [Array, String, Number] as PropType<string[] | number[] | string | number | null>,
|
|
103
|
+
required: false,
|
|
104
|
+
default: "hug"
|
|
105
|
+
},
|
|
106
|
+
variant: {
|
|
107
|
+
type: String as PropType<"standard" | "full" | "borderless">,
|
|
108
|
+
required: false,
|
|
109
|
+
default: "standard"
|
|
110
|
+
},
|
|
111
|
+
color: {
|
|
112
|
+
type: String as PropType<ColorBase>,
|
|
113
|
+
required: false,
|
|
114
|
+
default: ColorEnum.Light
|
|
115
|
+
},
|
|
116
|
+
iconSize: {
|
|
117
|
+
type: [Array, String, Number] as PropType<"s" | "m" | "l" | string[] | number[] | string | number | null>,
|
|
118
|
+
required: false,
|
|
119
|
+
default: "18px"
|
|
120
|
+
}
|
|
121
|
+
},
|
|
122
|
+
setup(props) {
|
|
123
|
+
const { getColors } = useColors();
|
|
124
|
+
|
|
125
|
+
const borderColor = getColors(props.color).dark;
|
|
126
|
+
const textColor = getColors(ColorEnum.Dark).dark;
|
|
127
|
+
|
|
128
|
+
return {
|
|
129
|
+
borderColor,
|
|
130
|
+
textColor,
|
|
131
|
+
ColorEnum
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
</script>
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<FSSimpleTileUI
|
|
3
|
+
:bottomColor="null"
|
|
4
|
+
v-bind="$attrs"
|
|
5
|
+
>
|
|
6
|
+
<template
|
|
7
|
+
#append-info
|
|
8
|
+
>
|
|
9
|
+
<FSEntityCountBadge
|
|
10
|
+
:label="$tr('ui.common.equipments', 'Équipements')"
|
|
11
|
+
:count="$props.deviceOrganisationsCount ?? 0"
|
|
12
|
+
:color="ColorEnum.Primary"
|
|
13
|
+
/>
|
|
14
|
+
</template>
|
|
15
|
+
</FSSimpleTileUI>
|
|
16
|
+
</template>
|
|
17
|
+
|
|
18
|
+
<script lang="ts">
|
|
19
|
+
import { defineComponent } from "vue";
|
|
20
|
+
|
|
21
|
+
import { ColorEnum } from "@dative-gpi/foundation-shared-components/models";
|
|
22
|
+
|
|
23
|
+
import FSEntityCountBadge from "./FSEntityCountBadge.vue";
|
|
24
|
+
import FSSimpleTileUI from './FSSimpleTileUI.vue';
|
|
25
|
+
|
|
26
|
+
export default defineComponent({
|
|
27
|
+
name: "FSSubgroupingTileUI",
|
|
28
|
+
components: {
|
|
29
|
+
FSSimpleTileUI,
|
|
30
|
+
FSEntityCountBadge
|
|
31
|
+
},
|
|
32
|
+
props: {
|
|
33
|
+
deviceOrganisationsCount: {
|
|
34
|
+
type: Number,
|
|
35
|
+
required: false,
|
|
36
|
+
default: null
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
setup() {
|
|
40
|
+
return {
|
|
41
|
+
ColorEnum,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
</script>
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"url": "https://github.com/Dative-GPI/foundation-shared-ui.git"
|
|
5
5
|
},
|
|
6
6
|
"sideEffects": false,
|
|
7
|
-
"version": "1.1.
|
|
7
|
+
"version": "1.1.3-groupings",
|
|
8
8
|
"description": "",
|
|
9
9
|
"publishConfig": {
|
|
10
10
|
"access": "public"
|
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
"author": "",
|
|
14
14
|
"license": "ISC",
|
|
15
15
|
"dependencies": {
|
|
16
|
-
"@dative-gpi/foundation-shared-domain": "1.1.
|
|
17
|
-
"@dative-gpi/foundation-shared-services": "1.1.
|
|
16
|
+
"@dative-gpi/foundation-shared-domain": "1.1.3-groupings",
|
|
17
|
+
"@dative-gpi/foundation-shared-services": "1.1.3-groupings"
|
|
18
18
|
},
|
|
19
19
|
"peerDependencies": {
|
|
20
20
|
"@dative-gpi/bones-ui": "^1.0.0",
|
|
@@ -38,5 +38,5 @@
|
|
|
38
38
|
"sass": "1.71.1",
|
|
39
39
|
"sass-loader": "13.3.2"
|
|
40
40
|
},
|
|
41
|
-
"gitHead": "
|
|
41
|
+
"gitHead": "ad40c30f9ecd5b50de62619fa3cfab64e63d7cc5"
|
|
42
42
|
}
|