bootstrap-vue-next
Version:
BootstrapVueNext is an early and lovely component library for Vue 3 & Nuxt 3 based on Bootstrap 5 and Typescript.
1 lines • 3.71 kB
Source Map (JSON)
{"version":3,"file":"useFormSelect-DAr__bvr.mjs","sources":["../src/components/BFormSelect/BFormSelectOption.vue","../src/composables/useFormSelect.ts"],"sourcesContent":["<template>\n <option :value=\"props.value\" :disabled=\"props.disabled\">\n <slot />\n </option>\n</template>\n\n<script setup lang=\"ts\" generic=\"T\">\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BFormSelectOptionProps} from '../../types/ComponentProps'\n\nconst _props = withDefaults(defineProps<BFormSelectOptionProps<T>>(), {\n disabled: false,\n value: undefined,\n})\nconst props = useDefaults<BFormSelectOptionProps<T>>(_props, 'BFormSelectOption')\n\ndefineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: (props: Record<string, never>) => any\n}>()\n</script>\n","import {computed, type MaybeRefOrGetter, toValue} from 'vue'\nimport {get} from '../utils/object'\nimport type {ComplexSelectOptionRaw, SelectOption} from '../types/SelectTypes'\n\nexport const useFormSelect = (\n options: MaybeRefOrGetter<ReadonlyArray<unknown>>,\n props: MaybeRefOrGetter<Record<string, unknown>>\n) => {\n const isComplex = (option: unknown): option is ComplexSelectOptionRaw =>\n typeof option === 'object' && option !== null && 'options' in option\n\n const normalizeOption = (option: unknown): ComplexSelectOptionRaw | SelectOption => {\n const propsValue = toValue(props)\n\n if (typeof option === 'string') {\n return {value: option, text: option}\n }\n if (typeof option === 'number') {\n return {value: option, text: `${option}`}\n }\n if (option instanceof Date) {\n return {value: option, text: option.toLocaleString()}\n }\n\n const value: unknown = get(option, propsValue.valueField as string)\n const text: string = get(option, propsValue.textField as string)\n const disabled: boolean = get(option, propsValue.disabledField as string)\n\n const opts: undefined | unknown[] = propsValue.optionsField\n ? get(option, propsValue.optionsField as string)\n : undefined\n\n if (opts !== undefined) {\n return {\n label: get(option, propsValue.labelField as string) || text,\n options: opts,\n } as ComplexSelectOptionRaw\n }\n\n return {\n ...(typeof option === 'object' ? option : undefined),\n value,\n text,\n disabled,\n } as SelectOption\n }\n\n const normalizeOptions = (\n opts: ReadonlyArray<unknown>\n ): (ComplexSelectOptionRaw | SelectOption)[] => opts.map((option) => normalizeOption(option))\n\n const normalizedOptions = computed(() => normalizeOptions(toValue(options)))\n\n return {normalizedOptions, isComplex}\n}\n"],"names":[],"mappings":";;;;;;;;;;;AAUA,UAAM,SAAS;AAIT,UAAA,QAAQ,YAAuC,QAAQ,mBAAmB;;;;;;;;;;;ACVnE,MAAA,gBAAgB,CAC3B,SACA,UACG;AACG,QAAA,YAAY,CAAC,WACjB,OAAO,WAAW,YAAY,WAAW,QAAQ,aAAa;AAE1D,QAAA,kBAAkB,CAAC,WAA2D;AAC5E,UAAA,aAAa,QAAQ,KAAK;AAE5B,QAAA,OAAO,WAAW,UAAU;AAC9B,aAAO,EAAC,OAAO,QAAQ,MAAM,OAAM;AAAA,IAAA;AAEjC,QAAA,OAAO,WAAW,UAAU;AAC9B,aAAO,EAAC,OAAO,QAAQ,MAAM,GAAG,MAAM,GAAE;AAAA,IAAA;AAE1C,QAAI,kBAAkB,MAAM;AAC1B,aAAO,EAAC,OAAO,QAAQ,MAAM,OAAO,iBAAgB;AAAA,IAAA;AAGtD,UAAM,QAAiB,IAAI,QAAQ,WAAW,UAAoB;AAClE,UAAM,OAAe,IAAI,QAAQ,WAAW,SAAmB;AAC/D,UAAM,WAAoB,IAAI,QAAQ,WAAW,aAAuB;AAExE,UAAM,OAA8B,WAAW,eAC3C,IAAI,QAAQ,WAAW,YAAsB,IAC7C;AAEJ,QAAI,SAAS,QAAW;AACf,aAAA;AAAA,QACL,OAAO,IAAI,QAAQ,WAAW,UAAoB,KAAK;AAAA,QACvD,SAAS;AAAA,MACX;AAAA,IAAA;AAGK,WAAA;AAAA,MACL,GAAI,OAAO,WAAW,WAAW,SAAS;AAAA,MAC1C;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEM,QAAA,mBAAmB,CACvB,SAC8C,KAAK,IAAI,CAAC,WAAW,gBAAgB,MAAM,CAAC;AAE5F,QAAM,oBAAoB,SAAS,MAAM,iBAAiB,QAAQ,OAAO,CAAC,CAAC;AAEpE,SAAA,EAAC,mBAAmB,UAAS;AACtC;"}