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 • 4.37 kB
Source Map (JSON)
{"version":3,"file":"useFormSelect-DvaFh_iu.mjs","sources":["../src/components/BFormSelect/BFormSelectOption.vue","../src/composables/useFormSelect.ts"],"sourcesContent":["<template>\n <option :value=\"props.value\" :disabled=\"props.disabled\" :selected=\"isSelected\">\n <slot />\n </option>\n</template>\n\n<script setup lang=\"ts\" generic=\"T\">\nimport type {BFormSelectOptionSlots} from '../../types'\nimport {computed, inject} from 'vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BFormSelectOptionProps} from '../../types/ComponentProps'\nimport {formSelectKey} from '../../utils/keys'\n\nconst _props = withDefaults(defineProps<BFormSelectOptionProps<T>>(), {\n disabled: false,\n value: undefined,\n})\nconst props = useDefaults<BFormSelectOptionProps<T>>(_props, 'BFormSelectOption')\ndefineSlots<BFormSelectOptionSlots>()\n\n// Inject the form select context to determine if this option is selected\nconst formSelectContext = inject(formSelectKey, null)\n\nconst isSelected = computed(() => {\n if (!formSelectContext) return false\n return formSelectContext.modelValue.value === props.value\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":["_createElementBlock","_unref","_renderSlot"],"mappings":";;;;;;;;;;;;AAaA,UAAM,SAAS;AAIf,UAAM,QAAQ,YAAuC,QAAQ,mBAAmB;AAIhF,UAAM,oBAAoB,OAAO,eAAe,IAAI;AAEpD,UAAM,aAAa,SAAS,MAAM;AAChC,UAAI,CAAC,kBAAmB,QAAO;AAC/B,aAAO,kBAAkB,WAAW,UAAU,MAAM;AAAA,IACtD,CAAC;;0BAzBCA,mBAES,UAAA;AAAA,QAFA,OAAOC,MAAA,KAAA,EAAM;AAAA,QAAQ,UAAUA,MAAA,KAAA,EAAM;AAAA,QAAW,UAAU,WAAA;AAAA,MAAA;QACjEC,WAAQ,KAAA,QAAA,SAAA;AAAA,MAAA;;;;ACEL,MAAM,gBAAgB,CAC3B,SACA,UACG;AACH,QAAM,YAAY,CAAC,WACjB,OAAO,WAAW,YAAY,WAAW,QAAQ,aAAa;AAEhE,QAAM,kBAAkB,CAAC,WAA2D;AAClF,UAAM,aAAa,QAAQ,KAAK;AAEhC,QAAI,OAAO,WAAW,UAAU;AAC9B,aAAO,EAAC,OAAO,QAAQ,MAAM,OAAA;AAAA,IAC/B;AACA,QAAI,OAAO,WAAW,UAAU;AAC9B,aAAO,EAAC,OAAO,QAAQ,MAAM,GAAG,MAAM,GAAA;AAAA,IACxC;AACA,QAAI,kBAAkB,MAAM;AAC1B,aAAO,EAAC,OAAO,QAAQ,MAAM,OAAO,iBAAe;AAAA,IACrD;AAEA,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;AACtB,aAAO;AAAA,QACL,OAAO,IAAI,QAAQ,WAAW,UAAoB,KAAK;AAAA,QACvD,SAAS;AAAA,MAAA;AAAA,IAEb;AAEA,WAAO;AAAA,MACL,GAAI,OAAO,WAAW,WAAW,SAAS;AAAA,MAC1C;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,EAEJ;AAEA,QAAM,mBAAmB,CACvB,SAC8C,KAAK,IAAI,CAAC,WAAW,gBAAgB,MAAM,CAAC;AAE5F,QAAM,oBAAoB,SAAS,MAAM,iBAAiB,QAAQ,OAAO,CAAC,CAAC;AAE3E,SAAO,EAAC,mBAAmB,UAAA;AAC7B;"}