aboutsummaryrefslogtreecommitdiff
path: root/src/ui/c-buttons-select/c-buttons-select.vue
diff options
context:
space:
mode:
authorGravatar Corentin THOMASSET <corentin.thomasset74@gmail.com> 2023-11-13 22:38:01 +0100
committerGravatar GitHub <noreply@github.com> 2023-11-13 21:38:01 +0000
commit38586caab78c3ae18fefe04886ee1195feb2b236 (patch)
tree82adab11c28f2f551eaf3edb0cc1044b3deb6dfb /src/ui/c-buttons-select/c-buttons-select.vue
parent043e4f0a08fa9e1966b9733c58f33ca93d45da50 (diff)
downloadit-tools-38586caab78c3ae18fefe04886ee1195feb2b236.tar.gz
it-tools-38586caab78c3ae18fefe04886ee1195feb2b236.tar.zst
it-tools-38586caab78c3ae18fefe04886ee1195feb2b236.zip
refactor(uuid generator): uuid version picker (#751)
Diffstat (limited to 'src/ui/c-buttons-select/c-buttons-select.vue')
-rw-r--r--src/ui/c-buttons-select/c-buttons-select.vue21
1 files changed, 13 insertions, 8 deletions
diff --git a/src/ui/c-buttons-select/c-buttons-select.vue b/src/ui/c-buttons-select/c-buttons-select.vue
index 38fff66..a1ffa42 100644
--- a/src/ui/c-buttons-select/c-buttons-select.vue
+++ b/src/ui/c-buttons-select/c-buttons-select.vue
@@ -1,10 +1,11 @@
<script setup lang="ts" generic="T extends unknown">
+import _ from 'lodash';
import type { CLabelProps } from '../c-label/c-label.types';
import type { CButtonSelectOption } from './c-buttons-select.types';
const props = withDefaults(
defineProps<{
- options?: CButtonSelectOption<T>[] | string[]
+ options?: CButtonSelectOption<T>[] | string[] | Record<string, T>
value?: T
size?: 'small' | 'medium' | 'large'
} & CLabelProps >(),
@@ -20,14 +21,18 @@ const emits = defineEmits(['update:value']);
const { options: rawOptions, size } = toRefs(props);
-const options = computed(() => {
- return rawOptions.value.map((option: string | CButtonSelectOption<T>) => {
- if (typeof option === 'string') {
- return { label: option, value: option };
- }
+const options = computed<CButtonSelectOption<T>[]>(() => {
+ if (_.isArray(rawOptions.value)) {
+ return rawOptions.value.map((option: string | CButtonSelectOption<T>) => {
+ if (typeof option === 'string') {
+ return { label: option, value: option };
+ }
- return option;
- });
+ return option;
+ }) as CButtonSelectOption<T>[];
+ }
+
+ return _.map(rawOptions.value, (value, label) => ({ label, value })) as CButtonSelectOption<T>[];
});
const value = useVModel(props, 'value', emits);