aboutsummaryrefslogtreecommitdiff
path: root/src/ui/c-buttons-select
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/c-buttons-select')
-rw-r--r--src/ui/c-buttons-select/c-buttons-select.demo.vue9
-rw-r--r--src/ui/c-buttons-select/c-buttons-select.vue21
2 files changed, 21 insertions, 9 deletions
diff --git a/src/ui/c-buttons-select/c-buttons-select.demo.vue b/src/ui/c-buttons-select/c-buttons-select.demo.vue
index dea1528..4628601 100644
--- a/src/ui/c-buttons-select/c-buttons-select.demo.vue
+++ b/src/ui/c-buttons-select/c-buttons-select.demo.vue
@@ -4,11 +4,18 @@ const optionsA = [
{ label: 'Option B', value: 'b', tooltip: 'This is a tooltip' },
{ label: 'Option C', value: 'c' },
];
+
+const optionB = {
+ 'Option A': 'a',
+ 'Option B': 'b',
+ 'Option C': 'c',
+};
+
const valueA = ref('a');
</script>
<template>
<c-buttons-select v-model:value="valueA" :options="optionsA" label="Label: " />
<c-buttons-select v-model:value="valueA" :options="optionsA" label="Label: " label-position="left" mt-2 />
- <c-buttons-select v-model:value="valueA" :options="optionsA" label="Label: " label-position="left" mt-2 />
+ <c-buttons-select v-model:value="valueA" :options="optionB" label="Options object: " />
</template>
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);