Skip to content

Commit cce0eb8

Browse files
committed
fix(ToggleGroup): implemented workaround for cyclic dependency in use functions
1 parent e2cbb77 commit cce0eb8

File tree

4 files changed

+33
-19
lines changed

4 files changed

+33
-19
lines changed

packages/core/src/components/ToggleGroup/ToggleGroup.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ export interface Props extends OUIAProps {
1717
}
1818
</script>
1919

20-
<script lang="ts" setup generic="T = string | number | (string | number)[]">
20+
<script lang="ts" setup generic="T extends string | number | (string | number)[] = string | number | (string | number)[]">
2121
import styles from '@patternfly/react-styles/css/components/ToggleGroup/toggle-group';
2222
import { type InjectionKey, provide, computed, type ComputedRef, type Ref } from 'vue';
2323
import { useOUIAProps, type OUIAProps } from '../../helpers/ouia';

packages/core/src/components/ToggleGroup/ToggleGroupItem.vue

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ export interface Props<T> extends OUIAProps, /* @vue-ignore */ HTMLAttributes {
3535
}
3636
</script>
3737

38-
<script lang="ts" setup generic="T = string | number">
38+
<script lang="ts" setup generic="T extends string | number = string | number">
3939
import styles from '@patternfly/react-styles/css/components/ToggleGroup/toggle-group';
4040
import { useOUIAProps, type OUIAProps } from '../../helpers/ouia';
4141
import { inject, computed, ref, type HTMLAttributes, type Ref } from 'vue';
@@ -63,7 +63,7 @@ defineSlots<{
6363
}>();
6464
6565
const injectedDisabled = inject(ToggleGroupDisabledKey, undefined);
66-
const selection: Ref<T | undefined> | undefined = inject(ToggleGroupSelectionKey, undefined) as any;
66+
const selection: Ref<T | T[] | undefined> | undefined = inject(ToggleGroupSelectionKey, undefined) as any;
6767
6868
const innerSelected = ref(false);
6969
@@ -83,7 +83,7 @@ const effectiveSelected = computed({
8383
}
8484
8585
if (Array.isArray(selection.value)) {
86-
return selection.value.includes(value);
86+
return selection.value.includes(value as T);
8787
}
8888
return selection.value === value;
8989
},
@@ -107,11 +107,11 @@ const effectiveSelected = computed({
107107
108108
if (Array.isArray(selection.value)) {
109109
if (to) {
110-
if (!selection.value.includes(value)) {
111-
selection.value = [...selection.value, value] as T;
110+
if (!selection.value.includes(value as T)) {
111+
selection.value = [...selection.value, value] as T[];
112112
}
113113
} else {
114-
const idx = selection.value.indexOf(value);
114+
const idx = selection.value.indexOf(value as T);
115115
if (idx >= 0) {
116116
selection.value.splice(idx, 1);
117117
}
Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,3 @@
1-
import PfToggleGroup from './ToggleGroup.vue';
2-
import PfToggleGroupItem from './ToggleGroupItem.vue';
3-
4-
export { PfToggleGroup, PfToggleGroupItem };
5-
6-
export function useSingleToggleGroup<T>() {
7-
return [PfToggleGroup<T | undefined | null>, PfToggleGroupItem<T>];
8-
}
9-
10-
export function useMultiToggleGroup<T>() {
11-
return [PfToggleGroup<T[]>, PfToggleGroupItem<T>];
12-
}
1+
export { default as PfToggleGroup } from './ToggleGroup.vue';
2+
export { default as PfToggleGroupItem } from './ToggleGroupItem.vue';
3+
export * from './use.vue';
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<template>
2+
<!-- DO NOT USE -->
3+
<div />
4+
</template>
5+
6+
<script lang="ts">
7+
import PfToggleGroup from './ToggleGroup.vue';
8+
import PfToggleGroupItem from './ToggleGroupItem.vue';
9+
10+
export function useSingleToggleGroup<T extends string | number>(): [typeof PfToggleGroup<T[]>, typeof PfToggleGroupItem<T>] {
11+
return [PfToggleGroup, PfToggleGroupItem];
12+
}
13+
14+
export function useMultiToggleGroup<T extends string | number>(): [typeof PfToggleGroup<T[]>, typeof PfToggleGroupItem<T>] {
15+
return [PfToggleGroup, PfToggleGroupItem];
16+
}
17+
</script>
18+
19+
<script lang="ts" setup>
20+
defineOptions({
21+
name: 'DoNotUse',
22+
});
23+
</script>

0 commit comments

Comments
 (0)