UNPKG

bootstrap-vue-next

Version:

Seamless integration of Vue 3, Bootstrap 5, and TypeScript for modern, type-safe UI development

221 lines (220 loc) 7.36 kB
import { g as navbarInjectionKey, x as showHideRegistryKey } from "./keys-CQKrwmvN.mjs"; import { t as useDefaults } from "./useDefaults-BKgBaqOV.mjs"; import { t as useColorVariantClasses } from "./useColorVariantClasses-B6Me_Kx6.mjs"; import { r as useBLinkHelper, t as BLink_default } from "./BLink-Cz5YCsnv.mjs"; import { t as useAlignment } from "./useAlignment-DMST4-tc.mjs"; import { n as getShowHideValue, t as getActiveShowHide } from "./registryAccess-BO4rk3Sm.mjs"; import { computed, createBlock, createElementBlock, createElementVNode, defineComponent, inject, mergeProps, normalizeClass, openBlock, provide, renderSlot, resolveDynamicComponent, toRef, toValue, unref, withCtx } from "vue"; //#region src/composables/useContainerClasses.ts var useContainerClasses = (value) => computed(() => { const resolvedValue = toValue(value); return { container: resolvedValue === true, [`container-${resolvedValue}`]: typeof resolvedValue === "string" }; }); //#endregion //#region src/components/BNavbar/BNavbar.vue var BNavbar_default = /* @__PURE__ */ defineComponent({ __name: "BNavbar", props: { container: { type: [Boolean, String], default: "fluid" }, fixed: { default: void 0 }, noAutoClose: { type: Boolean, default: false }, print: { type: Boolean, default: false }, sticky: { default: void 0 }, tag: { default: "nav" }, toggleable: { type: [Boolean, String], default: false }, variant: { default: null } }, setup(__props) { const props = useDefaults(__props, "BNavbar"); const computedRole = computed(() => props.tag === "nav" ? void 0 : "navigation"); const containerClass = useContainerClasses(() => props.container); const colorClasses = useColorVariantClasses(computed(() => ({ bgVariant: props.variant }))); const computedClasses = computed(() => [colorClasses.value, { "d-print": props.print, [`sticky-${props.sticky}`]: props.sticky !== void 0, [`fixed-${props.fixed}`]: props.fixed !== void 0, "navbar-expand": props.toggleable === false, [`navbar-expand-${props.toggleable}`]: typeof props.toggleable === "string" }]); provide(navbarInjectionKey, { tag: toRef(() => props.tag), noAutoClose: toRef(() => props.noAutoClose) }); return (_ctx, _cache) => { return openBlock(), createBlock(resolveDynamicComponent(unref(props).tag), { class: normalizeClass(["navbar", computedClasses.value]), role: computedRole.value }, { default: withCtx(() => [unref(props).container !== false ? (openBlock(), createElementBlock("div", { key: 0, class: normalizeClass(unref(containerClass)) }, [renderSlot(_ctx.$slots, "default")], 2)) : renderSlot(_ctx.$slots, "default", { key: 1 })]), _: 3 }, 8, ["class", "role"]); }; } }); //#endregion //#region src/components/BNavbar/BNavbarBrand.vue var BNavbarBrand_default = /* @__PURE__ */ defineComponent({ __name: "BNavbarBrand", props: { tag: { default: "div" }, active: { type: Boolean, default: void 0 }, activeClass: { default: void 0 }, disabled: { type: Boolean, default: void 0 }, exactActiveClass: { default: void 0 }, href: { default: void 0 }, icon: { type: Boolean, default: void 0 }, noRel: { type: Boolean }, opacity: { default: void 0 }, opacityHover: { default: void 0 }, prefetch: { type: Boolean }, prefetchOn: {}, noPrefetch: { type: Boolean }, prefetchedClass: {}, rel: { default: void 0 }, replace: { type: Boolean, default: void 0 }, routerComponentName: { default: void 0 }, stretched: { type: Boolean, default: false }, target: { default: void 0 }, to: { default: void 0 }, underlineOffset: { default: void 0 }, underlineOffsetHover: { default: void 0 }, underlineOpacity: { default: void 0 }, underlineOpacityHover: { default: void 0 }, underlineVariant: { default: void 0 }, variant: { default: void 0 } }, setup(__props) { const props = useDefaults(__props, "BNavbarBrand"); const { computedLink, computedLinkProps } = useBLinkHelper(props); const computedTag = computed(() => computedLink.value ? BLink_default : props.tag); return (_ctx, _cache) => { return openBlock(), createBlock(resolveDynamicComponent(computedTag.value), mergeProps({ class: "navbar-brand" }, unref(computedLinkProps)), { default: withCtx(() => [renderSlot(_ctx.$slots, "default")]), _: 3 }, 16); }; } }); //#endregion //#region src/components/BNavbar/BNavbarNav.vue var BNavbarNav_default = /* @__PURE__ */ defineComponent({ __name: "BNavbarNav", props: { align: { default: void 0 }, fill: { type: Boolean, default: false }, justified: { type: Boolean, default: false }, small: { type: Boolean, default: false }, tag: { default: "ul" } }, setup(__props) { const props = useDefaults(__props, "BNavbarNav"); const alignment = useAlignment(() => props.align); const computedClasses = computed(() => ({ "nav-fill": props.fill, "nav-justified": props.justified, [alignment.value]: props.align !== void 0, "small": props.small })); return (_ctx, _cache) => { return openBlock(), createElementBlock("ul", { class: normalizeClass(["navbar-nav", computedClasses.value]) }, [renderSlot(_ctx.$slots, "default")], 2); }; } }); //#endregion //#region src/components/BNavbar/BNavbarToggle.vue?vue&type=script&setup=true&lang.ts var _hoisted_1 = ["disabled", "aria-label"]; //#endregion //#region src/components/BNavbar/BNavbarToggle.vue var BNavbarToggle_default = /* @__PURE__ */ defineComponent({ __name: "BNavbarToggle", props: { disabled: { type: Boolean, default: false }, label: { default: "Toggle navigation" }, target: { default: void 0 } }, emits: ["click"], setup(__props, { emit: __emit }) { const props = useDefaults(__props, "BNavbarToggle"); const emit = __emit; const computedClasses = computed(() => ({ disabled: props.disabled })); const showHideData = inject(showHideRegistryKey, null); const collapseExpanded = computed(() => { if (!props.target || !showHideData) return false; if (typeof props.target === "string") return getShowHideValue(showHideData.values, props.target); return props.target.some((target) => getShowHideValue(showHideData.values, target)); }); const toggleExpand = () => { if (!props.target || !showHideData) return; if (typeof props.target === "string") { getActiveShowHide(showHideData.values, props.target)?.toggle(); return; } props.target.forEach((target) => { getActiveShowHide(showHideData.values, target)?.toggle(); }); }; const onClick = (e) => { if (!props.disabled) { emit("click", e); toggleExpand(); } }; return (_ctx, _cache) => { return openBlock(), createElementBlock("button", { class: normalizeClass(["navbar-toggler", computedClasses.value]), type: "button", disabled: unref(props).disabled, "aria-label": unref(props).label, onClick }, [renderSlot(_ctx.$slots, "default", { expanded: collapseExpanded.value }, () => [_cache[0] || (_cache[0] = createElementVNode("span", { class: "navbar-toggler-icon" }, null, -1))])], 10, _hoisted_1); }; } }); //#endregion export { BNavbar_default as i, BNavbarNav_default as n, BNavbarBrand_default as r, BNavbarToggle_default as t }; //# sourceMappingURL=BNavbar-DALgesyZ.mjs.map