@ctc-front/components-ui-next 0.1.3 → 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
@@ -6,12 +6,15 @@
6
6
 
7
7
  - `CtcDialog`、`CtcDrawer`、`CtcFlex`
8
8
  - 配置化 `CtcTable`:多级表头、插槽、render 函数、受控分页、行合并
9
- - Element Plus 浅色/深色主题兼容
9
+ - Element Plus 原生表格属性类型、滚动方法与 `elTableRef` 原生实例入口
10
+ - `app.use(CtcComponentsUi, options)` 团队默认配置
11
+ - `CtcReport` 报表布局:工具栏、查询区、标题、统计区、表格前后区域组合,完整类型和表格实例入口
12
+ - 白色、黑色、蓝色大屏三套主题,适配原生控件、弹层、状态提示和空状态
10
13
 
11
14
  ## 安装
12
15
 
13
16
  ```bash
14
- 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
15
18
  ```
16
19
 
17
20
  ## 使用
@@ -19,19 +22,19 @@ pnpm add @ctc-front/components-ui-next element-plus vue
19
22
  ```ts
20
23
  import { createApp } from 'vue'
21
24
  import ElementPlus from 'element-plus'
25
+ import 'element-plus/dist/index.css'
26
+ import 'element-plus/theme-chalk/dark/css-vars.css'
22
27
  import '@ctc-front/components-ui-next/style.css'
23
28
  import CtcComponentsUi from '@ctc-front/components-ui-next'
24
29
  import App from './App.vue'
25
30
 
26
- createApp(App)
27
- .use(ElementPlus)
28
- .use(CtcComponentsUi)
29
- .mount('#app')
31
+ createApp(App).use(ElementPlus).use(CtcComponentsUi).mount('#app')
30
32
  ```
31
33
 
32
34
  如果宿主使用 Element Plus 按需加载,请改用包含 Element Plus 基础样式的入口:
33
35
 
34
36
  ```ts
37
+ import 'element-plus/theme-chalk/dark/css-vars.css'
35
38
  import '@ctc-front/components-ui-next/style-with-element-plus.css'
36
39
  ```
37
40
 
@@ -40,7 +43,7 @@ import '@ctc-front/components-ui-next/style-with-element-plus.css'
40
43
  也可以按组件导入:
41
44
 
42
45
  ```ts
43
- import { CtcDialog, CtcTable } from '@ctc-front/components-ui-next'
46
+ import { CtcDialog, CtcTable, CtcReport } from '@ctc-front/components-ui-next'
44
47
  ```
45
48
 
46
49
  ## CtcTable 行合并
@@ -59,18 +62,45 @@ import { CtcDialog, CtcTable } from '@ctc-front/components-ui-next'
59
62
  />
60
63
  ```
61
64
 
62
- 只有相邻行的 `by` 字段全部相同,目标列才会纵向合并。`selection`、`index`、`expand` 特殊列不参与配置合并;原生 `span-method` 传入后优先使用。当前版本暂不支持横向合并。
65
+ 只有相邻行的 `by` 字段全部相同,目标列才会纵向合并。`selection`、`index`、`expand` 特殊列不参与配置合并;原生 `span-method` 传入后优先使用。merge 配置仅支持纵向合并;横向合并可使用原生 span-method。
63
66
 
64
67
  ## 主题
65
68
 
66
- 组件会跟随宿主 Element Plus 的主题变量。深色模式按 Element Plus 方式配置:
69
+ 默认启用 CTC 白色主题;黑色与蓝色大屏同时使用 Element Plus 官方暗色基础变量。主题标记放在 html,让传送到 body 的弹层也能同步:
67
70
 
68
71
  ```ts
69
- 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')
70
78
  ```
71
79
 
80
+ 若需要沿用宿主自己的品牌色,使用 `data-ctc-theme-mode="inherit"`,详见[主题与大屏模式](./docs/guide/theme.md)。
81
+
72
82
  详细属性、插槽、分页和主题说明见[开始使用](./docs/guide/getting-started.md)。各个已发布版本的功能点见[更新日志](./CHANGELOG.md)和[版本说明](./docs/guide/releases.md)。
73
83
 
74
84
  ## 版本说明
75
85
 
76
- 当前为 `0.1.3`,适用于 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=(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`})]))}}),r=(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`})]))}}),i=(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 a(t,n){let r=(0,e.computed)(()=>t.fullscreen??!1);function i(){n(`update:fullscreen`,!r.value)}return{isFullscreen:r,toggleFullscreen:i}}function o(e,t,n){return Math.min(Math.max(e,t),n)}function s(t,n){let r=(0,e.ref)(!1),i=(0,e.ref)({}),a=()=>{};function s(){a(),a=()=>{}}function c(e){if(!t.resizable||e.button!==0)return;let c=e.currentTarget.closest(`.ctc-dialog`);if(!c)return;e.preventDefault(),s();let l=c.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(o(l.width+e.clientX-m,u,f)),a=Math.round(o(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 _(){s()}window.addEventListener(`pointermove`,g),window.addEventListener(`pointerup`,_,{once:!0}),a=()=>{window.removeEventListener(`pointermove`,g),window.removeEventListener(`pointerup`,_)}}return(0,e.onBeforeUnmount)(s),{isResized:r,resizeStyle:i,startResize:c}}var c={class:`ctc-dialog__header-content`},l={class:`ctc-dialog__title`},u={class:`ctc-dialog__header-actions`},d=[`aria-label`,`title`],f={class:`ctc-dialog__content`},p=(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:Boolean,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(o,{emit:p}){let m=o,h=p,g=(0,e.useAttrs)(),_=(0,e.useSlots)(),{isFullscreen:v,toggleFullscreen:y}=a(m,h),{isResized:b,resizeStyle:x,startResize:S}=s(m,h),C=(0,e.computed)(()=>v.value?{}:x.value),w=(0,e.computed)(()=>b.value&&!v.value);function T(e){h(`update:modelValue`,e)}function E(){if(m.beforeClose){m.beforeClose(e=>{e||h(`update:modelValue`,!1)});return}h(`update:modelValue`,!1)}return(a,s)=>((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(t.ElDialog),(0,e.mergeProps)((0,e.unref)(g),{class:[`ctc-dialog`,{"ctc-dialog--content-fill":o.contentFill,"ctc-dialog--resizable":o.resizable,"ctc-dialog--resized":w.value}],style:C.value,"model-value":o.modelValue,fullscreen:(0,e.unref)(v),title:o.title,width:o.width,"align-center":o.alignCenter,"append-to":o.appendTo,"before-close":o.beforeClose,"close-delay":o.closeDelay,"close-on-click-modal":o.closeOnClickModal,"close-on-press-escape":o.closeOnPressEscape,"destroy-on-close":o.destroyOnClose,draggable:o.draggable,"lock-scroll":o.lockScroll,modal:o.modal,"modal-class":o.modalClass,"open-delay":o.openDelay,overflow:o.overflow,"show-close":!1,top:o.top,"trap-focus":o.trapFocus,"z-index":o.zIndex,"header-class":`ctc-dialog__header`,"body-class":`ctc-dialog__body`,"footer-class":`ctc-dialog__footer`,"onUpdate:modelValue":T,onOpen:s[2]||=e=>h(`open`),onOpened:s[3]||=e=>h(`opened`),onClose:s[4]||=e=>h(`close`),onClosed:s[5]||=e=>h(`closed`)}),(0,e.createSlots)({header:(0,e.withCtx)(()=>[(0,e.createElementVNode)(`div`,c,[(0,e.renderSlot)(a.$slots,`header`,{},()=>[(0,e.createElementVNode)(`span`,l,(0,e.toDisplayString)(o.title),1)])]),(0,e.createElementVNode)(`div`,u,[o.showFullscreen?((0,e.openBlock)(),(0,e.createElementBlock)(`button`,{key:0,class:`ctc-dialog__fullscreen-toggle`,type:`button`,"aria-label":(0,e.unref)(v)?`退出全屏`:`全屏显示`,title:(0,e.unref)(v)?`退出全屏`:`全屏显示`,"data-ctc-fullscreen-toggle":``,onClick:s[0]||=(...t)=>(0,e.unref)(y)&&(0,e.unref)(y)(...t)},[(0,e.createVNode)((0,e.unref)(t.ElIcon),{"aria-hidden":`true`},{default:(0,e.withCtx)(()=>[(0,e.unref)(v)?((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(i),{key:0})):((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(r),{key:1}))]),_:1})],8,d)):(0,e.createCommentVNode)(``,!0),o.showClose?((0,e.openBlock)(),(0,e.createElementBlock)(`button`,{key:1,class:`ctc-dialog__close`,type:`button`,"aria-label":`关闭弹窗`,title:`关闭`,"data-ctc-close":``,onClick:E},[(0,e.createVNode)((0,e.unref)(t.ElIcon),{"aria-hidden":`true`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(n))]),_:1})])):(0,e.createCommentVNode)(``,!0)])]),default:(0,e.withCtx)(()=>[(0,e.createElementVNode)(`div`,f,[(0,e.renderSlot)(a.$slots,`default`)]),o.resizable&&!(0,e.unref)(v)?((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)(S)&&(0,e.unref)(S)(...t)},null,32)):(0,e.createCommentVNode)(``,!0)]),_:2},[(0,e.unref)(_).footer?{name:`footer`,fn:(0,e.withCtx)(()=>[(0,e.renderSlot)(a.$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`]))}}),m={class:`ctc-drawer__header-content`},h={class:`ctc-drawer__title`},g={class:`ctc-drawer__header-actions`},_=[`aria-label`,`title`],v={class:`ctc-drawer__content`},y={key:0,class:`ctc-drawer__footer`},b=(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(o,{emit:s}){let c=o,l=s,u=(0,e.useAttrs)(),d=(0,e.useSlots)(),{isFullscreen:f,toggleFullscreen:p}=a(c,l),b=(0,e.computed)(()=>f.value?`100%`:c.size);function x(e){l(`update:modelValue`,e)}function S(){if(c.beforeClose){c.beforeClose(e=>{e||l(`update:modelValue`,!1)});return}l(`update:modelValue`,!1)}return(a,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":o.modelValue,"append-to":o.appendTo,"before-close":o.beforeClose,"close-on-click-modal":o.closeOnClickModal,"close-on-press-escape":o.closeOnPressEscape,"destroy-on-close":o.destroyOnClose,direction:o.direction,"lock-scroll":o.lockScroll,modal:o.modal,"modal-class":o.modalClass,"show-close":!1,size:b.value,"z-index":o.zIndex,"header-class":`ctc-drawer__header`,"body-class":`ctc-drawer__body`,"onUpdate:modelValue":x,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`,m,[(0,e.renderSlot)(a.$slots,`header`,{},()=>[(0,e.createElementVNode)(`span`,h,(0,e.toDisplayString)(o.title),1)])]),(0,e.createElementVNode)(`div`,g,[o.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)(i),{key:0})):((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(r),{key:1}))]),_:1})],8,_)):(0,e.createCommentVNode)(``,!0),o.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)(n))]),_: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`,v,[(0,e.renderSlot)(a.$slots,`default`)]),(0,e.unref)(d).footer?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,y,[(0,e.renderSlot)(a.$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`]))}}),x=(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))}}),S=new Set([`selection`,`index`,`expand`]),C=(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 t.replace(/\[(?:'([^']*)'|"([^"]*)"|([^\]]+))\]/g,`.$1$2$3`).split(`.`).filter(Boolean).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?S.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 w(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 T(e,t,n){return n.every(n=>Object.is(w(e,n),w(t,n)))}function E(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&&T(e[r-1],o,a.by))return{rowspan:0,colspan:0};let s=1;for(;r+s<e.length&&T(o,e[r+s],a.by);)s+=1;return{rowspan:s,colspan:1}}}var D={key:0,class:`ctc-table__pagination`},O=(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:{default:10},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:r,emit:i}){let a=n,o=i,s=(0,e.useAttrs)(),c=(0,e.useSlots)(),l=(0,e.useTemplateRef)(`tableRef`),u=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(`.`)),d=(0,e.computed)(()=>Object.fromEntries(Object.entries(s).filter(([e])=>!u.has(e)&&e!==`height`&&e!==`spanMethod`))),f=(0,e.computed)(()=>{if(typeof a.height==`string`||typeof a.height==`number`)return a.height}),p=(0,e.computed)(()=>a.autoHeight&&f.value===void 0),m=(0,e.computed)(()=>f.value??(p.value?`100%`:void 0)),h=(0,e.computed)(()=>{if(typeof s.spanMethod==`function`)return s.spanMethod;if(a.merge.length!==0)return E(a.data,a.merge)});function g(e,t){o(`current-change`,e,t)}return r({clearSelection:()=>l.value?.clearSelection(),toggleRowSelection:(e,t)=>l.value?.toggleRowSelection(e,t),toggleAllSelection:()=>l.value?.toggleAllSelection(),toggleRowExpansion:(e,t)=>l.value?.toggleRowExpansion(e,t),setCurrentRow:e=>l.value?.setCurrentRow(e),clearSort:()=>l.value?.clearSort(),clearFilter:e=>l.value?.clearFilter(e),doLayout:()=>l.value?.doLayout(),sort:(e,t)=>l.value?.sort(e,t)}),(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{class:(0,e.normalizeClass)([`ctc-table`,{"ctc-table--auto-height":p.value}])},[(0,e.withDirectives)(((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(t.ElTable),(0,e.mergeProps)({ref_key:`tableRef`,ref:l},d.value,{data:a.data,height:m.value,"span-method":h.value,onCurrentChange:g}),(0,e.createSlots)({default:(0,e.withCtx)(()=>[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(a.columns,(t,n)=>((0,e.openBlock)(),(0,e.createBlock)(C,{key:t.prop??t.property??t.label??n,column:t,slots:(0,e.unref)(c)},null,8,[`column`,`slots`]))),128))]),_:2},[(0,e.unref)(c).empty?{name:`empty`,fn:(0,e.withCtx)(()=>[(0,e.renderSlot)(n.$slots,`empty`)]),key:`0`}:void 0,(0,e.unref)(c).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),a.loading]]),a.pagination?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,D,[(0,e.createVNode)((0,e.unref)(t.ElPagination),(0,e.mergeProps)(a.paginationProps,{"current-page":a.currentPage,"page-size":a.pageSize,total:a.total,"onUpdate:currentPage":r[0]||=e=>o(`update:currentPage`,e),"onUpdate:pageSize":r[1]||=e=>o(`update:pageSize`,e),onCurrentChange:r[2]||=e=>o(`page-change`,e),onSizeChange:r[3]||=e=>o(`page-size-change`,e),onPrevClick:r[4]||=e=>o(`prev-click`,e),onNextClick:r[5]||=e=>o(`next-click`,e)}),null,16,[`current-page`,`page-size`,`total`]),(0,e.renderSlot)(n.$slots,`pagination`)])):(0,e.createCommentVNode)(``,!0)],2))}}),k=[p,b,x,O],A={install(e){k.forEach(t=>{e.component(t.name??``,t)})}};exports.CtcComponentsUi=A,exports.default=A,exports.CtcDialog=p,exports.CtcDrawer=b,exports.CtcFlex=x,exports.CtcTable=O;
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,15 @@ 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';
12
+ import { TableInstance } from 'element-plus';
13
+ import { TableProps } from 'element-plus';
9
14
  import { VNode } from 'vue';
10
15
  import { VNodeChild } from 'vue';
11
16
 
@@ -52,7 +57,10 @@ type: PropType<CtcDialogBeforeClose>;
52
57
  default: undefined;
53
58
  };
54
59
  closeDelay: NumberConstructor;
55
- closeOnClickModal: BooleanConstructor;
60
+ closeOnClickModal: {
61
+ type: BooleanConstructor;
62
+ default: undefined;
63
+ };
56
64
  closeOnPressEscape: BooleanConstructor;
57
65
  contentFill: {
58
66
  type: BooleanConstructor;
@@ -132,7 +140,10 @@ type: PropType<CtcDialogBeforeClose>;
132
140
  default: undefined;
133
141
  };
134
142
  closeDelay: NumberConstructor;
135
- closeOnClickModal: BooleanConstructor;
143
+ closeOnClickModal: {
144
+ type: BooleanConstructor;
145
+ default: undefined;
146
+ };
136
147
  closeOnPressEscape: BooleanConstructor;
137
148
  contentFill: {
138
149
  type: BooleanConstructor;
@@ -170,6 +181,7 @@ onClose?: (() => any) | undefined;
170
181
  onOpened?: (() => any) | undefined;
171
182
  onClosed?: (() => any) | undefined;
172
183
  }>, {
184
+ appendTo: string | HTMLElement;
173
185
  minHeight: number;
174
186
  minWidth: number;
175
187
  width: string | number;
@@ -180,7 +192,6 @@ fullscreen: boolean;
180
192
  showFullscreen: boolean;
181
193
  resizable: boolean;
182
194
  alignCenter: boolean;
183
- appendTo: string | HTMLElement;
184
195
  beforeClose: CtcDialogBeforeClose;
185
196
  closeOnClickModal: boolean;
186
197
  closeOnPressEscape: boolean;
@@ -309,13 +320,13 @@ onClose?: (() => any) | undefined;
309
320
  onOpened?: (() => any) | undefined;
310
321
  onClosed?: (() => any) | undefined;
311
322
  }>, {
323
+ appendTo: string | HTMLElement;
324
+ size: string | number;
312
325
  direction: "ltr" | "rtl" | "ttb" | "btt";
313
326
  title: string;
314
- size: string | number;
315
327
  modelValue: boolean;
316
328
  fullscreen: boolean;
317
329
  showFullscreen: boolean;
318
- appendTo: string | HTMLElement;
319
330
  beforeClose: CtcDialogBeforeClose;
320
331
  closeOnClickModal: boolean;
321
332
  closeOnPressEscape: boolean;
@@ -391,10 +402,22 @@ declare type __VLS_WithTemplateSlots_3<T, S> = T & {
391
402
  };
392
403
  };
393
404
 
394
- declare const CtcComponentsUi: Plugin_2;
405
+ declare const CtcComponentsUi: Plugin_2<[options?: CtcComponentsUiOptions]>;
395
406
  export { CtcComponentsUi }
396
407
  export default CtcComponentsUi;
397
408
 
409
+ export declare interface CtcComponentsUiOptions {
410
+ table?: {
411
+ border?: boolean;
412
+ stripe?: boolean;
413
+ pageSize?: number;
414
+ paginationProps?: Partial<CtcTablePaginationProps>;
415
+ };
416
+ dialog?: {
417
+ closeOnClickModal?: boolean;
418
+ };
419
+ }
420
+
398
421
  export declare const CtcDialog: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
399
422
 
400
423
  export declare type CtcDialogBeforeClose = (done: (cancel?: boolean) => void) => void;
@@ -465,6 +488,63 @@ export declare interface CtcFlexProps {
465
488
 
466
489
  export declare type CtcFlexScroll = boolean | 'x' | 'y';
467
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
+
468
548
  export declare const CtcTable: CtcTableComponent;
469
549
 
470
550
  export declare interface CtcTableCellScope<Row extends object = Record<string, unknown>> {
@@ -536,23 +616,17 @@ export declare interface CtcTableHeaderScope {
536
616
  $index: number;
537
617
  }
538
618
 
539
- export declare interface CtcTableInstance {
540
- clearSelection: () => void;
541
- toggleRowSelection: (row: Record<string, unknown>, selected?: boolean) => void;
542
- toggleAllSelection: () => void;
543
- toggleRowExpansion: (row: Record<string, unknown>, expanded?: boolean) => void;
544
- setCurrentRow: (row?: Record<string, unknown>) => void;
545
- clearSort: () => void;
546
- clearFilter: (columnKey?: string) => void;
547
- doLayout: () => void;
548
- sort: (prop: string, order: 'ascending' | 'descending') => void;
549
- }
619
+ export declare type CtcTableInstance = Pick<TableInstance, 'clearSelection' | 'toggleRowSelection' | 'toggleAllSelection' | 'toggleRowExpansion' | 'setCurrentRow' | 'clearSort' | 'clearFilter' | 'doLayout' | 'sort' | 'scrollTo' | 'setScrollTop' | 'setScrollLeft'> & {
620
+ elTableRef: TableInstance | undefined;
621
+ };
550
622
 
551
623
  export declare interface CtcTableMergeRule {
552
624
  prop: string;
553
625
  by: string[];
554
626
  }
555
627
 
628
+ declare type CtcTableNativeProps = Omit<TableProps<never>, keyof CtcTableProps | 'rowKey' | 'spanMethod'>;
629
+
556
630
  declare interface CtcTableOverflowTooltipOptions {
557
631
  appendTo?: string | HTMLElement;
558
632
  effect?: 'dark' | 'light';
@@ -595,8 +669,7 @@ export declare interface CtcTableProps<Row extends object = Record<string, unkno
595
669
  total?: number;
596
670
  }
597
671
 
598
- declare interface CtcTablePublicProps<Row extends object = Record<string, unknown>> extends CtcTableProps<Row> {
599
- border?: boolean;
672
+ declare interface CtcTablePublicProps<Row extends object = Record<string, unknown>> extends CtcTableProps<Row>, CtcTableNativeProps {
600
673
  rowKey?: string | ((row: Row) => string | number);
601
674
  spanMethod?: CtcTableSpanMethod<Row>;
602
675
  [attribute: string]: unknown;