bootstrap-vue-next
Version:
Seamless integration of Vue 3, Bootstrap 5, and TypeScript for modern, type-safe UI development
486 lines (485 loc) • 15.1 kB
JavaScript
require("./chunk-CoQrYLCe.js");
const require_keys = require("./keys-durSVUrO.js");
const require_dist = require("./dist-B_c893QG.js");
const require_dom = require("./dom-Bs6DzM72.js");
const require_useDefaults = require("./useDefaults-DsLf4iRY.js");
const require_useId = require("./useId-DHrBgM7P.js");
const require_ConditionalWrapper = require("./ConditionalWrapper-BcQirqyl.js");
const require_useFormCheck = require("./useFormCheck-H0B2G8GH.js");
let vue = require("vue");
//#region src/components/BFormCheckbox/BFormCheckbox.vue?vue&type=script&setup=true&lang.ts
var _hoisted_1$1 = [
"id",
"disabled",
"required",
"name",
"form",
"aria-label",
"aria-labelledby",
"aria-required",
"value",
"true-value",
"false-value",
"indeterminate"
];
var _hoisted_2 = ["for"];
//#endregion
//#region src/components/BFormCheckbox/BFormCheckbox.vue
var BFormCheckbox_default = /* @__PURE__ */ (0, vue.defineComponent)({
inheritAttrs: false,
__name: "BFormCheckbox",
props: /* @__PURE__ */ (0, vue.mergeModels)({
ariaLabel: { default: void 0 },
ariaLabelledby: { default: void 0 },
autofocus: {
type: Boolean,
default: false
},
button: {
type: Boolean,
default: void 0
},
buttonGroup: {
type: Boolean,
default: false
},
buttonVariant: { default: void 0 },
disabled: {
type: Boolean,
default: false
},
form: { default: void 0 },
id: { default: void 0 },
inline: {
type: Boolean,
default: void 0
},
name: { default: void 0 },
plain: {
type: Boolean,
default: void 0
},
required: {
type: Boolean,
default: false
},
reverse: {
type: Boolean,
default: void 0
},
size: { default: void 0 },
state: {
type: [Boolean, null],
default: void 0
},
switch: {
type: Boolean,
default: void 0
},
uncheckedValue: {
type: [
Array,
Set,
String,
Boolean,
Object,
Number,
null
],
default: false
},
wrapperAttrs: { default: void 0 },
inputClass: { default: void 0 },
value: {
type: [
String,
Boolean,
Array,
Set,
Object,
Number,
null
],
default: true
}
}, {
"modelValue": {
type: [
Array,
Set,
String,
Boolean,
Object,
Number,
null
],
default: void 0
},
"modelModifiers": {},
"indeterminate": {
type: Boolean,
default: false
},
"indeterminateModifiers": {}
}),
emits: ["update:modelValue", "update:indeterminate"],
setup(__props, { expose: __expose }) {
const props = require_useDefaults.useDefaults(__props, "BFormCheckbox");
const slots = (0, vue.useSlots)();
const attrs = (0, vue.useAttrs)();
const modelValue = (0, vue.useModel)(__props, "modelValue");
const indeterminate = (0, vue.useModel)(__props, "indeterminate");
const processedAttrs = (0, vue.computed)(() => {
const { class: wrapperClass, ...inputAttrs } = attrs;
return {
wrapperClass,
inputAttrs
};
});
const computedId = require_useId.useId(() => props.id, "form-check");
const parentData = (0, vue.inject)(require_keys.checkboxGroupKey, null);
const formGroupData = (0, vue.inject)(require_keys.formGroupKey, null)?.(computedId);
const input = (0, vue.useTemplateRef)("_input");
const { focused } = require_dist.useFocus(input, { initialValue: props.autofocus });
const hasDefaultSlot = (0, vue.computed)(() => !require_dom.isEmptySlot(slots.default));
const propDefaults = {
plain: false,
button: false,
inline: false,
reverse: false,
switch: false,
size: "md",
buttonVariant: "secondary",
state: null
};
const resolvedProps = (0, vue.computed)(() => ({
plain: props.plain ?? parentData?.plain.value ?? propDefaults.plain,
button: props.button ?? parentData?.buttons.value ?? propDefaults.button,
inline: props.inline ?? parentData?.inline.value ?? propDefaults.inline,
reverse: props.reverse ?? parentData?.reverse.value ?? propDefaults.reverse,
switch: props.switch ?? parentData?.switch.value ?? propDefaults.switch,
state: props.state ?? parentData?.state.value ?? propDefaults.state,
size: props.size ?? parentData?.size.value ?? propDefaults.size,
buttonVariant: props.buttonVariant ?? parentData?.buttonVariant.value ?? propDefaults.buttonVariant
}));
const resolvedPlain = (0, vue.computed)(() => resolvedProps.value.plain);
const localValue = (0, vue.computed)({
get: () => parentData ? parentData.modelValue.value : modelValue.value,
set: (newVal) => {
if (newVal === void 0) return;
indeterminate.value = false;
if (parentData !== null && Array.isArray(newVal)) {
parentData.modelValue.value = newVal;
return;
}
modelValue.value = newVal;
}
});
const computedRequired = (0, vue.computed)(() => !!(props.name ?? parentData?.name.value) && (props.required || parentData?.required.value));
const isButtonGroup = (0, vue.computed)(() => props.buttonGroup || (parentData?.buttons.value ?? false));
const classesObject = (0, vue.computed)(() => ({
...resolvedProps.value,
hasDefaultSlot: hasDefaultSlot.value
}));
const wrapperClasses = require_useFormCheck.getClasses(classesObject);
const computedWrapperClasses = (0, vue.computed)(() => [wrapperClasses.value, processedAttrs.value.wrapperClass]);
const inputClasses = require_useFormCheck.getInputClasses(classesObject);
const computedInputClasses = (0, vue.computed)(() => [inputClasses.value, props.inputClass]);
const labelClasses = require_useFormCheck.getLabelClasses(classesObject);
__expose({
blur: () => {
focused.value = false;
},
element: input,
focus: () => {
focused.value = true;
}
});
return (_ctx, _cache) => {
return (0, vue.openBlock)(), (0, vue.createBlock)(require_ConditionalWrapper.ConditionalWrapper_default, (0, vue.mergeProps)({ skip: isButtonGroup.value }, (0, vue.unref)(props).wrapperAttrs, { class: computedWrapperClasses.value }), {
default: (0, vue.withCtx)(() => [(0, vue.withDirectives)((0, vue.createElementVNode)("input", (0, vue.mergeProps)({
id: (0, vue.unref)(computedId),
ref: "_input",
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => localValue.value = $event),
class: computedInputClasses.value,
type: "checkbox",
disabled: (0, vue.unref)(props).disabled || (0, vue.unref)(parentData)?.disabled.value || (0, vue.unref)(formGroupData)?.disabled.value,
required: computedRequired.value || void 0,
name: (0, vue.unref)(props).name || (0, vue.unref)(parentData)?.name.value,
form: (0, vue.unref)(props).form || (0, vue.unref)(parentData)?.form.value,
"aria-label": (0, vue.unref)(props).ariaLabel,
"aria-labelledby": (0, vue.unref)(props).ariaLabelledby,
"aria-required": computedRequired.value || void 0,
value: (0, vue.unref)(props).value,
"true-value": (0, vue.unref)(props).value,
"false-value": (0, vue.unref)(props).uncheckedValue,
indeterminate: indeterminate.value || void 0
}, processedAttrs.value.inputAttrs), null, 16, _hoisted_1$1), [[vue.vModelCheckbox, localValue.value]]), hasDefaultSlot.value || !resolvedPlain.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("label", {
key: 0,
for: (0, vue.unref)(computedId),
class: (0, vue.normalizeClass)((0, vue.unref)(labelClasses))
}, [(0, vue.renderSlot)(_ctx.$slots, "default")], 10, _hoisted_2)) : (0, vue.createCommentVNode)("", true)]),
_: 3
}, 16, ["skip", "class"]);
};
}
});
//#endregion
//#region src/components/BFormCheckbox/BFormCheckboxGroupBase.vue?vue&type=script&setup=true&lang.ts
var _hoisted_1 = ["id"];
//#endregion
//#region src/components/BFormCheckbox/BFormCheckboxGroupBase.vue
var BFormCheckboxGroupBase_default = /* @__PURE__ */ (0, vue.defineComponent)({
__name: "BFormCheckboxGroupBase",
props: /* @__PURE__ */ (0, vue.mergeModels)({
id: { default: void 0 },
name: { default: void 0 },
size: { default: "md" },
state: {
type: [Boolean, null],
default: null
},
buttonVariant: { default: "secondary" },
buttons: {
type: Boolean,
default: false
},
stacked: {
type: Boolean,
default: false
},
disabled: {
type: Boolean,
default: false
},
required: {
type: Boolean,
default: false
},
validated: {
type: Boolean,
default: false
},
autofocus: {
type: Boolean,
default: false
},
form: { default: void 0 },
ariaInvalid: {
type: [Boolean, String],
default: void 0
},
plain: {
type: Boolean,
default: false
},
reverse: {
type: Boolean,
default: false
},
switches: {
type: Boolean,
default: false
},
options: { default: () => [] }
}, {
"modelValue": { default: () => [] },
"modelModifiers": {}
}),
emits: ["update:modelValue"],
setup(__props, { expose: __expose }) {
const props = require_useDefaults.useDefaults(__props, "BFormCheckboxGroup");
const modelValue = (0, vue.useModel)(__props, "modelValue");
const computedId = require_useId.useId(() => props.id, "checkbox");
const computedName = require_useId.useId(() => props.name, "checkbox");
const _element = (0, vue.useTemplateRef)("_element");
const { focused } = require_dist.useFocus(_element, { initialValue: props.autofocus });
(0, vue.provide)(require_keys.checkboxGroupKey, {
modelValue,
switch: (0, vue.toRef)(() => props.switches),
buttonVariant: (0, vue.toRef)(() => props.buttonVariant),
form: (0, vue.toRef)(() => props.form),
name: computedName,
state: (0, vue.toRef)(() => props.state),
plain: (0, vue.toRef)(() => props.plain),
size: (0, vue.toRef)(() => props.size),
inline: (0, vue.toRef)(() => !props.stacked),
reverse: (0, vue.toRef)(() => props.reverse),
required: (0, vue.toRef)(() => props.required),
buttons: (0, vue.toRef)(() => props.buttons),
disabled: (0, vue.toRef)(() => props.disabled)
});
const normalizedOptions = (0, vue.computed)(() => props.options.map((option) => {
if (typeof option === "object" && option !== null) return {
...option,
text: option.text ?? String(option.value ?? ""),
value: option.value ?? null,
disabled: props.disabled ? true : option.disabled ?? false
};
return {
text: String(option),
value: option,
disabled: props.disabled ? true : false
};
}));
const classesObject = (0, vue.computed)(() => ({
required: props.required,
ariaInvalid: props.ariaInvalid,
state: props.state,
validated: props.validated,
buttons: props.buttons,
stacked: props.stacked,
size: props.size
}));
const attrs = require_useFormCheck.getGroupAttr(classesObject);
const classes = require_useFormCheck.getGroupClasses(classesObject);
__expose({
blur: () => {
focused.value = false;
},
focus: () => {
focused.value = true;
}
});
return (_ctx, _cache) => {
return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", (0, vue.mergeProps)((0, vue.unref)(attrs), {
id: (0, vue.unref)(computedId),
ref_key: "_element",
ref: _element,
role: "group",
class: [(0, vue.unref)(classes), "bv-no-focus-ring"],
tabindex: "-1"
}), [
(0, vue.renderSlot)(_ctx.$slots, "first"),
((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(normalizedOptions.value, (item, index) => {
return (0, vue.openBlock)(), (0, vue.createBlock)(BFormCheckbox_default, (0, vue.mergeProps)({ key: index }, { ref_for: true }, item), {
default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "option", (0, vue.mergeProps)({ ref_for: true }, item), () => [(0, vue.createTextVNode)((0, vue.toDisplayString)(item.text), 1)])]),
_: 2
}, 1040);
}), 128)),
(0, vue.renderSlot)(_ctx.$slots, "default")
], 16, _hoisted_1);
};
}
});
//#endregion
//#region src/components/BFormCheckbox/BFormCheckboxGroup.vue
var BFormCheckboxGroup_default = /* @__PURE__ */ (0, vue.defineComponent)({
__name: "BFormCheckboxGroup",
props: /* @__PURE__ */ (0, vue.mergeModels)({
options: { default: () => [] },
valueField: { default: "value" },
textField: { default: "text" },
disabledField: { default: "disabled" },
id: { default: void 0 },
name: { default: void 0 },
size: { default: "md" },
state: {
type: [Boolean, null],
default: null
},
buttonVariant: { default: "secondary" },
buttons: {
type: Boolean,
default: false
},
stacked: {
type: Boolean,
default: false
},
disabled: {
type: Boolean,
default: false
},
required: {
type: Boolean,
default: false
},
validated: {
type: Boolean,
default: false
},
autofocus: {
type: Boolean,
default: false
},
form: { default: void 0 },
ariaInvalid: {
type: [Boolean, String],
default: void 0
},
plain: {
type: Boolean,
default: false
},
reverse: {
type: Boolean,
default: false
},
switches: {
type: Boolean,
default: false
}
}, {
"modelValue": { default: () => [] },
"modelModifiers": {}
}),
emits: ["update:modelValue"],
setup(__props) {
const props = __props;
const modelValue = (0, vue.useModel)(__props, "modelValue");
const normalizedOptions = (0, vue.computed)(() => (props.options ?? []).map((el) => typeof el === "string" || typeof el === "number" || typeof el === "boolean" ? {
value: el,
disabled: props.disabled,
text: el.toString()
} : {
value: el[props.valueField],
disabled: props.disabled || (el[props.disabledField] ?? false),
text: el[props.textField] ?? String(el[props.valueField])
}));
const forwardedProps = (0, vue.computed)(() => ({
id: props.id,
name: props.name,
size: props.size,
state: props.state,
buttonVariant: props.buttonVariant,
buttons: props.buttons,
stacked: props.stacked,
disabled: props.disabled,
required: props.required,
validated: props.validated,
autofocus: props.autofocus,
form: props.form,
ariaInvalid: props.ariaInvalid,
plain: props.plain,
reverse: props.reverse,
switches: props.switches
}));
return (_ctx, _cache) => {
return (0, vue.openBlock)(), (0, vue.createBlock)(BFormCheckboxGroupBase_default, (0, vue.mergeProps)(forwardedProps.value, {
modelValue: modelValue.value,
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => modelValue.value = $event),
options: normalizedOptions.value
}), {
first: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "first")]),
option: (0, vue.withCtx)((slotProps) => [(0, vue.renderSlot)(_ctx.$slots, "option", (0, vue.normalizeProps)((0, vue.guardReactiveProps)(slotProps)))]),
default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "default")]),
_: 3
}, 16, ["modelValue", "options"]);
};
}
});
//#endregion
Object.defineProperty(exports, "BFormCheckboxGroup_default", {
enumerable: true,
get: function() {
return BFormCheckboxGroup_default;
}
});
Object.defineProperty(exports, "BFormCheckbox_default", {
enumerable: true,
get: function() {
return BFormCheckbox_default;
}
});
//# sourceMappingURL=BFormCheckbox-eSsgdaji.js.map