bootstrap-vue-next
Version:
Seamless integration of Vue 3, Bootstrap 5, and TypeScript for modern, type-safe UI development
131 lines (130 loc) • 4.12 kB
JavaScript
import { t as useId$1 } from "./useId-CCwnEmGh.mjs";
import { t as useDefaults } from "./useDefaults-CCWS15M8.mjs";
import { t as useColorVariantClasses } from "./useColorVariantClasses-GuDw8a_O.mjs";
import { t as useNumberishToStyle } from "./useNumberishToStyle-uj-NwKpF.mjs";
import { computed, createElementBlock, createElementVNode, defineComponent, guardReactiveProps, mergeProps, normalizeClass, normalizeProps, normalizeStyle, openBlock, renderSlot } from "vue";
//#region src/components/BTable/BTableSimple.vue?vue&type=script&setup=true&lang.ts
var defaultStickyHeaderHeight = "300px";
//#endregion
//#region src/components/BTable/BTableSimple.vue
var BTableSimple_default = /* @__PURE__ */ defineComponent({
__name: "BTableSimple",
props: {
bordered: {
type: Boolean,
default: false
},
borderless: {
type: Boolean,
default: false
},
borderVariant: { default: null },
captionTop: {
type: Boolean,
default: false
},
dark: {
type: Boolean,
default: false
},
fixed: {
type: Boolean,
default: false
},
hover: {
type: Boolean,
default: false
},
id: { default: void 0 },
noBorderCollapse: {
type: Boolean,
default: false
},
outlined: {
type: Boolean,
default: false
},
responsive: {
type: [Boolean, String],
default: false
},
small: {
type: Boolean,
default: false
},
stacked: {
type: [Boolean, String],
default: false
},
stickyHeader: {
type: [
Boolean,
String,
Number
],
default: false
},
striped: {
type: Boolean,
default: false
},
stripedColumns: {
type: Boolean,
default: false
},
variant: { default: null },
tableAttrs: { default: void 0 },
tableClass: { default: void 0 }
},
setup(__props) {
const props = useDefaults(__props, "BTableSimple");
const computedId = useId$1(() => props.id);
const colorClasses = useColorVariantClasses(computed(() => ({ borderVariant: props.borderVariant })));
const computedClasses = computed(() => [
props.tableClass,
"table",
"b-table",
colorClasses.value,
{
"border": props.outlined,
"table-bordered": props.bordered,
"table-borderless": props.borderless,
"caption-top": props.captionTop,
"table-dark": props.dark,
"table-hover": props.hover,
"b-table-stacked": props.stacked === true,
[`b-table-stacked-${props.stacked}`]: typeof props.stacked === "string",
"table-striped": props.striped,
"table-sm": props.small,
[`table-${props.variant}`]: props.variant !== null,
"table-striped-columns": props.stripedColumns,
"b-table-fixed": props.fixed,
"b-table-no-border-collapse": props.noBorderCollapse
}
]);
const computedTableAttrs = computed(() => ({
id: computedId.value,
class: computedClasses.value,
...props.tableAttrs
}));
const computedSticky = useNumberishToStyle(computed(() => (props.stickyHeader === true ? defaultStickyHeaderHeight : props.stickyHeader) || NaN));
const stickyIsValid = computed(() => props.stickyHeader !== false);
const isResponsive = computed(() => props.responsive !== false || stickyIsValid.value);
const responsiveStyles = computed(() => stickyIsValid.value ? { maxHeight: computedSticky.value } : void 0);
const responsiveClasses = computed(() => ({
"table-responsive": props.responsive === true,
[`table-responsive-${props.responsive}`]: typeof props.responsive === "string",
"b-table-sticky-header": stickyIsValid.value
}));
return (_ctx, _cache) => {
return isResponsive.value ? (openBlock(), createElementBlock("div", {
key: 0,
class: normalizeClass(responsiveClasses.value),
style: normalizeStyle(responsiveStyles.value)
}, [createElementVNode("table", normalizeProps(guardReactiveProps(computedTableAttrs.value)), [renderSlot(_ctx.$slots, "default")], 16)], 6)) : (openBlock(), createElementBlock("table", normalizeProps(mergeProps({ key: 1 }, computedTableAttrs.value)), [renderSlot(_ctx.$slots, "default")], 16));
};
}
});
//#endregion
export { BTableSimple_default as t };
//# sourceMappingURL=BTableSimple-eebTf2L5.mjs.map