bootstrap-vue-next 0.24.21 → 0.24.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
- "use strict";const e=require("vue"),t=require("./object-B-6ddRYH.js"),l=require("./BOverlay.vue_vue_type_script_setup_true_lang-ikelLajh.js"),o=require("./BSpinner.vue_vue_type_script_setup_true_lang-BpcS7-mY.js"),a=require("./BTableSimple.vue_vue_type_script_setup_true_lang-Cybz9eNN.js"),r=require("./useDefaults-C2groUjC.js"),n=require("./stringUtils-D2ajpVM0.js"),s=require("./index-BInTFWT4.js"),d=(e,l,o)=>{const a=t.get(e,l);return o&&"function"==typeof o?o(a,l,e):a},i=e=>"object"==typeof e&&null!==e,u=e=>"object"==typeof e&&null!==e&&"key"in e,c=e.defineComponent({__name:"BTbody",props:{variant:{default:null}},setup(t){const l=t,o=r.useDefaults(l,"BTbody"),a=e.computed((()=>({[`thead-${o.variant}`]:null!==o.variant})));return(t,l)=>(e.openBlock(),e.createElementBlock("tbody",{class:e.normalizeClass(a.value)},[e.renderSlot(t.$slots,"default")],2))}}),f=["scope","colspan","rowspan","data-label"],v={key:0},p=e.defineComponent({__name:"BTd",props:{colspan:{default:void 0},rowspan:{default:void 0},stackedHeading:{default:void 0},stickyColumn:{type:Boolean,default:!1},variant:{default:null}},setup(t){const l=t,o=r.useDefaults(l,"BTd"),a=e.computed((()=>({[`table-${o.variant}`]:null!==o.variant,"b-table-sticky-column":o.stickyColumn,"table-b-table-default":o.stickyColumn&&null===o.variant}))),n=e.computed((()=>o.colspan?"colspan":o.rowspan?"rowspan":"col"));return(t,l)=>(e.openBlock(),e.createElementBlock("td",{scope:n.value,class:e.normalizeClass(a.value),colspan:e.unref(o).colspan,rowspan:e.unref(o).rowspan,"data-label":e.unref(o).stackedHeading},[e.unref(o).stackedHeading?(e.openBlock(),e.createElementBlock("div",v,[e.renderSlot(t.$slots,"default")])):e.renderSlot(t.$slots,"default",{key:1})],10,f))}}),m=e.defineComponent({__name:"BTfoot",props:{variant:{default:null}},setup(t){const l=t,o=r.useDefaults(l,"BTfoot"),a=e.computed((()=>({[`table-${o.variant}`]:null!==o.variant})));return(t,l)=>(e.openBlock(),e.createElementBlock("tfoot",{class:e.normalizeClass(a.value)},[e.renderSlot(t.$slots,"default")],2))}}),y=["scope","colspan","rowspan","data-label"],b={key:0},k=e.defineComponent({__name:"BTh",props:{colspan:{default:void 0},rowspan:{default:void 0},stackedHeading:{default:void 0},stickyColumn:{type:Boolean,default:!1},variant:{default:null}},setup(t){const l=t,o=r.useDefaults(l,"BTh"),a=e.computed((()=>({[`table-${o.variant}`]:null!==o.variant,"b-table-sticky-column":o.stickyColumn,"table-b-table-default":o.stickyColumn&&null===o.variant}))),n=e.computed((()=>o.colspan?"colspan":o.rowspan?"rowspan":"col"));return(t,l)=>(e.openBlock(),e.createElementBlock("th",{scope:n.value,class:e.normalizeClass(a.value),colspan:e.unref(o).colspan,rowspan:e.unref(o).rowspan,"data-label":e.unref(o).stackedHeading},[void 0!==e.unref(o).stackedHeading?(e.openBlock(),e.createElementBlock("div",b,[e.renderSlot(t.$slots,"default")])):e.renderSlot(t.$slots,"default",{key:1})],10,y))}}),g=e.defineComponent({__name:"BThead",props:{variant:{default:null}},setup(t){const l=t,o=r.useDefaults(l,"BThead"),a=e.computed((()=>({[`table-${o.variant}`]:null!==o.variant})));return(t,l)=>(e.openBlock(),e.createElementBlock("thead",{class:e.normalizeClass(a.value)},[e.renderSlot(t.$slots,"default")],2))}}),h=e.defineComponent({__name:"BTr",props:{variant:{default:null}},setup(t){const l=t,o=r.useDefaults(l,"BTr"),a=e.computed((()=>({[`table-${o.variant}`]:null!==o.variant})));return(t,l)=>(e.openBlock(),e.createElementBlock("tr",{class:e.normalizeClass(a.value)},[e.renderSlot(t.$slots,"default")],2))}}),B=e=>"string"==typeof e?n.titleCase(e):void 0!==e.label?e.label:"string"==typeof e.key?n.titleCase(e.key):e.key,C=["TD","TH","TR"],w=["a","a *","button","button *","input:not(.disabled):not([disabled])","select:not(.disabled):not([disabled])","textarea:not(.disabled):not([disabled])",'[role="link"]','[role="link"] *','[role="button"]','[role="button"] *',"[tabindex]:not(.disabled):not([disabled])"].join(","),S=e=>{if(!e||!e.target)return!1;const t=e.target;if("disabled"in t&&t.disabled||-1!==C.indexOf(t.tagName))return!1;if(t.closest(".dropdown-menu"))return!0;const l="LABEL"===t.tagName?t:t.closest("label");if(l){const e=l.getAttribute("for"),t=e?document.getElementById(e):l.querySelector("input, select, textarea");if(t&&!t.disabled)return!0}return t.matches(w)},_={key:0,class:"b-table-stacked-label"},T={class:"d-inline-flex flex-nowrap align-items-center gap-1"},$={key:2},x=e.defineComponent({__name:"BTableLite",props:{align:{default:void 0},caption:{default:void 0},captionHtml:{default:void 0},detailsTdClass:{default:void 0},emptyFilteredText:{default:"There are no records matching your request"},emptyText:{default:"There are no records to show"},fieldColumnClass:{type:[Function,String,Object,Array],default:void 0},fields:{default:()=>[]},footClone:{type:Boolean,default:!1},footRowVariant:{default:void 0},footVariant:{default:void 0},headRowVariant:{default:void 0},headVariant:{default:void 0},items:{default:()=>[]},labelStacked:{type:Boolean,default:!1},modelValue:{default:void 0},primaryKey:{default:void 0},showEmpty:{type:Boolean,default:!1},tbodyClass:{default:void 0},tbodyTrAttrs:{type:[Function,Object],default:void 0},tbodyTrClass:{type:[Function,String,Array,Object],default:void 0},tfootClass:{default:void 0},tfootTrClass:{default:void 0},theadClass:{default:void 0},theadTrClass:{default:void 0},bordered:{type:Boolean,default:void 0},borderless:{type:Boolean,default:void 0},borderVariant:{default:void 0},captionTop:{type:Boolean,default:void 0},dark:{type:Boolean,default:void 0},fixed:{type:Boolean,default:void 0},hover:{type:Boolean,default:void 0},id:{default:void 0},noBorderCollapse:{type:Boolean,default:void 0},outlined:{type:Boolean,default:void 0},responsive:{type:[Boolean,String],default:void 0},small:{type:Boolean,default:void 0},stacked:{type:[Boolean,String],default:void 0},stickyHeader:{type:[Boolean,String,Number],default:void 0},striped:{type:Boolean,default:void 0},stripedColumns:{type:Boolean,default:void 0},variant:{default:void 0},tableAttrs:{},tableClass:{default:void 0}},emits:["head-clicked","row-clicked","row-dbl-clicked","row-hovered","row-unhovered"],setup(l,{emit:o}){const s=l,f=r.useDefaults(s,"BTableLite"),v=o,y=e.ref(new WeakMap);e.watch((()=>f.items),(e=>{e.forEach((e=>{i(e)&&y.value.set(...(e=>[e,e._showDetails])(e))}))}),{deep:!0,immediate:!0});const b=e.computed((()=>[f.tableClass,{[`align-${f.align}`]:void 0!==f.align}])),C=e.computed((()=>{if(!f.fields.length&&f.items.length){const[e]=f.items;return i(e)||Array.isArray(e)?Object.keys(e).map((e=>{const t=n.startCase(e);return{key:e,label:t,tdAttr:!0===f.stacked?{"data-label":t}:void 0}})):[{key:"",_noHeader:!0}]}return f.fields.map((e=>{if(u(e))return{...e,tdAttr:!0===f.stacked?{"data-label":n.startCase(e.key),...e.tdAttr}:e.tdAttr};const t=n.startCase(e);return{key:e,label:t,tdAttr:!0===f.stacked?{"data-label":t}:void 0}}))})),w=e.computed((()=>C.value.length)),x=e.computed((()=>!(C.value.length>0&&C.value.every((e=>!0===e._noHeader))))),V=(e,l,o)=>{const a=String(l.key),r=t.get(e,a);return l.thAttr&&"function"==typeof l.thAttr?l.thAttr(r,a,e,o):l.thAttr},N=(e,t,l=!1)=>{v("head-clicked",e.key,e,t,l)},P=e=>{if(i(e)){const t=y.value.get(e);y.value.set(e,!t),e._showDetails=!t}},E=e=>[e.class,e.thClass,{"b-table-sticky-column":e.stickyColumn},f.fieldColumnClass?"function"==typeof f.fieldColumnClass?f.fieldColumnClass(e):f.fieldColumnClass:null],A=(e,l)=>{var o,a;const r=t.get(l,String(e.key));return[e.class,"function"==typeof e.tdClass?e.tdClass(r,String(e.key),l):e.tdClass,i(l)&&(null==(o=l._cellVariants)?void 0:o[e.key])?`table-${null==(a=l._cellVariants)?void 0:a[e.key]}`:null,{"b-table-sticky-column":e.stickyColumn}]},D=(e,t)=>f.tbodyTrAttrs?"function"==typeof f.tbodyTrAttrs?f.tbodyTrAttrs(e,t):f.tbodyTrAttrs:null,F=(e,t)=>f.tbodyTrClass?"function"==typeof f.tbodyTrClass?f.tbodyTrClass(e,t):f.tbodyTrClass:null;return(l,o)=>(e.openBlock(),e.createBlock(a._sfc_main,{id:e.unref(f).id,bordered:e.unref(f).bordered,borderless:e.unref(f).borderless,"border-variant":e.unref(f).borderVariant,"caption-top":e.unref(f).captionTop,dark:e.unref(f).dark,fixed:e.unref(f).fixed,hover:e.unref(f).hover,"no-border-collapse":e.unref(f).noBorderCollapse,outlined:e.unref(f).outlined,responsive:e.unref(f).responsive,small:e.unref(f).small,stacked:e.unref(f).stacked,"sticky-header":e.unref(f).stickyHeader,striped:e.unref(f).striped,"table-class":b.value,variant:e.unref(f).variant,"striped-columns":e.unref(f).stripedColumns},{default:e.withCtx((()=>[e.withDirectives(e.createVNode(g,{variant:e.unref(f).headVariant,class:e.normalizeClass(e.unref(f).theadClass)},{default:e.withCtx((()=>[l.$slots["thead-top"]?e.renderSlot(l.$slots,"thead-top",{key:0}):e.createCommentVNode("",!0),e.createVNode(h,{variant:e.unref(f).headRowVariant,class:e.normalizeClass(e.unref(f).theadTrClass)},{default:e.withCtx((()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(C.value,(t=>(e.openBlock(),e.createBlock(k,e.mergeProps({key:t.key,scope:"col",class:E(t),title:t.headerTitle,variant:t.variant,abbr:t.headerAbbr,style:t.thStyle,ref_for:!0},V(null,t,"top"),{onClick:e=>N(t,e)}),{default:e.withCtx((()=>[e.renderSlot(l.$slots,l.$slots[`head(${String(t.key)})`]?`head(${String(t.key)})`:"head()",{label:t.label,column:t.key,field:t,isFoot:!1},(()=>[e.createTextVNode(e.toDisplayString(e.unref(B)(t)),1)]))])),_:2},1040,["class","title","variant","abbr","style","onClick"])))),128))])),_:3},8,["variant","class"]),l.$slots["thead-sub"]?(e.openBlock(),e.createBlock(h,{key:1},{default:e.withCtx((()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(C.value,(t=>(e.openBlock(),e.createBlock(p,{key:t.key,scope:"col",variant:t.variant,class:e.normalizeClass([t.class,t.thClass])},{default:e.withCtx((()=>[e.renderSlot(l.$slots,"thead-sub",e.mergeProps({items:C.value,ref_for:!0},t),(()=>[e.createTextVNode(e.toDisplayString(t.label),1)]))])),_:2},1032,["variant","class"])))),128))])),_:3})):e.createCommentVNode("",!0)])),_:3},8,["variant","class"]),[[e.vShow,x.value]]),e.createVNode(c,{class:e.normalizeClass(e.unref(f).tbodyClass)},{default:e.withCtx((()=>[e.renderSlot(l.$slots,"custom-body",{fields:C.value,items:e.unref(f).items,columns:C.value.length},(()=>[!e.unref(f).stacked&&l.$slots["top-row"]?(e.openBlock(),e.createBlock(h,e.mergeProps({key:0,class:F(null,"row-top")},D(null,"row-top")),{default:e.withCtx((()=>[e.renderSlot(l.$slots,"top-row")])),_:3},16,["class"])):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(f).items,((o,a)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:e.unref(f).primaryKey?e.unref(t.get)(o,e.unref(f).primaryKey):a},[e.createVNode(h,e.mergeProps({class:F(o,"row"),variant:e.unref(i)(o)?o._rowVariant:void 0,ref_for:!0},D(o,"row"),{onClick:t=>!e.unref(S)(t)&&v("row-clicked",o,a,t),onDblclick:t=>!e.unref(S)(t)&&v("row-dbl-clicked",o,a,t),onMouseenter:t=>!e.unref(S)(t)&&v("row-hovered",o,a,t),onMouseleave:t=>!e.unref(S)(t)&&v("row-unhovered",o,a,t)}),{default:e.withCtx((()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(C.value,(r=>{var n;return e.openBlock(),e.createBlock(p,e.mergeProps({key:r.key,variant:e.unref(i)(o)&&(null==(n=o._cellVariants)?void 0:n[r.key])?null:r.variant,class:A(r,o),ref_for:!0},((e,l,o)=>{const a=t.get(e,l);return o&&"function"==typeof o?o(a,l,e):o})(o,String(r.key),r.tdAttr)),{default:e.withCtx((()=>[e.unref(f).stacked&&e.unref(f).labelStacked?(e.openBlock(),e.createElementBlock("label",_,e.toDisplayString(e.unref(B)(r)),1)):e.createCommentVNode("",!0),e.renderSlot(l.$slots,l.$slots[`cell(${String(r.key)})`]?`cell(${String(r.key)})`:"cell()",{value:e.unref(d)(o,String(r.key),r.formatter),unformatted:e.unref(t.get)(o,String(r.key)),index:a,item:o,field:r,items:l.items,toggleDetails:()=>{P(o)},detailsShowing:!!e.unref(i)(o)&&(y.value.get(o)??!1)},(()=>[l.$slots[`cell(${String(r.key)})`]||l.$slots["cell()"]?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(e.unref(d)(o,String(r.key),r.formatter)),1)],64))]))])),_:2},1040,["variant","class"])})),128))])),_:2},1040,["class","variant","onClick","onDblclick","onMouseenter","onMouseleave"]),e.unref(i)(o)&&!0===y.value.get(o)&&l.$slots["row-details"]?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createVNode(h,{"aria-hidden":"true",role:"presentation",class:"d-none"}),e.createVNode(h,e.mergeProps({class:F(o,"row-details"),variant:o._rowVariant,ref_for:!0},D(o,"row-details")),{default:e.withCtx((()=>[e.createVNode(p,{colspan:w.value,class:e.normalizeClass(l.detailsTdClass)},{default:e.withCtx((()=>[e.renderSlot(l.$slots,"row-details",{item:o,toggleDetails:()=>{P(o)},fields:e.unref(f).fields,index:a})])),_:2},1032,["colspan","class"])])),_:2},1040,["class","variant"])],64)):e.createCommentVNode("",!0)],64)))),128)),e.unref(f).showEmpty&&0===e.unref(f).items.length?(e.openBlock(),e.createBlock(h,{key:1,class:"b-table-empty-slot"},{default:e.withCtx((()=>[e.createVNode(p,{colspan:w.value},{default:e.withCtx((()=>[e.renderSlot(l.$slots,"empty",{items:e.unref(f).items},(()=>[e.createTextVNode(e.toDisplayString(e.unref(f).emptyText),1)]))])),_:3},8,["colspan"])])),_:3})):e.createCommentVNode("",!0),!e.unref(f).stacked&&l.$slots["bottom-row"]?(e.openBlock(),e.createBlock(h,e.mergeProps({key:2,class:["bottom-row",F(null,"row-bottom")]},D(null,"row-bottom")),{default:e.withCtx((()=>[e.renderSlot(l.$slots,"bottom-row")])),_:3},16,["class"])):e.createCommentVNode("",!0)]))])),_:3},8,["class"]),e.unref(f).footClone?(e.openBlock(),e.createBlock(m,{key:0,variant:e.unref(f).footVariant,class:e.normalizeClass(e.unref(f).tfootClass)},{default:e.withCtx((()=>[e.createVNode(h,{variant:e.unref(f).footRowVariant,class:e.normalizeClass(e.unref(f).tfootTrClass)},{default:e.withCtx((()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(C.value,(t=>(e.openBlock(),e.createBlock(k,e.mergeProps({key:t.key,scope:"col",class:E(t),title:t.headerTitle,abbr:t.headerAbbr,style:t.thStyle,variant:t.variant,ref_for:!0},V(null,t,"bottom"),{onClick:e=>N(t,e,!0)}),{default:e.withCtx((()=>[e.createElementVNode("div",T,[e.createElementVNode("div",null,[e.renderSlot(l.$slots,l.$slots[`foot(${String(t.key)})`]?`foot(${String(t.key)})`:"foot()",{label:t.label,column:t.key,field:t,isFoot:!0},(()=>[e.createTextVNode(e.toDisplayString(e.unref(B)(t)),1)]))])])])),_:2},1040,["class","title","abbr","style","variant","onClick"])))),128))])),_:3},8,["variant","class"])])),_:3},8,["variant","class"])):l.$slots["custom-foot"]?(e.openBlock(),e.createBlock(m,{key:1},{default:e.withCtx((()=>[e.renderSlot(l.$slots,"custom-foot",{fields:C.value,items:e.unref(f).items,columns:C.value.length})])),_:3})):e.createCommentVNode("",!0),l.$slots["table-caption"]||e.unref(f).caption?(e.openBlock(),e.createElementBlock("caption",$,[e.renderSlot(l.$slots,"table-caption",{},(()=>[e.createTextVNode(e.toDisplayString(e.unref(f).caption),1)]))])):e.createCommentVNode("",!0)])),_:3},8,["id","bordered","borderless","border-variant","caption-top","dark","fixed","hover","no-border-collapse","outlined","responsive","small","stacked","sticky-header","striped","table-class","variant","striped-columns"]))}}),V={style:{opacity:.4},xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",fill:"currentColor",class:"bi bi-arrow-up-short",viewBox:"0 0 16 16","aria-hidden":""},N={class:"d-flex align-items-center gap-2 mt-5"},P=e.defineComponent({__name:"BTable",props:e.mergeModels({provider:{default:void 0},noProvider:{default:void 0},noProviderPaging:{type:Boolean,default:!1},noProviderSorting:{type:Boolean,default:!1},noProviderFiltering:{type:Boolean,default:!1},mustSort:{type:[Boolean,Array],default:!1},selectable:{type:Boolean,default:!1},multisort:{type:Boolean,default:!1},stickySelect:{type:Boolean,default:!1},selectHead:{type:[Boolean,String],default:!0},selectMode:{default:"multi"},selectionVariant:{default:"primary"},busyLoadingText:{default:"Loading..."},perPage:{default:Number.POSITIVE_INFINITY},currentPage:{default:1},filter:{default:void 0},filterable:{default:void 0},noLocalSorting:{type:Boolean,default:!1},noSelectOnClick:{type:Boolean,default:!1},noSortableIcon:{type:Boolean,default:!1},align:{default:void 0},caption:{default:void 0},captionHtml:{default:void 0},detailsTdClass:{default:void 0},emptyFilteredText:{default:void 0},emptyText:{default:void 0},fieldColumnClass:{type:[Function,String,Object,Array],default:void 0},fields:{default:()=>[]},footClone:{type:Boolean,default:void 0},footRowVariant:{default:void 0},footVariant:{default:void 0},headRowVariant:{default:void 0},headVariant:{default:void 0},items:{default:()=>[]},labelStacked:{type:Boolean,default:void 0},modelValue:{default:void 0},primaryKey:{default:void 0},showEmpty:{type:Boolean,default:void 0},tbodyClass:{default:void 0},tbodyTrAttrs:{},tbodyTrClass:{type:[Function,String,Array,Object],default:void 0},tfootClass:{default:void 0},tfootTrClass:{default:void 0},theadClass:{default:void 0},theadTrClass:{default:void 0},bordered:{type:Boolean,default:void 0},borderless:{type:Boolean,default:void 0},borderVariant:{default:void 0},captionTop:{type:Boolean,default:void 0},dark:{type:Boolean,default:void 0},fixed:{type:Boolean,default:void 0},hover:{type:Boolean,default:void 0},id:{default:void 0},noBorderCollapse:{type:Boolean,default:void 0},outlined:{type:Boolean,default:void 0},responsive:{type:[Boolean,String],default:void 0},small:{type:Boolean,default:void 0},stacked:{type:[Boolean,String],default:void 0},stickyHeader:{type:[Boolean,String,Number],default:void 0},striped:{type:Boolean,default:void 0},stripedColumns:{type:Boolean,default:void 0},variant:{default:void 0},tableAttrs:{}},{sortBy:{default:void 0},sortByModifiers:{},busy:{type:Boolean,default:!1},busyModifiers:{},selectedItems:{default:()=>[]},selectedItemsModifiers:{}}),emits:e.mergeModels(["filtered","head-clicked","row-clicked","row-dbl-clicked","row-hovered","row-unhovered","row-selected","row-unselected","sorted","change"],["update:sortBy","update:busy","update:selectedItems"]),setup(a,{expose:c,emit:f}){const v=a,m=r.useDefaults(v,"BTable"),y=f,b=e.useModel(a,"sortBy"),k=e.useModel(a,"busy"),g=e.useModel(a,"selectedItems"),C=e.computed({get:()=>new Set([...g.value]),set:e=>{g.value=[...e]}}),w={add:e=>{const t=new Set(C.value);t.add(e),C.value=t,y("row-selected",e)},clear:()=>{C.value.forEach((e=>{w.delete(e)}))},delete:e=>{const l=new Set(C.value);if(m.primaryKey){const o=m.primaryKey;g.value.forEach(((a,r)=>{const n=t.get(a,o),s=t.get(e,o);n&&s&&n===s&&l.delete(g.value[r])}))}else l.delete(e);C.value=l,y("row-unselected",e)},set:e=>{C.value=new Set(e),C.value.forEach((e=>{y("row-unselected",e)}))},has:e=>{if(!m.primaryKey)return C.value.has(e);const l=m.primaryKey;for(const o of C.value){const a=t.get(o,l),r=t.get(e,l);if(a&&r&&a===r)return!0}return!1}},S=e.ref([]),_=s.useToNumber((()=>m.perPage),{method:"parseInt"}),T=s.useToNumber((()=>m.currentPage),{method:"parseInt"}),$=e.computed((()=>!!m.filter)),P=e.computed((()=>void 0!==m.provider)),E=e.computed((()=>C.value.size>0)),A=e.computed((()=>void 0!==b.value||m.fields.some((e=>"object"==typeof e&&null!==e&&!0===e.sortable)))),D=e.computed((()=>m.fields.map((e=>{var t;if(!u(e)){const t=n.startCase(e);return{key:e,label:t,tdAttr:!0===m.stacked?{"data-label":t}:void 0}}const l=null==(t=b.value)?void 0:t.find((t=>e.key===t.key)),o=!1===A.value?void 0:void 0===l?"none":"desc"===l.order?"descending":"asc"===l.order?"ascending":"none";return{...e,thAttr:{"aria-sort":o,...e.thAttr}}})))),F=e.computed((()=>({"b-table-busy":k.value,"b-table-selectable":m.selectable,"user-select-none":m.selectable&&E.value}))),j=e.computed((()=>[m.tbodyTrClass?"function"==typeof m.tbodyTrClass?m.tbodyTrClass(null,"table-busy"):m.tbodyTrClass:null])),I=e=>[{"b-table-sortable-column":A.value&&e.sortable}],z=(e,t)=>[{[`selected table-${m.selectionVariant}`]:m.selectable&&!!e&&w.has(e)},m.tbodyTrClass?"function"==typeof m.tbodyTrClass?m.tbodyTrClass(e,t):m.tbodyTrClass:null],M=e.computed((()=>{let e=P.value?S.value:m.items;return e=e.map((e=>{if("object"==typeof e&&null!==e&&Object.keys(e).some((e=>e.includes(".")))){let l={};for(const o in e)o.includes(".")?l=t.set(l,o,e[o]):l[o]=e[o];return l}return e})),(!0===$.value&&!P.value||!0===$.value&&P.value&&m.noProviderFiltering)&&(e=e.filter((e=>!i(e)||Object.entries(e).some((([t,l])=>{var o,a,r;return!(null==l||"_"===t[0]||!(null==(o=m.filterable)?void 0:o.includes(t))&&(null==(a=m.filterable)?void 0:a.length))&&(()=>{const o=D.value.find((e=>!!u(e)&&e.key===t));if(u(o)&&o.filterByFormatted){const t="function"==typeof o.filterByFormatted?o.filterByFormatted:o.formatter;if(t)return t(l,String(o.key),e)}return"object"==typeof l?JSON.stringify(Object.values(l)):l.toString()})().toLowerCase().includes((null==(r=m.filter)?void 0:r.toLowerCase())??"")}))))),(!0===A.value&&!P.value&&!m.noLocalSorting||!0===A.value&&P.value&&m.noProviderSorting)&&(e=(e=>{var l;const o=null==(l=b.value)?void 0:l.filter((e=>!!e.order));return o&&0!==o.length?[...e].sort(((e,l)=>{for(let a=0;a<(o.length??0);a++){const r=o[a],n=e=>{if(!i(e))return String(e);const l=D.value.find((e=>!!u(e)&&e.key===r.key)),o=t.get(e,r.key);if(u(l)&&l.sortByFormatted){const t="function"==typeof l.sortByFormatted?l.sortByFormatted:l.formatter;if(t)return d(e,String(l.key),t)}return"object"==typeof o&&null!==o?JSON.stringify(o):(null==o?void 0:o.toString())??""},s=n(e),c=n(l),f=r.comparer?r.comparer(s,c):s.localeCompare(c,void 0,{numeric:!0});if(0!==f)return"asc"===r.order?f:-f}return 0})):e})(e)),e})),L=e.computed((()=>Number.isNaN(_.value)||P.value&&!m.noProviderPaging?M.value:M.value.slice((T.value-1)*(_.value||Number.POSITIVE_INFINITY),T.value*(_.value||Number.POSITIVE_INFINITY))));e.watch(L,(e=>{y("change",e)}));const O=(e,t,l)=>{!1===m.noSelectOnClick&&((e,t,l=!1,o=!1,a=!1)=>{if(m.selectable)if("single"===m.selectMode||"multi"===m.selectMode){if(l||o)return;w.has(e)?w.delete(e):"single"===m.selectMode?w.set([e]):w.add(e)}else if(o||a)w.has(e)?w.delete(e):w.add(e);else if(l){const e=[...C.value].pop(),l=m.items.findIndex((t=>t===e)),o=Math.min(l,t),a=Math.max(l,t),r=m.items.slice(o,a+1);w.set(r)}else w.set([e])})(e,t,l.shiftKey,l.ctrlKey,l.metaKey),y("row-clicked",e,t,l)},H=(e,t,l,o=!1)=>{y("head-clicked",e,t,l,o),(e=>{var t,l;if(!A.value)return;const o="object"==typeof e&&null!==e?e.key:e,a="object"==typeof e&&null!==e&&e.sortable;if(!0!==A.value||!0!==a)return;const r=e=>"asc"===e?"desc":void 0===e||!0===m.mustSort||Array.isArray(m.mustSort)&&m.mustSort.includes(o)?"asc":void 0,n=(null==(t=b.value)?void 0:t.findIndex((e=>e.key===o)))??-1,s=null==(l=b.value)?void 0:l[n],d=-1!==n&&s?{...s}:{key:o,order:"asc"};y("sorted",!0===m.multisort?(()=>{var e,t;let l=d;if(-1===n)b.value=[...b.value??[],d];else{const o=r(d.order);l={...d,order:o},b.value=o?null==(e=b.value)?void 0:e.map((e=>e.key===l.key?l:e)):null==(t=b.value)?void 0:t.filter((e=>e.key!==l.key))}return l})():(()=>{const e={...d,order:-1===n?d.order:r(d.order)};return b.value=[e],e})())})(t)},R=async()=>{if(!P.value||void 0===m.provider||k.value)return;k.value=!0;const e=m.provider({currentPage:T.value,filter:m.filter,sortBy:b.value,perPage:_.value});try{const t=e instanceof Promise?await e:e;if(void 0===t)return;S.value=t}finally{k.value=!1}},K=async(e,t,l)=>{if(t===l)return;const o=e=>{var t;return!0===(null==(t=m.noProvider)?void 0:t.includes(e))},a=("currentPage"===e||"perPage"===e)&&(o("paging")||!0===m.noProviderPaging),r="filter"===e&&(o("filtering")||!0===m.noProviderFiltering),n=("sortBy"===e||"sortDesc"===e)&&(o("sorting")||!0===m.noProviderSorting);a||r||n||(!0===P.value&&await R(),"currentPage"!==e&&"perPage"!==e&&y("filtered",[...M.value]))};return e.watch((()=>m.filter),((e,t)=>{K("filter",e,t),e===t||P.value||e||y("filtered",[...M.value])})),e.watch(T,((e,t)=>{K("currentPage",e,t)})),e.watch(_,((e,t)=>{K("perPage",e,t)})),e.watch(b,((e,t)=>{K("sortBy",e,t)}),{deep:!0}),e.watch((()=>m.provider),(e=>{void 0!==e?R():S.value=[]})),e.onMounted(R),c({clearSelected:()=>{m.selectable&&w.clear()},refresh:R,selectAllRows:()=>{if(!m.selectable)return;const e=C.value.size>0?[...C.value]:[];C.value=new Set([...M.value]),C.value.forEach((t=>{e.includes(t)||y("row-selected",t)}))},selectRow:e=>{if(!m.selectable)return;const t=M.value[e];t&&!w.has(t)&&w.add(t)},unselectRow:e=>{if(!m.selectable)return;const t=M.value[e];t&&w.has(t)&&w.delete(t)},isRowSelected:e=>{if(!m.selectable)return!1;const t=M.value[e];return w.has(t)}}),(t,a)=>(e.openBlock(),e.createBlock(x,e.mergeProps(e.unref(m),{"aria-busy":k.value,items:L.value,fields:D.value,"table-class":F.value,"tbody-tr-class":z,"field-column-class":I,onHeadClicked:H,onRowDblClicked:a[0]||(a[0]=(e,t,l)=>{y("row-dbl-clicked",e,t,l)}),onRowClicked:O,onRowHovered:a[1]||(a[1]=(e,t,l)=>{y("row-hovered",e,t,l)}),onRowUnhovered:a[2]||(a[2]=(e,t,l)=>{y("row-unhovered",e,t,l)})}),e.createSlots({"custom-body":e.withCtx((a=>[k.value?(e.openBlock(),e.createBlock(h,{key:0,class:e.normalizeClass(["b-table-busy-slot",j.value])},{default:e.withCtx((()=>[e.createVNode(p,{colspan:a.fields.length},{default:e.withCtx((()=>[e.renderSlot(t.$slots,"table-busy",{},(()=>[e.createVNode(l._sfc_main,{show:""},{overlay:e.withCtx((()=>[e.createElementVNode("div",N,[e.createVNode(o._sfc_main),e.createElementVNode("strong",null,e.toDisplayString(e.unref(m).busyLoadingText),1)])])),_:1})]))])),_:2},1032,["colspan"])])),_:2},1032,["class"])):e.createCommentVNode("",!0)])),_:2},[e.renderList(t.$slots,((l,o)=>({name:o,fn:e.withCtx((l=>[e.renderSlot(t.$slots,o,e.normalizeProps(e.guardReactiveProps(l)))]))}))),e.renderList(D.value,(l=>({name:`head(${String(l.key)})`,fn:e.withCtx((o=>{var r,n,s,d;return[e.renderSlot(t.$slots,t.$slots[`head(${String(l.key)})`]?`head(${String(l.key)})`:"head()",e.normalizeProps(e.guardReactiveProps(o)),(()=>[e.createTextVNode(e.toDisplayString(e.unref(B)(l)),1)])),A.value&&o.field.sortable&&!1===e.unref(m).noSortableIcon?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},["asc"===(null==(n=null==(r=b.value)?void 0:r.find((e=>e.key===o.field.key)))?void 0:n.order)?e.renderSlot(t.$slots,t.$slots[`sortAsc(${String(o.field.key)})`]?`sortAsc(${String(o.field.key)})`:"sortAsc()",e.normalizeProps(e.mergeProps({key:0},{...o})),(()=>[a[3]||(a[3]=e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",fill:"currentColor",class:"bi bi-arrow-up-short",viewBox:"0 0 16 16","aria-hidden":""},[e.createElementVNode("path",{"fill-rule":"evenodd",d:"M8 12a.5.5 0 0 0 .5-.5V5.707l2.146 2.147a.5.5 0 0 0 .708-.708l-3-3a.5.5 0 0 0-.708 0l-3 3a.5.5 0 1 0 .708.708L7.5 5.707V11.5a.5.5 0 0 0 .5.5z"})],-1))])):"desc"===(null==(d=null==(s=b.value)?void 0:s.find((e=>e.key===o.field.key)))?void 0:d.order)?e.renderSlot(t.$slots,t.$slots[`sortDesc(${String(o.field.key)})`]?`sortDesc(${String(o.field.key)})`:"sortDesc()",e.normalizeProps(e.mergeProps({key:1},{...o})),(()=>[a[4]||(a[4]=e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",fill:"currentColor",class:"bi bi-arrow-down-short",viewBox:"0 0 16 16","aria-hidden":""},[e.createElementVNode("path",{"fill-rule":"evenodd",d:"M8 4a.5.5 0 0 1 .5.5v5.793l2.146-2.147a.5.5 0 0 1 .708.708l-3 3a.5.5 0 0 1-.708 0l-3-3a.5.5 0 1 1 .708-.708L7.5 10.293V4.5A.5.5 0 0 1 8 4z"})],-1))])):e.renderSlot(t.$slots,t.$slots[`sortDefault(${String(o.field.key)})`]?`sortDefault(${String(o.field.key)})`:"sortDefault()",e.normalizeProps(e.mergeProps({key:2},{...o})),(()=>[(e.openBlock(),e.createElementBlock("svg",V,a[5]||(a[5]=[e.createElementVNode("path",{"fill-rule":"evenodd",d:"M8 12a.5.5 0 0 0 .5-.5V5.707l2.146 2.147a.5.5 0 0 0 .708-.708l-3-3a.5.5 0 0 0-.708 0l-3 3a.5.5 0 1 0 .708.708L7.5 5.707V11.5a.5.5 0 0 0 .5.5z"},null,-1)])))]))],64)):e.createCommentVNode("",!0)]}))})))]),1040,["aria-busy","items","fields","table-class"]))}});exports._sfc_main=P,exports._sfc_main$1=x,exports._sfc_main$2=c,exports._sfc_main$3=p,exports._sfc_main$4=m,exports._sfc_main$5=k,exports._sfc_main$6=g,exports._sfc_main$7=h;
2
- //# sourceMappingURL=BTable.vue_vue_type_script_setup_true_lang-DJaXQe4Y.js.map
1
+ "use strict";const e=require("vue"),t=require("./object-B-6ddRYH.js"),l=require("./BOverlay.vue_vue_type_script_setup_true_lang-ikelLajh.js"),o=require("./BSpinner.vue_vue_type_script_setup_true_lang-BpcS7-mY.js"),a=require("./BTableSimple.vue_vue_type_script_setup_true_lang-Cybz9eNN.js"),r=require("./useDefaults-C2groUjC.js"),n=require("./stringUtils-D2ajpVM0.js"),s=require("./index-BInTFWT4.js"),d=(e,l,o)=>{const a=t.get(e,l);return o&&"function"==typeof o?o(a,l,e):a},i=e=>"object"==typeof e&&null!==e,u=e=>"object"==typeof e&&null!==e&&"key"in e,c=e.defineComponent({__name:"BTbody",props:{variant:{default:null}},setup(t){const l=t,o=r.useDefaults(l,"BTbody"),a=e.computed((()=>({[`thead-${o.variant}`]:null!==o.variant})));return(t,l)=>(e.openBlock(),e.createElementBlock("tbody",{class:e.normalizeClass(a.value)},[e.renderSlot(t.$slots,"default")],2))}}),f=["scope","colspan","rowspan","data-label"],v={key:0},p=e.defineComponent({__name:"BTd",props:{colspan:{default:void 0},rowspan:{default:void 0},stackedHeading:{default:void 0},stickyColumn:{type:Boolean,default:!1},variant:{default:null}},setup(t){const l=t,o=r.useDefaults(l,"BTd"),a=e.computed((()=>({[`table-${o.variant}`]:null!==o.variant,"b-table-sticky-column":o.stickyColumn,"table-b-table-default":o.stickyColumn&&null===o.variant}))),n=e.computed((()=>o.colspan?"colspan":o.rowspan?"rowspan":"col"));return(t,l)=>(e.openBlock(),e.createElementBlock("td",{scope:n.value,class:e.normalizeClass(a.value),colspan:e.unref(o).colspan,rowspan:e.unref(o).rowspan,"data-label":e.unref(o).stackedHeading},[e.unref(o).stackedHeading?(e.openBlock(),e.createElementBlock("div",v,[e.renderSlot(t.$slots,"default")])):e.renderSlot(t.$slots,"default",{key:1})],10,f))}}),y=e.defineComponent({__name:"BTfoot",props:{variant:{default:null}},setup(t){const l=t,o=r.useDefaults(l,"BTfoot"),a=e.computed((()=>({[`table-${o.variant}`]:null!==o.variant})));return(t,l)=>(e.openBlock(),e.createElementBlock("tfoot",{class:e.normalizeClass(a.value)},[e.renderSlot(t.$slots,"default")],2))}}),m=["scope","colspan","rowspan","data-label"],b={key:0},k=e.defineComponent({__name:"BTh",props:{colspan:{default:void 0},rowspan:{default:void 0},stackedHeading:{default:void 0},stickyColumn:{type:Boolean,default:!1},variant:{default:null}},setup(t){const l=t,o=r.useDefaults(l,"BTh"),a=e.computed((()=>({[`table-${o.variant}`]:null!==o.variant,"b-table-sticky-column":o.stickyColumn,"table-b-table-default":o.stickyColumn&&null===o.variant}))),n=e.computed((()=>o.colspan?"colspan":o.rowspan?"rowspan":"col"));return(t,l)=>(e.openBlock(),e.createElementBlock("th",{scope:n.value,class:e.normalizeClass(a.value),colspan:e.unref(o).colspan,rowspan:e.unref(o).rowspan,"data-label":e.unref(o).stackedHeading},[void 0!==e.unref(o).stackedHeading?(e.openBlock(),e.createElementBlock("div",b,[e.renderSlot(t.$slots,"default")])):e.renderSlot(t.$slots,"default",{key:1})],10,m))}}),g=e.defineComponent({__name:"BThead",props:{variant:{default:null}},setup(t){const l=t,o=r.useDefaults(l,"BThead"),a=e.computed((()=>({[`table-${o.variant}`]:null!==o.variant})));return(t,l)=>(e.openBlock(),e.createElementBlock("thead",{class:e.normalizeClass(a.value)},[e.renderSlot(t.$slots,"default")],2))}}),h=e.defineComponent({__name:"BTr",props:{variant:{default:null}},setup(t){const l=t,o=r.useDefaults(l,"BTr"),a=e.computed((()=>({[`table-${o.variant}`]:null!==o.variant})));return(t,l)=>(e.openBlock(),e.createElementBlock("tr",{class:e.normalizeClass(a.value)},[e.renderSlot(t.$slots,"default")],2))}}),B=e=>"string"==typeof e?n.titleCase(e):void 0!==e.label?e.label:"string"==typeof e.key?n.titleCase(e.key):e.key,C=["TD","TH","TR"],w=["a","a *","button","button *","input:not(.disabled):not([disabled])","select:not(.disabled):not([disabled])","textarea:not(.disabled):not([disabled])",'[role="link"]','[role="link"] *','[role="button"]','[role="button"] *',"[tabindex]:not(.disabled):not([disabled])"].join(","),S=e=>{if(!e||!e.target)return!1;const t=e.target;if("disabled"in t&&t.disabled||-1!==C.indexOf(t.tagName))return!1;if(t.closest(".dropdown-menu"))return!0;const l="LABEL"===t.tagName?t:t.closest("label");if(l){const e=l.getAttribute("for"),t=e?document.getElementById(e):l.querySelector("input, select, textarea");if(t&&!t.disabled)return!0}return t.matches(w)},_={key:0,class:"b-table-stacked-label"},T={class:"d-inline-flex flex-nowrap align-items-center gap-1"},$={key:2},x=e.defineComponent({__name:"BTableLite",props:{align:{default:void 0},caption:{default:void 0},captionHtml:{default:void 0},detailsTdClass:{default:void 0},emptyFilteredText:{default:"There are no records matching your request"},emptyText:{default:"There are no records to show"},fieldColumnClass:{type:[Function,String,Object,Array],default:void 0},fields:{default:()=>[]},footClone:{type:Boolean,default:!1},footRowVariant:{default:void 0},footVariant:{default:void 0},headRowVariant:{default:void 0},headVariant:{default:void 0},items:{default:()=>[]},labelStacked:{type:Boolean,default:!1},modelValue:{default:void 0},primaryKey:{default:void 0},showEmpty:{type:Boolean,default:!1},tbodyClass:{default:void 0},tbodyTrAttrs:{type:[Function,Object],default:void 0},tbodyTrClass:{type:[Function,String,Array,Object],default:void 0},tfootClass:{default:void 0},tfootTrClass:{default:void 0},theadClass:{default:void 0},theadTrClass:{default:void 0},bordered:{type:Boolean,default:void 0},borderless:{type:Boolean,default:void 0},borderVariant:{default:void 0},captionTop:{type:Boolean,default:void 0},dark:{type:Boolean,default:void 0},fixed:{type:Boolean,default:void 0},hover:{type:Boolean,default:void 0},id:{default:void 0},noBorderCollapse:{type:Boolean,default:void 0},outlined:{type:Boolean,default:void 0},responsive:{type:[Boolean,String],default:void 0},small:{type:Boolean,default:void 0},stacked:{type:[Boolean,String],default:void 0},stickyHeader:{type:[Boolean,String,Number],default:void 0},striped:{type:Boolean,default:void 0},stripedColumns:{type:Boolean,default:void 0},variant:{default:void 0},tableAttrs:{},tableClass:{default:void 0}},emits:["head-clicked","row-clicked","row-dbl-clicked","row-hovered","row-unhovered"],setup(l,{emit:o}){const s=l,f=r.useDefaults(s,"BTableLite"),v=o,m=e.ref(new WeakMap);e.watch((()=>f.items),(e=>{e.forEach((e=>{i(e)&&m.value.set(...(e=>[e,e._showDetails])(e))}))}),{deep:!0,immediate:!0});const b=e.computed((()=>[f.tableClass,{[`align-${f.align}`]:void 0!==f.align}])),C=e.computed((()=>{if(!f.fields.length&&f.items.length){const[e]=f.items;return i(e)||Array.isArray(e)?Object.keys(e).map((e=>{const t=n.startCase(e);return{key:e,label:t,tdAttr:!0===f.stacked?{"data-label":t}:void 0}})):[{key:"",_noHeader:!0}]}return f.fields.map((e=>{if(u(e))return{...e,tdAttr:!0===f.stacked?{"data-label":n.startCase(e.key),...e.tdAttr}:e.tdAttr};const t=n.startCase(e);return{key:e,label:t,tdAttr:!0===f.stacked?{"data-label":t}:void 0}}))})),w=e.computed((()=>C.value.length)),x=e.computed((()=>!(C.value.length>0&&C.value.every((e=>!0===e._noHeader))))),V=(e,l,o)=>{const a=String(l.key),r=t.get(e,a);return l.thAttr&&"function"==typeof l.thAttr?l.thAttr(r,a,e,o):l.thAttr},N=(e,t,l=!1)=>{v("head-clicked",e.key,e,t,l)},P=e=>{if(i(e)){const t=m.value.get(e);m.value.set(e,!t),e._showDetails=!t}},E=e=>[e.class,e.thClass,{"b-table-sticky-column":e.stickyColumn},f.fieldColumnClass?"function"==typeof f.fieldColumnClass?f.fieldColumnClass(e):f.fieldColumnClass:null],A=(e,l)=>{var o,a;const r=t.get(l,String(e.key));return[e.class,"function"==typeof e.tdClass?e.tdClass(r,String(e.key),l):e.tdClass,i(l)&&(null==(o=l._cellVariants)?void 0:o[e.key])?`table-${null==(a=l._cellVariants)?void 0:a[e.key]}`:null,{"b-table-sticky-column":e.stickyColumn}]},D=(e,t)=>f.tbodyTrAttrs?"function"==typeof f.tbodyTrAttrs?f.tbodyTrAttrs(e,t):f.tbodyTrAttrs:null,F=(e,t)=>f.tbodyTrClass?"function"==typeof f.tbodyTrClass?f.tbodyTrClass(e,t):f.tbodyTrClass:null;return(l,o)=>(e.openBlock(),e.createBlock(a._sfc_main,{id:e.unref(f).id,bordered:e.unref(f).bordered,borderless:e.unref(f).borderless,"border-variant":e.unref(f).borderVariant,"caption-top":e.unref(f).captionTop,dark:e.unref(f).dark,fixed:e.unref(f).fixed,hover:e.unref(f).hover,"no-border-collapse":e.unref(f).noBorderCollapse,outlined:e.unref(f).outlined,responsive:e.unref(f).responsive,small:e.unref(f).small,stacked:e.unref(f).stacked,"sticky-header":e.unref(f).stickyHeader,striped:e.unref(f).striped,"table-class":b.value,variant:e.unref(f).variant,"striped-columns":e.unref(f).stripedColumns},{default:e.withCtx((()=>[e.withDirectives(e.createVNode(g,{variant:e.unref(f).headVariant,class:e.normalizeClass(e.unref(f).theadClass)},{default:e.withCtx((()=>[l.$slots["thead-top"]?e.renderSlot(l.$slots,"thead-top",{key:0}):e.createCommentVNode("",!0),e.createVNode(h,{variant:e.unref(f).headRowVariant,class:e.normalizeClass(e.unref(f).theadTrClass)},{default:e.withCtx((()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(C.value,(t=>(e.openBlock(),e.createBlock(k,e.mergeProps({key:t.key,scope:"col",class:E(t),title:t.headerTitle,variant:t.variant,abbr:t.headerAbbr,style:t.thStyle,ref_for:!0},V(null,t,"top"),{onClick:e=>N(t,e)}),{default:e.withCtx((()=>[e.renderSlot(l.$slots,l.$slots[`head(${String(t.key)})`]?`head(${String(t.key)})`:"head()",{label:t.label,column:t.key,field:t,isFoot:!1},(()=>[e.createTextVNode(e.toDisplayString(e.unref(B)(t)),1)]))])),_:2},1040,["class","title","variant","abbr","style","onClick"])))),128))])),_:3},8,["variant","class"]),l.$slots["thead-sub"]?(e.openBlock(),e.createBlock(h,{key:1},{default:e.withCtx((()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(C.value,(t=>(e.openBlock(),e.createBlock(p,{key:t.key,scope:"col",variant:t.variant,class:e.normalizeClass([t.class,t.thClass])},{default:e.withCtx((()=>[e.renderSlot(l.$slots,"thead-sub",e.mergeProps({items:C.value,ref_for:!0},t),(()=>[e.createTextVNode(e.toDisplayString(t.label),1)]))])),_:2},1032,["variant","class"])))),128))])),_:3})):e.createCommentVNode("",!0)])),_:3},8,["variant","class"]),[[e.vShow,x.value]]),e.createVNode(c,{class:e.normalizeClass(e.unref(f).tbodyClass)},{default:e.withCtx((()=>[e.renderSlot(l.$slots,"custom-body",{fields:C.value,items:e.unref(f).items,columns:C.value.length},(()=>[!e.unref(f).stacked&&l.$slots["top-row"]?(e.openBlock(),e.createBlock(h,e.mergeProps({key:0,class:F(null,"row-top")},D(null,"row-top")),{default:e.withCtx((()=>[e.renderSlot(l.$slots,"top-row")])),_:3},16,["class"])):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(f).items,((o,a)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:e.unref(f).primaryKey?e.unref(t.get)(o,e.unref(f).primaryKey):a},[e.createVNode(h,e.mergeProps({class:F(o,"row"),variant:e.unref(i)(o)?o._rowVariant:void 0,ref_for:!0},D(o,"row"),{onClick:t=>!e.unref(S)(t)&&v("row-clicked",o,a,t),onDblclick:t=>!e.unref(S)(t)&&v("row-dbl-clicked",o,a,t),onMouseenter:t=>!e.unref(S)(t)&&v("row-hovered",o,a,t),onMouseleave:t=>!e.unref(S)(t)&&v("row-unhovered",o,a,t)}),{default:e.withCtx((()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(C.value,(r=>{var n;return e.openBlock(),e.createBlock(p,e.mergeProps({key:r.key,variant:e.unref(i)(o)&&(null==(n=o._cellVariants)?void 0:n[r.key])?null:r.variant,class:A(r,o),ref_for:!0},((e,l,o)=>{const a=t.get(e,l);return o&&"function"==typeof o?o(a,l,e):o})(o,String(r.key),r.tdAttr)),{default:e.withCtx((()=>[e.unref(f).stacked&&e.unref(f).labelStacked?(e.openBlock(),e.createElementBlock("label",_,e.toDisplayString(e.unref(B)(r)),1)):e.createCommentVNode("",!0),e.renderSlot(l.$slots,l.$slots[`cell(${String(r.key)})`]?`cell(${String(r.key)})`:"cell()",{value:e.unref(d)(o,String(r.key),r.formatter),unformatted:e.unref(t.get)(o,String(r.key)),index:a,item:o,field:r,items:l.items,toggleDetails:()=>{P(o)},detailsShowing:!!e.unref(i)(o)&&(m.value.get(o)??!1)},(()=>[l.$slots[`cell(${String(r.key)})`]||l.$slots["cell()"]?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(e.unref(d)(o,String(r.key),r.formatter)),1)],64))]))])),_:2},1040,["variant","class"])})),128))])),_:2},1040,["class","variant","onClick","onDblclick","onMouseenter","onMouseleave"]),e.unref(i)(o)&&!0===m.value.get(o)&&l.$slots["row-details"]?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createVNode(h,{"aria-hidden":"true",role:"presentation",class:"d-none"}),e.createVNode(h,e.mergeProps({class:F(o,"row-details"),variant:o._rowVariant,ref_for:!0},D(o,"row-details")),{default:e.withCtx((()=>[e.createVNode(p,{colspan:w.value,class:e.normalizeClass(l.detailsTdClass)},{default:e.withCtx((()=>[e.renderSlot(l.$slots,"row-details",{item:o,toggleDetails:()=>{P(o)},fields:e.unref(f).fields,index:a})])),_:2},1032,["colspan","class"])])),_:2},1040,["class","variant"])],64)):e.createCommentVNode("",!0)],64)))),128)),e.unref(f).showEmpty&&0===e.unref(f).items.length?(e.openBlock(),e.createBlock(h,{key:1,class:"b-table-empty-slot"},{default:e.withCtx((()=>[e.createVNode(p,{colspan:w.value},{default:e.withCtx((()=>[e.renderSlot(l.$slots,"empty",{items:e.unref(f).items},(()=>[e.createTextVNode(e.toDisplayString(e.unref(f).emptyText),1)]))])),_:3},8,["colspan"])])),_:3})):e.createCommentVNode("",!0),!e.unref(f).stacked&&l.$slots["bottom-row"]?(e.openBlock(),e.createBlock(h,e.mergeProps({key:2,class:["bottom-row",F(null,"row-bottom")]},D(null,"row-bottom")),{default:e.withCtx((()=>[e.renderSlot(l.$slots,"bottom-row")])),_:3},16,["class"])):e.createCommentVNode("",!0)]))])),_:3},8,["class"]),e.unref(f).footClone?(e.openBlock(),e.createBlock(y,{key:0,variant:e.unref(f).footVariant,class:e.normalizeClass(e.unref(f).tfootClass)},{default:e.withCtx((()=>[e.createVNode(h,{variant:e.unref(f).footRowVariant,class:e.normalizeClass(e.unref(f).tfootTrClass)},{default:e.withCtx((()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(C.value,(t=>(e.openBlock(),e.createBlock(k,e.mergeProps({key:t.key,scope:"col",class:E(t),title:t.headerTitle,abbr:t.headerAbbr,style:t.thStyle,variant:t.variant,ref_for:!0},V(null,t,"bottom"),{onClick:e=>N(t,e,!0)}),{default:e.withCtx((()=>[e.createElementVNode("div",T,[e.createElementVNode("div",null,[e.renderSlot(l.$slots,l.$slots[`foot(${String(t.key)})`]?`foot(${String(t.key)})`:"foot()",{label:t.label,column:t.key,field:t,isFoot:!0},(()=>[e.createTextVNode(e.toDisplayString(e.unref(B)(t)),1)]))])])])),_:2},1040,["class","title","abbr","style","variant","onClick"])))),128))])),_:3},8,["variant","class"])])),_:3},8,["variant","class"])):l.$slots["custom-foot"]?(e.openBlock(),e.createBlock(y,{key:1},{default:e.withCtx((()=>[e.renderSlot(l.$slots,"custom-foot",{fields:C.value,items:e.unref(f).items,columns:C.value.length})])),_:3})):e.createCommentVNode("",!0),l.$slots["table-caption"]||e.unref(f).caption?(e.openBlock(),e.createElementBlock("caption",$,[e.renderSlot(l.$slots,"table-caption",{},(()=>[e.createTextVNode(e.toDisplayString(e.unref(f).caption),1)]))])):e.createCommentVNode("",!0)])),_:3},8,["id","bordered","borderless","border-variant","caption-top","dark","fixed","hover","no-border-collapse","outlined","responsive","small","stacked","sticky-header","striped","table-class","variant","striped-columns"]))}}),V={style:{opacity:.4},xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",fill:"currentColor",class:"bi bi-arrow-up-short",viewBox:"0 0 16 16","aria-hidden":""},N={class:"d-flex align-items-center gap-2 mt-5"},P=e.defineComponent({__name:"BTable",props:e.mergeModels({provider:{default:void 0},noProvider:{default:void 0},noProviderPaging:{type:Boolean,default:!1},noProviderSorting:{type:Boolean,default:!1},noProviderFiltering:{type:Boolean,default:!1},mustSort:{type:[Boolean,Array],default:!1},selectable:{type:Boolean,default:!1},multisort:{type:Boolean,default:!1},stickySelect:{type:Boolean,default:!1},selectHead:{type:[Boolean,String],default:!0},selectMode:{default:"multi"},selectionVariant:{default:"primary"},busyLoadingText:{default:"Loading..."},perPage:{default:Number.POSITIVE_INFINITY},currentPage:{default:1},filter:{default:void 0},filterable:{default:void 0},noLocalSorting:{type:Boolean,default:!1},noSelectOnClick:{type:Boolean,default:!1},noSortableIcon:{type:Boolean,default:!1},align:{default:void 0},caption:{default:void 0},captionHtml:{default:void 0},detailsTdClass:{default:void 0},emptyFilteredText:{default:void 0},emptyText:{default:void 0},fieldColumnClass:{type:[Function,String,Object,Array],default:void 0},fields:{default:()=>[]},footClone:{type:Boolean,default:void 0},footRowVariant:{default:void 0},footVariant:{default:void 0},headRowVariant:{default:void 0},headVariant:{default:void 0},items:{default:()=>[]},labelStacked:{type:Boolean,default:void 0},modelValue:{default:void 0},primaryKey:{default:void 0},showEmpty:{type:Boolean,default:void 0},tbodyClass:{default:void 0},tbodyTrAttrs:{},tbodyTrClass:{type:[Function,String,Array,Object],default:void 0},tfootClass:{default:void 0},tfootTrClass:{default:void 0},theadClass:{default:void 0},theadTrClass:{default:void 0},bordered:{type:Boolean,default:void 0},borderless:{type:Boolean,default:void 0},borderVariant:{default:void 0},captionTop:{type:Boolean,default:void 0},dark:{type:Boolean,default:void 0},fixed:{type:Boolean,default:void 0},hover:{type:Boolean,default:void 0},id:{default:void 0},noBorderCollapse:{type:Boolean,default:void 0},outlined:{type:Boolean,default:void 0},responsive:{type:[Boolean,String],default:void 0},small:{type:Boolean,default:void 0},stacked:{type:[Boolean,String],default:void 0},stickyHeader:{type:[Boolean,String,Number],default:void 0},striped:{type:Boolean,default:void 0},stripedColumns:{type:Boolean,default:void 0},variant:{default:void 0},tableAttrs:{}},{sortBy:{default:void 0},sortByModifiers:{},busy:{type:Boolean,default:!1},busyModifiers:{},selectedItems:{default:()=>[]},selectedItemsModifiers:{}}),emits:e.mergeModels(["filtered","head-clicked","row-clicked","row-dbl-clicked","row-hovered","row-unhovered","row-selected","row-unselected","sorted","change"],["update:sortBy","update:busy","update:selectedItems"]),setup(a,{expose:c,emit:f}){const v=a,y=r.useDefaults(v,"BTable"),m=f,b=e.useModel(a,"sortBy"),k=e.useModel(a,"busy"),g=e.useModel(a,"selectedItems"),C=e.computed({get:()=>new Set([...g.value]),set:e=>{g.value=[...e]}}),w={add:e=>{const t=new Set(C.value);t.add(e),C.value=t,m("row-selected",e)},clear:()=>{C.value.forEach((e=>{w.delete(e)}))},delete:e=>{const l=new Set(C.value);if(y.primaryKey){const o=y.primaryKey;g.value.forEach(((a,r)=>{const n=t.get(a,o),s=t.get(e,o);n&&s&&n===s&&l.delete(g.value[r])}))}else l.delete(e);C.value=l,m("row-unselected",e)},set:e=>{C.value=new Set(e),C.value.forEach((e=>{m("row-unselected",e)}))},has:e=>{if(!y.primaryKey)return C.value.has(e);const l=y.primaryKey;for(const o of C.value){const a=t.get(o,l),r=t.get(e,l);if(a&&r&&a===r)return!0}return!1}},S=e.ref([]),_=s.useToNumber((()=>y.perPage),{method:"parseInt"}),T=s.useToNumber((()=>y.currentPage),{method:"parseInt"}),$=e.computed((()=>!!y.filter)),P=e.computed((()=>void 0!==y.provider)),E=e.computed((()=>C.value.size>0)),A=e.computed((()=>void 0!==b.value||y.fields.some((e=>"object"==typeof e&&null!==e&&!0===e.sortable)))),D=e.computed((()=>y.fields.map((e=>{var t;if(!u(e)){const t=n.startCase(e);return{key:e,label:t,tdAttr:!0===y.stacked?{"data-label":t}:void 0}}const l=null==(t=b.value)?void 0:t.find((t=>e.key===t.key)),o=!1===A.value?void 0:void 0===l?"none":"desc"===l.order?"descending":"asc"===l.order?"ascending":"none";return{...e,thAttr:{"aria-sort":o,...e.thAttr}}})))),F=e.computed((()=>({"b-table-busy":k.value,"b-table-selectable":y.selectable,"user-select-none":y.selectable&&E.value}))),j=e.computed((()=>[y.tbodyTrClass?"function"==typeof y.tbodyTrClass?y.tbodyTrClass(null,"table-busy"):y.tbodyTrClass:null])),I=e=>[{"b-table-sortable-column":A.value&&e.sortable}],z=(e,t)=>[{[`selected table-${y.selectionVariant}`]:y.selectable&&!!e&&w.has(e)},y.tbodyTrClass?"function"==typeof y.tbodyTrClass?y.tbodyTrClass(e,t):y.tbodyTrClass:null],M=e.computed((()=>{let e=P.value?S.value:y.items;return e=e.map((e=>{if("object"==typeof e&&null!==e&&Object.keys(e).some((e=>e.includes(".")))){let l={};for(const o in e)o.includes(".")?l=t.set(l,o,e[o]):l[o]=e[o];return l}return e})),(!0===$.value&&!P.value||!0===$.value&&P.value&&y.noProviderFiltering)&&(e=e.filter((e=>!i(e)||Object.entries(e).some((([t,l])=>{var o,a,r;return!(null==l||"_"===t[0]||!(null==(o=y.filterable)?void 0:o.includes(t))&&(null==(a=y.filterable)?void 0:a.length))&&(()=>{const o=D.value.find((e=>!!u(e)&&e.key===t));if(u(o)&&o.filterByFormatted){const t="function"==typeof o.filterByFormatted?o.filterByFormatted:o.formatter;if(t)return t(l,String(o.key),e)}return"object"==typeof l?JSON.stringify(Object.values(l)):l.toString()})().toLowerCase().includes((null==(r=y.filter)?void 0:r.toLowerCase())??"")}))))),(!0===A.value&&!P.value&&!y.noLocalSorting||!0===A.value&&P.value&&y.noProviderSorting)&&(e=(e=>{var l;const o=null==(l=b.value)?void 0:l.filter((e=>!!e.order));return o&&0!==o.length?[...e].sort(((e,l)=>{for(let a=0;a<(o.length??0);a++){const r=o[a],n=e=>{if(!i(e))return String(e);const l=D.value.find((e=>!!u(e)&&e.key===r.key)),o=t.get(e,r.key);if(u(l)&&l.sortByFormatted){const t="function"==typeof l.sortByFormatted?l.sortByFormatted:l.formatter;if(t)return d(e,String(l.key),t)}return"object"==typeof o&&null!==o?JSON.stringify(o):(null==o?void 0:o.toString())??""},s=n(e),c=n(l),f=r.comparer?r.comparer(s,c):s.localeCompare(c,void 0,{numeric:!0});if(0!==f)return"asc"===r.order?f:-f}return 0})):e})(e)),e})),L=e.computed((()=>Number.isNaN(_.value)||P.value&&!y.noProviderPaging?M.value:M.value.slice((T.value-1)*(_.value||Number.POSITIVE_INFINITY),T.value*(_.value||Number.POSITIVE_INFINITY))));e.watch(L,(e=>{m("change",e)}));const O=(e,t,l)=>{!1===y.noSelectOnClick&&((e,t,l=!1,o=!1,a=!1)=>{if(y.selectable)if("single"===y.selectMode||"multi"===y.selectMode){if(l||o)return;w.has(e)?w.delete(e):"single"===y.selectMode?w.set([e]):w.add(e)}else if(o||a)w.has(e)?w.delete(e):w.add(e);else if(l){const e=[...C.value].pop(),l=M.value.findIndex((t=>t===e)),o=Math.min(l,t),a=Math.max(l,t),r=M.value.slice(o,a+1);w.set(r)}else w.set([e])})(e,t,l.shiftKey,l.ctrlKey,l.metaKey),m("row-clicked",e,t,l)},H=(e,t,l,o=!1)=>{m("head-clicked",e,t,l,o),(e=>{var t,l;if(!A.value)return;const o="object"==typeof e&&null!==e?e.key:e,a="object"==typeof e&&null!==e&&e.sortable;if(!0!==A.value||!0!==a)return;const r=e=>"asc"===e?"desc":void 0===e||!0===y.mustSort||Array.isArray(y.mustSort)&&y.mustSort.includes(o)?"asc":void 0,n=(null==(t=b.value)?void 0:t.findIndex((e=>e.key===o)))??-1,s=null==(l=b.value)?void 0:l[n],d=-1!==n&&s?{...s}:{key:o,order:"asc"};m("sorted",!0===y.multisort?(()=>{var e,t;let l=d;if(-1===n)b.value=[...b.value??[],d];else{const o=r(d.order);l={...d,order:o},b.value=o?null==(e=b.value)?void 0:e.map((e=>e.key===l.key?l:e)):null==(t=b.value)?void 0:t.filter((e=>e.key!==l.key))}return l})():(()=>{const e={...d,order:-1===n?d.order:r(d.order)};return b.value=[e],e})())})(t)},R=async()=>{if(!P.value||void 0===y.provider||k.value)return;k.value=!0;const e=y.provider({currentPage:T.value,filter:y.filter,sortBy:b.value,perPage:_.value});try{const t=e instanceof Promise?await e:e;if(void 0===t)return;S.value=t}finally{k.value=!1}},K=async(e,t,l)=>{if(t===l)return;const o=e=>{var t;return!0===(null==(t=y.noProvider)?void 0:t.includes(e))},a=("currentPage"===e||"perPage"===e)&&(o("paging")||!0===y.noProviderPaging),r="filter"===e&&(o("filtering")||!0===y.noProviderFiltering),n=("sortBy"===e||"sortDesc"===e)&&(o("sorting")||!0===y.noProviderSorting);a||r||n||(!0===P.value&&await R(),"currentPage"!==e&&"perPage"!==e&&m("filtered",[...M.value]))};return e.watch((()=>y.filter),((e,t)=>{K("filter",e,t),e===t||P.value||e||m("filtered",[...M.value])})),e.watch(T,((e,t)=>{K("currentPage",e,t)})),e.watch(_,((e,t)=>{K("perPage",e,t)})),e.watch(b,((e,t)=>{K("sortBy",e,t)}),{deep:!0}),e.watch((()=>y.provider),(e=>{void 0!==e?R():S.value=[]})),e.onMounted(R),c({clearSelected:()=>{y.selectable&&w.clear()},refresh:R,selectAllRows:()=>{if(!y.selectable)return;const e=C.value.size>0?[...C.value]:[];C.value=new Set([...M.value]),C.value.forEach((t=>{e.includes(t)||m("row-selected",t)}))},selectRow:e=>{if(!y.selectable)return;const t=M.value[e];t&&!w.has(t)&&w.add(t)},unselectRow:e=>{if(!y.selectable)return;const t=M.value[e];t&&w.has(t)&&w.delete(t)},isRowSelected:e=>{if(!y.selectable)return!1;const t=M.value[e];return w.has(t)}}),(t,a)=>(e.openBlock(),e.createBlock(x,e.mergeProps(e.unref(y),{"aria-busy":k.value,items:L.value,fields:D.value,"table-class":F.value,"tbody-tr-class":z,"field-column-class":I,onHeadClicked:H,onRowDblClicked:a[0]||(a[0]=(e,t,l)=>{m("row-dbl-clicked",e,t,l)}),onRowClicked:O,onRowHovered:a[1]||(a[1]=(e,t,l)=>{m("row-hovered",e,t,l)}),onRowUnhovered:a[2]||(a[2]=(e,t,l)=>{m("row-unhovered",e,t,l)})}),e.createSlots({"custom-body":e.withCtx((a=>[k.value?(e.openBlock(),e.createBlock(h,{key:0,class:e.normalizeClass(["b-table-busy-slot",j.value])},{default:e.withCtx((()=>[e.createVNode(p,{colspan:a.fields.length},{default:e.withCtx((()=>[e.renderSlot(t.$slots,"table-busy",{},(()=>[e.createVNode(l._sfc_main,{show:""},{overlay:e.withCtx((()=>[e.createElementVNode("div",N,[e.createVNode(o._sfc_main),e.createElementVNode("strong",null,e.toDisplayString(e.unref(y).busyLoadingText),1)])])),_:1})]))])),_:2},1032,["colspan"])])),_:2},1032,["class"])):e.createCommentVNode("",!0)])),_:2},[e.renderList(t.$slots,((l,o)=>({name:o,fn:e.withCtx((l=>[e.renderSlot(t.$slots,o,e.normalizeProps(e.guardReactiveProps(l)))]))}))),e.renderList(D.value,(l=>({name:`head(${String(l.key)})`,fn:e.withCtx((o=>{var r,n,s,d;return[e.renderSlot(t.$slots,t.$slots[`head(${String(l.key)})`]?`head(${String(l.key)})`:"head()",e.normalizeProps(e.guardReactiveProps(o)),(()=>[e.createTextVNode(e.toDisplayString(e.unref(B)(l)),1)])),A.value&&o.field.sortable&&!1===e.unref(y).noSortableIcon?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},["asc"===(null==(n=null==(r=b.value)?void 0:r.find((e=>e.key===o.field.key)))?void 0:n.order)?e.renderSlot(t.$slots,t.$slots[`sortAsc(${String(o.field.key)})`]?`sortAsc(${String(o.field.key)})`:"sortAsc()",e.normalizeProps(e.mergeProps({key:0},{...o})),(()=>[a[3]||(a[3]=e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",fill:"currentColor",class:"bi bi-arrow-up-short",viewBox:"0 0 16 16","aria-hidden":""},[e.createElementVNode("path",{"fill-rule":"evenodd",d:"M8 12a.5.5 0 0 0 .5-.5V5.707l2.146 2.147a.5.5 0 0 0 .708-.708l-3-3a.5.5 0 0 0-.708 0l-3 3a.5.5 0 1 0 .708.708L7.5 5.707V11.5a.5.5 0 0 0 .5.5z"})],-1))])):"desc"===(null==(d=null==(s=b.value)?void 0:s.find((e=>e.key===o.field.key)))?void 0:d.order)?e.renderSlot(t.$slots,t.$slots[`sortDesc(${String(o.field.key)})`]?`sortDesc(${String(o.field.key)})`:"sortDesc()",e.normalizeProps(e.mergeProps({key:1},{...o})),(()=>[a[4]||(a[4]=e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",fill:"currentColor",class:"bi bi-arrow-down-short",viewBox:"0 0 16 16","aria-hidden":""},[e.createElementVNode("path",{"fill-rule":"evenodd",d:"M8 4a.5.5 0 0 1 .5.5v5.793l2.146-2.147a.5.5 0 0 1 .708.708l-3 3a.5.5 0 0 1-.708 0l-3-3a.5.5 0 1 1 .708-.708L7.5 10.293V4.5A.5.5 0 0 1 8 4z"})],-1))])):e.renderSlot(t.$slots,t.$slots[`sortDefault(${String(o.field.key)})`]?`sortDefault(${String(o.field.key)})`:"sortDefault()",e.normalizeProps(e.mergeProps({key:2},{...o})),(()=>[(e.openBlock(),e.createElementBlock("svg",V,a[5]||(a[5]=[e.createElementVNode("path",{"fill-rule":"evenodd",d:"M8 12a.5.5 0 0 0 .5-.5V5.707l2.146 2.147a.5.5 0 0 0 .708-.708l-3-3a.5.5 0 0 0-.708 0l-3 3a.5.5 0 1 0 .708.708L7.5 5.707V11.5a.5.5 0 0 0 .5.5z"},null,-1)])))]))],64)):e.createCommentVNode("",!0)]}))})))]),1040,["aria-busy","items","fields","table-class"]))}});exports._sfc_main=P,exports._sfc_main$1=x,exports._sfc_main$2=c,exports._sfc_main$3=p,exports._sfc_main$4=y,exports._sfc_main$5=k,exports._sfc_main$6=g,exports._sfc_main$7=h;
2
+ //# sourceMappingURL=BTable.vue_vue_type_script_setup_true_lang-D0H4HA45.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BTable.vue_vue_type_script_setup_true_lang-DJaXQe4Y.js","sources":["../src/utils/formatItem.ts","../src/types/TableTypes.ts","../src/components/BTable/BTbody.vue","../src/components/BTable/BTd.vue","../src/components/BTable/BTfoot.vue","../src/components/BTable/BTh.vue","../src/components/BTable/BThead.vue","../src/components/BTable/BTr.vue","../src/utils/getTableFieldHeadLabel.ts","../src/utils/filterEvent.ts","../src/components/BTable/BTableLite.vue","../src/components/BTable/BTable.vue"],"sourcesContent":["import type {TableFieldFormatter} from '../types/TableTypes'\nimport {get} from './object'\n\nexport const formatItem = (\n item: unknown,\n // Weakly type fieldKey because it can be a nested string, such as 'foo.bar.baz'\n fieldKey: string,\n formatter?: TableFieldFormatter<unknown>\n) => {\n const val = get(item, fieldKey)\n return formatter && typeof formatter === 'function' ? formatter(val, fieldKey, item) : val\n}\n","import type {StyleValue} from 'vue'\nimport type {ColorVariant} from './ColorTypes'\nimport type {MaybePromise} from './MaybePromise'\nimport type {LiteralUnion} from './LiteralUnion'\nimport type {AttrsValue, ClassValue} from './AnyValuedAttributes'\n\nexport type TableItem<T = Record<string, unknown>> = T & {\n _rowVariant?: ColorVariant | null\n _cellVariants?: Partial<Record<keyof T, ColorVariant>>\n _showDetails?: boolean\n}\n\nexport const isTableItem = (value: unknown): value is TableItem =>\n typeof value === 'object' && value !== null\n\n// undefined means no sorting\nexport type BTableSortByOrder = 'desc' | 'asc' | undefined\n\nexport type BTableSortBy = {\n order: BTableSortByOrder\n key: string\n comparer?: (a: string, b: string) => number\n}\n\nexport type BTableProviderContext = {\n sortBy: BTableSortBy[] | undefined\n filter: string | undefined\n currentPage: number\n perPage: number\n}\n\nexport type BTableProvider<T> = (\n context: Readonly<BTableProviderContext>\n) => MaybePromise<T[] | undefined>\n\nexport type TableFieldFormatter<T> = (value: unknown, key: string, item: T) => string\n\nexport type TableRowType = 'row' | 'row-details' | 'row-top' | 'row-bottom' | 'table-busy'\nexport type TableRowThead = 'top' | 'bottom'\n\nexport type TableStrictClassValue = string | unknown[] | Record<string, boolean>\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type TableField<T = any> = {\n key: LiteralUnion<keyof T>\n label?: string\n headerTitle?: string\n headerAbbr?: string\n class?: ClassValue\n formatter?: TableFieldFormatter<T>\n sortable?: boolean\n sortKey?: string\n sortDirection?: string\n sortByFormatted?: boolean | TableFieldFormatter<T>\n filterByFormatted?: boolean | TableFieldFormatter<T>\n tdClass?:\n | TableStrictClassValue\n | ((value: unknown, key: string, item: T) => TableStrictClassValue)\n thClass?: ClassValue\n thStyle?: StyleValue\n variant?: ColorVariant | null\n tdAttr?: AttrsValue | ((value: unknown, key: string, item: T) => AttrsValue)\n thAttr?:\n | AttrsValue\n | ((value: unknown, key: string, item: T | null, type: TableRowThead) => AttrsValue)\n isRowHeader?: boolean\n stickyColumn?: boolean\n}\n\nexport type TableFieldRaw<T = unknown> = T extends object\n ? LiteralUnion<keyof T> | TableField<T>\n : string | TableField\n\nexport const isTableField = <T>(value: unknown): value is TableField<T> =>\n typeof value === 'object' && value !== null && 'key' in value\n\nexport const isTableFieldRaw = <T>(value: unknown): value is TableFieldRaw<T> =>\n typeof value === 'string' || isTableField(value)\n\nexport type NoProviderTypes = 'paging' | 'sorting' | 'filtering'\n","<template>\n <tbody :class=\"computedClasses\">\n <slot />\n </tbody>\n</template>\n\n<script setup lang=\"ts\">\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BTbodyProps} from '../../types/ComponentProps'\nimport {computed} from 'vue'\n\nconst _props = withDefaults(defineProps<BTbodyProps>(), {\n variant: null,\n})\nconst props = useDefaults(_props, 'BTbody')\n\ndefineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: (props: Record<string, never>) => any\n}>()\n\nconst computedClasses = computed(() => ({\n [`thead-${props.variant}`]: props.variant !== null,\n}))\n</script>\n","<template>\n <td\n :scope=\"scope\"\n :class=\"computedClasses\"\n :colspan=\"props.colspan\"\n :rowspan=\"props.rowspan\"\n :data-label=\"props.stackedHeading\"\n >\n <div v-if=\"props.stackedHeading\">\n <slot />\n </div>\n <slot v-else />\n </td>\n</template>\n\n<script setup lang=\"ts\">\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BTdProps} from '../../types/ComponentProps'\nimport {computed} from 'vue'\n\nconst _props = withDefaults(defineProps<BTdProps>(), {\n colspan: undefined,\n rowspan: undefined,\n stackedHeading: undefined,\n stickyColumn: false,\n variant: null,\n})\nconst props = useDefaults(_props, 'BTd')\n\ndefineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: (props: Record<string, never>) => any\n}>()\n\nconst computedClasses = computed(() => ({\n [`table-${props.variant}`]: props.variant !== null,\n 'b-table-sticky-column': props.stickyColumn,\n 'table-b-table-default': props.stickyColumn && props.variant === null,\n}))\n\nconst scope = computed(() => (props.colspan ? 'colspan' : props.rowspan ? 'rowspan' : 'col'))\n</script>\n","<template>\n <tfoot :class=\"computedClasses\">\n <slot />\n </tfoot>\n</template>\n\n<script setup lang=\"ts\">\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BTfootProps} from '../../types/ComponentProps'\nimport {computed} from 'vue'\n\nconst _props = withDefaults(defineProps<BTfootProps>(), {\n variant: null,\n})\nconst props = useDefaults(_props, 'BTfoot')\n\ndefineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: (props: Record<string, never>) => any\n}>()\n\nconst computedClasses = computed(() => ({\n [`table-${props.variant}`]: props.variant !== null,\n}))\n</script>\n","<template>\n <th\n :scope=\"scope\"\n :class=\"computedClasses\"\n :colspan=\"props.colspan\"\n :rowspan=\"props.rowspan\"\n :data-label=\"props.stackedHeading\"\n >\n <div v-if=\"props.stackedHeading !== undefined\">\n <slot />\n </div>\n <slot v-else />\n </th>\n</template>\n\n<script setup lang=\"ts\">\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BThProps} from '../../types/ComponentProps'\nimport {computed} from 'vue'\n\nconst _props = withDefaults(defineProps<BThProps>(), {\n colspan: undefined,\n rowspan: undefined,\n stackedHeading: undefined,\n stickyColumn: false,\n variant: null,\n})\nconst props = useDefaults(_props, 'BTh')\n\ndefineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: (props: Record<string, never>) => any\n}>()\n\nconst computedClasses = computed(() => ({\n [`table-${props.variant}`]: props.variant !== null,\n 'b-table-sticky-column': props.stickyColumn,\n 'table-b-table-default': props.stickyColumn && props.variant === null,\n}))\n\nconst scope = computed(() => (props.colspan ? 'colspan' : props.rowspan ? 'rowspan' : 'col'))\n</script>\n","<template>\n <thead :class=\"computedClasses\">\n <slot />\n </thead>\n</template>\n\n<script setup lang=\"ts\">\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BTheadProps} from '../../types/ComponentProps'\nimport {computed} from 'vue'\n\nconst _props = withDefaults(defineProps<BTheadProps>(), {\n variant: null,\n})\nconst props = useDefaults(_props, 'BThead')\n\ndefineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: (props: Record<string, never>) => any\n}>()\n\nconst computedClasses = computed(() => ({\n [`table-${props.variant}`]: props.variant !== null,\n}))\n</script>\n","<template>\n <tr :class=\"computedClasses\">\n <slot />\n </tr>\n</template>\n\n<script setup lang=\"ts\">\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BTrProps} from '../../types/ComponentProps'\nimport {computed} from 'vue'\n\nconst _props = withDefaults(defineProps<BTrProps>(), {\n variant: null,\n})\nconst props = useDefaults(_props, 'BTr')\n\ndefineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: (props: Record<string, never>) => any\n}>()\n\nconst computedClasses = computed(() => ({\n [`table-${props.variant}`]: props.variant !== null,\n}))\n</script>\n","import {titleCase} from './stringUtils'\nimport type {TableFieldRaw} from '../types/TableTypes'\n\nexport const getTableFieldHeadLabel = (field: Readonly<TableFieldRaw<unknown>>) =>\n typeof field === 'string'\n ? titleCase(field)\n : field.label !== undefined\n ? field.label\n : typeof field.key === 'string'\n ? titleCase(field.key)\n : field.key\n","const TABLE_TAG_NAMES = ['TD', 'TH', 'TR']\n\n// Filter CSS selector for click/dblclick/etc. events\n// If any of these selectors match the clicked element, we ignore the event\nconst eventFilter = [\n 'a',\n 'a *', // Include content inside links\n 'button',\n 'button *', // Include content inside buttons\n 'input:not(.disabled):not([disabled])',\n 'select:not(.disabled):not([disabled])',\n 'textarea:not(.disabled):not([disabled])',\n '[role=\"link\"]',\n '[role=\"link\"] *',\n '[role=\"button\"]',\n '[role=\"button\"] *',\n '[tabindex]:not(.disabled):not([disabled])',\n].join(',')\n\n// Returns `true` if we should ignore the click/double-click/keypress event\n// Avoids having the user need to use `@click.stop` on the form control\nexport const filterEvent = (event: Readonly<Event>) => {\n // Exit early when we don't have a target element\n if (!event || !event.target) {\n return false\n }\n const el = event.target as HTMLElement\n // Exit early when element is disabled or a table element\n if (('disabled' in el && el.disabled) || TABLE_TAG_NAMES.indexOf(el.tagName) !== -1) {\n return false\n }\n // Ignore the click when it was inside a dropdown menu\n if (el.closest('.dropdown-menu')) return true\n\n const label = el.tagName === 'LABEL' ? el : el.closest('label')\n // If the label's form control is not disabled then we don't propagate event\n // Modern browsers have `label.control` that references the associated input, but IE 11\n // does not have this property on the label element, so we resort to DOM lookups\n if (label) {\n const labelFor = label.getAttribute('for')\n const input = labelFor\n ? document.getElementById(labelFor)\n : label.querySelector('input, select, textarea')\n if (input && !(input as HTMLInputElement).disabled) {\n return true\n }\n }\n // Otherwise check if the event target matches one of the selectors in the\n // event filter (i.e. anchors, non disabled inputs, etc.)\n // Return `true` if we should ignore the event\n return el.matches(eventFilter)\n}\n","<template>\n <BTableSimple\n :id=\"props.id\"\n :bordered=\"props.bordered\"\n :borderless=\"props.borderless\"\n :border-variant=\"props.borderVariant\"\n :caption-top=\"props.captionTop\"\n :dark=\"props.dark\"\n :fixed=\"props.fixed\"\n :hover=\"props.hover\"\n :no-border-collapse=\"props.noBorderCollapse\"\n :outlined=\"props.outlined\"\n :responsive=\"props.responsive\"\n :small=\"props.small\"\n :stacked=\"props.stacked\"\n :sticky-header=\"props.stickyHeader\"\n :striped=\"props.striped\"\n :table-class=\"computedTableClasses\"\n :variant=\"props.variant\"\n :striped-columns=\"props.stripedColumns\"\n >\n <BThead v-show=\"showComputedHeaders\" :variant=\"props.headVariant\" :class=\"props.theadClass\">\n <slot v-if=\"$slots['thead-top']\" name=\"thead-top\" />\n <BTr :variant=\"props.headRowVariant\" :class=\"props.theadTrClass\">\n <BTh\n v-for=\"field in computedFields\"\n :key=\"field.key\"\n scope=\"col\"\n :class=\"getFieldColumnClasses(field)\"\n :title=\"field.headerTitle\"\n :variant=\"field.variant\"\n :abbr=\"field.headerAbbr\"\n :style=\"field.thStyle\"\n v-bind=\"callThAttr(null, field, 'top')\"\n @click=\"headerClicked(field, $event)\"\n >\n <slot\n :name=\"$slots[`head(${String(field.key)})`] ? `head(${String(field.key)})` : 'head()'\"\n :label=\"field.label\"\n :column=\"field.key\"\n :field=\"field\"\n :is-foot=\"false\"\n >\n {{ getTableFieldHeadLabel(field) }}\n </slot>\n </BTh>\n </BTr>\n <BTr v-if=\"$slots['thead-sub']\">\n <BTd\n v-for=\"field in computedFields\"\n :key=\"field.key\"\n scope=\"col\"\n :variant=\"field.variant\"\n :class=\"[field.class, field.thClass]\"\n >\n <slot name=\"thead-sub\" :items=\"computedFields\" v-bind=\"field\">\n {{ field.label }}\n </slot>\n </BTd>\n </BTr>\n </BThead>\n <BTbody :class=\"props.tbodyClass\">\n <slot\n name=\"custom-body\"\n :fields=\"computedFields\"\n :items=\"props.items\"\n :columns=\"computedFields.length\"\n >\n <BTr\n v-if=\"!props.stacked && $slots['top-row']\"\n :class=\"getRowClasses(null, 'row-top')\"\n v-bind=\"callTbodyTrAttrs(null, 'row-top')\"\n >\n <slot name=\"top-row\" />\n </BTr>\n\n <template\n v-for=\"(item, itemIndex) in props.items\"\n :key=\"props.primaryKey ? get(item, props.primaryKey) : itemIndex\"\n >\n <BTr\n :class=\"getRowClasses(item, 'row')\"\n :variant=\"isTableItem(item) ? item._rowVariant : undefined\"\n v-bind=\"callTbodyTrAttrs(item, 'row')\"\n @click=\"!filterEvent($event) && emit('row-clicked', item, itemIndex, $event)\"\n @dblclick=\"!filterEvent($event) && emit('row-dbl-clicked', item, itemIndex, $event)\"\n @mouseenter=\"!filterEvent($event) && emit('row-hovered', item, itemIndex, $event)\"\n @mouseleave=\"!filterEvent($event) && emit('row-unhovered', item, itemIndex, $event)\"\n >\n <BTd\n v-for=\"field in computedFields\"\n :key=\"field.key\"\n :variant=\"\n (isTableItem(item) ? item._cellVariants?.[field.key as string] : false)\n ? null\n : field.variant\n \"\n :class=\"getFieldRowClasses(field, item)\"\n v-bind=\"itemAttributes(item, String(field.key), field.tdAttr)\"\n >\n <label v-if=\"props.stacked && props.labelStacked\" class=\"b-table-stacked-label\">\n {{ getTableFieldHeadLabel(field) }}\n </label>\n <slot\n :name=\"\n $slots[`cell(${String(field.key)})`] ? `cell(${String(field.key)})` : 'cell()'\n \"\n :value=\"formatItem(item, String(field.key), field.formatter)\"\n :unformatted=\"get(item, String(field.key))\"\n :index=\"itemIndex\"\n :item=\"item\"\n :field=\"field\"\n :items=\"items\"\n :toggle-details=\"\n () => {\n toggleRowDetails(item)\n }\n \"\n :details-showing=\"isTableItem(item) ? (detailsMap.get(item) ?? false) : false\"\n >\n <template v-if=\"!$slots[`cell(${String(field.key)})`] && !$slots['cell()']\">\n {{ formatItem(item, String(field.key), field.formatter) }}\n </template>\n </slot>\n </BTd>\n </BTr>\n\n <template\n v-if=\"isTableItem(item) && detailsMap.get(item) === true && $slots['row-details']\"\n >\n <BTr aria-hidden=\"true\" role=\"presentation\" class=\"d-none\" />\n <BTr\n :class=\"getRowClasses(item, 'row-details')\"\n :variant=\"item._rowVariant\"\n v-bind=\"callTbodyTrAttrs(item, 'row-details')\"\n >\n <BTd :colspan=\"computedFieldsTotal\" :class=\"detailsTdClass\">\n <slot\n name=\"row-details\"\n :item=\"item\"\n :toggle-details=\"\n () => {\n toggleRowDetails(item)\n }\n \"\n :fields=\"props.fields\"\n :index=\"itemIndex\"\n />\n </BTd>\n </BTr>\n </template>\n </template>\n <BTr v-if=\"props.showEmpty && props.items.length === 0\" class=\"b-table-empty-slot\">\n <BTd :colspan=\"computedFieldsTotal\">\n <slot name=\"empty\" :items=\"props.items\">\n {{ props.emptyText }}\n </slot>\n </BTd>\n </BTr>\n <!-- This class is for specific targetting of this slot element -->\n <BTr\n v-if=\"!props.stacked && $slots['bottom-row']\"\n class=\"bottom-row\"\n :class=\"getRowClasses(null, 'row-bottom')\"\n v-bind=\"callTbodyTrAttrs(null, 'row-bottom')\"\n >\n <slot name=\"bottom-row\" />\n </BTr>\n </slot>\n </BTbody>\n <BTfoot v-if=\"props.footClone\" :variant=\"props.footVariant\" :class=\"props.tfootClass\">\n <BTr :variant=\"props.footRowVariant\" :class=\"props.tfootTrClass\">\n <BTh\n v-for=\"field in computedFields\"\n :key=\"field.key\"\n scope=\"col\"\n :class=\"getFieldColumnClasses(field)\"\n :title=\"field.headerTitle\"\n :abbr=\"field.headerAbbr\"\n :style=\"field.thStyle\"\n :variant=\"field.variant\"\n v-bind=\"callThAttr(null, field, 'bottom')\"\n @click=\"headerClicked(field, $event, true)\"\n >\n <div class=\"d-inline-flex flex-nowrap align-items-center gap-1\">\n <div>\n <slot\n :name=\"\n $slots[`foot(${String(field.key)})`] ? `foot(${String(field.key)})` : 'foot()'\n \"\n :label=\"field.label\"\n :column=\"field.key\"\n :field=\"field\"\n :is-foot=\"true\"\n >\n {{ getTableFieldHeadLabel(field) }}\n </slot>\n </div>\n </div>\n </BTh>\n </BTr>\n </BTfoot>\n <BTfoot v-else-if=\"$slots['custom-foot']\">\n <slot\n name=\"custom-foot\"\n :fields=\"computedFields\"\n :items=\"props.items\"\n :columns=\"computedFields.length\"\n />\n </BTfoot>\n <caption v-if=\"$slots['table-caption'] || props.caption\">\n <slot name=\"table-caption\">\n {{ props.caption }}\n </slot>\n </caption>\n </BTableSimple>\n</template>\n\n<script setup lang=\"ts\" generic=\"T\">\nimport {computed, ref, watch} from 'vue'\nimport type {BTableLiteProps} from '../../types/ComponentProps'\nimport {\n isTableField,\n isTableItem,\n type TableField,\n type TableItem,\n type TableRowThead,\n type TableRowType,\n} from '../../types/TableTypes'\nimport BTableSimple from './BTableSimple.vue'\nimport BTbody from './BTbody.vue'\nimport BTd from './BTd.vue'\nimport BTfoot from './BTfoot.vue'\nimport BTh from './BTh.vue'\nimport BThead from './BThead.vue'\nimport BTr from './BTr.vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {get} from '../../utils/object'\nimport {getTableFieldHeadLabel} from '../../utils/getTableFieldHeadLabel'\nimport {formatItem} from '../../utils/formatItem'\nimport {filterEvent} from '../../utils/filterEvent'\nimport {startCase} from '../../utils/stringUtils'\n\nconst _props = withDefaults(defineProps<BTableLiteProps<T>>(), {\n caption: undefined,\n align: undefined,\n fields: () => [],\n footClone: false,\n items: () => [],\n labelStacked: false,\n showEmpty: false,\n emptyText: 'There are no records to show',\n emptyFilteredText: 'There are no records matching your request', // TODO not implemented\n fieldColumnClass: undefined,\n tbodyTrClass: undefined,\n captionHtml: undefined,\n detailsTdClass: undefined,\n headVariant: undefined,\n headRowVariant: undefined,\n footRowVariant: undefined,\n footVariant: undefined,\n modelValue: undefined,\n primaryKey: undefined,\n tbodyClass: undefined,\n tbodyTrAttrs: undefined,\n tfootClass: undefined,\n tfootTrClass: undefined,\n theadClass: undefined,\n theadTrClass: undefined,\n // BTableSimpleProps props\n borderVariant: undefined,\n tableClass: undefined,\n variant: undefined,\n bordered: undefined,\n borderless: undefined,\n captionTop: undefined,\n dark: undefined,\n hover: undefined,\n id: undefined,\n noBorderCollapse: undefined,\n outlined: undefined,\n fixed: undefined,\n responsive: undefined,\n stacked: undefined,\n striped: undefined,\n stripedColumns: undefined,\n small: undefined,\n stickyHeader: undefined,\n // End BTableSimpleProps props\n})\nconst props = useDefaults(_props, 'BTableLite')\n\nconst emit = defineEmits<{\n 'head-clicked': [key: string, field: TableField<T>, event: MouseEvent, isFooter: boolean]\n 'row-clicked': [item: T, index: number, event: MouseEvent]\n 'row-dbl-clicked': [item: T, index: number, event: MouseEvent]\n 'row-hovered': [item: T, index: number, event: MouseEvent]\n 'row-unhovered': [item: T, index: number, event: MouseEvent]\n}>()\n\nconst generateDetailsItem = (item: TableItem): [object, boolean | undefined] => [\n item,\n item._showDetails,\n]\nconst detailsMap = ref(new WeakMap<object, boolean | undefined>())\nwatch(\n () => props.items,\n (items) => {\n items.forEach((item) => {\n if (!isTableItem(item)) return\n detailsMap.value.set(...generateDetailsItem(item))\n })\n },\n {deep: true, immediate: true}\n)\n\nconst computedTableClasses = computed(() => [\n props.tableClass,\n {\n [`align-${props.align}`]: props.align !== undefined,\n },\n])\n\nconst computedFields = computed<(TableField & {_noHeader?: true})[]>(() => {\n if (!props.fields.length && props.items.length) {\n const [firstItem] = props.items\n if (isTableItem(firstItem) || Array.isArray(firstItem)) {\n return Object.keys(firstItem).map((k) => {\n const label = startCase(k)\n return {\n key: k,\n label,\n tdAttr: props.stacked === true ? {'data-label': label} : undefined,\n }\n })\n }\n // The items are primitives, so we just return a single empty field\n // No header will be shown, as we don't know what to show\n return [{key: '', _noHeader: true}]\n }\n\n return props.fields.map((f) => {\n if (isTableField(f)) {\n return {\n ...(f as TableField),\n tdAttr:\n props.stacked === true\n ? {'data-label': startCase(f.key as string), ...f.tdAttr}\n : f.tdAttr,\n }\n }\n const label = startCase(f as string)\n return {\n key: f as string,\n label,\n tdAttr: props.stacked === true ? {'data-label': label} : undefined,\n }\n })\n})\nconst computedFieldsTotal = computed(() => computedFields.value.length)\nconst showComputedHeaders = computed(() => {\n // We only hide the header if all fields have _noHeader set to true. Which would be our doing\n // This usually happens under a circumstance of displaying an array of primitives\n // Under any other circumstance, I'm not sure how this would apply\n if (computedFields.value.length > 0 && computedFields.value.every((el) => el._noHeader === true))\n return false\n return true\n})\n\nconst itemAttributes = (item: T, fieldKey: string, attr?: unknown) => {\n const val = get(item, fieldKey)\n return attr && typeof attr === 'function' ? attr(val, fieldKey, item) : attr\n}\n\nconst callThAttr = (item: T | null, field: TableField<T>, type: TableRowThead) => {\n const fieldKey = String(field.key)\n const val = get(item, fieldKey)\n return field.thAttr && typeof field.thAttr === 'function'\n ? field.thAttr(val, fieldKey, item, type)\n : field.thAttr\n}\n\nconst headerClicked = (field: TableField<T>, event: Readonly<MouseEvent>, isFooter = false) => {\n emit('head-clicked', field.key as string, field, event, isFooter)\n}\n\nconst toggleRowDetails = (tr: T) => {\n if (isTableItem(tr)) {\n const prevValue = detailsMap.value.get(tr)\n detailsMap.value.set(tr, !prevValue)\n tr._showDetails = !prevValue\n }\n}\n\nconst getFieldColumnClasses = (field: TableField) => [\n field.class,\n field.thClass,\n {\n 'b-table-sticky-column': field.stickyColumn,\n },\n props.fieldColumnClass\n ? typeof props.fieldColumnClass === 'function'\n ? props.fieldColumnClass(field)\n : props.fieldColumnClass\n : null,\n]\n\nconst getFieldRowClasses = (field: Readonly<TableField>, tr: T) => {\n const val = get(tr, String(field.key))\n return [\n field.class,\n typeof field.tdClass === 'function' ? field.tdClass(val, String(field.key), tr) : field.tdClass,\n (isTableItem(tr) ? tr._cellVariants?.[field.key as string] : false)\n ? `table-${(tr as TableItem)._cellVariants?.[field.key as string]}`\n : null,\n {\n 'b-table-sticky-column': field.stickyColumn,\n },\n ]\n}\n\nconst callTbodyTrAttrs = (item: T | null, type: TableRowType) =>\n props.tbodyTrAttrs\n ? typeof props.tbodyTrAttrs === 'function'\n ? props.tbodyTrAttrs(item, type)\n : props.tbodyTrAttrs\n : null\n\nconst getRowClasses = (item: T | null, type: TableRowType) =>\n props.tbodyTrClass\n ? typeof props.tbodyTrClass === 'function'\n ? props.tbodyTrClass(item, type)\n : props.tbodyTrClass\n : null\n</script>\n","<template>\n <BTableLite\n v-bind=\"props\"\n :aria-busy=\"busyModel\"\n :items=\"computedDisplayItems\"\n :fields=\"computedFields as TableFieldRaw<T>[]\"\n :table-class=\"tableClasses\"\n :tbody-tr-class=\"getRowClasses\"\n :field-column-class=\"getFieldColumnClasses\"\n @head-clicked=\"onFieldHeadClick\"\n @row-dbl-clicked=\"\n (row: T, index: number, e: MouseEvent) => {\n emit('row-dbl-clicked', row, index, e)\n }\n \"\n @row-clicked=\"onRowClick\"\n @row-hovered=\"\n (row: T, index: number, e: MouseEvent) => {\n emit('row-hovered', row, index, e)\n }\n \"\n @row-unhovered=\"\n (row: T, index: number, e: MouseEvent) => {\n emit('row-unhovered', row, index, e)\n }\n \"\n >\n <template v-for=\"(_, name) in $slots\" #[name]=\"slotData\">\n <slot :name=\"name\" v-bind=\"slotData\" />\n </template>\n <template\n v-for=\"field in computedFields\"\n :key=\"field.key\"\n #[`head(${String(field.key)})`]=\"scope\"\n >\n <slot\n :name=\"$slots[`head(${String(field.key)})`] ? `head(${String(field.key)})` : 'head()'\"\n v-bind=\"scope\"\n >\n {{ getTableFieldHeadLabel(field) }}\n </slot>\n <template v-if=\"isSortable && !!scope.field.sortable && props.noSortableIcon === false\">\n <slot\n v-if=\"sortByModel?.find((el) => el.key === scope.field.key)?.order === 'asc'\"\n v-bind=\"{...scope}\"\n :name=\"\n $slots[`sortAsc(${String(scope.field.key)})`]\n ? `sortAsc(${String(scope.field.key)})`\n : 'sortAsc()'\n \"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n fill=\"currentColor\"\n class=\"bi bi-arrow-up-short\"\n viewBox=\"0 0 16 16\"\n aria-hidden\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M8 12a.5.5 0 0 0 .5-.5V5.707l2.146 2.147a.5.5 0 0 0 .708-.708l-3-3a.5.5 0 0 0-.708 0l-3 3a.5.5 0 1 0 .708.708L7.5 5.707V11.5a.5.5 0 0 0 .5.5z\"\n />\n </svg>\n </slot>\n <slot\n v-else-if=\"sortByModel?.find((el) => el.key === scope.field.key)?.order === 'desc'\"\n v-bind=\"{...scope}\"\n :name=\"\n $slots[`sortDesc(${String(scope.field.key)})`]\n ? `sortDesc(${String(scope.field.key)})`\n : 'sortDesc()'\n \"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n fill=\"currentColor\"\n class=\"bi bi-arrow-down-short\"\n viewBox=\"0 0 16 16\"\n aria-hidden\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M8 4a.5.5 0 0 1 .5.5v5.793l2.146-2.147a.5.5 0 0 1 .708.708l-3 3a.5.5 0 0 1-.708 0l-3-3a.5.5 0 1 1 .708-.708L7.5 10.293V4.5A.5.5 0 0 1 8 4z\"\n />\n </svg>\n </slot>\n <slot\n v-else\n v-bind=\"{...scope}\"\n :name=\"\n $slots[`sortDefault(${String(scope.field.key)})`]\n ? `sortDefault(${String(scope.field.key)})`\n : 'sortDefault()'\n \"\n >\n <svg\n :style=\"{opacity: 0.4}\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n fill=\"currentColor\"\n class=\"bi bi-arrow-up-short\"\n viewBox=\"0 0 16 16\"\n aria-hidden\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M8 12a.5.5 0 0 0 .5-.5V5.707l2.146 2.147a.5.5 0 0 0 .708-.708l-3-3a.5.5 0 0 0-.708 0l-3 3a.5.5 0 1 0 .708.708L7.5 5.707V11.5a.5.5 0 0 0 .5.5z\"\n />\n </svg>\n </slot>\n </template>\n </template>\n <template #custom-body=\"scope\">\n <BTr v-if=\"busyModel\" class=\"b-table-busy-slot\" :class=\"getBusyRowClasses\">\n <BTd :colspan=\"scope.fields.length\">\n <slot name=\"table-busy\">\n <BOverlay show>\n <template #overlay>\n <div class=\"d-flex align-items-center gap-2 mt-5\">\n <BSpinner />\n <strong>{{ props.busyLoadingText }}</strong>\n </div>\n </template>\n </BOverlay>\n </slot>\n </BTd>\n </BTr>\n </template>\n </BTableLite>\n</template>\n\n<script setup lang=\"ts\" generic=\"T\">\nimport {useToNumber} from '@vueuse/core'\nimport {computed, onMounted, type Ref, ref, watch} from 'vue'\nimport {formatItem} from '../../utils/formatItem'\nimport BOverlay from '../BOverlay/BOverlay.vue'\nimport BSpinner from '../BSpinner/BSpinner.vue'\nimport BTableLite from './BTableLite.vue'\nimport BTd from './BTd.vue'\nimport BTr from './BTr.vue'\nimport {\n type BTableSortBy,\n type BTableSortByOrder,\n isTableField,\n isTableItem,\n type NoProviderTypes,\n type TableField,\n type TableFieldRaw,\n type TableItem,\n type TableRowType,\n type TableStrictClassValue,\n} from '../../types/TableTypes'\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BTableProps} from '../../types/ComponentProps'\nimport {get, set} from '../../utils/object'\nimport {startCase} from '../../utils/stringUtils'\nimport {getTableFieldHeadLabel} from '../../utils/getTableFieldHeadLabel'\n\nconst _props = withDefaults(\n defineProps<Omit<BTableProps<T>, 'sortBy' | 'busy' | 'selectedItems'>>(),\n {\n noSortableIcon: false,\n perPage: Number.POSITIVE_INFINITY,\n filter: undefined,\n mustSort: false,\n filterable: undefined,\n provider: undefined,\n noProvider: undefined,\n noProviderPaging: false,\n noProviderSorting: false,\n multisort: false,\n noProviderFiltering: false,\n noLocalSorting: false,\n noSelectOnClick: false,\n selectable: false,\n stickySelect: false,\n selectHead: true,\n selectMode: 'multi',\n selectionVariant: 'primary',\n busyLoadingText: 'Loading...',\n currentPage: 1,\n // BTableLite props\n items: () => [],\n fields: () => [],\n // All others use defaults\n caption: undefined,\n align: undefined,\n footClone: undefined,\n labelStacked: undefined,\n showEmpty: undefined,\n emptyText: undefined,\n emptyFilteredText: undefined,\n fieldColumnClass: undefined,\n tbodyTrClass: undefined,\n captionHtml: undefined,\n detailsTdClass: undefined,\n headVariant: undefined,\n headRowVariant: undefined,\n footRowVariant: undefined,\n footVariant: undefined,\n modelValue: undefined,\n primaryKey: undefined,\n tbodyClass: undefined,\n tfootClass: undefined,\n tfootTrClass: undefined,\n theadClass: undefined,\n theadTrClass: undefined,\n // End BTableLite props\n // BTableSimple props\n borderVariant: undefined,\n variant: undefined,\n bordered: undefined,\n borderless: undefined,\n captionTop: undefined,\n dark: undefined,\n hover: undefined,\n id: undefined,\n noBorderCollapse: undefined,\n outlined: undefined,\n fixed: undefined,\n responsive: undefined,\n stacked: undefined,\n striped: undefined,\n stripedColumns: undefined,\n small: undefined,\n stickyHeader: undefined,\n // End BTableSimple props\n }\n)\nconst props = useDefaults(_props, 'BTable')\n\nconst emit = defineEmits<{\n 'filtered': [value: T[]]\n 'head-clicked': [key: string, field: TableField<T>, event: MouseEvent, isFooter: boolean]\n 'row-clicked': [item: T, index: number, event: MouseEvent]\n 'row-dbl-clicked': [item: T, index: number, event: MouseEvent]\n 'row-hovered': [item: T, index: number, event: MouseEvent]\n 'row-unhovered': [item: T, index: number, event: MouseEvent]\n 'row-selected': [value: T]\n 'row-unselected': [value: T]\n 'sorted': [value: BTableSortBy]\n 'change': [value: T[]]\n}>()\n\nconst sortByModel = defineModel<BTableProps<T>['sortBy']>('sortBy', {\n default: undefined,\n})\nconst busyModel = defineModel<Exclude<BTableProps<T>['busy'], undefined>>('busy', {\n default: false,\n})\nconst selectedItemsModel = defineModel<Exclude<BTableProps<T>['selectedItems'], undefined>>(\n 'selectedItems',\n {\n default: () => [],\n }\n)\n\nconst selectedItemsToSet = computed({\n get: () => new Set([...selectedItemsModel.value]),\n set: (val) => {\n selectedItemsModel.value = [...val]\n },\n})\n/**\n * This is to avoid the issue of directly mutating the array structure and to properly trigger the computed setter.\n * The utils also conveniently emit the proper events after\n */\nconst selectedItemsSetUtilities = {\n add: (item: T) => {\n const value = new Set(selectedItemsToSet.value)\n value.add(item)\n selectedItemsToSet.value = value\n emit('row-selected', item)\n },\n clear: () => {\n selectedItemsToSet.value.forEach((item) => {\n selectedItemsSetUtilities.delete(item)\n })\n },\n delete: (item: T) => {\n const value = new Set(selectedItemsToSet.value)\n if (props.primaryKey) {\n const pkey: string = props.primaryKey\n selectedItemsModel.value.forEach((v, i) => {\n const selectedKey = get(v, pkey)\n const itemKey = get(item, pkey)\n\n if (!!selectedKey && !!itemKey && selectedKey === itemKey) {\n value.delete(selectedItemsModel.value[i])\n }\n })\n } else {\n value.delete(item)\n }\n selectedItemsToSet.value = value\n emit('row-unselected', item)\n },\n set: (items: T[]) => {\n selectedItemsToSet.value = new Set(items)\n selectedItemsToSet.value.forEach((item) => {\n emit('row-unselected', item)\n })\n },\n has: (item: T) => {\n if (!props.primaryKey) return selectedItemsToSet.value.has(item)\n\n // Resolver for when we are using primary keys\n const pkey: string = props.primaryKey\n for (const selected of selectedItemsToSet.value) {\n const selectedKey = get(selected, pkey)\n const itemKey = get(item, pkey)\n\n if (!!selectedKey && !!itemKey && selectedKey === itemKey) return true\n }\n return false\n },\n} as const\n\n/**\n * Only stores data that is fetched when using the provider\n */\nconst internalItems: Ref<T[]> = ref([])\n\nconst perPageNumber = useToNumber(() => props.perPage, {method: 'parseInt'})\nconst currentPageNumber = useToNumber(() => props.currentPage, {method: 'parseInt'})\n\nconst isFilterableTable = computed(() => !!props.filter)\nconst usesProvider = computed(() => props.provider !== undefined)\nconst isSelecting = computed(() => selectedItemsToSet.value.size > 0)\n\nconst isSortable = computed(\n () =>\n sortByModel.value !== undefined ||\n props.fields.some(\n (field) => typeof field === 'object' && field !== null && field.sortable === true\n )\n)\n\nconst computedFields = computed<TableField<T>[]>(() =>\n props.fields.map((el) => {\n if (!isTableField(el)) {\n const label = startCase(el as string)\n return {\n key: el as string,\n label,\n tdAttr: props.stacked === true ? {'data-label': label} : undefined,\n }\n }\n\n const value = sortByModel.value?.find((sb) => el.key === sb.key)\n const sortValue =\n isSortable.value === false\n ? undefined\n : value === undefined\n ? 'none'\n : value.order === 'desc'\n ? 'descending'\n : value.order === 'asc'\n ? 'ascending'\n : 'none'\n\n return {\n ...(el as TableField<T>),\n thAttr: {\n 'aria-sort': sortValue,\n ...el.thAttr,\n },\n }\n })\n)\n\nconst tableClasses = computed(() => ({\n 'b-table-busy': busyModel.value,\n 'b-table-selectable': props.selectable,\n 'user-select-none': props.selectable && isSelecting.value,\n}))\n\nconst getBusyRowClasses = computed(() => [\n props.tbodyTrClass\n ? typeof props.tbodyTrClass === 'function'\n ? props.tbodyTrClass(null, 'table-busy')\n : props.tbodyTrClass\n : null,\n])\nconst getFieldColumnClasses = (field: TableField) => [\n {\n 'b-table-sortable-column': isSortable.value && field.sortable,\n },\n]\n// TODO this class has issues if the table has a variant already applied\n// Also the row should technically have aria-selected . Both things could probably just use a function with tbodyTrAttrs\n// But functional tbodyTrAttrs are not supported yet\n// Also the stuff for resolving functions could probably be made a util\nconst getRowClasses = (item: T | null, type: TableRowType): TableStrictClassValue => [\n {\n [`selected table-${props.selectionVariant}`]:\n props.selectable && !!item && selectedItemsSetUtilities.has(item),\n },\n props.tbodyTrClass\n ? typeof props.tbodyTrClass === 'function'\n ? props.tbodyTrClass(item, type)\n : props.tbodyTrClass\n : null,\n]\n\nconst computedItems = computed<T[]>(() => {\n const sortItems = (items: T[]) => {\n // \"undefined\" values are set by us, we do this so we dont wipe out the comparer\n const sortByItems = sortByModel.value?.filter((el) => !!el.order)\n\n if (!sortByItems || sortByItems.length === 0) return items\n\n // Multi-sort\n return [...items].sort((a, b) => {\n for (let i = 0; i < (sortByItems.length ?? 0); i++) {\n const sortOption = sortByItems[i]\n const realVal = (ob: T): string => {\n if (!isTableItem(ob)) return String(ob)\n\n const sortField = computedFields.value.find((el) => {\n if (isTableField(el)) return el.key === sortOption.key\n\n return false\n })\n const val = get(ob, sortOption.key as keyof TableItem)\n if (isTableField(sortField) && !!sortField.sortByFormatted) {\n const formatter =\n typeof sortField.sortByFormatted === 'function'\n ? sortField.sortByFormatted\n : sortField.formatter\n if (formatter) {\n return formatItem(ob, String(sortField.key), formatter) as string\n }\n }\n return typeof val === 'object' && val !== null\n ? JSON.stringify(val)\n : (val?.toString() ?? '')\n }\n\n const aValue = realVal(a)\n const bValue = realVal(b)\n const comparison = sortOption.comparer\n ? sortOption.comparer(aValue, bValue)\n : aValue.localeCompare(bValue, undefined, {numeric: true})\n\n if (comparison !== 0) {\n return sortOption.order === 'asc' ? comparison : -comparison\n }\n }\n return 0 // items are equal\n })\n }\n\n const filterItems = (items: T[]) =>\n items.filter((item) =>\n isTableItem(item)\n ? Object.entries(item).some(([key, val]) => {\n if (\n val === null ||\n val === undefined ||\n key[0] === '_' ||\n (!props.filterable?.includes(key) && !!props.filterable?.length)\n )\n return false\n const realVal = (): string => {\n const filterField = computedFields.value.find((el) => {\n if (isTableField(el)) return el.key === key\n\n return false\n })\n if (isTableField(filterField) && !!filterField.filterByFormatted) {\n const formatter =\n typeof filterField.filterByFormatted === 'function'\n ? filterField.filterByFormatted\n : filterField.formatter\n if (formatter) {\n return formatter(val, String(filterField.key), item) as string\n }\n }\n return typeof val === 'object' ? JSON.stringify(Object.values(val)) : val.toString()\n }\n const itemValue: string = realVal()\n return itemValue.toLowerCase().includes(props.filter?.toLowerCase() ?? '')\n })\n : true\n )\n\n let mappedItems = usesProvider.value ? internalItems.value : (props.items as T[])\n mappedItems = mappedItems.map((item) => {\n if (\n typeof item === 'object' &&\n item !== null &&\n Object.keys(item).some((key) => key.includes('.'))\n ) {\n // We use any here because the TS doesn't isn't certain that \"item\" is the same type as our newItem.\n // But we've determined that it's an object, so we can ignore it since they will always be the same \"object\"\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let newItem: any = {}\n for (const key in item) {\n if (key.includes('.')) {\n newItem = set(newItem, key, item[key])\n } else {\n newItem[key] = item[key]\n }\n }\n return newItem\n // return\n }\n return item\n })\n\n if (\n (isFilterableTable.value === true && !usesProvider.value) ||\n (isFilterableTable.value === true && usesProvider.value && props.noProviderFiltering)\n ) {\n mappedItems = filterItems(mappedItems)\n }\n\n if (\n (isSortable.value === true && !usesProvider.value && !props.noLocalSorting) ||\n (isSortable.value === true && usesProvider.value && props.noProviderSorting)\n ) {\n mappedItems = sortItems(mappedItems)\n }\n\n return mappedItems\n})\n\nconst computedDisplayItems = computed<T[]>(() => {\n if (Number.isNaN(perPageNumber.value) || (usesProvider.value && !props.noProviderPaging)) {\n return computedItems.value\n }\n\n return computedItems.value.slice(\n (currentPageNumber.value - 1) * (perPageNumber.value || Number.POSITIVE_INFINITY),\n currentPageNumber.value * (perPageNumber.value || Number.POSITIVE_INFINITY)\n )\n})\n\nwatch(computedDisplayItems, (v) => {\n emit('change', v)\n})\n\nconst handleRowSelection = (\n row: T,\n index: number,\n shiftClicked = false,\n ctrlClicked = false,\n metaClicked = false\n) => {\n if (!props.selectable) return\n\n if (props.selectMode === 'single' || props.selectMode === 'multi') {\n // Do nothing when these items are held\n if (shiftClicked || ctrlClicked) return\n // Delete if item is in\n if (selectedItemsSetUtilities.has(row)) {\n selectedItemsSetUtilities.delete(row)\n } else {\n if (props.selectMode === 'single') {\n selectedItemsSetUtilities.set([row])\n } else {\n selectedItemsSetUtilities.add(row)\n }\n }\n } else {\n if (ctrlClicked || metaClicked) {\n // Delete if in the object\n if (selectedItemsSetUtilities.has(row)) {\n selectedItemsSetUtilities.delete(row)\n // Otherwise add. Functions similarly to 'multi' at this point\n } else {\n selectedItemsSetUtilities.add(row)\n }\n // This is where range is different, due to the difference in shift\n } else if (shiftClicked) {\n const lastSelectedItem = [...selectedItemsToSet.value].pop()\n const lastSelectedIndex = props.items.findIndex((i) => i === lastSelectedItem)\n const selectStartIndex = Math.min(lastSelectedIndex, index)\n const selectEndIndex = Math.max(lastSelectedIndex, index)\n const items = props.items.slice(selectStartIndex, selectEndIndex + 1)\n selectedItemsSetUtilities.set(items)\n // If nothing is being held, then we just behave like it's single mode\n } else {\n selectedItemsSetUtilities.set([row])\n }\n }\n}\n\nconst onRowClick = (row: T, index: number, e: MouseEvent) => {\n if (props.noSelectOnClick === false) {\n handleRowSelection(row, index, e.shiftKey, e.ctrlKey, e.metaKey)\n }\n emit('row-clicked', row, index, e)\n}\n\nconst handleFieldSorting = (field: TableField<T>) => {\n if (!isSortable.value) return\n\n const fieldKey = typeof field === 'object' && field !== null ? field.key : field\n const fieldSortable = typeof field === 'object' && field !== null ? field.sortable : false\n\n if (!(isSortable.value === true && fieldSortable === true)) return\n\n const resolveOrder = (val: BTableSortByOrder): BTableSortByOrder | undefined => {\n if (val === 'asc') return 'desc'\n if (val === undefined) return 'asc'\n if (\n props.mustSort === true ||\n (Array.isArray(props.mustSort) && props.mustSort.includes(fieldKey as string))\n )\n return 'asc'\n return undefined\n }\n\n const index = sortByModel.value?.findIndex((el) => el.key === fieldKey) ?? -1\n const originalValue = sortByModel.value?.[index]\n const updatedValue: BTableSortBy =\n // If value is new, we default to ascending\n // Otherwise we make a temp copy of the value\n index === -1 || !originalValue ? {key: fieldKey as string, order: 'asc'} : {...originalValue}\n\n /**\n * @returns the updated value to emit for sorted\n */\n const handleMultiSort = (): BTableSortBy => {\n let val = updatedValue\n if (index === -1) {\n sortByModel.value = [...(sortByModel.value ?? []), updatedValue]\n } else {\n const order = resolveOrder(updatedValue.order)\n val = {...updatedValue, order}\n sortByModel.value = order\n ? sortByModel.value?.map((el) => (el.key === val.key ? val : el))\n : sortByModel.value?.filter((el) => el.key !== val.key)\n }\n return val\n }\n\n /**\n * @returns the updated value to emit for sorted\n */\n const handleSingleSort = (): BTableSortBy => {\n const val = {\n ...updatedValue,\n order: index === -1 ? updatedValue.order : resolveOrder(updatedValue.order),\n }\n sortByModel.value = [val]\n return val\n }\n\n // Then emit the returned updated value\n emit('sorted', props.multisort === true ? handleMultiSort() : handleSingleSort())\n}\n\nconst onFieldHeadClick = (\n fieldKey: string,\n field: TableField<T>,\n event: Readonly<MouseEvent>,\n isFooter = false\n) => {\n emit('head-clicked', fieldKey, field, event, isFooter)\n handleFieldSorting(field)\n}\n\nconst callItemsProvider = async () => {\n if (!usesProvider.value || props.provider === undefined || busyModel.value) return\n busyModel.value = true\n const response = props.provider({\n currentPage: currentPageNumber.value,\n filter: props.filter,\n sortBy: sortByModel.value,\n perPage: perPageNumber.value,\n })\n try {\n const items = response instanceof Promise ? await response : response\n\n if (items === undefined) return\n internalItems.value = items\n } finally {\n // Potential race condition could occur if the user explicitly sets the busy value to a different value while the response promise is executing\n // which would have been the users choice.\n // eslint-disable-next-line require-atomic-updates\n busyModel.value = false\n }\n}\n\nconst providerPropsWatch = async (prop: string, val: unknown, oldVal: unknown) => {\n if (val === oldVal) return\n\n //stop provide when paging\n const inNoProvider = (key: NoProviderTypes) => props.noProvider?.includes(key) === true\n const noProvideWhenPaging =\n (prop === 'currentPage' || prop === 'perPage') &&\n (inNoProvider('paging') || props.noProviderPaging === true)\n const noProvideWhenFiltering =\n prop === 'filter' && (inNoProvider('filtering') || props.noProviderFiltering === true)\n const noProvideWhenSorting =\n (prop === 'sortBy' || prop === 'sortDesc') &&\n (inNoProvider('sorting') || props.noProviderSorting === true)\n\n if (noProvideWhenPaging || noProvideWhenFiltering || noProvideWhenSorting) return\n\n if (usesProvider.value === true) {\n await callItemsProvider()\n }\n\n if (!(prop === 'currentPage' || prop === 'perPage')) {\n emit('filtered', [...computedItems.value])\n }\n}\n\nwatch(\n () => props.filter,\n (filter, oldFilter) => {\n providerPropsWatch('filter', filter, oldFilter)\n\n if (filter === oldFilter || usesProvider.value) return\n if (!filter) {\n emit('filtered', [...computedItems.value])\n }\n }\n)\nwatch(currentPageNumber, (val, oldVal) => {\n providerPropsWatch('currentPage', val, oldVal)\n})\nwatch(perPageNumber, (val, oldVal) => {\n providerPropsWatch('perPage', val, oldVal)\n})\nwatch(\n sortByModel,\n (val, oldVal) => {\n providerPropsWatch('sortBy', val, oldVal)\n },\n {deep: true}\n)\n\nwatch(\n () => props.provider,\n (newValue) => {\n // Reset the internal values if the provider stops getting used\n if (newValue === undefined) {\n internalItems.value = []\n return\n }\n // Otherwise we should refresh the table on such a change\n callItemsProvider()\n }\n)\n\nonMounted(callItemsProvider)\n\ndefineExpose({\n // The row selection methods are really for compat. Users should probably use the v-model though\n clearSelected: () => {\n if (!props.selectable) return\n selectedItemsSetUtilities.clear()\n },\n refresh: callItemsProvider,\n selectAllRows: () => {\n if (!props.selectable) return\n const unselectableItems = selectedItemsToSet.value.size > 0 ? [...selectedItemsToSet.value] : []\n selectedItemsToSet.value = new Set([...computedItems.value])\n selectedItemsToSet.value.forEach((item) => {\n if (unselectableItems.includes(item)) return\n emit('row-selected', item)\n })\n },\n selectRow: (index: number) => {\n if (!props.selectable) return\n const item = computedItems.value[index]\n if (!item || selectedItemsSetUtilities.has(item)) return\n selectedItemsSetUtilities.add(item)\n },\n unselectRow: (index: number) => {\n if (!props.selectable) return\n const item = computedItems.value[index]\n if (!item || !selectedItemsSetUtilities.has(item)) return\n selectedItemsSetUtilities.delete(item)\n },\n isRowSelected: (index: number) => {\n if (!props.selectable) return false\n const item = computedItems.value[index]\n return selectedItemsSetUtilities.has(item)\n },\n})\n</script>\n"],"names":["formatItem","item","fieldKey","formatter","val","get","isTableItem","value","isTableField","_props","__props","props","useDefaults","computedClasses","computed","variant","stickyColumn","scope","colspan","rowspan","getTableFieldHeadLabel","field","titleCase","label","key","TABLE_TAG_NAMES","eventFilter","join","filterEvent","event","target","el","disabled","indexOf","tagName","closest","labelFor","getAttribute","input","document","getElementById","querySelector","matches","emit","__emit","detailsMap","ref","WeakMap","vue","watch","items","forEach","set","_showDetails","generateDetailsItem","deep","immediate","computedTableClasses","tableClass","align","computedFields","fields","length","firstItem","Array","isArray","Object","keys","map","k","startCase","tdAttr","stacked","_noHeader","f","computedFieldsTotal","showComputedHeaders","every","callThAttr","type","String","thAttr","headerClicked","isFooter","toggleRowDetails","tr","prevValue","getFieldColumnClasses","class","thClass","fieldColumnClass","getFieldRowClasses","tdClass","_a","_cellVariants","_b","callTbodyTrAttrs","tbodyTrAttrs","getRowClasses","tbodyTrClass","attr","sortByModel","_useModel","busyModel","selectedItemsModel","useModel","selectedItemsToSet","Set","selectedItemsSetUtilities","add","clear","delete","primaryKey","pkey","v","i","selectedKey","itemKey","has","selected","internalItems","perPageNumber","useToNumber","perPage","method","currentPageNumber","currentPage","isFilterableTable","filter","usesProvider","provider","isSelecting","size","isSortable","some","sortable","find","sb","sortValue","order","tableClasses","selectable","getBusyRowClasses","selectionVariant","computedItems","mappedItems","includes","newItem","noProviderFiltering","entries","filterable","filterField","filterByFormatted","JSON","stringify","values","toString","realVal","toLowerCase","_c","noLocalSorting","noProviderSorting","sortByItems","sort","a","b","sortOption","ob","sortField","sortByFormatted","aValue","bValue","comparison","comparer","localeCompare","numeric","sortItems","computedDisplayItems","Number","isNaN","noProviderPaging","slice","POSITIVE_INFINITY","onRowClick","row","index","e","noSelectOnClick","shiftClicked","ctrlClicked","metaClicked","selectMode","lastSelectedItem","pop","lastSelectedIndex","findIndex","selectStartIndex","Math","min","selectEndIndex","max","handleRowSelection","shiftKey","ctrlKey","metaKey","onFieldHeadClick","fieldSortable","resolveOrder","mustSort","originalValue","updatedValue","multisort","handleMultiSort","handleSingleSort","handleFieldSorting","callItemsProvider","async","response","sortBy","Promise","providerPropsWatch","prop","oldVal","inNoProvider","noProvider","noProvideWhenPaging","noProvideWhenFiltering","noProvideWhenSorting","oldFilter","newValue","onMounted","__expose","clearSelected","refresh","selectAllRows","unselectableItems","selectRow","unselectRow","isRowSelected"],"mappings":"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"}
1
+ {"version":3,"file":"BTable.vue_vue_type_script_setup_true_lang-D0H4HA45.js","sources":["../src/utils/formatItem.ts","../src/types/TableTypes.ts","../src/components/BTable/BTbody.vue","../src/components/BTable/BTd.vue","../src/components/BTable/BTfoot.vue","../src/components/BTable/BTh.vue","../src/components/BTable/BThead.vue","../src/components/BTable/BTr.vue","../src/utils/getTableFieldHeadLabel.ts","../src/utils/filterEvent.ts","../src/components/BTable/BTableLite.vue","../src/components/BTable/BTable.vue"],"sourcesContent":["import type {TableFieldFormatter} from '../types/TableTypes'\nimport {get} from './object'\n\nexport const formatItem = (\n item: unknown,\n // Weakly type fieldKey because it can be a nested string, such as 'foo.bar.baz'\n fieldKey: string,\n formatter?: TableFieldFormatter<unknown>\n) => {\n const val = get(item, fieldKey)\n return formatter && typeof formatter === 'function' ? formatter(val, fieldKey, item) : val\n}\n","import type {StyleValue} from 'vue'\nimport type {ColorVariant} from './ColorTypes'\nimport type {MaybePromise} from './MaybePromise'\nimport type {LiteralUnion} from './LiteralUnion'\nimport type {AttrsValue, ClassValue} from './AnyValuedAttributes'\n\nexport type TableItem<T = Record<string, unknown>> = T & {\n _rowVariant?: ColorVariant | null\n _cellVariants?: Partial<Record<keyof T, ColorVariant>>\n _showDetails?: boolean\n}\n\nexport const isTableItem = (value: unknown): value is TableItem =>\n typeof value === 'object' && value !== null\n\n// undefined means no sorting\nexport type BTableSortByOrder = 'desc' | 'asc' | undefined\n\nexport type BTableSortBy = {\n order: BTableSortByOrder\n key: string\n comparer?: (a: string, b: string) => number\n}\n\nexport type BTableProviderContext = {\n sortBy: BTableSortBy[] | undefined\n filter: string | undefined\n currentPage: number\n perPage: number\n}\n\nexport type BTableProvider<T> = (\n context: Readonly<BTableProviderContext>\n) => MaybePromise<T[] | undefined>\n\nexport type TableFieldFormatter<T> = (value: unknown, key: string, item: T) => string\n\nexport type TableRowType = 'row' | 'row-details' | 'row-top' | 'row-bottom' | 'table-busy'\nexport type TableRowThead = 'top' | 'bottom'\n\nexport type TableStrictClassValue = string | unknown[] | Record<string, boolean>\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type TableField<T = any> = {\n key: LiteralUnion<keyof T>\n label?: string\n headerTitle?: string\n headerAbbr?: string\n class?: ClassValue\n formatter?: TableFieldFormatter<T>\n sortable?: boolean\n sortKey?: string\n sortDirection?: string\n sortByFormatted?: boolean | TableFieldFormatter<T>\n filterByFormatted?: boolean | TableFieldFormatter<T>\n tdClass?:\n | TableStrictClassValue\n | ((value: unknown, key: string, item: T) => TableStrictClassValue)\n thClass?: ClassValue\n thStyle?: StyleValue\n variant?: ColorVariant | null\n tdAttr?: AttrsValue | ((value: unknown, key: string, item: T) => AttrsValue)\n thAttr?:\n | AttrsValue\n | ((value: unknown, key: string, item: T | null, type: TableRowThead) => AttrsValue)\n isRowHeader?: boolean\n stickyColumn?: boolean\n}\n\nexport type TableFieldRaw<T = unknown> = T extends object\n ? LiteralUnion<keyof T> | TableField<T>\n : string | TableField\n\nexport const isTableField = <T>(value: unknown): value is TableField<T> =>\n typeof value === 'object' && value !== null && 'key' in value\n\nexport const isTableFieldRaw = <T>(value: unknown): value is TableFieldRaw<T> =>\n typeof value === 'string' || isTableField(value)\n\nexport type NoProviderTypes = 'paging' | 'sorting' | 'filtering'\n","<template>\n <tbody :class=\"computedClasses\">\n <slot />\n </tbody>\n</template>\n\n<script setup lang=\"ts\">\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BTbodyProps} from '../../types/ComponentProps'\nimport {computed} from 'vue'\n\nconst _props = withDefaults(defineProps<BTbodyProps>(), {\n variant: null,\n})\nconst props = useDefaults(_props, 'BTbody')\n\ndefineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: (props: Record<string, never>) => any\n}>()\n\nconst computedClasses = computed(() => ({\n [`thead-${props.variant}`]: props.variant !== null,\n}))\n</script>\n","<template>\n <td\n :scope=\"scope\"\n :class=\"computedClasses\"\n :colspan=\"props.colspan\"\n :rowspan=\"props.rowspan\"\n :data-label=\"props.stackedHeading\"\n >\n <div v-if=\"props.stackedHeading\">\n <slot />\n </div>\n <slot v-else />\n </td>\n</template>\n\n<script setup lang=\"ts\">\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BTdProps} from '../../types/ComponentProps'\nimport {computed} from 'vue'\n\nconst _props = withDefaults(defineProps<BTdProps>(), {\n colspan: undefined,\n rowspan: undefined,\n stackedHeading: undefined,\n stickyColumn: false,\n variant: null,\n})\nconst props = useDefaults(_props, 'BTd')\n\ndefineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: (props: Record<string, never>) => any\n}>()\n\nconst computedClasses = computed(() => ({\n [`table-${props.variant}`]: props.variant !== null,\n 'b-table-sticky-column': props.stickyColumn,\n 'table-b-table-default': props.stickyColumn && props.variant === null,\n}))\n\nconst scope = computed(() => (props.colspan ? 'colspan' : props.rowspan ? 'rowspan' : 'col'))\n</script>\n","<template>\n <tfoot :class=\"computedClasses\">\n <slot />\n </tfoot>\n</template>\n\n<script setup lang=\"ts\">\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BTfootProps} from '../../types/ComponentProps'\nimport {computed} from 'vue'\n\nconst _props = withDefaults(defineProps<BTfootProps>(), {\n variant: null,\n})\nconst props = useDefaults(_props, 'BTfoot')\n\ndefineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: (props: Record<string, never>) => any\n}>()\n\nconst computedClasses = computed(() => ({\n [`table-${props.variant}`]: props.variant !== null,\n}))\n</script>\n","<template>\n <th\n :scope=\"scope\"\n :class=\"computedClasses\"\n :colspan=\"props.colspan\"\n :rowspan=\"props.rowspan\"\n :data-label=\"props.stackedHeading\"\n >\n <div v-if=\"props.stackedHeading !== undefined\">\n <slot />\n </div>\n <slot v-else />\n </th>\n</template>\n\n<script setup lang=\"ts\">\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BThProps} from '../../types/ComponentProps'\nimport {computed} from 'vue'\n\nconst _props = withDefaults(defineProps<BThProps>(), {\n colspan: undefined,\n rowspan: undefined,\n stackedHeading: undefined,\n stickyColumn: false,\n variant: null,\n})\nconst props = useDefaults(_props, 'BTh')\n\ndefineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: (props: Record<string, never>) => any\n}>()\n\nconst computedClasses = computed(() => ({\n [`table-${props.variant}`]: props.variant !== null,\n 'b-table-sticky-column': props.stickyColumn,\n 'table-b-table-default': props.stickyColumn && props.variant === null,\n}))\n\nconst scope = computed(() => (props.colspan ? 'colspan' : props.rowspan ? 'rowspan' : 'col'))\n</script>\n","<template>\n <thead :class=\"computedClasses\">\n <slot />\n </thead>\n</template>\n\n<script setup lang=\"ts\">\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BTheadProps} from '../../types/ComponentProps'\nimport {computed} from 'vue'\n\nconst _props = withDefaults(defineProps<BTheadProps>(), {\n variant: null,\n})\nconst props = useDefaults(_props, 'BThead')\n\ndefineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: (props: Record<string, never>) => any\n}>()\n\nconst computedClasses = computed(() => ({\n [`table-${props.variant}`]: props.variant !== null,\n}))\n</script>\n","<template>\n <tr :class=\"computedClasses\">\n <slot />\n </tr>\n</template>\n\n<script setup lang=\"ts\">\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BTrProps} from '../../types/ComponentProps'\nimport {computed} from 'vue'\n\nconst _props = withDefaults(defineProps<BTrProps>(), {\n variant: null,\n})\nconst props = useDefaults(_props, 'BTr')\n\ndefineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: (props: Record<string, never>) => any\n}>()\n\nconst computedClasses = computed(() => ({\n [`table-${props.variant}`]: props.variant !== null,\n}))\n</script>\n","import {titleCase} from './stringUtils'\nimport type {TableFieldRaw} from '../types/TableTypes'\n\nexport const getTableFieldHeadLabel = (field: Readonly<TableFieldRaw<unknown>>) =>\n typeof field === 'string'\n ? titleCase(field)\n : field.label !== undefined\n ? field.label\n : typeof field.key === 'string'\n ? titleCase(field.key)\n : field.key\n","const TABLE_TAG_NAMES = ['TD', 'TH', 'TR']\n\n// Filter CSS selector for click/dblclick/etc. events\n// If any of these selectors match the clicked element, we ignore the event\nconst eventFilter = [\n 'a',\n 'a *', // Include content inside links\n 'button',\n 'button *', // Include content inside buttons\n 'input:not(.disabled):not([disabled])',\n 'select:not(.disabled):not([disabled])',\n 'textarea:not(.disabled):not([disabled])',\n '[role=\"link\"]',\n '[role=\"link\"] *',\n '[role=\"button\"]',\n '[role=\"button\"] *',\n '[tabindex]:not(.disabled):not([disabled])',\n].join(',')\n\n// Returns `true` if we should ignore the click/double-click/keypress event\n// Avoids having the user need to use `@click.stop` on the form control\nexport const filterEvent = (event: Readonly<Event>) => {\n // Exit early when we don't have a target element\n if (!event || !event.target) {\n return false\n }\n const el = event.target as HTMLElement\n // Exit early when element is disabled or a table element\n if (('disabled' in el && el.disabled) || TABLE_TAG_NAMES.indexOf(el.tagName) !== -1) {\n return false\n }\n // Ignore the click when it was inside a dropdown menu\n if (el.closest('.dropdown-menu')) return true\n\n const label = el.tagName === 'LABEL' ? el : el.closest('label')\n // If the label's form control is not disabled then we don't propagate event\n // Modern browsers have `label.control` that references the associated input, but IE 11\n // does not have this property on the label element, so we resort to DOM lookups\n if (label) {\n const labelFor = label.getAttribute('for')\n const input = labelFor\n ? document.getElementById(labelFor)\n : label.querySelector('input, select, textarea')\n if (input && !(input as HTMLInputElement).disabled) {\n return true\n }\n }\n // Otherwise check if the event target matches one of the selectors in the\n // event filter (i.e. anchors, non disabled inputs, etc.)\n // Return `true` if we should ignore the event\n return el.matches(eventFilter)\n}\n","<template>\n <BTableSimple\n :id=\"props.id\"\n :bordered=\"props.bordered\"\n :borderless=\"props.borderless\"\n :border-variant=\"props.borderVariant\"\n :caption-top=\"props.captionTop\"\n :dark=\"props.dark\"\n :fixed=\"props.fixed\"\n :hover=\"props.hover\"\n :no-border-collapse=\"props.noBorderCollapse\"\n :outlined=\"props.outlined\"\n :responsive=\"props.responsive\"\n :small=\"props.small\"\n :stacked=\"props.stacked\"\n :sticky-header=\"props.stickyHeader\"\n :striped=\"props.striped\"\n :table-class=\"computedTableClasses\"\n :variant=\"props.variant\"\n :striped-columns=\"props.stripedColumns\"\n >\n <BThead v-show=\"showComputedHeaders\" :variant=\"props.headVariant\" :class=\"props.theadClass\">\n <slot v-if=\"$slots['thead-top']\" name=\"thead-top\" />\n <BTr :variant=\"props.headRowVariant\" :class=\"props.theadTrClass\">\n <BTh\n v-for=\"field in computedFields\"\n :key=\"field.key\"\n scope=\"col\"\n :class=\"getFieldColumnClasses(field)\"\n :title=\"field.headerTitle\"\n :variant=\"field.variant\"\n :abbr=\"field.headerAbbr\"\n :style=\"field.thStyle\"\n v-bind=\"callThAttr(null, field, 'top')\"\n @click=\"headerClicked(field, $event)\"\n >\n <slot\n :name=\"$slots[`head(${String(field.key)})`] ? `head(${String(field.key)})` : 'head()'\"\n :label=\"field.label\"\n :column=\"field.key\"\n :field=\"field\"\n :is-foot=\"false\"\n >\n {{ getTableFieldHeadLabel(field) }}\n </slot>\n </BTh>\n </BTr>\n <BTr v-if=\"$slots['thead-sub']\">\n <BTd\n v-for=\"field in computedFields\"\n :key=\"field.key\"\n scope=\"col\"\n :variant=\"field.variant\"\n :class=\"[field.class, field.thClass]\"\n >\n <slot name=\"thead-sub\" :items=\"computedFields\" v-bind=\"field\">\n {{ field.label }}\n </slot>\n </BTd>\n </BTr>\n </BThead>\n <BTbody :class=\"props.tbodyClass\">\n <slot\n name=\"custom-body\"\n :fields=\"computedFields\"\n :items=\"props.items\"\n :columns=\"computedFields.length\"\n >\n <BTr\n v-if=\"!props.stacked && $slots['top-row']\"\n :class=\"getRowClasses(null, 'row-top')\"\n v-bind=\"callTbodyTrAttrs(null, 'row-top')\"\n >\n <slot name=\"top-row\" />\n </BTr>\n\n <template\n v-for=\"(item, itemIndex) in props.items\"\n :key=\"props.primaryKey ? get(item, props.primaryKey) : itemIndex\"\n >\n <BTr\n :class=\"getRowClasses(item, 'row')\"\n :variant=\"isTableItem(item) ? item._rowVariant : undefined\"\n v-bind=\"callTbodyTrAttrs(item, 'row')\"\n @click=\"!filterEvent($event) && emit('row-clicked', item, itemIndex, $event)\"\n @dblclick=\"!filterEvent($event) && emit('row-dbl-clicked', item, itemIndex, $event)\"\n @mouseenter=\"!filterEvent($event) && emit('row-hovered', item, itemIndex, $event)\"\n @mouseleave=\"!filterEvent($event) && emit('row-unhovered', item, itemIndex, $event)\"\n >\n <BTd\n v-for=\"field in computedFields\"\n :key=\"field.key\"\n :variant=\"\n (isTableItem(item) ? item._cellVariants?.[field.key as string] : false)\n ? null\n : field.variant\n \"\n :class=\"getFieldRowClasses(field, item)\"\n v-bind=\"itemAttributes(item, String(field.key), field.tdAttr)\"\n >\n <label v-if=\"props.stacked && props.labelStacked\" class=\"b-table-stacked-label\">\n {{ getTableFieldHeadLabel(field) }}\n </label>\n <slot\n :name=\"\n $slots[`cell(${String(field.key)})`] ? `cell(${String(field.key)})` : 'cell()'\n \"\n :value=\"formatItem(item, String(field.key), field.formatter)\"\n :unformatted=\"get(item, String(field.key))\"\n :index=\"itemIndex\"\n :item=\"item\"\n :field=\"field\"\n :items=\"items\"\n :toggle-details=\"\n () => {\n toggleRowDetails(item)\n }\n \"\n :details-showing=\"isTableItem(item) ? (detailsMap.get(item) ?? false) : false\"\n >\n <template v-if=\"!$slots[`cell(${String(field.key)})`] && !$slots['cell()']\">\n {{ formatItem(item, String(field.key), field.formatter) }}\n </template>\n </slot>\n </BTd>\n </BTr>\n\n <template\n v-if=\"isTableItem(item) && detailsMap.get(item) === true && $slots['row-details']\"\n >\n <BTr aria-hidden=\"true\" role=\"presentation\" class=\"d-none\" />\n <BTr\n :class=\"getRowClasses(item, 'row-details')\"\n :variant=\"item._rowVariant\"\n v-bind=\"callTbodyTrAttrs(item, 'row-details')\"\n >\n <BTd :colspan=\"computedFieldsTotal\" :class=\"detailsTdClass\">\n <slot\n name=\"row-details\"\n :item=\"item\"\n :toggle-details=\"\n () => {\n toggleRowDetails(item)\n }\n \"\n :fields=\"props.fields\"\n :index=\"itemIndex\"\n />\n </BTd>\n </BTr>\n </template>\n </template>\n <BTr v-if=\"props.showEmpty && props.items.length === 0\" class=\"b-table-empty-slot\">\n <BTd :colspan=\"computedFieldsTotal\">\n <slot name=\"empty\" :items=\"props.items\">\n {{ props.emptyText }}\n </slot>\n </BTd>\n </BTr>\n <!-- This class is for specific targetting of this slot element -->\n <BTr\n v-if=\"!props.stacked && $slots['bottom-row']\"\n class=\"bottom-row\"\n :class=\"getRowClasses(null, 'row-bottom')\"\n v-bind=\"callTbodyTrAttrs(null, 'row-bottom')\"\n >\n <slot name=\"bottom-row\" />\n </BTr>\n </slot>\n </BTbody>\n <BTfoot v-if=\"props.footClone\" :variant=\"props.footVariant\" :class=\"props.tfootClass\">\n <BTr :variant=\"props.footRowVariant\" :class=\"props.tfootTrClass\">\n <BTh\n v-for=\"field in computedFields\"\n :key=\"field.key\"\n scope=\"col\"\n :class=\"getFieldColumnClasses(field)\"\n :title=\"field.headerTitle\"\n :abbr=\"field.headerAbbr\"\n :style=\"field.thStyle\"\n :variant=\"field.variant\"\n v-bind=\"callThAttr(null, field, 'bottom')\"\n @click=\"headerClicked(field, $event, true)\"\n >\n <div class=\"d-inline-flex flex-nowrap align-items-center gap-1\">\n <div>\n <slot\n :name=\"\n $slots[`foot(${String(field.key)})`] ? `foot(${String(field.key)})` : 'foot()'\n \"\n :label=\"field.label\"\n :column=\"field.key\"\n :field=\"field\"\n :is-foot=\"true\"\n >\n {{ getTableFieldHeadLabel(field) }}\n </slot>\n </div>\n </div>\n </BTh>\n </BTr>\n </BTfoot>\n <BTfoot v-else-if=\"$slots['custom-foot']\">\n <slot\n name=\"custom-foot\"\n :fields=\"computedFields\"\n :items=\"props.items\"\n :columns=\"computedFields.length\"\n />\n </BTfoot>\n <caption v-if=\"$slots['table-caption'] || props.caption\">\n <slot name=\"table-caption\">\n {{ props.caption }}\n </slot>\n </caption>\n </BTableSimple>\n</template>\n\n<script setup lang=\"ts\" generic=\"T\">\nimport {computed, ref, watch} from 'vue'\nimport type {BTableLiteProps} from '../../types/ComponentProps'\nimport {\n isTableField,\n isTableItem,\n type TableField,\n type TableItem,\n type TableRowThead,\n type TableRowType,\n} from '../../types/TableTypes'\nimport BTableSimple from './BTableSimple.vue'\nimport BTbody from './BTbody.vue'\nimport BTd from './BTd.vue'\nimport BTfoot from './BTfoot.vue'\nimport BTh from './BTh.vue'\nimport BThead from './BThead.vue'\nimport BTr from './BTr.vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {get} from '../../utils/object'\nimport {getTableFieldHeadLabel} from '../../utils/getTableFieldHeadLabel'\nimport {formatItem} from '../../utils/formatItem'\nimport {filterEvent} from '../../utils/filterEvent'\nimport {startCase} from '../../utils/stringUtils'\n\nconst _props = withDefaults(defineProps<BTableLiteProps<T>>(), {\n caption: undefined,\n align: undefined,\n fields: () => [],\n footClone: false,\n items: () => [],\n labelStacked: false,\n showEmpty: false,\n emptyText: 'There are no records to show',\n emptyFilteredText: 'There are no records matching your request', // TODO not implemented\n fieldColumnClass: undefined,\n tbodyTrClass: undefined,\n captionHtml: undefined,\n detailsTdClass: undefined,\n headVariant: undefined,\n headRowVariant: undefined,\n footRowVariant: undefined,\n footVariant: undefined,\n modelValue: undefined,\n primaryKey: undefined,\n tbodyClass: undefined,\n tbodyTrAttrs: undefined,\n tfootClass: undefined,\n tfootTrClass: undefined,\n theadClass: undefined,\n theadTrClass: undefined,\n // BTableSimpleProps props\n borderVariant: undefined,\n tableClass: undefined,\n variant: undefined,\n bordered: undefined,\n borderless: undefined,\n captionTop: undefined,\n dark: undefined,\n hover: undefined,\n id: undefined,\n noBorderCollapse: undefined,\n outlined: undefined,\n fixed: undefined,\n responsive: undefined,\n stacked: undefined,\n striped: undefined,\n stripedColumns: undefined,\n small: undefined,\n stickyHeader: undefined,\n // End BTableSimpleProps props\n})\nconst props = useDefaults(_props, 'BTableLite')\n\nconst emit = defineEmits<{\n 'head-clicked': [key: string, field: TableField<T>, event: MouseEvent, isFooter: boolean]\n 'row-clicked': [item: T, index: number, event: MouseEvent]\n 'row-dbl-clicked': [item: T, index: number, event: MouseEvent]\n 'row-hovered': [item: T, index: number, event: MouseEvent]\n 'row-unhovered': [item: T, index: number, event: MouseEvent]\n}>()\n\nconst generateDetailsItem = (item: TableItem): [object, boolean | undefined] => [\n item,\n item._showDetails,\n]\nconst detailsMap = ref(new WeakMap<object, boolean | undefined>())\nwatch(\n () => props.items,\n (items) => {\n items.forEach((item) => {\n if (!isTableItem(item)) return\n detailsMap.value.set(...generateDetailsItem(item))\n })\n },\n {deep: true, immediate: true}\n)\n\nconst computedTableClasses = computed(() => [\n props.tableClass,\n {\n [`align-${props.align}`]: props.align !== undefined,\n },\n])\n\nconst computedFields = computed<(TableField & {_noHeader?: true})[]>(() => {\n if (!props.fields.length && props.items.length) {\n const [firstItem] = props.items\n if (isTableItem(firstItem) || Array.isArray(firstItem)) {\n return Object.keys(firstItem).map((k) => {\n const label = startCase(k)\n return {\n key: k,\n label,\n tdAttr: props.stacked === true ? {'data-label': label} : undefined,\n }\n })\n }\n // The items are primitives, so we just return a single empty field\n // No header will be shown, as we don't know what to show\n return [{key: '', _noHeader: true}]\n }\n\n return props.fields.map((f) => {\n if (isTableField(f)) {\n return {\n ...(f as TableField),\n tdAttr:\n props.stacked === true\n ? {'data-label': startCase(f.key as string), ...f.tdAttr}\n : f.tdAttr,\n }\n }\n const label = startCase(f as string)\n return {\n key: f as string,\n label,\n tdAttr: props.stacked === true ? {'data-label': label} : undefined,\n }\n })\n})\nconst computedFieldsTotal = computed(() => computedFields.value.length)\nconst showComputedHeaders = computed(() => {\n // We only hide the header if all fields have _noHeader set to true. Which would be our doing\n // This usually happens under a circumstance of displaying an array of primitives\n // Under any other circumstance, I'm not sure how this would apply\n if (computedFields.value.length > 0 && computedFields.value.every((el) => el._noHeader === true))\n return false\n return true\n})\n\nconst itemAttributes = (item: T, fieldKey: string, attr?: unknown) => {\n const val = get(item, fieldKey)\n return attr && typeof attr === 'function' ? attr(val, fieldKey, item) : attr\n}\n\nconst callThAttr = (item: T | null, field: TableField<T>, type: TableRowThead) => {\n const fieldKey = String(field.key)\n const val = get(item, fieldKey)\n return field.thAttr && typeof field.thAttr === 'function'\n ? field.thAttr(val, fieldKey, item, type)\n : field.thAttr\n}\n\nconst headerClicked = (field: TableField<T>, event: Readonly<MouseEvent>, isFooter = false) => {\n emit('head-clicked', field.key as string, field, event, isFooter)\n}\n\nconst toggleRowDetails = (tr: T) => {\n if (isTableItem(tr)) {\n const prevValue = detailsMap.value.get(tr)\n detailsMap.value.set(tr, !prevValue)\n tr._showDetails = !prevValue\n }\n}\n\nconst getFieldColumnClasses = (field: TableField) => [\n field.class,\n field.thClass,\n {\n 'b-table-sticky-column': field.stickyColumn,\n },\n props.fieldColumnClass\n ? typeof props.fieldColumnClass === 'function'\n ? props.fieldColumnClass(field)\n : props.fieldColumnClass\n : null,\n]\n\nconst getFieldRowClasses = (field: Readonly<TableField>, tr: T) => {\n const val = get(tr, String(field.key))\n return [\n field.class,\n typeof field.tdClass === 'function' ? field.tdClass(val, String(field.key), tr) : field.tdClass,\n (isTableItem(tr) ? tr._cellVariants?.[field.key as string] : false)\n ? `table-${(tr as TableItem)._cellVariants?.[field.key as string]}`\n : null,\n {\n 'b-table-sticky-column': field.stickyColumn,\n },\n ]\n}\n\nconst callTbodyTrAttrs = (item: T | null, type: TableRowType) =>\n props.tbodyTrAttrs\n ? typeof props.tbodyTrAttrs === 'function'\n ? props.tbodyTrAttrs(item, type)\n : props.tbodyTrAttrs\n : null\n\nconst getRowClasses = (item: T | null, type: TableRowType) =>\n props.tbodyTrClass\n ? typeof props.tbodyTrClass === 'function'\n ? props.tbodyTrClass(item, type)\n : props.tbodyTrClass\n : null\n</script>\n","<template>\n <BTableLite\n v-bind=\"props\"\n :aria-busy=\"busyModel\"\n :items=\"computedDisplayItems\"\n :fields=\"computedFields as TableFieldRaw<T>[]\"\n :table-class=\"tableClasses\"\n :tbody-tr-class=\"getRowClasses\"\n :field-column-class=\"getFieldColumnClasses\"\n @head-clicked=\"onFieldHeadClick\"\n @row-dbl-clicked=\"\n (row: T, index: number, e: MouseEvent) => {\n emit('row-dbl-clicked', row, index, e)\n }\n \"\n @row-clicked=\"onRowClick\"\n @row-hovered=\"\n (row: T, index: number, e: MouseEvent) => {\n emit('row-hovered', row, index, e)\n }\n \"\n @row-unhovered=\"\n (row: T, index: number, e: MouseEvent) => {\n emit('row-unhovered', row, index, e)\n }\n \"\n >\n <template v-for=\"(_, name) in $slots\" #[name]=\"slotData\">\n <slot :name=\"name\" v-bind=\"slotData\" />\n </template>\n <template\n v-for=\"field in computedFields\"\n :key=\"field.key\"\n #[`head(${String(field.key)})`]=\"scope\"\n >\n <slot\n :name=\"$slots[`head(${String(field.key)})`] ? `head(${String(field.key)})` : 'head()'\"\n v-bind=\"scope\"\n >\n {{ getTableFieldHeadLabel(field) }}\n </slot>\n <template v-if=\"isSortable && !!scope.field.sortable && props.noSortableIcon === false\">\n <slot\n v-if=\"sortByModel?.find((el) => el.key === scope.field.key)?.order === 'asc'\"\n v-bind=\"{...scope}\"\n :name=\"\n $slots[`sortAsc(${String(scope.field.key)})`]\n ? `sortAsc(${String(scope.field.key)})`\n : 'sortAsc()'\n \"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n fill=\"currentColor\"\n class=\"bi bi-arrow-up-short\"\n viewBox=\"0 0 16 16\"\n aria-hidden\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M8 12a.5.5 0 0 0 .5-.5V5.707l2.146 2.147a.5.5 0 0 0 .708-.708l-3-3a.5.5 0 0 0-.708 0l-3 3a.5.5 0 1 0 .708.708L7.5 5.707V11.5a.5.5 0 0 0 .5.5z\"\n />\n </svg>\n </slot>\n <slot\n v-else-if=\"sortByModel?.find((el) => el.key === scope.field.key)?.order === 'desc'\"\n v-bind=\"{...scope}\"\n :name=\"\n $slots[`sortDesc(${String(scope.field.key)})`]\n ? `sortDesc(${String(scope.field.key)})`\n : 'sortDesc()'\n \"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n fill=\"currentColor\"\n class=\"bi bi-arrow-down-short\"\n viewBox=\"0 0 16 16\"\n aria-hidden\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M8 4a.5.5 0 0 1 .5.5v5.793l2.146-2.147a.5.5 0 0 1 .708.708l-3 3a.5.5 0 0 1-.708 0l-3-3a.5.5 0 1 1 .708-.708L7.5 10.293V4.5A.5.5 0 0 1 8 4z\"\n />\n </svg>\n </slot>\n <slot\n v-else\n v-bind=\"{...scope}\"\n :name=\"\n $slots[`sortDefault(${String(scope.field.key)})`]\n ? `sortDefault(${String(scope.field.key)})`\n : 'sortDefault()'\n \"\n >\n <svg\n :style=\"{opacity: 0.4}\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n fill=\"currentColor\"\n class=\"bi bi-arrow-up-short\"\n viewBox=\"0 0 16 16\"\n aria-hidden\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M8 12a.5.5 0 0 0 .5-.5V5.707l2.146 2.147a.5.5 0 0 0 .708-.708l-3-3a.5.5 0 0 0-.708 0l-3 3a.5.5 0 1 0 .708.708L7.5 5.707V11.5a.5.5 0 0 0 .5.5z\"\n />\n </svg>\n </slot>\n </template>\n </template>\n <template #custom-body=\"scope\">\n <BTr v-if=\"busyModel\" class=\"b-table-busy-slot\" :class=\"getBusyRowClasses\">\n <BTd :colspan=\"scope.fields.length\">\n <slot name=\"table-busy\">\n <BOverlay show>\n <template #overlay>\n <div class=\"d-flex align-items-center gap-2 mt-5\">\n <BSpinner />\n <strong>{{ props.busyLoadingText }}</strong>\n </div>\n </template>\n </BOverlay>\n </slot>\n </BTd>\n </BTr>\n </template>\n </BTableLite>\n</template>\n\n<script setup lang=\"ts\" generic=\"T\">\nimport {useToNumber} from '@vueuse/core'\nimport {computed, onMounted, type Ref, ref, watch} from 'vue'\nimport {formatItem} from '../../utils/formatItem'\nimport BOverlay from '../BOverlay/BOverlay.vue'\nimport BSpinner from '../BSpinner/BSpinner.vue'\nimport BTableLite from './BTableLite.vue'\nimport BTd from './BTd.vue'\nimport BTr from './BTr.vue'\nimport {\n type BTableSortBy,\n type BTableSortByOrder,\n isTableField,\n isTableItem,\n type NoProviderTypes,\n type TableField,\n type TableFieldRaw,\n type TableItem,\n type TableRowType,\n type TableStrictClassValue,\n} from '../../types/TableTypes'\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BTableProps} from '../../types/ComponentProps'\nimport {get, set} from '../../utils/object'\nimport {startCase} from '../../utils/stringUtils'\nimport {getTableFieldHeadLabel} from '../../utils/getTableFieldHeadLabel'\n\nconst _props = withDefaults(\n defineProps<Omit<BTableProps<T>, 'sortBy' | 'busy' | 'selectedItems'>>(),\n {\n noSortableIcon: false,\n perPage: Number.POSITIVE_INFINITY,\n filter: undefined,\n mustSort: false,\n filterable: undefined,\n provider: undefined,\n noProvider: undefined,\n noProviderPaging: false,\n noProviderSorting: false,\n multisort: false,\n noProviderFiltering: false,\n noLocalSorting: false,\n noSelectOnClick: false,\n selectable: false,\n stickySelect: false,\n selectHead: true,\n selectMode: 'multi',\n selectionVariant: 'primary',\n busyLoadingText: 'Loading...',\n currentPage: 1,\n // BTableLite props\n items: () => [],\n fields: () => [],\n // All others use defaults\n caption: undefined,\n align: undefined,\n footClone: undefined,\n labelStacked: undefined,\n showEmpty: undefined,\n emptyText: undefined,\n emptyFilteredText: undefined,\n fieldColumnClass: undefined,\n tbodyTrClass: undefined,\n captionHtml: undefined,\n detailsTdClass: undefined,\n headVariant: undefined,\n headRowVariant: undefined,\n footRowVariant: undefined,\n footVariant: undefined,\n modelValue: undefined,\n primaryKey: undefined,\n tbodyClass: undefined,\n tfootClass: undefined,\n tfootTrClass: undefined,\n theadClass: undefined,\n theadTrClass: undefined,\n // End BTableLite props\n // BTableSimple props\n borderVariant: undefined,\n variant: undefined,\n bordered: undefined,\n borderless: undefined,\n captionTop: undefined,\n dark: undefined,\n hover: undefined,\n id: undefined,\n noBorderCollapse: undefined,\n outlined: undefined,\n fixed: undefined,\n responsive: undefined,\n stacked: undefined,\n striped: undefined,\n stripedColumns: undefined,\n small: undefined,\n stickyHeader: undefined,\n // End BTableSimple props\n }\n)\nconst props = useDefaults(_props, 'BTable')\n\nconst emit = defineEmits<{\n 'filtered': [value: T[]]\n 'head-clicked': [key: string, field: TableField<T>, event: MouseEvent, isFooter: boolean]\n 'row-clicked': [item: T, index: number, event: MouseEvent]\n 'row-dbl-clicked': [item: T, index: number, event: MouseEvent]\n 'row-hovered': [item: T, index: number, event: MouseEvent]\n 'row-unhovered': [item: T, index: number, event: MouseEvent]\n 'row-selected': [value: T]\n 'row-unselected': [value: T]\n 'sorted': [value: BTableSortBy]\n 'change': [value: T[]]\n}>()\n\nconst sortByModel = defineModel<BTableProps<T>['sortBy']>('sortBy', {\n default: undefined,\n})\nconst busyModel = defineModel<Exclude<BTableProps<T>['busy'], undefined>>('busy', {\n default: false,\n})\nconst selectedItemsModel = defineModel<Exclude<BTableProps<T>['selectedItems'], undefined>>(\n 'selectedItems',\n {\n default: () => [],\n }\n)\n\nconst selectedItemsToSet = computed({\n get: () => new Set([...selectedItemsModel.value]),\n set: (val) => {\n selectedItemsModel.value = [...val]\n },\n})\n/**\n * This is to avoid the issue of directly mutating the array structure and to properly trigger the computed setter.\n * The utils also conveniently emit the proper events after\n */\nconst selectedItemsSetUtilities = {\n add: (item: T) => {\n const value = new Set(selectedItemsToSet.value)\n value.add(item)\n selectedItemsToSet.value = value\n emit('row-selected', item)\n },\n clear: () => {\n selectedItemsToSet.value.forEach((item) => {\n selectedItemsSetUtilities.delete(item)\n })\n },\n delete: (item: T) => {\n const value = new Set(selectedItemsToSet.value)\n if (props.primaryKey) {\n const pkey: string = props.primaryKey\n selectedItemsModel.value.forEach((v, i) => {\n const selectedKey = get(v, pkey)\n const itemKey = get(item, pkey)\n\n if (!!selectedKey && !!itemKey && selectedKey === itemKey) {\n value.delete(selectedItemsModel.value[i])\n }\n })\n } else {\n value.delete(item)\n }\n selectedItemsToSet.value = value\n emit('row-unselected', item)\n },\n set: (items: T[]) => {\n selectedItemsToSet.value = new Set(items)\n selectedItemsToSet.value.forEach((item) => {\n emit('row-unselected', item)\n })\n },\n has: (item: T) => {\n if (!props.primaryKey) return selectedItemsToSet.value.has(item)\n\n // Resolver for when we are using primary keys\n const pkey: string = props.primaryKey\n for (const selected of selectedItemsToSet.value) {\n const selectedKey = get(selected, pkey)\n const itemKey = get(item, pkey)\n\n if (!!selectedKey && !!itemKey && selectedKey === itemKey) return true\n }\n return false\n },\n} as const\n\n/**\n * Only stores data that is fetched when using the provider\n */\nconst internalItems: Ref<T[]> = ref([])\n\nconst perPageNumber = useToNumber(() => props.perPage, {method: 'parseInt'})\nconst currentPageNumber = useToNumber(() => props.currentPage, {method: 'parseInt'})\n\nconst isFilterableTable = computed(() => !!props.filter)\nconst usesProvider = computed(() => props.provider !== undefined)\nconst isSelecting = computed(() => selectedItemsToSet.value.size > 0)\n\nconst isSortable = computed(\n () =>\n sortByModel.value !== undefined ||\n props.fields.some(\n (field) => typeof field === 'object' && field !== null && field.sortable === true\n )\n)\n\nconst computedFields = computed<TableField<T>[]>(() =>\n props.fields.map((el) => {\n if (!isTableField(el)) {\n const label = startCase(el as string)\n return {\n key: el as string,\n label,\n tdAttr: props.stacked === true ? {'data-label': label} : undefined,\n }\n }\n\n const value = sortByModel.value?.find((sb) => el.key === sb.key)\n const sortValue =\n isSortable.value === false\n ? undefined\n : value === undefined\n ? 'none'\n : value.order === 'desc'\n ? 'descending'\n : value.order === 'asc'\n ? 'ascending'\n : 'none'\n\n return {\n ...(el as TableField<T>),\n thAttr: {\n 'aria-sort': sortValue,\n ...el.thAttr,\n },\n }\n })\n)\n\nconst tableClasses = computed(() => ({\n 'b-table-busy': busyModel.value,\n 'b-table-selectable': props.selectable,\n 'user-select-none': props.selectable && isSelecting.value,\n}))\n\nconst getBusyRowClasses = computed(() => [\n props.tbodyTrClass\n ? typeof props.tbodyTrClass === 'function'\n ? props.tbodyTrClass(null, 'table-busy')\n : props.tbodyTrClass\n : null,\n])\nconst getFieldColumnClasses = (field: TableField) => [\n {\n 'b-table-sortable-column': isSortable.value && field.sortable,\n },\n]\n// TODO this class has issues if the table has a variant already applied\n// Also the row should technically have aria-selected . Both things could probably just use a function with tbodyTrAttrs\n// But functional tbodyTrAttrs are not supported yet\n// Also the stuff for resolving functions could probably be made a util\nconst getRowClasses = (item: T | null, type: TableRowType): TableStrictClassValue => [\n {\n [`selected table-${props.selectionVariant}`]:\n props.selectable && !!item && selectedItemsSetUtilities.has(item),\n },\n props.tbodyTrClass\n ? typeof props.tbodyTrClass === 'function'\n ? props.tbodyTrClass(item, type)\n : props.tbodyTrClass\n : null,\n]\n\nconst computedItems = computed<T[]>(() => {\n const sortItems = (items: T[]) => {\n // \"undefined\" values are set by us, we do this so we dont wipe out the comparer\n const sortByItems = sortByModel.value?.filter((el) => !!el.order)\n\n if (!sortByItems || sortByItems.length === 0) return items\n\n // Multi-sort\n return [...items].sort((a, b) => {\n for (let i = 0; i < (sortByItems.length ?? 0); i++) {\n const sortOption = sortByItems[i]\n const realVal = (ob: T): string => {\n if (!isTableItem(ob)) return String(ob)\n\n const sortField = computedFields.value.find((el) => {\n if (isTableField(el)) return el.key === sortOption.key\n\n return false\n })\n const val = get(ob, sortOption.key as keyof TableItem)\n if (isTableField(sortField) && !!sortField.sortByFormatted) {\n const formatter =\n typeof sortField.sortByFormatted === 'function'\n ? sortField.sortByFormatted\n : sortField.formatter\n if (formatter) {\n return formatItem(ob, String(sortField.key), formatter) as string\n }\n }\n return typeof val === 'object' && val !== null\n ? JSON.stringify(val)\n : (val?.toString() ?? '')\n }\n\n const aValue = realVal(a)\n const bValue = realVal(b)\n const comparison = sortOption.comparer\n ? sortOption.comparer(aValue, bValue)\n : aValue.localeCompare(bValue, undefined, {numeric: true})\n\n if (comparison !== 0) {\n return sortOption.order === 'asc' ? comparison : -comparison\n }\n }\n return 0 // items are equal\n })\n }\n\n const filterItems = (items: T[]) =>\n items.filter((item) =>\n isTableItem(item)\n ? Object.entries(item).some(([key, val]) => {\n if (\n val === null ||\n val === undefined ||\n key[0] === '_' ||\n (!props.filterable?.includes(key) && !!props.filterable?.length)\n )\n return false\n const realVal = (): string => {\n const filterField = computedFields.value.find((el) => {\n if (isTableField(el)) return el.key === key\n\n return false\n })\n if (isTableField(filterField) && !!filterField.filterByFormatted) {\n const formatter =\n typeof filterField.filterByFormatted === 'function'\n ? filterField.filterByFormatted\n : filterField.formatter\n if (formatter) {\n return formatter(val, String(filterField.key), item) as string\n }\n }\n return typeof val === 'object' ? JSON.stringify(Object.values(val)) : val.toString()\n }\n const itemValue: string = realVal()\n return itemValue.toLowerCase().includes(props.filter?.toLowerCase() ?? '')\n })\n : true\n )\n\n let mappedItems = usesProvider.value ? internalItems.value : (props.items as T[])\n mappedItems = mappedItems.map((item) => {\n if (\n typeof item === 'object' &&\n item !== null &&\n Object.keys(item).some((key) => key.includes('.'))\n ) {\n // We use any here because the TS doesn't isn't certain that \"item\" is the same type as our newItem.\n // But we've determined that it's an object, so we can ignore it since they will always be the same \"object\"\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let newItem: any = {}\n for (const key in item) {\n if (key.includes('.')) {\n newItem = set(newItem, key, item[key])\n } else {\n newItem[key] = item[key]\n }\n }\n return newItem\n // return\n }\n return item\n })\n\n if (\n (isFilterableTable.value === true && !usesProvider.value) ||\n (isFilterableTable.value === true && usesProvider.value && props.noProviderFiltering)\n ) {\n mappedItems = filterItems(mappedItems)\n }\n\n if (\n (isSortable.value === true && !usesProvider.value && !props.noLocalSorting) ||\n (isSortable.value === true && usesProvider.value && props.noProviderSorting)\n ) {\n mappedItems = sortItems(mappedItems)\n }\n\n return mappedItems\n})\n\nconst computedDisplayItems = computed<T[]>(() => {\n if (Number.isNaN(perPageNumber.value) || (usesProvider.value && !props.noProviderPaging)) {\n return computedItems.value\n }\n\n return computedItems.value.slice(\n (currentPageNumber.value - 1) * (perPageNumber.value || Number.POSITIVE_INFINITY),\n currentPageNumber.value * (perPageNumber.value || Number.POSITIVE_INFINITY)\n )\n})\n\nwatch(computedDisplayItems, (v) => {\n emit('change', v)\n})\n\nconst handleRowSelection = (\n row: T,\n index: number,\n shiftClicked = false,\n ctrlClicked = false,\n metaClicked = false\n) => {\n if (!props.selectable) return\n\n if (props.selectMode === 'single' || props.selectMode === 'multi') {\n // Do nothing when these items are held\n if (shiftClicked || ctrlClicked) return\n // Delete if item is in\n if (selectedItemsSetUtilities.has(row)) {\n selectedItemsSetUtilities.delete(row)\n } else {\n if (props.selectMode === 'single') {\n selectedItemsSetUtilities.set([row])\n } else {\n selectedItemsSetUtilities.add(row)\n }\n }\n } else {\n if (ctrlClicked || metaClicked) {\n // Delete if in the object\n if (selectedItemsSetUtilities.has(row)) {\n selectedItemsSetUtilities.delete(row)\n // Otherwise add. Functions similarly to 'multi' at this point\n } else {\n selectedItemsSetUtilities.add(row)\n }\n // This is where range is different, due to the difference in shift\n } else if (shiftClicked) {\n const lastSelectedItem = [...selectedItemsToSet.value].pop()\n const lastSelectedIndex = computedItems.value.findIndex((i) => i === lastSelectedItem)\n const selectStartIndex = Math.min(lastSelectedIndex, index)\n const selectEndIndex = Math.max(lastSelectedIndex, index)\n const items = computedItems.value.slice(selectStartIndex, selectEndIndex + 1)\n selectedItemsSetUtilities.set(items)\n // If nothing is being held, then we just behave like it's single mode\n } else {\n selectedItemsSetUtilities.set([row])\n }\n }\n}\n\nconst onRowClick = (row: T, index: number, e: MouseEvent) => {\n if (props.noSelectOnClick === false) {\n handleRowSelection(row, index, e.shiftKey, e.ctrlKey, e.metaKey)\n }\n emit('row-clicked', row, index, e)\n}\n\nconst handleFieldSorting = (field: TableField<T>) => {\n if (!isSortable.value) return\n\n const fieldKey = typeof field === 'object' && field !== null ? field.key : field\n const fieldSortable = typeof field === 'object' && field !== null ? field.sortable : false\n\n if (!(isSortable.value === true && fieldSortable === true)) return\n\n const resolveOrder = (val: BTableSortByOrder): BTableSortByOrder | undefined => {\n if (val === 'asc') return 'desc'\n if (val === undefined) return 'asc'\n if (\n props.mustSort === true ||\n (Array.isArray(props.mustSort) && props.mustSort.includes(fieldKey as string))\n )\n return 'asc'\n return undefined\n }\n\n const index = sortByModel.value?.findIndex((el) => el.key === fieldKey) ?? -1\n const originalValue = sortByModel.value?.[index]\n const updatedValue: BTableSortBy =\n // If value is new, we default to ascending\n // Otherwise we make a temp copy of the value\n index === -1 || !originalValue ? {key: fieldKey as string, order: 'asc'} : {...originalValue}\n\n /**\n * @returns the updated value to emit for sorted\n */\n const handleMultiSort = (): BTableSortBy => {\n let val = updatedValue\n if (index === -1) {\n sortByModel.value = [...(sortByModel.value ?? []), updatedValue]\n } else {\n const order = resolveOrder(updatedValue.order)\n val = {...updatedValue, order}\n sortByModel.value = order\n ? sortByModel.value?.map((el) => (el.key === val.key ? val : el))\n : sortByModel.value?.filter((el) => el.key !== val.key)\n }\n return val\n }\n\n /**\n * @returns the updated value to emit for sorted\n */\n const handleSingleSort = (): BTableSortBy => {\n const val = {\n ...updatedValue,\n order: index === -1 ? updatedValue.order : resolveOrder(updatedValue.order),\n }\n sortByModel.value = [val]\n return val\n }\n\n // Then emit the returned updated value\n emit('sorted', props.multisort === true ? handleMultiSort() : handleSingleSort())\n}\n\nconst onFieldHeadClick = (\n fieldKey: string,\n field: TableField<T>,\n event: Readonly<MouseEvent>,\n isFooter = false\n) => {\n emit('head-clicked', fieldKey, field, event, isFooter)\n handleFieldSorting(field)\n}\n\nconst callItemsProvider = async () => {\n if (!usesProvider.value || props.provider === undefined || busyModel.value) return\n busyModel.value = true\n const response = props.provider({\n currentPage: currentPageNumber.value,\n filter: props.filter,\n sortBy: sortByModel.value,\n perPage: perPageNumber.value,\n })\n try {\n const items = response instanceof Promise ? await response : response\n\n if (items === undefined) return\n internalItems.value = items\n } finally {\n // Potential race condition could occur if the user explicitly sets the busy value to a different value while the response promise is executing\n // which would have been the users choice.\n // eslint-disable-next-line require-atomic-updates\n busyModel.value = false\n }\n}\n\nconst providerPropsWatch = async (prop: string, val: unknown, oldVal: unknown) => {\n if (val === oldVal) return\n\n //stop provide when paging\n const inNoProvider = (key: NoProviderTypes) => props.noProvider?.includes(key) === true\n const noProvideWhenPaging =\n (prop === 'currentPage' || prop === 'perPage') &&\n (inNoProvider('paging') || props.noProviderPaging === true)\n const noProvideWhenFiltering =\n prop === 'filter' && (inNoProvider('filtering') || props.noProviderFiltering === true)\n const noProvideWhenSorting =\n (prop === 'sortBy' || prop === 'sortDesc') &&\n (inNoProvider('sorting') || props.noProviderSorting === true)\n\n if (noProvideWhenPaging || noProvideWhenFiltering || noProvideWhenSorting) return\n\n if (usesProvider.value === true) {\n await callItemsProvider()\n }\n\n if (!(prop === 'currentPage' || prop === 'perPage')) {\n emit('filtered', [...computedItems.value])\n }\n}\n\nwatch(\n () => props.filter,\n (filter, oldFilter) => {\n providerPropsWatch('filter', filter, oldFilter)\n\n if (filter === oldFilter || usesProvider.value) return\n if (!filter) {\n emit('filtered', [...computedItems.value])\n }\n }\n)\nwatch(currentPageNumber, (val, oldVal) => {\n providerPropsWatch('currentPage', val, oldVal)\n})\nwatch(perPageNumber, (val, oldVal) => {\n providerPropsWatch('perPage', val, oldVal)\n})\nwatch(\n sortByModel,\n (val, oldVal) => {\n providerPropsWatch('sortBy', val, oldVal)\n },\n {deep: true}\n)\n\nwatch(\n () => props.provider,\n (newValue) => {\n // Reset the internal values if the provider stops getting used\n if (newValue === undefined) {\n internalItems.value = []\n return\n }\n // Otherwise we should refresh the table on such a change\n callItemsProvider()\n }\n)\n\nonMounted(callItemsProvider)\n\ndefineExpose({\n // The row selection methods are really for compat. Users should probably use the v-model though\n clearSelected: () => {\n if (!props.selectable) return\n selectedItemsSetUtilities.clear()\n },\n refresh: callItemsProvider,\n selectAllRows: () => {\n if (!props.selectable) return\n const unselectableItems = selectedItemsToSet.value.size > 0 ? [...selectedItemsToSet.value] : []\n selectedItemsToSet.value = new Set([...computedItems.value])\n selectedItemsToSet.value.forEach((item) => {\n if (unselectableItems.includes(item)) return\n emit('row-selected', item)\n })\n },\n selectRow: (index: number) => {\n if (!props.selectable) return\n const item = computedItems.value[index]\n if (!item || selectedItemsSetUtilities.has(item)) return\n selectedItemsSetUtilities.add(item)\n },\n unselectRow: (index: number) => {\n if (!props.selectable) return\n const item = computedItems.value[index]\n if (!item || !selectedItemsSetUtilities.has(item)) return\n selectedItemsSetUtilities.delete(item)\n },\n isRowSelected: (index: number) => {\n if (!props.selectable) return false\n const item = computedItems.value[index]\n return selectedItemsSetUtilities.has(item)\n },\n})\n</script>\n"],"names":["formatItem","item","fieldKey","formatter","val","get","isTableItem","value","isTableField","_props","__props","props","useDefaults","computedClasses","computed","variant","stickyColumn","scope","colspan","rowspan","getTableFieldHeadLabel","field","titleCase","label","key","TABLE_TAG_NAMES","eventFilter","join","filterEvent","event","target","el","disabled","indexOf","tagName","closest","labelFor","getAttribute","input","document","getElementById","querySelector","matches","emit","__emit","detailsMap","ref","WeakMap","vue","watch","items","forEach","set","_showDetails","generateDetailsItem","deep","immediate","computedTableClasses","tableClass","align","computedFields","fields","length","firstItem","Array","isArray","Object","keys","map","k","startCase","tdAttr","stacked","_noHeader","f","computedFieldsTotal","showComputedHeaders","every","callThAttr","type","String","thAttr","headerClicked","isFooter","toggleRowDetails","tr","prevValue","getFieldColumnClasses","class","thClass","fieldColumnClass","getFieldRowClasses","tdClass","_a","_cellVariants","_b","callTbodyTrAttrs","tbodyTrAttrs","getRowClasses","tbodyTrClass","attr","sortByModel","_useModel","busyModel","selectedItemsModel","useModel","selectedItemsToSet","Set","selectedItemsSetUtilities","add","clear","delete","primaryKey","pkey","v","i","selectedKey","itemKey","has","selected","internalItems","perPageNumber","useToNumber","perPage","method","currentPageNumber","currentPage","isFilterableTable","filter","usesProvider","provider","isSelecting","size","isSortable","some","sortable","find","sb","sortValue","order","tableClasses","selectable","getBusyRowClasses","selectionVariant","computedItems","mappedItems","includes","newItem","noProviderFiltering","entries","filterable","filterField","filterByFormatted","JSON","stringify","values","toString","realVal","toLowerCase","_c","noLocalSorting","noProviderSorting","sortByItems","sort","a","b","sortOption","ob","sortField","sortByFormatted","aValue","bValue","comparison","comparer","localeCompare","numeric","sortItems","computedDisplayItems","Number","isNaN","noProviderPaging","slice","POSITIVE_INFINITY","onRowClick","row","index","e","noSelectOnClick","shiftClicked","ctrlClicked","metaClicked","selectMode","lastSelectedItem","pop","lastSelectedIndex","findIndex","selectStartIndex","Math","min","selectEndIndex","max","handleRowSelection","shiftKey","ctrlKey","metaKey","onFieldHeadClick","fieldSortable","resolveOrder","mustSort","originalValue","updatedValue","multisort","handleMultiSort","handleSingleSort","handleFieldSorting","callItemsProvider","async","response","sortBy","Promise","providerPropsWatch","prop","oldVal","inNoProvider","noProvider","noProvideWhenPaging","noProvideWhenFiltering","noProvideWhenSorting","oldFilter","newValue","onMounted","__expose","clearSelected","refresh","selectAllRows","unselectableItems","selectRow","unselectRow","isRowSelected"],"mappings":"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"}
@@ -972,10 +972,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
972
972
  }
973
973
  } else if (shiftClicked) {
974
974
  const lastSelectedItem = [...selectedItemsToSet.value].pop();
975
- const lastSelectedIndex = props.items.findIndex((i) => i === lastSelectedItem);
975
+ const lastSelectedIndex = computedItems.value.findIndex((i) => i === lastSelectedItem);
976
976
  const selectStartIndex = Math.min(lastSelectedIndex, index);
977
977
  const selectEndIndex = Math.max(lastSelectedIndex, index);
978
- const items = props.items.slice(selectStartIndex, selectEndIndex + 1);
978
+ const items = computedItems.value.slice(selectStartIndex, selectEndIndex + 1);
979
979
  selectedItemsSetUtilities.set(items);
980
980
  } else {
981
981
  selectedItemsSetUtilities.set([row]);
@@ -1276,4 +1276,4 @@ export {
1276
1276
  _sfc_main$3 as f,
1277
1277
  _sfc_main$2 as g
1278
1278
  };
1279
- //# sourceMappingURL=BTable.vue_vue_type_script_setup_true_lang-Dt0wgrA9.mjs.map
1279
+ //# sourceMappingURL=BTable.vue_vue_type_script_setup_true_lang-DSox5TGm.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"BTable.vue_vue_type_script_setup_true_lang-Dt0wgrA9.mjs","sources":["../src/utils/formatItem.ts","../src/types/TableTypes.ts","../src/components/BTable/BTbody.vue","../src/components/BTable/BTd.vue","../src/components/BTable/BTfoot.vue","../src/components/BTable/BTh.vue","../src/components/BTable/BThead.vue","../src/components/BTable/BTr.vue","../src/utils/getTableFieldHeadLabel.ts","../src/utils/filterEvent.ts","../src/components/BTable/BTableLite.vue","../src/components/BTable/BTable.vue"],"sourcesContent":["import type {TableFieldFormatter} from '../types/TableTypes'\nimport {get} from './object'\n\nexport const formatItem = (\n item: unknown,\n // Weakly type fieldKey because it can be a nested string, such as 'foo.bar.baz'\n fieldKey: string,\n formatter?: TableFieldFormatter<unknown>\n) => {\n const val = get(item, fieldKey)\n return formatter && typeof formatter === 'function' ? formatter(val, fieldKey, item) : val\n}\n","import type {StyleValue} from 'vue'\nimport type {ColorVariant} from './ColorTypes'\nimport type {MaybePromise} from './MaybePromise'\nimport type {LiteralUnion} from './LiteralUnion'\nimport type {AttrsValue, ClassValue} from './AnyValuedAttributes'\n\nexport type TableItem<T = Record<string, unknown>> = T & {\n _rowVariant?: ColorVariant | null\n _cellVariants?: Partial<Record<keyof T, ColorVariant>>\n _showDetails?: boolean\n}\n\nexport const isTableItem = (value: unknown): value is TableItem =>\n typeof value === 'object' && value !== null\n\n// undefined means no sorting\nexport type BTableSortByOrder = 'desc' | 'asc' | undefined\n\nexport type BTableSortBy = {\n order: BTableSortByOrder\n key: string\n comparer?: (a: string, b: string) => number\n}\n\nexport type BTableProviderContext = {\n sortBy: BTableSortBy[] | undefined\n filter: string | undefined\n currentPage: number\n perPage: number\n}\n\nexport type BTableProvider<T> = (\n context: Readonly<BTableProviderContext>\n) => MaybePromise<T[] | undefined>\n\nexport type TableFieldFormatter<T> = (value: unknown, key: string, item: T) => string\n\nexport type TableRowType = 'row' | 'row-details' | 'row-top' | 'row-bottom' | 'table-busy'\nexport type TableRowThead = 'top' | 'bottom'\n\nexport type TableStrictClassValue = string | unknown[] | Record<string, boolean>\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type TableField<T = any> = {\n key: LiteralUnion<keyof T>\n label?: string\n headerTitle?: string\n headerAbbr?: string\n class?: ClassValue\n formatter?: TableFieldFormatter<T>\n sortable?: boolean\n sortKey?: string\n sortDirection?: string\n sortByFormatted?: boolean | TableFieldFormatter<T>\n filterByFormatted?: boolean | TableFieldFormatter<T>\n tdClass?:\n | TableStrictClassValue\n | ((value: unknown, key: string, item: T) => TableStrictClassValue)\n thClass?: ClassValue\n thStyle?: StyleValue\n variant?: ColorVariant | null\n tdAttr?: AttrsValue | ((value: unknown, key: string, item: T) => AttrsValue)\n thAttr?:\n | AttrsValue\n | ((value: unknown, key: string, item: T | null, type: TableRowThead) => AttrsValue)\n isRowHeader?: boolean\n stickyColumn?: boolean\n}\n\nexport type TableFieldRaw<T = unknown> = T extends object\n ? LiteralUnion<keyof T> | TableField<T>\n : string | TableField\n\nexport const isTableField = <T>(value: unknown): value is TableField<T> =>\n typeof value === 'object' && value !== null && 'key' in value\n\nexport const isTableFieldRaw = <T>(value: unknown): value is TableFieldRaw<T> =>\n typeof value === 'string' || isTableField(value)\n\nexport type NoProviderTypes = 'paging' | 'sorting' | 'filtering'\n","<template>\n <tbody :class=\"computedClasses\">\n <slot />\n </tbody>\n</template>\n\n<script setup lang=\"ts\">\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BTbodyProps} from '../../types/ComponentProps'\nimport {computed} from 'vue'\n\nconst _props = withDefaults(defineProps<BTbodyProps>(), {\n variant: null,\n})\nconst props = useDefaults(_props, 'BTbody')\n\ndefineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: (props: Record<string, never>) => any\n}>()\n\nconst computedClasses = computed(() => ({\n [`thead-${props.variant}`]: props.variant !== null,\n}))\n</script>\n","<template>\n <td\n :scope=\"scope\"\n :class=\"computedClasses\"\n :colspan=\"props.colspan\"\n :rowspan=\"props.rowspan\"\n :data-label=\"props.stackedHeading\"\n >\n <div v-if=\"props.stackedHeading\">\n <slot />\n </div>\n <slot v-else />\n </td>\n</template>\n\n<script setup lang=\"ts\">\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BTdProps} from '../../types/ComponentProps'\nimport {computed} from 'vue'\n\nconst _props = withDefaults(defineProps<BTdProps>(), {\n colspan: undefined,\n rowspan: undefined,\n stackedHeading: undefined,\n stickyColumn: false,\n variant: null,\n})\nconst props = useDefaults(_props, 'BTd')\n\ndefineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: (props: Record<string, never>) => any\n}>()\n\nconst computedClasses = computed(() => ({\n [`table-${props.variant}`]: props.variant !== null,\n 'b-table-sticky-column': props.stickyColumn,\n 'table-b-table-default': props.stickyColumn && props.variant === null,\n}))\n\nconst scope = computed(() => (props.colspan ? 'colspan' : props.rowspan ? 'rowspan' : 'col'))\n</script>\n","<template>\n <tfoot :class=\"computedClasses\">\n <slot />\n </tfoot>\n</template>\n\n<script setup lang=\"ts\">\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BTfootProps} from '../../types/ComponentProps'\nimport {computed} from 'vue'\n\nconst _props = withDefaults(defineProps<BTfootProps>(), {\n variant: null,\n})\nconst props = useDefaults(_props, 'BTfoot')\n\ndefineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: (props: Record<string, never>) => any\n}>()\n\nconst computedClasses = computed(() => ({\n [`table-${props.variant}`]: props.variant !== null,\n}))\n</script>\n","<template>\n <th\n :scope=\"scope\"\n :class=\"computedClasses\"\n :colspan=\"props.colspan\"\n :rowspan=\"props.rowspan\"\n :data-label=\"props.stackedHeading\"\n >\n <div v-if=\"props.stackedHeading !== undefined\">\n <slot />\n </div>\n <slot v-else />\n </th>\n</template>\n\n<script setup lang=\"ts\">\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BThProps} from '../../types/ComponentProps'\nimport {computed} from 'vue'\n\nconst _props = withDefaults(defineProps<BThProps>(), {\n colspan: undefined,\n rowspan: undefined,\n stackedHeading: undefined,\n stickyColumn: false,\n variant: null,\n})\nconst props = useDefaults(_props, 'BTh')\n\ndefineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: (props: Record<string, never>) => any\n}>()\n\nconst computedClasses = computed(() => ({\n [`table-${props.variant}`]: props.variant !== null,\n 'b-table-sticky-column': props.stickyColumn,\n 'table-b-table-default': props.stickyColumn && props.variant === null,\n}))\n\nconst scope = computed(() => (props.colspan ? 'colspan' : props.rowspan ? 'rowspan' : 'col'))\n</script>\n","<template>\n <thead :class=\"computedClasses\">\n <slot />\n </thead>\n</template>\n\n<script setup lang=\"ts\">\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BTheadProps} from '../../types/ComponentProps'\nimport {computed} from 'vue'\n\nconst _props = withDefaults(defineProps<BTheadProps>(), {\n variant: null,\n})\nconst props = useDefaults(_props, 'BThead')\n\ndefineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: (props: Record<string, never>) => any\n}>()\n\nconst computedClasses = computed(() => ({\n [`table-${props.variant}`]: props.variant !== null,\n}))\n</script>\n","<template>\n <tr :class=\"computedClasses\">\n <slot />\n </tr>\n</template>\n\n<script setup lang=\"ts\">\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BTrProps} from '../../types/ComponentProps'\nimport {computed} from 'vue'\n\nconst _props = withDefaults(defineProps<BTrProps>(), {\n variant: null,\n})\nconst props = useDefaults(_props, 'BTr')\n\ndefineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: (props: Record<string, never>) => any\n}>()\n\nconst computedClasses = computed(() => ({\n [`table-${props.variant}`]: props.variant !== null,\n}))\n</script>\n","import {titleCase} from './stringUtils'\nimport type {TableFieldRaw} from '../types/TableTypes'\n\nexport const getTableFieldHeadLabel = (field: Readonly<TableFieldRaw<unknown>>) =>\n typeof field === 'string'\n ? titleCase(field)\n : field.label !== undefined\n ? field.label\n : typeof field.key === 'string'\n ? titleCase(field.key)\n : field.key\n","const TABLE_TAG_NAMES = ['TD', 'TH', 'TR']\n\n// Filter CSS selector for click/dblclick/etc. events\n// If any of these selectors match the clicked element, we ignore the event\nconst eventFilter = [\n 'a',\n 'a *', // Include content inside links\n 'button',\n 'button *', // Include content inside buttons\n 'input:not(.disabled):not([disabled])',\n 'select:not(.disabled):not([disabled])',\n 'textarea:not(.disabled):not([disabled])',\n '[role=\"link\"]',\n '[role=\"link\"] *',\n '[role=\"button\"]',\n '[role=\"button\"] *',\n '[tabindex]:not(.disabled):not([disabled])',\n].join(',')\n\n// Returns `true` if we should ignore the click/double-click/keypress event\n// Avoids having the user need to use `@click.stop` on the form control\nexport const filterEvent = (event: Readonly<Event>) => {\n // Exit early when we don't have a target element\n if (!event || !event.target) {\n return false\n }\n const el = event.target as HTMLElement\n // Exit early when element is disabled or a table element\n if (('disabled' in el && el.disabled) || TABLE_TAG_NAMES.indexOf(el.tagName) !== -1) {\n return false\n }\n // Ignore the click when it was inside a dropdown menu\n if (el.closest('.dropdown-menu')) return true\n\n const label = el.tagName === 'LABEL' ? el : el.closest('label')\n // If the label's form control is not disabled then we don't propagate event\n // Modern browsers have `label.control` that references the associated input, but IE 11\n // does not have this property on the label element, so we resort to DOM lookups\n if (label) {\n const labelFor = label.getAttribute('for')\n const input = labelFor\n ? document.getElementById(labelFor)\n : label.querySelector('input, select, textarea')\n if (input && !(input as HTMLInputElement).disabled) {\n return true\n }\n }\n // Otherwise check if the event target matches one of the selectors in the\n // event filter (i.e. anchors, non disabled inputs, etc.)\n // Return `true` if we should ignore the event\n return el.matches(eventFilter)\n}\n","<template>\n <BTableSimple\n :id=\"props.id\"\n :bordered=\"props.bordered\"\n :borderless=\"props.borderless\"\n :border-variant=\"props.borderVariant\"\n :caption-top=\"props.captionTop\"\n :dark=\"props.dark\"\n :fixed=\"props.fixed\"\n :hover=\"props.hover\"\n :no-border-collapse=\"props.noBorderCollapse\"\n :outlined=\"props.outlined\"\n :responsive=\"props.responsive\"\n :small=\"props.small\"\n :stacked=\"props.stacked\"\n :sticky-header=\"props.stickyHeader\"\n :striped=\"props.striped\"\n :table-class=\"computedTableClasses\"\n :variant=\"props.variant\"\n :striped-columns=\"props.stripedColumns\"\n >\n <BThead v-show=\"showComputedHeaders\" :variant=\"props.headVariant\" :class=\"props.theadClass\">\n <slot v-if=\"$slots['thead-top']\" name=\"thead-top\" />\n <BTr :variant=\"props.headRowVariant\" :class=\"props.theadTrClass\">\n <BTh\n v-for=\"field in computedFields\"\n :key=\"field.key\"\n scope=\"col\"\n :class=\"getFieldColumnClasses(field)\"\n :title=\"field.headerTitle\"\n :variant=\"field.variant\"\n :abbr=\"field.headerAbbr\"\n :style=\"field.thStyle\"\n v-bind=\"callThAttr(null, field, 'top')\"\n @click=\"headerClicked(field, $event)\"\n >\n <slot\n :name=\"$slots[`head(${String(field.key)})`] ? `head(${String(field.key)})` : 'head()'\"\n :label=\"field.label\"\n :column=\"field.key\"\n :field=\"field\"\n :is-foot=\"false\"\n >\n {{ getTableFieldHeadLabel(field) }}\n </slot>\n </BTh>\n </BTr>\n <BTr v-if=\"$slots['thead-sub']\">\n <BTd\n v-for=\"field in computedFields\"\n :key=\"field.key\"\n scope=\"col\"\n :variant=\"field.variant\"\n :class=\"[field.class, field.thClass]\"\n >\n <slot name=\"thead-sub\" :items=\"computedFields\" v-bind=\"field\">\n {{ field.label }}\n </slot>\n </BTd>\n </BTr>\n </BThead>\n <BTbody :class=\"props.tbodyClass\">\n <slot\n name=\"custom-body\"\n :fields=\"computedFields\"\n :items=\"props.items\"\n :columns=\"computedFields.length\"\n >\n <BTr\n v-if=\"!props.stacked && $slots['top-row']\"\n :class=\"getRowClasses(null, 'row-top')\"\n v-bind=\"callTbodyTrAttrs(null, 'row-top')\"\n >\n <slot name=\"top-row\" />\n </BTr>\n\n <template\n v-for=\"(item, itemIndex) in props.items\"\n :key=\"props.primaryKey ? get(item, props.primaryKey) : itemIndex\"\n >\n <BTr\n :class=\"getRowClasses(item, 'row')\"\n :variant=\"isTableItem(item) ? item._rowVariant : undefined\"\n v-bind=\"callTbodyTrAttrs(item, 'row')\"\n @click=\"!filterEvent($event) && emit('row-clicked', item, itemIndex, $event)\"\n @dblclick=\"!filterEvent($event) && emit('row-dbl-clicked', item, itemIndex, $event)\"\n @mouseenter=\"!filterEvent($event) && emit('row-hovered', item, itemIndex, $event)\"\n @mouseleave=\"!filterEvent($event) && emit('row-unhovered', item, itemIndex, $event)\"\n >\n <BTd\n v-for=\"field in computedFields\"\n :key=\"field.key\"\n :variant=\"\n (isTableItem(item) ? item._cellVariants?.[field.key as string] : false)\n ? null\n : field.variant\n \"\n :class=\"getFieldRowClasses(field, item)\"\n v-bind=\"itemAttributes(item, String(field.key), field.tdAttr)\"\n >\n <label v-if=\"props.stacked && props.labelStacked\" class=\"b-table-stacked-label\">\n {{ getTableFieldHeadLabel(field) }}\n </label>\n <slot\n :name=\"\n $slots[`cell(${String(field.key)})`] ? `cell(${String(field.key)})` : 'cell()'\n \"\n :value=\"formatItem(item, String(field.key), field.formatter)\"\n :unformatted=\"get(item, String(field.key))\"\n :index=\"itemIndex\"\n :item=\"item\"\n :field=\"field\"\n :items=\"items\"\n :toggle-details=\"\n () => {\n toggleRowDetails(item)\n }\n \"\n :details-showing=\"isTableItem(item) ? (detailsMap.get(item) ?? false) : false\"\n >\n <template v-if=\"!$slots[`cell(${String(field.key)})`] && !$slots['cell()']\">\n {{ formatItem(item, String(field.key), field.formatter) }}\n </template>\n </slot>\n </BTd>\n </BTr>\n\n <template\n v-if=\"isTableItem(item) && detailsMap.get(item) === true && $slots['row-details']\"\n >\n <BTr aria-hidden=\"true\" role=\"presentation\" class=\"d-none\" />\n <BTr\n :class=\"getRowClasses(item, 'row-details')\"\n :variant=\"item._rowVariant\"\n v-bind=\"callTbodyTrAttrs(item, 'row-details')\"\n >\n <BTd :colspan=\"computedFieldsTotal\" :class=\"detailsTdClass\">\n <slot\n name=\"row-details\"\n :item=\"item\"\n :toggle-details=\"\n () => {\n toggleRowDetails(item)\n }\n \"\n :fields=\"props.fields\"\n :index=\"itemIndex\"\n />\n </BTd>\n </BTr>\n </template>\n </template>\n <BTr v-if=\"props.showEmpty && props.items.length === 0\" class=\"b-table-empty-slot\">\n <BTd :colspan=\"computedFieldsTotal\">\n <slot name=\"empty\" :items=\"props.items\">\n {{ props.emptyText }}\n </slot>\n </BTd>\n </BTr>\n <!-- This class is for specific targetting of this slot element -->\n <BTr\n v-if=\"!props.stacked && $slots['bottom-row']\"\n class=\"bottom-row\"\n :class=\"getRowClasses(null, 'row-bottom')\"\n v-bind=\"callTbodyTrAttrs(null, 'row-bottom')\"\n >\n <slot name=\"bottom-row\" />\n </BTr>\n </slot>\n </BTbody>\n <BTfoot v-if=\"props.footClone\" :variant=\"props.footVariant\" :class=\"props.tfootClass\">\n <BTr :variant=\"props.footRowVariant\" :class=\"props.tfootTrClass\">\n <BTh\n v-for=\"field in computedFields\"\n :key=\"field.key\"\n scope=\"col\"\n :class=\"getFieldColumnClasses(field)\"\n :title=\"field.headerTitle\"\n :abbr=\"field.headerAbbr\"\n :style=\"field.thStyle\"\n :variant=\"field.variant\"\n v-bind=\"callThAttr(null, field, 'bottom')\"\n @click=\"headerClicked(field, $event, true)\"\n >\n <div class=\"d-inline-flex flex-nowrap align-items-center gap-1\">\n <div>\n <slot\n :name=\"\n $slots[`foot(${String(field.key)})`] ? `foot(${String(field.key)})` : 'foot()'\n \"\n :label=\"field.label\"\n :column=\"field.key\"\n :field=\"field\"\n :is-foot=\"true\"\n >\n {{ getTableFieldHeadLabel(field) }}\n </slot>\n </div>\n </div>\n </BTh>\n </BTr>\n </BTfoot>\n <BTfoot v-else-if=\"$slots['custom-foot']\">\n <slot\n name=\"custom-foot\"\n :fields=\"computedFields\"\n :items=\"props.items\"\n :columns=\"computedFields.length\"\n />\n </BTfoot>\n <caption v-if=\"$slots['table-caption'] || props.caption\">\n <slot name=\"table-caption\">\n {{ props.caption }}\n </slot>\n </caption>\n </BTableSimple>\n</template>\n\n<script setup lang=\"ts\" generic=\"T\">\nimport {computed, ref, watch} from 'vue'\nimport type {BTableLiteProps} from '../../types/ComponentProps'\nimport {\n isTableField,\n isTableItem,\n type TableField,\n type TableItem,\n type TableRowThead,\n type TableRowType,\n} from '../../types/TableTypes'\nimport BTableSimple from './BTableSimple.vue'\nimport BTbody from './BTbody.vue'\nimport BTd from './BTd.vue'\nimport BTfoot from './BTfoot.vue'\nimport BTh from './BTh.vue'\nimport BThead from './BThead.vue'\nimport BTr from './BTr.vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {get} from '../../utils/object'\nimport {getTableFieldHeadLabel} from '../../utils/getTableFieldHeadLabel'\nimport {formatItem} from '../../utils/formatItem'\nimport {filterEvent} from '../../utils/filterEvent'\nimport {startCase} from '../../utils/stringUtils'\n\nconst _props = withDefaults(defineProps<BTableLiteProps<T>>(), {\n caption: undefined,\n align: undefined,\n fields: () => [],\n footClone: false,\n items: () => [],\n labelStacked: false,\n showEmpty: false,\n emptyText: 'There are no records to show',\n emptyFilteredText: 'There are no records matching your request', // TODO not implemented\n fieldColumnClass: undefined,\n tbodyTrClass: undefined,\n captionHtml: undefined,\n detailsTdClass: undefined,\n headVariant: undefined,\n headRowVariant: undefined,\n footRowVariant: undefined,\n footVariant: undefined,\n modelValue: undefined,\n primaryKey: undefined,\n tbodyClass: undefined,\n tbodyTrAttrs: undefined,\n tfootClass: undefined,\n tfootTrClass: undefined,\n theadClass: undefined,\n theadTrClass: undefined,\n // BTableSimpleProps props\n borderVariant: undefined,\n tableClass: undefined,\n variant: undefined,\n bordered: undefined,\n borderless: undefined,\n captionTop: undefined,\n dark: undefined,\n hover: undefined,\n id: undefined,\n noBorderCollapse: undefined,\n outlined: undefined,\n fixed: undefined,\n responsive: undefined,\n stacked: undefined,\n striped: undefined,\n stripedColumns: undefined,\n small: undefined,\n stickyHeader: undefined,\n // End BTableSimpleProps props\n})\nconst props = useDefaults(_props, 'BTableLite')\n\nconst emit = defineEmits<{\n 'head-clicked': [key: string, field: TableField<T>, event: MouseEvent, isFooter: boolean]\n 'row-clicked': [item: T, index: number, event: MouseEvent]\n 'row-dbl-clicked': [item: T, index: number, event: MouseEvent]\n 'row-hovered': [item: T, index: number, event: MouseEvent]\n 'row-unhovered': [item: T, index: number, event: MouseEvent]\n}>()\n\nconst generateDetailsItem = (item: TableItem): [object, boolean | undefined] => [\n item,\n item._showDetails,\n]\nconst detailsMap = ref(new WeakMap<object, boolean | undefined>())\nwatch(\n () => props.items,\n (items) => {\n items.forEach((item) => {\n if (!isTableItem(item)) return\n detailsMap.value.set(...generateDetailsItem(item))\n })\n },\n {deep: true, immediate: true}\n)\n\nconst computedTableClasses = computed(() => [\n props.tableClass,\n {\n [`align-${props.align}`]: props.align !== undefined,\n },\n])\n\nconst computedFields = computed<(TableField & {_noHeader?: true})[]>(() => {\n if (!props.fields.length && props.items.length) {\n const [firstItem] = props.items\n if (isTableItem(firstItem) || Array.isArray(firstItem)) {\n return Object.keys(firstItem).map((k) => {\n const label = startCase(k)\n return {\n key: k,\n label,\n tdAttr: props.stacked === true ? {'data-label': label} : undefined,\n }\n })\n }\n // The items are primitives, so we just return a single empty field\n // No header will be shown, as we don't know what to show\n return [{key: '', _noHeader: true}]\n }\n\n return props.fields.map((f) => {\n if (isTableField(f)) {\n return {\n ...(f as TableField),\n tdAttr:\n props.stacked === true\n ? {'data-label': startCase(f.key as string), ...f.tdAttr}\n : f.tdAttr,\n }\n }\n const label = startCase(f as string)\n return {\n key: f as string,\n label,\n tdAttr: props.stacked === true ? {'data-label': label} : undefined,\n }\n })\n})\nconst computedFieldsTotal = computed(() => computedFields.value.length)\nconst showComputedHeaders = computed(() => {\n // We only hide the header if all fields have _noHeader set to true. Which would be our doing\n // This usually happens under a circumstance of displaying an array of primitives\n // Under any other circumstance, I'm not sure how this would apply\n if (computedFields.value.length > 0 && computedFields.value.every((el) => el._noHeader === true))\n return false\n return true\n})\n\nconst itemAttributes = (item: T, fieldKey: string, attr?: unknown) => {\n const val = get(item, fieldKey)\n return attr && typeof attr === 'function' ? attr(val, fieldKey, item) : attr\n}\n\nconst callThAttr = (item: T | null, field: TableField<T>, type: TableRowThead) => {\n const fieldKey = String(field.key)\n const val = get(item, fieldKey)\n return field.thAttr && typeof field.thAttr === 'function'\n ? field.thAttr(val, fieldKey, item, type)\n : field.thAttr\n}\n\nconst headerClicked = (field: TableField<T>, event: Readonly<MouseEvent>, isFooter = false) => {\n emit('head-clicked', field.key as string, field, event, isFooter)\n}\n\nconst toggleRowDetails = (tr: T) => {\n if (isTableItem(tr)) {\n const prevValue = detailsMap.value.get(tr)\n detailsMap.value.set(tr, !prevValue)\n tr._showDetails = !prevValue\n }\n}\n\nconst getFieldColumnClasses = (field: TableField) => [\n field.class,\n field.thClass,\n {\n 'b-table-sticky-column': field.stickyColumn,\n },\n props.fieldColumnClass\n ? typeof props.fieldColumnClass === 'function'\n ? props.fieldColumnClass(field)\n : props.fieldColumnClass\n : null,\n]\n\nconst getFieldRowClasses = (field: Readonly<TableField>, tr: T) => {\n const val = get(tr, String(field.key))\n return [\n field.class,\n typeof field.tdClass === 'function' ? field.tdClass(val, String(field.key), tr) : field.tdClass,\n (isTableItem(tr) ? tr._cellVariants?.[field.key as string] : false)\n ? `table-${(tr as TableItem)._cellVariants?.[field.key as string]}`\n : null,\n {\n 'b-table-sticky-column': field.stickyColumn,\n },\n ]\n}\n\nconst callTbodyTrAttrs = (item: T | null, type: TableRowType) =>\n props.tbodyTrAttrs\n ? typeof props.tbodyTrAttrs === 'function'\n ? props.tbodyTrAttrs(item, type)\n : props.tbodyTrAttrs\n : null\n\nconst getRowClasses = (item: T | null, type: TableRowType) =>\n props.tbodyTrClass\n ? typeof props.tbodyTrClass === 'function'\n ? props.tbodyTrClass(item, type)\n : props.tbodyTrClass\n : null\n</script>\n","<template>\n <BTableLite\n v-bind=\"props\"\n :aria-busy=\"busyModel\"\n :items=\"computedDisplayItems\"\n :fields=\"computedFields as TableFieldRaw<T>[]\"\n :table-class=\"tableClasses\"\n :tbody-tr-class=\"getRowClasses\"\n :field-column-class=\"getFieldColumnClasses\"\n @head-clicked=\"onFieldHeadClick\"\n @row-dbl-clicked=\"\n (row: T, index: number, e: MouseEvent) => {\n emit('row-dbl-clicked', row, index, e)\n }\n \"\n @row-clicked=\"onRowClick\"\n @row-hovered=\"\n (row: T, index: number, e: MouseEvent) => {\n emit('row-hovered', row, index, e)\n }\n \"\n @row-unhovered=\"\n (row: T, index: number, e: MouseEvent) => {\n emit('row-unhovered', row, index, e)\n }\n \"\n >\n <template v-for=\"(_, name) in $slots\" #[name]=\"slotData\">\n <slot :name=\"name\" v-bind=\"slotData\" />\n </template>\n <template\n v-for=\"field in computedFields\"\n :key=\"field.key\"\n #[`head(${String(field.key)})`]=\"scope\"\n >\n <slot\n :name=\"$slots[`head(${String(field.key)})`] ? `head(${String(field.key)})` : 'head()'\"\n v-bind=\"scope\"\n >\n {{ getTableFieldHeadLabel(field) }}\n </slot>\n <template v-if=\"isSortable && !!scope.field.sortable && props.noSortableIcon === false\">\n <slot\n v-if=\"sortByModel?.find((el) => el.key === scope.field.key)?.order === 'asc'\"\n v-bind=\"{...scope}\"\n :name=\"\n $slots[`sortAsc(${String(scope.field.key)})`]\n ? `sortAsc(${String(scope.field.key)})`\n : 'sortAsc()'\n \"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n fill=\"currentColor\"\n class=\"bi bi-arrow-up-short\"\n viewBox=\"0 0 16 16\"\n aria-hidden\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M8 12a.5.5 0 0 0 .5-.5V5.707l2.146 2.147a.5.5 0 0 0 .708-.708l-3-3a.5.5 0 0 0-.708 0l-3 3a.5.5 0 1 0 .708.708L7.5 5.707V11.5a.5.5 0 0 0 .5.5z\"\n />\n </svg>\n </slot>\n <slot\n v-else-if=\"sortByModel?.find((el) => el.key === scope.field.key)?.order === 'desc'\"\n v-bind=\"{...scope}\"\n :name=\"\n $slots[`sortDesc(${String(scope.field.key)})`]\n ? `sortDesc(${String(scope.field.key)})`\n : 'sortDesc()'\n \"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n fill=\"currentColor\"\n class=\"bi bi-arrow-down-short\"\n viewBox=\"0 0 16 16\"\n aria-hidden\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M8 4a.5.5 0 0 1 .5.5v5.793l2.146-2.147a.5.5 0 0 1 .708.708l-3 3a.5.5 0 0 1-.708 0l-3-3a.5.5 0 1 1 .708-.708L7.5 10.293V4.5A.5.5 0 0 1 8 4z\"\n />\n </svg>\n </slot>\n <slot\n v-else\n v-bind=\"{...scope}\"\n :name=\"\n $slots[`sortDefault(${String(scope.field.key)})`]\n ? `sortDefault(${String(scope.field.key)})`\n : 'sortDefault()'\n \"\n >\n <svg\n :style=\"{opacity: 0.4}\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n fill=\"currentColor\"\n class=\"bi bi-arrow-up-short\"\n viewBox=\"0 0 16 16\"\n aria-hidden\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M8 12a.5.5 0 0 0 .5-.5V5.707l2.146 2.147a.5.5 0 0 0 .708-.708l-3-3a.5.5 0 0 0-.708 0l-3 3a.5.5 0 1 0 .708.708L7.5 5.707V11.5a.5.5 0 0 0 .5.5z\"\n />\n </svg>\n </slot>\n </template>\n </template>\n <template #custom-body=\"scope\">\n <BTr v-if=\"busyModel\" class=\"b-table-busy-slot\" :class=\"getBusyRowClasses\">\n <BTd :colspan=\"scope.fields.length\">\n <slot name=\"table-busy\">\n <BOverlay show>\n <template #overlay>\n <div class=\"d-flex align-items-center gap-2 mt-5\">\n <BSpinner />\n <strong>{{ props.busyLoadingText }}</strong>\n </div>\n </template>\n </BOverlay>\n </slot>\n </BTd>\n </BTr>\n </template>\n </BTableLite>\n</template>\n\n<script setup lang=\"ts\" generic=\"T\">\nimport {useToNumber} from '@vueuse/core'\nimport {computed, onMounted, type Ref, ref, watch} from 'vue'\nimport {formatItem} from '../../utils/formatItem'\nimport BOverlay from '../BOverlay/BOverlay.vue'\nimport BSpinner from '../BSpinner/BSpinner.vue'\nimport BTableLite from './BTableLite.vue'\nimport BTd from './BTd.vue'\nimport BTr from './BTr.vue'\nimport {\n type BTableSortBy,\n type BTableSortByOrder,\n isTableField,\n isTableItem,\n type NoProviderTypes,\n type TableField,\n type TableFieldRaw,\n type TableItem,\n type TableRowType,\n type TableStrictClassValue,\n} from '../../types/TableTypes'\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BTableProps} from '../../types/ComponentProps'\nimport {get, set} from '../../utils/object'\nimport {startCase} from '../../utils/stringUtils'\nimport {getTableFieldHeadLabel} from '../../utils/getTableFieldHeadLabel'\n\nconst _props = withDefaults(\n defineProps<Omit<BTableProps<T>, 'sortBy' | 'busy' | 'selectedItems'>>(),\n {\n noSortableIcon: false,\n perPage: Number.POSITIVE_INFINITY,\n filter: undefined,\n mustSort: false,\n filterable: undefined,\n provider: undefined,\n noProvider: undefined,\n noProviderPaging: false,\n noProviderSorting: false,\n multisort: false,\n noProviderFiltering: false,\n noLocalSorting: false,\n noSelectOnClick: false,\n selectable: false,\n stickySelect: false,\n selectHead: true,\n selectMode: 'multi',\n selectionVariant: 'primary',\n busyLoadingText: 'Loading...',\n currentPage: 1,\n // BTableLite props\n items: () => [],\n fields: () => [],\n // All others use defaults\n caption: undefined,\n align: undefined,\n footClone: undefined,\n labelStacked: undefined,\n showEmpty: undefined,\n emptyText: undefined,\n emptyFilteredText: undefined,\n fieldColumnClass: undefined,\n tbodyTrClass: undefined,\n captionHtml: undefined,\n detailsTdClass: undefined,\n headVariant: undefined,\n headRowVariant: undefined,\n footRowVariant: undefined,\n footVariant: undefined,\n modelValue: undefined,\n primaryKey: undefined,\n tbodyClass: undefined,\n tfootClass: undefined,\n tfootTrClass: undefined,\n theadClass: undefined,\n theadTrClass: undefined,\n // End BTableLite props\n // BTableSimple props\n borderVariant: undefined,\n variant: undefined,\n bordered: undefined,\n borderless: undefined,\n captionTop: undefined,\n dark: undefined,\n hover: undefined,\n id: undefined,\n noBorderCollapse: undefined,\n outlined: undefined,\n fixed: undefined,\n responsive: undefined,\n stacked: undefined,\n striped: undefined,\n stripedColumns: undefined,\n small: undefined,\n stickyHeader: undefined,\n // End BTableSimple props\n }\n)\nconst props = useDefaults(_props, 'BTable')\n\nconst emit = defineEmits<{\n 'filtered': [value: T[]]\n 'head-clicked': [key: string, field: TableField<T>, event: MouseEvent, isFooter: boolean]\n 'row-clicked': [item: T, index: number, event: MouseEvent]\n 'row-dbl-clicked': [item: T, index: number, event: MouseEvent]\n 'row-hovered': [item: T, index: number, event: MouseEvent]\n 'row-unhovered': [item: T, index: number, event: MouseEvent]\n 'row-selected': [value: T]\n 'row-unselected': [value: T]\n 'sorted': [value: BTableSortBy]\n 'change': [value: T[]]\n}>()\n\nconst sortByModel = defineModel<BTableProps<T>['sortBy']>('sortBy', {\n default: undefined,\n})\nconst busyModel = defineModel<Exclude<BTableProps<T>['busy'], undefined>>('busy', {\n default: false,\n})\nconst selectedItemsModel = defineModel<Exclude<BTableProps<T>['selectedItems'], undefined>>(\n 'selectedItems',\n {\n default: () => [],\n }\n)\n\nconst selectedItemsToSet = computed({\n get: () => new Set([...selectedItemsModel.value]),\n set: (val) => {\n selectedItemsModel.value = [...val]\n },\n})\n/**\n * This is to avoid the issue of directly mutating the array structure and to properly trigger the computed setter.\n * The utils also conveniently emit the proper events after\n */\nconst selectedItemsSetUtilities = {\n add: (item: T) => {\n const value = new Set(selectedItemsToSet.value)\n value.add(item)\n selectedItemsToSet.value = value\n emit('row-selected', item)\n },\n clear: () => {\n selectedItemsToSet.value.forEach((item) => {\n selectedItemsSetUtilities.delete(item)\n })\n },\n delete: (item: T) => {\n const value = new Set(selectedItemsToSet.value)\n if (props.primaryKey) {\n const pkey: string = props.primaryKey\n selectedItemsModel.value.forEach((v, i) => {\n const selectedKey = get(v, pkey)\n const itemKey = get(item, pkey)\n\n if (!!selectedKey && !!itemKey && selectedKey === itemKey) {\n value.delete(selectedItemsModel.value[i])\n }\n })\n } else {\n value.delete(item)\n }\n selectedItemsToSet.value = value\n emit('row-unselected', item)\n },\n set: (items: T[]) => {\n selectedItemsToSet.value = new Set(items)\n selectedItemsToSet.value.forEach((item) => {\n emit('row-unselected', item)\n })\n },\n has: (item: T) => {\n if (!props.primaryKey) return selectedItemsToSet.value.has(item)\n\n // Resolver for when we are using primary keys\n const pkey: string = props.primaryKey\n for (const selected of selectedItemsToSet.value) {\n const selectedKey = get(selected, pkey)\n const itemKey = get(item, pkey)\n\n if (!!selectedKey && !!itemKey && selectedKey === itemKey) return true\n }\n return false\n },\n} as const\n\n/**\n * Only stores data that is fetched when using the provider\n */\nconst internalItems: Ref<T[]> = ref([])\n\nconst perPageNumber = useToNumber(() => props.perPage, {method: 'parseInt'})\nconst currentPageNumber = useToNumber(() => props.currentPage, {method: 'parseInt'})\n\nconst isFilterableTable = computed(() => !!props.filter)\nconst usesProvider = computed(() => props.provider !== undefined)\nconst isSelecting = computed(() => selectedItemsToSet.value.size > 0)\n\nconst isSortable = computed(\n () =>\n sortByModel.value !== undefined ||\n props.fields.some(\n (field) => typeof field === 'object' && field !== null && field.sortable === true\n )\n)\n\nconst computedFields = computed<TableField<T>[]>(() =>\n props.fields.map((el) => {\n if (!isTableField(el)) {\n const label = startCase(el as string)\n return {\n key: el as string,\n label,\n tdAttr: props.stacked === true ? {'data-label': label} : undefined,\n }\n }\n\n const value = sortByModel.value?.find((sb) => el.key === sb.key)\n const sortValue =\n isSortable.value === false\n ? undefined\n : value === undefined\n ? 'none'\n : value.order === 'desc'\n ? 'descending'\n : value.order === 'asc'\n ? 'ascending'\n : 'none'\n\n return {\n ...(el as TableField<T>),\n thAttr: {\n 'aria-sort': sortValue,\n ...el.thAttr,\n },\n }\n })\n)\n\nconst tableClasses = computed(() => ({\n 'b-table-busy': busyModel.value,\n 'b-table-selectable': props.selectable,\n 'user-select-none': props.selectable && isSelecting.value,\n}))\n\nconst getBusyRowClasses = computed(() => [\n props.tbodyTrClass\n ? typeof props.tbodyTrClass === 'function'\n ? props.tbodyTrClass(null, 'table-busy')\n : props.tbodyTrClass\n : null,\n])\nconst getFieldColumnClasses = (field: TableField) => [\n {\n 'b-table-sortable-column': isSortable.value && field.sortable,\n },\n]\n// TODO this class has issues if the table has a variant already applied\n// Also the row should technically have aria-selected . Both things could probably just use a function with tbodyTrAttrs\n// But functional tbodyTrAttrs are not supported yet\n// Also the stuff for resolving functions could probably be made a util\nconst getRowClasses = (item: T | null, type: TableRowType): TableStrictClassValue => [\n {\n [`selected table-${props.selectionVariant}`]:\n props.selectable && !!item && selectedItemsSetUtilities.has(item),\n },\n props.tbodyTrClass\n ? typeof props.tbodyTrClass === 'function'\n ? props.tbodyTrClass(item, type)\n : props.tbodyTrClass\n : null,\n]\n\nconst computedItems = computed<T[]>(() => {\n const sortItems = (items: T[]) => {\n // \"undefined\" values are set by us, we do this so we dont wipe out the comparer\n const sortByItems = sortByModel.value?.filter((el) => !!el.order)\n\n if (!sortByItems || sortByItems.length === 0) return items\n\n // Multi-sort\n return [...items].sort((a, b) => {\n for (let i = 0; i < (sortByItems.length ?? 0); i++) {\n const sortOption = sortByItems[i]\n const realVal = (ob: T): string => {\n if (!isTableItem(ob)) return String(ob)\n\n const sortField = computedFields.value.find((el) => {\n if (isTableField(el)) return el.key === sortOption.key\n\n return false\n })\n const val = get(ob, sortOption.key as keyof TableItem)\n if (isTableField(sortField) && !!sortField.sortByFormatted) {\n const formatter =\n typeof sortField.sortByFormatted === 'function'\n ? sortField.sortByFormatted\n : sortField.formatter\n if (formatter) {\n return formatItem(ob, String(sortField.key), formatter) as string\n }\n }\n return typeof val === 'object' && val !== null\n ? JSON.stringify(val)\n : (val?.toString() ?? '')\n }\n\n const aValue = realVal(a)\n const bValue = realVal(b)\n const comparison = sortOption.comparer\n ? sortOption.comparer(aValue, bValue)\n : aValue.localeCompare(bValue, undefined, {numeric: true})\n\n if (comparison !== 0) {\n return sortOption.order === 'asc' ? comparison : -comparison\n }\n }\n return 0 // items are equal\n })\n }\n\n const filterItems = (items: T[]) =>\n items.filter((item) =>\n isTableItem(item)\n ? Object.entries(item).some(([key, val]) => {\n if (\n val === null ||\n val === undefined ||\n key[0] === '_' ||\n (!props.filterable?.includes(key) && !!props.filterable?.length)\n )\n return false\n const realVal = (): string => {\n const filterField = computedFields.value.find((el) => {\n if (isTableField(el)) return el.key === key\n\n return false\n })\n if (isTableField(filterField) && !!filterField.filterByFormatted) {\n const formatter =\n typeof filterField.filterByFormatted === 'function'\n ? filterField.filterByFormatted\n : filterField.formatter\n if (formatter) {\n return formatter(val, String(filterField.key), item) as string\n }\n }\n return typeof val === 'object' ? JSON.stringify(Object.values(val)) : val.toString()\n }\n const itemValue: string = realVal()\n return itemValue.toLowerCase().includes(props.filter?.toLowerCase() ?? '')\n })\n : true\n )\n\n let mappedItems = usesProvider.value ? internalItems.value : (props.items as T[])\n mappedItems = mappedItems.map((item) => {\n if (\n typeof item === 'object' &&\n item !== null &&\n Object.keys(item).some((key) => key.includes('.'))\n ) {\n // We use any here because the TS doesn't isn't certain that \"item\" is the same type as our newItem.\n // But we've determined that it's an object, so we can ignore it since they will always be the same \"object\"\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let newItem: any = {}\n for (const key in item) {\n if (key.includes('.')) {\n newItem = set(newItem, key, item[key])\n } else {\n newItem[key] = item[key]\n }\n }\n return newItem\n // return\n }\n return item\n })\n\n if (\n (isFilterableTable.value === true && !usesProvider.value) ||\n (isFilterableTable.value === true && usesProvider.value && props.noProviderFiltering)\n ) {\n mappedItems = filterItems(mappedItems)\n }\n\n if (\n (isSortable.value === true && !usesProvider.value && !props.noLocalSorting) ||\n (isSortable.value === true && usesProvider.value && props.noProviderSorting)\n ) {\n mappedItems = sortItems(mappedItems)\n }\n\n return mappedItems\n})\n\nconst computedDisplayItems = computed<T[]>(() => {\n if (Number.isNaN(perPageNumber.value) || (usesProvider.value && !props.noProviderPaging)) {\n return computedItems.value\n }\n\n return computedItems.value.slice(\n (currentPageNumber.value - 1) * (perPageNumber.value || Number.POSITIVE_INFINITY),\n currentPageNumber.value * (perPageNumber.value || Number.POSITIVE_INFINITY)\n )\n})\n\nwatch(computedDisplayItems, (v) => {\n emit('change', v)\n})\n\nconst handleRowSelection = (\n row: T,\n index: number,\n shiftClicked = false,\n ctrlClicked = false,\n metaClicked = false\n) => {\n if (!props.selectable) return\n\n if (props.selectMode === 'single' || props.selectMode === 'multi') {\n // Do nothing when these items are held\n if (shiftClicked || ctrlClicked) return\n // Delete if item is in\n if (selectedItemsSetUtilities.has(row)) {\n selectedItemsSetUtilities.delete(row)\n } else {\n if (props.selectMode === 'single') {\n selectedItemsSetUtilities.set([row])\n } else {\n selectedItemsSetUtilities.add(row)\n }\n }\n } else {\n if (ctrlClicked || metaClicked) {\n // Delete if in the object\n if (selectedItemsSetUtilities.has(row)) {\n selectedItemsSetUtilities.delete(row)\n // Otherwise add. Functions similarly to 'multi' at this point\n } else {\n selectedItemsSetUtilities.add(row)\n }\n // This is where range is different, due to the difference in shift\n } else if (shiftClicked) {\n const lastSelectedItem = [...selectedItemsToSet.value].pop()\n const lastSelectedIndex = props.items.findIndex((i) => i === lastSelectedItem)\n const selectStartIndex = Math.min(lastSelectedIndex, index)\n const selectEndIndex = Math.max(lastSelectedIndex, index)\n const items = props.items.slice(selectStartIndex, selectEndIndex + 1)\n selectedItemsSetUtilities.set(items)\n // If nothing is being held, then we just behave like it's single mode\n } else {\n selectedItemsSetUtilities.set([row])\n }\n }\n}\n\nconst onRowClick = (row: T, index: number, e: MouseEvent) => {\n if (props.noSelectOnClick === false) {\n handleRowSelection(row, index, e.shiftKey, e.ctrlKey, e.metaKey)\n }\n emit('row-clicked', row, index, e)\n}\n\nconst handleFieldSorting = (field: TableField<T>) => {\n if (!isSortable.value) return\n\n const fieldKey = typeof field === 'object' && field !== null ? field.key : field\n const fieldSortable = typeof field === 'object' && field !== null ? field.sortable : false\n\n if (!(isSortable.value === true && fieldSortable === true)) return\n\n const resolveOrder = (val: BTableSortByOrder): BTableSortByOrder | undefined => {\n if (val === 'asc') return 'desc'\n if (val === undefined) return 'asc'\n if (\n props.mustSort === true ||\n (Array.isArray(props.mustSort) && props.mustSort.includes(fieldKey as string))\n )\n return 'asc'\n return undefined\n }\n\n const index = sortByModel.value?.findIndex((el) => el.key === fieldKey) ?? -1\n const originalValue = sortByModel.value?.[index]\n const updatedValue: BTableSortBy =\n // If value is new, we default to ascending\n // Otherwise we make a temp copy of the value\n index === -1 || !originalValue ? {key: fieldKey as string, order: 'asc'} : {...originalValue}\n\n /**\n * @returns the updated value to emit for sorted\n */\n const handleMultiSort = (): BTableSortBy => {\n let val = updatedValue\n if (index === -1) {\n sortByModel.value = [...(sortByModel.value ?? []), updatedValue]\n } else {\n const order = resolveOrder(updatedValue.order)\n val = {...updatedValue, order}\n sortByModel.value = order\n ? sortByModel.value?.map((el) => (el.key === val.key ? val : el))\n : sortByModel.value?.filter((el) => el.key !== val.key)\n }\n return val\n }\n\n /**\n * @returns the updated value to emit for sorted\n */\n const handleSingleSort = (): BTableSortBy => {\n const val = {\n ...updatedValue,\n order: index === -1 ? updatedValue.order : resolveOrder(updatedValue.order),\n }\n sortByModel.value = [val]\n return val\n }\n\n // Then emit the returned updated value\n emit('sorted', props.multisort === true ? handleMultiSort() : handleSingleSort())\n}\n\nconst onFieldHeadClick = (\n fieldKey: string,\n field: TableField<T>,\n event: Readonly<MouseEvent>,\n isFooter = false\n) => {\n emit('head-clicked', fieldKey, field, event, isFooter)\n handleFieldSorting(field)\n}\n\nconst callItemsProvider = async () => {\n if (!usesProvider.value || props.provider === undefined || busyModel.value) return\n busyModel.value = true\n const response = props.provider({\n currentPage: currentPageNumber.value,\n filter: props.filter,\n sortBy: sortByModel.value,\n perPage: perPageNumber.value,\n })\n try {\n const items = response instanceof Promise ? await response : response\n\n if (items === undefined) return\n internalItems.value = items\n } finally {\n // Potential race condition could occur if the user explicitly sets the busy value to a different value while the response promise is executing\n // which would have been the users choice.\n // eslint-disable-next-line require-atomic-updates\n busyModel.value = false\n }\n}\n\nconst providerPropsWatch = async (prop: string, val: unknown, oldVal: unknown) => {\n if (val === oldVal) return\n\n //stop provide when paging\n const inNoProvider = (key: NoProviderTypes) => props.noProvider?.includes(key) === true\n const noProvideWhenPaging =\n (prop === 'currentPage' || prop === 'perPage') &&\n (inNoProvider('paging') || props.noProviderPaging === true)\n const noProvideWhenFiltering =\n prop === 'filter' && (inNoProvider('filtering') || props.noProviderFiltering === true)\n const noProvideWhenSorting =\n (prop === 'sortBy' || prop === 'sortDesc') &&\n (inNoProvider('sorting') || props.noProviderSorting === true)\n\n if (noProvideWhenPaging || noProvideWhenFiltering || noProvideWhenSorting) return\n\n if (usesProvider.value === true) {\n await callItemsProvider()\n }\n\n if (!(prop === 'currentPage' || prop === 'perPage')) {\n emit('filtered', [...computedItems.value])\n }\n}\n\nwatch(\n () => props.filter,\n (filter, oldFilter) => {\n providerPropsWatch('filter', filter, oldFilter)\n\n if (filter === oldFilter || usesProvider.value) return\n if (!filter) {\n emit('filtered', [...computedItems.value])\n }\n }\n)\nwatch(currentPageNumber, (val, oldVal) => {\n providerPropsWatch('currentPage', val, oldVal)\n})\nwatch(perPageNumber, (val, oldVal) => {\n providerPropsWatch('perPage', val, oldVal)\n})\nwatch(\n sortByModel,\n (val, oldVal) => {\n providerPropsWatch('sortBy', val, oldVal)\n },\n {deep: true}\n)\n\nwatch(\n () => props.provider,\n (newValue) => {\n // Reset the internal values if the provider stops getting used\n if (newValue === undefined) {\n internalItems.value = []\n return\n }\n // Otherwise we should refresh the table on such a change\n callItemsProvider()\n }\n)\n\nonMounted(callItemsProvider)\n\ndefineExpose({\n // The row selection methods are really for compat. Users should probably use the v-model though\n clearSelected: () => {\n if (!props.selectable) return\n selectedItemsSetUtilities.clear()\n },\n refresh: callItemsProvider,\n selectAllRows: () => {\n if (!props.selectable) return\n const unselectableItems = selectedItemsToSet.value.size > 0 ? [...selectedItemsToSet.value] : []\n selectedItemsToSet.value = new Set([...computedItems.value])\n selectedItemsToSet.value.forEach((item) => {\n if (unselectableItems.includes(item)) return\n emit('row-selected', item)\n })\n },\n selectRow: (index: number) => {\n if (!props.selectable) return\n const item = computedItems.value[index]\n if (!item || selectedItemsSetUtilities.has(item)) return\n selectedItemsSetUtilities.add(item)\n },\n unselectRow: (index: number) => {\n if (!props.selectable) return\n const item = computedItems.value[index]\n if (!item || !selectedItemsSetUtilities.has(item)) return\n selectedItemsSetUtilities.delete(item)\n },\n isRowSelected: (index: number) => {\n if (!props.selectable) return false\n const item = computedItems.value[index]\n return selectedItemsSetUtilities.has(item)\n },\n})\n</script>\n"],"names":["_useModel","_a","_b"],"mappings":"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"}
1
+ {"version":3,"file":"BTable.vue_vue_type_script_setup_true_lang-DSox5TGm.mjs","sources":["../src/utils/formatItem.ts","../src/types/TableTypes.ts","../src/components/BTable/BTbody.vue","../src/components/BTable/BTd.vue","../src/components/BTable/BTfoot.vue","../src/components/BTable/BTh.vue","../src/components/BTable/BThead.vue","../src/components/BTable/BTr.vue","../src/utils/getTableFieldHeadLabel.ts","../src/utils/filterEvent.ts","../src/components/BTable/BTableLite.vue","../src/components/BTable/BTable.vue"],"sourcesContent":["import type {TableFieldFormatter} from '../types/TableTypes'\nimport {get} from './object'\n\nexport const formatItem = (\n item: unknown,\n // Weakly type fieldKey because it can be a nested string, such as 'foo.bar.baz'\n fieldKey: string,\n formatter?: TableFieldFormatter<unknown>\n) => {\n const val = get(item, fieldKey)\n return formatter && typeof formatter === 'function' ? formatter(val, fieldKey, item) : val\n}\n","import type {StyleValue} from 'vue'\nimport type {ColorVariant} from './ColorTypes'\nimport type {MaybePromise} from './MaybePromise'\nimport type {LiteralUnion} from './LiteralUnion'\nimport type {AttrsValue, ClassValue} from './AnyValuedAttributes'\n\nexport type TableItem<T = Record<string, unknown>> = T & {\n _rowVariant?: ColorVariant | null\n _cellVariants?: Partial<Record<keyof T, ColorVariant>>\n _showDetails?: boolean\n}\n\nexport const isTableItem = (value: unknown): value is TableItem =>\n typeof value === 'object' && value !== null\n\n// undefined means no sorting\nexport type BTableSortByOrder = 'desc' | 'asc' | undefined\n\nexport type BTableSortBy = {\n order: BTableSortByOrder\n key: string\n comparer?: (a: string, b: string) => number\n}\n\nexport type BTableProviderContext = {\n sortBy: BTableSortBy[] | undefined\n filter: string | undefined\n currentPage: number\n perPage: number\n}\n\nexport type BTableProvider<T> = (\n context: Readonly<BTableProviderContext>\n) => MaybePromise<T[] | undefined>\n\nexport type TableFieldFormatter<T> = (value: unknown, key: string, item: T) => string\n\nexport type TableRowType = 'row' | 'row-details' | 'row-top' | 'row-bottom' | 'table-busy'\nexport type TableRowThead = 'top' | 'bottom'\n\nexport type TableStrictClassValue = string | unknown[] | Record<string, boolean>\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type TableField<T = any> = {\n key: LiteralUnion<keyof T>\n label?: string\n headerTitle?: string\n headerAbbr?: string\n class?: ClassValue\n formatter?: TableFieldFormatter<T>\n sortable?: boolean\n sortKey?: string\n sortDirection?: string\n sortByFormatted?: boolean | TableFieldFormatter<T>\n filterByFormatted?: boolean | TableFieldFormatter<T>\n tdClass?:\n | TableStrictClassValue\n | ((value: unknown, key: string, item: T) => TableStrictClassValue)\n thClass?: ClassValue\n thStyle?: StyleValue\n variant?: ColorVariant | null\n tdAttr?: AttrsValue | ((value: unknown, key: string, item: T) => AttrsValue)\n thAttr?:\n | AttrsValue\n | ((value: unknown, key: string, item: T | null, type: TableRowThead) => AttrsValue)\n isRowHeader?: boolean\n stickyColumn?: boolean\n}\n\nexport type TableFieldRaw<T = unknown> = T extends object\n ? LiteralUnion<keyof T> | TableField<T>\n : string | TableField\n\nexport const isTableField = <T>(value: unknown): value is TableField<T> =>\n typeof value === 'object' && value !== null && 'key' in value\n\nexport const isTableFieldRaw = <T>(value: unknown): value is TableFieldRaw<T> =>\n typeof value === 'string' || isTableField(value)\n\nexport type NoProviderTypes = 'paging' | 'sorting' | 'filtering'\n","<template>\n <tbody :class=\"computedClasses\">\n <slot />\n </tbody>\n</template>\n\n<script setup lang=\"ts\">\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BTbodyProps} from '../../types/ComponentProps'\nimport {computed} from 'vue'\n\nconst _props = withDefaults(defineProps<BTbodyProps>(), {\n variant: null,\n})\nconst props = useDefaults(_props, 'BTbody')\n\ndefineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: (props: Record<string, never>) => any\n}>()\n\nconst computedClasses = computed(() => ({\n [`thead-${props.variant}`]: props.variant !== null,\n}))\n</script>\n","<template>\n <td\n :scope=\"scope\"\n :class=\"computedClasses\"\n :colspan=\"props.colspan\"\n :rowspan=\"props.rowspan\"\n :data-label=\"props.stackedHeading\"\n >\n <div v-if=\"props.stackedHeading\">\n <slot />\n </div>\n <slot v-else />\n </td>\n</template>\n\n<script setup lang=\"ts\">\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BTdProps} from '../../types/ComponentProps'\nimport {computed} from 'vue'\n\nconst _props = withDefaults(defineProps<BTdProps>(), {\n colspan: undefined,\n rowspan: undefined,\n stackedHeading: undefined,\n stickyColumn: false,\n variant: null,\n})\nconst props = useDefaults(_props, 'BTd')\n\ndefineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: (props: Record<string, never>) => any\n}>()\n\nconst computedClasses = computed(() => ({\n [`table-${props.variant}`]: props.variant !== null,\n 'b-table-sticky-column': props.stickyColumn,\n 'table-b-table-default': props.stickyColumn && props.variant === null,\n}))\n\nconst scope = computed(() => (props.colspan ? 'colspan' : props.rowspan ? 'rowspan' : 'col'))\n</script>\n","<template>\n <tfoot :class=\"computedClasses\">\n <slot />\n </tfoot>\n</template>\n\n<script setup lang=\"ts\">\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BTfootProps} from '../../types/ComponentProps'\nimport {computed} from 'vue'\n\nconst _props = withDefaults(defineProps<BTfootProps>(), {\n variant: null,\n})\nconst props = useDefaults(_props, 'BTfoot')\n\ndefineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: (props: Record<string, never>) => any\n}>()\n\nconst computedClasses = computed(() => ({\n [`table-${props.variant}`]: props.variant !== null,\n}))\n</script>\n","<template>\n <th\n :scope=\"scope\"\n :class=\"computedClasses\"\n :colspan=\"props.colspan\"\n :rowspan=\"props.rowspan\"\n :data-label=\"props.stackedHeading\"\n >\n <div v-if=\"props.stackedHeading !== undefined\">\n <slot />\n </div>\n <slot v-else />\n </th>\n</template>\n\n<script setup lang=\"ts\">\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BThProps} from '../../types/ComponentProps'\nimport {computed} from 'vue'\n\nconst _props = withDefaults(defineProps<BThProps>(), {\n colspan: undefined,\n rowspan: undefined,\n stackedHeading: undefined,\n stickyColumn: false,\n variant: null,\n})\nconst props = useDefaults(_props, 'BTh')\n\ndefineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: (props: Record<string, never>) => any\n}>()\n\nconst computedClasses = computed(() => ({\n [`table-${props.variant}`]: props.variant !== null,\n 'b-table-sticky-column': props.stickyColumn,\n 'table-b-table-default': props.stickyColumn && props.variant === null,\n}))\n\nconst scope = computed(() => (props.colspan ? 'colspan' : props.rowspan ? 'rowspan' : 'col'))\n</script>\n","<template>\n <thead :class=\"computedClasses\">\n <slot />\n </thead>\n</template>\n\n<script setup lang=\"ts\">\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BTheadProps} from '../../types/ComponentProps'\nimport {computed} from 'vue'\n\nconst _props = withDefaults(defineProps<BTheadProps>(), {\n variant: null,\n})\nconst props = useDefaults(_props, 'BThead')\n\ndefineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: (props: Record<string, never>) => any\n}>()\n\nconst computedClasses = computed(() => ({\n [`table-${props.variant}`]: props.variant !== null,\n}))\n</script>\n","<template>\n <tr :class=\"computedClasses\">\n <slot />\n </tr>\n</template>\n\n<script setup lang=\"ts\">\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BTrProps} from '../../types/ComponentProps'\nimport {computed} from 'vue'\n\nconst _props = withDefaults(defineProps<BTrProps>(), {\n variant: null,\n})\nconst props = useDefaults(_props, 'BTr')\n\ndefineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: (props: Record<string, never>) => any\n}>()\n\nconst computedClasses = computed(() => ({\n [`table-${props.variant}`]: props.variant !== null,\n}))\n</script>\n","import {titleCase} from './stringUtils'\nimport type {TableFieldRaw} from '../types/TableTypes'\n\nexport const getTableFieldHeadLabel = (field: Readonly<TableFieldRaw<unknown>>) =>\n typeof field === 'string'\n ? titleCase(field)\n : field.label !== undefined\n ? field.label\n : typeof field.key === 'string'\n ? titleCase(field.key)\n : field.key\n","const TABLE_TAG_NAMES = ['TD', 'TH', 'TR']\n\n// Filter CSS selector for click/dblclick/etc. events\n// If any of these selectors match the clicked element, we ignore the event\nconst eventFilter = [\n 'a',\n 'a *', // Include content inside links\n 'button',\n 'button *', // Include content inside buttons\n 'input:not(.disabled):not([disabled])',\n 'select:not(.disabled):not([disabled])',\n 'textarea:not(.disabled):not([disabled])',\n '[role=\"link\"]',\n '[role=\"link\"] *',\n '[role=\"button\"]',\n '[role=\"button\"] *',\n '[tabindex]:not(.disabled):not([disabled])',\n].join(',')\n\n// Returns `true` if we should ignore the click/double-click/keypress event\n// Avoids having the user need to use `@click.stop` on the form control\nexport const filterEvent = (event: Readonly<Event>) => {\n // Exit early when we don't have a target element\n if (!event || !event.target) {\n return false\n }\n const el = event.target as HTMLElement\n // Exit early when element is disabled or a table element\n if (('disabled' in el && el.disabled) || TABLE_TAG_NAMES.indexOf(el.tagName) !== -1) {\n return false\n }\n // Ignore the click when it was inside a dropdown menu\n if (el.closest('.dropdown-menu')) return true\n\n const label = el.tagName === 'LABEL' ? el : el.closest('label')\n // If the label's form control is not disabled then we don't propagate event\n // Modern browsers have `label.control` that references the associated input, but IE 11\n // does not have this property on the label element, so we resort to DOM lookups\n if (label) {\n const labelFor = label.getAttribute('for')\n const input = labelFor\n ? document.getElementById(labelFor)\n : label.querySelector('input, select, textarea')\n if (input && !(input as HTMLInputElement).disabled) {\n return true\n }\n }\n // Otherwise check if the event target matches one of the selectors in the\n // event filter (i.e. anchors, non disabled inputs, etc.)\n // Return `true` if we should ignore the event\n return el.matches(eventFilter)\n}\n","<template>\n <BTableSimple\n :id=\"props.id\"\n :bordered=\"props.bordered\"\n :borderless=\"props.borderless\"\n :border-variant=\"props.borderVariant\"\n :caption-top=\"props.captionTop\"\n :dark=\"props.dark\"\n :fixed=\"props.fixed\"\n :hover=\"props.hover\"\n :no-border-collapse=\"props.noBorderCollapse\"\n :outlined=\"props.outlined\"\n :responsive=\"props.responsive\"\n :small=\"props.small\"\n :stacked=\"props.stacked\"\n :sticky-header=\"props.stickyHeader\"\n :striped=\"props.striped\"\n :table-class=\"computedTableClasses\"\n :variant=\"props.variant\"\n :striped-columns=\"props.stripedColumns\"\n >\n <BThead v-show=\"showComputedHeaders\" :variant=\"props.headVariant\" :class=\"props.theadClass\">\n <slot v-if=\"$slots['thead-top']\" name=\"thead-top\" />\n <BTr :variant=\"props.headRowVariant\" :class=\"props.theadTrClass\">\n <BTh\n v-for=\"field in computedFields\"\n :key=\"field.key\"\n scope=\"col\"\n :class=\"getFieldColumnClasses(field)\"\n :title=\"field.headerTitle\"\n :variant=\"field.variant\"\n :abbr=\"field.headerAbbr\"\n :style=\"field.thStyle\"\n v-bind=\"callThAttr(null, field, 'top')\"\n @click=\"headerClicked(field, $event)\"\n >\n <slot\n :name=\"$slots[`head(${String(field.key)})`] ? `head(${String(field.key)})` : 'head()'\"\n :label=\"field.label\"\n :column=\"field.key\"\n :field=\"field\"\n :is-foot=\"false\"\n >\n {{ getTableFieldHeadLabel(field) }}\n </slot>\n </BTh>\n </BTr>\n <BTr v-if=\"$slots['thead-sub']\">\n <BTd\n v-for=\"field in computedFields\"\n :key=\"field.key\"\n scope=\"col\"\n :variant=\"field.variant\"\n :class=\"[field.class, field.thClass]\"\n >\n <slot name=\"thead-sub\" :items=\"computedFields\" v-bind=\"field\">\n {{ field.label }}\n </slot>\n </BTd>\n </BTr>\n </BThead>\n <BTbody :class=\"props.tbodyClass\">\n <slot\n name=\"custom-body\"\n :fields=\"computedFields\"\n :items=\"props.items\"\n :columns=\"computedFields.length\"\n >\n <BTr\n v-if=\"!props.stacked && $slots['top-row']\"\n :class=\"getRowClasses(null, 'row-top')\"\n v-bind=\"callTbodyTrAttrs(null, 'row-top')\"\n >\n <slot name=\"top-row\" />\n </BTr>\n\n <template\n v-for=\"(item, itemIndex) in props.items\"\n :key=\"props.primaryKey ? get(item, props.primaryKey) : itemIndex\"\n >\n <BTr\n :class=\"getRowClasses(item, 'row')\"\n :variant=\"isTableItem(item) ? item._rowVariant : undefined\"\n v-bind=\"callTbodyTrAttrs(item, 'row')\"\n @click=\"!filterEvent($event) && emit('row-clicked', item, itemIndex, $event)\"\n @dblclick=\"!filterEvent($event) && emit('row-dbl-clicked', item, itemIndex, $event)\"\n @mouseenter=\"!filterEvent($event) && emit('row-hovered', item, itemIndex, $event)\"\n @mouseleave=\"!filterEvent($event) && emit('row-unhovered', item, itemIndex, $event)\"\n >\n <BTd\n v-for=\"field in computedFields\"\n :key=\"field.key\"\n :variant=\"\n (isTableItem(item) ? item._cellVariants?.[field.key as string] : false)\n ? null\n : field.variant\n \"\n :class=\"getFieldRowClasses(field, item)\"\n v-bind=\"itemAttributes(item, String(field.key), field.tdAttr)\"\n >\n <label v-if=\"props.stacked && props.labelStacked\" class=\"b-table-stacked-label\">\n {{ getTableFieldHeadLabel(field) }}\n </label>\n <slot\n :name=\"\n $slots[`cell(${String(field.key)})`] ? `cell(${String(field.key)})` : 'cell()'\n \"\n :value=\"formatItem(item, String(field.key), field.formatter)\"\n :unformatted=\"get(item, String(field.key))\"\n :index=\"itemIndex\"\n :item=\"item\"\n :field=\"field\"\n :items=\"items\"\n :toggle-details=\"\n () => {\n toggleRowDetails(item)\n }\n \"\n :details-showing=\"isTableItem(item) ? (detailsMap.get(item) ?? false) : false\"\n >\n <template v-if=\"!$slots[`cell(${String(field.key)})`] && !$slots['cell()']\">\n {{ formatItem(item, String(field.key), field.formatter) }}\n </template>\n </slot>\n </BTd>\n </BTr>\n\n <template\n v-if=\"isTableItem(item) && detailsMap.get(item) === true && $slots['row-details']\"\n >\n <BTr aria-hidden=\"true\" role=\"presentation\" class=\"d-none\" />\n <BTr\n :class=\"getRowClasses(item, 'row-details')\"\n :variant=\"item._rowVariant\"\n v-bind=\"callTbodyTrAttrs(item, 'row-details')\"\n >\n <BTd :colspan=\"computedFieldsTotal\" :class=\"detailsTdClass\">\n <slot\n name=\"row-details\"\n :item=\"item\"\n :toggle-details=\"\n () => {\n toggleRowDetails(item)\n }\n \"\n :fields=\"props.fields\"\n :index=\"itemIndex\"\n />\n </BTd>\n </BTr>\n </template>\n </template>\n <BTr v-if=\"props.showEmpty && props.items.length === 0\" class=\"b-table-empty-slot\">\n <BTd :colspan=\"computedFieldsTotal\">\n <slot name=\"empty\" :items=\"props.items\">\n {{ props.emptyText }}\n </slot>\n </BTd>\n </BTr>\n <!-- This class is for specific targetting of this slot element -->\n <BTr\n v-if=\"!props.stacked && $slots['bottom-row']\"\n class=\"bottom-row\"\n :class=\"getRowClasses(null, 'row-bottom')\"\n v-bind=\"callTbodyTrAttrs(null, 'row-bottom')\"\n >\n <slot name=\"bottom-row\" />\n </BTr>\n </slot>\n </BTbody>\n <BTfoot v-if=\"props.footClone\" :variant=\"props.footVariant\" :class=\"props.tfootClass\">\n <BTr :variant=\"props.footRowVariant\" :class=\"props.tfootTrClass\">\n <BTh\n v-for=\"field in computedFields\"\n :key=\"field.key\"\n scope=\"col\"\n :class=\"getFieldColumnClasses(field)\"\n :title=\"field.headerTitle\"\n :abbr=\"field.headerAbbr\"\n :style=\"field.thStyle\"\n :variant=\"field.variant\"\n v-bind=\"callThAttr(null, field, 'bottom')\"\n @click=\"headerClicked(field, $event, true)\"\n >\n <div class=\"d-inline-flex flex-nowrap align-items-center gap-1\">\n <div>\n <slot\n :name=\"\n $slots[`foot(${String(field.key)})`] ? `foot(${String(field.key)})` : 'foot()'\n \"\n :label=\"field.label\"\n :column=\"field.key\"\n :field=\"field\"\n :is-foot=\"true\"\n >\n {{ getTableFieldHeadLabel(field) }}\n </slot>\n </div>\n </div>\n </BTh>\n </BTr>\n </BTfoot>\n <BTfoot v-else-if=\"$slots['custom-foot']\">\n <slot\n name=\"custom-foot\"\n :fields=\"computedFields\"\n :items=\"props.items\"\n :columns=\"computedFields.length\"\n />\n </BTfoot>\n <caption v-if=\"$slots['table-caption'] || props.caption\">\n <slot name=\"table-caption\">\n {{ props.caption }}\n </slot>\n </caption>\n </BTableSimple>\n</template>\n\n<script setup lang=\"ts\" generic=\"T\">\nimport {computed, ref, watch} from 'vue'\nimport type {BTableLiteProps} from '../../types/ComponentProps'\nimport {\n isTableField,\n isTableItem,\n type TableField,\n type TableItem,\n type TableRowThead,\n type TableRowType,\n} from '../../types/TableTypes'\nimport BTableSimple from './BTableSimple.vue'\nimport BTbody from './BTbody.vue'\nimport BTd from './BTd.vue'\nimport BTfoot from './BTfoot.vue'\nimport BTh from './BTh.vue'\nimport BThead from './BThead.vue'\nimport BTr from './BTr.vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {get} from '../../utils/object'\nimport {getTableFieldHeadLabel} from '../../utils/getTableFieldHeadLabel'\nimport {formatItem} from '../../utils/formatItem'\nimport {filterEvent} from '../../utils/filterEvent'\nimport {startCase} from '../../utils/stringUtils'\n\nconst _props = withDefaults(defineProps<BTableLiteProps<T>>(), {\n caption: undefined,\n align: undefined,\n fields: () => [],\n footClone: false,\n items: () => [],\n labelStacked: false,\n showEmpty: false,\n emptyText: 'There are no records to show',\n emptyFilteredText: 'There are no records matching your request', // TODO not implemented\n fieldColumnClass: undefined,\n tbodyTrClass: undefined,\n captionHtml: undefined,\n detailsTdClass: undefined,\n headVariant: undefined,\n headRowVariant: undefined,\n footRowVariant: undefined,\n footVariant: undefined,\n modelValue: undefined,\n primaryKey: undefined,\n tbodyClass: undefined,\n tbodyTrAttrs: undefined,\n tfootClass: undefined,\n tfootTrClass: undefined,\n theadClass: undefined,\n theadTrClass: undefined,\n // BTableSimpleProps props\n borderVariant: undefined,\n tableClass: undefined,\n variant: undefined,\n bordered: undefined,\n borderless: undefined,\n captionTop: undefined,\n dark: undefined,\n hover: undefined,\n id: undefined,\n noBorderCollapse: undefined,\n outlined: undefined,\n fixed: undefined,\n responsive: undefined,\n stacked: undefined,\n striped: undefined,\n stripedColumns: undefined,\n small: undefined,\n stickyHeader: undefined,\n // End BTableSimpleProps props\n})\nconst props = useDefaults(_props, 'BTableLite')\n\nconst emit = defineEmits<{\n 'head-clicked': [key: string, field: TableField<T>, event: MouseEvent, isFooter: boolean]\n 'row-clicked': [item: T, index: number, event: MouseEvent]\n 'row-dbl-clicked': [item: T, index: number, event: MouseEvent]\n 'row-hovered': [item: T, index: number, event: MouseEvent]\n 'row-unhovered': [item: T, index: number, event: MouseEvent]\n}>()\n\nconst generateDetailsItem = (item: TableItem): [object, boolean | undefined] => [\n item,\n item._showDetails,\n]\nconst detailsMap = ref(new WeakMap<object, boolean | undefined>())\nwatch(\n () => props.items,\n (items) => {\n items.forEach((item) => {\n if (!isTableItem(item)) return\n detailsMap.value.set(...generateDetailsItem(item))\n })\n },\n {deep: true, immediate: true}\n)\n\nconst computedTableClasses = computed(() => [\n props.tableClass,\n {\n [`align-${props.align}`]: props.align !== undefined,\n },\n])\n\nconst computedFields = computed<(TableField & {_noHeader?: true})[]>(() => {\n if (!props.fields.length && props.items.length) {\n const [firstItem] = props.items\n if (isTableItem(firstItem) || Array.isArray(firstItem)) {\n return Object.keys(firstItem).map((k) => {\n const label = startCase(k)\n return {\n key: k,\n label,\n tdAttr: props.stacked === true ? {'data-label': label} : undefined,\n }\n })\n }\n // The items are primitives, so we just return a single empty field\n // No header will be shown, as we don't know what to show\n return [{key: '', _noHeader: true}]\n }\n\n return props.fields.map((f) => {\n if (isTableField(f)) {\n return {\n ...(f as TableField),\n tdAttr:\n props.stacked === true\n ? {'data-label': startCase(f.key as string), ...f.tdAttr}\n : f.tdAttr,\n }\n }\n const label = startCase(f as string)\n return {\n key: f as string,\n label,\n tdAttr: props.stacked === true ? {'data-label': label} : undefined,\n }\n })\n})\nconst computedFieldsTotal = computed(() => computedFields.value.length)\nconst showComputedHeaders = computed(() => {\n // We only hide the header if all fields have _noHeader set to true. Which would be our doing\n // This usually happens under a circumstance of displaying an array of primitives\n // Under any other circumstance, I'm not sure how this would apply\n if (computedFields.value.length > 0 && computedFields.value.every((el) => el._noHeader === true))\n return false\n return true\n})\n\nconst itemAttributes = (item: T, fieldKey: string, attr?: unknown) => {\n const val = get(item, fieldKey)\n return attr && typeof attr === 'function' ? attr(val, fieldKey, item) : attr\n}\n\nconst callThAttr = (item: T | null, field: TableField<T>, type: TableRowThead) => {\n const fieldKey = String(field.key)\n const val = get(item, fieldKey)\n return field.thAttr && typeof field.thAttr === 'function'\n ? field.thAttr(val, fieldKey, item, type)\n : field.thAttr\n}\n\nconst headerClicked = (field: TableField<T>, event: Readonly<MouseEvent>, isFooter = false) => {\n emit('head-clicked', field.key as string, field, event, isFooter)\n}\n\nconst toggleRowDetails = (tr: T) => {\n if (isTableItem(tr)) {\n const prevValue = detailsMap.value.get(tr)\n detailsMap.value.set(tr, !prevValue)\n tr._showDetails = !prevValue\n }\n}\n\nconst getFieldColumnClasses = (field: TableField) => [\n field.class,\n field.thClass,\n {\n 'b-table-sticky-column': field.stickyColumn,\n },\n props.fieldColumnClass\n ? typeof props.fieldColumnClass === 'function'\n ? props.fieldColumnClass(field)\n : props.fieldColumnClass\n : null,\n]\n\nconst getFieldRowClasses = (field: Readonly<TableField>, tr: T) => {\n const val = get(tr, String(field.key))\n return [\n field.class,\n typeof field.tdClass === 'function' ? field.tdClass(val, String(field.key), tr) : field.tdClass,\n (isTableItem(tr) ? tr._cellVariants?.[field.key as string] : false)\n ? `table-${(tr as TableItem)._cellVariants?.[field.key as string]}`\n : null,\n {\n 'b-table-sticky-column': field.stickyColumn,\n },\n ]\n}\n\nconst callTbodyTrAttrs = (item: T | null, type: TableRowType) =>\n props.tbodyTrAttrs\n ? typeof props.tbodyTrAttrs === 'function'\n ? props.tbodyTrAttrs(item, type)\n : props.tbodyTrAttrs\n : null\n\nconst getRowClasses = (item: T | null, type: TableRowType) =>\n props.tbodyTrClass\n ? typeof props.tbodyTrClass === 'function'\n ? props.tbodyTrClass(item, type)\n : props.tbodyTrClass\n : null\n</script>\n","<template>\n <BTableLite\n v-bind=\"props\"\n :aria-busy=\"busyModel\"\n :items=\"computedDisplayItems\"\n :fields=\"computedFields as TableFieldRaw<T>[]\"\n :table-class=\"tableClasses\"\n :tbody-tr-class=\"getRowClasses\"\n :field-column-class=\"getFieldColumnClasses\"\n @head-clicked=\"onFieldHeadClick\"\n @row-dbl-clicked=\"\n (row: T, index: number, e: MouseEvent) => {\n emit('row-dbl-clicked', row, index, e)\n }\n \"\n @row-clicked=\"onRowClick\"\n @row-hovered=\"\n (row: T, index: number, e: MouseEvent) => {\n emit('row-hovered', row, index, e)\n }\n \"\n @row-unhovered=\"\n (row: T, index: number, e: MouseEvent) => {\n emit('row-unhovered', row, index, e)\n }\n \"\n >\n <template v-for=\"(_, name) in $slots\" #[name]=\"slotData\">\n <slot :name=\"name\" v-bind=\"slotData\" />\n </template>\n <template\n v-for=\"field in computedFields\"\n :key=\"field.key\"\n #[`head(${String(field.key)})`]=\"scope\"\n >\n <slot\n :name=\"$slots[`head(${String(field.key)})`] ? `head(${String(field.key)})` : 'head()'\"\n v-bind=\"scope\"\n >\n {{ getTableFieldHeadLabel(field) }}\n </slot>\n <template v-if=\"isSortable && !!scope.field.sortable && props.noSortableIcon === false\">\n <slot\n v-if=\"sortByModel?.find((el) => el.key === scope.field.key)?.order === 'asc'\"\n v-bind=\"{...scope}\"\n :name=\"\n $slots[`sortAsc(${String(scope.field.key)})`]\n ? `sortAsc(${String(scope.field.key)})`\n : 'sortAsc()'\n \"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n fill=\"currentColor\"\n class=\"bi bi-arrow-up-short\"\n viewBox=\"0 0 16 16\"\n aria-hidden\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M8 12a.5.5 0 0 0 .5-.5V5.707l2.146 2.147a.5.5 0 0 0 .708-.708l-3-3a.5.5 0 0 0-.708 0l-3 3a.5.5 0 1 0 .708.708L7.5 5.707V11.5a.5.5 0 0 0 .5.5z\"\n />\n </svg>\n </slot>\n <slot\n v-else-if=\"sortByModel?.find((el) => el.key === scope.field.key)?.order === 'desc'\"\n v-bind=\"{...scope}\"\n :name=\"\n $slots[`sortDesc(${String(scope.field.key)})`]\n ? `sortDesc(${String(scope.field.key)})`\n : 'sortDesc()'\n \"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n fill=\"currentColor\"\n class=\"bi bi-arrow-down-short\"\n viewBox=\"0 0 16 16\"\n aria-hidden\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M8 4a.5.5 0 0 1 .5.5v5.793l2.146-2.147a.5.5 0 0 1 .708.708l-3 3a.5.5 0 0 1-.708 0l-3-3a.5.5 0 1 1 .708-.708L7.5 10.293V4.5A.5.5 0 0 1 8 4z\"\n />\n </svg>\n </slot>\n <slot\n v-else\n v-bind=\"{...scope}\"\n :name=\"\n $slots[`sortDefault(${String(scope.field.key)})`]\n ? `sortDefault(${String(scope.field.key)})`\n : 'sortDefault()'\n \"\n >\n <svg\n :style=\"{opacity: 0.4}\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n fill=\"currentColor\"\n class=\"bi bi-arrow-up-short\"\n viewBox=\"0 0 16 16\"\n aria-hidden\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M8 12a.5.5 0 0 0 .5-.5V5.707l2.146 2.147a.5.5 0 0 0 .708-.708l-3-3a.5.5 0 0 0-.708 0l-3 3a.5.5 0 1 0 .708.708L7.5 5.707V11.5a.5.5 0 0 0 .5.5z\"\n />\n </svg>\n </slot>\n </template>\n </template>\n <template #custom-body=\"scope\">\n <BTr v-if=\"busyModel\" class=\"b-table-busy-slot\" :class=\"getBusyRowClasses\">\n <BTd :colspan=\"scope.fields.length\">\n <slot name=\"table-busy\">\n <BOverlay show>\n <template #overlay>\n <div class=\"d-flex align-items-center gap-2 mt-5\">\n <BSpinner />\n <strong>{{ props.busyLoadingText }}</strong>\n </div>\n </template>\n </BOverlay>\n </slot>\n </BTd>\n </BTr>\n </template>\n </BTableLite>\n</template>\n\n<script setup lang=\"ts\" generic=\"T\">\nimport {useToNumber} from '@vueuse/core'\nimport {computed, onMounted, type Ref, ref, watch} from 'vue'\nimport {formatItem} from '../../utils/formatItem'\nimport BOverlay from '../BOverlay/BOverlay.vue'\nimport BSpinner from '../BSpinner/BSpinner.vue'\nimport BTableLite from './BTableLite.vue'\nimport BTd from './BTd.vue'\nimport BTr from './BTr.vue'\nimport {\n type BTableSortBy,\n type BTableSortByOrder,\n isTableField,\n isTableItem,\n type NoProviderTypes,\n type TableField,\n type TableFieldRaw,\n type TableItem,\n type TableRowType,\n type TableStrictClassValue,\n} from '../../types/TableTypes'\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BTableProps} from '../../types/ComponentProps'\nimport {get, set} from '../../utils/object'\nimport {startCase} from '../../utils/stringUtils'\nimport {getTableFieldHeadLabel} from '../../utils/getTableFieldHeadLabel'\n\nconst _props = withDefaults(\n defineProps<Omit<BTableProps<T>, 'sortBy' | 'busy' | 'selectedItems'>>(),\n {\n noSortableIcon: false,\n perPage: Number.POSITIVE_INFINITY,\n filter: undefined,\n mustSort: false,\n filterable: undefined,\n provider: undefined,\n noProvider: undefined,\n noProviderPaging: false,\n noProviderSorting: false,\n multisort: false,\n noProviderFiltering: false,\n noLocalSorting: false,\n noSelectOnClick: false,\n selectable: false,\n stickySelect: false,\n selectHead: true,\n selectMode: 'multi',\n selectionVariant: 'primary',\n busyLoadingText: 'Loading...',\n currentPage: 1,\n // BTableLite props\n items: () => [],\n fields: () => [],\n // All others use defaults\n caption: undefined,\n align: undefined,\n footClone: undefined,\n labelStacked: undefined,\n showEmpty: undefined,\n emptyText: undefined,\n emptyFilteredText: undefined,\n fieldColumnClass: undefined,\n tbodyTrClass: undefined,\n captionHtml: undefined,\n detailsTdClass: undefined,\n headVariant: undefined,\n headRowVariant: undefined,\n footRowVariant: undefined,\n footVariant: undefined,\n modelValue: undefined,\n primaryKey: undefined,\n tbodyClass: undefined,\n tfootClass: undefined,\n tfootTrClass: undefined,\n theadClass: undefined,\n theadTrClass: undefined,\n // End BTableLite props\n // BTableSimple props\n borderVariant: undefined,\n variant: undefined,\n bordered: undefined,\n borderless: undefined,\n captionTop: undefined,\n dark: undefined,\n hover: undefined,\n id: undefined,\n noBorderCollapse: undefined,\n outlined: undefined,\n fixed: undefined,\n responsive: undefined,\n stacked: undefined,\n striped: undefined,\n stripedColumns: undefined,\n small: undefined,\n stickyHeader: undefined,\n // End BTableSimple props\n }\n)\nconst props = useDefaults(_props, 'BTable')\n\nconst emit = defineEmits<{\n 'filtered': [value: T[]]\n 'head-clicked': [key: string, field: TableField<T>, event: MouseEvent, isFooter: boolean]\n 'row-clicked': [item: T, index: number, event: MouseEvent]\n 'row-dbl-clicked': [item: T, index: number, event: MouseEvent]\n 'row-hovered': [item: T, index: number, event: MouseEvent]\n 'row-unhovered': [item: T, index: number, event: MouseEvent]\n 'row-selected': [value: T]\n 'row-unselected': [value: T]\n 'sorted': [value: BTableSortBy]\n 'change': [value: T[]]\n}>()\n\nconst sortByModel = defineModel<BTableProps<T>['sortBy']>('sortBy', {\n default: undefined,\n})\nconst busyModel = defineModel<Exclude<BTableProps<T>['busy'], undefined>>('busy', {\n default: false,\n})\nconst selectedItemsModel = defineModel<Exclude<BTableProps<T>['selectedItems'], undefined>>(\n 'selectedItems',\n {\n default: () => [],\n }\n)\n\nconst selectedItemsToSet = computed({\n get: () => new Set([...selectedItemsModel.value]),\n set: (val) => {\n selectedItemsModel.value = [...val]\n },\n})\n/**\n * This is to avoid the issue of directly mutating the array structure and to properly trigger the computed setter.\n * The utils also conveniently emit the proper events after\n */\nconst selectedItemsSetUtilities = {\n add: (item: T) => {\n const value = new Set(selectedItemsToSet.value)\n value.add(item)\n selectedItemsToSet.value = value\n emit('row-selected', item)\n },\n clear: () => {\n selectedItemsToSet.value.forEach((item) => {\n selectedItemsSetUtilities.delete(item)\n })\n },\n delete: (item: T) => {\n const value = new Set(selectedItemsToSet.value)\n if (props.primaryKey) {\n const pkey: string = props.primaryKey\n selectedItemsModel.value.forEach((v, i) => {\n const selectedKey = get(v, pkey)\n const itemKey = get(item, pkey)\n\n if (!!selectedKey && !!itemKey && selectedKey === itemKey) {\n value.delete(selectedItemsModel.value[i])\n }\n })\n } else {\n value.delete(item)\n }\n selectedItemsToSet.value = value\n emit('row-unselected', item)\n },\n set: (items: T[]) => {\n selectedItemsToSet.value = new Set(items)\n selectedItemsToSet.value.forEach((item) => {\n emit('row-unselected', item)\n })\n },\n has: (item: T) => {\n if (!props.primaryKey) return selectedItemsToSet.value.has(item)\n\n // Resolver for when we are using primary keys\n const pkey: string = props.primaryKey\n for (const selected of selectedItemsToSet.value) {\n const selectedKey = get(selected, pkey)\n const itemKey = get(item, pkey)\n\n if (!!selectedKey && !!itemKey && selectedKey === itemKey) return true\n }\n return false\n },\n} as const\n\n/**\n * Only stores data that is fetched when using the provider\n */\nconst internalItems: Ref<T[]> = ref([])\n\nconst perPageNumber = useToNumber(() => props.perPage, {method: 'parseInt'})\nconst currentPageNumber = useToNumber(() => props.currentPage, {method: 'parseInt'})\n\nconst isFilterableTable = computed(() => !!props.filter)\nconst usesProvider = computed(() => props.provider !== undefined)\nconst isSelecting = computed(() => selectedItemsToSet.value.size > 0)\n\nconst isSortable = computed(\n () =>\n sortByModel.value !== undefined ||\n props.fields.some(\n (field) => typeof field === 'object' && field !== null && field.sortable === true\n )\n)\n\nconst computedFields = computed<TableField<T>[]>(() =>\n props.fields.map((el) => {\n if (!isTableField(el)) {\n const label = startCase(el as string)\n return {\n key: el as string,\n label,\n tdAttr: props.stacked === true ? {'data-label': label} : undefined,\n }\n }\n\n const value = sortByModel.value?.find((sb) => el.key === sb.key)\n const sortValue =\n isSortable.value === false\n ? undefined\n : value === undefined\n ? 'none'\n : value.order === 'desc'\n ? 'descending'\n : value.order === 'asc'\n ? 'ascending'\n : 'none'\n\n return {\n ...(el as TableField<T>),\n thAttr: {\n 'aria-sort': sortValue,\n ...el.thAttr,\n },\n }\n })\n)\n\nconst tableClasses = computed(() => ({\n 'b-table-busy': busyModel.value,\n 'b-table-selectable': props.selectable,\n 'user-select-none': props.selectable && isSelecting.value,\n}))\n\nconst getBusyRowClasses = computed(() => [\n props.tbodyTrClass\n ? typeof props.tbodyTrClass === 'function'\n ? props.tbodyTrClass(null, 'table-busy')\n : props.tbodyTrClass\n : null,\n])\nconst getFieldColumnClasses = (field: TableField) => [\n {\n 'b-table-sortable-column': isSortable.value && field.sortable,\n },\n]\n// TODO this class has issues if the table has a variant already applied\n// Also the row should technically have aria-selected . Both things could probably just use a function with tbodyTrAttrs\n// But functional tbodyTrAttrs are not supported yet\n// Also the stuff for resolving functions could probably be made a util\nconst getRowClasses = (item: T | null, type: TableRowType): TableStrictClassValue => [\n {\n [`selected table-${props.selectionVariant}`]:\n props.selectable && !!item && selectedItemsSetUtilities.has(item),\n },\n props.tbodyTrClass\n ? typeof props.tbodyTrClass === 'function'\n ? props.tbodyTrClass(item, type)\n : props.tbodyTrClass\n : null,\n]\n\nconst computedItems = computed<T[]>(() => {\n const sortItems = (items: T[]) => {\n // \"undefined\" values are set by us, we do this so we dont wipe out the comparer\n const sortByItems = sortByModel.value?.filter((el) => !!el.order)\n\n if (!sortByItems || sortByItems.length === 0) return items\n\n // Multi-sort\n return [...items].sort((a, b) => {\n for (let i = 0; i < (sortByItems.length ?? 0); i++) {\n const sortOption = sortByItems[i]\n const realVal = (ob: T): string => {\n if (!isTableItem(ob)) return String(ob)\n\n const sortField = computedFields.value.find((el) => {\n if (isTableField(el)) return el.key === sortOption.key\n\n return false\n })\n const val = get(ob, sortOption.key as keyof TableItem)\n if (isTableField(sortField) && !!sortField.sortByFormatted) {\n const formatter =\n typeof sortField.sortByFormatted === 'function'\n ? sortField.sortByFormatted\n : sortField.formatter\n if (formatter) {\n return formatItem(ob, String(sortField.key), formatter) as string\n }\n }\n return typeof val === 'object' && val !== null\n ? JSON.stringify(val)\n : (val?.toString() ?? '')\n }\n\n const aValue = realVal(a)\n const bValue = realVal(b)\n const comparison = sortOption.comparer\n ? sortOption.comparer(aValue, bValue)\n : aValue.localeCompare(bValue, undefined, {numeric: true})\n\n if (comparison !== 0) {\n return sortOption.order === 'asc' ? comparison : -comparison\n }\n }\n return 0 // items are equal\n })\n }\n\n const filterItems = (items: T[]) =>\n items.filter((item) =>\n isTableItem(item)\n ? Object.entries(item).some(([key, val]) => {\n if (\n val === null ||\n val === undefined ||\n key[0] === '_' ||\n (!props.filterable?.includes(key) && !!props.filterable?.length)\n )\n return false\n const realVal = (): string => {\n const filterField = computedFields.value.find((el) => {\n if (isTableField(el)) return el.key === key\n\n return false\n })\n if (isTableField(filterField) && !!filterField.filterByFormatted) {\n const formatter =\n typeof filterField.filterByFormatted === 'function'\n ? filterField.filterByFormatted\n : filterField.formatter\n if (formatter) {\n return formatter(val, String(filterField.key), item) as string\n }\n }\n return typeof val === 'object' ? JSON.stringify(Object.values(val)) : val.toString()\n }\n const itemValue: string = realVal()\n return itemValue.toLowerCase().includes(props.filter?.toLowerCase() ?? '')\n })\n : true\n )\n\n let mappedItems = usesProvider.value ? internalItems.value : (props.items as T[])\n mappedItems = mappedItems.map((item) => {\n if (\n typeof item === 'object' &&\n item !== null &&\n Object.keys(item).some((key) => key.includes('.'))\n ) {\n // We use any here because the TS doesn't isn't certain that \"item\" is the same type as our newItem.\n // But we've determined that it's an object, so we can ignore it since they will always be the same \"object\"\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let newItem: any = {}\n for (const key in item) {\n if (key.includes('.')) {\n newItem = set(newItem, key, item[key])\n } else {\n newItem[key] = item[key]\n }\n }\n return newItem\n // return\n }\n return item\n })\n\n if (\n (isFilterableTable.value === true && !usesProvider.value) ||\n (isFilterableTable.value === true && usesProvider.value && props.noProviderFiltering)\n ) {\n mappedItems = filterItems(mappedItems)\n }\n\n if (\n (isSortable.value === true && !usesProvider.value && !props.noLocalSorting) ||\n (isSortable.value === true && usesProvider.value && props.noProviderSorting)\n ) {\n mappedItems = sortItems(mappedItems)\n }\n\n return mappedItems\n})\n\nconst computedDisplayItems = computed<T[]>(() => {\n if (Number.isNaN(perPageNumber.value) || (usesProvider.value && !props.noProviderPaging)) {\n return computedItems.value\n }\n\n return computedItems.value.slice(\n (currentPageNumber.value - 1) * (perPageNumber.value || Number.POSITIVE_INFINITY),\n currentPageNumber.value * (perPageNumber.value || Number.POSITIVE_INFINITY)\n )\n})\n\nwatch(computedDisplayItems, (v) => {\n emit('change', v)\n})\n\nconst handleRowSelection = (\n row: T,\n index: number,\n shiftClicked = false,\n ctrlClicked = false,\n metaClicked = false\n) => {\n if (!props.selectable) return\n\n if (props.selectMode === 'single' || props.selectMode === 'multi') {\n // Do nothing when these items are held\n if (shiftClicked || ctrlClicked) return\n // Delete if item is in\n if (selectedItemsSetUtilities.has(row)) {\n selectedItemsSetUtilities.delete(row)\n } else {\n if (props.selectMode === 'single') {\n selectedItemsSetUtilities.set([row])\n } else {\n selectedItemsSetUtilities.add(row)\n }\n }\n } else {\n if (ctrlClicked || metaClicked) {\n // Delete if in the object\n if (selectedItemsSetUtilities.has(row)) {\n selectedItemsSetUtilities.delete(row)\n // Otherwise add. Functions similarly to 'multi' at this point\n } else {\n selectedItemsSetUtilities.add(row)\n }\n // This is where range is different, due to the difference in shift\n } else if (shiftClicked) {\n const lastSelectedItem = [...selectedItemsToSet.value].pop()\n const lastSelectedIndex = computedItems.value.findIndex((i) => i === lastSelectedItem)\n const selectStartIndex = Math.min(lastSelectedIndex, index)\n const selectEndIndex = Math.max(lastSelectedIndex, index)\n const items = computedItems.value.slice(selectStartIndex, selectEndIndex + 1)\n selectedItemsSetUtilities.set(items)\n // If nothing is being held, then we just behave like it's single mode\n } else {\n selectedItemsSetUtilities.set([row])\n }\n }\n}\n\nconst onRowClick = (row: T, index: number, e: MouseEvent) => {\n if (props.noSelectOnClick === false) {\n handleRowSelection(row, index, e.shiftKey, e.ctrlKey, e.metaKey)\n }\n emit('row-clicked', row, index, e)\n}\n\nconst handleFieldSorting = (field: TableField<T>) => {\n if (!isSortable.value) return\n\n const fieldKey = typeof field === 'object' && field !== null ? field.key : field\n const fieldSortable = typeof field === 'object' && field !== null ? field.sortable : false\n\n if (!(isSortable.value === true && fieldSortable === true)) return\n\n const resolveOrder = (val: BTableSortByOrder): BTableSortByOrder | undefined => {\n if (val === 'asc') return 'desc'\n if (val === undefined) return 'asc'\n if (\n props.mustSort === true ||\n (Array.isArray(props.mustSort) && props.mustSort.includes(fieldKey as string))\n )\n return 'asc'\n return undefined\n }\n\n const index = sortByModel.value?.findIndex((el) => el.key === fieldKey) ?? -1\n const originalValue = sortByModel.value?.[index]\n const updatedValue: BTableSortBy =\n // If value is new, we default to ascending\n // Otherwise we make a temp copy of the value\n index === -1 || !originalValue ? {key: fieldKey as string, order: 'asc'} : {...originalValue}\n\n /**\n * @returns the updated value to emit for sorted\n */\n const handleMultiSort = (): BTableSortBy => {\n let val = updatedValue\n if (index === -1) {\n sortByModel.value = [...(sortByModel.value ?? []), updatedValue]\n } else {\n const order = resolveOrder(updatedValue.order)\n val = {...updatedValue, order}\n sortByModel.value = order\n ? sortByModel.value?.map((el) => (el.key === val.key ? val : el))\n : sortByModel.value?.filter((el) => el.key !== val.key)\n }\n return val\n }\n\n /**\n * @returns the updated value to emit for sorted\n */\n const handleSingleSort = (): BTableSortBy => {\n const val = {\n ...updatedValue,\n order: index === -1 ? updatedValue.order : resolveOrder(updatedValue.order),\n }\n sortByModel.value = [val]\n return val\n }\n\n // Then emit the returned updated value\n emit('sorted', props.multisort === true ? handleMultiSort() : handleSingleSort())\n}\n\nconst onFieldHeadClick = (\n fieldKey: string,\n field: TableField<T>,\n event: Readonly<MouseEvent>,\n isFooter = false\n) => {\n emit('head-clicked', fieldKey, field, event, isFooter)\n handleFieldSorting(field)\n}\n\nconst callItemsProvider = async () => {\n if (!usesProvider.value || props.provider === undefined || busyModel.value) return\n busyModel.value = true\n const response = props.provider({\n currentPage: currentPageNumber.value,\n filter: props.filter,\n sortBy: sortByModel.value,\n perPage: perPageNumber.value,\n })\n try {\n const items = response instanceof Promise ? await response : response\n\n if (items === undefined) return\n internalItems.value = items\n } finally {\n // Potential race condition could occur if the user explicitly sets the busy value to a different value while the response promise is executing\n // which would have been the users choice.\n // eslint-disable-next-line require-atomic-updates\n busyModel.value = false\n }\n}\n\nconst providerPropsWatch = async (prop: string, val: unknown, oldVal: unknown) => {\n if (val === oldVal) return\n\n //stop provide when paging\n const inNoProvider = (key: NoProviderTypes) => props.noProvider?.includes(key) === true\n const noProvideWhenPaging =\n (prop === 'currentPage' || prop === 'perPage') &&\n (inNoProvider('paging') || props.noProviderPaging === true)\n const noProvideWhenFiltering =\n prop === 'filter' && (inNoProvider('filtering') || props.noProviderFiltering === true)\n const noProvideWhenSorting =\n (prop === 'sortBy' || prop === 'sortDesc') &&\n (inNoProvider('sorting') || props.noProviderSorting === true)\n\n if (noProvideWhenPaging || noProvideWhenFiltering || noProvideWhenSorting) return\n\n if (usesProvider.value === true) {\n await callItemsProvider()\n }\n\n if (!(prop === 'currentPage' || prop === 'perPage')) {\n emit('filtered', [...computedItems.value])\n }\n}\n\nwatch(\n () => props.filter,\n (filter, oldFilter) => {\n providerPropsWatch('filter', filter, oldFilter)\n\n if (filter === oldFilter || usesProvider.value) return\n if (!filter) {\n emit('filtered', [...computedItems.value])\n }\n }\n)\nwatch(currentPageNumber, (val, oldVal) => {\n providerPropsWatch('currentPage', val, oldVal)\n})\nwatch(perPageNumber, (val, oldVal) => {\n providerPropsWatch('perPage', val, oldVal)\n})\nwatch(\n sortByModel,\n (val, oldVal) => {\n providerPropsWatch('sortBy', val, oldVal)\n },\n {deep: true}\n)\n\nwatch(\n () => props.provider,\n (newValue) => {\n // Reset the internal values if the provider stops getting used\n if (newValue === undefined) {\n internalItems.value = []\n return\n }\n // Otherwise we should refresh the table on such a change\n callItemsProvider()\n }\n)\n\nonMounted(callItemsProvider)\n\ndefineExpose({\n // The row selection methods are really for compat. Users should probably use the v-model though\n clearSelected: () => {\n if (!props.selectable) return\n selectedItemsSetUtilities.clear()\n },\n refresh: callItemsProvider,\n selectAllRows: () => {\n if (!props.selectable) return\n const unselectableItems = selectedItemsToSet.value.size > 0 ? [...selectedItemsToSet.value] : []\n selectedItemsToSet.value = new Set([...computedItems.value])\n selectedItemsToSet.value.forEach((item) => {\n if (unselectableItems.includes(item)) return\n emit('row-selected', item)\n })\n },\n selectRow: (index: number) => {\n if (!props.selectable) return\n const item = computedItems.value[index]\n if (!item || selectedItemsSetUtilities.has(item)) return\n selectedItemsSetUtilities.add(item)\n },\n unselectRow: (index: number) => {\n if (!props.selectable) return\n const item = computedItems.value[index]\n if (!item || !selectedItemsSetUtilities.has(item)) return\n selectedItemsSetUtilities.delete(item)\n },\n isRowSelected: (index: number) => {\n if (!props.selectable) return false\n const item = computedItems.value[index]\n return selectedItemsSetUtilities.has(item)\n },\n})\n</script>\n"],"names":["_useModel","_a","_b"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { i } from "./index-sKc4HTpY.mjs";
2
2
  import { i as i2 } from "./index-CXpBEYSc.mjs";
3
3
  import { i as i3 } from "./index-i-UFv70c.mjs";
4
- import { i as i4 } from "./index-37_70l80.mjs";
4
+ import { i as i4 } from "./index-B7BE_6yh.mjs";
5
5
  import { c as componentNames, a as componentsWithExternalPath, b as composableNames, d as composablesWithExternalPath, e as directiveNames, f as directivesWithExternalPath } from "./index-BOdW9Hjb.mjs";
6
6
  import { B, i as i5 } from "./index-BOdW9Hjb.mjs";
7
7
  import { i as i6 } from "./index-Dt02d7RV.mjs";
@@ -64,7 +64,7 @@ import { _ as _42 } from "./floatingUi-5pxbgyLd.mjs";
64
64
  import { _ as _43 } from "./BPopoverOrchestrator.vue_vue_type_script_setup_true_lang-CSpk5s_J.mjs";
65
65
  import { _ as _44, a as a21 } from "./BProgress.vue_vue_type_script_setup_true_lang-C-D_koFH.mjs";
66
66
  import { _ as _45 } from "./BSpinner.vue_vue_type_script_setup_true_lang-CXYbvCe5.mjs";
67
- import { _ as _46, a as a22, b as b8, c as c7, d as d5, e as e3, f as f3, g } from "./BTable.vue_vue_type_script_setup_true_lang-Dt0wgrA9.mjs";
67
+ import { _ as _46, a as a22, b as b8, c as c7, d as d5, e as e3, f as f3, g } from "./BTable.vue_vue_type_script_setup_true_lang-DSox5TGm.mjs";
68
68
  import { _ as _47 } from "./BTableSimple.vue_vue_type_script_setup_true_lang-Be44iN5l.mjs";
69
69
  import { _ as _48, a as a23 } from "./BTabs.vue_vue_type_script_setup_true_lang-Cb0FBpiV.mjs";
70
70
  import { _ as _49, a as a24 } from "./BToastOrchestrator.vue_vue_type_style_index_0_lang-CFmlSsxb.mjs";
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./index-BZ1nPmSl.js"),r=require("./index-C2e5Y13S.js"),s=require("./index-CsWSMa0s.js"),t=require("./index-CMONpMLQ.js"),o=require("./index-UTnQ2nQu.js"),_=require("./index-CIB4mF_S.js"),p=require("./src/composables/useBreadcrumb/index.umd.js"),u=require("./src/composables/useColorMode/index.umd.js"),i=require("./src/composables/useModal/index.umd.js"),a=require("./src/composables/useModalController/index.umd.js"),n=require("./src/composables/useScrollspy/index.umd.js"),c=require("./src/composables/useToast/index.umd.js"),l=require("./src/composables/useTooltip/index.umd.js"),m=require("./src/composables/usePopover/index.umd.js"),x=require("./src/directives/BColorMode/index.umd.js"),B=require("./src/directives/BToggle/index.umd.js"),v=require("./src/directives/BPopover/index.umd.js"),d=require("./src/directives/BScrollspy/index.umd.js"),f=require("./src/directives/BTooltip/index.umd.js"),g=require("./classes-CXBJXuVd.js"),j=require("./BAccordionItem.vue_vue_type_script_setup_true_lang-E_3tN5JF.js"),q=require("./BAlert-BZaOO1rv.js"),b=require("./BAvatarGroup.vue_vue_type_script_setup_true_lang-C9xH1JfZ.js"),y=require("./BBadge.vue_vue_type_script_setup_true_lang-BqqTtiKY.js"),T=require("./BBreadcrumb.vue_vue_type_script_setup_true_lang-BcQ_kTYO.js"),P=require("./BButton.vue_vue_type_script_setup_true_lang-sjMGFjGE.js"),$=require("./BButtonToolbar.vue_vue_type_script_setup_true_lang-GnJfan9q.js"),F=require("./BCloseButton.vue_vue_type_script_setup_true_lang-CRwsufrO.js"),h=require("./BCard.vue_vue_type_script_setup_true_lang-CZ8pICsC.js"),C=require("./BCardText.vue_vue_type_script_setup_true_lang-B_c6aF1j.js"),N=require("./BCarouselSlide.vue_vue_type_script_setup_true_lang-CXuFqIG4.js"),S=require("./BCollapse.vue_vue_type_script_setup_true_lang-BFjLbbnW.js"),M=require("./BCol.vue_vue_type_script_setup_true_lang-CQccMbc6.js"),I=require("./BContainer.vue_vue_type_script_setup_true_lang-D--CuSC4.js"),E=require("./BRow.vue_vue_type_script_setup_true_lang-CtiK7XPB.js"),G=require("./BDropdown.vue_vue_type_script_setup_true_lang-C5FmjcaQ.js"),O=require("./BDropdownText.vue_vue_type_script_setup_true_lang-C1FZLiG6.js"),w=require("./BForm.vue_vue_type_script_setup_true_lang-lv8-CNRX.js"),D=require("./BFormFloatingLabel.vue_vue_type_script_setup_true_lang-S3tMJUsh.js"),W=require("./BFormValidFeedback.vue_vue_type_script_setup_true_lang-CveZ56eF.js"),A=require("./BFormCheckboxGroup.vue_vue_type_script_setup_true_lang-DBxi9n4S.js"),R=require("./BFormFile.vue_vue_type_script_setup_true_lang-Bm1cUd8j.js"),k=require("./BFormGroup.vue_vue_type_script_lang-C7ozJhaE.js"),L=require("./BFormInput.vue_vue_type_script_setup_true_lang-Bk_Pdq4d.js"),V=require("./BFormRadioGroup.vue_vue_type_script_setup_true_lang-QDRf61NA.js"),H=require("./BFormSelect.vue_vue_type_script_setup_true_lang-BoY40oxj.js"),U=require("./useFormSelect-BAmp-xrf.js"),z=require("./BFormSpinbutton.vue_vue_type_script_setup_true_lang-BLaiSQhU.js"),J=require("./BFormTags.vue_vue_type_script_setup_true_lang-Bq1fpb7v.js"),K=require("./BFormTextarea.vue_vue_type_script_setup_true_lang-RjhHGrE_.js"),Q=require("./BImg.vue_vue_type_script_setup_true_lang-OsBsaOdz.js"),X=require("./BInputGroupText.vue_vue_type_script_setup_true_lang-CjulEI4h.js"),Y=require("./BLink.vue_vue_type_script_setup_true_lang-Df_SjEg2.js"),Z=require("./BListGroupItem.vue_vue_type_script_setup_true_lang-C_qkyQ2u.js"),ee=require("./BModalOrchestrator.vue_vue_type_script_setup_true_lang-apwIBo-t.js"),re=require("./BNavText.vue_vue_type_script_setup_true_lang-B4QWFIHh.js"),se=require("./BNavbarToggle.vue_vue_type_script_setup_true_lang-BWkbdC-j.js"),te=require("./BOffcanvas.vue_vue_type_script_setup_true_lang-D1Zx4zA5.js"),oe=require("./BOverlay.vue_vue_type_script_setup_true_lang-ikelLajh.js"),_e=require("./BPagination.vue_vue_type_script_setup_true_lang-C0PGh9wY.js"),pe=require("./BPlaceholderWrapper.vue_vue_type_script_setup_true_lang-CJ1UV4TA.js"),ue=require("./floatingUi-CoKQ-nw7.js"),ie=require("./BPopoverOrchestrator.vue_vue_type_script_setup_true_lang-UfmK9QvC.js"),ae=require("./BProgress.vue_vue_type_script_setup_true_lang-C6xfNCQS.js"),ne=require("./BSpinner.vue_vue_type_script_setup_true_lang-BpcS7-mY.js"),ce=require("./BTable.vue_vue_type_script_setup_true_lang-DJaXQe4Y.js"),le=require("./BTableSimple.vue_vue_type_script_setup_true_lang-Cybz9eNN.js"),me=require("./BTabs.vue_vue_type_script_setup_true_lang-CXMXCFr9.js"),xe=require("./BToastOrchestrator.vue_vue_type_style_index_0_lang-Cozd2Uj5.js"),Be=require("./BTooltipOrchestrator.vue_vue_type_script_setup_true_lang-D1k-lHaI.js"),ve=require("./src/plugins/breadcrumb/index.umd.js"),de=require("./src/plugins/createBootstrap/index.umd.js"),fe=require("./src/plugins/defaults/index.umd.js"),ge=require("./src/plugins/modalController/index.umd.js"),je=require("./src/plugins/modalManager/index.umd.js"),qe=require("./src/plugins/popover/index.umd.js"),be=require("./src/plugins/rtl/index.umd.js"),ye=require("./src/plugins/toast/index.umd.js"),Te=require("./src/plugins/tooltip/index.umd.js"),Pe=Object.freeze(Object.defineProperty({__proto__:null,componentNames:o.componentNames,componentsWithExternalPath:o.componentsWithExternalPath,composableNames:o.composableNames,composablesWithExternalPath:o.composablesWithExternalPath,directiveNames:o.directiveNames,directivesWithExternalPath:o.directivesWithExternalPath},Symbol.toStringTag,{value:"Module"}));exports.Composables=e.index,exports.Directives=r.index,exports.Utils=s.index,exports.Components=t.index,exports.BootstrapVueNextResolver=o.BootstrapVueNextResolver,exports.Resolvers=o.index,exports.componentNames=o.componentNames,exports.componentsWithExternalPath=o.componentsWithExternalPath,exports.composableNames=o.composableNames,exports.composablesWithExternalPath=o.composablesWithExternalPath,exports.directiveNames=o.directiveNames,exports.directivesWithExternalPath=o.directivesWithExternalPath,exports.Plugins=_.index,exports.useBreadcrumb=p.useBreadcrumb,exports.useColorMode=u.useColorMode,exports.useModal=i.useModal,exports.useModalController=a.useModalController,exports.useScrollspy=n.useScrollspy,exports.useToast=c.useToast,exports.useTooltip=l.useTooltip,exports.usePopover=m.usePopover,exports.vBColorMode=x.vBColorMode,exports.vBModal=B.vBToggle,exports.vBToggle=B.vBToggle,exports.vBPopover=v.vBPopover,exports.vBScrollspy=d.vBScrollspy,exports.vBTooltip=f.vBTooltip,exports.BvCarouselEvent=g.BvCarouselEvent,exports.BvEvent=g.BvEvent,exports.BvTriggerableEvent=g.BvTriggerableEvent,exports.BAccordion=j._sfc_main,exports.BAccordionItem=j._sfc_main$1,exports.BAlert=q.BAlert,exports.BAvatar=b._sfc_main,exports.BAvatarGroup=b._sfc_main$1,exports.BBadge=y._sfc_main,exports.BBreadcrumb=T._sfc_main,exports.BBreadcrumbItem=T._sfc_main$1,exports.BButton=P._sfc_main,exports.BButtonGroup=$._sfc_main,exports.BButtonToolbar=$._sfc_main$1,exports.BCloseButton=F._sfc_main,exports.BCard=h._sfc_main,exports.BCardBody=h._sfc_main$1,exports.BCardFooter=h._sfc_main$2,exports.BCardHeader=h._sfc_main$3,exports.BCardImg=h._sfc_main$4,exports.BCardSubtitle=h._sfc_main$5,exports.BCardTitle=h._sfc_main$6,exports.BCardGroup=C._sfc_main,exports.BCardText=C._sfc_main$1,exports.BCarousel=N._sfc_main,exports.BCarouselSlide=N._sfc_main$1,exports.BCollapse=S._sfc_main,exports.BCol=M._sfc_main,exports.BContainer=I._sfc_main,exports.BRow=E._sfc_main,exports.BDropdown=G._sfc_main,exports.BDropdownDivider=O._sfc_main,exports.BDropdownForm=O._sfc_main$1,exports.BDropdownGroup=O._sfc_main$2,exports.BDropdownHeader=O._sfc_main$3,exports.BDropdownItem=O._sfc_main$4,exports.BDropdownItemButton=O._sfc_main$5,exports.BDropdownText=O._sfc_main$6,exports.BForm=w._sfc_main,exports.BFormDatalist=D._sfc_main,exports.BFormFloatingLabel=D._sfc_main$1,exports.BFormInvalidFeedback=W._sfc_main,exports.BFormRow=W._sfc_main$1,exports.BFormText=W._sfc_main$2,exports.BFormValidFeedback=W._sfc_main$3,exports.BFormCheckbox=A._sfc_main,exports.BFormCheckboxGroup=A._sfc_main$1,exports.BFormFile=R._sfc_main,exports.BFormGroup=k._sfc_main,exports.BFormInput=L._sfc_main,exports.BInput=L._sfc_main,exports.BFormRadio=V._sfc_main,exports.BFormRadioGroup=V._sfc_main$1,exports.BFormSelect=H._sfc_main,exports.BFormSelectOptionGroup=H._sfc_main$1,exports.BFormSelectOption=U._sfc_main,exports.BFormSpinbutton=z._sfc_main,exports.BFormTag=J._sfc_main$1,exports.BFormTags=J._sfc_main,exports.BFormTextarea=K._sfc_main,exports.BImg=Q._sfc_main,exports.BInputGroup=X._sfc_main,exports.BInputGroupText=X._sfc_main$1,exports.BLink=Y._sfc_main,exports.BListGroup=Z._sfc_main,exports.BListGroupItem=Z._sfc_main$1,exports.BModal=ee.BModal,exports.BModalOrchestrator=ee._sfc_main,exports.BNav=re._sfc_main,exports.BNavForm=re._sfc_main$1,exports.BNavItem=re._sfc_main$2,exports.BNavItemDropdown=re._sfc_main$3,exports.BNavText=re._sfc_main$4,exports.BNavbar=se._sfc_main,exports.BNavbarBrand=se._sfc_main$1,exports.BNavbarNav=se._sfc_main$2,exports.BNavbarToggle=se._sfc_main$3,exports.BOffcanvas=te._sfc_main,exports.BOverlay=oe._sfc_main,exports.BPagination=_e._sfc_main,exports.BPlaceholder=pe._sfc_main,exports.BPlaceholderButton=pe._sfc_main$1,exports.BPlaceholderCard=pe._sfc_main$2,exports.BPlaceholderTable=pe._sfc_main$3,exports.BPlaceholderWrapper=pe._sfc_main$4,exports.BPopover=ue._sfc_main,exports.BPopoverOrchestrator=ie._sfc_main,exports.BProgress=ae._sfc_main,exports.BProgressBar=ae._sfc_main$1,exports.BSpinner=ne._sfc_main,exports.BTable=ce._sfc_main,exports.BTableLite=ce._sfc_main$1,exports.BTbody=ce._sfc_main$2,exports.BTd=ce._sfc_main$3,exports.BTfoot=ce._sfc_main$4,exports.BTh=ce._sfc_main$5,exports.BThead=ce._sfc_main$6,exports.BTr=ce._sfc_main$7,exports.BTableSimple=le._sfc_main,exports.BTab=me._sfc_main,exports.BTabs=me._sfc_main$1,exports.BToast=xe._sfc_main,exports.BToastOrchestrator=xe._sfc_main$1,exports.BTooltip=Be._sfc_main,exports.BTooltipOrchestrator=Be._sfc_main$1,exports.breadcrumbPlugin=ve.breadcrumbPlugin,exports.createBootstrap=de.createBootstrap,exports.defaultsPlugin=fe.defaultsPlugin,exports.modalControllerPlugin=ge.modalControllerPlugin,exports.modalManagerPlugin=je.modalManagerPlugin,exports.popoverPlugin=qe.popoverPlugin,exports.rtlPlugin=be.rtlPlugin,exports.toastPlugin=ye.toastPlugin,exports.tooltipPlugin=Te.tooltipPlugin,exports.Types=Pe;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./index-BZ1nPmSl.js"),r=require("./index-C2e5Y13S.js"),s=require("./index-CsWSMa0s.js"),t=require("./index-wIT_GbXA.js"),o=require("./index-UTnQ2nQu.js"),_=require("./index-CIB4mF_S.js"),p=require("./src/composables/useBreadcrumb/index.umd.js"),u=require("./src/composables/useColorMode/index.umd.js"),i=require("./src/composables/useModal/index.umd.js"),a=require("./src/composables/useModalController/index.umd.js"),n=require("./src/composables/useScrollspy/index.umd.js"),c=require("./src/composables/useToast/index.umd.js"),l=require("./src/composables/useTooltip/index.umd.js"),m=require("./src/composables/usePopover/index.umd.js"),x=require("./src/directives/BColorMode/index.umd.js"),B=require("./src/directives/BToggle/index.umd.js"),v=require("./src/directives/BPopover/index.umd.js"),d=require("./src/directives/BScrollspy/index.umd.js"),f=require("./src/directives/BTooltip/index.umd.js"),g=require("./classes-CXBJXuVd.js"),j=require("./BAccordionItem.vue_vue_type_script_setup_true_lang-E_3tN5JF.js"),q=require("./BAlert-BZaOO1rv.js"),b=require("./BAvatarGroup.vue_vue_type_script_setup_true_lang-C9xH1JfZ.js"),y=require("./BBadge.vue_vue_type_script_setup_true_lang-BqqTtiKY.js"),T=require("./BBreadcrumb.vue_vue_type_script_setup_true_lang-BcQ_kTYO.js"),P=require("./BButton.vue_vue_type_script_setup_true_lang-sjMGFjGE.js"),$=require("./BButtonToolbar.vue_vue_type_script_setup_true_lang-GnJfan9q.js"),F=require("./BCloseButton.vue_vue_type_script_setup_true_lang-CRwsufrO.js"),h=require("./BCard.vue_vue_type_script_setup_true_lang-CZ8pICsC.js"),C=require("./BCardText.vue_vue_type_script_setup_true_lang-B_c6aF1j.js"),N=require("./BCarouselSlide.vue_vue_type_script_setup_true_lang-CXuFqIG4.js"),S=require("./BCollapse.vue_vue_type_script_setup_true_lang-BFjLbbnW.js"),M=require("./BCol.vue_vue_type_script_setup_true_lang-CQccMbc6.js"),I=require("./BContainer.vue_vue_type_script_setup_true_lang-D--CuSC4.js"),E=require("./BRow.vue_vue_type_script_setup_true_lang-CtiK7XPB.js"),G=require("./BDropdown.vue_vue_type_script_setup_true_lang-C5FmjcaQ.js"),O=require("./BDropdownText.vue_vue_type_script_setup_true_lang-C1FZLiG6.js"),w=require("./BForm.vue_vue_type_script_setup_true_lang-lv8-CNRX.js"),D=require("./BFormFloatingLabel.vue_vue_type_script_setup_true_lang-S3tMJUsh.js"),W=require("./BFormValidFeedback.vue_vue_type_script_setup_true_lang-CveZ56eF.js"),A=require("./BFormCheckboxGroup.vue_vue_type_script_setup_true_lang-DBxi9n4S.js"),R=require("./BFormFile.vue_vue_type_script_setup_true_lang-Bm1cUd8j.js"),k=require("./BFormGroup.vue_vue_type_script_lang-C7ozJhaE.js"),L=require("./BFormInput.vue_vue_type_script_setup_true_lang-Bk_Pdq4d.js"),V=require("./BFormRadioGroup.vue_vue_type_script_setup_true_lang-QDRf61NA.js"),H=require("./BFormSelect.vue_vue_type_script_setup_true_lang-BoY40oxj.js"),U=require("./useFormSelect-BAmp-xrf.js"),z=require("./BFormSpinbutton.vue_vue_type_script_setup_true_lang-BLaiSQhU.js"),J=require("./BFormTags.vue_vue_type_script_setup_true_lang-Bq1fpb7v.js"),K=require("./BFormTextarea.vue_vue_type_script_setup_true_lang-RjhHGrE_.js"),Q=require("./BImg.vue_vue_type_script_setup_true_lang-OsBsaOdz.js"),X=require("./BInputGroupText.vue_vue_type_script_setup_true_lang-CjulEI4h.js"),Y=require("./BLink.vue_vue_type_script_setup_true_lang-Df_SjEg2.js"),Z=require("./BListGroupItem.vue_vue_type_script_setup_true_lang-C_qkyQ2u.js"),ee=require("./BModalOrchestrator.vue_vue_type_script_setup_true_lang-apwIBo-t.js"),re=require("./BNavText.vue_vue_type_script_setup_true_lang-B4QWFIHh.js"),se=require("./BNavbarToggle.vue_vue_type_script_setup_true_lang-BWkbdC-j.js"),te=require("./BOffcanvas.vue_vue_type_script_setup_true_lang-D1Zx4zA5.js"),oe=require("./BOverlay.vue_vue_type_script_setup_true_lang-ikelLajh.js"),_e=require("./BPagination.vue_vue_type_script_setup_true_lang-C0PGh9wY.js"),pe=require("./BPlaceholderWrapper.vue_vue_type_script_setup_true_lang-CJ1UV4TA.js"),ue=require("./floatingUi-CoKQ-nw7.js"),ie=require("./BPopoverOrchestrator.vue_vue_type_script_setup_true_lang-UfmK9QvC.js"),ae=require("./BProgress.vue_vue_type_script_setup_true_lang-C6xfNCQS.js"),ne=require("./BSpinner.vue_vue_type_script_setup_true_lang-BpcS7-mY.js"),ce=require("./BTable.vue_vue_type_script_setup_true_lang-D0H4HA45.js"),le=require("./BTableSimple.vue_vue_type_script_setup_true_lang-Cybz9eNN.js"),me=require("./BTabs.vue_vue_type_script_setup_true_lang-CXMXCFr9.js"),xe=require("./BToastOrchestrator.vue_vue_type_style_index_0_lang-Cozd2Uj5.js"),Be=require("./BTooltipOrchestrator.vue_vue_type_script_setup_true_lang-D1k-lHaI.js"),ve=require("./src/plugins/breadcrumb/index.umd.js"),de=require("./src/plugins/createBootstrap/index.umd.js"),fe=require("./src/plugins/defaults/index.umd.js"),ge=require("./src/plugins/modalController/index.umd.js"),je=require("./src/plugins/modalManager/index.umd.js"),qe=require("./src/plugins/popover/index.umd.js"),be=require("./src/plugins/rtl/index.umd.js"),ye=require("./src/plugins/toast/index.umd.js"),Te=require("./src/plugins/tooltip/index.umd.js"),Pe=Object.freeze(Object.defineProperty({__proto__:null,componentNames:o.componentNames,componentsWithExternalPath:o.componentsWithExternalPath,composableNames:o.composableNames,composablesWithExternalPath:o.composablesWithExternalPath,directiveNames:o.directiveNames,directivesWithExternalPath:o.directivesWithExternalPath},Symbol.toStringTag,{value:"Module"}));exports.Composables=e.index,exports.Directives=r.index,exports.Utils=s.index,exports.Components=t.index,exports.BootstrapVueNextResolver=o.BootstrapVueNextResolver,exports.Resolvers=o.index,exports.componentNames=o.componentNames,exports.componentsWithExternalPath=o.componentsWithExternalPath,exports.composableNames=o.composableNames,exports.composablesWithExternalPath=o.composablesWithExternalPath,exports.directiveNames=o.directiveNames,exports.directivesWithExternalPath=o.directivesWithExternalPath,exports.Plugins=_.index,exports.useBreadcrumb=p.useBreadcrumb,exports.useColorMode=u.useColorMode,exports.useModal=i.useModal,exports.useModalController=a.useModalController,exports.useScrollspy=n.useScrollspy,exports.useToast=c.useToast,exports.useTooltip=l.useTooltip,exports.usePopover=m.usePopover,exports.vBColorMode=x.vBColorMode,exports.vBModal=B.vBToggle,exports.vBToggle=B.vBToggle,exports.vBPopover=v.vBPopover,exports.vBScrollspy=d.vBScrollspy,exports.vBTooltip=f.vBTooltip,exports.BvCarouselEvent=g.BvCarouselEvent,exports.BvEvent=g.BvEvent,exports.BvTriggerableEvent=g.BvTriggerableEvent,exports.BAccordion=j._sfc_main,exports.BAccordionItem=j._sfc_main$1,exports.BAlert=q.BAlert,exports.BAvatar=b._sfc_main,exports.BAvatarGroup=b._sfc_main$1,exports.BBadge=y._sfc_main,exports.BBreadcrumb=T._sfc_main,exports.BBreadcrumbItem=T._sfc_main$1,exports.BButton=P._sfc_main,exports.BButtonGroup=$._sfc_main,exports.BButtonToolbar=$._sfc_main$1,exports.BCloseButton=F._sfc_main,exports.BCard=h._sfc_main,exports.BCardBody=h._sfc_main$1,exports.BCardFooter=h._sfc_main$2,exports.BCardHeader=h._sfc_main$3,exports.BCardImg=h._sfc_main$4,exports.BCardSubtitle=h._sfc_main$5,exports.BCardTitle=h._sfc_main$6,exports.BCardGroup=C._sfc_main,exports.BCardText=C._sfc_main$1,exports.BCarousel=N._sfc_main,exports.BCarouselSlide=N._sfc_main$1,exports.BCollapse=S._sfc_main,exports.BCol=M._sfc_main,exports.BContainer=I._sfc_main,exports.BRow=E._sfc_main,exports.BDropdown=G._sfc_main,exports.BDropdownDivider=O._sfc_main,exports.BDropdownForm=O._sfc_main$1,exports.BDropdownGroup=O._sfc_main$2,exports.BDropdownHeader=O._sfc_main$3,exports.BDropdownItem=O._sfc_main$4,exports.BDropdownItemButton=O._sfc_main$5,exports.BDropdownText=O._sfc_main$6,exports.BForm=w._sfc_main,exports.BFormDatalist=D._sfc_main,exports.BFormFloatingLabel=D._sfc_main$1,exports.BFormInvalidFeedback=W._sfc_main,exports.BFormRow=W._sfc_main$1,exports.BFormText=W._sfc_main$2,exports.BFormValidFeedback=W._sfc_main$3,exports.BFormCheckbox=A._sfc_main,exports.BFormCheckboxGroup=A._sfc_main$1,exports.BFormFile=R._sfc_main,exports.BFormGroup=k._sfc_main,exports.BFormInput=L._sfc_main,exports.BInput=L._sfc_main,exports.BFormRadio=V._sfc_main,exports.BFormRadioGroup=V._sfc_main$1,exports.BFormSelect=H._sfc_main,exports.BFormSelectOptionGroup=H._sfc_main$1,exports.BFormSelectOption=U._sfc_main,exports.BFormSpinbutton=z._sfc_main,exports.BFormTag=J._sfc_main$1,exports.BFormTags=J._sfc_main,exports.BFormTextarea=K._sfc_main,exports.BImg=Q._sfc_main,exports.BInputGroup=X._sfc_main,exports.BInputGroupText=X._sfc_main$1,exports.BLink=Y._sfc_main,exports.BListGroup=Z._sfc_main,exports.BListGroupItem=Z._sfc_main$1,exports.BModal=ee.BModal,exports.BModalOrchestrator=ee._sfc_main,exports.BNav=re._sfc_main,exports.BNavForm=re._sfc_main$1,exports.BNavItem=re._sfc_main$2,exports.BNavItemDropdown=re._sfc_main$3,exports.BNavText=re._sfc_main$4,exports.BNavbar=se._sfc_main,exports.BNavbarBrand=se._sfc_main$1,exports.BNavbarNav=se._sfc_main$2,exports.BNavbarToggle=se._sfc_main$3,exports.BOffcanvas=te._sfc_main,exports.BOverlay=oe._sfc_main,exports.BPagination=_e._sfc_main,exports.BPlaceholder=pe._sfc_main,exports.BPlaceholderButton=pe._sfc_main$1,exports.BPlaceholderCard=pe._sfc_main$2,exports.BPlaceholderTable=pe._sfc_main$3,exports.BPlaceholderWrapper=pe._sfc_main$4,exports.BPopover=ue._sfc_main,exports.BPopoverOrchestrator=ie._sfc_main,exports.BProgress=ae._sfc_main,exports.BProgressBar=ae._sfc_main$1,exports.BSpinner=ne._sfc_main,exports.BTable=ce._sfc_main,exports.BTableLite=ce._sfc_main$1,exports.BTbody=ce._sfc_main$2,exports.BTd=ce._sfc_main$3,exports.BTfoot=ce._sfc_main$4,exports.BTh=ce._sfc_main$5,exports.BThead=ce._sfc_main$6,exports.BTr=ce._sfc_main$7,exports.BTableSimple=le._sfc_main,exports.BTab=me._sfc_main,exports.BTabs=me._sfc_main$1,exports.BToast=xe._sfc_main,exports.BToastOrchestrator=xe._sfc_main$1,exports.BTooltip=Be._sfc_main,exports.BTooltipOrchestrator=Be._sfc_main$1,exports.breadcrumbPlugin=ve.breadcrumbPlugin,exports.createBootstrap=de.createBootstrap,exports.defaultsPlugin=fe.defaultsPlugin,exports.modalControllerPlugin=ge.modalControllerPlugin,exports.modalManagerPlugin=je.modalManagerPlugin,exports.popoverPlugin=qe.popoverPlugin,exports.rtlPlugin=be.rtlPlugin,exports.toastPlugin=ye.toastPlugin,exports.tooltipPlugin=Te.tooltipPlugin,exports.Types=Pe;
2
2
  //# sourceMappingURL=bootstrap-vue-next.umd.js.map
@@ -43,7 +43,7 @@ import { _ as _sfc_main$1e } from "./floatingUi-5pxbgyLd.mjs";
43
43
  import { _ as _sfc_main$1f } from "./BPopoverOrchestrator.vue_vue_type_script_setup_true_lang-CSpk5s_J.mjs";
44
44
  import { _ as _sfc_main$1g, a as _sfc_main$1h } from "./BProgress.vue_vue_type_script_setup_true_lang-C-D_koFH.mjs";
45
45
  import { _ as _sfc_main$1j } from "./BSpinner.vue_vue_type_script_setup_true_lang-CXYbvCe5.mjs";
46
- import { _ as _sfc_main$1l, a as _sfc_main$1m, b as _sfc_main$1p, c as _sfc_main$1q, d as _sfc_main$1r, e as _sfc_main$1s, f as _sfc_main$1t, g as _sfc_main$1y } from "./BTable.vue_vue_type_script_setup_true_lang-Dt0wgrA9.mjs";
46
+ import { _ as _sfc_main$1l, a as _sfc_main$1m, b as _sfc_main$1p, c as _sfc_main$1q, d as _sfc_main$1r, e as _sfc_main$1s, f as _sfc_main$1t, g as _sfc_main$1y } from "./BTable.vue_vue_type_script_setup_true_lang-DSox5TGm.mjs";
47
47
  import { _ as _sfc_main$1n } from "./BTableSimple.vue_vue_type_script_setup_true_lang-Be44iN5l.mjs";
48
48
  import { _ as _sfc_main$1k, a as _sfc_main$1o } from "./BTabs.vue_vue_type_script_setup_true_lang-Cb0FBpiV.mjs";
49
49
  import { _ as _sfc_main$1u, a as _sfc_main$1v } from "./BToastOrchestrator.vue_vue_type_style_index_0_lang-CFmlSsxb.mjs";
@@ -156,4 +156,4 @@ const index = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePropert
156
156
  export {
157
157
  index as i
158
158
  };
159
- //# sourceMappingURL=index-37_70l80.mjs.map
159
+ //# sourceMappingURL=index-B7BE_6yh.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-37_70l80.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index-B7BE_6yh.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,2 +1,2 @@
1
- "use strict";const _=require("./BAccordionItem.vue_vue_type_script_setup_true_lang-E_3tN5JF.js"),e=require("./BAlert-BZaOO1rv.js"),r=require("./BAvatarGroup.vue_vue_type_script_setup_true_lang-C9xH1JfZ.js"),t=require("./BBadge.vue_vue_type_script_setup_true_lang-BqqTtiKY.js"),s=require("./BBreadcrumb.vue_vue_type_script_setup_true_lang-BcQ_kTYO.js"),u=require("./BButton.vue_vue_type_script_setup_true_lang-sjMGFjGE.js"),a=require("./BButtonToolbar.vue_vue_type_script_setup_true_lang-GnJfan9q.js"),i=require("./BCloseButton.vue_vue_type_script_setup_true_lang-CRwsufrO.js"),n=require("./BCard.vue_vue_type_script_setup_true_lang-CZ8pICsC.js"),p=require("./BCardText.vue_vue_type_script_setup_true_lang-B_c6aF1j.js"),c=require("./BCarouselSlide.vue_vue_type_script_setup_true_lang-CXuFqIG4.js"),o=require("./BCollapse.vue_vue_type_script_setup_true_lang-BFjLbbnW.js"),B=require("./BCol.vue_vue_type_script_setup_true_lang-CQccMbc6.js"),m=require("./BContainer.vue_vue_type_script_setup_true_lang-D--CuSC4.js"),l=require("./BRow.vue_vue_type_script_setup_true_lang-CtiK7XPB.js"),v=require("./BDropdown.vue_vue_type_script_setup_true_lang-C5FmjcaQ.js"),f=require("./BDropdownText.vue_vue_type_script_setup_true_lang-C1FZLiG6.js"),g=require("./BForm.vue_vue_type_script_setup_true_lang-lv8-CNRX.js"),d=require("./BFormFloatingLabel.vue_vue_type_script_setup_true_lang-S3tMJUsh.js"),y=require("./BFormValidFeedback.vue_vue_type_script_setup_true_lang-CveZ56eF.js"),j=require("./BFormCheckboxGroup.vue_vue_type_script_setup_true_lang-DBxi9n4S.js"),q=require("./BFormFile.vue_vue_type_script_setup_true_lang-Bm1cUd8j.js"),$=require("./BFormGroup.vue_vue_type_script_lang-C7ozJhaE.js"),F=require("./BFormInput.vue_vue_type_script_setup_true_lang-Bk_Pdq4d.js"),T=require("./BFormRadioGroup.vue_vue_type_script_setup_true_lang-QDRf61NA.js"),b=require("./BFormSelect.vue_vue_type_script_setup_true_lang-BoY40oxj.js"),C=require("./useFormSelect-BAmp-xrf.js"),h=require("./BFormSpinbutton.vue_vue_type_script_setup_true_lang-BLaiSQhU.js"),I=require("./BFormTags.vue_vue_type_script_setup_true_lang-Bq1fpb7v.js"),G=require("./BFormTextarea.vue_vue_type_script_setup_true_lang-RjhHGrE_.js"),x=require("./BImg.vue_vue_type_script_setup_true_lang-OsBsaOdz.js"),O=require("./BInputGroupText.vue_vue_type_script_setup_true_lang-CjulEI4h.js"),S=require("./BLink.vue_vue_type_script_setup_true_lang-Df_SjEg2.js"),w=require("./BListGroupItem.vue_vue_type_script_setup_true_lang-C_qkyQ2u.js"),P=require("./BModalOrchestrator.vue_vue_type_script_setup_true_lang-apwIBo-t.js"),D=require("./BNavText.vue_vue_type_script_setup_true_lang-B4QWFIHh.js"),N=require("./BNavbarToggle.vue_vue_type_script_setup_true_lang-BWkbdC-j.js"),A=require("./BOffcanvas.vue_vue_type_script_setup_true_lang-D1Zx4zA5.js"),k=require("./BOverlay.vue_vue_type_script_setup_true_lang-ikelLajh.js"),L=require("./BPagination.vue_vue_type_script_setup_true_lang-C0PGh9wY.js"),M=require("./BPlaceholderWrapper.vue_vue_type_script_setup_true_lang-CJ1UV4TA.js"),R=require("./floatingUi-CoKQ-nw7.js"),H=require("./BPopoverOrchestrator.vue_vue_type_script_setup_true_lang-UfmK9QvC.js"),z=require("./BProgress.vue_vue_type_script_setup_true_lang-C6xfNCQS.js"),V=require("./BSpinner.vue_vue_type_script_setup_true_lang-BpcS7-mY.js"),W=require("./BTable.vue_vue_type_script_setup_true_lang-DJaXQe4Y.js"),E=require("./BTableSimple.vue_vue_type_script_setup_true_lang-Cybz9eNN.js"),J=require("./BTabs.vue_vue_type_script_setup_true_lang-CXMXCFr9.js"),K=require("./BToastOrchestrator.vue_vue_type_style_index_0_lang-Cozd2Uj5.js"),U=require("./BTooltipOrchestrator.vue_vue_type_script_setup_true_lang-D1k-lHaI.js"),Q=Object.freeze(Object.defineProperty({__proto__:null,BAccordion:_._sfc_main,BAccordionItem:_._sfc_main$1,BAlert:e.BAlert,BAvatar:r._sfc_main,BAvatarGroup:r._sfc_main$1,BBadge:t._sfc_main,BBreadcrumb:s._sfc_main,BBreadcrumbItem:s._sfc_main$1,BButton:u._sfc_main,BButtonGroup:a._sfc_main,BButtonToolbar:a._sfc_main$1,BCard:n._sfc_main,BCardBody:n._sfc_main$1,BCardFooter:n._sfc_main$2,BCardGroup:p._sfc_main,BCardHeader:n._sfc_main$3,BCardImg:n._sfc_main$4,BCardSubtitle:n._sfc_main$5,BCardText:p._sfc_main$1,BCardTitle:n._sfc_main$6,BCarousel:c._sfc_main,BCarouselSlide:c._sfc_main$1,BCloseButton:i._sfc_main,BCol:B._sfc_main,BCollapse:o._sfc_main,BContainer:m._sfc_main,BDropdown:v._sfc_main,BDropdownDivider:f._sfc_main,BDropdownForm:f._sfc_main$1,BDropdownGroup:f._sfc_main$2,BDropdownHeader:f._sfc_main$3,BDropdownItem:f._sfc_main$4,BDropdownItemButton:f._sfc_main$5,BDropdownText:f._sfc_main$6,BForm:g._sfc_main,BFormCheckbox:j._sfc_main,BFormCheckboxGroup:j._sfc_main$1,BFormDatalist:d._sfc_main,BFormFile:q._sfc_main,BFormFloatingLabel:d._sfc_main$1,BFormGroup:$._sfc_main,BFormInput:F._sfc_main,BFormInvalidFeedback:y._sfc_main,BFormRadio:T._sfc_main,BFormRadioGroup:T._sfc_main$1,BFormRow:y._sfc_main$1,BFormSelect:b._sfc_main,BFormSelectOption:C._sfc_main,BFormSelectOptionGroup:b._sfc_main$1,BFormSpinbutton:h._sfc_main,BFormTag:I._sfc_main$1,BFormTags:I._sfc_main,BFormText:y._sfc_main$2,BFormTextarea:G._sfc_main,BFormValidFeedback:y._sfc_main$3,BImg:x._sfc_main,BInput:F._sfc_main,BInputGroup:O._sfc_main,BInputGroupText:O._sfc_main$1,BLink:S._sfc_main,BListGroup:w._sfc_main,BListGroupItem:w._sfc_main$1,BModal:P.BModal,BModalOrchestrator:P._sfc_main,BNav:D._sfc_main,BNavForm:D._sfc_main$1,BNavItem:D._sfc_main$2,BNavItemDropdown:D._sfc_main$3,BNavText:D._sfc_main$4,BNavbar:N._sfc_main,BNavbarBrand:N._sfc_main$1,BNavbarNav:N._sfc_main$2,BNavbarToggle:N._sfc_main$3,BOffcanvas:A._sfc_main,BOverlay:k._sfc_main,BPagination:L._sfc_main,BPlaceholder:M._sfc_main,BPlaceholderButton:M._sfc_main$1,BPlaceholderCard:M._sfc_main$2,BPlaceholderTable:M._sfc_main$3,BPlaceholderWrapper:M._sfc_main$4,BPopover:R._sfc_main,BPopoverOrchestrator:H._sfc_main,BProgress:z._sfc_main,BProgressBar:z._sfc_main$1,BRow:l._sfc_main,BSpinner:V._sfc_main,BTab:J._sfc_main,BTable:W._sfc_main,BTableLite:W._sfc_main$1,BTableSimple:E._sfc_main,BTabs:J._sfc_main$1,BTbody:W._sfc_main$2,BTd:W._sfc_main$3,BTfoot:W._sfc_main$4,BTh:W._sfc_main$5,BThead:W._sfc_main$6,BToast:K._sfc_main,BToastOrchestrator:K._sfc_main$1,BTooltip:U._sfc_main,BTooltipOrchestrator:U._sfc_main$1,BTr:W._sfc_main$7},Symbol.toStringTag,{value:"Module"}));exports.index=Q;
2
- //# sourceMappingURL=index-CMONpMLQ.js.map
1
+ "use strict";const _=require("./BAccordionItem.vue_vue_type_script_setup_true_lang-E_3tN5JF.js"),e=require("./BAlert-BZaOO1rv.js"),r=require("./BAvatarGroup.vue_vue_type_script_setup_true_lang-C9xH1JfZ.js"),t=require("./BBadge.vue_vue_type_script_setup_true_lang-BqqTtiKY.js"),s=require("./BBreadcrumb.vue_vue_type_script_setup_true_lang-BcQ_kTYO.js"),u=require("./BButton.vue_vue_type_script_setup_true_lang-sjMGFjGE.js"),a=require("./BButtonToolbar.vue_vue_type_script_setup_true_lang-GnJfan9q.js"),i=require("./BCloseButton.vue_vue_type_script_setup_true_lang-CRwsufrO.js"),n=require("./BCard.vue_vue_type_script_setup_true_lang-CZ8pICsC.js"),p=require("./BCardText.vue_vue_type_script_setup_true_lang-B_c6aF1j.js"),c=require("./BCarouselSlide.vue_vue_type_script_setup_true_lang-CXuFqIG4.js"),o=require("./BCollapse.vue_vue_type_script_setup_true_lang-BFjLbbnW.js"),B=require("./BCol.vue_vue_type_script_setup_true_lang-CQccMbc6.js"),m=require("./BContainer.vue_vue_type_script_setup_true_lang-D--CuSC4.js"),l=require("./BRow.vue_vue_type_script_setup_true_lang-CtiK7XPB.js"),v=require("./BDropdown.vue_vue_type_script_setup_true_lang-C5FmjcaQ.js"),f=require("./BDropdownText.vue_vue_type_script_setup_true_lang-C1FZLiG6.js"),g=require("./BForm.vue_vue_type_script_setup_true_lang-lv8-CNRX.js"),d=require("./BFormFloatingLabel.vue_vue_type_script_setup_true_lang-S3tMJUsh.js"),y=require("./BFormValidFeedback.vue_vue_type_script_setup_true_lang-CveZ56eF.js"),j=require("./BFormCheckboxGroup.vue_vue_type_script_setup_true_lang-DBxi9n4S.js"),q=require("./BFormFile.vue_vue_type_script_setup_true_lang-Bm1cUd8j.js"),$=require("./BFormGroup.vue_vue_type_script_lang-C7ozJhaE.js"),F=require("./BFormInput.vue_vue_type_script_setup_true_lang-Bk_Pdq4d.js"),T=require("./BFormRadioGroup.vue_vue_type_script_setup_true_lang-QDRf61NA.js"),b=require("./BFormSelect.vue_vue_type_script_setup_true_lang-BoY40oxj.js"),C=require("./useFormSelect-BAmp-xrf.js"),h=require("./BFormSpinbutton.vue_vue_type_script_setup_true_lang-BLaiSQhU.js"),I=require("./BFormTags.vue_vue_type_script_setup_true_lang-Bq1fpb7v.js"),G=require("./BFormTextarea.vue_vue_type_script_setup_true_lang-RjhHGrE_.js"),x=require("./BImg.vue_vue_type_script_setup_true_lang-OsBsaOdz.js"),O=require("./BInputGroupText.vue_vue_type_script_setup_true_lang-CjulEI4h.js"),S=require("./BLink.vue_vue_type_script_setup_true_lang-Df_SjEg2.js"),w=require("./BListGroupItem.vue_vue_type_script_setup_true_lang-C_qkyQ2u.js"),P=require("./BModalOrchestrator.vue_vue_type_script_setup_true_lang-apwIBo-t.js"),D=require("./BNavText.vue_vue_type_script_setup_true_lang-B4QWFIHh.js"),N=require("./BNavbarToggle.vue_vue_type_script_setup_true_lang-BWkbdC-j.js"),A=require("./BOffcanvas.vue_vue_type_script_setup_true_lang-D1Zx4zA5.js"),k=require("./BOverlay.vue_vue_type_script_setup_true_lang-ikelLajh.js"),L=require("./BPagination.vue_vue_type_script_setup_true_lang-C0PGh9wY.js"),M=require("./BPlaceholderWrapper.vue_vue_type_script_setup_true_lang-CJ1UV4TA.js"),R=require("./floatingUi-CoKQ-nw7.js"),H=require("./BPopoverOrchestrator.vue_vue_type_script_setup_true_lang-UfmK9QvC.js"),z=require("./BProgress.vue_vue_type_script_setup_true_lang-C6xfNCQS.js"),V=require("./BSpinner.vue_vue_type_script_setup_true_lang-BpcS7-mY.js"),W=require("./BTable.vue_vue_type_script_setup_true_lang-D0H4HA45.js"),E=require("./BTableSimple.vue_vue_type_script_setup_true_lang-Cybz9eNN.js"),J=require("./BTabs.vue_vue_type_script_setup_true_lang-CXMXCFr9.js"),K=require("./BToastOrchestrator.vue_vue_type_style_index_0_lang-Cozd2Uj5.js"),U=require("./BTooltipOrchestrator.vue_vue_type_script_setup_true_lang-D1k-lHaI.js"),Q=Object.freeze(Object.defineProperty({__proto__:null,BAccordion:_._sfc_main,BAccordionItem:_._sfc_main$1,BAlert:e.BAlert,BAvatar:r._sfc_main,BAvatarGroup:r._sfc_main$1,BBadge:t._sfc_main,BBreadcrumb:s._sfc_main,BBreadcrumbItem:s._sfc_main$1,BButton:u._sfc_main,BButtonGroup:a._sfc_main,BButtonToolbar:a._sfc_main$1,BCard:n._sfc_main,BCardBody:n._sfc_main$1,BCardFooter:n._sfc_main$2,BCardGroup:p._sfc_main,BCardHeader:n._sfc_main$3,BCardImg:n._sfc_main$4,BCardSubtitle:n._sfc_main$5,BCardText:p._sfc_main$1,BCardTitle:n._sfc_main$6,BCarousel:c._sfc_main,BCarouselSlide:c._sfc_main$1,BCloseButton:i._sfc_main,BCol:B._sfc_main,BCollapse:o._sfc_main,BContainer:m._sfc_main,BDropdown:v._sfc_main,BDropdownDivider:f._sfc_main,BDropdownForm:f._sfc_main$1,BDropdownGroup:f._sfc_main$2,BDropdownHeader:f._sfc_main$3,BDropdownItem:f._sfc_main$4,BDropdownItemButton:f._sfc_main$5,BDropdownText:f._sfc_main$6,BForm:g._sfc_main,BFormCheckbox:j._sfc_main,BFormCheckboxGroup:j._sfc_main$1,BFormDatalist:d._sfc_main,BFormFile:q._sfc_main,BFormFloatingLabel:d._sfc_main$1,BFormGroup:$._sfc_main,BFormInput:F._sfc_main,BFormInvalidFeedback:y._sfc_main,BFormRadio:T._sfc_main,BFormRadioGroup:T._sfc_main$1,BFormRow:y._sfc_main$1,BFormSelect:b._sfc_main,BFormSelectOption:C._sfc_main,BFormSelectOptionGroup:b._sfc_main$1,BFormSpinbutton:h._sfc_main,BFormTag:I._sfc_main$1,BFormTags:I._sfc_main,BFormText:y._sfc_main$2,BFormTextarea:G._sfc_main,BFormValidFeedback:y._sfc_main$3,BImg:x._sfc_main,BInput:F._sfc_main,BInputGroup:O._sfc_main,BInputGroupText:O._sfc_main$1,BLink:S._sfc_main,BListGroup:w._sfc_main,BListGroupItem:w._sfc_main$1,BModal:P.BModal,BModalOrchestrator:P._sfc_main,BNav:D._sfc_main,BNavForm:D._sfc_main$1,BNavItem:D._sfc_main$2,BNavItemDropdown:D._sfc_main$3,BNavText:D._sfc_main$4,BNavbar:N._sfc_main,BNavbarBrand:N._sfc_main$1,BNavbarNav:N._sfc_main$2,BNavbarToggle:N._sfc_main$3,BOffcanvas:A._sfc_main,BOverlay:k._sfc_main,BPagination:L._sfc_main,BPlaceholder:M._sfc_main,BPlaceholderButton:M._sfc_main$1,BPlaceholderCard:M._sfc_main$2,BPlaceholderTable:M._sfc_main$3,BPlaceholderWrapper:M._sfc_main$4,BPopover:R._sfc_main,BPopoverOrchestrator:H._sfc_main,BProgress:z._sfc_main,BProgressBar:z._sfc_main$1,BRow:l._sfc_main,BSpinner:V._sfc_main,BTab:J._sfc_main,BTable:W._sfc_main,BTableLite:W._sfc_main$1,BTableSimple:E._sfc_main,BTabs:J._sfc_main$1,BTbody:W._sfc_main$2,BTd:W._sfc_main$3,BTfoot:W._sfc_main$4,BTh:W._sfc_main$5,BThead:W._sfc_main$6,BToast:K._sfc_main,BToastOrchestrator:K._sfc_main$1,BTooltip:U._sfc_main,BTooltipOrchestrator:U._sfc_main$1,BTr:W._sfc_main$7},Symbol.toStringTag,{value:"Module"}));exports.index=Q;
2
+ //# sourceMappingURL=index-wIT_GbXA.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-wIT_GbXA.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,4 +1,4 @@
1
- import { _, a, b, c, d, e, f, g } from "../../../BTable.vue_vue_type_script_setup_true_lang-Dt0wgrA9.mjs";
1
+ import { _, a, b, c, d, e, f, g } from "../../../BTable.vue_vue_type_script_setup_true_lang-DSox5TGm.mjs";
2
2
  import { _ as _2 } from "../../../BTableSimple.vue_vue_type_script_setup_true_lang-Be44iN5l.mjs";
3
3
  export {
4
4
  _ as BTable,
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../../../BTable.vue_vue_type_script_setup_true_lang-DJaXQe4Y.js"),_=require("../../../BTableSimple.vue_vue_type_script_setup_true_lang-Cybz9eNN.js");exports.BTable=e._sfc_main,exports.BTableLite=e._sfc_main$1,exports.BTbody=e._sfc_main$2,exports.BTd=e._sfc_main$3,exports.BTfoot=e._sfc_main$4,exports.BTh=e._sfc_main$5,exports.BThead=e._sfc_main$6,exports.BTr=e._sfc_main$7,exports.BTableSimple=_._sfc_main;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../../../BTable.vue_vue_type_script_setup_true_lang-D0H4HA45.js"),_=require("../../../BTableSimple.vue_vue_type_script_setup_true_lang-Cybz9eNN.js");exports.BTable=e._sfc_main,exports.BTableLite=e._sfc_main$1,exports.BTbody=e._sfc_main$2,exports.BTd=e._sfc_main$3,exports.BTfoot=e._sfc_main$4,exports.BTh=e._sfc_main$5,exports.BThead=e._sfc_main$6,exports.BTr=e._sfc_main$7,exports.BTableSimple=_._sfc_main;
2
2
  //# sourceMappingURL=index.umd.js.map
@@ -43,7 +43,7 @@ import { _ as _42 } from "../../floatingUi-5pxbgyLd.mjs";
43
43
  import { _ as _43 } from "../../BPopoverOrchestrator.vue_vue_type_script_setup_true_lang-CSpk5s_J.mjs";
44
44
  import { _ as _44, a as a20 } from "../../BProgress.vue_vue_type_script_setup_true_lang-C-D_koFH.mjs";
45
45
  import { _ as _45 } from "../../BSpinner.vue_vue_type_script_setup_true_lang-CXYbvCe5.mjs";
46
- import { _ as _46, a as a21, b as b7, c as c7, d as d5, e as e3, f as f3, g } from "../../BTable.vue_vue_type_script_setup_true_lang-Dt0wgrA9.mjs";
46
+ import { _ as _46, a as a21, b as b7, c as c7, d as d5, e as e3, f as f3, g } from "../../BTable.vue_vue_type_script_setup_true_lang-DSox5TGm.mjs";
47
47
  import { _ as _47 } from "../../BTableSimple.vue_vue_type_script_setup_true_lang-Be44iN5l.mjs";
48
48
  import { _ as _48, a as a22 } from "../../BTabs.vue_vue_type_script_setup_true_lang-Cb0FBpiV.mjs";
49
49
  import { _ as _49, a as a23 } from "../../BToastOrchestrator.vue_vue_type_style_index_0_lang-CFmlSsxb.mjs";
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../../BAccordionItem.vue_vue_type_script_setup_true_lang-E_3tN5JF.js"),_=require("../../BAlert-BZaOO1rv.js"),r=require("../../BAvatarGroup.vue_vue_type_script_setup_true_lang-C9xH1JfZ.js"),t=require("../../BBadge.vue_vue_type_script_setup_true_lang-BqqTtiKY.js"),s=require("../../BBreadcrumb.vue_vue_type_script_setup_true_lang-BcQ_kTYO.js"),p=require("../../BButton.vue_vue_type_script_setup_true_lang-sjMGFjGE.js"),u=require("../../BButtonToolbar.vue_vue_type_script_setup_true_lang-GnJfan9q.js"),o=require("../../BCloseButton.vue_vue_type_script_setup_true_lang-CRwsufrO.js"),a=require("../../BCard.vue_vue_type_script_setup_true_lang-CZ8pICsC.js"),i=require("../../BCardText.vue_vue_type_script_setup_true_lang-B_c6aF1j.js"),n=require("../../BCarouselSlide.vue_vue_type_script_setup_true_lang-CXuFqIG4.js"),c=require("../../BCollapse.vue_vue_type_script_setup_true_lang-BFjLbbnW.js"),B=require("../../BCol.vue_vue_type_script_setup_true_lang-CQccMbc6.js"),m=require("../../BContainer.vue_vue_type_script_setup_true_lang-D--CuSC4.js"),v=require("../../BRow.vue_vue_type_script_setup_true_lang-CtiK7XPB.js"),l=require("../../BDropdown.vue_vue_type_script_setup_true_lang-C5FmjcaQ.js"),x=require("../../BDropdownText.vue_vue_type_script_setup_true_lang-C1FZLiG6.js"),f=require("../../BForm.vue_vue_type_script_setup_true_lang-lv8-CNRX.js"),g=require("../../BFormFloatingLabel.vue_vue_type_script_setup_true_lang-S3tMJUsh.js"),d=require("../../BFormValidFeedback.vue_vue_type_script_setup_true_lang-CveZ56eF.js"),y=require("../../BFormCheckboxGroup.vue_vue_type_script_setup_true_lang-DBxi9n4S.js"),j=require("../../BFormFile.vue_vue_type_script_setup_true_lang-Bm1cUd8j.js"),q=require("../../BFormGroup.vue_vue_type_script_lang-C7ozJhaE.js"),$=require("../../BFormInput.vue_vue_type_script_setup_true_lang-Bk_Pdq4d.js"),F=require("../../BFormRadioGroup.vue_vue_type_script_setup_true_lang-QDRf61NA.js"),T=require("../../BFormSelect.vue_vue_type_script_setup_true_lang-BoY40oxj.js"),b=require("../../useFormSelect-BAmp-xrf.js"),C=require("../../BFormSpinbutton.vue_vue_type_script_setup_true_lang-BLaiSQhU.js"),h=require("../../BFormTags.vue_vue_type_script_setup_true_lang-Bq1fpb7v.js"),I=require("../../BFormTextarea.vue_vue_type_script_setup_true_lang-RjhHGrE_.js"),G=require("../../BImg.vue_vue_type_script_setup_true_lang-OsBsaOdz.js"),O=require("../../BInputGroupText.vue_vue_type_script_setup_true_lang-CjulEI4h.js"),S=require("../../BLink.vue_vue_type_script_setup_true_lang-Df_SjEg2.js"),w=require("../../BListGroupItem.vue_vue_type_script_setup_true_lang-C_qkyQ2u.js"),P=require("../../BModalOrchestrator.vue_vue_type_script_setup_true_lang-apwIBo-t.js"),D=require("../../BNavText.vue_vue_type_script_setup_true_lang-B4QWFIHh.js"),N=require("../../BNavbarToggle.vue_vue_type_script_setup_true_lang-BWkbdC-j.js"),A=require("../../BOffcanvas.vue_vue_type_script_setup_true_lang-D1Zx4zA5.js"),k=require("../../BOverlay.vue_vue_type_script_setup_true_lang-ikelLajh.js"),L=require("../../BPagination.vue_vue_type_script_setup_true_lang-C0PGh9wY.js"),M=require("../../BPlaceholderWrapper.vue_vue_type_script_setup_true_lang-CJ1UV4TA.js"),R=require("../../floatingUi-CoKQ-nw7.js"),H=require("../../BPopoverOrchestrator.vue_vue_type_script_setup_true_lang-UfmK9QvC.js"),V=require("../../BProgress.vue_vue_type_script_setup_true_lang-C6xfNCQS.js"),W=require("../../BSpinner.vue_vue_type_script_setup_true_lang-BpcS7-mY.js"),z=require("../../BTable.vue_vue_type_script_setup_true_lang-DJaXQe4Y.js"),E=require("../../BTableSimple.vue_vue_type_script_setup_true_lang-Cybz9eNN.js"),J=require("../../BTabs.vue_vue_type_script_setup_true_lang-CXMXCFr9.js"),K=require("../../BToastOrchestrator.vue_vue_type_style_index_0_lang-Cozd2Uj5.js"),U=require("../../BTooltipOrchestrator.vue_vue_type_script_setup_true_lang-D1k-lHaI.js");exports.BAccordion=e._sfc_main,exports.BAccordionItem=e._sfc_main$1,exports.BAlert=_.BAlert,exports.BAvatar=r._sfc_main,exports.BAvatarGroup=r._sfc_main$1,exports.BBadge=t._sfc_main,exports.BBreadcrumb=s._sfc_main,exports.BBreadcrumbItem=s._sfc_main$1,exports.BButton=p._sfc_main,exports.BButtonGroup=u._sfc_main,exports.BButtonToolbar=u._sfc_main$1,exports.BCloseButton=o._sfc_main,exports.BCard=a._sfc_main,exports.BCardBody=a._sfc_main$1,exports.BCardFooter=a._sfc_main$2,exports.BCardHeader=a._sfc_main$3,exports.BCardImg=a._sfc_main$4,exports.BCardSubtitle=a._sfc_main$5,exports.BCardTitle=a._sfc_main$6,exports.BCardGroup=i._sfc_main,exports.BCardText=i._sfc_main$1,exports.BCarousel=n._sfc_main,exports.BCarouselSlide=n._sfc_main$1,exports.BCollapse=c._sfc_main,exports.BCol=B._sfc_main,exports.BContainer=m._sfc_main,exports.BRow=v._sfc_main,exports.BDropdown=l._sfc_main,exports.BDropdownDivider=x._sfc_main,exports.BDropdownForm=x._sfc_main$1,exports.BDropdownGroup=x._sfc_main$2,exports.BDropdownHeader=x._sfc_main$3,exports.BDropdownItem=x._sfc_main$4,exports.BDropdownItemButton=x._sfc_main$5,exports.BDropdownText=x._sfc_main$6,exports.BForm=f._sfc_main,exports.BFormDatalist=g._sfc_main,exports.BFormFloatingLabel=g._sfc_main$1,exports.BFormInvalidFeedback=d._sfc_main,exports.BFormRow=d._sfc_main$1,exports.BFormText=d._sfc_main$2,exports.BFormValidFeedback=d._sfc_main$3,exports.BFormCheckbox=y._sfc_main,exports.BFormCheckboxGroup=y._sfc_main$1,exports.BFormFile=j._sfc_main,exports.BFormGroup=q._sfc_main,exports.BFormInput=$._sfc_main,exports.BInput=$._sfc_main,exports.BFormRadio=F._sfc_main,exports.BFormRadioGroup=F._sfc_main$1,exports.BFormSelect=T._sfc_main,exports.BFormSelectOptionGroup=T._sfc_main$1,exports.BFormSelectOption=b._sfc_main,exports.BFormSpinbutton=C._sfc_main,exports.BFormTag=h._sfc_main$1,exports.BFormTags=h._sfc_main,exports.BFormTextarea=I._sfc_main,exports.BImg=G._sfc_main,exports.BInputGroup=O._sfc_main,exports.BInputGroupText=O._sfc_main$1,exports.BLink=S._sfc_main,exports.BListGroup=w._sfc_main,exports.BListGroupItem=w._sfc_main$1,exports.BModal=P.BModal,exports.BModalOrchestrator=P._sfc_main,exports.BNav=D._sfc_main,exports.BNavForm=D._sfc_main$1,exports.BNavItem=D._sfc_main$2,exports.BNavItemDropdown=D._sfc_main$3,exports.BNavText=D._sfc_main$4,exports.BNavbar=N._sfc_main,exports.BNavbarBrand=N._sfc_main$1,exports.BNavbarNav=N._sfc_main$2,exports.BNavbarToggle=N._sfc_main$3,exports.BOffcanvas=A._sfc_main,exports.BOverlay=k._sfc_main,exports.BPagination=L._sfc_main,exports.BPlaceholder=M._sfc_main,exports.BPlaceholderButton=M._sfc_main$1,exports.BPlaceholderCard=M._sfc_main$2,exports.BPlaceholderTable=M._sfc_main$3,exports.BPlaceholderWrapper=M._sfc_main$4,exports.BPopover=R._sfc_main,exports.BPopoverOrchestrator=H._sfc_main,exports.BProgress=V._sfc_main,exports.BProgressBar=V._sfc_main$1,exports.BSpinner=W._sfc_main,exports.BTable=z._sfc_main,exports.BTableLite=z._sfc_main$1,exports.BTbody=z._sfc_main$2,exports.BTd=z._sfc_main$3,exports.BTfoot=z._sfc_main$4,exports.BTh=z._sfc_main$5,exports.BThead=z._sfc_main$6,exports.BTr=z._sfc_main$7,exports.BTableSimple=E._sfc_main,exports.BTab=J._sfc_main,exports.BTabs=J._sfc_main$1,exports.BToast=K._sfc_main,exports.BToastOrchestrator=K._sfc_main$1,exports.BTooltip=U._sfc_main,exports.BTooltipOrchestrator=U._sfc_main$1;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../../BAccordionItem.vue_vue_type_script_setup_true_lang-E_3tN5JF.js"),_=require("../../BAlert-BZaOO1rv.js"),r=require("../../BAvatarGroup.vue_vue_type_script_setup_true_lang-C9xH1JfZ.js"),t=require("../../BBadge.vue_vue_type_script_setup_true_lang-BqqTtiKY.js"),s=require("../../BBreadcrumb.vue_vue_type_script_setup_true_lang-BcQ_kTYO.js"),p=require("../../BButton.vue_vue_type_script_setup_true_lang-sjMGFjGE.js"),u=require("../../BButtonToolbar.vue_vue_type_script_setup_true_lang-GnJfan9q.js"),o=require("../../BCloseButton.vue_vue_type_script_setup_true_lang-CRwsufrO.js"),a=require("../../BCard.vue_vue_type_script_setup_true_lang-CZ8pICsC.js"),i=require("../../BCardText.vue_vue_type_script_setup_true_lang-B_c6aF1j.js"),n=require("../../BCarouselSlide.vue_vue_type_script_setup_true_lang-CXuFqIG4.js"),c=require("../../BCollapse.vue_vue_type_script_setup_true_lang-BFjLbbnW.js"),B=require("../../BCol.vue_vue_type_script_setup_true_lang-CQccMbc6.js"),m=require("../../BContainer.vue_vue_type_script_setup_true_lang-D--CuSC4.js"),v=require("../../BRow.vue_vue_type_script_setup_true_lang-CtiK7XPB.js"),l=require("../../BDropdown.vue_vue_type_script_setup_true_lang-C5FmjcaQ.js"),x=require("../../BDropdownText.vue_vue_type_script_setup_true_lang-C1FZLiG6.js"),f=require("../../BForm.vue_vue_type_script_setup_true_lang-lv8-CNRX.js"),g=require("../../BFormFloatingLabel.vue_vue_type_script_setup_true_lang-S3tMJUsh.js"),d=require("../../BFormValidFeedback.vue_vue_type_script_setup_true_lang-CveZ56eF.js"),y=require("../../BFormCheckboxGroup.vue_vue_type_script_setup_true_lang-DBxi9n4S.js"),j=require("../../BFormFile.vue_vue_type_script_setup_true_lang-Bm1cUd8j.js"),q=require("../../BFormGroup.vue_vue_type_script_lang-C7ozJhaE.js"),$=require("../../BFormInput.vue_vue_type_script_setup_true_lang-Bk_Pdq4d.js"),F=require("../../BFormRadioGroup.vue_vue_type_script_setup_true_lang-QDRf61NA.js"),T=require("../../BFormSelect.vue_vue_type_script_setup_true_lang-BoY40oxj.js"),b=require("../../useFormSelect-BAmp-xrf.js"),C=require("../../BFormSpinbutton.vue_vue_type_script_setup_true_lang-BLaiSQhU.js"),h=require("../../BFormTags.vue_vue_type_script_setup_true_lang-Bq1fpb7v.js"),I=require("../../BFormTextarea.vue_vue_type_script_setup_true_lang-RjhHGrE_.js"),G=require("../../BImg.vue_vue_type_script_setup_true_lang-OsBsaOdz.js"),O=require("../../BInputGroupText.vue_vue_type_script_setup_true_lang-CjulEI4h.js"),S=require("../../BLink.vue_vue_type_script_setup_true_lang-Df_SjEg2.js"),w=require("../../BListGroupItem.vue_vue_type_script_setup_true_lang-C_qkyQ2u.js"),P=require("../../BModalOrchestrator.vue_vue_type_script_setup_true_lang-apwIBo-t.js"),D=require("../../BNavText.vue_vue_type_script_setup_true_lang-B4QWFIHh.js"),N=require("../../BNavbarToggle.vue_vue_type_script_setup_true_lang-BWkbdC-j.js"),A=require("../../BOffcanvas.vue_vue_type_script_setup_true_lang-D1Zx4zA5.js"),k=require("../../BOverlay.vue_vue_type_script_setup_true_lang-ikelLajh.js"),L=require("../../BPagination.vue_vue_type_script_setup_true_lang-C0PGh9wY.js"),M=require("../../BPlaceholderWrapper.vue_vue_type_script_setup_true_lang-CJ1UV4TA.js"),R=require("../../floatingUi-CoKQ-nw7.js"),H=require("../../BPopoverOrchestrator.vue_vue_type_script_setup_true_lang-UfmK9QvC.js"),V=require("../../BProgress.vue_vue_type_script_setup_true_lang-C6xfNCQS.js"),W=require("../../BSpinner.vue_vue_type_script_setup_true_lang-BpcS7-mY.js"),z=require("../../BTable.vue_vue_type_script_setup_true_lang-D0H4HA45.js"),E=require("../../BTableSimple.vue_vue_type_script_setup_true_lang-Cybz9eNN.js"),J=require("../../BTabs.vue_vue_type_script_setup_true_lang-CXMXCFr9.js"),K=require("../../BToastOrchestrator.vue_vue_type_style_index_0_lang-Cozd2Uj5.js"),U=require("../../BTooltipOrchestrator.vue_vue_type_script_setup_true_lang-D1k-lHaI.js");exports.BAccordion=e._sfc_main,exports.BAccordionItem=e._sfc_main$1,exports.BAlert=_.BAlert,exports.BAvatar=r._sfc_main,exports.BAvatarGroup=r._sfc_main$1,exports.BBadge=t._sfc_main,exports.BBreadcrumb=s._sfc_main,exports.BBreadcrumbItem=s._sfc_main$1,exports.BButton=p._sfc_main,exports.BButtonGroup=u._sfc_main,exports.BButtonToolbar=u._sfc_main$1,exports.BCloseButton=o._sfc_main,exports.BCard=a._sfc_main,exports.BCardBody=a._sfc_main$1,exports.BCardFooter=a._sfc_main$2,exports.BCardHeader=a._sfc_main$3,exports.BCardImg=a._sfc_main$4,exports.BCardSubtitle=a._sfc_main$5,exports.BCardTitle=a._sfc_main$6,exports.BCardGroup=i._sfc_main,exports.BCardText=i._sfc_main$1,exports.BCarousel=n._sfc_main,exports.BCarouselSlide=n._sfc_main$1,exports.BCollapse=c._sfc_main,exports.BCol=B._sfc_main,exports.BContainer=m._sfc_main,exports.BRow=v._sfc_main,exports.BDropdown=l._sfc_main,exports.BDropdownDivider=x._sfc_main,exports.BDropdownForm=x._sfc_main$1,exports.BDropdownGroup=x._sfc_main$2,exports.BDropdownHeader=x._sfc_main$3,exports.BDropdownItem=x._sfc_main$4,exports.BDropdownItemButton=x._sfc_main$5,exports.BDropdownText=x._sfc_main$6,exports.BForm=f._sfc_main,exports.BFormDatalist=g._sfc_main,exports.BFormFloatingLabel=g._sfc_main$1,exports.BFormInvalidFeedback=d._sfc_main,exports.BFormRow=d._sfc_main$1,exports.BFormText=d._sfc_main$2,exports.BFormValidFeedback=d._sfc_main$3,exports.BFormCheckbox=y._sfc_main,exports.BFormCheckboxGroup=y._sfc_main$1,exports.BFormFile=j._sfc_main,exports.BFormGroup=q._sfc_main,exports.BFormInput=$._sfc_main,exports.BInput=$._sfc_main,exports.BFormRadio=F._sfc_main,exports.BFormRadioGroup=F._sfc_main$1,exports.BFormSelect=T._sfc_main,exports.BFormSelectOptionGroup=T._sfc_main$1,exports.BFormSelectOption=b._sfc_main,exports.BFormSpinbutton=C._sfc_main,exports.BFormTag=h._sfc_main$1,exports.BFormTags=h._sfc_main,exports.BFormTextarea=I._sfc_main,exports.BImg=G._sfc_main,exports.BInputGroup=O._sfc_main,exports.BInputGroupText=O._sfc_main$1,exports.BLink=S._sfc_main,exports.BListGroup=w._sfc_main,exports.BListGroupItem=w._sfc_main$1,exports.BModal=P.BModal,exports.BModalOrchestrator=P._sfc_main,exports.BNav=D._sfc_main,exports.BNavForm=D._sfc_main$1,exports.BNavItem=D._sfc_main$2,exports.BNavItemDropdown=D._sfc_main$3,exports.BNavText=D._sfc_main$4,exports.BNavbar=N._sfc_main,exports.BNavbarBrand=N._sfc_main$1,exports.BNavbarNav=N._sfc_main$2,exports.BNavbarToggle=N._sfc_main$3,exports.BOffcanvas=A._sfc_main,exports.BOverlay=k._sfc_main,exports.BPagination=L._sfc_main,exports.BPlaceholder=M._sfc_main,exports.BPlaceholderButton=M._sfc_main$1,exports.BPlaceholderCard=M._sfc_main$2,exports.BPlaceholderTable=M._sfc_main$3,exports.BPlaceholderWrapper=M._sfc_main$4,exports.BPopover=R._sfc_main,exports.BPopoverOrchestrator=H._sfc_main,exports.BProgress=V._sfc_main,exports.BProgressBar=V._sfc_main$1,exports.BSpinner=W._sfc_main,exports.BTable=z._sfc_main,exports.BTableLite=z._sfc_main$1,exports.BTbody=z._sfc_main$2,exports.BTd=z._sfc_main$3,exports.BTfoot=z._sfc_main$4,exports.BTh=z._sfc_main$5,exports.BThead=z._sfc_main$6,exports.BTr=z._sfc_main$7,exports.BTableSimple=E._sfc_main,exports.BTab=J._sfc_main,exports.BTabs=J._sfc_main$1,exports.BToast=K._sfc_main,exports.BToastOrchestrator=K._sfc_main$1,exports.BTooltip=U._sfc_main,exports.BTooltipOrchestrator=U._sfc_main$1;
2
2
  //# sourceMappingURL=index.umd.js.map
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "bootstrap-vue-next",
3
3
  "displayName": "BootstrapVueNext",
4
4
  "description": "BootstrapVueNext is an early and lovely component library for Vue 3 & Nuxt 3 based on Bootstrap 5 and Typescript.",
5
- "version": "0.24.21",
5
+ "version": "0.24.22",
6
6
  "license": "MIT",
7
7
  "main": "./dist/bootstrap-vue-next.umd.js",
8
8
  "module": "./dist/bootstrap-vue-next.mjs",
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-CMONpMLQ.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}