bootstrap-vue-next
Version:
Seamless integration of Vue 3, Bootstrap 5, and TypeScript for modern, type-safe UI development
1 lines • 26.1 kB
Source Map (JSON)
{"version":3,"file":"BFormGroup--38dFj0X.mjs","names":["$attrs"],"sources":["../src/utils/props.ts","../src/components/BFormGroup/BFormGroup.vue","../src/components/BFormGroup/BFormGroup.vue"],"sourcesContent":["// Suffix can be a falsey value so nothing is appended to string\n// (helps when looping over props & some shouldn't change)\n\nimport {upperFirst} from './stringUtils'\n\n/**\n * Use data last parameters to allow for currying\n *\n * @param suffix\n * @param value\n * @returns\n */\nexport const suffixPropName = (suffix: string, value: string): string =>\n value + (suffix ? upperFirst(suffix) : '')\n","<template>\n <component\n :is=\"isFieldset ? 'fieldset' : 'div'\"\n :id=\"computedId\"\n :disabled=\"isFieldset ? props.disabled : null\"\n :role=\"isFieldset ? null : 'group'\"\n :aria-invalid=\"computedAriaInvalid\"\n :aria-labelledby=\"isFieldset && isHorizontal ? labelId : null\"\n v-bind=\"$attrs\"\n :class=\"[stateClass, {'was-validated': props.validated}]\"\n class=\"b-form-group\"\n >\n <ContentTemplate.define>\n <BFormInvalidFeedback\n v-if=\"slots['invalid-feedback'] || props.invalidFeedback\"\n :id=\"invalidFeedbackId\"\n :aria-live=\"props.feedbackAriaLive\"\n :state=\"computedState\"\n :tooltip=\"props.tooltip\"\n >\n <slot name=\"invalid-feedback\">{{ props.invalidFeedback }}</slot>\n </BFormInvalidFeedback>\n <BFormValidFeedback\n v-if=\"slots['valid-feedback'] || props.validFeedback\"\n :id=\"validFeedbackId\"\n :aria-live=\"props.feedbackAriaLive\"\n :state=\"computedState\"\n :tooltip=\"props.tooltip\"\n >\n <slot name=\"valid-feedback\">{{ props.validFeedback }}</slot>\n </BFormValidFeedback>\n <BFormText v-if=\"slots.description || props.description\" :id=\"descriptionId\">\n <slot name=\"description\">{{ props.description }}</slot>\n </BFormText>\n </ContentTemplate.define>\n <LabelContentTemplate.define>\n <template v-if=\"slots.label || props.label || isHorizontal\">\n <BCol\n v-if=\"isHorizontal\"\n v-bind=\"labelColProps\"\n :id=\"labelId\"\n :tag=\"labelTag\"\n :for=\"computedLabelFor || null\"\n :tabindex=\"isFieldset ? '-1' : null\"\n :class=\"[labelAlignClasses, labelClasses]\"\n @click=\"isFieldset ? onLegendClick : null\"\n >\n <slot name=\"label\">{{ props.label }}</slot>\n </BCol>\n <component\n :is=\"labelTag\"\n v-else\n :id=\"labelId\"\n :for=\"computedLabelFor || null\"\n :tabindex=\"isFieldset ? '-1' : null\"\n :class=\"labelClasses\"\n @click=\"isFieldset ? onLegendClick : null\"\n >\n <slot name=\"label\">{{ props.label }}</slot>\n </component>\n </template>\n </LabelContentTemplate.define>\n <!-- End of definitions -->\n <BFormRow v-if=\"isHorizontal\">\n <LabelContentTemplate.reuse />\n <BCol v-bind=\"contentColProps\" ref=\"_content\">\n <slot\n :id=\"computedId\"\n :aria-describedby=\"null\"\n :description-id=\"descriptionId\"\n :label-id=\"labelId\"\n />\n <ContentTemplate.reuse />\n </BCol>\n </BFormRow>\n <template v-else>\n <div v-if=\"props.floating && !isHorizontal\" ref=\"_content\" class=\"form-floating\">\n <slot\n :id=\"computedId\"\n :aria-describedby=\"null\"\n :description-id=\"descriptionId\"\n :label-id=\"labelId\"\n />\n <LabelContentTemplate.reuse />\n <ContentTemplate.reuse />\n </div>\n <template v-else>\n <LabelContentTemplate.reuse />\n <slot\n :id=\"computedId\"\n :aria-describedby=\"null\"\n :description-id=\"descriptionId\"\n :label-id=\"labelId\"\n />\n <ContentTemplate.reuse />\n </template>\n </template>\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed, provide, type Ref, ref, toRef, useTemplateRef} from 'vue'\nimport {useAriaInvalid} from '../../composables/useAriaInvalid'\nimport {attemptFocus, isVisible} from '../../utils/dom'\nimport BCol from '../BContainer/BCol.vue'\nimport BFormInvalidFeedback from '../BForm/BFormInvalidFeedback.vue'\nimport BFormRow from '../BForm/BFormRow.vue'\nimport BFormText from '../BForm/BFormText.vue'\nimport BFormValidFeedback from '../BForm/BFormValidFeedback.vue'\nimport {suffixPropName} from '../../utils/props'\nimport {useStateClass} from '../../composables/useStateClass'\nimport {useId} from '../../composables/useId'\nimport {createReusableTemplate} from '@vueuse/core'\nimport type {BFormGroupProps, BFormGroupSlots} from '../../types'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {formGroupKey} from '../../utils/keys'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst INPUTS = ['input', 'select', 'textarea']\n\nconst _props = withDefaults(defineProps<BFormGroupProps>(), {\n ariaInvalid: undefined,\n contentCols: undefined,\n contentColsLg: undefined,\n contentColsMd: undefined,\n contentColsSm: undefined,\n contentColsXl: undefined,\n description: undefined,\n disabled: false,\n feedbackAriaLive: 'assertive',\n floating: false,\n id: undefined,\n invalidFeedback: undefined,\n label: undefined,\n labelAlign: undefined,\n labelAlignLg: undefined,\n labelAlignMd: undefined,\n labelAlignSm: undefined,\n labelAlignXl: undefined,\n labelClass: undefined,\n labelCols: undefined,\n labelColsLg: undefined,\n labelColsMd: undefined,\n labelColsSm: undefined,\n labelColsXl: undefined,\n labelFor: undefined,\n labelSize: undefined,\n labelVisuallyHidden: false,\n state: null,\n tooltip: false,\n validFeedback: undefined,\n validated: false,\n})\nconst props = useDefaults(_props, 'BFormGroup')\nconst slots = defineSlots<BFormGroupSlots>()\n\nconst LabelContentTemplate = createReusableTemplate()\nconst ContentTemplate = createReusableTemplate()\n\nconst computedState = toRef(() => props.state)\nconst computedDisabled = toRef(() => props.disabled)\nconst childId = ref<Ref<string>[]>([])\nprovide(formGroupKey, (id) => {\n childId.value = [id]\n\n return {\n state: computedState,\n disabled: computedDisabled,\n }\n})\nconst computedLabelFor = computed(() => {\n if (props.labelFor !== undefined) return props.labelFor\n if (childId.value[0] && childId.value[0].value) return childId.value[0].value\n return null\n})\n\nconst breakPoints = ['xs', 'sm', 'md', 'lg', 'xl']\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst getColProps = (props: any, prefix: string) =>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n breakPoints.reduce((result: any, breakpoint: string) => {\n const suffix = suffixPropName(breakpoint === 'xs' ? '' : breakpoint, `${prefix}Cols`)\n let propValue = props[suffix]\n propValue = propValue === '' ? true : propValue || false\n\n if (!(typeof propValue === 'boolean') && propValue !== 'auto') {\n const val = Number.parseInt(propValue)\n propValue = Number.isNaN(val) ? 0 : val\n propValue = propValue > 0 ? propValue : false\n }\n\n if (propValue) {\n if (breakpoint === 'xs') {\n result[typeof propValue === 'boolean' ? 'col' : 'cols'] = propValue\n } else {\n result[breakpoint || (typeof propValue === 'boolean' ? 'col' : 'cols')] = propValue\n }\n }\n return result\n }, {})\n\nconst content = useTemplateRef<HTMLDivElement | InstanceType<typeof BCol> | null>('_content')\n\nconst contentColProps = computed(() => getColProps(props, 'content'))\nconst labelAlignClasses = computed(() =>\n ((props: BFormGroupProps, prefix: string) =>\n breakPoints.reduce((result: string[], breakpoint) => {\n const suffix = suffixPropName(\n breakpoint === 'xs' ? '' : breakpoint,\n `${prefix}Align`\n ) as keyof BFormGroupProps\n const propValue: string = props[suffix] || null\n if (propValue) {\n if (breakpoint === 'xs') {\n result.push(`text-${propValue}`)\n } else {\n result.push(`text-${breakpoint}-${propValue}`)\n }\n }\n return result\n }, []))(props, 'label')\n)\nconst labelColProps = computed(() => getColProps(props, 'label'))\nconst isHorizontal = computed(\n () => Object.keys(contentColProps.value).length > 0 || Object.keys(labelColProps.value).length > 0\n)\n\nconst stateClass = useStateClass(computedState)\nconst computedAriaInvalid = useAriaInvalid(() => props.ariaInvalid, computedState)\n\nconst onLegendClick = (event: Readonly<MouseEvent>) => {\n if (computedLabelFor.value || content.value === null) return\n\n const {target} = event\n const tagName = target ? (target as HTMLElement).tagName : ''\n\n if ([...INPUTS, 'a', 'button', 'label'].indexOf(tagName) !== -1) return\n\n // In horizontal mode, content.value is a BCol component instance, not a DOM element\n // Access the DOM element via $el property\n const contentElement =\n isHorizontal.value && content.value && '$el' in content.value\n ? (content.value.$el as HTMLElement)\n : (content.value as HTMLDivElement | null)\n if (!contentElement) return\n\n const inputs = [\n ...contentElement.querySelectorAll(INPUTS.map((v) => `${v}:not([disabled])`).join()),\n ].filter(isVisible)\n const [inp] = inputs\n if (inputs.length === 1 && inp instanceof HTMLElement) {\n attemptFocus(inp)\n }\n}\n\nconst computedId = useId(() => props.id)\nconst labelId = useId(undefined, '_BV_label_')\nconst labelTag = computed(() => (!computedLabelFor.value ? 'legend' : 'label'))\nconst labelClasses = computed(() => [\n isHorizontal.value ? 'col-form-label' : 'form-label',\n {\n 'bv-no-focus-ring': !computedLabelFor.value,\n 'col-form-label': isHorizontal.value || !computedLabelFor.value,\n 'pt-0': !isHorizontal.value && !computedLabelFor.value,\n 'd-block': !isHorizontal.value && computedLabelFor.value,\n [`col-form-label-${props.labelSize}`]: !!props.labelSize,\n 'visually-hidden': props.labelVisuallyHidden,\n },\n isHorizontal.value ? null : labelAlignClasses.value,\n props.labelClass,\n])\n\nconst invalidFeedbackId = useId(undefined, '_BV_feedback_invalid_')\n\nconst validFeedbackId = useId(undefined, '_BV_feedback_valid_')\nconst descriptionId = useId(undefined, '_BV_description_')\n\nconst isFieldset = computed(() => !computedLabelFor.value)\n</script>\n","<template>\n <component\n :is=\"isFieldset ? 'fieldset' : 'div'\"\n :id=\"computedId\"\n :disabled=\"isFieldset ? props.disabled : null\"\n :role=\"isFieldset ? null : 'group'\"\n :aria-invalid=\"computedAriaInvalid\"\n :aria-labelledby=\"isFieldset && isHorizontal ? labelId : null\"\n v-bind=\"$attrs\"\n :class=\"[stateClass, {'was-validated': props.validated}]\"\n class=\"b-form-group\"\n >\n <ContentTemplate.define>\n <BFormInvalidFeedback\n v-if=\"slots['invalid-feedback'] || props.invalidFeedback\"\n :id=\"invalidFeedbackId\"\n :aria-live=\"props.feedbackAriaLive\"\n :state=\"computedState\"\n :tooltip=\"props.tooltip\"\n >\n <slot name=\"invalid-feedback\">{{ props.invalidFeedback }}</slot>\n </BFormInvalidFeedback>\n <BFormValidFeedback\n v-if=\"slots['valid-feedback'] || props.validFeedback\"\n :id=\"validFeedbackId\"\n :aria-live=\"props.feedbackAriaLive\"\n :state=\"computedState\"\n :tooltip=\"props.tooltip\"\n >\n <slot name=\"valid-feedback\">{{ props.validFeedback }}</slot>\n </BFormValidFeedback>\n <BFormText v-if=\"slots.description || props.description\" :id=\"descriptionId\">\n <slot name=\"description\">{{ props.description }}</slot>\n </BFormText>\n </ContentTemplate.define>\n <LabelContentTemplate.define>\n <template v-if=\"slots.label || props.label || isHorizontal\">\n <BCol\n v-if=\"isHorizontal\"\n v-bind=\"labelColProps\"\n :id=\"labelId\"\n :tag=\"labelTag\"\n :for=\"computedLabelFor || null\"\n :tabindex=\"isFieldset ? '-1' : null\"\n :class=\"[labelAlignClasses, labelClasses]\"\n @click=\"isFieldset ? onLegendClick : null\"\n >\n <slot name=\"label\">{{ props.label }}</slot>\n </BCol>\n <component\n :is=\"labelTag\"\n v-else\n :id=\"labelId\"\n :for=\"computedLabelFor || null\"\n :tabindex=\"isFieldset ? '-1' : null\"\n :class=\"labelClasses\"\n @click=\"isFieldset ? onLegendClick : null\"\n >\n <slot name=\"label\">{{ props.label }}</slot>\n </component>\n </template>\n </LabelContentTemplate.define>\n <!-- End of definitions -->\n <BFormRow v-if=\"isHorizontal\">\n <LabelContentTemplate.reuse />\n <BCol v-bind=\"contentColProps\" ref=\"_content\">\n <slot\n :id=\"computedId\"\n :aria-describedby=\"null\"\n :description-id=\"descriptionId\"\n :label-id=\"labelId\"\n />\n <ContentTemplate.reuse />\n </BCol>\n </BFormRow>\n <template v-else>\n <div v-if=\"props.floating && !isHorizontal\" ref=\"_content\" class=\"form-floating\">\n <slot\n :id=\"computedId\"\n :aria-describedby=\"null\"\n :description-id=\"descriptionId\"\n :label-id=\"labelId\"\n />\n <LabelContentTemplate.reuse />\n <ContentTemplate.reuse />\n </div>\n <template v-else>\n <LabelContentTemplate.reuse />\n <slot\n :id=\"computedId\"\n :aria-describedby=\"null\"\n :description-id=\"descriptionId\"\n :label-id=\"labelId\"\n />\n <ContentTemplate.reuse />\n </template>\n </template>\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed, provide, type Ref, ref, toRef, useTemplateRef} from 'vue'\nimport {useAriaInvalid} from '../../composables/useAriaInvalid'\nimport {attemptFocus, isVisible} from '../../utils/dom'\nimport BCol from '../BContainer/BCol.vue'\nimport BFormInvalidFeedback from '../BForm/BFormInvalidFeedback.vue'\nimport BFormRow from '../BForm/BFormRow.vue'\nimport BFormText from '../BForm/BFormText.vue'\nimport BFormValidFeedback from '../BForm/BFormValidFeedback.vue'\nimport {suffixPropName} from '../../utils/props'\nimport {useStateClass} from '../../composables/useStateClass'\nimport {useId} from '../../composables/useId'\nimport {createReusableTemplate} from '@vueuse/core'\nimport type {BFormGroupProps, BFormGroupSlots} from '../../types'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {formGroupKey} from '../../utils/keys'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst INPUTS = ['input', 'select', 'textarea']\n\nconst _props = withDefaults(defineProps<BFormGroupProps>(), {\n ariaInvalid: undefined,\n contentCols: undefined,\n contentColsLg: undefined,\n contentColsMd: undefined,\n contentColsSm: undefined,\n contentColsXl: undefined,\n description: undefined,\n disabled: false,\n feedbackAriaLive: 'assertive',\n floating: false,\n id: undefined,\n invalidFeedback: undefined,\n label: undefined,\n labelAlign: undefined,\n labelAlignLg: undefined,\n labelAlignMd: undefined,\n labelAlignSm: undefined,\n labelAlignXl: undefined,\n labelClass: undefined,\n labelCols: undefined,\n labelColsLg: undefined,\n labelColsMd: undefined,\n labelColsSm: undefined,\n labelColsXl: undefined,\n labelFor: undefined,\n labelSize: undefined,\n labelVisuallyHidden: false,\n state: null,\n tooltip: false,\n validFeedback: undefined,\n validated: false,\n})\nconst props = useDefaults(_props, 'BFormGroup')\nconst slots = defineSlots<BFormGroupSlots>()\n\nconst LabelContentTemplate = createReusableTemplate()\nconst ContentTemplate = createReusableTemplate()\n\nconst computedState = toRef(() => props.state)\nconst computedDisabled = toRef(() => props.disabled)\nconst childId = ref<Ref<string>[]>([])\nprovide(formGroupKey, (id) => {\n childId.value = [id]\n\n return {\n state: computedState,\n disabled: computedDisabled,\n }\n})\nconst computedLabelFor = computed(() => {\n if (props.labelFor !== undefined) return props.labelFor\n if (childId.value[0] && childId.value[0].value) return childId.value[0].value\n return null\n})\n\nconst breakPoints = ['xs', 'sm', 'md', 'lg', 'xl']\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst getColProps = (props: any, prefix: string) =>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n breakPoints.reduce((result: any, breakpoint: string) => {\n const suffix = suffixPropName(breakpoint === 'xs' ? '' : breakpoint, `${prefix}Cols`)\n let propValue = props[suffix]\n propValue = propValue === '' ? true : propValue || false\n\n if (!(typeof propValue === 'boolean') && propValue !== 'auto') {\n const val = Number.parseInt(propValue)\n propValue = Number.isNaN(val) ? 0 : val\n propValue = propValue > 0 ? propValue : false\n }\n\n if (propValue) {\n if (breakpoint === 'xs') {\n result[typeof propValue === 'boolean' ? 'col' : 'cols'] = propValue\n } else {\n result[breakpoint || (typeof propValue === 'boolean' ? 'col' : 'cols')] = propValue\n }\n }\n return result\n }, {})\n\nconst content = useTemplateRef<HTMLDivElement | InstanceType<typeof BCol> | null>('_content')\n\nconst contentColProps = computed(() => getColProps(props, 'content'))\nconst labelAlignClasses = computed(() =>\n ((props: BFormGroupProps, prefix: string) =>\n breakPoints.reduce((result: string[], breakpoint) => {\n const suffix = suffixPropName(\n breakpoint === 'xs' ? '' : breakpoint,\n `${prefix}Align`\n ) as keyof BFormGroupProps\n const propValue: string = props[suffix] || null\n if (propValue) {\n if (breakpoint === 'xs') {\n result.push(`text-${propValue}`)\n } else {\n result.push(`text-${breakpoint}-${propValue}`)\n }\n }\n return result\n }, []))(props, 'label')\n)\nconst labelColProps = computed(() => getColProps(props, 'label'))\nconst isHorizontal = computed(\n () => Object.keys(contentColProps.value).length > 0 || Object.keys(labelColProps.value).length > 0\n)\n\nconst stateClass = useStateClass(computedState)\nconst computedAriaInvalid = useAriaInvalid(() => props.ariaInvalid, computedState)\n\nconst onLegendClick = (event: Readonly<MouseEvent>) => {\n if (computedLabelFor.value || content.value === null) return\n\n const {target} = event\n const tagName = target ? (target as HTMLElement).tagName : ''\n\n if ([...INPUTS, 'a', 'button', 'label'].indexOf(tagName) !== -1) return\n\n // In horizontal mode, content.value is a BCol component instance, not a DOM element\n // Access the DOM element via $el property\n const contentElement =\n isHorizontal.value && content.value && '$el' in content.value\n ? (content.value.$el as HTMLElement)\n : (content.value as HTMLDivElement | null)\n if (!contentElement) return\n\n const inputs = [\n ...contentElement.querySelectorAll(INPUTS.map((v) => `${v}:not([disabled])`).join()),\n ].filter(isVisible)\n const [inp] = inputs\n if (inputs.length === 1 && inp instanceof HTMLElement) {\n attemptFocus(inp)\n }\n}\n\nconst computedId = useId(() => props.id)\nconst labelId = useId(undefined, '_BV_label_')\nconst labelTag = computed(() => (!computedLabelFor.value ? 'legend' : 'label'))\nconst labelClasses = computed(() => [\n isHorizontal.value ? 'col-form-label' : 'form-label',\n {\n 'bv-no-focus-ring': !computedLabelFor.value,\n 'col-form-label': isHorizontal.value || !computedLabelFor.value,\n 'pt-0': !isHorizontal.value && !computedLabelFor.value,\n 'd-block': !isHorizontal.value && computedLabelFor.value,\n [`col-form-label-${props.labelSize}`]: !!props.labelSize,\n 'visually-hidden': props.labelVisuallyHidden,\n },\n isHorizontal.value ? null : labelAlignClasses.value,\n props.labelClass,\n])\n\nconst invalidFeedbackId = useId(undefined, '_BV_feedback_invalid_')\n\nconst validFeedbackId = useId(undefined, '_BV_feedback_valid_')\nconst descriptionId = useId(undefined, '_BV_description_')\n\nconst isFieldset = computed(() => !computedLabelFor.value)\n</script>\n"],"mappings":"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"}