@stonecrop/atable 0.2.21 → 0.2.23
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.
- package/dist/atable.js +341 -347
- package/dist/atable.js.map +1 -1
- package/dist/atable.umd.cjs +1 -1
- package/dist/atable.umd.cjs.map +1 -1
- package/dist/style.css +1 -1
- package/package.json +5 -5
- package/src/components/ACell.vue +3 -33
- package/src/components/AExpansionRow.vue +1 -24
- package/src/components/ARow.vue +1 -24
- package/src/components/ATable.vue +1 -26
- package/src/components/ATableHeader.vue +1 -30
- package/src/components/ATableModal.vue +1 -15
- package/src/themes/default.css +1 -57
package/dist/atable.umd.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
(function(b,n){typeof exports=="object"&&typeof module<"u"?n(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],n):(b=typeof globalThis<"u"?globalThis:b||self,n(b["@stonecrop/atable"]={},b.Vue))})(this,function(b,n){"use strict";function fe(t){return n.getCurrentScope()?(n.onScopeDispose(t),!0):!1}function q(t){return typeof t=="function"?t():n.unref(t)}const ue=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const pe=Object.prototype.toString,me=t=>pe.call(t)==="[object Object]",he=()=>{};function S(t){var e;const o=q(t);return(e=o==null?void 0:o.$el)!=null?e:o}const R=ue?window:void 0;function O(...t){let e,o,l,s;if(typeof t[0]=="string"||Array.isArray(t[0])?([o,l,s]=t,e=R):[e,o,l,s]=t,!e)return he;Array.isArray(o)||(o=[o]),Array.isArray(l)||(l=[l]);const r=[],i=()=>{r.forEach(m=>m()),r.length=0},a=(m,u,d,p)=>(m.addEventListener(u,d,p),()=>m.removeEventListener(u,d,p)),c=n.watch(()=>[S(e),q(s)],([m,u])=>{if(i(),!m)return;const d=me(u)?{...u}:u;r.push(...o.flatMap(p=>l.map(g=>a(m,p,g,d))))},{immediate:!0,flush:"post"}),f=()=>{c(),i()};return fe(f),f}function we(t={}){var e;const{window:o=R,deep:l=!0}=t,s=(e=t.document)!=null?e:o==null?void 0:o.document,r=()=>{var c;let f=s==null?void 0:s.activeElement;if(l)for(;f!=null&&f.shadowRoot;)f=(c=f==null?void 0:f.shadowRoot)==null?void 0:c.activeElement;return f},i=n.ref(),a=()=>{i.value=r()};return o&&(O(o,"blur",c=>{c.relatedTarget===null&&a()},!0),O(o,"focus",a,!0)),a(),i}function ge(t,e={}){const o=we(e),l=n.computed(()=>S(t));return{focused:n.computed(()=>l.value&&o.value?l.value.contains(o.value):!1)}}function ye(t,{window:e=R,scrollTarget:o}={}){const l=n.ref(!1),s=()=>{if(!e)return;const r=e.document,i=S(t);if(!i)l.value=!1;else{const a=i.getBoundingClientRect();l.value=a.top<=(e.innerHeight||r.documentElement.clientHeight)&&a.left<=(e.innerWidth||r.documentElement.clientWidth)&&a.bottom>=0&&a.right>=0}};return n.watch(()=>S(t),()=>s(),{immediate:!0,flush:"post"}),e&&O(o||e,"scroll",s,{capture:!1,passive:!0}),l}const x=t=>{let e=ye(t).value;return e=e&&t.offsetHeight>0,e},k=t=>t.tabIndex>=0,G=t=>{const e=t.target;return L(e)},L=t=>{var e;let o;if(t instanceof HTMLTableCellElement){const l=(e=t.parentElement)==null?void 0:e.previousElementSibling;if(l){const s=Array.from(l.children)[t.cellIndex];s&&(o=s)}}else if(t instanceof HTMLTableRowElement){const l=t.previousElementSibling;l&&(o=l)}return o&&(!k(o)||!x(o))?L(o):o},be=t=>{var e;const o=t.target;let l;if(o instanceof HTMLTableCellElement){const s=(e=o.parentElement)==null?void 0:e.parentElement;if(s){const r=s.firstElementChild.children[o.cellIndex];r&&(l=r)}}else if(o instanceof HTMLTableRowElement){const s=o.parentElement;if(s){const r=s.firstElementChild;r&&(l=r)}}return l&&(!k(l)||!x(l))?P(l):l},Y=t=>{const e=t.target;return P(e)},P=t=>{var e;let o;if(t instanceof HTMLTableCellElement){const l=(e=t.parentElement)==null?void 0:e.nextElementSibling;if(l){const s=Array.from(l.children)[t.cellIndex];s&&(o=s)}}else if(t instanceof HTMLTableRowElement){const l=t.nextElementSibling;l&&(o=l)}return o&&(!k(o)||!x(o))?P(o):o},xe=t=>{var e;const o=t.target;let l;if(o instanceof HTMLTableCellElement){const s=(e=o.parentElement)==null?void 0:e.parentElement;if(s){const r=s.lastElementChild.children[o.cellIndex];r&&(l=r)}}else if(o instanceof HTMLTableRowElement){const s=o.parentElement;if(s){const r=s.lastElementChild;r&&(l=r)}}return l&&(!k(l)||!x(l))?L(l):l},X=t=>{const e=t.target;return M(e)},M=t=>{var e;let o;if(t.previousElementSibling)o=t.previousElementSibling;else{const l=(e=t.parentElement)==null?void 0:e.previousElementSibling;o=l==null?void 0:l.lastElementChild}return o&&(!k(o)||!x(o))?M(o):o},J=t=>{const e=t.target;return j(e)},j=t=>{var e;let o;if(t.nextElementSibling)o=t.nextElementSibling;else{const l=(e=t.parentElement)==null?void 0:e.nextElementSibling;o=l==null?void 0:l.firstElementChild}return o&&(!k(o)||!x(o))?j(o):o},Q=t=>{const e=t.target.parentElement.firstElementChild;return e&&(!k(e)||!x(e))?j(e):e},Z=t=>{const e=t.target.parentElement.lastElementChild;return e&&(!k(e)||!x(e))?M(e):e},A=["alt","control","shift","meta"],ke={ArrowUp:"up",ArrowDown:"down",ArrowLeft:"left",ArrowRight:"right"},N={"keydown.up":t=>{const e=G(t);e&&(t.preventDefault(),t.stopPropagation(),e.focus())},"keydown.down":t=>{const e=Y(t);e&&(t.preventDefault(),t.stopPropagation(),e.focus())},"keydown.left":t=>{const e=X(t);t.preventDefault(),t.stopPropagation(),e&&e.focus()},"keydown.right":t=>{const e=J(t);t.preventDefault(),t.stopPropagation(),e&&e.focus()},"keydown.control.up":t=>{const e=be(t);e&&(t.preventDefault(),t.stopPropagation(),e.focus())},"keydown.control.down":t=>{const e=xe(t);e&&(t.preventDefault(),t.stopPropagation(),e.focus())},"keydown.control.left":t=>{const e=Q(t);e&&(t.preventDefault(),t.stopPropagation(),e.focus())},"keydown.control.right":t=>{const e=Z(t);e&&(t.preventDefault(),t.stopPropagation(),e.focus())},"keydown.end":t=>{const e=Z(t);e&&(t.preventDefault(),t.stopPropagation(),e.focus())},"keydown.enter":t=>{if(t.target instanceof HTMLTableCellElement){t.preventDefault(),t.stopPropagation();const e=Y(t);e&&e.focus()}},"keydown.shift.enter":t=>{if(t.target instanceof HTMLTableCellElement){t.preventDefault(),t.stopPropagation();const e=G(t);e&&e.focus()}},"keydown.home":t=>{const e=Q(t);e&&(t.preventDefault(),t.stopPropagation(),e.focus())},"keydown.tab":t=>{const e=J(t);e&&(t.preventDefault(),t.stopPropagation(),e.focus())},"keydown.shift.tab":t=>{const e=X(t);e&&(t.preventDefault(),t.stopPropagation(),e.focus())}};function W(t){const e=i=>{let a=null;return i.parent&&(typeof i.parent=="string"?a=document.querySelector(i.parent):i.parent instanceof HTMLElement?a=i.parent:a=i.parent.value),a},o=i=>{const a=e(i);let c=[];if(typeof i.selectors=="string")c=a?Array.from(a.querySelectorAll(i.selectors)):Array.from(document.querySelectorAll(i.selectors));else if(Array.isArray(i.selectors))for(const f of i.selectors)f instanceof HTMLElement?c.push(f):c.push(f.$el);else if(i.selectors instanceof HTMLElement)c.push(i.selectors);else if(Array.isArray(i.selectors.value))for(const f of i.selectors.value)f instanceof HTMLElement?c.push(f):c.push(f.$el);else c.push(i.selectors.value);return c},l=i=>{const a=e(i);let c=[];return i.selectors?c=o(i):a&&(c=Array.from(a.children).filter(f=>k(f)&&x(f))),c},s=i=>a=>{const c=ke[a.key]||a.key.toLowerCase();if(A.includes(c))return;const f=i.handlers||N;for(const m of Object.keys(f)){const[u,...d]=m.split(".");if(u==="keydown"&&d.includes(c)){const p=f[m],g=d.filter(w=>A.includes(w)),h=A.some(w=>{const B=w.charAt(0).toUpperCase()+w.slice(1);return a.getModifierState(B)});if(g.length>0){if(h){for(const w of A)if(d.includes(w)){const B=w.charAt(0).toUpperCase()+w.slice(1);a.getModifierState(B)&&p(a)}}}else h||p(a)}}},r=[];n.onMounted(()=>{for(const i of t){const a=e(i),c=l(i),f=s(i),m=a?[a]:c;for(const u of m){const{focused:d}=ge(n.ref(u)),p=n.watch(d,g=>{g?u.addEventListener("keydown",f):u.removeEventListener("keydown",f)});r.push(p)}}}),n.onBeforeUnmount(()=>{for(const i of r)i()})}const Ee=["data-colindex","data-rowindex","data-editable","contenteditable","tabindex"],Ie={key:1},_e=n.defineComponent({__name:"ACell",props:{colIndex:{},rowIndex:{},tableid:{},addNavigation:{type:[Boolean,Object],default:!0},tabIndex:{default:0}},setup(t){var g;const e=t,o=n.inject(e.tableid),l=n.ref(null),s=n.ref(""),r=n.ref(!1),i=n.computed(()=>{const h=o.cellData(e.colIndex,e.rowIndex);if(o.columns[e.colIndex].format){const w=o.columns[e.colIndex].format;return typeof w=="function"?w(h):typeof w=="string"?Function(`"use strict";return (${w})`)()(h):h}else return h}),a=h=>{if(o.columns[e.colIndex].mask,o.columns[e.colIndex].modalComponent){const w=l.value.getBoundingClientRect();o.modal.visible=!0,o.modal.colIndex=e.colIndex,o.modal.rowIndex=e.rowIndex,o.modal.parent=l.value,o.modal.top=w.top+w.height,o.modal.left=w.left,o.modal.width=f.value,o.modal.component=o.columns[e.colIndex].modalComponent,o.modal.componentProps=o.columns[e.colIndex].modalComponentProps}};if(e.addNavigation){let h={...N,"keydown.f2":a,"keydown.alt.up":a,"keydown.alt.down":a,"keydown.alt.left":a,"keydown.alt.right":a};typeof e.addNavigation=="object"&&(h={...h,...e.addNavigation}),W([{selectors:l,handlers:h}])}const c=n.computed(()=>o.columns[e.colIndex].align||"center"),f=n.computed(()=>o.columns[e.colIndex].width||"40ch"),m=()=>{l.value&&(s.value=l.value.textContent)},u=()=>{l.value&&l.value.textContent!==s.value&&(s.value=l.value.textContent,l.value.dispatchEvent(new Event("change")),r.value=!0,o.columns[e.colIndex].format||o.setCellData(e.rowIndex,e.colIndex,s.value))},d=(h,w)=>w&&h===0&&w>0?`${w}ch`:"inherit",p={textAlign:c.value,width:f.value,backgroundColor:r.value?"var(--cell-modified-color)":"inherit",fontWeight:r.value?"bold":"inherit",paddingLeft:d(e.colIndex,(g=o.display[e.rowIndex])==null?void 0:g.indent)};return(h,w)=>(n.openBlock(),n.createElementBlock("td",{ref_key:"cell",ref:l,"data-colindex":h.colIndex,"data-rowindex":h.rowIndex,"data-editable":n.unref(o).columns[h.colIndex].edit,contenteditable:n.unref(o).columns[h.colIndex].edit,tabindex:h.tabIndex,spellcheck:!1,style:p,onFocus:m,onPaste:u,onBlur:u,onInput:u,onClick:a,onMousedown:a},[n.unref(o).columns[h.colIndex].cellComponent?(n.openBlock(),n.createBlock(n.resolveDynamicComponent(n.unref(o).columns[h.colIndex].cellComponent),n.mergeProps({key:0,value:i.value},n.unref(o).columns[h.colIndex].cellComponentProps),null,16,["value"])):(n.openBlock(),n.createElementBlock("span",Ie,n.toDisplayString(i.value),1))],40,Ee))}}),E=(t,e)=>{const o=t.__vccOpts||t;for(const[l,s]of e)o[l]=s;return o},H=E(_e,[["__scopeId","data-v-f3597719"]]),Ce=["tabindex"],Se=["tabindex"],Ae=["colspan"],K=E(n.defineComponent({__name:"AExpansionRow",props:{row:{},rowIndex:{},tableid:{},tabIndex:{default:-1},addNavigation:{type:[Boolean,Object]}},setup(t){const e=t,o=n.inject(e.tableid),l=n.ref(null),s=n.ref(null),r=()=>o.display[e.rowIndex].expanded?"▼":"►";if(e.addNavigation){const i={"keydown.control.g":a=>{a.stopPropagation(),a.preventDefault(),o.toggleRowExpand(e.rowIndex)}};typeof e.addNavigation=="object"&&Object.assign(i,e.addNavigation),W([{selectors:l,handlers:i}])}return(i,a)=>(n.openBlock(),n.createElementBlock(n.Fragment,null,[n.createElementVNode("tr",n.mergeProps(i.$attrs,{ref_key:"rowEl",ref:l,tabindex:i.tabIndex,class:"expandable-row"}),[n.createElementVNode("td",{tabIndex:-1,onClick:a[0]||(a[0]=c=>n.unref(o).toggleRowExpand(i.rowIndex)),class:"row-index"},n.toDisplayString(r()),1),n.renderSlot(i.$slots,"row",{},void 0,!0)],16,Ce),n.unref(o).display[e.rowIndex].expanded?(n.openBlock(),n.createElementBlock("tr",{key:0,ref_key:"rowExpanded",ref:s,tabindex:i.tabIndex,class:"expanded-row"},[n.createElementVNode("td",{tabIndex:-1,colspan:n.unref(o).columns.length+1,class:"expanded-row-content"},[n.renderSlot(i.$slots,"content",{},void 0,!0)],8,Ae)],8,Se)):n.createCommentVNode("",!0)],64))}}),[["__scopeId","data-v-62bfcc94"]]),De=["tabindex"],Te={key:0,tabIndex:-1,class:"list-index"},V=E(n.defineComponent({__name:"ARow",props:{row:{},rowIndex:{},tableid:{},tabIndex:{default:-1},addNavigation:{type:[Boolean,Object],default:!1}},setup(t){n.useCssVars(c=>({"30f057ab":n.unref(s)}));const e=t,o=n.inject(e.tableid),l=n.ref(null),s=o.numberedRowWidth.value,r=()=>o.config.view!=="tree"?"":o.display[e.rowIndex].isRoot||o.display[e.rowIndex].isParent?o.display[e.rowIndex].childrenOpen?"-":"+":"",i=n.computed(()=>o.config.view!=="tree"||o.display[e.rowIndex].isRoot||o.display[e.rowIndex].open),a=c=>{o.toggleRowExpand(c)};if(e.addNavigation){let c=N;typeof e.addNavigation=="object"&&(c={...c,...e.addNavigation}),W([{selectors:l,handlers:c}])}return(c,f)=>n.withDirectives((n.openBlock(),n.createElementBlock("tr",{ref_key:"rowEl",ref:l,tabindex:c.tabIndex,class:"table-row"},[n.renderSlot(c.$slots,"index",{},()=>[n.unref(o).config.view==="list"?(n.openBlock(),n.createElementBlock("td",Te,n.toDisplayString(c.rowIndex+1),1)):n.unref(o).config.view==="tree"?(n.openBlock(),n.createElementBlock("td",{key:1,tabIndex:-1,class:"tree-index",onClick:f[0]||(f[0]=m=>a(c.rowIndex))},n.toDisplayString(r()),1)):n.createCommentVNode("",!0)],!0),n.renderSlot(c.$slots,"default",{},void 0,!0)],8,De)),[[n.vShow,i.value]])}}),[["__scopeId","data-v-762810eb"]]);let D;const $e=new Uint8Array(16);function Be(){if(!D&&(D=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!D))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return D($e)}const y=[];for(let t=0;t<256;++t)y.push((t+256).toString(16).slice(1));function Re(t,e=0){return y[t[e+0]]+y[t[e+1]]+y[t[e+2]]+y[t[e+3]]+"-"+y[t[e+4]]+y[t[e+5]]+"-"+y[t[e+6]]+y[t[e+7]]+"-"+y[t[e+8]]+y[t[e+9]]+"-"+y[t[e+10]]+y[t[e+11]]+y[t[e+12]]+y[t[e+13]]+y[t[e+14]]+y[t[e+15]]}const ee={randomUUID:typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function te(t,e,o){if(ee.randomUUID&&!e&&!t)return ee.randomUUID();t=t||{};const l=t.random||(t.rng||Be)();if(l[6]=l[6]&15|64,l[8]=l[8]&63|128,e){o=o||0;for(let s=0;s<16;++s)e[o+s]=l[s];return e}return Re(l)}function ne(t){return n.getCurrentScope()?(n.onScopeDispose(t),!0):!1}function I(t){return typeof t=="function"?t():n.unref(t)}const oe=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const Oe=Object.prototype.toString,Le=t=>Oe.call(t)==="[object Object]",_=()=>{},v=Pe();function Pe(){var t,e;return oe&&((t=window==null?void 0:window.navigator)==null?void 0:t.userAgent)&&(/iP(ad|hone|od)/.test(window.navigator.userAgent)||((e=window==null?void 0:window.navigator)==null?void 0:e.maxTouchPoints)>2&&/iPad|Macintosh/.test(window==null?void 0:window.navigator.userAgent))}const le={mounted:"mounted",updated:"updated",unmounted:"unmounted"};function Me(...t){if(t.length!==1)return n.toRef(...t);const e=t[0];return typeof e=="function"?n.readonly(n.customRef(()=>({get:e,set:_}))):n.ref(e)}function C(t){var e;const o=I(t);return(e=o==null?void 0:o.$el)!=null?e:o}const re=oe?window:void 0;function T(...t){let e,o,l,s;if(typeof t[0]=="string"||Array.isArray(t[0])?([o,l,s]=t,e=re):[e,o,l,s]=t,!e)return _;Array.isArray(o)||(o=[o]),Array.isArray(l)||(l=[l]);const r=[],i=()=>{r.forEach(m=>m()),r.length=0},a=(m,u,d,p)=>(m.addEventListener(u,d,p),()=>m.removeEventListener(u,d,p)),c=n.watch(()=>[C(e),I(s)],([m,u])=>{if(i(),!m)return;const d=Le(u)?{...u}:u;r.push(...o.flatMap(p=>l.map(g=>a(m,p,g,d))))},{immediate:!0,flush:"post"}),f=()=>{c(),i()};return ne(f),f}let ae=!1;function ie(t,e,o={}){const{window:l=re,ignore:s=[],capture:r=!0,detectIframe:i=!1}=o;if(!l)return _;v&&!ae&&(ae=!0,Array.from(l.document.body.children).forEach(d=>d.addEventListener("click",_)),l.document.documentElement.addEventListener("click",_));let a=!0;const c=d=>s.some(p=>{if(typeof p=="string")return Array.from(l.document.querySelectorAll(p)).some(g=>g===d.target||d.composedPath().includes(g));{const g=C(p);return g&&(d.target===g||d.composedPath().includes(g))}}),m=[T(l,"click",d=>{const p=C(t);if(!(!p||p===d.target||d.composedPath().includes(p))){if(d.detail===0&&(a=!c(d)),!a){a=!0;return}e(d)}},{passive:!0,capture:r}),T(l,"pointerdown",d=>{const p=C(t);a=!c(d)&&!!(p&&!d.composedPath().includes(p))},{passive:!0}),i&&T(l,"blur",d=>{setTimeout(()=>{var p;const g=C(t);((p=l.document.activeElement)==null?void 0:p.tagName)==="IFRAME"&&!(g!=null&&g.contains(l.document.activeElement))&&e(d)},0)})].filter(Boolean);return()=>m.forEach(d=>d())}const je={[le.mounted](t,e){const o=!e.modifiers.bubble;if(typeof e.value=="function")t.__onClickOutside_stop=ie(t,e.value,{capture:o});else{const[l,s]=e.value;t.__onClickOutside_stop=ie(t,l,Object.assign({capture:o},s))}},[le.unmounted](t){t.__onClickOutside_stop()}};function U(t){return typeof Window<"u"&&t instanceof Window?t.document.documentElement:typeof Document<"u"&&t instanceof Document?t.documentElement:t}function se(t){const e=window.getComputedStyle(t);if(e.overflowX==="scroll"||e.overflowY==="scroll"||e.overflowX==="auto"&&t.clientWidth<t.scrollWidth||e.overflowY==="auto"&&t.clientHeight<t.scrollHeight)return!0;{const o=t.parentNode;return!o||o.tagName==="BODY"?!1:se(o)}}function Ne(t){const e=t||window.event,o=e.target;return se(o)?!1:e.touches.length>1?!0:(e.preventDefault&&e.preventDefault(),!1)}const $=new WeakMap;function We(t,e=!1){const o=n.ref(e);let l=null;n.watch(Me(t),i=>{const a=U(I(i));if(a){const c=a;$.get(c)||$.set(c,c.style.overflow),o.value&&(c.style.overflow="hidden")}},{immediate:!0});const s=()=>{const i=U(I(t));!i||o.value||(v&&(l=T(i,"touchmove",a=>{Ne(a)},{passive:!1})),i.style.overflow="hidden",o.value=!0)},r=()=>{var i;const a=U(I(t));!a||!o.value||(v&&(l==null||l()),a.style.overflow=(i=$.get(a))!=null?i:"",$.delete(a),o.value=!1)};return ne(r),n.computed({get(){return o.value},set(i){i?s():r()}})}function He(){let t=!1;const e=n.ref(!1);return(o,l)=>{if(e.value=l.value,t)return;t=!0;const s=We(o,l.value);n.watch(e,r=>s.value=r)}}He();class ce{constructor(e,o,l,s,r,i){this.id=e||te(),this.rows=l,this.columns=n.reactive(o),this.config=n.reactive(s),this.table=r||n.reactive(this.createTableObject()),this.display=this.createDisplayObject(i),this.modal=n.reactive({visible:!1})}createTableObject(){const e={};for(const[o,l]of this.columns.entries())for(const[s,r]of this.rows.entries())e[`${o}:${s}`]=r[l.name];return e}createDisplayObject(e){const o=[Object.assign({},{modified:!1})];if(e&&"0:0"in e)return e;const l=new Set;for(let s=this.rows.length-1;s>=0;s--){const r=this.rows[s];r.parent&&l.add(r.parent),o[s]={childrenOpen:!1,expanded:!1,indent:r.indent||null,isParent:l.has(s),isRoot:r.parent===null||r.parent===void 0,modified:!1,open:r.parent===null||r.parent===void 0,parent:r.parent}}return n.reactive(o)}get zeroColumn(){return["list","tree","list-expansion"].includes(this.config.view)}get numberedRowWidth(){return n.computed(()=>String(Math.ceil(this.rows.length/100)+1)+"ch")}cellData(e,o){return this.table[`${e}:${o}`]}setCellData(e,o,l){this.table[`${o}:${e}`]!==l&&(this.display[e].modified=!0),this.table[`${o}:${e}`]=l;const s=this.columns[o];return this.rows[e][s.name]=l,this.table[`${o}:${e}`]}toggleRowExpand(e){if(this.config.view==="tree"){this.display[e].childrenOpen=!this.display[e].childrenOpen;for(let o=this.rows.length-1;o>=0;o--)this.display[o].parent===e&&(this.display[o].open=!this.display[o].open,this.display[o].childrenOpen&&this.toggleRowExpand(o))}else this.config.view==="list-expansion"&&(this.display[e].expanded=!this.display[e].expanded)}}const Ve={key:0,id:"resizable"},ve={class:"atable-header-row",tabindex:"-1"},Ue={key:0,id:"header-index"},F=E(n.defineComponent({__name:"ATableHeader",props:{columns:{},config:{},tableid:{}},setup(t){n.useCssVars(r=>({"0c61081d":n.unref(l)}));const e=t,o=n.inject(e.tableid),l=o.numberedRowWidth.value,s=r=>({minWidth:r.width||"40ch",textAlign:r.align||"center",width:o.config.fullWidth?"auto":null});return(r,i)=>r.columns.length?(n.openBlock(),n.createElementBlock("thead",Ve,[n.createElementVNode("tr",ve,[n.unref(o).zeroColumn?(n.openBlock(),n.createElementBlock("th",Ue)):n.createCommentVNode("",!0),(n.openBlock(!0),n.createElementBlock(n.Fragment,null,n.renderList(r.columns,(a,c)=>(n.openBlock(),n.createElementBlock("th",{key:c,tabindex:"-1",style:n.normalizeStyle(s(a))},[n.renderSlot(r.$slots,"default",{},()=>[n.createTextVNode(n.toDisplayString(a.label||String.fromCharCode(c+97).toUpperCase()),1)],!0)],4))),128))])])):n.createCommentVNode("",!0)}}),[["__scopeId","data-v-b0bfa37f"]]),z=E(n.defineComponent({__name:"ATableModal",props:{colIndex:{},rowIndex:{},tableid:{}},setup(t){const e=t;n.inject(e.tableid);const o=l=>{l.stopPropagation()};return(l,s)=>(n.openBlock(),n.createElementBlock("div",{ref:"amodal",class:"amodal",tabindex:"-1",onClick:o,onInput:o},[n.renderSlot(l.$slots,"default",{},void 0,!0)],544))}}),[["__scopeId","data-v-10a48b2a"]]),de=E(n.defineComponent({__name:"ATable",props:{id:{},modelValue:{},columns:{},rows:{default:()=>[]},config:{default:()=>new Object},tableid:{}},emits:["update:modelValue"],setup(t,{emit:e}){const o=t,l=e;let s=o.modelValue?o.modelValue:o.rows,r=new ce(o.id,o.columns,s,o.config);n.provide(r.id,r),n.watch(()=>r.rows,a=>{l("update:modelValue",a)},{deep:!0});const i=a=>{var c;a.target instanceof Node&&(c=r.modal.parent)!=null&&c.contains(a.target)||r.modal.visible&&(r.modal.visible=!1)};return window.addEventListener("keydown",async a=>{if(a.key==="Escape"&&r.modal.visible){r.modal.visible=!1;const c=r.modal.parent;c&&(await n.nextTick(),c.focus())}}),(a,c)=>n.withDirectives((n.openBlock(),n.createElementBlock("table",{class:"atable",style:n.normalizeStyle({width:n.unref(r).config.fullWidth?"100%":"auto"})},[n.renderSlot(a.$slots,"header",{data:n.unref(r)},()=>[n.createVNode(F,{columns:n.unref(r).columns,config:n.unref(r).config,tableid:n.unref(r).id},null,8,["columns","config","tableid"])],!0),n.createElementVNode("tbody",null,[n.renderSlot(a.$slots,"body",{data:n.unref(r)},()=>[(n.openBlock(!0),n.createElementBlock(n.Fragment,null,n.renderList(n.unref(r).rows,(f,m)=>(n.openBlock(),n.createBlock(V,{key:f.id||n.unref(te)(),row:f,rowIndex:m,tableid:n.unref(r).id},{default:n.withCtx(()=>[(n.openBlock(!0),n.createElementBlock(n.Fragment,null,n.renderList(n.unref(r).columns,(u,d)=>(n.openBlock(),n.createBlock(H,{key:`${d}:${m}`,tableid:n.unref(r).id,col:u,spellcheck:"false",rowIndex:m,colIndex:d+(n.unref(r).zeroColumn?0:-1),component:u.cellComponent,style:n.normalizeStyle({textAlign:(u==null?void 0:u.align)||"center",minWidth:(u==null?void 0:u.width)||"40ch",width:n.unref(r).config.fullWidth?"auto":null})},null,8,["tableid","col","rowIndex","colIndex","component","style"]))),128))]),_:2},1032,["row","rowIndex","tableid"]))),128))],!0)]),n.renderSlot(a.$slots,"footer",{data:n.unref(r)},void 0,!0),n.renderSlot(a.$slots,"modal",{data:n.unref(r)},()=>[n.withDirectives(n.createVNode(z,{colIndex:n.unref(r).modal.colIndex,rowIndex:n.unref(r).modal.rowIndex,tableid:n.unref(r).id,style:n.normalizeStyle({left:n.unref(r).modal.left+"px",top:n.unref(r).modal.top+"px",maxWidth:n.unref(r).modal.width+"px"})},{default:n.withCtx(()=>[(n.openBlock(),n.createBlock(n.resolveDynamicComponent(n.unref(r).modal.component),n.mergeProps({key:`${n.unref(r).modal.rowIndex}:${n.unref(r).modal.colIndex}`,colIndex:n.unref(r).modal.colIndex,rowIndex:n.unref(r).modal.rowIndex,tableid:n.unref(r).id},n.unref(r).modal.componentProps),null,16,["colIndex","rowIndex","tableid"]))]),_:1},8,["colIndex","rowIndex","tableid","style"]),[[n.vShow,n.unref(r).modal.visible]])],!0)],4)),[[n.unref(je),i]])}}),[["__scopeId","data-v-f0f87ebf"]]);function Fe(t){t.component("ACell",H),t.component("AExpansionRow",K),t.component("ARow",V),t.component("ATable",de),t.component("ATableHeader",F),t.component("ATableModal",z)}b.ACell=H,b.AExpansionRow=K,b.ARow=V,b.ATable=de,b.ATableHeader=F,b.ATableModal=z,b.TableDataStore=ce,b.install=Fe,Object.defineProperty(b,Symbol.toStringTag,{value:"Module"})});
|
|
1
|
+
(function(b,n){typeof exports=="object"&&typeof module<"u"?n(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],n):(b=typeof globalThis<"u"?globalThis:b||self,n(b["@stonecrop/atable"]={},b.Vue))})(this,function(b,n){"use strict";function de(t){return n.getCurrentScope()?(n.onScopeDispose(t),!0):!1}function z(t){return typeof t=="function"?t():n.unref(t)}const fe=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const ue=Object.prototype.toString,pe=t=>ue.call(t)==="[object Object]",me=()=>{};function S(t){var e;const o=z(t);return(e=o==null?void 0:o.$el)!=null?e:o}const $=fe?window:void 0;function R(...t){let e,o,l,a;if(typeof t[0]=="string"||Array.isArray(t[0])?([o,l,a]=t,e=$):[e,o,l,a]=t,!e)return me;Array.isArray(o)||(o=[o]),Array.isArray(l)||(l=[l]);const r=[],s=()=>{r.forEach(m=>m()),r.length=0},i=(m,u,d,p)=>(m.addEventListener(u,d,p),()=>m.removeEventListener(u,d,p)),c=n.watch(()=>[S(e),z(a)],([m,u])=>{if(s(),!m)return;const d=pe(u)?{...u}:u;r.push(...o.flatMap(p=>l.map(g=>i(m,p,g,d))))},{immediate:!0,flush:"post"}),f=()=>{c(),s()};return de(f),f}function he(t={}){var e;const{window:o=$,deep:l=!0}=t,a=(e=t.document)!=null?e:o==null?void 0:o.document,r=()=>{var c;let f=a==null?void 0:a.activeElement;if(l)for(;f!=null&&f.shadowRoot;)f=(c=f==null?void 0:f.shadowRoot)==null?void 0:c.activeElement;return f},s=n.ref(),i=()=>{s.value=r()};return o&&(R(o,"blur",c=>{c.relatedTarget===null&&i()},!0),R(o,"focus",i,!0)),i(),s}function we(t,e={}){const o=he(e),l=n.computed(()=>S(t));return{focused:n.computed(()=>l.value&&o.value?l.value.contains(o.value):!1)}}function ge(t,{window:e=$,scrollTarget:o}={}){const l=n.ref(!1),a=()=>{if(!e)return;const r=e.document,s=S(t);if(!s)l.value=!1;else{const i=s.getBoundingClientRect();l.value=i.top<=(e.innerHeight||r.documentElement.clientHeight)&&i.left<=(e.innerWidth||r.documentElement.clientWidth)&&i.bottom>=0&&i.right>=0}};return n.watch(()=>S(t),()=>a(),{immediate:!0,flush:"post"}),e&&R(o||e,"scroll",a,{capture:!1,passive:!0}),l}const k=t=>{let e=ge(t).value;return e=e&&t.offsetHeight>0,e},x=t=>t.tabIndex>=0,q=t=>{const e=t.target;return L(e)},L=t=>{var e;let o;if(t instanceof HTMLTableCellElement){const l=(e=t.parentElement)==null?void 0:e.previousElementSibling;if(l){const a=Array.from(l.children)[t.cellIndex];a&&(o=a)}}else if(t instanceof HTMLTableRowElement){const l=t.previousElementSibling;l&&(o=l)}return o&&(!x(o)||!k(o))?L(o):o},ye=t=>{var e;const o=t.target;let l;if(o instanceof HTMLTableCellElement){const a=(e=o.parentElement)==null?void 0:e.parentElement;if(a){const r=a.firstElementChild.children[o.cellIndex];r&&(l=r)}}else if(o instanceof HTMLTableRowElement){const a=o.parentElement;if(a){const r=a.firstElementChild;r&&(l=r)}}return l&&(!x(l)||!k(l))?O(l):l},G=t=>{const e=t.target;return O(e)},O=t=>{var e;let o;if(t instanceof HTMLTableCellElement){const l=(e=t.parentElement)==null?void 0:e.nextElementSibling;if(l){const a=Array.from(l.children)[t.cellIndex];a&&(o=a)}}else if(t instanceof HTMLTableRowElement){const l=t.nextElementSibling;l&&(o=l)}return o&&(!x(o)||!k(o))?O(o):o},be=t=>{var e;const o=t.target;let l;if(o instanceof HTMLTableCellElement){const a=(e=o.parentElement)==null?void 0:e.parentElement;if(a){const r=a.lastElementChild.children[o.cellIndex];r&&(l=r)}}else if(o instanceof HTMLTableRowElement){const a=o.parentElement;if(a){const r=a.lastElementChild;r&&(l=r)}}return l&&(!x(l)||!k(l))?L(l):l},Y=t=>{const e=t.target;return P(e)},P=t=>{var e;let o;if(t.previousElementSibling)o=t.previousElementSibling;else{const l=(e=t.parentElement)==null?void 0:e.previousElementSibling;o=l==null?void 0:l.lastElementChild}return o&&(!x(o)||!k(o))?P(o):o},X=t=>{const e=t.target;return M(e)},M=t=>{var e;let o;if(t.nextElementSibling)o=t.nextElementSibling;else{const l=(e=t.parentElement)==null?void 0:e.nextElementSibling;o=l==null?void 0:l.firstElementChild}return o&&(!x(o)||!k(o))?M(o):o},J=t=>{const e=t.target.parentElement.firstElementChild;return e&&(!x(e)||!k(e))?M(e):e},Q=t=>{const e=t.target.parentElement.lastElementChild;return e&&(!x(e)||!k(e))?P(e):e},A=["alt","control","shift","meta"],ke={ArrowUp:"up",ArrowDown:"down",ArrowLeft:"left",ArrowRight:"right"},j={"keydown.up":t=>{const e=q(t);e&&(t.preventDefault(),t.stopPropagation(),e.focus())},"keydown.down":t=>{const e=G(t);e&&(t.preventDefault(),t.stopPropagation(),e.focus())},"keydown.left":t=>{const e=Y(t);t.preventDefault(),t.stopPropagation(),e&&e.focus()},"keydown.right":t=>{const e=X(t);t.preventDefault(),t.stopPropagation(),e&&e.focus()},"keydown.control.up":t=>{const e=ye(t);e&&(t.preventDefault(),t.stopPropagation(),e.focus())},"keydown.control.down":t=>{const e=be(t);e&&(t.preventDefault(),t.stopPropagation(),e.focus())},"keydown.control.left":t=>{const e=J(t);e&&(t.preventDefault(),t.stopPropagation(),e.focus())},"keydown.control.right":t=>{const e=Q(t);e&&(t.preventDefault(),t.stopPropagation(),e.focus())},"keydown.end":t=>{const e=Q(t);e&&(t.preventDefault(),t.stopPropagation(),e.focus())},"keydown.enter":t=>{if(t.target instanceof HTMLTableCellElement){t.preventDefault(),t.stopPropagation();const e=G(t);e&&e.focus()}},"keydown.shift.enter":t=>{if(t.target instanceof HTMLTableCellElement){t.preventDefault(),t.stopPropagation();const e=q(t);e&&e.focus()}},"keydown.home":t=>{const e=J(t);e&&(t.preventDefault(),t.stopPropagation(),e.focus())},"keydown.tab":t=>{const e=X(t);e&&(t.preventDefault(),t.stopPropagation(),e.focus())},"keydown.shift.tab":t=>{const e=Y(t);e&&(t.preventDefault(),t.stopPropagation(),e.focus())}};function N(t){const e=s=>{let i=null;return s.parent&&(typeof s.parent=="string"?i=document.querySelector(s.parent):s.parent instanceof HTMLElement?i=s.parent:i=s.parent.value),i},o=s=>{const i=e(s);let c=[];if(typeof s.selectors=="string")c=i?Array.from(i.querySelectorAll(s.selectors)):Array.from(document.querySelectorAll(s.selectors));else if(Array.isArray(s.selectors))for(const f of s.selectors)f instanceof HTMLElement?c.push(f):c.push(f.$el);else if(s.selectors instanceof HTMLElement)c.push(s.selectors);else if(Array.isArray(s.selectors.value))for(const f of s.selectors.value)f instanceof HTMLElement?c.push(f):c.push(f.$el);else c.push(s.selectors.value);return c},l=s=>{const i=e(s);let c=[];return s.selectors?c=o(s):i&&(c=Array.from(i.children).filter(f=>x(f)&&k(f))),c},a=s=>i=>{const c=ke[i.key]||i.key.toLowerCase();if(A.includes(c))return;const f=s.handlers||j;for(const m of Object.keys(f)){const[u,...d]=m.split(".");if(u==="keydown"&&d.includes(c)){const p=f[m],g=d.filter(w=>A.includes(w)),h=A.some(w=>{const B=w.charAt(0).toUpperCase()+w.slice(1);return i.getModifierState(B)});if(g.length>0){if(h){for(const w of A)if(d.includes(w)){const B=w.charAt(0).toUpperCase()+w.slice(1);i.getModifierState(B)&&p(i)}}}else h||p(i)}}},r=[];n.onMounted(()=>{for(const s of t){const i=e(s),c=l(s),f=a(s),m=i?[i]:c;for(const u of m){const{focused:d}=we(n.ref(u)),p=n.watch(d,g=>{g?u.addEventListener("keydown",f):u.removeEventListener("keydown",f)});r.push(p)}}}),n.onBeforeUnmount(()=>{for(const s of r)s()})}const xe=["data-colindex","data-rowindex","data-editable","contenteditable","tabindex"],Ee={key:1},H=n.defineComponent({__name:"ACell",props:{colIndex:{},rowIndex:{},tableid:{},addNavigation:{type:[Boolean,Object],default:!0},tabIndex:{default:0}},setup(t){var g;const e=t,o=n.inject(e.tableid),l=n.ref(null),a=n.ref(""),r=n.ref(!1),s=n.computed(()=>{const h=o.cellData(e.colIndex,e.rowIndex);if(o.columns[e.colIndex].format){const w=o.columns[e.colIndex].format;return typeof w=="function"?w(h):typeof w=="string"?Function(`"use strict";return (${w})`)()(h):h}else return h}),i=h=>{if(o.columns[e.colIndex].mask,o.columns[e.colIndex].modalComponent){const w=l.value.getBoundingClientRect();o.modal.visible=!0,o.modal.colIndex=e.colIndex,o.modal.rowIndex=e.rowIndex,o.modal.parent=l.value,o.modal.top=w.top+w.height,o.modal.left=w.left,o.modal.width=f.value,o.modal.component=o.columns[e.colIndex].modalComponent,o.modal.componentProps=o.columns[e.colIndex].modalComponentProps}};if(e.addNavigation){let h={...j,"keydown.f2":i,"keydown.alt.up":i,"keydown.alt.down":i,"keydown.alt.left":i,"keydown.alt.right":i};typeof e.addNavigation=="object"&&(h={...h,...e.addNavigation}),N([{selectors:l,handlers:h}])}const c=n.computed(()=>o.columns[e.colIndex].align||"center"),f=n.computed(()=>o.columns[e.colIndex].width||"40ch"),m=()=>{l.value&&(a.value=l.value.textContent)},u=()=>{l.value&&l.value.textContent!==a.value&&(a.value=l.value.textContent,l.value.dispatchEvent(new Event("change")),r.value=!0,o.columns[e.colIndex].format||o.setCellData(e.rowIndex,e.colIndex,a.value))},d=(h,w)=>w&&h===0&&w>0?`${w}ch`:"inherit",p={textAlign:c.value,width:f.value,backgroundColor:r.value?"var(--cell-modified-color)":"inherit",fontWeight:r.value?"bold":"inherit",paddingLeft:d(e.colIndex,(g=o.display[e.rowIndex])==null?void 0:g.indent)};return(h,w)=>(n.openBlock(),n.createElementBlock("td",{ref_key:"cell",ref:l,"data-colindex":h.colIndex,"data-rowindex":h.rowIndex,"data-editable":n.unref(o).columns[h.colIndex].edit,contenteditable:n.unref(o).columns[h.colIndex].edit,tabindex:h.tabIndex,spellcheck:!1,style:p,onFocus:m,onPaste:u,onBlur:u,onInput:u,onClick:i,onMousedown:i,class:"atable__cell"},[n.unref(o).columns[h.colIndex].cellComponent?(n.openBlock(),n.createBlock(n.resolveDynamicComponent(n.unref(o).columns[h.colIndex].cellComponent),n.mergeProps({key:0,value:s.value},n.unref(o).columns[h.colIndex].cellComponentProps),null,16,["value"])):(n.openBlock(),n.createElementBlock("span",Ee,n.toDisplayString(s.value),1))],40,xe))}}),Ie=["tabindex"],Ce=["tabindex"],Se=["colspan"],Z=n.defineComponent({__name:"AExpansionRow",props:{row:{},rowIndex:{},tableid:{},tabIndex:{default:-1},addNavigation:{type:[Boolean,Object]}},setup(t){const e=t,o=n.inject(e.tableid),l=n.ref(null),a=n.ref(null),r=()=>o.display[e.rowIndex].expanded?"▼":"►";if(e.addNavigation){const s={"keydown.control.g":i=>{i.stopPropagation(),i.preventDefault(),o.toggleRowExpand(e.rowIndex)}};typeof e.addNavigation=="object"&&Object.assign(s,e.addNavigation),N([{selectors:l,handlers:s}])}return(s,i)=>(n.openBlock(),n.createElementBlock(n.Fragment,null,[n.createElementVNode("tr",n.mergeProps(s.$attrs,{ref_key:"rowEl",ref:l,tabindex:s.tabIndex,class:"expandable-row"}),[n.createElementVNode("td",{tabIndex:-1,onClick:i[0]||(i[0]=c=>n.unref(o).toggleRowExpand(s.rowIndex)),class:"row-index"},n.toDisplayString(r()),1),n.renderSlot(s.$slots,"row")],16,Ie),n.unref(o).display[e.rowIndex].expanded?(n.openBlock(),n.createElementBlock("tr",{key:0,ref_key:"rowExpanded",ref:a,tabindex:s.tabIndex,class:"expanded-row"},[n.createElementVNode("td",{tabIndex:-1,colspan:n.unref(o).columns.length+1,class:"expanded-row-content"},[n.renderSlot(s.$slots,"content")],8,Se)],8,Ce)):n.createCommentVNode("",!0)],64))}}),Ae=["tabindex"],De={key:0,tabIndex:-1,class:"list-index"},W=n.defineComponent({__name:"ARow",props:{row:{},rowIndex:{},tableid:{},tabIndex:{default:-1},addNavigation:{type:[Boolean,Object],default:!1}},setup(t){const e=t,o=n.inject(e.tableid),l=n.ref(null);o.numberedRowWidth.value;const a=()=>o.config.view!=="tree"?"":o.display[e.rowIndex].isRoot||o.display[e.rowIndex].isParent?o.display[e.rowIndex].childrenOpen?"-":"+":"",r=n.computed(()=>o.config.view!=="tree"||o.display[e.rowIndex].isRoot||o.display[e.rowIndex].open),s=i=>{o.toggleRowExpand(i)};if(e.addNavigation){let i=j;typeof e.addNavigation=="object"&&(i={...i,...e.addNavigation}),N([{selectors:l,handlers:i}])}return(i,c)=>n.withDirectives((n.openBlock(),n.createElementBlock("tr",{ref_key:"rowEl",ref:l,tabindex:i.tabIndex,class:"table-row"},[n.renderSlot(i.$slots,"index",{},()=>[n.unref(o).config.view==="list"?(n.openBlock(),n.createElementBlock("td",De,n.toDisplayString(i.rowIndex+1),1)):n.unref(o).config.view==="tree"?(n.openBlock(),n.createElementBlock("td",{key:1,tabIndex:-1,class:"tree-index",onClick:c[0]||(c[0]=f=>s(i.rowIndex))},n.toDisplayString(a()),1)):n.createCommentVNode("",!0)]),n.renderSlot(i.$slots,"default")],8,Ae)),[[n.vShow,r.value]])}});let D;const Te=new Uint8Array(16);function _e(){if(!D&&(D=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!D))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return D(Te)}const y=[];for(let t=0;t<256;++t)y.push((t+256).toString(16).slice(1));function Be(t,e=0){return y[t[e+0]]+y[t[e+1]]+y[t[e+2]]+y[t[e+3]]+"-"+y[t[e+4]]+y[t[e+5]]+"-"+y[t[e+6]]+y[t[e+7]]+"-"+y[t[e+8]]+y[t[e+9]]+"-"+y[t[e+10]]+y[t[e+11]]+y[t[e+12]]+y[t[e+13]]+y[t[e+14]]+y[t[e+15]]}const K={randomUUID:typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function ee(t,e,o){if(K.randomUUID&&!e&&!t)return K.randomUUID();t=t||{};const l=t.random||(t.rng||_e)();if(l[6]=l[6]&15|64,l[8]=l[8]&63|128,e){o=o||0;for(let a=0;a<16;++a)e[o+a]=l[a];return e}return Be(l)}function te(t){return n.getCurrentScope()?(n.onScopeDispose(t),!0):!1}function E(t){return typeof t=="function"?t():n.unref(t)}const ne=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const $e=Object.prototype.toString,Re=t=>$e.call(t)==="[object Object]",I=()=>{},V=Le();function Le(){var t,e;return ne&&((t=window==null?void 0:window.navigator)==null?void 0:t.userAgent)&&(/iP(ad|hone|od)/.test(window.navigator.userAgent)||((e=window==null?void 0:window.navigator)==null?void 0:e.maxTouchPoints)>2&&/iPad|Macintosh/.test(window==null?void 0:window.navigator.userAgent))}const oe={mounted:"mounted",updated:"updated",unmounted:"unmounted"};function Oe(...t){if(t.length!==1)return n.toRef(...t);const e=t[0];return typeof e=="function"?n.readonly(n.customRef(()=>({get:e,set:I}))):n.ref(e)}function C(t){var e;const o=E(t);return(e=o==null?void 0:o.$el)!=null?e:o}const le=ne?window:void 0;function T(...t){let e,o,l,a;if(typeof t[0]=="string"||Array.isArray(t[0])?([o,l,a]=t,e=le):[e,o,l,a]=t,!e)return I;Array.isArray(o)||(o=[o]),Array.isArray(l)||(l=[l]);const r=[],s=()=>{r.forEach(m=>m()),r.length=0},i=(m,u,d,p)=>(m.addEventListener(u,d,p),()=>m.removeEventListener(u,d,p)),c=n.watch(()=>[C(e),E(a)],([m,u])=>{if(s(),!m)return;const d=Re(u)?{...u}:u;r.push(...o.flatMap(p=>l.map(g=>i(m,p,g,d))))},{immediate:!0,flush:"post"}),f=()=>{c(),s()};return te(f),f}let re=!1;function ie(t,e,o={}){const{window:l=le,ignore:a=[],capture:r=!0,detectIframe:s=!1}=o;if(!l)return I;V&&!re&&(re=!0,Array.from(l.document.body.children).forEach(d=>d.addEventListener("click",I)),l.document.documentElement.addEventListener("click",I));let i=!0;const c=d=>a.some(p=>{if(typeof p=="string")return Array.from(l.document.querySelectorAll(p)).some(g=>g===d.target||d.composedPath().includes(g));{const g=C(p);return g&&(d.target===g||d.composedPath().includes(g))}}),m=[T(l,"click",d=>{const p=C(t);if(!(!p||p===d.target||d.composedPath().includes(p))){if(d.detail===0&&(i=!c(d)),!i){i=!0;return}e(d)}},{passive:!0,capture:r}),T(l,"pointerdown",d=>{const p=C(t);i=!c(d)&&!!(p&&!d.composedPath().includes(p))},{passive:!0}),s&&T(l,"blur",d=>{setTimeout(()=>{var p;const g=C(t);((p=l.document.activeElement)==null?void 0:p.tagName)==="IFRAME"&&!(g!=null&&g.contains(l.document.activeElement))&&e(d)},0)})].filter(Boolean);return()=>m.forEach(d=>d())}const Pe={[oe.mounted](t,e){const o=!e.modifiers.bubble;if(typeof e.value=="function")t.__onClickOutside_stop=ie(t,e.value,{capture:o});else{const[l,a]=e.value;t.__onClickOutside_stop=ie(t,l,Object.assign({capture:o},a))}},[oe.unmounted](t){t.__onClickOutside_stop()}};function U(t){return typeof Window<"u"&&t instanceof Window?t.document.documentElement:typeof Document<"u"&&t instanceof Document?t.documentElement:t}function ae(t){const e=window.getComputedStyle(t);if(e.overflowX==="scroll"||e.overflowY==="scroll"||e.overflowX==="auto"&&t.clientWidth<t.scrollWidth||e.overflowY==="auto"&&t.clientHeight<t.scrollHeight)return!0;{const o=t.parentNode;return!o||o.tagName==="BODY"?!1:ae(o)}}function Me(t){const e=t||window.event,o=e.target;return ae(o)?!1:e.touches.length>1?!0:(e.preventDefault&&e.preventDefault(),!1)}const _=new WeakMap;function je(t,e=!1){const o=n.ref(e);let l=null;n.watch(Oe(t),s=>{const i=U(E(s));if(i){const c=i;_.get(c)||_.set(c,c.style.overflow),o.value&&(c.style.overflow="hidden")}},{immediate:!0});const a=()=>{const s=U(E(t));!s||o.value||(V&&(l=T(s,"touchmove",i=>{Me(i)},{passive:!1})),s.style.overflow="hidden",o.value=!0)},r=()=>{var s;const i=U(E(t));!i||!o.value||(V&&(l==null||l()),i.style.overflow=(s=_.get(i))!=null?s:"",_.delete(i),o.value=!1)};return te(r),n.computed({get(){return o.value},set(s){s?a():r()}})}function Ne(){let t=!1;const e=n.ref(!1);return(o,l)=>{if(e.value=l.value,t)return;t=!0;const a=je(o,l.value);n.watch(e,r=>a.value=r)}}Ne();class se{constructor(e,o,l,a,r,s){this.id=e||ee(),this.rows=l,this.columns=n.reactive(o),this.config=n.reactive(a),this.table=r||n.reactive(this.createTableObject()),this.display=this.createDisplayObject(s),this.modal=n.reactive({visible:!1})}createTableObject(){const e={};for(const[o,l]of this.columns.entries())for(const[a,r]of this.rows.entries())e[`${o}:${a}`]=r[l.name];return e}createDisplayObject(e){const o=[Object.assign({},{modified:!1})];if(e&&"0:0"in e)return e;const l=new Set;for(let a=this.rows.length-1;a>=0;a--){const r=this.rows[a];r.parent&&l.add(r.parent),o[a]={childrenOpen:!1,expanded:!1,indent:r.indent||null,isParent:l.has(a),isRoot:r.parent===null||r.parent===void 0,modified:!1,open:r.parent===null||r.parent===void 0,parent:r.parent}}return n.reactive(o)}get zeroColumn(){return["list","tree","list-expansion"].includes(this.config.view)}get numberedRowWidth(){return n.computed(()=>String(Math.ceil(this.rows.length/100)+1)+"ch")}cellData(e,o){return this.table[`${e}:${o}`]}setCellData(e,o,l){this.table[`${o}:${e}`]!==l&&(this.display[e].modified=!0),this.table[`${o}:${e}`]=l;const a=this.columns[o];return this.rows[e][a.name]=l,this.table[`${o}:${e}`]}toggleRowExpand(e){if(this.config.view==="tree"){this.display[e].childrenOpen=!this.display[e].childrenOpen;for(let o=this.rows.length-1;o>=0;o--)this.display[o].parent===e&&(this.display[o].open=!this.display[o].open,this.display[o].childrenOpen&&this.toggleRowExpand(o))}else this.config.view==="list-expansion"&&(this.display[e].expanded=!this.display[e].expanded)}}const He={key:0,id:"resizable"},We={class:"atable-header-row",tabindex:"-1"},Ve={key:0,id:"header-index"},v=n.defineComponent({__name:"ATableHeader",props:{columns:{},config:{},tableid:{}},setup(t){const e=t,o=n.inject(e.tableid);o.numberedRowWidth.value;const l=a=>({minWidth:a.width||"40ch",textAlign:a.align||"center",width:o.config.fullWidth?"auto":null});return(a,r)=>a.columns.length?(n.openBlock(),n.createElementBlock("thead",He,[n.createElementVNode("tr",We,[n.unref(o).zeroColumn?(n.openBlock(),n.createElementBlock("th",Ve)):n.createCommentVNode("",!0),(n.openBlock(!0),n.createElementBlock(n.Fragment,null,n.renderList(a.columns,(s,i)=>(n.openBlock(),n.createElementBlock("th",{key:i,tabindex:"-1",style:n.normalizeStyle(l(s))},[n.renderSlot(a.$slots,"default",{},()=>[n.createTextVNode(n.toDisplayString(s.label||String.fromCharCode(i+97).toUpperCase()),1)])],4))),128))])])):n.createCommentVNode("",!0)}}),F=n.defineComponent({__name:"ATableModal",props:{colIndex:{},rowIndex:{},tableid:{}},setup(t){const e=t;n.inject(e.tableid);const o=l=>{l.stopPropagation()};return(l,a)=>(n.openBlock(),n.createElementBlock("div",{ref:"amodal",class:"amodal",tabindex:"-1",onClick:o,onInput:o},[n.renderSlot(l.$slots,"default")],544))}}),ce=n.defineComponent({__name:"ATable",props:{id:{},modelValue:{},columns:{},rows:{default:()=>[]},config:{default:()=>new Object},tableid:{}},emits:["update:modelValue"],setup(t,{emit:e}){const o=t,l=e;let a=o.modelValue?o.modelValue:o.rows,r=new se(o.id,o.columns,a,o.config);n.provide(r.id,r),n.watch(()=>r.rows,i=>{l("update:modelValue",i)},{deep:!0});const s=i=>{var c;i.target instanceof Node&&(c=r.modal.parent)!=null&&c.contains(i.target)||r.modal.visible&&(r.modal.visible=!1)};return window.addEventListener("keydown",async i=>{if(i.key==="Escape"&&r.modal.visible){r.modal.visible=!1;const c=r.modal.parent;c&&(await n.nextTick(),c.focus())}}),(i,c)=>n.withDirectives((n.openBlock(),n.createElementBlock("table",{class:"atable",style:n.normalizeStyle({width:n.unref(r).config.fullWidth?"100%":"auto"})},[n.renderSlot(i.$slots,"header",{data:n.unref(r)},()=>[n.createVNode(v,{columns:n.unref(r).columns,config:n.unref(r).config,tableid:n.unref(r).id},null,8,["columns","config","tableid"])]),n.createElementVNode("tbody",null,[n.renderSlot(i.$slots,"body",{data:n.unref(r)},()=>[(n.openBlock(!0),n.createElementBlock(n.Fragment,null,n.renderList(n.unref(r).rows,(f,m)=>(n.openBlock(),n.createBlock(W,{key:f.id||n.unref(ee)(),row:f,rowIndex:m,tableid:n.unref(r).id},{default:n.withCtx(()=>[(n.openBlock(!0),n.createElementBlock(n.Fragment,null,n.renderList(n.unref(r).columns,(u,d)=>(n.openBlock(),n.createBlock(H,{key:`${d}:${m}`,tableid:n.unref(r).id,col:u,spellcheck:"false",rowIndex:m,colIndex:d+(n.unref(r).zeroColumn?0:-1),component:u.cellComponent,style:n.normalizeStyle({textAlign:(u==null?void 0:u.align)||"center",minWidth:(u==null?void 0:u.width)||"40ch",width:n.unref(r).config.fullWidth?"auto":null})},null,8,["tableid","col","rowIndex","colIndex","component","style"]))),128))]),_:2},1032,["row","rowIndex","tableid"]))),128))])]),n.renderSlot(i.$slots,"footer",{data:n.unref(r)}),n.renderSlot(i.$slots,"modal",{data:n.unref(r)},()=>[n.withDirectives(n.createVNode(F,{colIndex:n.unref(r).modal.colIndex,rowIndex:n.unref(r).modal.rowIndex,tableid:n.unref(r).id,style:n.normalizeStyle({left:n.unref(r).modal.left+"px",top:n.unref(r).modal.top+"px",maxWidth:n.unref(r).modal.width+"px"})},{default:n.withCtx(()=>[(n.openBlock(),n.createBlock(n.resolveDynamicComponent(n.unref(r).modal.component),n.mergeProps({key:`${n.unref(r).modal.rowIndex}:${n.unref(r).modal.colIndex}`,colIndex:n.unref(r).modal.colIndex,rowIndex:n.unref(r).modal.rowIndex,tableid:n.unref(r).id},n.unref(r).modal.componentProps),null,16,["colIndex","rowIndex","tableid"]))]),_:1},8,["colIndex","rowIndex","tableid","style"]),[[n.vShow,n.unref(r).modal.visible]])])],4)),[[n.unref(Pe),s]])}});function Ue(t){t.component("ACell",H),t.component("AExpansionRow",Z),t.component("ARow",W),t.component("ATable",ce),t.component("ATableHeader",v),t.component("ATableModal",F)}b.ACell=H,b.AExpansionRow=Z,b.ARow=W,b.ATable=ce,b.ATableHeader=v,b.ATableModal=F,b.TableDataStore=se,b.install=Ue,Object.defineProperty(b,Symbol.toStringTag,{value:"Module"})});
|
|
2
2
|
//# sourceMappingURL=atable.umd.cjs.map
|