@ctc-front/components-ui-next 0.1.4 → 0.2.0

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/README.md CHANGED
@@ -8,12 +8,13 @@
8
8
  - 配置化 `CtcTable`:多级表头、插槽、render 函数、受控分页、行合并
9
9
  - Element Plus 原生表格属性类型、滚动方法与 `elTableRef` 原生实例入口
10
10
  - `app.use(CtcComponentsUi, options)` 团队默认配置
11
- - Element Plus 浅色/深色主题兼容
11
+ - `CtcReport` 报表布局:工具栏、查询区、标题、统计区、表格前后区域组合,完整类型和表格实例入口
12
+ - 白色、黑色、蓝色大屏三套主题,适配原生控件、弹层、状态提示和空状态
12
13
 
13
14
  ## 安装
14
15
 
15
16
  ```bash
16
- pnpm add @ctc-front/components-ui-next element-plus vue
17
+ pnpm add @ctc-front/components-ui-next@0.2.0 element-plus vue @element-plus/icons-vue
17
18
  ```
18
19
 
19
20
  ## 使用
@@ -21,6 +22,8 @@ pnpm add @ctc-front/components-ui-next element-plus vue
21
22
  ```ts
22
23
  import { createApp } from 'vue'
23
24
  import ElementPlus from 'element-plus'
25
+ import 'element-plus/dist/index.css'
26
+ import 'element-plus/theme-chalk/dark/css-vars.css'
24
27
  import '@ctc-front/components-ui-next/style.css'
25
28
  import CtcComponentsUi from '@ctc-front/components-ui-next'
26
29
  import App from './App.vue'
@@ -31,6 +34,7 @@ createApp(App).use(ElementPlus).use(CtcComponentsUi).mount('#app')
31
34
  如果宿主使用 Element Plus 按需加载,请改用包含 Element Plus 基础样式的入口:
32
35
 
33
36
  ```ts
37
+ import 'element-plus/theme-chalk/dark/css-vars.css'
34
38
  import '@ctc-front/components-ui-next/style-with-element-plus.css'
35
39
  ```
36
40
 
@@ -39,7 +43,7 @@ import '@ctc-front/components-ui-next/style-with-element-plus.css'
39
43
  也可以按组件导入:
40
44
 
41
45
  ```ts
42
- import { CtcDialog, CtcTable } from '@ctc-front/components-ui-next'
46
+ import { CtcDialog, CtcTable, CtcReport } from '@ctc-front/components-ui-next'
43
47
  ```
44
48
 
45
49
  ## CtcTable 行合并
@@ -58,18 +62,45 @@ import { CtcDialog, CtcTable } from '@ctc-front/components-ui-next'
58
62
  />
59
63
  ```
60
64
 
61
- 只有相邻行的 `by` 字段全部相同,目标列才会纵向合并。`selection`、`index`、`expand` 特殊列不参与配置合并;原生 `span-method` 传入后优先使用。当前版本暂不支持横向合并。
65
+ 只有相邻行的 `by` 字段全部相同,目标列才会纵向合并。`selection`、`index`、`expand` 特殊列不参与配置合并;原生 `span-method` 传入后优先使用。merge 配置仅支持纵向合并;横向合并可使用原生 span-method。
62
66
 
63
67
  ## 主题
64
68
 
65
- 组件会跟随宿主 Element Plus 的主题变量。深色模式按 Element Plus 方式配置:
69
+ 默认启用 CTC 白色主题;黑色与蓝色大屏同时使用 Element Plus 官方暗色基础变量。主题标记放在 html,让传送到 body 的弹层也能同步:
66
70
 
67
71
  ```ts
68
- document.documentElement.classList.toggle('dark', isDark)
72
+ function applyTheme(theme: 'light' | 'dark' | 'blue') {
73
+ document.documentElement.classList.toggle('dark', theme !== 'light')
74
+ document.documentElement.dataset.ctcTheme = theme
75
+ }
76
+
77
+ applyTheme('blue')
69
78
  ```
70
79
 
80
+ 若需要沿用宿主自己的品牌色,使用 `data-ctc-theme-mode="inherit"`,详见[主题与大屏模式](./docs/guide/theme.md)。
81
+
71
82
  详细属性、插槽、分页和主题说明见[开始使用](./docs/guide/getting-started.md)。各个已发布版本的功能点见[更新日志](./CHANGELOG.md)和[版本说明](./docs/guide/releases.md)。
72
83
 
73
84
  ## 版本说明
74
85
 
75
- 当前为 `0.1.4`,适用于 Vue 3 项目。Vue 2 / Element UI 项目请继续使用原组件库。
86
+ 当前为 `0.2.0`,适用于 Vue 3 项目。Vue 2 / Element UI 项目请继续使用原组件库。
87
+
88
+ ## 文档与本地演示
89
+
90
+ ```bash
91
+ pnpm dev # 开发与审查:http://127.0.0.1:4173,支持热更新
92
+ pnpm docs:preview # 构建产物验收:http://localhost:4174
93
+ pnpm docs:sync # 同步源码契约、API 页和 AI 阅读文件
94
+ pnpm docs:check # 检查契约覆盖及生成文档是否过期
95
+ pnpm release:check
96
+ ```
97
+
98
+ 日常修改和审查使用 `pnpm dev`。`docs:preview` 会先构建,再启动静态预览;预览期间重新构建后,需要停止并重新运行该命令,让服务读取新的资源清单。
99
+
100
+ 所有示例位于 `docs/examples/`,由 `manifest.json` 登记并嵌入 Markdown,无需维护独立 Playground 应用。
101
+
102
+ - 人工使用:[组件目录](./docs/components/index.md) · [方法实战](./docs/components/table/methods.md) · [业务场景](./docs/patterns/index.md)
103
+ - AI 读取:[llms.txt](./llms.txt) · [读取约定](./docs/guide/ai.md) · [契约源](./docs/reference/components.json)
104
+ - 维护规范:[文档与示例贡献](./docs/guide/contributing.md)
105
+
106
+ 文档站同时输出 `/llms.txt`、`/llms-full.txt`、`/api/components.json` 与 `/markdown/`。本站描述当前源码,尚未发布的能力以发布记录为准。
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});let e=require("vue"),t=require("element-plus");var n=Symbol(`CtcComponentsUiConfig`);function r(){return(0,e.inject)(n,{})}var i=(0,e.defineComponent)({name:`Close`,__name:`close`,setup(t){return(t,n)=>((0,e.openBlock)(),(0,e.createElementBlock)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 1024 1024`},[(0,e.createElementVNode)(`path`,{fill:`currentColor`,d:`M764.288 214.592 512 466.88 259.712 214.592a31.936 31.936 0 0 0-45.12 45.12L466.752 512 214.528 764.224a31.936 31.936 0 1 0 45.12 45.184L512 557.184l252.288 252.288a31.936 31.936 0 0 0 45.12-45.12L557.12 512.064l252.288-252.352a31.936 31.936 0 1 0-45.12-45.184z`})]))}}),a=(0,e.defineComponent)({name:`FullScreen`,__name:`full-screen`,setup(t){return(t,n)=>((0,e.openBlock)(),(0,e.createElementBlock)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 1024 1024`},[(0,e.createElementVNode)(`path`,{fill:`currentColor`,d:`m160 96.064 192 .192a32 32 0 0 1 0 64l-192-.192V352a32 32 0 0 1-64 0V96h64zm0 831.872V928H96V672a32 32 0 1 1 64 0v191.936l192-.192a32 32 0 1 1 0 64zM864 96.064V96h64v256a32 32 0 1 1-64 0V160.064l-192 .192a32 32 0 1 1 0-64zm0 831.872-192-.192a32 32 0 0 1 0-64l192 .192V672a32 32 0 1 1 64 0v256h-64z`})]))}}),o=(0,e.defineComponent)({name:`Minus`,__name:`minus`,setup(t){return(t,n)=>((0,e.openBlock)(),(0,e.createElementBlock)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 1024 1024`},[(0,e.createElementVNode)(`path`,{fill:`currentColor`,d:`M128 544h768a32 32 0 1 0 0-64H128a32 32 0 0 0 0 64`})]))}});function s(t,n){let r=(0,e.computed)(()=>t.fullscreen??!1);function i(){n(`update:fullscreen`,!r.value)}return{isFullscreen:r,toggleFullscreen:i}}function c(e,t,n){return Math.min(Math.max(e,t),n)}function l(t,n){let r=(0,e.ref)(!1),i=(0,e.ref)({}),a=()=>{};function o(){a(),a=()=>{}}function s(e){if(!t.resizable||e.button!==0)return;let s=e.currentTarget.closest(`.ctc-dialog`);if(!s)return;e.preventDefault(),o();let l=s.getBoundingClientRect(),u=t.minWidth??400,d=t.minHeight??240,f=Math.max(u,window.innerWidth-l.left-32),p=Math.max(d,window.innerHeight-l.top-32),m=e.clientX,h=e.clientY;function g(e){let t=Math.round(c(l.width+e.clientX-m,u,f)),a=Math.round(c(l.height+e.clientY-h,d,p));r.value=!0,i.value={height:`${a}px`,width:`${t}px`},n(`resize`,{width:t,height:a})}function _(){o()}window.addEventListener(`pointermove`,g),window.addEventListener(`pointerup`,_,{once:!0}),a=()=>{window.removeEventListener(`pointermove`,g),window.removeEventListener(`pointerup`,_)}}return(0,e.onBeforeUnmount)(o),{isResized:r,resizeStyle:i,startResize:s}}var u={class:`ctc-dialog__header-content`},d={class:`ctc-dialog__title`},f={class:`ctc-dialog__header-actions`},p=[`aria-label`,`title`],m={class:`ctc-dialog__content`},h=(0,e.defineComponent)({name:`CtcDialog`,inheritAttrs:!1,__name:`index`,props:{modelValue:{type:Boolean,default:!1},fullscreen:{type:Boolean,default:!1},showFullscreen:{type:Boolean,default:!1},resizable:{type:Boolean,default:!1},minWidth:{type:Number,default:400},minHeight:{type:Number,default:240},title:{type:String,default:``},width:{type:[String,Number],default:`640px`},alignCenter:Boolean,appendTo:{type:[String,Object],default:void 0},beforeClose:{type:Function,default:void 0},closeDelay:Number,closeOnClickModal:{type:Boolean,default:void 0},closeOnPressEscape:Boolean,contentFill:{type:Boolean,default:!1},destroyOnClose:Boolean,draggable:Boolean,lockScroll:Boolean,modal:{type:Boolean,default:!0},modalClass:{type:[String,Array,Object],default:void 0},openDelay:Number,overflow:Boolean,showClose:{type:Boolean,default:!0},top:String,trapFocus:Boolean,zIndex:Number},emits:[`update:modelValue`,`update:fullscreen`,`resize`,`open`,`opened`,`close`,`closed`],setup(n,{emit:c}){let h=n,g=c,_=(0,e.useAttrs)(),v=(0,e.useSlots)(),y=r(),{isFullscreen:b,toggleFullscreen:x}=s(h,g),{isResized:S,resizeStyle:C,startResize:w}=l(h,g),T=(0,e.computed)(()=>b.value?{}:C.value),E=(0,e.computed)(()=>S.value&&!b.value),D=(0,e.computed)(()=>h.closeOnClickModal??y.dialog?.closeOnClickModal??!1);function O(e){g(`update:modelValue`,e)}function k(){if(h.beforeClose){h.beforeClose(e=>{e||g(`update:modelValue`,!1)});return}g(`update:modelValue`,!1)}return(r,s)=>((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(t.ElDialog),(0,e.mergeProps)((0,e.unref)(_),{class:[`ctc-dialog`,{"ctc-dialog--content-fill":n.contentFill,"ctc-dialog--resizable":n.resizable,"ctc-dialog--resized":E.value}],style:T.value,"model-value":n.modelValue,fullscreen:(0,e.unref)(b),title:n.title,width:n.width,"align-center":n.alignCenter,"append-to":n.appendTo,"before-close":n.beforeClose,"close-delay":n.closeDelay,"close-on-click-modal":D.value,"close-on-press-escape":n.closeOnPressEscape,"destroy-on-close":n.destroyOnClose,draggable:n.draggable,"lock-scroll":n.lockScroll,modal:n.modal,"modal-class":n.modalClass,"open-delay":n.openDelay,overflow:n.overflow,"show-close":!1,top:n.top,"trap-focus":n.trapFocus,"z-index":n.zIndex,"header-class":`ctc-dialog__header`,"body-class":`ctc-dialog__body`,"footer-class":`ctc-dialog__footer`,"onUpdate:modelValue":O,onOpen:s[2]||=e=>g(`open`),onOpened:s[3]||=e=>g(`opened`),onClose:s[4]||=e=>g(`close`),onClosed:s[5]||=e=>g(`closed`)}),(0,e.createSlots)({header:(0,e.withCtx)(()=>[(0,e.createElementVNode)(`div`,u,[(0,e.renderSlot)(r.$slots,`header`,{},()=>[(0,e.createElementVNode)(`span`,d,(0,e.toDisplayString)(n.title),1)])]),(0,e.createElementVNode)(`div`,f,[n.showFullscreen?((0,e.openBlock)(),(0,e.createElementBlock)(`button`,{key:0,class:`ctc-dialog__fullscreen-toggle`,type:`button`,"aria-label":(0,e.unref)(b)?`退出全屏`:`全屏显示`,title:(0,e.unref)(b)?`退出全屏`:`全屏显示`,"data-ctc-fullscreen-toggle":``,onClick:s[0]||=(...t)=>(0,e.unref)(x)&&(0,e.unref)(x)(...t)},[(0,e.createVNode)((0,e.unref)(t.ElIcon),{"aria-hidden":`true`},{default:(0,e.withCtx)(()=>[(0,e.unref)(b)?((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(o),{key:0})):((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(a),{key:1}))]),_:1})],8,p)):(0,e.createCommentVNode)(``,!0),n.showClose?((0,e.openBlock)(),(0,e.createElementBlock)(`button`,{key:1,class:`ctc-dialog__close`,type:`button`,"aria-label":`关闭弹窗`,title:`关闭`,"data-ctc-close":``,onClick:k},[(0,e.createVNode)((0,e.unref)(t.ElIcon),{"aria-hidden":`true`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(i))]),_:1})])):(0,e.createCommentVNode)(``,!0)])]),default:(0,e.withCtx)(()=>[(0,e.createElementVNode)(`div`,m,[(0,e.renderSlot)(r.$slots,`default`)]),n.resizable&&!(0,e.unref)(b)?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:0,class:`ctc-dialog__resize-handle`,"aria-hidden":`true`,"data-ctc-resize-handle":``,onPointerdown:s[1]||=(...t)=>(0,e.unref)(w)&&(0,e.unref)(w)(...t)},null,32)):(0,e.createCommentVNode)(``,!0)]),_:2},[(0,e.unref)(v).footer?{name:`footer`,fn:(0,e.withCtx)(()=>[(0,e.renderSlot)(r.$slots,`footer`)]),key:`0`}:void 0]),1040,[`class`,`style`,`model-value`,`fullscreen`,`title`,`width`,`align-center`,`append-to`,`before-close`,`close-delay`,`close-on-click-modal`,`close-on-press-escape`,`destroy-on-close`,`draggable`,`lock-scroll`,`modal`,`modal-class`,`open-delay`,`overflow`,`top`,`trap-focus`,`z-index`]))}}),g={class:`ctc-drawer__header-content`},_={class:`ctc-drawer__title`},v={class:`ctc-drawer__header-actions`},y=[`aria-label`,`title`],b={class:`ctc-drawer__content`},x={key:0,class:`ctc-drawer__footer`},S=(0,e.defineComponent)({name:`CtcDrawer`,inheritAttrs:!1,__name:`index`,props:{modelValue:{type:Boolean,default:!1},fullscreen:{type:Boolean,default:!1},showFullscreen:{type:Boolean,default:!1},title:{type:String,default:``},size:{type:[String,Number],default:`480px`},direction:{type:String,default:`rtl`},appendTo:{type:[String,Object],default:void 0},beforeClose:{type:Function,default:void 0},closeOnClickModal:Boolean,closeOnPressEscape:Boolean,destroyOnClose:Boolean,lockScroll:Boolean,modal:{type:Boolean,default:!0},modalClass:{type:[String,Array,Object],default:void 0},showClose:{type:Boolean,default:!0},zIndex:Number},emits:[`update:modelValue`,`update:fullscreen`,`open`,`opened`,`close`,`closed`],setup(n,{emit:r}){let c=n,l=r,u=(0,e.useAttrs)(),d=(0,e.useSlots)(),{isFullscreen:f,toggleFullscreen:p}=s(c,l),m=(0,e.computed)(()=>f.value?`100%`:c.size);function h(e){l(`update:modelValue`,e)}function S(){if(c.beforeClose){c.beforeClose(e=>{e||l(`update:modelValue`,!1)});return}l(`update:modelValue`,!1)}return(r,s)=>((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(t.ElDrawer),(0,e.mergeProps)((0,e.unref)(u),{class:[`ctc-drawer`,{"is-fullscreen":(0,e.unref)(f)}],"model-value":n.modelValue,"append-to":n.appendTo,"before-close":n.beforeClose,"close-on-click-modal":n.closeOnClickModal,"close-on-press-escape":n.closeOnPressEscape,"destroy-on-close":n.destroyOnClose,direction:n.direction,"lock-scroll":n.lockScroll,modal:n.modal,"modal-class":n.modalClass,"show-close":!1,size:m.value,"z-index":n.zIndex,"header-class":`ctc-drawer__header`,"body-class":`ctc-drawer__body`,"onUpdate:modelValue":h,onOpen:s[1]||=e=>l(`open`),onOpened:s[2]||=e=>l(`opened`),onClose:s[3]||=e=>l(`close`),onClosed:s[4]||=e=>l(`closed`)}),{header:(0,e.withCtx)(()=>[(0,e.createElementVNode)(`div`,g,[(0,e.renderSlot)(r.$slots,`header`,{},()=>[(0,e.createElementVNode)(`span`,_,(0,e.toDisplayString)(n.title),1)])]),(0,e.createElementVNode)(`div`,v,[n.showFullscreen?((0,e.openBlock)(),(0,e.createElementBlock)(`button`,{key:0,class:`ctc-drawer__fullscreen-toggle`,type:`button`,"aria-label":(0,e.unref)(f)?`退出全屏`:`全屏显示`,title:(0,e.unref)(f)?`退出全屏`:`全屏显示`,"data-ctc-fullscreen-toggle":``,onClick:s[0]||=(...t)=>(0,e.unref)(p)&&(0,e.unref)(p)(...t)},[(0,e.createVNode)((0,e.unref)(t.ElIcon),{"aria-hidden":`true`},{default:(0,e.withCtx)(()=>[(0,e.unref)(f)?((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(o),{key:0})):((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(a),{key:1}))]),_:1})],8,y)):(0,e.createCommentVNode)(``,!0),n.showClose?((0,e.openBlock)(),(0,e.createElementBlock)(`button`,{key:1,class:`ctc-drawer__close`,type:`button`,"aria-label":`关闭抽屉`,title:`关闭`,"data-ctc-close":``,onClick:S},[(0,e.createVNode)((0,e.unref)(t.ElIcon),{"aria-hidden":`true`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(i))]),_:1})])):(0,e.createCommentVNode)(``,!0)])]),default:(0,e.withCtx)(()=>[(0,e.createElementVNode)(`div`,{class:(0,e.normalizeClass)([`ctc-drawer__layout`,{"has-footer":(0,e.unref)(d).footer}])},[(0,e.createElementVNode)(`div`,b,[(0,e.renderSlot)(r.$slots,`default`)]),(0,e.unref)(d).footer?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,x,[(0,e.renderSlot)(r.$slots,`footer`)])):(0,e.createCommentVNode)(``,!0)],2)]),_:3},16,[`class`,`model-value`,`append-to`,`before-close`,`close-on-click-modal`,`close-on-press-escape`,`destroy-on-close`,`direction`,`lock-scroll`,`modal`,`modal-class`,`size`,`z-index`]))}}),C=(0,e.defineComponent)({name:`CtcFlex`,__name:`index`,props:{direction:{default:`column`},fill:{type:Boolean,default:!1},grow:{default:1},justify:{default:`flex-start`},align:{default:`stretch`},gap:{default:0},scroll:{type:[Boolean,String],default:!1}},setup(t){let n=t,r=(0,e.computed)(()=>{let e={alignItems:n.align,flexDirection:n.direction,justifyContent:n.justify};return n.gap!==0&&n.gap!==``&&(e.gap=typeof n.gap==`number`?`${n.gap}px`:n.gap),n.fill&&(e.flex=n.grow),n.direction===`column`?e.minHeight=`0`:e.minWidth=`0`,n.scroll===`x`?(e.overflowX=`auto`,e.overflowY=`hidden`):n.scroll===`y`?(e.overflowX=`hidden`,e.overflowY=`auto`):n.scroll&&(e.overflow=`auto`),e});return(t,n)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{class:`ctc-flex`,style:(0,e.normalizeStyle)(r.value)},[(0,e.renderSlot)(t.$slots,`default`)],4))}}),w=new Set([`selection`,`index`,`expand`]),T=new Map,E=(0,e.defineComponent)({name:`CtcTableColumn`,props:{column:{type:Object,required:!0},slots:{type:Object,required:!0}},setup(n){let r=e=>e.slot??e.prop,i=(e,t)=>{if(!t)return;let n=T.get(t);return n||(n=t.replace(/\[(?:'([^']*)'|"([^"]*)"|([^\]]+))\]/g,`.$1$2$3`).split(`.`).filter(Boolean),T.set(t,n)),n.reduce((e,t)=>{if(!(typeof e!=`object`||!e))return e[t]},e)},a=(e,t)=>{let a=r(e),o=a?n.slots[a]:void 0;if(o)return o({...t,config:e});if(e.renderCell)return e.renderCell(t);if(e.formatter){let n=i(t.row,e.prop??e.property);return e.formatter(t.row,t.column,n,t.$index)}},o=(e,t)=>{let r=e.headerSlot?n.slots[e.headerSlot]:void 0;return r?r({...t,config:e}):e.renderHeader?.(t)},s=r=>{let{children:i,slot:c,headerSlot:l,renderCell:u,renderHeader:d,formatter:f,...p}=r,m=!!i?.length,h=c??r.prop,g=!!(h&&n.slots[h]||u||f),_=!!(l&&n.slots[l]||d),v=r.type?w.has(r.type):!1;return(0,e.h)(t.ElTableColumn,p,{default:m?()=>i?.map(s):g&&!v?e=>a(r,e):void 0,header:_?e=>o(r,e):void 0})};return()=>s(n.column)}});function D(e,t){return t.replace(/\[(?:'([^']*)'|"([^"]*)"|([^\]]+))\]/g,`.$1$2$3`).split(`.`).filter(Boolean).reduce((e,t)=>{if(!(typeof e!=`object`||!e))return e[t]},e)}function O(e,t,n){return n.every(n=>Object.is(D(e,n),D(t,n)))}function k(e,t){let n=new Map(t.filter(e=>e.prop&&e.by.length>0).map(e=>[e.prop,e]));return({column:t,rowIndex:r})=>{if(t.type===`selection`||t.type===`index`||t.type===`expand`)return;let i=t.property,a=i?n.get(i):void 0;if(!a)return;let o=e[r];if(!o)return;if(r>0&&O(e[r-1],o,a.by))return{rowspan:0,colspan:0};let s=1;for(;r+s<e.length&&O(o,e[r+s],a.by);)s+=1;return{rowspan:s,colspan:1}}}var A={key:0,class:`ctc-table__pagination`},j=(0,e.defineComponent)({name:`CtcTable`,inheritAttrs:!1,__name:`index`,props:{autoHeight:{type:Boolean,default:!1},columns:{default:()=>[]},currentPage:{default:1},data:{default:()=>[]},height:{},loading:{type:Boolean,default:!1},merge:{default:()=>[]},pageSize:{},pagination:{type:Boolean,default:!1},paginationProps:{default:()=>({})},total:{default:0}},emits:[`update:currentPage`,`update:pageSize`,`current-change`,`page-change`,`page-size-change`,`prev-click`,`next-click`],setup(n,{expose:i,emit:a}){let o=n,s=a,c=(0,e.useAttrs)(),l=(0,e.useSlots)(),u=r(),d=(0,e.useTemplateRef)(`tableRef`),f=new Set(`currentPage.pageSize.total.layout.pageSizes.pagerCount.background.disabled.hideOnSinglePage.small.prevText.nextText.prevIcon.nextIcon.popperClass.popperStyle.teleported.appendSizeTo.pageCount.defaultCurrentPage.defaultPageSize.onUpdate:currentPage.onUpdate:pageSize.onCurrentChange.onSizeChange.onPrevClick.onNextClick`.split(`.`)),p=(0,e.computed)(()=>{let e=Object.fromEntries(Object.entries(c).filter(([e])=>!f.has(e)&&e!==`height`&&e!==`spanMethod`)),t={};return!(`border`in c)&&u.table?.border!==void 0&&(t.border=u.table.border),!(`stripe`in c)&&u.table?.stripe!==void 0&&(t.stripe=u.table.stripe),{...t,...e}}),m=(0,e.computed)(()=>o.pageSize??u.table?.pageSize??10),h=(0,e.computed)(()=>({...u.table?.paginationProps,...o.paginationProps})),g=(0,e.computed)(()=>{if(typeof o.height==`string`||typeof o.height==`number`)return o.height}),_=(0,e.computed)(()=>o.autoHeight&&g.value===void 0),v=(0,e.computed)(()=>g.value??(_.value?`100%`:void 0)),y=(0,e.computed)(()=>{if(typeof c.spanMethod==`function`)return c.spanMethod;if(o.merge.length!==0)return k(o.data,o.merge)});function b(e,t){s(`current-change`,e,t)}return i({elTableRef:d,clearSelection:()=>d.value?.clearSelection(),toggleRowSelection:(e,t)=>d.value?.toggleRowSelection(e,t),toggleAllSelection:()=>d.value?.toggleAllSelection(),toggleRowExpansion:(e,t)=>d.value?.toggleRowExpansion(e,t),setCurrentRow:e=>d.value?.setCurrentRow(e),clearSort:()=>d.value?.clearSort(),clearFilter:e=>d.value?.clearFilter(e),doLayout:()=>d.value?.doLayout(),sort:(e,t)=>d.value?.sort(e,t),scrollTo:(e,t)=>d.value?.scrollTo(e,t),setScrollTop:e=>d.value?.setScrollTop(e),setScrollLeft:e=>d.value?.setScrollLeft(e)}),(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{class:(0,e.normalizeClass)([`ctc-table`,{"ctc-table--auto-height":_.value}])},[(0,e.withDirectives)(((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(t.ElTable),(0,e.mergeProps)({ref_key:`tableRef`,ref:d},p.value,{data:o.data,height:v.value,"span-method":y.value,onCurrentChange:b}),(0,e.createSlots)({default:(0,e.withCtx)(()=>[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(o.columns,(t,n)=>((0,e.openBlock)(),(0,e.createBlock)(E,{key:t.prop??t.property??t.label??n,column:t,slots:(0,e.unref)(l)},null,8,[`column`,`slots`]))),128))]),_:2},[(0,e.unref)(l).empty?{name:`empty`,fn:(0,e.withCtx)(()=>[(0,e.renderSlot)(n.$slots,`empty`)]),key:`0`}:void 0,(0,e.unref)(l).append?{name:`append`,fn:(0,e.withCtx)(()=>[(0,e.renderSlot)(n.$slots,`append`)]),key:`1`}:void 0]),1040,[`data`,`height`,`span-method`])),[[(0,e.unref)(t.vLoading),o.loading]]),o.pagination?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,A,[(0,e.createVNode)((0,e.unref)(t.ElPagination),(0,e.mergeProps)(h.value,{"current-page":o.currentPage,"page-size":m.value,total:o.total,"onUpdate:currentPage":r[0]||=e=>s(`update:currentPage`,e),"onUpdate:pageSize":r[1]||=e=>s(`update:pageSize`,e),onCurrentChange:r[2]||=e=>s(`page-change`,e),onSizeChange:r[3]||=e=>s(`page-size-change`,e),onPrevClick:r[4]||=e=>s(`prev-click`,e),onNextClick:r[5]||=e=>s(`next-click`,e)}),null,16,[`current-page`,`page-size`,`total`]),(0,e.renderSlot)(n.$slots,`pagination`)])):(0,e.createCommentVNode)(``,!0)],2))}}),M=[h,S,C,j],N={install(e,t={}){e.provide(n,t),M.forEach(t=>{e.component(t.name??``,t)})}};exports.CtcComponentsUi=N,exports.default=N,exports.CtcDialog=h,exports.CtcDrawer=S,exports.CtcFlex=C,exports.CtcTable=j;
1
+ Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});let e=require("vue"),t=require("element-plus");var n=Symbol(`CtcComponentsUiConfig`);function r(){return(0,e.inject)(n,{})}var i=(0,e.defineComponent)({name:`Close`,__name:`close`,setup(t){return(t,n)=>((0,e.openBlock)(),(0,e.createElementBlock)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 1024 1024`},[(0,e.createElementVNode)(`path`,{fill:`currentColor`,d:`M764.288 214.592 512 466.88 259.712 214.592a31.936 31.936 0 0 0-45.12 45.12L466.752 512 214.528 764.224a31.936 31.936 0 1 0 45.12 45.184L512 557.184l252.288 252.288a31.936 31.936 0 0 0 45.12-45.12L557.12 512.064l252.288-252.352a31.936 31.936 0 1 0-45.12-45.184z`})]))}}),a=(0,e.defineComponent)({name:`FullScreen`,__name:`full-screen`,setup(t){return(t,n)=>((0,e.openBlock)(),(0,e.createElementBlock)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 1024 1024`},[(0,e.createElementVNode)(`path`,{fill:`currentColor`,d:`m160 96.064 192 .192a32 32 0 0 1 0 64l-192-.192V352a32 32 0 0 1-64 0V96h64zm0 831.872V928H96V672a32 32 0 1 1 64 0v191.936l192-.192a32 32 0 1 1 0 64zM864 96.064V96h64v256a32 32 0 1 1-64 0V160.064l-192 .192a32 32 0 1 1 0-64zm0 831.872-192-.192a32 32 0 0 1 0-64l192 .192V672a32 32 0 1 1 64 0v256h-64z`})]))}}),o=(0,e.defineComponent)({name:`Minus`,__name:`minus`,setup(t){return(t,n)=>((0,e.openBlock)(),(0,e.createElementBlock)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 1024 1024`},[(0,e.createElementVNode)(`path`,{fill:`currentColor`,d:`M128 544h768a32 32 0 1 0 0-64H128a32 32 0 0 0 0 64`})]))}});function s(t,n){let r=(0,e.computed)(()=>t.fullscreen??!1);function i(){n(`update:fullscreen`,!r.value)}return{isFullscreen:r,toggleFullscreen:i}}function c(e,t,n){return Math.min(Math.max(e,t),n)}function l(t,n){let r=(0,e.ref)(!1),i=(0,e.ref)({}),a=()=>{};function o(){a(),a=()=>{}}function s(e){if(!t.resizable||e.button!==0)return;let s=e.currentTarget.closest(`.ctc-dialog`);if(!s)return;e.preventDefault(),o();let l=s.getBoundingClientRect(),u=t.minWidth??400,d=t.minHeight??240,f=Math.max(u,window.innerWidth-l.left-32),p=Math.max(d,window.innerHeight-l.top-32),m=e.clientX,h=e.clientY;function g(e){let t=Math.round(c(l.width+e.clientX-m,u,f)),a=Math.round(c(l.height+e.clientY-h,d,p));r.value=!0,i.value={height:`${a}px`,width:`${t}px`},n(`resize`,{width:t,height:a})}function _(){o()}window.addEventListener(`pointermove`,g),window.addEventListener(`pointerup`,_,{once:!0}),a=()=>{window.removeEventListener(`pointermove`,g),window.removeEventListener(`pointerup`,_)}}return(0,e.onBeforeUnmount)(o),{isResized:r,resizeStyle:i,startResize:s}}var u={class:`ctc-dialog__header-content`},d={class:`ctc-dialog__title`},f={class:`ctc-dialog__header-actions`},p=[`aria-label`,`title`],m={class:`ctc-dialog__content`},h=(0,e.defineComponent)({name:`CtcDialog`,inheritAttrs:!1,__name:`index`,props:{modelValue:{type:Boolean,default:!1},fullscreen:{type:Boolean,default:!1},showFullscreen:{type:Boolean,default:!1},resizable:{type:Boolean,default:!1},minWidth:{type:Number,default:400},minHeight:{type:Number,default:240},title:{type:String,default:``},width:{type:[String,Number],default:`640px`},alignCenter:Boolean,appendTo:{type:[String,Object],default:void 0},beforeClose:{type:Function,default:void 0},closeDelay:Number,closeOnClickModal:{type:Boolean,default:void 0},closeOnPressEscape:Boolean,contentFill:{type:Boolean,default:!1},destroyOnClose:Boolean,draggable:Boolean,lockScroll:Boolean,modal:{type:Boolean,default:!0},modalClass:{type:[String,Array,Object],default:void 0},openDelay:Number,overflow:Boolean,showClose:{type:Boolean,default:!0},top:String,trapFocus:Boolean,zIndex:Number},emits:[`update:modelValue`,`update:fullscreen`,`resize`,`open`,`opened`,`close`,`closed`],setup(n,{emit:c}){let h=n,g=c,_=(0,e.useAttrs)(),v=(0,e.useSlots)(),y=r(),{isFullscreen:b,toggleFullscreen:x}=s(h,g),{isResized:S,resizeStyle:C,startResize:w}=l(h,g),T=(0,e.computed)(()=>b.value?{}:C.value),E=(0,e.computed)(()=>S.value&&!b.value),D=(0,e.computed)(()=>h.closeOnClickModal??y.dialog?.closeOnClickModal??!1);function O(e){g(`update:modelValue`,e)}function k(){if(h.beforeClose){h.beforeClose(e=>{e||g(`update:modelValue`,!1)});return}g(`update:modelValue`,!1)}return(r,s)=>((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(t.ElDialog),(0,e.mergeProps)((0,e.unref)(_),{class:[`ctc-dialog`,{"ctc-dialog--content-fill":n.contentFill,"ctc-dialog--resizable":n.resizable,"ctc-dialog--resized":E.value}],style:T.value,"model-value":n.modelValue,fullscreen:(0,e.unref)(b),title:n.title,width:n.width,"align-center":n.alignCenter,"append-to":n.appendTo,"before-close":n.beforeClose,"close-delay":n.closeDelay,"close-on-click-modal":D.value,"close-on-press-escape":n.closeOnPressEscape,"destroy-on-close":n.destroyOnClose,draggable:n.draggable,"lock-scroll":n.lockScroll,modal:n.modal,"modal-class":n.modalClass,"open-delay":n.openDelay,overflow:n.overflow,"show-close":!1,top:n.top,"trap-focus":n.trapFocus,"z-index":n.zIndex,"header-class":`ctc-dialog__header`,"body-class":`ctc-dialog__body`,"footer-class":`ctc-dialog__footer`,"onUpdate:modelValue":O,onOpen:s[2]||=e=>g(`open`),onOpened:s[3]||=e=>g(`opened`),onClose:s[4]||=e=>g(`close`),onClosed:s[5]||=e=>g(`closed`)}),(0,e.createSlots)({header:(0,e.withCtx)(()=>[(0,e.createElementVNode)(`div`,u,[(0,e.renderSlot)(r.$slots,`header`,{},()=>[(0,e.createElementVNode)(`span`,d,(0,e.toDisplayString)(n.title),1)])]),(0,e.createElementVNode)(`div`,f,[n.showFullscreen?((0,e.openBlock)(),(0,e.createElementBlock)(`button`,{key:0,class:`ctc-dialog__fullscreen-toggle`,type:`button`,"aria-label":(0,e.unref)(b)?`退出全屏`:`全屏显示`,title:(0,e.unref)(b)?`退出全屏`:`全屏显示`,"data-ctc-fullscreen-toggle":``,onClick:s[0]||=(...t)=>(0,e.unref)(x)&&(0,e.unref)(x)(...t)},[(0,e.createVNode)((0,e.unref)(t.ElIcon),{"aria-hidden":`true`},{default:(0,e.withCtx)(()=>[(0,e.unref)(b)?((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(o),{key:0})):((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(a),{key:1}))]),_:1})],8,p)):(0,e.createCommentVNode)(``,!0),n.showClose?((0,e.openBlock)(),(0,e.createElementBlock)(`button`,{key:1,class:`ctc-dialog__close`,type:`button`,"aria-label":`关闭弹窗`,title:`关闭`,"data-ctc-close":``,onClick:k},[(0,e.createVNode)((0,e.unref)(t.ElIcon),{"aria-hidden":`true`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(i))]),_:1})])):(0,e.createCommentVNode)(``,!0)])]),default:(0,e.withCtx)(()=>[(0,e.createElementVNode)(`div`,m,[(0,e.renderSlot)(r.$slots,`default`)]),n.resizable&&!(0,e.unref)(b)?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:0,class:`ctc-dialog__resize-handle`,"aria-hidden":`true`,"data-ctc-resize-handle":``,onPointerdown:s[1]||=(...t)=>(0,e.unref)(w)&&(0,e.unref)(w)(...t)},null,32)):(0,e.createCommentVNode)(``,!0)]),_:2},[(0,e.unref)(v).footer?{name:`footer`,fn:(0,e.withCtx)(()=>[(0,e.renderSlot)(r.$slots,`footer`)]),key:`0`}:void 0]),1040,[`class`,`style`,`model-value`,`fullscreen`,`title`,`width`,`align-center`,`append-to`,`before-close`,`close-delay`,`close-on-click-modal`,`close-on-press-escape`,`destroy-on-close`,`draggable`,`lock-scroll`,`modal`,`modal-class`,`open-delay`,`overflow`,`top`,`trap-focus`,`z-index`]))}}),g={class:`ctc-drawer__header-content`},_={class:`ctc-drawer__title`},v={class:`ctc-drawer__header-actions`},y=[`aria-label`,`title`],b={class:`ctc-drawer__content`},x={key:0,class:`ctc-drawer__footer`},S=(0,e.defineComponent)({name:`CtcDrawer`,inheritAttrs:!1,__name:`index`,props:{modelValue:{type:Boolean,default:!1},fullscreen:{type:Boolean,default:!1},showFullscreen:{type:Boolean,default:!1},title:{type:String,default:``},size:{type:[String,Number],default:`480px`},direction:{type:String,default:`rtl`},appendTo:{type:[String,Object],default:void 0},beforeClose:{type:Function,default:void 0},closeOnClickModal:Boolean,closeOnPressEscape:Boolean,destroyOnClose:Boolean,lockScroll:Boolean,modal:{type:Boolean,default:!0},modalClass:{type:[String,Array,Object],default:void 0},showClose:{type:Boolean,default:!0},zIndex:Number},emits:[`update:modelValue`,`update:fullscreen`,`open`,`opened`,`close`,`closed`],setup(n,{emit:r}){let c=n,l=r,u=(0,e.useAttrs)(),d=(0,e.useSlots)(),{isFullscreen:f,toggleFullscreen:p}=s(c,l),m=(0,e.computed)(()=>f.value?`100%`:c.size);function h(e){l(`update:modelValue`,e)}function S(){if(c.beforeClose){c.beforeClose(e=>{e||l(`update:modelValue`,!1)});return}l(`update:modelValue`,!1)}return(r,s)=>((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(t.ElDrawer),(0,e.mergeProps)((0,e.unref)(u),{class:[`ctc-drawer`,{"is-fullscreen":(0,e.unref)(f)}],"model-value":n.modelValue,"append-to":n.appendTo,"before-close":n.beforeClose,"close-on-click-modal":n.closeOnClickModal,"close-on-press-escape":n.closeOnPressEscape,"destroy-on-close":n.destroyOnClose,direction:n.direction,"lock-scroll":n.lockScroll,modal:n.modal,"modal-class":n.modalClass,"show-close":!1,size:m.value,"z-index":n.zIndex,"header-class":`ctc-drawer__header`,"body-class":`ctc-drawer__body`,"onUpdate:modelValue":h,onOpen:s[1]||=e=>l(`open`),onOpened:s[2]||=e=>l(`opened`),onClose:s[3]||=e=>l(`close`),onClosed:s[4]||=e=>l(`closed`)}),{header:(0,e.withCtx)(()=>[(0,e.createElementVNode)(`div`,g,[(0,e.renderSlot)(r.$slots,`header`,{},()=>[(0,e.createElementVNode)(`span`,_,(0,e.toDisplayString)(n.title),1)])]),(0,e.createElementVNode)(`div`,v,[n.showFullscreen?((0,e.openBlock)(),(0,e.createElementBlock)(`button`,{key:0,class:`ctc-drawer__fullscreen-toggle`,type:`button`,"aria-label":(0,e.unref)(f)?`退出全屏`:`全屏显示`,title:(0,e.unref)(f)?`退出全屏`:`全屏显示`,"data-ctc-fullscreen-toggle":``,onClick:s[0]||=(...t)=>(0,e.unref)(p)&&(0,e.unref)(p)(...t)},[(0,e.createVNode)((0,e.unref)(t.ElIcon),{"aria-hidden":`true`},{default:(0,e.withCtx)(()=>[(0,e.unref)(f)?((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(o),{key:0})):((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(a),{key:1}))]),_:1})],8,y)):(0,e.createCommentVNode)(``,!0),n.showClose?((0,e.openBlock)(),(0,e.createElementBlock)(`button`,{key:1,class:`ctc-drawer__close`,type:`button`,"aria-label":`关闭抽屉`,title:`关闭`,"data-ctc-close":``,onClick:S},[(0,e.createVNode)((0,e.unref)(t.ElIcon),{"aria-hidden":`true`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(i))]),_:1})])):(0,e.createCommentVNode)(``,!0)])]),default:(0,e.withCtx)(()=>[(0,e.createElementVNode)(`div`,{class:(0,e.normalizeClass)([`ctc-drawer__layout`,{"has-footer":(0,e.unref)(d).footer}])},[(0,e.createElementVNode)(`div`,b,[(0,e.renderSlot)(r.$slots,`default`)]),(0,e.unref)(d).footer?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,x,[(0,e.renderSlot)(r.$slots,`footer`)])):(0,e.createCommentVNode)(``,!0)],2)]),_:3},16,[`class`,`model-value`,`append-to`,`before-close`,`close-on-click-modal`,`close-on-press-escape`,`destroy-on-close`,`direction`,`lock-scroll`,`modal`,`modal-class`,`size`,`z-index`]))}}),C=(0,e.defineComponent)({name:`CtcFlex`,__name:`index`,props:{direction:{default:`column`},fill:{type:Boolean,default:!1},grow:{default:1},justify:{default:`flex-start`},align:{default:`stretch`},gap:{default:0},scroll:{type:[Boolean,String],default:!1}},setup(t){let n=t,r=(0,e.computed)(()=>{let e={alignItems:n.align,flexDirection:n.direction,justifyContent:n.justify};return n.gap!==0&&n.gap!==``&&(e.gap=typeof n.gap==`number`?`${n.gap}px`:n.gap),n.fill&&(e.flex=n.grow),n.direction===`column`?e.minHeight=`0`:e.minWidth=`0`,n.scroll===`x`?(e.overflowX=`auto`,e.overflowY=`hidden`):n.scroll===`y`?(e.overflowX=`hidden`,e.overflowY=`auto`):n.scroll&&(e.overflow=`auto`),e});return(t,n)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{class:`ctc-flex`,style:(0,e.normalizeStyle)(r.value)},[(0,e.renderSlot)(t.$slots,`default`)],4))}}),w=new Set([`selection`,`index`,`expand`]),T=new Map,E=(0,e.defineComponent)({name:`CtcTableColumn`,props:{column:{type:Object,required:!0},slots:{type:Object,required:!0}},setup(n){let r=e=>e.slot??e.prop,i=(e,t)=>{if(!t)return;let n=T.get(t);return n||(n=t.replace(/\[(?:'([^']*)'|"([^"]*)"|([^\]]+))\]/g,`.$1$2$3`).split(`.`).filter(Boolean),T.set(t,n)),n.reduce((e,t)=>{if(!(typeof e!=`object`||!e))return e[t]},e)},a=(e,t)=>{let a=r(e),o=a?n.slots[a]:void 0;if(o)return o({...t,config:e});if(e.renderCell)return e.renderCell(t);if(e.formatter){let n=i(t.row,e.prop??e.property);return e.formatter(t.row,t.column,n,t.$index)}},o=(e,t)=>{let r=e.headerSlot?n.slots[e.headerSlot]:void 0;return r?r({...t,config:e}):e.renderHeader?.(t)},s=r=>{let{children:i,slot:c,headerSlot:l,renderCell:u,renderHeader:d,formatter:f,...p}=r,m=!!i?.length,h=c??r.prop,g=!!(h&&n.slots[h]||u||f),_=!!(l&&n.slots[l]||d),v=r.type?w.has(r.type):!1;return(0,e.h)(t.ElTableColumn,p,{default:m?()=>i?.map(s):g&&!v?e=>a(r,e):void 0,header:_?e=>o(r,e):void 0})};return()=>s(n.column)}});function D(e,t){return t.replace(/\[(?:'([^']*)'|"([^"]*)"|([^\]]+))\]/g,`.$1$2$3`).split(`.`).filter(Boolean).reduce((e,t)=>{if(!(typeof e!=`object`||!e))return e[t]},e)}function O(e,t,n){return n.every(n=>Object.is(D(e,n),D(t,n)))}function k(e,t){let n=new Map(t.filter(e=>e.prop&&e.by.length>0).map(e=>[e.prop,e]));return({column:t,rowIndex:r})=>{if(t.type===`selection`||t.type===`index`||t.type===`expand`)return;let i=t.property,a=i?n.get(i):void 0;if(!a)return;let o=e[r];if(!o)return;if(r>0&&O(e[r-1],o,a.by))return{rowspan:0,colspan:0};let s=1;for(;r+s<e.length&&O(o,e[r+s],a.by);)s+=1;return{rowspan:s,colspan:1}}}var A={key:0,class:`ctc-table__pagination`},j=(0,e.defineComponent)({name:`CtcTable`,inheritAttrs:!1,__name:`index`,props:{autoHeight:{type:Boolean,default:!1},columns:{default:()=>[]},currentPage:{default:1},data:{default:()=>[]},height:{},loading:{type:Boolean,default:!1},merge:{default:()=>[]},pageSize:{},pagination:{type:Boolean,default:!1},paginationProps:{default:()=>({})},total:{default:0}},emits:[`update:currentPage`,`update:pageSize`,`current-change`,`page-change`,`page-size-change`,`prev-click`,`next-click`],setup(n,{expose:i,emit:a}){let o=t.ElTable,s=n,c=a,l=(0,e.useAttrs)(),u=(0,e.useSlots)(),d=r(),f=(0,e.useTemplateRef)(`tableRef`),p=new Set(`currentPage.pageSize.total.layout.pageSizes.pagerCount.background.disabled.hideOnSinglePage.small.prevText.nextText.prevIcon.nextIcon.popperClass.popperStyle.teleported.appendSizeTo.pageCount.defaultCurrentPage.defaultPageSize.onUpdate:currentPage.onUpdate:pageSize.onCurrentChange.onSizeChange.onPrevClick.onNextClick`.split(`.`)),m=(0,e.computed)(()=>{let e=Object.fromEntries(Object.entries(l).filter(([e])=>!p.has(e)&&e!==`height`&&e!==`spanMethod`&&e!==`span-method`)),t={};return!(`border`in l)&&d.table?.border!==void 0&&(t.border=d.table.border),!(`stripe`in l)&&d.table?.stripe!==void 0&&(t.stripe=d.table.stripe),{...t,...e}}),h=(0,e.computed)(()=>s.pageSize??d.table?.pageSize??10),g=(0,e.computed)(()=>({...d.table?.paginationProps,...s.paginationProps})),_=(0,e.computed)(()=>{if(typeof s.height==`string`||typeof s.height==`number`)return s.height}),v=(0,e.computed)(()=>s.autoHeight&&_.value===void 0),y=(0,e.computed)(()=>_.value??(v.value?`100%`:void 0)),b=(0,e.computed)(()=>{let e=l.spanMethod??l[`span-method`];if(typeof e==`function`)return e;if(s.merge.length!==0)return k(s.data,s.merge)});function x(e,t){c(`current-change`,e,t)}return i({elTableRef:f,clearSelection:()=>f.value?.clearSelection(),toggleRowSelection:(e,t)=>f.value?.toggleRowSelection(e,t),toggleAllSelection:()=>f.value?.toggleAllSelection(),toggleRowExpansion:(e,t)=>f.value?.toggleRowExpansion(e,t),setCurrentRow:e=>f.value?.setCurrentRow(e),clearSort:()=>f.value?.clearSort(),clearFilter:e=>f.value?.clearFilter(e),doLayout:()=>f.value?.doLayout(),sort:(e,t)=>f.value?.sort(e,t),scrollTo:(e,t)=>f.value?.scrollTo(e,t),setScrollTop:e=>f.value?.setScrollTop(e),setScrollLeft:e=>f.value?.setScrollLeft(e)}),(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{class:(0,e.normalizeClass)([`ctc-table`,{"ctc-table--auto-height":v.value}])},[(0,e.withDirectives)(((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(o),(0,e.mergeProps)({ref_key:`tableRef`,ref:f},m.value,{data:s.data,height:y.value,"span-method":b.value,onCurrentChange:x}),(0,e.createSlots)({default:(0,e.withCtx)(()=>[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(s.columns,(t,n)=>((0,e.openBlock)(),(0,e.createBlock)(E,{key:t.prop??t.property??t.label??n,column:t,slots:(0,e.unref)(u)},null,8,[`column`,`slots`]))),128))]),_:2},[(0,e.unref)(u).empty?{name:`empty`,fn:(0,e.withCtx)(()=>[(0,e.renderSlot)(n.$slots,`empty`)]),key:`0`}:void 0,(0,e.unref)(u).append?{name:`append`,fn:(0,e.withCtx)(()=>[(0,e.renderSlot)(n.$slots,`append`)]),key:`1`}:void 0]),1040,[`data`,`height`,`span-method`])),[[(0,e.unref)(t.vLoading),s.loading]]),s.pagination?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,A,[(0,e.createVNode)((0,e.unref)(t.ElPagination),(0,e.mergeProps)(g.value,{"current-page":s.currentPage,"page-size":h.value,total:s.total,"onUpdate:currentPage":r[0]||=e=>c(`update:currentPage`,e),"onUpdate:pageSize":r[1]||=e=>c(`update:pageSize`,e),onCurrentChange:r[2]||=e=>c(`page-change`,e),onSizeChange:r[3]||=e=>c(`page-size-change`,e),onPrevClick:r[4]||=e=>c(`prev-click`,e),onNextClick:r[5]||=e=>c(`next-click`,e)}),null,16,[`current-page`,`page-size`,`total`]),(0,e.renderSlot)(n.$slots,`pagination`)])):(0,e.createCommentVNode)(``,!0)],2))}}),M={key:0,class:`ctc-report__bar-left`},N={key:1,class:`ctc-report__bar-right`},P=(0,e.defineComponent)({__name:`ReportBar`,setup(t){return(t,n)=>((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(C),{class:`ctc-report__bar`,direction:`row`,align:`center`,justify:`space-between`},{default:(0,e.withCtx)(()=>[(0,e.renderSlot)(t.$slots,`default`,{},()=>[t.$slots.left?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,M,[(0,e.renderSlot)(t.$slots,`left`)])):(0,e.createCommentVNode)(``,!0),t.$slots.right?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,N,[(0,e.renderSlot)(t.$slots,`right`)])):(0,e.createCommentVNode)(``,!0)])]),_:3}))}}),F={key:0,class:`ctc-report__container-top`},I={key:0,class:`ctc-report__table-bar`},L={key:0,class:`ctc-report__title`},R={key:1,class:`ctc-report__before`},z={key:2,class:`ctc-report__after`},B=(0,e.defineComponent)({name:`CtcReport`,inheritAttrs:!1,__name:`index`,props:{title:{default:``},autoHeight:{type:Boolean,default:!0},height:{},margin:{default:0},padding:{default:0},containerMargin:{default:0},containerPadding:{default:`var(--ctc-space-4)`}},emits:[`update:currentPage`,`update:pageSize`,`current-change`,`page-change`,`page-size-change`,`prev-click`,`next-click`],setup(t,{expose:n,emit:r}){let i=t,a=r,o=(0,e.useSlots)(),s=(0,e.useAttrs)(),c=(0,e.useTemplateRef)(`tableRef`),l=new Set([`custom-tool-bar`,`tool-bar`,`tool-bar-left`,`tool-bar-right`,`search-bar`,`search-bar-left`,`search-bar-right`,`container-top`,`table-bar`,`table-title`,`table-info-left`,`table-info-right`,`default`,`table-empty`,`append-table`]);function u(e){return typeof e==`number`?`${e}px`:typeof e==`string`?e:e.map(e=>`${e}px`).join(` `)}let d=(0,e.computed)(()=>({margin:u(i.margin),padding:u(i.padding)})),f=(0,e.computed)(()=>({margin:u(i.containerMargin),padding:u(i.containerPadding)}));function p(){return Object.fromEntries(Object.entries(s).filter(([e])=>e!==`class`&&e!==`style`))}function m(){return Object.keys(o).filter(e=>!l.has(e)&&!(e===`empty`&&o[`table-empty`]))}function h(e,t){a(`current-change`,e,t)}return n({tableRef:c,clearSelection:()=>c.value?.clearSelection(),toggleRowSelection:(e,t)=>c.value?.toggleRowSelection(e,t),toggleAllSelection:()=>c.value?.toggleAllSelection(),toggleRowExpansion:(e,t)=>c.value?.toggleRowExpansion(e,t),setCurrentRow:e=>c.value?.setCurrentRow(e),clearSort:()=>c.value?.clearSort(),clearFilter:e=>c.value?.clearFilter(e),doLayout:()=>c.value?.doLayout(),sort:(e,t)=>c.value?.sort(e,t),scrollTo:(e,t)=>c.value?.scrollTo(e,t),setScrollTop:e=>c.value?.setScrollTop(e),setScrollLeft:e=>c.value?.setScrollLeft(e)}),(t,n)=>((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(C),{class:(0,e.normalizeClass)([`ctc-report`,(0,e.unref)(s).class]),style:(0,e.normalizeStyle)((0,e.unref)(s).style)},{default:(0,e.withCtx)(()=>[o[`custom-tool-bar`]||o[`tool-bar`]||o[`tool-bar-left`]||o[`tool-bar-right`]||o[`search-bar`]||o[`search-bar-left`]||o[`search-bar-right`]?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:0,class:`ctc-report__header`,style:(0,e.normalizeStyle)(d.value)},[o[`custom-tool-bar`]?(0,e.renderSlot)(t.$slots,`custom-tool-bar`,{},void 0,void 0,0):o[`tool-bar`]||o[`tool-bar-left`]||o[`tool-bar-right`]?((0,e.openBlock)(),(0,e.createBlock)(P,{key:1,class:`ctc-report__toolbar`},(0,e.createSlots)({_:2},[o[`tool-bar`]?{name:`default`,fn:(0,e.withCtx)(()=>[(0,e.renderSlot)(t.$slots,`tool-bar`)]),key:`0`}:void 0,o[`tool-bar-left`]?{name:`left`,fn:(0,e.withCtx)(()=>[(0,e.renderSlot)(t.$slots,`tool-bar-left`)]),key:`1`}:void 0,o[`tool-bar-right`]?{name:`right`,fn:(0,e.withCtx)(()=>[(0,e.renderSlot)(t.$slots,`tool-bar-right`)]),key:`2`}:void 0]),1024)):(0,e.createCommentVNode)(``,!0),o[`search-bar`]||o[`search-bar-left`]||o[`search-bar-right`]?((0,e.openBlock)(),(0,e.createBlock)(P,{key:2,class:`ctc-report__search`},(0,e.createSlots)({_:2},[o[`search-bar`]?{name:`default`,fn:(0,e.withCtx)(()=>[(0,e.renderSlot)(t.$slots,`search-bar`)]),key:`0`}:void 0,o[`search-bar-left`]?{name:`left`,fn:(0,e.withCtx)(()=>[(0,e.renderSlot)(t.$slots,`search-bar-left`)]),key:`1`}:void 0,o[`search-bar-right`]?{name:`right`,fn:(0,e.withCtx)(()=>[(0,e.renderSlot)(t.$slots,`search-bar-right`)]),key:`2`}:void 0]),1024)):(0,e.createCommentVNode)(``,!0)],4)):(0,e.createCommentVNode)(``,!0),(0,e.createVNode)((0,e.unref)(C),{class:`ctc-report__container`,fill:``,style:(0,e.normalizeStyle)(f.value)},{default:(0,e.withCtx)(()=>[o[`container-top`]?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,F,[(0,e.renderSlot)(t.$slots,`container-top`)])):(0,e.createCommentVNode)(``,!0),(0,e.createVNode)((0,e.unref)(C),{class:`ctc-report__body`,fill:``},{default:(0,e.withCtx)(()=>[o[`table-bar`]||o[`table-title`]||i.title||o[`table-info-left`]||o[`table-info-right`]?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,I,[o[`table-bar`]?(0,e.renderSlot)(t.$slots,`table-bar`,{},void 0,void 0,0):((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:1},[o[`table-title`]||i.title?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,L,[(0,e.renderSlot)(t.$slots,`table-title`,{},()=>[(0,e.createElementVNode)(`h2`,null,(0,e.toDisplayString)(i.title),1)])])):(0,e.createCommentVNode)(``,!0),o[`table-info-left`]||o[`table-info-right`]?((0,e.openBlock)(),(0,e.createBlock)(P,{key:1,class:`ctc-report__info`},(0,e.createSlots)({_:2},[o[`table-info-left`]?{name:`left`,fn:(0,e.withCtx)(()=>[(0,e.renderSlot)(t.$slots,`table-info-left`)]),key:`0`}:void 0,o[`table-info-right`]?{name:`right`,fn:(0,e.withCtx)(()=>[(0,e.renderSlot)(t.$slots,`table-info-right`)]),key:`1`}:void 0]),1024)):(0,e.createCommentVNode)(``,!0)],64))])):(0,e.createCommentVNode)(``,!0),o.default?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,R,[(0,e.renderSlot)(t.$slots,`default`)])):(0,e.createCommentVNode)(``,!0),(0,e.createElementVNode)(`div`,{class:(0,e.normalizeClass)([`ctc-report__table`,{"ctc-report__table--auto-height":i.autoHeight&&i.height===void 0}])},[(0,e.createVNode)((0,e.unref)(j),(0,e.mergeProps)({ref_key:`tableRef`,ref:c},p(),{"auto-height":i.autoHeight,height:i.height,"onUpdate:currentPage":n[0]||=e=>a(`update:currentPage`,e),"onUpdate:pageSize":n[1]||=e=>a(`update:pageSize`,e),onCurrentChange:h,onPageChange:n[2]||=e=>a(`page-change`,e),onPageSizeChange:n[3]||=e=>a(`page-size-change`,e),onPrevClick:n[4]||=e=>a(`prev-click`,e),onNextClick:n[5]||=e=>a(`next-click`,e)}),(0,e.createSlots)({_:2},[o[`table-empty`]?{name:`empty`,fn:(0,e.withCtx)(()=>[(0,e.renderSlot)(t.$slots,`table-empty`)]),key:`0`}:void 0,(0,e.renderList)(m(),n=>({name:n,fn:(0,e.withCtx)(r=>[(0,e.renderSlot)(t.$slots,n,(0,e.normalizeProps)((0,e.guardReactiveProps)(r)))])}))]),1040,[`auto-height`,`height`])],2),o[`append-table`]?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,z,[(0,e.renderSlot)(t.$slots,`append-table`)])):(0,e.createCommentVNode)(``,!0)]),_:3})]),_:3},8,[`style`])]),_:3},8,[`class`,`style`]))}}),V=[h,S,C,j,B],H={install(e,t={}){e.provide(n,t),V.forEach(t=>{e.component(t.name??``,t)})}};exports.CtcComponentsUi=H,exports.default=H,exports.CtcDialog=h,exports.CtcDrawer=S,exports.CtcFlex=C,exports.CtcReport=B,exports.CtcTable=j;
package/dist/index.d.ts CHANGED
@@ -2,10 +2,13 @@ import { ComponentOptionsMixin } from 'vue';
2
2
  import { ComponentProvideOptions } from 'vue';
3
3
  import { DefineComponent } from 'vue';
4
4
  import { EmitsOptions } from 'vue';
5
+ import { EmitsToProps } from 'vue';
5
6
  import { ExtractPropTypes } from 'vue';
6
7
  import { Plugin as Plugin_2 } from 'vue';
7
8
  import { PropType } from 'vue';
8
9
  import { PublicProps } from 'vue';
10
+ import { Slot } from 'vue';
11
+ import { SlotsType } from 'vue';
9
12
  import { TableInstance } from 'element-plus';
10
13
  import { TableProps } from 'element-plus';
11
14
  import { VNode } from 'vue';
@@ -485,6 +488,63 @@ export declare interface CtcFlexProps {
485
488
 
486
489
  export declare type CtcFlexScroll = boolean | 'x' | 'y';
487
490
 
491
+ export declare const CtcReport: CtcReportComponent;
492
+
493
+ declare type CtcReportComponent = DefineComponent<CtcReportPublicProps, CtcReportInstance, {}, {}, {}, {}, {}, CtcTableEmits, string, PublicProps, CtcReportPublicProps & EmitsToProps<CtcTableEmits>, {}, SlotsType<CtcReportSlots>>;
494
+
495
+ export declare interface CtcReportInstance {
496
+ tableRef: CtcTableInstance | null;
497
+ clearSelection: () => void;
498
+ toggleRowSelection: (row: Record<string, unknown>, selected?: boolean) => void;
499
+ toggleAllSelection: () => void;
500
+ toggleRowExpansion: (row: Record<string, unknown>, expanded?: boolean) => void;
501
+ setCurrentRow: (row?: Record<string, unknown>) => void;
502
+ clearSort: () => void;
503
+ clearFilter: (columnKey?: string) => void;
504
+ doLayout: () => void;
505
+ sort: (prop: string, order: 'ascending' | 'descending') => void;
506
+ scrollTo: (options: ScrollToOptions | number, yCoord?: number) => void;
507
+ setScrollTop: (top: number) => void;
508
+ setScrollLeft: (left: number) => void;
509
+ }
510
+
511
+ export declare interface CtcReportProps {
512
+ title?: string;
513
+ autoHeight?: boolean;
514
+ height?: string | number;
515
+ margin?: CtcReportSpacing;
516
+ padding?: CtcReportSpacing;
517
+ containerMargin?: CtcReportSpacing;
518
+ containerPadding?: CtcReportSpacing;
519
+ }
520
+
521
+ export declare type CtcReportPublicProps = CtcReportProps & CtcTablePublicProps;
522
+
523
+ export declare interface CtcReportSlots {
524
+ 'custom-tool-bar'?: Slot;
525
+ 'tool-bar'?: Slot;
526
+ 'tool-bar-left'?: Slot;
527
+ 'tool-bar-right'?: Slot;
528
+ 'search-bar'?: Slot;
529
+ 'search-bar-left'?: Slot;
530
+ 'search-bar-right'?: Slot;
531
+ 'container-top'?: Slot;
532
+ 'table-bar'?: Slot;
533
+ 'table-title'?: Slot;
534
+ 'table-info-left'?: Slot;
535
+ 'table-info-right'?: Slot;
536
+ default?: Slot;
537
+ /** @deprecated 推荐直接使用 empty 插槽 */
538
+ 'table-empty'?: Slot;
539
+ 'append-table'?: Slot;
540
+ empty?: Slot;
541
+ append?: Slot;
542
+ pagination?: Slot;
543
+ [name: string]: Slot | undefined;
544
+ }
545
+
546
+ export declare type CtcReportSpacing = number | string | readonly [number] | readonly [number, number] | readonly [number, number, number] | readonly [number, number, number, number];
547
+
488
548
  export declare const CtcTable: CtcTableComponent;
489
549
 
490
550
  export declare interface CtcTableCellScope<Row extends object = Record<string, unknown>> {