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