Skip to content

Commit 6e1d16c

Browse files
authored
Merge pull request #700 from Dative-GPI/features/groupings-v2
menu ChipsGroup is back
2 parents 6b5102b + d877ff4 commit 6e1d16c

File tree

4 files changed

+63
-27
lines changed

4 files changed

+63
-27
lines changed

dev/storybook/src/stories/shared/ChipGroup.stories.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,31 +40,35 @@ export const Wrap: Story = {
4040
})
4141
}
4242

43-
export const MaxItems: Story = {
43+
export const Menu: Story = {
4444
render: () => ({
4545
components: { FSChipGroup, FSSubgroupingChip, FSText },
4646
template: `
4747
<div style="display: flex; flex-direction: column; gap: 20px;">
4848
<FSText font="text-h3"> With labels (maxItems=1) </FSText>
4949
<FSChipGroup
50+
variant="menu"
5051
:items="['Bâtiment', 'Usage énergétique', 'Remontées mécaniques', 'Parking']"
5152
:maxItems="1"
5253
/>
5354
<div style="width: 100%; border-bottom: 2px dotted lightgrey" />
5455
<FSText font="text-h3"> With labels (single, maxItems=1) </FSText>
5556
<FSChipGroup
57+
variant="menu"
5658
:items="['Bâtiment']"
5759
:maxItems="1"
5860
/>
5961
<div style="width: 100%; border-bottom: 2px dotted lightgrey" />
6062
<FSText font="text-h3"> With labels (maxItems=2) </FSText>
6163
<FSChipGroup
64+
variant="menu"
6265
:items="['Bâtiment', 'Usage énergétique', 'Remontées mécaniques', 'Parking']"
6366
:maxItems="2"
6467
/>
6568
<div style="width: 100%; border-bottom: 2px dotted lightgrey" />
6669
<FSText font="text-h3"> With slot item.chip (maxItems=1) </FSText>
6770
<FSChipGroup
71+
variant="menu"
6872
:items="[
6973
{ groupingIcon: 'mdi-flash', groupingLabel: 'Usage énergétique', groupingColor: '#FF9800', icon: 'mdi-office-building', label: 'Bâtiment' },
7074
{ groupingIcon: 'mdi-office-building', groupingLabel: 'Bâtiment', groupingColor: '#2196F3', icon: 'mdi-flash', label: 'Usage énergétique' },
@@ -86,6 +90,7 @@ export const MaxItems: Story = {
8690
<div style="width: 100%; border-bottom: 2px dotted lightgrey" />
8791
<FSText font="text-h3"> Without maxItems (all visible) </FSText>
8892
<FSChipGroup
93+
variant="menu"
8994
:items="['Bâtiment', 'Usage énergétique', 'Remontées mécaniques', 'Parking']"
9095
/>
9196
</div>`

src/core/foundation-core-components/components/lists/subgroupings/FSSubgroupingsChipGroup.vue

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
v-if="$props.subgroupings && $props.subgroupings.length > 0"
44
:items="$props.subgroupings"
55
:maxItems="$props.maxItems"
6+
:variant="$props.variant"
67
>
78
<template
89
#item.chip="{ item }"
@@ -28,6 +29,7 @@ import type { SubgroupingInfos } from "@dative-gpi/foundation-core-domain/models
2829
2930
import FSSubgroupingChip from "@dative-gpi/foundation-shared-components/components/FSSubgroupingChip.vue";
3031
import FSChipGroup from "@dative-gpi/foundation-shared-components/components/FSChipGroup.vue";
32+
import { ChipGroupVariants, type ChipGroupVariant } from "@dative-gpi/foundation-shared-components/models";
3133
3234
export default defineComponent({
3335
name: "FSSubgroupingsChipGroup",
@@ -48,7 +50,12 @@ export default defineComponent({
4850
type: Number as PropType<number | null>,
4951
required: false,
5052
default: 1
51-
}
53+
},
54+
variant: {
55+
type: String as PropType<ChipGroupVariant>,
56+
required: false,
57+
default: ChipGroupVariants.Menu
58+
},
5259
}
5360
});
5461
</script>

src/shared/foundation-shared-components/components/FSChipGroup.vue

Lines changed: 46 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,49 @@
11
<template>
22
<FSWrapGroup
3-
v-if="$props.variant === 'wrap' && $props.items"
3+
v-if="$props.variant == ChipGroupVariants.Wrap"
44
v-bind="$attrs"
5+
>
6+
<template
7+
v-for="(item, index) in $props.items"
8+
:key="index"
9+
>
10+
<slot
11+
name="item.chip"
12+
v-bind="{ index, item }"
13+
>
14+
<FSChip
15+
:variant="$props.chipVariant"
16+
:color="$props.color"
17+
:label="item.label ?? item"
18+
/>
19+
</slot>
20+
</template>
21+
<slot />
22+
</FSWrapGroup>
23+
<FSSlideGroup
24+
v-else-if="$props.variant == ChipGroupVariants.Slide"
25+
v-bind="$attrs"
26+
>
27+
<template
28+
v-for="(item, index) in $props.items"
29+
:key="index"
30+
>
31+
<slot
32+
name="item.chip"
33+
v-bind="{ index, item }"
34+
>
35+
<FSChip
36+
:variant="$props.chipVariant"
37+
:color="$props.color"
38+
:label="item.label ?? item"
39+
/>
40+
</slot>
41+
</template>
42+
<slot />
43+
</FSSlideGroup>
44+
<FSRow
45+
v-else-if="$props.variant == ChipGroupVariants.Menu && $props.items"
46+
:wrap="false"
547
>
648
<template
749
v-for="(item, index) in $props.items.slice(0, $props.maxItems ?? $props.items.length)"
@@ -70,28 +112,7 @@
70112
</FSCard>
71113
</FSMenu>
72114
<slot />
73-
</FSWrapGroup>
74-
<FSSlideGroup
75-
v-else-if="$props.variant === 'slide'"
76-
v-bind="$attrs"
77-
>
78-
<template
79-
v-for="(item, index) in $props.items"
80-
:key="index"
81-
>
82-
<slot
83-
name="item.chip"
84-
v-bind="{ index, item }"
85-
>
86-
<FSChip
87-
:variant="$props.chipVariant"
88-
:color="$props.color"
89-
:label="item.label ?? item"
90-
/>
91-
</slot>
92-
</template>
93-
<slot />
94-
</FSSlideGroup>
115+
</FSRow>
95116
</template>
96117

97118
<script lang="ts">
@@ -106,6 +127,7 @@ import FSChip from "./FSChip.vue";
106127
import FSCard from "./FSCard.vue";
107128
import FSMenu from "./FSMenu.vue";
108129
import FSCol from "./FSCol.vue";
130+
109131
import { useColors } from "../composables";
110132
111133
export default defineComponent({
@@ -156,6 +178,7 @@ export default defineComponent({
156178
157179
return {
158180
menuActivatorColor,
181+
ChipGroupVariants,
159182
ColorEnum,
160183
menuOpen
161184
};

src/shared/foundation-shared-components/models/variants.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,9 @@ export enum DialogMultiFormModes {
2525
Hidden = "hidden"
2626
}
2727

28-
export type ChipGroupVariant = "wrap" | "slide";
28+
export type ChipGroupVariant = "wrap" | "slide" | "menu";
2929
export enum ChipGroupVariants {
3030
Wrap = "wrap",
31-
Slide = "slide"
31+
Slide = "slide",
32+
Menu = "menu"
3233
}

0 commit comments

Comments
 (0)