fine-true
Version:
A small and beautiful Vue3 version of the UI Library
1 lines • 6.41 kB
JavaScript
!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t(require("vue"),require("./../utils/withInstall"));else if("function"==typeof define&&define.amd)define(["vue","./../utils/withInstall"],t);else{var r="object"==typeof exports?t(require("vue"),require("./../utils/withInstall")):t(e.vue,e["./../utils/withInstall"]);for(var l in r)("object"==typeof exports?exports:e)[l]=r[l]}}(self,((e,t)=>(()=>{"use strict";var r={1677:e=>{e.exports=t},748:t=>{t.exports=e}},l={};function o(e){var t=l[e];if(void 0!==t)return t.exports;var n=l[e]={exports:{}};return r[e](n,n.exports,o),n.exports}o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},o.d=(e,t)=>{for(var r in t)o.o(t,r)&&!o.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};return(()=>{o.r(n),o.d(n,{default:()=>s});var e=o(748);const t=(0,e.defineComponent)({props:{columns:{type:Array,degault:()=>[]}},setup(t){var r=e=>{var t=[];return function e(){(arguments.length>0&&void 0!==arguments[0]?arguments[0]:[]).forEach((r=>{r.children&&r.children.length?e(r.children):t.push(r)}))}(e),t};return()=>{var{columns:l}=t;return(0,e.createVNode)("colgroup",null,[r(l).map((t=>{var r;return(0,e.createVNode)("col",{style:{width:(null===(r=t.node.props)||void 0===r?void 0:r.width)||"120px"}},null)}))])}}});var r=e=>{var t=e.children;if(t){var r=t.header;return r?r():void 0}};const l=(0,e.defineComponent)({props:{columns:{type:Array,default:()=>[]}},setup(l){console.log("table-head:columns",l.columns);var o=(0,e.inject)("fine-table-provide"),{emitter:n,allSelected:a,hasSelected:c}=o,i=(0,e.computed)((()=>{var e=1;return function t(){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,l=[];(arguments.length>0&&void 0!==arguments[0]?arguments[0]:[]).forEach((e=>{e.num=r,e.children&&e.children.length&&l.push(...e.children)})),l.length&&(e++,t(l,++r))}(l.columns),e})),d=function e(){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;(arguments.length>0&&void 0!==arguments[0]?arguments[0]:[]).forEach((r=>{r.children&&r.children.length?(e(r.children,t),r.rowSpan=1,r.colSpan=r.children.reduce(((e,t)=>e+t.colSpan),0)):(r.rowSpan=t-r.num+1,r.colSpan=1)}))};(0,e.watchEffect)((()=>{var e=l.columns;d(e,i.value)}));var u=(0,e.computed)((()=>{return e=l.columns,t=[],r=e=>{t.push(e);var l=[];e.forEach((e=>{e.children&&e.children.length&&l.push(...e.children)})),l.length&&r(l)},r(e),t;var e,t,r}));console.log("table-head",u.value);var s=(0,e.ref)();n.on("onSroll",(e=>{s.value.scrollLeft=e.scrollLeft}));var p=e=>{n.emit("onSelectAll",e)};return()=>{var{columns:o}=l;return(0,e.createVNode)("div",{class:"fine-table-header",ref:s},[(0,e.createVNode)("table",null,[(0,e.createVNode)(t,{columns:o},null),(0,e.createVNode)("thead",{class:"fine-table-thead"},[u.value.map((t=>(0,e.createVNode)("tr",null,[t.map((t=>{return(0,e.createVNode)("th",{class:{"fine-table-cell":!0,"fine-table-cell-fixed":(n=t.node.props.fixed,void 0!==n&&("left"===n||""===n)),"fine-table-cell-fixed-right":"right"===t.node.props.fixed},colspan:t.colSpan,rowspan:t.rowSpan},[r(t.node)||(l=t.node,"selection"===l.props.type&&(0,e.createVNode)((0,e.resolveComponent)("fine-checkbox"),{indeterminate:c.value,modelValue:a.value,onChange:p},null)||(null===(o=l.props)||void 0===o?void 0:o.label))]);var l,o,n}))])))])])])}}});const a=class{constructor(){this.eventsMap=new Map}emit(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),l=1;l<t;l++)r[l-1]=arguments[l];if(e){var o=this.eventsMap.get(e);o&&o.forEach((e=>{e.call(this,...r)}))}}on(e,t){if(e&&t){var r=this.eventsMap.get(e);r||(r=[],this.eventsMap.set(e,r)),r.includes(t)||r.push(t)}}};var c=function t(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],l=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],o=Array.isArray(r)?r:[r],n=[];return o.forEach((r=>{if(Array.isArray(r))n.push(...t(r,l));else if(r&&r.type===e.Fragment)n.push(...t(r.children,l));else if(r&&(0,e.isVNode)(r)){l&&(!(a=r)||!(a.type===e.Comment||a.type===e.Fragment&&0===a.children.length||a.type===Text&&""===a.children.trim()))&&(e=>"object"==typeof e.type&&"fine-table-column"===e.type.name)(r)?n.push(r):l||n.push(r)}else null!=(o=r)&&""!==o&&n.push(r);var o,a})),n};function i(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:[]).map((e=>{var t=void 0,r={node:e};return e.children&&e.children.default&&(t=i(c(e.children.default({})))),t&&(r.children=t),r}))}const d=(0,e.defineComponent)({name:"fine-table",emits:["update:modelValue","change"],props:{dataSource:{type:Array,default:()=>[]},border:{type:Boolean,default:!0},maxHeight:{type:[String,Number]}},setup(r,o){var{emit:n,expose:d,slots:u}=o,s=new a,p=(0,e.reactive)([]);(0,e.provide)("fine-table-provide",{selections:p,hasSelected:(0,e.computed)((()=>p.length>0)),allSelected:(0,e.computed)((()=>{var e;return p.length===(null===(e=r.dataSource)||void 0===e?void 0:e.length)})),dataSource:(0,e.computed)((()=>r.dataSource)),emitter:s}),s.on("selectionChange",(e=>{var t=p.indexOf(e);t>-1?p.splice(t,1):p.push(e)})),s.on("onSelectAll",(e=>{e?r.dataSource.forEach((e=>{p.includes(e)||p.push(e)})):p.length=0}));var h=(0,e.computed)((()=>({"fine-table-border":r.border}))),v=e=>{s.emit("onSroll",e.target)};return()=>{var o,{dataSource:n,maxHeight:a}=r,d=i(c(null===(o=u.default)||void 0===o?void 0:o.call(u)));console.log("before",d);var s,p,f=(s=[],p=e=>{e.forEach((e=>{e.children&&e.children.length?p(e.children):s.push(e)}))},p(d),s);return console.log("tableOld",f),console.log("dataSource",n),(0,e.createVNode)("div",{class:"fine-table"},[(0,e.createVNode)("div",{class:h.value},[(0,e.createVNode)("div",{class:"fine-table-container",style:{maxHeight:a?"number"==typeof a?"".concat(a,"px"):"string"==typeof a?a:"":""}},[(0,e.createVNode)(l,{columns:d},null),(0,e.createVNode)("div",{class:"fine-table-body",onScroll:v},[(0,e.createVNode)("table",null,[(0,e.createVNode)(t,{columns:d},null),(0,e.createVNode)("tbody",{class:"fine-table-tbody"},[n.map((t=>(0,e.createVNode)("tr",{class:"fine-table-row"},[f.map((r=>{var{node:l}=r;return l=(0,e.cloneVNode)(l,{rowData:t})}))])))])])])])])])}}});var u=o(1677);o.n(u)()(d);const s=d})(),n})()));