@vmscloud/moz-ui-grid-vue 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/MozGrid.vue.d.ts +5 -0
- package/dist/compat/MozGridVue.vue.d.ts +32 -2
- package/dist/compat/MozPivotVue.vue.d.ts +32 -2
- package/dist/index.cjs +9 -9
- package/dist/index.d.ts +1 -1
- package/dist/index.js +17 -2
- package/dist/stories/FieldId.stories.d.ts +1 -1
- package/dist/stories/FooterAggregateDiagnosis.stories.d.ts +17 -0
- package/dist/stories/FooterAggregatePivot.stories.d.ts +37 -0
- package/dist/stories/MergedCellCopy.stories.d.ts +58 -0
- package/dist/stories/Pivot900Rows.stories.d.ts +40 -0
- package/dist/stories/PivotReactiveProxy.stories.d.ts +118 -0
- package/dist/stories/PivotSettingsPermissions.stories.d.ts +6 -0
- package/dist/stories/RowGroupAggregates.stories.d.ts +57 -0
- package/dist/stories/RowGroupDisabled.stories.d.ts +9 -0
- package/dist/stories/SummaryFooter.stories.d.ts +7 -0
- package/dist/stories/_helpers/sampleData.d.ts +11 -11
- package/dist/style.css +1 -1
- package/dist/types/props.d.ts +12 -3
- package/dist/types/toolbar.d.ts +1 -1
- package/docs/manual/examples.md +2 -2
- package/docs/manual/reference.md +120 -5
- package/docs/manual/reference_vue.md +6 -2
- package/package.json +3 -3
package/dist/MozGrid.vue.d.ts
CHANGED
|
@@ -106,6 +106,11 @@ declare const __VLS_component: import('vue').DefineComponent<__VLS_PublicProps,
|
|
|
106
106
|
"onUpdate:coreConfig"?: ((value: MozGridCoreProps) => any) | undefined;
|
|
107
107
|
}>, {
|
|
108
108
|
height: string | number;
|
|
109
|
+
useRowGroupSettings: boolean;
|
|
110
|
+
useFieldSettings: boolean;
|
|
111
|
+
useFormatSettings: boolean;
|
|
112
|
+
useLayoutSettings: boolean;
|
|
113
|
+
useAggregateSettings: boolean;
|
|
109
114
|
useToolBox: boolean;
|
|
110
115
|
useToolBoxSetting: boolean;
|
|
111
116
|
useExtendFooter: boolean;
|
|
@@ -25,6 +25,11 @@ declare function __VLS_template(): {
|
|
|
25
25
|
readonly useMultipleChart?: boolean | undefined;
|
|
26
26
|
readonly chartIncludeGrandTotal?: boolean | undefined;
|
|
27
27
|
readonly chartMap?: Record<string, import('../../../moz-ui-grid-wrapper/src/chart/chartUtils').ChartSeriesConfig> | undefined;
|
|
28
|
+
readonly useRowGroupSettings?: boolean | undefined;
|
|
29
|
+
readonly useFieldSettings?: boolean | undefined;
|
|
30
|
+
readonly useFormatSettings?: boolean | undefined;
|
|
31
|
+
readonly useLayoutSettings?: boolean | undefined;
|
|
32
|
+
readonly useAggregateSettings?: boolean | undefined;
|
|
28
33
|
readonly useToolBox?: boolean | undefined;
|
|
29
34
|
readonly useToolBoxSetting?: boolean | undefined;
|
|
30
35
|
readonly useExtendFooter?: boolean | undefined;
|
|
@@ -180,6 +185,11 @@ declare function __VLS_template(): {
|
|
|
180
185
|
"update:coreConfig": (value: MozGridCoreProps) => any;
|
|
181
186
|
}, string, {
|
|
182
187
|
height: string | number;
|
|
188
|
+
useRowGroupSettings: boolean;
|
|
189
|
+
useFieldSettings: boolean;
|
|
190
|
+
useFormatSettings: boolean;
|
|
191
|
+
useLayoutSettings: boolean;
|
|
192
|
+
useAggregateSettings: boolean;
|
|
183
193
|
useToolBox: boolean;
|
|
184
194
|
useToolBoxSetting: boolean;
|
|
185
195
|
useExtendFooter: boolean;
|
|
@@ -211,6 +221,11 @@ declare function __VLS_template(): {
|
|
|
211
221
|
$watch<T extends string | ((...args: any) => any)>(source: T, cb: T extends (...args: any) => infer R ? (...args: [R, R, import('@vue/reactivity').OnCleanup]) => any : (...args: [any, any, import('@vue/reactivity').OnCleanup]) => any, options?: import('vue').WatchOptions): import('vue').WatchStopHandle;
|
|
212
222
|
} & Readonly<{
|
|
213
223
|
height: string | number;
|
|
224
|
+
useRowGroupSettings: boolean;
|
|
225
|
+
useFieldSettings: boolean;
|
|
226
|
+
useFormatSettings: boolean;
|
|
227
|
+
useLayoutSettings: boolean;
|
|
228
|
+
useAggregateSettings: boolean;
|
|
214
229
|
useToolBox: boolean;
|
|
215
230
|
useToolBoxSetting: boolean;
|
|
216
231
|
useExtendFooter: boolean;
|
|
@@ -259,7 +274,7 @@ declare function __VLS_template(): {
|
|
|
259
274
|
"onColumn:visibility"?: ((payload: unknown) => any) | undefined;
|
|
260
275
|
onReady?: ((grid: PureSheet, chrome: GridChrome) => any) | undefined;
|
|
261
276
|
"onUpdate:coreConfig"?: ((value: MozGridCoreProps) => any) | undefined;
|
|
262
|
-
}>, "group" | "sort" | "filter" | "pivot" | "search" | "excel" | "ui" | "grid" | "slots" | "customCell" | "columnFormat" | "chrome" | ("height" | "useToolBox" | "useToolBoxSetting" | "useExtendFooter" | "useSummaryFooter" | "useSort" | "useCustomCell" | "useContextMenu" | "usePivotBar" | "useBuiltinTooltip") | "bulkEditor" | "columnSettings" | "contextMenu" | "chart"> & {
|
|
277
|
+
}>, "group" | "sort" | "filter" | "pivot" | "search" | "excel" | "ui" | "grid" | "slots" | "customCell" | "columnFormat" | "chrome" | ("height" | "useRowGroupSettings" | "useFieldSettings" | "useFormatSettings" | "useLayoutSettings" | "useAggregateSettings" | "useToolBox" | "useToolBoxSetting" | "useExtendFooter" | "useSummaryFooter" | "useSort" | "useCustomCell" | "useContextMenu" | "usePivotBar" | "useBuiltinTooltip") | "bulkEditor" | "columnSettings" | "contextMenu" | "chart"> & {
|
|
263
278
|
grid: PureSheet;
|
|
264
279
|
slots: import('../../../moz-ui-grid-wrapper/src/index.ts').SlotHost;
|
|
265
280
|
ui: Required<import('../../../moz-ui-grid-wrapper/src/index.ts').WrapperUIOptions>;
|
|
@@ -379,6 +394,11 @@ declare const __VLS_component: import('vue').DefineComponent<MozGridVueProps, {
|
|
|
379
394
|
readonly useMultipleChart?: boolean | undefined;
|
|
380
395
|
readonly chartIncludeGrandTotal?: boolean | undefined;
|
|
381
396
|
readonly chartMap?: Record<string, import('../../../moz-ui-grid-wrapper/src/chart/chartUtils').ChartSeriesConfig> | undefined;
|
|
397
|
+
readonly useRowGroupSettings?: boolean | undefined;
|
|
398
|
+
readonly useFieldSettings?: boolean | undefined;
|
|
399
|
+
readonly useFormatSettings?: boolean | undefined;
|
|
400
|
+
readonly useLayoutSettings?: boolean | undefined;
|
|
401
|
+
readonly useAggregateSettings?: boolean | undefined;
|
|
382
402
|
readonly useToolBox?: boolean | undefined;
|
|
383
403
|
readonly useToolBoxSetting?: boolean | undefined;
|
|
384
404
|
readonly useExtendFooter?: boolean | undefined;
|
|
@@ -534,6 +554,11 @@ declare const __VLS_component: import('vue').DefineComponent<MozGridVueProps, {
|
|
|
534
554
|
"update:coreConfig": (value: MozGridCoreProps) => any;
|
|
535
555
|
}, string, {
|
|
536
556
|
height: string | number;
|
|
557
|
+
useRowGroupSettings: boolean;
|
|
558
|
+
useFieldSettings: boolean;
|
|
559
|
+
useFormatSettings: boolean;
|
|
560
|
+
useLayoutSettings: boolean;
|
|
561
|
+
useAggregateSettings: boolean;
|
|
537
562
|
useToolBox: boolean;
|
|
538
563
|
useToolBoxSetting: boolean;
|
|
539
564
|
useExtendFooter: boolean;
|
|
@@ -565,6 +590,11 @@ declare const __VLS_component: import('vue').DefineComponent<MozGridVueProps, {
|
|
|
565
590
|
$watch<T extends string | ((...args: any) => any)>(source: T, cb: T extends (...args: any) => infer R ? (...args: [R, R, import('@vue/reactivity').OnCleanup]) => any : (...args: [any, any, import('@vue/reactivity').OnCleanup]) => any, options?: import('vue').WatchOptions): import('vue').WatchStopHandle;
|
|
566
591
|
} & Readonly<{
|
|
567
592
|
height: string | number;
|
|
593
|
+
useRowGroupSettings: boolean;
|
|
594
|
+
useFieldSettings: boolean;
|
|
595
|
+
useFormatSettings: boolean;
|
|
596
|
+
useLayoutSettings: boolean;
|
|
597
|
+
useAggregateSettings: boolean;
|
|
568
598
|
useToolBox: boolean;
|
|
569
599
|
useToolBoxSetting: boolean;
|
|
570
600
|
useExtendFooter: boolean;
|
|
@@ -613,7 +643,7 @@ declare const __VLS_component: import('vue').DefineComponent<MozGridVueProps, {
|
|
|
613
643
|
"onColumn:visibility"?: ((payload: unknown) => any) | undefined;
|
|
614
644
|
onReady?: ((grid: PureSheet, chrome: GridChrome) => any) | undefined;
|
|
615
645
|
"onUpdate:coreConfig"?: ((value: MozGridCoreProps) => any) | undefined;
|
|
616
|
-
}>, "group" | "sort" | "filter" | "pivot" | "search" | "excel" | "ui" | "grid" | "slots" | "customCell" | "columnFormat" | "chrome" | ("height" | "useToolBox" | "useToolBoxSetting" | "useExtendFooter" | "useSummaryFooter" | "useSort" | "useCustomCell" | "useContextMenu" | "usePivotBar" | "useBuiltinTooltip") | "bulkEditor" | "columnSettings" | "contextMenu" | "chart"> & {
|
|
646
|
+
}>, "group" | "sort" | "filter" | "pivot" | "search" | "excel" | "ui" | "grid" | "slots" | "customCell" | "columnFormat" | "chrome" | ("height" | "useRowGroupSettings" | "useFieldSettings" | "useFormatSettings" | "useLayoutSettings" | "useAggregateSettings" | "useToolBox" | "useToolBoxSetting" | "useExtendFooter" | "useSummaryFooter" | "useSort" | "useCustomCell" | "useContextMenu" | "usePivotBar" | "useBuiltinTooltip") | "bulkEditor" | "columnSettings" | "contextMenu" | "chart"> & {
|
|
617
647
|
grid: PureSheet;
|
|
618
648
|
slots: import('../../../moz-ui-grid-wrapper/src/index.ts').SlotHost;
|
|
619
649
|
ui: Required<import('../../../moz-ui-grid-wrapper/src/index.ts').WrapperUIOptions>;
|
|
@@ -24,6 +24,11 @@ declare function __VLS_template(): {
|
|
|
24
24
|
readonly useMultipleChart?: boolean | undefined;
|
|
25
25
|
readonly chartIncludeGrandTotal?: boolean | undefined;
|
|
26
26
|
readonly chartMap?: Record<string, import('../../../moz-ui-grid-wrapper/src/chart/chartUtils').ChartSeriesConfig> | undefined;
|
|
27
|
+
readonly useRowGroupSettings?: boolean | undefined;
|
|
28
|
+
readonly useFieldSettings?: boolean | undefined;
|
|
29
|
+
readonly useFormatSettings?: boolean | undefined;
|
|
30
|
+
readonly useLayoutSettings?: boolean | undefined;
|
|
31
|
+
readonly useAggregateSettings?: boolean | undefined;
|
|
27
32
|
readonly useToolBox?: boolean | undefined;
|
|
28
33
|
readonly useToolBoxSetting?: boolean | undefined;
|
|
29
34
|
readonly useExtendFooter?: boolean | undefined;
|
|
@@ -179,6 +184,11 @@ declare function __VLS_template(): {
|
|
|
179
184
|
"update:coreConfig": (value: MozGridCoreProps) => any;
|
|
180
185
|
}, string, {
|
|
181
186
|
height: string | number;
|
|
187
|
+
useRowGroupSettings: boolean;
|
|
188
|
+
useFieldSettings: boolean;
|
|
189
|
+
useFormatSettings: boolean;
|
|
190
|
+
useLayoutSettings: boolean;
|
|
191
|
+
useAggregateSettings: boolean;
|
|
182
192
|
useToolBox: boolean;
|
|
183
193
|
useToolBoxSetting: boolean;
|
|
184
194
|
useExtendFooter: boolean;
|
|
@@ -210,6 +220,11 @@ declare function __VLS_template(): {
|
|
|
210
220
|
$watch<T extends string | ((...args: any) => any)>(source: T, cb: T extends (...args: any) => infer R ? (...args: [R, R, import('@vue/reactivity').OnCleanup]) => any : (...args: [any, any, import('@vue/reactivity').OnCleanup]) => any, options?: import('vue').WatchOptions): import('vue').WatchStopHandle;
|
|
211
221
|
} & Readonly<{
|
|
212
222
|
height: string | number;
|
|
223
|
+
useRowGroupSettings: boolean;
|
|
224
|
+
useFieldSettings: boolean;
|
|
225
|
+
useFormatSettings: boolean;
|
|
226
|
+
useLayoutSettings: boolean;
|
|
227
|
+
useAggregateSettings: boolean;
|
|
213
228
|
useToolBox: boolean;
|
|
214
229
|
useToolBoxSetting: boolean;
|
|
215
230
|
useExtendFooter: boolean;
|
|
@@ -258,7 +273,7 @@ declare function __VLS_template(): {
|
|
|
258
273
|
"onColumn:visibility"?: ((payload: unknown) => any) | undefined;
|
|
259
274
|
onReady?: ((grid: PureSheet, chrome: GridChrome) => any) | undefined;
|
|
260
275
|
"onUpdate:coreConfig"?: ((value: MozGridCoreProps) => any) | undefined;
|
|
261
|
-
}>, "group" | "sort" | "filter" | "pivot" | "search" | "excel" | "ui" | "grid" | "slots" | "customCell" | "columnFormat" | "chrome" | ("height" | "useToolBox" | "useToolBoxSetting" | "useExtendFooter" | "useSummaryFooter" | "useSort" | "useCustomCell" | "useContextMenu" | "usePivotBar" | "useBuiltinTooltip") | "bulkEditor" | "columnSettings" | "contextMenu" | "chart"> & {
|
|
276
|
+
}>, "group" | "sort" | "filter" | "pivot" | "search" | "excel" | "ui" | "grid" | "slots" | "customCell" | "columnFormat" | "chrome" | ("height" | "useRowGroupSettings" | "useFieldSettings" | "useFormatSettings" | "useLayoutSettings" | "useAggregateSettings" | "useToolBox" | "useToolBoxSetting" | "useExtendFooter" | "useSummaryFooter" | "useSort" | "useCustomCell" | "useContextMenu" | "usePivotBar" | "useBuiltinTooltip") | "bulkEditor" | "columnSettings" | "contextMenu" | "chart"> & {
|
|
262
277
|
grid: PureSheet;
|
|
263
278
|
slots: import('../../../moz-ui-grid-wrapper/src/index.ts').SlotHost;
|
|
264
279
|
ui: Required<import('../../../moz-ui-grid-wrapper/src/index.ts').WrapperUIOptions>;
|
|
@@ -340,6 +355,11 @@ declare const __VLS_component: import('vue').DefineComponent<PivotGridProps, {
|
|
|
340
355
|
readonly useMultipleChart?: boolean | undefined;
|
|
341
356
|
readonly chartIncludeGrandTotal?: boolean | undefined;
|
|
342
357
|
readonly chartMap?: Record<string, import('../../../moz-ui-grid-wrapper/src/chart/chartUtils').ChartSeriesConfig> | undefined;
|
|
358
|
+
readonly useRowGroupSettings?: boolean | undefined;
|
|
359
|
+
readonly useFieldSettings?: boolean | undefined;
|
|
360
|
+
readonly useFormatSettings?: boolean | undefined;
|
|
361
|
+
readonly useLayoutSettings?: boolean | undefined;
|
|
362
|
+
readonly useAggregateSettings?: boolean | undefined;
|
|
343
363
|
readonly useToolBox?: boolean | undefined;
|
|
344
364
|
readonly useToolBoxSetting?: boolean | undefined;
|
|
345
365
|
readonly useExtendFooter?: boolean | undefined;
|
|
@@ -495,6 +515,11 @@ declare const __VLS_component: import('vue').DefineComponent<PivotGridProps, {
|
|
|
495
515
|
"update:coreConfig": (value: MozGridCoreProps) => any;
|
|
496
516
|
}, string, {
|
|
497
517
|
height: string | number;
|
|
518
|
+
useRowGroupSettings: boolean;
|
|
519
|
+
useFieldSettings: boolean;
|
|
520
|
+
useFormatSettings: boolean;
|
|
521
|
+
useLayoutSettings: boolean;
|
|
522
|
+
useAggregateSettings: boolean;
|
|
498
523
|
useToolBox: boolean;
|
|
499
524
|
useToolBoxSetting: boolean;
|
|
500
525
|
useExtendFooter: boolean;
|
|
@@ -526,6 +551,11 @@ declare const __VLS_component: import('vue').DefineComponent<PivotGridProps, {
|
|
|
526
551
|
$watch<T extends string | ((...args: any) => any)>(source: T, cb: T extends (...args: any) => infer R ? (...args: [R, R, import('@vue/reactivity').OnCleanup]) => any : (...args: [any, any, import('@vue/reactivity').OnCleanup]) => any, options?: import('vue').WatchOptions): import('vue').WatchStopHandle;
|
|
527
552
|
} & Readonly<{
|
|
528
553
|
height: string | number;
|
|
554
|
+
useRowGroupSettings: boolean;
|
|
555
|
+
useFieldSettings: boolean;
|
|
556
|
+
useFormatSettings: boolean;
|
|
557
|
+
useLayoutSettings: boolean;
|
|
558
|
+
useAggregateSettings: boolean;
|
|
529
559
|
useToolBox: boolean;
|
|
530
560
|
useToolBoxSetting: boolean;
|
|
531
561
|
useExtendFooter: boolean;
|
|
@@ -574,7 +604,7 @@ declare const __VLS_component: import('vue').DefineComponent<PivotGridProps, {
|
|
|
574
604
|
"onColumn:visibility"?: ((payload: unknown) => any) | undefined;
|
|
575
605
|
onReady?: ((grid: PureSheet, chrome: GridChrome) => any) | undefined;
|
|
576
606
|
"onUpdate:coreConfig"?: ((value: MozGridCoreProps) => any) | undefined;
|
|
577
|
-
}>, "group" | "sort" | "filter" | "pivot" | "search" | "excel" | "ui" | "grid" | "slots" | "customCell" | "columnFormat" | "chrome" | ("height" | "useToolBox" | "useToolBoxSetting" | "useExtendFooter" | "useSummaryFooter" | "useSort" | "useCustomCell" | "useContextMenu" | "usePivotBar" | "useBuiltinTooltip") | "bulkEditor" | "columnSettings" | "contextMenu" | "chart"> & {
|
|
607
|
+
}>, "group" | "sort" | "filter" | "pivot" | "search" | "excel" | "ui" | "grid" | "slots" | "customCell" | "columnFormat" | "chrome" | ("height" | "useRowGroupSettings" | "useFieldSettings" | "useFormatSettings" | "useLayoutSettings" | "useAggregateSettings" | "useToolBox" | "useToolBoxSetting" | "useExtendFooter" | "useSummaryFooter" | "useSort" | "useCustomCell" | "useContextMenu" | "usePivotBar" | "useBuiltinTooltip") | "bulkEditor" | "columnSettings" | "contextMenu" | "chart"> & {
|
|
578
608
|
grid: PureSheet;
|
|
579
609
|
slots: import('../../../moz-ui-grid-wrapper/src/index.ts').SlotHost;
|
|
580
610
|
ui: Required<import('../../../moz-ui-grid-wrapper/src/index.ts').WrapperUIOptions>;
|
package/dist/index.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
"use strict";var e=Object.defineProperty,t=(t,o,
|
|
1
|
+
"use strict";var e=Object.defineProperty,t=(t,o,n)=>((t,o,n)=>o in t?e(t,o,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[o]=n)(t,"symbol"!=typeof o?o+"":o,n);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("vue"),n=require("@vmscloud/moz-ui-grid-wrapper"),l=require("./chunks/notification.contract-oFkBaE2U.cjs"),r=require("lit-html"),i=require("lit-html/directives/class-map.js"),s=require("./chunks/index-BLDAzbGv.cjs"),a=require("dayjs"),u=require("@vmscloud/moz-ui-grid-core");class d{constructor({id:e,type:n,exportDef:l,importDef:r,strict:i,dependencies:s,manualLifeCycle:a}){t(this,"uniqueId"),t(this,"_id"),t(this,"_type"),t(this,"_default"),t(this,"_importDef"),t(this,"_exportDef"),t(this,"_pendingDef"),t(this,"_pending"),t(this,"dispose",()=>{}),t(this,"setApplied",()=>{}),t(this,"strict"),t(this,"dependencies"),this.uniqueId="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{const t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)}),this._id=e,this._type=n,this._importDef=r,this._exportDef=l,this._default=l(),this._pending=!1,this._pendingDef=null,this.strict=i??!1,this.dependencies=s??null,a||o.onBeforeUnmount(()=>{this.dispose()})}get pending(){return this._pending}set pending(e){if(this._pending=e,!e&&this._pendingDef)try{this._importDef(this._pendingDef),this.setApplied(!0)}catch(t){}finally{this._pendingDef=null}}get id(){return this._id}get type(){return this._type}get default(){return this._default}set default(e){this._default=e}get current(){return this._exportDef()}set current(e){this.pending?this._pendingDef=e:(this._importDef(e),this.setApplied(!0))}setDefaultToCurrent(){this._default=this._exportDef()}}const c=()=>o.inject("user-layout-module",{register:()=>{},currentPreset:o.ref(null)});let p=null;function m(){if(p)return p;const e=o.ref(!1),t=o.shallowRef(null),n=o.ref({}),l={showPopup:e,activeGrid:t,defaultImportOptions:n,show:(o,l={})=>{t.value=o,n.value=l,e.value=!0},hide:()=>{e.value=!1}};return p=l,l}function f(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{const t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)})}function g(e){const t=null==e?"":String(e);return t.includes(",")||t.includes('"')||t.includes("\n")?`"${t.replace(/"/g,'""')}"`:t}const h={mode:"replace",conflictStrategy:"update",autoCommit:!1};function v(){const e=new Date,t=e=>String(e).padStart(2,"0");return`${e.getFullYear()}-${t(e.getMonth()+1)}-${t(e.getDate())} ${t(e.getHours())}:${t(e.getMinutes())}:${t(e.getSeconds())}`}class x{constructor(e){t(this,"popup",null),t(this,"grid",null),t(this,"options",{...h}),t(this,"file",null),t(this,"invalid",!1),t(this,"dropActive",!1),t(this,"replacing",!1),this.deps=e}get isOpen(){var e;return(null==(e=this.popup)?void 0:e.isOpen)??!1}get state(){return{file:this.file,invalid:this.invalid,options:{...this.options}}}open(e,t={}){if(this.popup){this.replacing=!0;try{this.popup.close()}finally{this.replacing=!1}}this.grid=e,this.resetState(),this.options={...h},t.mode&&(this.options.mode=t.mode),t.conflictStrategy&&(this.options.conflictStrategy=t.conflictStrategy),"boolean"==typeof t.autoCommit&&(this.options.autoCommit=t.autoCommit);const o=s.getGridVueLocale(),l=new n.Popup({title:o.clientExcelImport,width:540,height:440,closeOnOutsideClick:!0,contentsPadding:"16px",className:"mzc-client-excel-popup",draggable:!0,resizeable:!1,onClose:()=>this.handleClosed(l)});this.popup=l,l.open(()=>this.body(),()=>this.footer())}close(){var e;null==(e=this.popup)||e.close()}destroy(){this.close()}handleClosed(e){this.popup===e&&(this.popup=null),this.resetState(),this.replacing||this.deps.onHidden()}resetState(){this.file=null,this.invalid=!1,this.dropActive=!1}update(){var e;null==(e=this.popup)||e.update()}setFile(e){e&&e.name.toLowerCase().endsWith(".xlsx")?(this.invalid=!1,this.file=e):(this.invalid=!0,this.file=null),this.update()}body(){const e=s.getGridVueLocale(),{mode:t,conflictStrategy:o}=this.options,l=this.file,a=[{value:"replace",label:e.importModeReplace},{value:"append",label:e.importModeAppend},{value:"upsert",label:e.importModeUpsert}],u=[{value:"error",label:e.conflictError},{value:"skip",label:e.conflictSkip},{value:"update",label:e.conflictUpdate}],d=e=>{var t,o;null==(o=null==(t=e.currentTarget.parentElement)?void 0:t.querySelector('input[type="file"]'))||o.click()},c=l?r.html`
|
|
2
2
|
${"replace"===t?r.html`<span class="mzc-client-excel-dropzone__line">${e.overwriteSelected}</span>`:r.nothing}
|
|
3
|
-
<span class="mzc-client-excel-dropzone__line"><span class="mzc-client-excel-dropzone__accent">${
|
|
3
|
+
<span class="mzc-client-excel-dropzone__line"><span class="mzc-client-excel-dropzone__accent">${l.name}</span></span>
|
|
4
4
|
`:r.html`
|
|
5
5
|
<span class="mzc-client-excel-dropzone__line">
|
|
6
6
|
${e.dropHerePrefix}<span class="mzc-client-excel-dropzone__accent">${e.click}</span>${e.dropHereMiddle}<span class="mzc-client-excel-dropzone__accent">${e.drag}</span>${e.dropHereSuffix}
|
|
@@ -10,12 +10,12 @@
|
|
|
10
10
|
<div class="mzc-client-excel-options">
|
|
11
11
|
<div class="mzc-client-excel-option">
|
|
12
12
|
<span class="mzc-client-excel-option__label">${e.importMode}</span>
|
|
13
|
-
${
|
|
13
|
+
${n.radio({variant:"borderless",value:t,options:a,ariaLabel:e.importMode,onChange:e=>{this.options.mode=e,this.update()}})}
|
|
14
14
|
</div>
|
|
15
15
|
${"replace"!==t?r.html`
|
|
16
16
|
<div class="mzc-client-excel-option mzc-client-excel-option--grow">
|
|
17
17
|
<span class="mzc-client-excel-option__label">${e.conflictStrategy}</span>
|
|
18
|
-
${
|
|
18
|
+
${n.select({value:o,options:u,width:"100%",ariaLabel:e.conflictStrategy,onChange:e=>{this.options.conflictStrategy=e,this.update()}})}
|
|
19
19
|
</div>
|
|
20
20
|
`:r.nothing}
|
|
21
21
|
</div>
|
|
@@ -28,11 +28,11 @@
|
|
|
28
28
|
aria-label=${e.clientExcelImport}
|
|
29
29
|
@dragover=${e=>{e.preventDefault(),this.dropActive||(this.dropActive=!0,this.update())}}
|
|
30
30
|
@dragleave=${e=>{e.preventDefault(),this.dropActive&&(this.dropActive=!1,this.update())}}
|
|
31
|
-
@drop=${e=>{var t,o;e.preventDefault(),this.dropActive=!1;const
|
|
31
|
+
@drop=${e=>{var t,o;e.preventDefault(),this.dropActive=!1;const n=null==(o=null==(t=e.dataTransfer)?void 0:t.files)?void 0:o[0];n?this.setFile(n):this.update()}}
|
|
32
32
|
@click=${d}
|
|
33
33
|
@keydown=${e=>{"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),d(e))}}
|
|
34
34
|
>
|
|
35
|
-
${
|
|
35
|
+
${l?r.html`
|
|
36
36
|
<svg xmlns="http://www.w3.org/2000/svg" width="89" height="89" viewBox="0 0 89 89" fill="none" aria-hidden="true">
|
|
37
37
|
<circle cx="44.1176" cy="44.1176" r="44.1176" fill="#E1E9FF" />
|
|
38
38
|
<g transform="translate(29.5, 29.5)">
|
|
@@ -72,6 +72,6 @@
|
|
|
72
72
|
</div>
|
|
73
73
|
</div>
|
|
74
74
|
`}footer(){const e=s.getGridVueLocale();return r.html`
|
|
75
|
-
${
|
|
76
|
-
${
|
|
77
|
-
`}confirm(){const e=this.grid,t=this.file;if(!e||!t)return;const o={...this.options};this.close(),this.runBackgroundImport(e,t,o)}async runBackgroundImport(e,t,o){const l=s.getGridVueLocale(),n=this.deps.notificationStore(),r=f(),i=t.name,a=()=>null==n?void 0:n.eventMessages.find(e=>{var t;return(null==(t=e.prop_value)?void 0:t.session_id)===r});n&&n.eventMessages.unshift({noti_type:"progress",header_key:l.clientExcelImportProgress,noti_datetime:v(),noti_sender_id:"",prop_value:{session_id:r,file_name:i,status:"in_progress",progress_per:0,operation_type:"upload",remain_time:-1}});try{const l=e.changes;(null==l?void 0:l.hasChanges)&&await l.discardAll(),await e.io.fromExcel(t,{mode:o.mode,conflictStrategy:o.conflictStrategy,autoCommit:o.autoCommit,onProgress:e=>{const t=a();if(!(null==t?void 0:t.prop_value))return;let o="number"==typeof e.percent?e.percent:void 0;void 0===o&&"number"==typeof e.rowsProcessed&&"number"==typeof e.totalRows&&e.totalRows>0&&(o=e.rowsProcessed/e.totalRows*100),"number"==typeof o&&(t.prop_value.progress_per=Math.min(99,Math.max(0,Math.floor(o))))}});const i=a();(null==i?void 0:i.prop_value)&&(i.prop_value.status="completed",i.prop_value.progress_per=100),n&&setTimeout(()=>{const e=n.eventMessages.findIndex(e=>{var t;return(null==(t=e.prop_value)?void 0:t.session_id)===r});-1!==e&&n.eventMessages.splice(e,1)},2e3)}catch(u){const e=a();(null==e?void 0:e.prop_value)&&(e.prop_value.status="error",e.prop_value.error_message=u instanceof Error?u.message:String(u),e.prop_value.progress_per=0,e.prop_value.remain_time=-1)}}}const y={class:"mzc-client-excel-host",hidden:""},C=o.defineComponent({__name:"ClientExcelUploadPopup",setup(e,{expose:t}){const l=m(),r=n.useGridNotificationStore(),i=new x({notificationStore:()=>r,onHidden:()=>l.hide()});return o.watch(l.showPopup,e=>{if(e){const e=l.activeGrid.value;e&&i.open(e,l.defaultImportOptions.value)}else i.close()},{immediate:!0}),o.onBeforeUnmount(()=>i.destroy()),t({controller:i}),(e,t)=>(o.openBlock(),o.createElementBlock("span",y))}});class _{constructor(){t(this,"instances",new Map),t(this,"appContext",null)}setAppContext(e){this.appContext=e}mount(e,t,l,n={}){const r=this.instances.get(e);if(r)return void Object.assign(r.props,n);const i=o.reactive({...n}),s=o.createApp({render:()=>o.h(l,i)});this.appContext&&(s._context.provides={...this.appContext.provides},s._context.components={...this.appContext.components},s._context.directives={...this.appContext.directives},s._context.config.globalProperties={...this.appContext.config.globalProperties}),this.instances.set(e,{app:s,props:i}),s.mount(t)}mountInstance(e,t,l){const n=o.reactive({...l}),r=o.createApp({render:()=>t(n)});return this.appContext&&(r._context.provides={...this.appContext.provides},r._context.components={...this.appContext.components},r._context.directives={...this.appContext.directives},r._context.config.globalProperties={...this.appContext.config.globalProperties}),r.mount(e),{update:e=>{Object.assign(n,e)},destroy:()=>{r.unmount()}}}updateProps(e,t){const o=this.instances.get(e);o&&Object.assign(o.props,t)}unmount(e){const t=this.instances.get(e);t&&(t.app.unmount(),this.instances.delete(e))}unmountByPrefix(e){for(const t of this.instances.keys())t.startsWith(e)&&this.unmount(t)}unmountAll(){for(const[,e]of this.instances)e.app.unmount();this.instances.clear()}get size(){return this.instances.size}has(e){return this.instances.has(e)}}function w(e,t,o){return e.map(e=>{const l={...e},n=t.get("cell",e.id);if(null==n?void 0:n.slot){const t=n.slot;l.cellRenderer=function(e,t,o){const l=e=>({value:e.value,rowData:e.rowData,columnId:e.columnId,rowId:e.rowId}),n=(e,n)=>{const r=o.mountInstance(e,e=>t(e),l(n));return{update:e=>(r.update(l(e)),!0),destroy(){r.destroy()}}};return n.__cellRendererKind="lifecycle",n}(e.id,t,o)}const r=t.get("header",e.id);if(null==r?void 0:r.slot){const t=r.slot;l.headerRenderer=function(e,t,o){return l=>{const n=document.createElement("div");n.style.display="contents";const r=`header:${e}`,i={columnId:l.columnId,header:l.header};return o.mount(r,n,{render:()=>t(i)},i),n}}(e.id,t,o)}const i=t.get("editor",e.id);if(null==i?void 0:i.slot){const t=i.slot;l.editor=function(e,t,o){return{type:"custom",renderer:l=>{const n=document.createElement("div");n.style.display="contents";const r=`editor:${e}`,i={value:l.value,rowData:l.rowData,columnId:e,onCommit:l.onCommit,onCancel:l.onCancel};return o.mount(r,n,{render:()=>t(i)},i),n},destroy:()=>{o.unmount(`editor:${e}`)}}}(e.id,t,o)}return l})}const S=Symbol("moz-grid-instance"),b=Symbol("moz-grid-container"),M=Symbol("moz-grid-renderer"),E=Symbol("moz-grid-template-registry"),B=Symbol("moz-grid-filter-module"),R=Symbol("moz-grid-sort-module"),k=Symbol("moz-grid-custom-cell-module"),P=Symbol("moz-grid-bulk-editor-module"),T=((e,t)=>{const o=e.__vccOpts||e;for(const[l,n]of t)o[l]=n;return o})(o.defineComponent({__name:"MozGrid",props:o.mergeModels({height:{default:"100%"},contextMenuConfig:{},emptyState:{},locale:{},sourceFields:{},useMultipleChart:{type:Boolean},chartIncludeGrandTotal:{type:Boolean},chartMap:{},useToolBox:{type:Boolean,default:!0},useToolBoxSetting:{type:Boolean,default:!0},useExtendFooter:{type:Boolean,default:!0},useSummaryFooter:{type:Boolean,default:!1},useSort:{type:Boolean,default:!0},useCustomCell:{type:Boolean,default:!0},useContextMenu:{type:Boolean,default:!0},usePivot:{type:Boolean},usePivotBar:{type:Boolean,default:!0},useChart:{type:Boolean},loading:{type:Boolean},useBuiltinTooltip:{type:Boolean,default:!0},name:{}},{coreConfig:{default:()=>({})},coreConfigModifiers:{}}),emits:o.mergeModels(["ready","data:loaded","row:click","row:dblclick","row:pinned","row:unpinned","row:reordered","cell:click","cell:dblclick","cell:change","cell:beforeEdit","cell:editCommitting","cell:editCommitted","cell:tooltip","selection:changed","column:resize","column:reorder","column:pin","column:visibility","sort:changed","header:click","header:sortClick","header:filterClick","filter:changed","scroll","undo:stateChange","clipboard:copy","clipboard:paste","validation:changed","columnGroup:toggle","rowGroup:toggle","rowGroup:batchToggle","contextmenu"],["update:coreConfig"]),setup(e,{expose:t,emit:r}){const i=o.useModel(e,"coreConfig"),a=e,u=r,p=o.ref(),f=o.useSlots(),g=function(){const e=o.getCurrentInstance();if(!e)throw new Error("[MozGridVue] useAppContext는 setup() 내에서만 호출할 수 있습니다.");return e.appContext}(),h=new _,v=function(){const e=o.reactive([]);function t(e,t){return t?`${e}:${t}`:e}return{register(o){const l=e.findIndex(e=>t(e.type,e.fieldId)===t(o.type,o.fieldId));l>=0?e[l]=o:e.push(o)},unregister(o,l){const n=t(o,l),r=e.findIndex(e=>t(e.type,e.fieldId)===n);r>=0&&e.splice(r,1)},get(o,l){const n=t(o,l);return e.find(e=>t(e.type,e.fieldId)===n)},getAll:t=>e.filter(e=>e.type===t)}}(),x=o.shallowRef(null),y=m();s.setGridVueLocale(a.locale),o.watch(()=>a.locale,e=>s.setGridVueLocale(e));const B=o.ref();let R=null;const k=o.ref({disabled:!0,hasItem:!1}),P=n.useGridNotificationStore(),T=e=>String(e).padStart(2,"0"),z=()=>{const e=new Date;return`${e.getFullYear()}-${T(e.getMonth()+1)}-${T(e.getDate())} ${T(e.getHours())}:${T(e.getMinutes())}:${T(e.getSeconds())}`},$=()=>`mzc-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,D=e=>null==P?void 0:P.eventMessages.find(t=>{var o;return(null==(o=t.prop_value)?void 0:o.session_id)===e}),F=e=>{if(!P)return;const t=P.eventMessages.findIndex(t=>{var o;return(null==(o=t.prop_value)?void 0:o.session_id)===e});-1!==t&&P.eventMessages.splice(t,1)};let I=null;const H={onExportStart:e=>{P&&(I=$(),P.eventMessages.unshift({noti_type:"progress",header_key:"text-file_download",noti_datetime:z(),noti_sender_id:"",prop_value:{session_id:I,file_name:e,status:"in_progress",progress_per:0,operation_type:"download",remain_time:-1}}))},onExportProgress:e=>{if(!I)return;const t=D(I);if(!(null==t?void 0:t.prop_value))return;let o="number"==typeof e.percent?e.percent:void 0;void 0===o&&"number"==typeof e.rowsProcessed&&"number"==typeof e.totalRows&&e.totalRows>0&&(o=e.rowsProcessed/e.totalRows*100),"number"==typeof o&&(t.prop_value.progress_per=Math.min(99,Math.max(0,Math.floor(o))))},onExportComplete:e=>{if(!I)return;const t=I,o=D(t);(null==o?void 0:o.prop_value)&&((null==e?void 0:e.fileName)&&(o.prop_value.file_name=e.fileName),o.prop_value.status="completed",o.prop_value.progress_per=100),setTimeout(()=>F(t),2e3),I=null},onExportError:e=>{if(!I)return;const t=D(I);(null==t?void 0:t.prop_value)&&(t.prop_value.status="error",t.prop_value.error_message=e.message,t.prop_value.progress_per=0,t.prop_value.remain_time=-1),I=null},onExportCancel:()=>{I&&(F(I),I=null)},onImportComplete:()=>{if(!P)return;const e=$();P.eventMessages.unshift({noti_type:"progress",header_key:"text-file_upload",noti_datetime:z(),noti_sender_id:"",prop_value:{session_id:e,file_name:"",status:"completed",progress_per:100,operation_type:"upload",remain_time:-1}}),setTimeout(()=>F(e),2e3)},onImportError:e=>{P&&P.eventMessages.unshift({noti_type:"progress",header_key:"text-file_upload",noti_datetime:z(),noti_sender_id:"",prop_value:{session_id:$(),file_name:"",status:"error",error_message:e.message,progress_per:0,operation_type:"upload",remain_time:-1}})},onClientImportOpen:()=>{var e;if(!x.value)return;const t=(null==(e=a.contextMenuConfig)?void 0:e.clientImportOptions)??{};y.show(x.value,t)}};o.provide(E,v),o.provide(M,h),o.provide(S,x),o.provide(b,B);const V=o.computed(()=>{const e=a.height??"100%";return{height:"number"==typeof e?`${e}px`:e,width:"100%"}});function G(e){return t=>{const o={render:()=>{var t,o;return("tool-items"===e?null==(t=f[e])?void 0:t.call(f,k.value):null==(o=f[e])?void 0:o.call(f))??null}},l=`slot:${e}`;return h.mount(l,t,o,{}),()=>h.unmount(l)}}let L,O;function A(){const e={...i.value},t=function(){const e=i.value.fields;return e===L||(L=e,O=e?w(e,v,h):void 0),O}();return t&&(e.fields=t),void 0!==a.locale&&(e.locale=a.locale),e}const U=["row:click","row:dblclick","row:pinned","row:unpinned","row:reordered","cell:click","cell:dblclick","cell:change","cell:beforeEdit","cell:editCommitting","cell:editCommitted","cell:tooltip","selection:changed","column:resize","column:reorder","column:pin","column:visibility","sort:changed","header:click","header:sortClick","header:filterClick","filter:changed","scroll","undo:stateChange","clipboard:copy","clipboard:paste","validation:changed","columnGroup:toggle","rowGroup:toggle","rowGroup:batchToggle","contextmenu"];let j=[];function N(){for(const e of j)try{e()}catch{}j=[]}function Y(){if(!p.value)return null;h.setAppContext(g);const e=new l.GridChrome(p.value,A(),function(){const e=["tool-left","tool-items","option-popup","tool-bottom","notification","footer","empty-state"],t={};for(const o of e)f[o]&&(t[o]=G(o));return{useToolBox:a.useToolBox,useToolBoxSetting:a.useToolBoxSetting,useExtendFooter:a.useExtendFooter,useSummaryFooter:a.useSummaryFooter,useSort:a.useSort,useCustomCell:a.useCustomCell,useContextMenu:a.useContextMenu,useBuiltinTooltip:a.useBuiltinTooltip,usePivot:a.usePivot,usePivotBar:a.usePivotBar,useChart:a.useChart,useMultipleChart:a.useMultipleChart,chartIncludeGrandTotal:a.chartIncludeGrandTotal,chartMap:a.chartMap,loading:a.loading,locale:a.locale,sourceFields:a.sourceFields,contextMenuConfig:a.contextMenuConfig,emptyState:a.emptyState,slots:t,onToolItemsPropsChange:e=>{k.value=e},excelHooks:H}}());R=e,x.value=e.grid,B.value=p.value;const t=u;e.on("data:loaded",()=>u("data:loaded"));for(const o of U)e.on(o,e=>t(o,e));return j.push(e.onConfigChange(()=>{i.value=e.getCoreConfig(i.value),e.syncAppliedConfig(A())})),e}function K(){if(!R)return;const{reinitRequired:e}=R.reconcileCoreConfig(A());e&&async function(){if(!R)return;const e=R.captureReinitState();N(),R.destroy(),R=null,h.unmountAll();const t=Y();if(!t)return;await t.ready(),await t.restoreReinitState(e),k.value=t.getToolItemsProps(),u("ready",t.grid,t)}()}o.onMounted(async()=>{await async function(){const e=Y();e&&(await e.ready(),k.value=e.getToolItemsProps(),u("ready",e.grid,e))}(),o.watch(()=>{const e=i.value;e.data,e.fields;const t={_locale:a.locale};for(const o in e)"data"!==o&&"fields"!==o&&(t[o]=e[o]);return t},()=>K(),{deep:!0}),o.watch(()=>({useToolBox:a.useToolBox,useToolBoxSetting:a.useToolBoxSetting,useExtendFooter:a.useExtendFooter,useSummaryFooter:a.useSummaryFooter,useSort:a.useSort,useCustomCell:a.useCustomCell,useContextMenu:a.useContextMenu,useBuiltinTooltip:a.useBuiltinTooltip,usePivot:a.usePivot,usePivotBar:a.usePivotBar}),e=>null==R?void 0:R.setUIOptions(e)),o.watch(()=>a.loading,e=>null==R?void 0:R.setUIOptions({loading:e}),{immediate:!0}),o.watch(()=>a.sourceFields,e=>null==R?void 0:R.setSourceFields(e),{immediate:!0}),o.watch(()=>a.contextMenuConfig,e=>null==R?void 0:R.setContextMenuConfig(e),{deep:!0})}),o.onBeforeUnmount(()=>{N(),null==R||R.destroy(),R=null,x.value=null,h.unmountAll()}),function(e){const{register:t}=c(),l=new d({id:e.name.value,type:e.type,importDef:async t=>{var o,n,r,i;const s=e.gridInstance.value;if(s){if(!t){const t=l.default;return void(t&&(await s.applyConfig(t),t.customCellConfig&&(null==(o=e.setCustomCellState)||o.call(e,t.customCellConfig)),t.columnFormatConfig&&(null==(n=e.setColumnFormatState)||n.call(e,t.columnFormatConfig))))}await s.applyConfig(t),t.customCellConfig&&(null==(r=e.setCustomCellState)||r.call(e,t.customCellConfig)),t.columnFormatConfig&&(null==(i=e.setColumnFormatState)||i.call(e,t.columnFormatConfig))}},exportDef:()=>{var t,o;const l=e.gridInstance.value;return l?{...l.getConfig(),customCellConfig:(null==(t=e.getCustomCellState)?void 0:t.call(e))??null,columnFormatConfig:(null==(o=e.getColumnFormatState)?void 0:o.call(e))??null}:null}});let n=!1;o.watch(e.gridInstance,r=>{if(!r||n)return;if(!e.name.value)return;const i=r.on("data:loaded",()=>{n||(l.setDefaultToCurrent(),o.nextTick(()=>{t(l),n=!0,i()}))})})}({name:o.toRef(a,"name"),type:"pivot"===i.value.mode?"mozPivotGrid":"mozFlatGrid",gridInstance:x,getCustomCellState:()=>(null==R?void 0:R.customCell.getCustomCell())??null,setCustomCellState:e=>{e&&R&&R.customCell.setCustomCell(e)},getColumnFormatState:()=>(null==R?void 0:R.columnFormat.getConfig())??null,setColumnFormatState:e=>{e&&R&&R.columnFormat.setConfig(e)}});return t(new Proxy({},{get(e,t){if("chrome"===t)return R;const o=R;if(!o)return;const l=o[t];return"function"==typeof l?l.bind(o):l},has:(e,t)=>"chrome"===t||!!R&&t in R})),(e,t)=>(o.openBlock(),o.createElementBlock(o.Fragment,null,[o.createElementVNode("div",{ref_key:"hostRef",ref:p,class:"moz-grid-chrome",style:o.normalizeStyle(V.value)},null,4),o.renderSlot(e.$slots,"default",{},void 0,!0),x.value?(o.openBlock(),o.createBlock(C,{key:0})):o.createCommentVNode("",!0)],64))}}),[["__scopeId","data-v-eac44841"]]),z=o.defineComponent({name:"CellTemplate",props:{field:{type:String,required:!0}},setup(e){const t=o.inject(E),l=o.useSlots();return t?(o.onMounted(()=>{l.default&&t.register({type:"cell",fieldId:e.field,slot:l.default})}),o.onBeforeUnmount(()=>{t.unregister("cell",e.field)}),()=>null):()=>null}}),$=o.defineComponent({name:"HeaderTemplate",props:{field:{type:String,required:!0}},setup(e){const t=o.inject(E),l=o.useSlots();return t?(o.onMounted(()=>{l.default&&t.register({type:"header",fieldId:e.field,slot:l.default})}),o.onBeforeUnmount(()=>{t.unregister("header",e.field)}),()=>null):()=>null}}),D=o.defineComponent({name:"CellEditor",props:{field:{type:String,required:!0}},setup(e){const t=o.inject(E),l=o.useSlots();return t?(o.onMounted(()=>{l.default&&t.register({type:"editor",fieldId:e.field,slot:l.default})}),o.onBeforeUnmount(()=>{t.unregister("editor",e.field)}),()=>null):()=>null}}),F=o.defineComponent({name:"DetailTemplate",props:{minHeight:{type:Number,default:100},maxHeight:{type:Number},singleExpand:{type:Boolean,default:!1},keepDetailRows:{type:Boolean,default:!0}},setup(e){const t=o.inject(S),l=o.inject(M),n=o.useSlots();return t&&l?(o.onMounted(()=>{const o=t.value;if(!o||!n.default)return;const r=n.default;o.masterDetail.setConfig({minHeight:e.minHeight,maxHeight:e.maxHeight,singleExpand:e.singleExpand,keepMasterDetailRows:e.keepDetailRows,renderer:(e,t,o)=>{const n=`detail:${o}`,i={parentData:t,dataIndex:o};return l.mount(n,e,{render:()=>r(i)},i),()=>{l.unmount(n)}}})}),o.onBeforeUnmount(()=>{null==l||l.unmountByPrefix("detail:")}),()=>null):()=>null}}),I=o.defineComponent({name:"GroupTemplate",setup(){const e=o.inject(S),t=o.inject(M),l=o.useSlots();return e&&t?(o.onMounted(()=>{const o=e.value;if(!o||!l.default)return;const n=l.default;o.formatRow.addHandler("_groupTemplate",e=>{if("group-row"!==e.type)return;const o=e.ctx,l=o.element;if(!l)return;const r=`group:${o.viewIndex}`,i={groupKey:o.column,groupValue:o.value,level:o.level,count:o.itemCount,isExpanded:!o.collapsed};t.mount(r,l,{render:()=>n(i)},i)})}),o.onBeforeUnmount(()=>{var o;null==t||t.unmountByPrefix("group:"),null==(o=e.value)||o.formatRow.removeHandler("_groupTemplate")}),()=>null):()=>null}});let H=!1;function V(e){return e?(Object.prototype.hasOwnProperty.call(e,"formatHeaderRow")||Object.defineProperty(e,"formatHeaderRow",{configurable:!0,get:()=>(H||(H=!0),e.formatHeader)}),e):null}const G=o.defineComponent({__name:"MozGridVue",props:{name:{},useToolBox:{type:Boolean,default:!0},useToolBoxSetting:{type:Boolean,default:!0},useExtendFooter:{type:Boolean,default:!0},useSummaryFooter:{type:Boolean,default:!1},useSort:{type:Boolean,default:!0},useCustomCell:{type:Boolean,default:!0},contextMenuConfig:{default:()=>({})},useContextMenu:{type:Boolean,default:!0},loading:{type:Boolean},emptyState:{},fields:{},data:{},mode:{},pivotRowFields:{},pivotColumnFields:{},pivotValueFields:{},height:{default:"100%"},keyFields:{},theme:{},rowHeight:{},headerHeight:{},showHeader:{type:Boolean,default:!0},resizableColumns:{type:Boolean,default:!0},reorderableColumns:{type:Boolean,default:!0},showRowHeader:{type:[Boolean,Object]},rowHeader:{type:[Boolean,Object]},rowSelection:{},cellSelection:{default:()=>({mode:"range"})},cellSelectionImpliesRows:{type:Boolean},editable:{type:Boolean,default:!1},tooltipMode:{default:"overflow"},alternatingRows:{type:Boolean,default:!0},autoFitColumns:{type:Boolean},dynamicRowHeights:{type:Boolean,default:!1},reorderableRows:{type:Boolean,default:!1},locale:{},engine:{},useWorker:{type:Boolean},loader:{},preventKeyEdit:{type:Boolean,default:!0},showStatusBar:{type:Boolean},showDragHandleColumn:{type:Boolean},undoStack:{},formatRow:{},translations:{},rowStyle:{},headerStyle:{},rowHeightChangeThreshold:{},group:{},columnGroups:{},rowTemplate:{}},emits:["ready","data:loaded","row:click","row:dblclick","row:pinned","row:unpinned","row:reordered","cell:click","cell:dblclick","cell:change","cell:beforeEdit","cell:editCommitting","cell:editCommitted","cell:tooltip","selection:changed","column:resize","column:reorder","column:pin","column:visibility","sort:changed","filter:changed","undo:stateChange","clipboard:copy","clipboard:paste","validation:changed","columnGroup:toggle","scroll","contextmenu"],setup(e,{expose:t,emit:n}){const r=e,i=n,s=o.computed(()=>{const e={...r};for(const t of l.WRAPPER_EXTRA_KEYS)delete e[t];return delete e.name,delete e.locale,e}),a=o.computed(()=>{const e=r,t={};for(const o of l.WRAPPER_EXTRA_KEYS)void 0!==e[o]&&(t[o]=e[o]);return void 0!==e.locale&&(t.locale=e.locale),t}),u=Object.fromEntries(["ready","data:loaded","row:click","row:dblclick","row:pinned","row:unpinned","row:reordered","cell:click","cell:dblclick","cell:change","cell:beforeEdit","cell:editCommitting","cell:editCommitted","cell:tooltip","selection:changed","column:resize","column:reorder","column:pin","column:visibility","sort:changed","filter:changed","undo:stateChange","clipboard:copy","clipboard:paste","validation:changed","columnGroup:toggle","scroll","contextmenu"].map(e=>[e,(...t)=>i(e,...t)]));u.ready=e=>i("ready",V(e));const d=o.ref(null);function c(){return d.value??null}const p={};return Object.defineProperties(p,{grid:{enumerable:!0,get:()=>{var e;return V(null==(e=c())?void 0:e.grid)}},core:{enumerable:!0,get:()=>p},filterModule:{enumerable:!0,get:()=>{var e;return null==(e=c())?void 0:e.filter}},sortModule:{enumerable:!0,get:()=>{var e;return null==(e=c())?void 0:e.sort}},customCellModule:{enumerable:!0,get:()=>{var e;return null==(e=c())?void 0:e.customCell}},bulkEditorModule:{enumerable:!0,get:()=>{var e;return null==(e=c())?void 0:e.bulkEditor}}}),p.refresh=async()=>{var e,t;return null==(t=null==(e=c())?void 0:e.grid)?void 0:t.refresh()},p.loadData=async e=>{var t,o;return null==(o=null==(t=c())?void 0:t.grid)?void 0:o.loadData(e)},p.sort=async e=>{var t,o;return null==(o=null==(t=c())?void 0:t.grid)?void 0:o.sort(e)},p.filter=async e=>{var t,o;return null==(o=null==(t=c())?void 0:t.grid)?void 0:o.filter(e)},t(p),(e,t)=>(o.openBlock(),o.createBlock(T,o.mergeProps({ref_key:"mozRef",ref:d,coreConfig:s.value},a.value,{name:r.name},o.toHandlers(o.unref(u))),o.createSlots({default:o.withCtx(()=>[o.renderSlot(e.$slots,"default")]),_:2},[e.$slots["tool-left"]?{name:"tool-left",fn:o.withCtx(()=>[o.renderSlot(e.$slots,"tool-left")]),key:"0"}:void 0,e.$slots["tool-items"]?{name:"tool-items",fn:o.withCtx(t=>[o.renderSlot(e.$slots,"tool-items",o.normalizeProps(o.guardReactiveProps(t)))]),key:"1"}:void 0,e.$slots.notification?{name:"notification",fn:o.withCtx(()=>[o.renderSlot(e.$slots,"notification")]),key:"2"}:void 0,e.$slots.footer?{name:"footer",fn:o.withCtx(()=>[o.renderSlot(e.$slots,"footer")]),key:"3"}:void 0,e.$slots.customState?{name:"empty-state",fn:o.withCtx(()=>[o.renderSlot(e.$slots,"customState")]),key:"4"}:void 0]),1040,["coreConfig","name"]))}}),L=o.defineComponent({__name:"MozPivotVue",props:{name:{},data:{},rowFields:{},columnFields:{},valueFields:{},height:{default:"100%"},showRowSubTotals:{type:Boolean,default:!1},showRowGrandTotals:{type:Boolean,default:!0},showColumnSubTotals:{type:Boolean,default:!1},showColumnGrandTotals:{type:Boolean,default:!0},trackSourceRows:{type:Boolean,default:!1},showHeader:{type:Boolean,default:!0},alternatingRows:{type:Boolean,default:!1},tooltipMode:{default:"overflow"},rowSelection:{},cellSelection:{default:()=>({mode:"range"})},cellSelectionImpliesRows:{type:Boolean},useToolBox:{type:Boolean,default:!0},useToolBoxSetting:{type:Boolean,default:!0},useFilter:{type:Boolean,default:!0},useSort:{type:Boolean,default:!0},useCustomCell:{type:Boolean,default:!0},useExtendFooter:{type:Boolean,default:!0},useSummaryFooter:{type:Boolean,default:!1},useContextMenu:{type:Boolean,default:!0},contextMenuConfig:{},useChart:{type:Boolean,default:!1},fields:{},availableFields:{},useMultipleChart:{type:Boolean,default:!0},chartIncludeGrandTotal:{type:Boolean,default:!1},chartMap:{},loading:{type:Boolean},emptyState:{}},emits:["ready","data:loaded","filter:changed","pivot:configured","pivot:toggled","update:rowFields","update:columnFields","update:valueFields"],setup(e,{expose:t,emit:n}){const r=e,i=n,s=o.computed(()=>{const e={...r};for(const t of l.WRAPPER_EXTRA_KEYS)delete e[t];return delete e.name,delete e.locale,delete e.availableFields,delete e.useFilter,e.mode="pivot",e}),a=o.computed(()=>{const e=r,t={};for(const o of l.WRAPPER_EXTRA_KEYS)void 0!==e[o]&&(t[o]=e[o]);return void 0!==e.locale&&(t.locale=e.locale),t.sourceFields=e.sourceFields??e.availableFields??e.fields,t}),u=Object.fromEntries(["ready","data:loaded","filter:changed","pivot:toggled"].map(e=>[e,(...t)=>i(e,...t)]));function d(e){var t,o,l;const n=e;i("update:rowFields",n.rowFields??[]),i("update:columnFields",n.columnFields??[]),i("update:valueFields",n.valueFields??[]);const r=null==(l=null==(o=null==(t=p())?void 0:t.pivot)?void 0:o.getRawConfig)?void 0:l.call(o);r&&i("pivot:configured",r)}u.ready=e=>i("ready",V(e));const c=o.ref(null);function p(){return c.value??null}function m(){var e,t;return null==(t=null==(e=p())?void 0:e.grid)?void 0:t.pivot}const f=o.computed({get:()=>{var e,t;return(null==(t=null==(e=p())?void 0:e.chart)?void 0:t.visible)??!1},set:e=>{var t,o;return null==(o=null==(t=p())?void 0:t.chart)?void 0:o.setVisible(e)}}),g={};return Object.defineProperties(g,{grid:{enumerable:!0,get:()=>{var e;return V(null==(e=p())?void 0:e.grid)}},core:{enumerable:!0,get:()=>g},pivotApi:{enumerable:!0,get:()=>m()??null},filterModule:{enumerable:!0,get:()=>{var e;return null==(e=p())?void 0:e.filter}},sortModule:{enumerable:!0,get:()=>{var e;return null==(e=p())?void 0:e.sort}},customCellModule:{enumerable:!0,get:()=>{var e;return null==(e=p())?void 0:e.customCell}},showChart:{enumerable:!0,get:()=>f.value,set:e=>{f.value=e}}}),g.refresh=async()=>{var e,t;return null==(t=null==(e=p())?void 0:e.grid)?void 0:t.refresh()},g.setConfig=async e=>{var t;return null==(t=m())?void 0:t.setConfig(e)},g.getResult=()=>{var e;return(null==(e=m())?void 0:e.getResult())??null},g.expandAll=async()=>{var e;return null==(e=m())?void 0:e.expandAllRows()},g.collapseAll=async()=>{var e;return null==(e=m())?void 0:e.collapseAllRows()},g.expandToLevel=async e=>{var t;return null==(t=m())?void 0:t.expandRowToLevel(e)},g.toggleChart=()=>{f.value=!f.value},t(g),(e,t)=>(o.openBlock(),o.createBlock(T,o.mergeProps({ref_key:"mozRef",ref:c,coreConfig:s.value},a.value,{name:r.name,"onUpdate:coreConfig":d},o.toHandlers(o.unref(u))),o.createSlots({default:o.withCtx(()=>[o.renderSlot(e.$slots,"default")]),_:2},[e.$slots["tool-left"]?{name:"tool-left",fn:o.withCtx(()=>[o.renderSlot(e.$slots,"tool-left")]),key:"0"}:void 0,e.$slots["tool-items"]?{name:"tool-items",fn:o.withCtx(t=>[o.renderSlot(e.$slots,"tool-items",o.normalizeProps(o.guardReactiveProps(t)))]),key:"1"}:void 0,e.$slots.footer?{name:"footer",fn:o.withCtx(()=>[o.renderSlot(e.$slots,"footer")]),key:"2"}:void 0,e.$slots.customState?{name:"empty-state",fn:o.withCtx(()=>[o.renderSlot(e.$slots,"customState")]),key:"3"}:void 0]),1040,["coreConfig","name"]))}});exports.GridNotificationKey=n.GridNotificationKey,exports.provideGridNotification=n.provideGridNotification,exports.useGridNotificationStore=n.useGridNotificationStore,exports.ExcelDataType=s.DataType,exports.FileParameter=s.FileParameter,exports.enUS=s.enUS,exports.getGridVueLocale=s.getGridVueLocale,exports.getGridVueLocaleCode=s.getGridVueLocaleCode,exports.jaJP=s.jaJP,exports.koKR=s.koKR,exports.normalizeGridVueLocale=s.normalizeGridVueLocale,exports.openToast=s.openToast,exports.setGridVueLocale=s.setGridVueLocale,exports.showMessage=s.showMessage,exports.useExcelDownloadStore=s.useExcelDownloadStore,exports.useExcelStore=s.useExcelStore,exports.useExcelUploadStore=s.useExcelUploadStore,exports.zhCN=s.zhCN,Object.defineProperty(exports,"ROW_HEADER_COLUMN_ID",{enumerable:!0,get:()=>u.ROW_HEADER_COLUMN_ID}),Object.defineProperty(exports,"UndoStack",{enumerable:!0,get:()=>u.UndoStack}),Object.defineProperty(exports,"getCornerCell",{enumerable:!0,get:()=>u.getCornerCell}),Object.defineProperty(exports,"getRowHeaderCell",{enumerable:!0,get:()=>u.getRowHeaderCell}),exports.CellEditor=D,exports.CellTemplate=z,exports.ClientExcelUploadController=x,exports.ClientExcelUploadPopup=C,exports.DetailTemplate=F,exports.GRID_BULK_EDITOR_MODULE_KEY=P,exports.GRID_CUSTOM_CELL_MODULE_KEY=k,exports.GRID_FILTER_MODULE_KEY=B,exports.GRID_INSTANCE_KEY=S,exports.GRID_RENDERER_KEY=M,exports.GRID_SORT_MODULE_KEY=R,exports.GRID_TEMPLATE_REGISTRY_KEY=E,exports.GroupTemplate=I,exports.HeaderTemplate=$,exports.MozGrid=T,exports.MozGridVue=G,exports.MozPivotVue=L,exports.StreamingParameter=class{constructor(e){t(this,"params"),t(this,"loading",!0),t(this,"size",0),t(this,"offset",0),t(this,"onReceived"),t(this,"onClosed"),t(this,"onHandleError"),t(this,"onCancelClick"),t(this,"_complete",!1),this.params=e}get ipcObject(){return this.params}get percent(){return 0===this.offset||0===this.size?0:Math.round(this.offset/this.size*100)}get complete(){return this._complete}received(e){this.offset++,this.onReceived&&this.onReceived(e)}closed(e=!0){this._complete=e,this.onClosed&&this.onClosed()}handleError(e,t=!0){this._complete=t,this.onHandleError&&this.onHandleError(e)}},exports.UserLayoutInstance=d,exports.VueRenderer=_,exports.downloadBlob=function(e,t){const o=URL.createObjectURL(e),l=document.createElement("a");l.href=o,l.download=t,l.style.display="none",document.body.appendChild(l),l.click(),document.body.removeChild(l),setTimeout(()=>URL.revokeObjectURL(o),0)},exports.exportCsv=async function(e){let t,o;if("pivot"===e.pivot.getMode()){const l=await e.pivot.getDataMatrix();if(!l)return;t=l.headers,o=l.rows}else{const l=await e.getExportData({scope:"all"});if(!l)return;const{headers:n,rows:r}=l,i=n.map(e=>e.id);t=n.map(e=>e.header),o=r.map(e=>i.map(t=>e[t]))}const l=[];l.push(t.map(g).join(","));for(const a of o)l.push(a.map(g).join(","));const n="\ufeff"+l.join("\r\n"),r=new Blob([n],{type:"text/csv;charset=utf-8;"}),i=URL.createObjectURL(r),s=document.createElement("a");s.href=i,s.download=`export_${(new Date).toISOString().slice(0,10)}.csv`,s.click(),URL.revokeObjectURL(i)},exports.generateSessionId=f,exports.pickFile=function(e=".xlsx"){return new Promise(t=>{const o=document.createElement("input");o.type="file",o.accept=e,o.style.display="none";let l=!1;const n=()=>{o.parentNode&&o.parentNode.removeChild(o)};o.onchange=()=>{if(l)return;l=!0;const e=o.files&&o.files.length>0?o.files[0]:null;n(),t(e)};const r=()=>{window.removeEventListener("focus",r),setTimeout(()=>{l||(l=!0,n(),t(null))},300)};window.addEventListener("focus",r),document.body.appendChild(o),o.click()})},exports.runClientExport=async function(e,t,o){var l;const n=`${t.exportFileName??"export"}_${a().format("YYYYMMDD")}.xlsx`,r=f();o&&o.eventMessages.unshift({noti_type:"progress",header_key:"text-file_download",noti_datetime:a().format("YYYY-MM-DD HH:mm:ss"),noti_sender_id:"",prop_value:{session_id:r,file_name:n,status:"in_progress",progress_per:0,operation_type:"download",remain_time:-1}});try{if(await e.io.saveExcelToFile({scope:"all",includeHeaders:!0,suggestedName:n,fallbackToDownload:!0,sheetSplit:"auto",onProgress:e=>{if(!o)return;const t=o.eventMessages.find(e=>{var t;return(null==(t=e.prop_value)?void 0:t.session_id)===r});if(!(null==t?void 0:t.prop_value))return;let l="number"==typeof e.percent?e.percent:void 0;void 0===l&&"number"==typeof e.rowsProcessed&&"number"==typeof e.totalRows&&e.totalRows>0&&(l=e.rowsProcessed/e.totalRows*100),"number"==typeof l&&(t.prop_value.progress_per=Math.min(99,Math.max(0,Math.floor(l))))},...t.clientExportOptions??{}}),o){const e=o.eventMessages.find(e=>{var t;return(null==(t=e.prop_value)?void 0:t.session_id)===r});(null==e?void 0:e.prop_value)&&(e.prop_value.status="completed",e.prop_value.progress_per=100),setTimeout(()=>{const e=o.eventMessages.findIndex(e=>{var t;return(null==(t=e.prop_value)?void 0:t.session_id)===r});-1!==e&&o.eventMessages.splice(e,1)},2e3)}null==(l=t.onClientExportComplete)||l.call(t,new Blob)}catch(i){if(i instanceof DOMException&&"AbortError"===i.name){if(o){const e=o.eventMessages.findIndex(e=>{var t;return(null==(t=e.prop_value)?void 0:t.session_id)===r});-1!==e&&o.eventMessages.splice(e,1)}return}if(o){const e=o.eventMessages.find(e=>{var t;return(null==(t=e.prop_value)?void 0:t.session_id)===r});(null==e?void 0:e.prop_value)&&(e.prop_value.status="error",e.prop_value.error_message=i instanceof Error?i.message:String(i),e.prop_value.progress_per=0,e.prop_value.remain_time=-1)}}},exports.useClientExcelStore=m,exports.useUserLayoutModule=c;
|
|
75
|
+
${n.button({label:e.check,variant:"primary",disabled:!this.file,onClick:()=>this.confirm()})}
|
|
76
|
+
${n.button({label:e.cancel,onClick:()=>this.close()})}
|
|
77
|
+
`}confirm(){const e=this.grid,t=this.file;if(!e||!t)return;const o={...this.options};this.close(),this.runBackgroundImport(e,t,o)}async runBackgroundImport(e,t,o){const n=s.getGridVueLocale(),l=this.deps.notificationStore(),r=f(),i=t.name,a=()=>null==l?void 0:l.eventMessages.find(e=>{var t;return(null==(t=e.prop_value)?void 0:t.session_id)===r});l&&l.eventMessages.unshift({noti_type:"progress",header_key:n.clientExcelImportProgress,noti_datetime:v(),noti_sender_id:"",prop_value:{session_id:r,file_name:i,status:"in_progress",progress_per:0,operation_type:"upload",remain_time:-1}});try{const n=e.changes;(null==n?void 0:n.hasChanges)&&await n.discardAll(),await e.io.fromExcel(t,{mode:o.mode,conflictStrategy:o.conflictStrategy,autoCommit:o.autoCommit,onProgress:e=>{const t=a();if(!(null==t?void 0:t.prop_value))return;let o="number"==typeof e.percent?e.percent:void 0;void 0===o&&"number"==typeof e.rowsProcessed&&"number"==typeof e.totalRows&&e.totalRows>0&&(o=e.rowsProcessed/e.totalRows*100),"number"==typeof o&&(t.prop_value.progress_per=Math.min(99,Math.max(0,Math.floor(o))))}});const i=a();(null==i?void 0:i.prop_value)&&(i.prop_value.status="completed",i.prop_value.progress_per=100),l&&setTimeout(()=>{const e=l.eventMessages.findIndex(e=>{var t;return(null==(t=e.prop_value)?void 0:t.session_id)===r});-1!==e&&l.eventMessages.splice(e,1)},2e3)}catch(u){const e=a();(null==e?void 0:e.prop_value)&&(e.prop_value.status="error",e.prop_value.error_message=u instanceof Error?u.message:String(u),e.prop_value.progress_per=0,e.prop_value.remain_time=-1)}}}const y={class:"mzc-client-excel-host",hidden:""},C=o.defineComponent({__name:"ClientExcelUploadPopup",setup(e,{expose:t}){const n=m(),r=l.useGridNotificationStore(),i=new x({notificationStore:()=>r,onHidden:()=>n.hide()});return o.watch(n.showPopup,e=>{if(e){const e=n.activeGrid.value;e&&i.open(e,n.defaultImportOptions.value)}else i.close()},{immediate:!0}),o.onBeforeUnmount(()=>i.destroy()),t({controller:i}),(e,t)=>(o.openBlock(),o.createElementBlock("span",y))}});class _{constructor(){t(this,"instances",new Map),t(this,"appContext",null)}setAppContext(e){this.appContext=e}mount(e,t,n,l={}){const r=this.instances.get(e);if(r)return void Object.assign(r.props,l);const i=o.reactive({...l}),s=o.createApp({render:()=>o.h(n,i)});this.appContext&&(s._context.provides={...this.appContext.provides},s._context.components={...this.appContext.components},s._context.directives={...this.appContext.directives},s._context.config.globalProperties={...this.appContext.config.globalProperties}),this.instances.set(e,{app:s,props:i}),s.mount(t)}mountInstance(e,t,n){const l=o.reactive({...n}),r=o.createApp({render:()=>t(l)});return this.appContext&&(r._context.provides={...this.appContext.provides},r._context.components={...this.appContext.components},r._context.directives={...this.appContext.directives},r._context.config.globalProperties={...this.appContext.config.globalProperties}),r.mount(e),{update:e=>{Object.assign(l,e)},destroy:()=>{r.unmount()}}}updateProps(e,t){const o=this.instances.get(e);o&&Object.assign(o.props,t)}unmount(e){const t=this.instances.get(e);t&&(t.app.unmount(),this.instances.delete(e))}unmountByPrefix(e){for(const t of this.instances.keys())t.startsWith(e)&&this.unmount(t)}unmountAll(){for(const[,e]of this.instances)e.app.unmount();this.instances.clear()}get size(){return this.instances.size}has(e){return this.instances.has(e)}}function w(e,t,o){return e.map(e=>{const n={...e},l=t.get("cell",e.id);if(null==l?void 0:l.slot){const t=l.slot;n.cellRenderer=function(e,t,o){const n=e=>({value:e.value,rowData:e.rowData,columnId:e.columnId,rowId:e.rowId}),l=(e,l)=>{const r=o.mountInstance(e,e=>t(e),n(l));return{update:e=>(r.update(n(e)),!0),destroy(){r.destroy()}}};return l.__cellRendererKind="lifecycle",l}(e.id,t,o)}const r=t.get("header",e.id);if(null==r?void 0:r.slot){const t=r.slot;n.headerRenderer=function(e,t,o){return n=>{const l=document.createElement("div");l.style.display="contents";const r=`header:${e}`,i={columnId:n.columnId,header:n.header};return o.mount(r,l,{render:()=>t(i)},i),l}}(e.id,t,o)}const i=t.get("editor",e.id);if(null==i?void 0:i.slot){const t=i.slot;n.editor=function(e,t,o){return{type:"custom",renderer:n=>{const l=document.createElement("div");l.style.display="contents";const r=`editor:${e}`,i={value:n.value,rowData:n.rowData,columnId:e,onCommit:n.onCommit,onCancel:n.onCancel};return o.mount(r,l,{render:()=>t(i)},i),l},destroy:()=>{o.unmount(`editor:${e}`)}}}(e.id,t,o)}return n})}const S=Symbol("moz-grid-instance"),b=Symbol("moz-grid-container"),M=Symbol("moz-grid-renderer"),B=Symbol("moz-grid-template-registry"),E=Symbol("moz-grid-filter-module"),R=Symbol("moz-grid-sort-module"),k=Symbol("moz-grid-custom-cell-module"),F=Symbol("moz-grid-bulk-editor-module"),P=((e,t)=>{const o=e.__vccOpts||e;for(const[n,l]of t)o[n]=l;return o})(o.defineComponent({__name:"MozGrid",props:o.mergeModels({height:{default:"100%"},contextMenuConfig:{},emptyState:{},locale:{},sourceFields:{},useMultipleChart:{type:Boolean},chartIncludeGrandTotal:{type:Boolean},chartMap:{},useRowGroupSettings:{type:Boolean,default:!0},useFieldSettings:{type:Boolean,default:!0},useFormatSettings:{type:Boolean,default:!0},useLayoutSettings:{type:Boolean,default:!0},useAggregateSettings:{type:Boolean,default:!0},useToolBox:{type:Boolean,default:!0},useToolBoxSetting:{type:Boolean,default:!0},useExtendFooter:{type:Boolean,default:!0},useSummaryFooter:{type:Boolean,default:!1},useSort:{type:Boolean,default:!0},useCustomCell:{type:Boolean,default:!0},useContextMenu:{type:Boolean,default:!0},usePivot:{type:Boolean},usePivotBar:{type:Boolean,default:!0},useChart:{type:Boolean},loading:{type:Boolean},useBuiltinTooltip:{type:Boolean,default:!0},name:{}},{coreConfig:{default:()=>({})},coreConfigModifiers:{}}),emits:o.mergeModels(["ready","data:loaded","row:click","row:dblclick","row:pinned","row:unpinned","row:reordered","cell:click","cell:dblclick","cell:change","cell:beforeEdit","cell:editCommitting","cell:editCommitted","cell:tooltip","selection:changed","column:resize","column:reorder","column:pin","column:visibility","sort:changed","header:click","header:sortClick","header:filterClick","filter:changed","scroll","undo:stateChange","clipboard:copy","clipboard:paste","validation:changed","columnGroup:toggle","rowGroup:toggle","rowGroup:batchToggle","contextmenu"],["update:coreConfig"]),setup(e,{expose:t,emit:r}){const i=o.useModel(e,"coreConfig"),a=e,u=r,p=o.ref(),f=o.useSlots(),g=function(){const e=o.getCurrentInstance();if(!e)throw new Error("[MozGridVue] useAppContext는 setup() 내에서만 호출할 수 있습니다.");return e.appContext}(),h=new _,v=function(){const e=o.reactive([]);function t(e,t){return t?`${e}:${t}`:e}return{register(o){const n=e.findIndex(e=>t(e.type,e.fieldId)===t(o.type,o.fieldId));n>=0?e[n]=o:e.push(o)},unregister(o,n){const l=t(o,n),r=e.findIndex(e=>t(e.type,e.fieldId)===l);r>=0&&e.splice(r,1)},get(o,n){const l=t(o,n);return e.find(e=>t(e.type,e.fieldId)===l)},getAll:t=>e.filter(e=>e.type===t)}}(),x=o.shallowRef(null),y=m();s.setGridVueLocale(a.locale),o.watch(()=>a.locale,e=>s.setGridVueLocale(e));const E=o.ref();let R=null;const k=o.ref({disabled:!0,hasItem:!1}),F=l.useGridNotificationStore(),P=e=>String(e).padStart(2,"0"),T=()=>{const e=new Date;return`${e.getFullYear()}-${P(e.getMonth()+1)}-${P(e.getDate())} ${P(e.getHours())}:${P(e.getMinutes())}:${P(e.getSeconds())}`},z=()=>`mzc-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,$=e=>null==F?void 0:F.eventMessages.find(t=>{var o;return(null==(o=t.prop_value)?void 0:o.session_id)===e}),D=e=>{if(!F)return;const t=F.eventMessages.findIndex(t=>{var o;return(null==(o=t.prop_value)?void 0:o.session_id)===e});-1!==t&&F.eventMessages.splice(t,1)};let I=null;const H={onExportStart:e=>{F&&(I=z(),F.eventMessages.unshift({noti_type:"progress",header_key:"text-file_download",noti_datetime:T(),noti_sender_id:"",prop_value:{session_id:I,file_name:e,status:"in_progress",progress_per:0,operation_type:"download",remain_time:-1}}))},onExportProgress:e=>{if(!I)return;const t=$(I);if(!(null==t?void 0:t.prop_value))return;let o="number"==typeof e.percent?e.percent:void 0;void 0===o&&"number"==typeof e.rowsProcessed&&"number"==typeof e.totalRows&&e.totalRows>0&&(o=e.rowsProcessed/e.totalRows*100),"number"==typeof o&&(t.prop_value.progress_per=Math.min(99,Math.max(0,Math.floor(o))))},onExportComplete:e=>{if(!I)return;const t=I,o=$(t);(null==o?void 0:o.prop_value)&&((null==e?void 0:e.fileName)&&(o.prop_value.file_name=e.fileName),o.prop_value.status="completed",o.prop_value.progress_per=100),setTimeout(()=>D(t),2e3),I=null},onExportError:e=>{if(!I)return;const t=$(I);(null==t?void 0:t.prop_value)&&(t.prop_value.status="error",t.prop_value.error_message=e.message,t.prop_value.progress_per=0,t.prop_value.remain_time=-1),I=null},onExportCancel:()=>{I&&(D(I),I=null)},onImportComplete:()=>{if(!F)return;const e=z();F.eventMessages.unshift({noti_type:"progress",header_key:"text-file_upload",noti_datetime:T(),noti_sender_id:"",prop_value:{session_id:e,file_name:"",status:"completed",progress_per:100,operation_type:"upload",remain_time:-1}}),setTimeout(()=>D(e),2e3)},onImportError:e=>{F&&F.eventMessages.unshift({noti_type:"progress",header_key:"text-file_upload",noti_datetime:T(),noti_sender_id:"",prop_value:{session_id:z(),file_name:"",status:"error",error_message:e.message,progress_per:0,operation_type:"upload",remain_time:-1}})},onClientImportOpen:()=>{var e;if(!x.value)return;const t=(null==(e=a.contextMenuConfig)?void 0:e.clientImportOptions)??{};y.show(x.value,t)}};o.provide(B,v),o.provide(M,h),o.provide(S,x),o.provide(b,E);const G=o.computed(()=>{const e=a.height??"100%";return{height:"number"==typeof e?`${e}px`:e,width:"100%"}});function V(e){return t=>{const o={render:()=>{var t,o;return("tool-items"===e?null==(t=f[e])?void 0:t.call(f,k.value):null==(o=f[e])?void 0:o.call(f))??null}},n=`slot:${e}`;return h.mount(n,t,o,{}),()=>h.unmount(n)}}let L,O;function A(){const e={...i.value},t=function(){const e=i.value.fields;return e===L||(L=e,O=e?w(e,v,h):void 0),O}();return t&&(e.fields=t),void 0!==a.locale&&(e.locale=a.locale),e}const U=["row:click","row:dblclick","row:pinned","row:unpinned","row:reordered","cell:click","cell:dblclick","cell:change","cell:beforeEdit","cell:editCommitting","cell:editCommitted","cell:tooltip","selection:changed","column:resize","column:reorder","column:pin","column:visibility","sort:changed","header:click","header:sortClick","header:filterClick","filter:changed","scroll","undo:stateChange","clipboard:copy","clipboard:paste","validation:changed","columnGroup:toggle","rowGroup:toggle","rowGroup:batchToggle","contextmenu"];let j=[];function N(){for(const e of j)try{e()}catch{}j=[]}function Y(){if(!p.value)return null;h.setAppContext(g);const e=new n.GridChrome(p.value,A(),function(){const e=["tool-left","tool-items","option-popup","tool-bottom","notification","footer","empty-state"],t={};for(const o of e)f[o]&&(t[o]=V(o));return{useToolBox:a.useToolBox,useToolBoxSetting:a.useToolBoxSetting,useExtendFooter:a.useExtendFooter,useSummaryFooter:a.useSummaryFooter,useSort:a.useSort,useCustomCell:a.useCustomCell,useContextMenu:a.useContextMenu,useBuiltinTooltip:a.useBuiltinTooltip,usePivot:a.usePivot,usePivotBar:a.usePivotBar,useChart:a.useChart,useRowGroupSettings:a.useRowGroupSettings,useFieldSettings:a.useFieldSettings,useFormatSettings:a.useFormatSettings,useLayoutSettings:a.useLayoutSettings,useAggregateSettings:a.useAggregateSettings,useMultipleChart:a.useMultipleChart,chartIncludeGrandTotal:a.chartIncludeGrandTotal,chartMap:a.chartMap,loading:a.loading,locale:a.locale,sourceFields:a.sourceFields,contextMenuConfig:a.contextMenuConfig,emptyState:a.emptyState,slots:t,onToolItemsPropsChange:e=>{k.value=e},excelHooks:H}}());R=e,x.value=e.grid,E.value=p.value;const t=u;e.on("data:loaded",()=>u("data:loaded"));for(const o of U)e.on(o,e=>t(o,e));return j.push(e.onConfigChange(()=>{i.value=e.getCoreConfig(i.value),e.syncAppliedConfig(A())})),e}function K(){if(!R)return;const{reinitRequired:e}=R.reconcileCoreConfig(A());e&&async function(){if(!R)return;const e=R.captureReinitState();N(),R.destroy(),R=null,h.unmountAll();const t=Y();if(!t)return;await t.ready(),await t.restoreReinitState(e),k.value=t.getToolItemsProps(),u("ready",t.grid,t)}()}o.onMounted(async()=>{await async function(){const e=Y();e&&(await e.ready(),k.value=e.getToolItemsProps(),u("ready",e.grid,e))}(),o.watch(()=>{const e=i.value;e.data,e.fields;const t={_locale:a.locale};for(const o in e)"data"!==o&&"fields"!==o&&(t[o]=e[o]);return t},()=>K(),{deep:!0}),o.watch(()=>({useToolBox:a.useToolBox,useToolBoxSetting:a.useToolBoxSetting,useExtendFooter:a.useExtendFooter,useSummaryFooter:a.useSummaryFooter,useSort:a.useSort,useCustomCell:a.useCustomCell,useContextMenu:a.useContextMenu,useBuiltinTooltip:a.useBuiltinTooltip,usePivot:a.usePivot,usePivotBar:a.usePivotBar,useRowGroupSettings:a.useRowGroupSettings,useFieldSettings:a.useFieldSettings,useFormatSettings:a.useFormatSettings,useLayoutSettings:a.useLayoutSettings,useAggregateSettings:a.useAggregateSettings}),e=>null==R?void 0:R.setUIOptions(e)),o.watch(()=>a.loading,e=>null==R?void 0:R.setUIOptions({loading:e}),{immediate:!0}),o.watch(()=>a.sourceFields,e=>null==R?void 0:R.setSourceFields(e),{immediate:!0}),o.watch(()=>a.contextMenuConfig,e=>null==R?void 0:R.setContextMenuConfig(e),{deep:!0})}),o.onBeforeUnmount(()=>{N(),null==R||R.destroy(),R=null,x.value=null,h.unmountAll()}),function(e){const{register:t}=c(),n=new d({id:e.name.value,type:e.type,importDef:async t=>{var o,l,r,i;const s=e.gridInstance.value;if(s){if(!t){const t=n.default;return void(t&&(await s.applyConfig(t),t.customCellConfig&&(null==(o=e.setCustomCellState)||o.call(e,t.customCellConfig)),t.columnFormatConfig&&(null==(l=e.setColumnFormatState)||l.call(e,t.columnFormatConfig))))}await s.applyConfig(t),t.customCellConfig&&(null==(r=e.setCustomCellState)||r.call(e,t.customCellConfig)),t.columnFormatConfig&&(null==(i=e.setColumnFormatState)||i.call(e,t.columnFormatConfig))}},exportDef:()=>{var t,o;const n=e.gridInstance.value;return n?{...n.getConfig(),customCellConfig:(null==(t=e.getCustomCellState)?void 0:t.call(e))??null,columnFormatConfig:(null==(o=e.getColumnFormatState)?void 0:o.call(e))??null}:null}});let l=!1;o.watch(e.gridInstance,r=>{if(!r||l)return;if(!e.name.value)return;const i=r.on("data:loaded",()=>{l||(n.setDefaultToCurrent(),o.nextTick(()=>{t(n),l=!0,i()}))})})}({name:o.toRef(a,"name"),type:"pivot"===i.value.mode?"mozPivotGrid":"mozFlatGrid",gridInstance:x,getCustomCellState:()=>(null==R?void 0:R.customCell.getCustomCell())??null,setCustomCellState:e=>{e&&R&&R.customCell.setCustomCell(e)},getColumnFormatState:()=>(null==R?void 0:R.columnFormat.getConfig())??null,setColumnFormatState:e=>{e&&R&&R.columnFormat.setConfig(e)}});return t(new Proxy({},{get(e,t){if("chrome"===t)return R;const o=R;if(!o)return;const n=o[t];return"function"==typeof n?n.bind(o):n},has:(e,t)=>"chrome"===t||!!R&&t in R})),(e,t)=>(o.openBlock(),o.createElementBlock(o.Fragment,null,[o.createElementVNode("div",{ref_key:"hostRef",ref:p,class:"moz-grid-chrome",style:o.normalizeStyle(G.value)},null,4),o.renderSlot(e.$slots,"default",{},void 0,!0),x.value?(o.openBlock(),o.createBlock(C,{key:0})):o.createCommentVNode("",!0)],64))}}),[["__scopeId","data-v-326c95dd"]]),T=o.defineComponent({name:"CellTemplate",props:{field:{type:String,required:!0}},setup(e){const t=o.inject(B),n=o.useSlots();return t?(o.onMounted(()=>{n.default&&t.register({type:"cell",fieldId:e.field,slot:n.default})}),o.onBeforeUnmount(()=>{t.unregister("cell",e.field)}),()=>null):()=>null}}),z=o.defineComponent({name:"HeaderTemplate",props:{field:{type:String,required:!0}},setup(e){const t=o.inject(B),n=o.useSlots();return t?(o.onMounted(()=>{n.default&&t.register({type:"header",fieldId:e.field,slot:n.default})}),o.onBeforeUnmount(()=>{t.unregister("header",e.field)}),()=>null):()=>null}}),$=o.defineComponent({name:"CellEditor",props:{field:{type:String,required:!0}},setup(e){const t=o.inject(B),n=o.useSlots();return t?(o.onMounted(()=>{n.default&&t.register({type:"editor",fieldId:e.field,slot:n.default})}),o.onBeforeUnmount(()=>{t.unregister("editor",e.field)}),()=>null):()=>null}}),D=o.defineComponent({name:"DetailTemplate",props:{minHeight:{type:Number,default:100},maxHeight:{type:Number},singleExpand:{type:Boolean,default:!1},keepDetailRows:{type:Boolean,default:!0}},setup(e){const t=o.inject(S),n=o.inject(M),l=o.useSlots();return t&&n?(o.onMounted(()=>{const o=t.value;if(!o||!l.default)return;const r=l.default;o.masterDetail.setConfig({minHeight:e.minHeight,maxHeight:e.maxHeight,singleExpand:e.singleExpand,keepMasterDetailRows:e.keepDetailRows,renderer:(e,t,o)=>{const l=`detail:${o}`,i={parentData:t,dataIndex:o};return n.mount(l,e,{render:()=>r(i)},i),()=>{n.unmount(l)}}})}),o.onBeforeUnmount(()=>{null==n||n.unmountByPrefix("detail:")}),()=>null):()=>null}}),I=o.defineComponent({name:"GroupTemplate",setup(){const e=o.inject(S),t=o.inject(M),n=o.useSlots();return e&&t?(o.onMounted(()=>{const o=e.value;if(!o||!n.default)return;const l=n.default;o.formatRow.addHandler("_groupTemplate",e=>{if("group-row"!==e.type)return;const o=e.ctx,n=o.element;if(!n)return;const r=`group:${o.viewIndex}`,i={groupKey:o.column,groupValue:o.value,level:o.level,count:o.itemCount,isExpanded:!o.collapsed};t.mount(r,n,{render:()=>l(i)},i)})}),o.onBeforeUnmount(()=>{var o;null==t||t.unmountByPrefix("group:"),null==(o=e.value)||o.formatRow.removeHandler("_groupTemplate")}),()=>null):()=>null}});let H=!1;function G(e){return e?(Object.prototype.hasOwnProperty.call(e,"formatHeaderRow")||Object.defineProperty(e,"formatHeaderRow",{configurable:!0,get:()=>(H||(H=!0),e.formatHeader)}),e):null}const V=o.defineComponent({__name:"MozGridVue",props:{name:{},useToolBox:{type:Boolean,default:!0},useToolBoxSetting:{type:Boolean,default:!0},useExtendFooter:{type:Boolean,default:!0},useSummaryFooter:{type:Boolean,default:!1},useSort:{type:Boolean,default:!0},useCustomCell:{type:Boolean,default:!0},contextMenuConfig:{default:()=>({})},useContextMenu:{type:Boolean,default:!0},loading:{type:Boolean},emptyState:{},fields:{},data:{},mode:{},pivotRowFields:{},pivotColumnFields:{},pivotValueFields:{},height:{default:"100%"},keyFields:{},theme:{},rowHeight:{},headerHeight:{},showHeader:{type:Boolean,default:!0},resizableColumns:{type:Boolean,default:!0},reorderableColumns:{type:Boolean,default:!0},showRowHeader:{type:[Boolean,Object]},rowHeader:{type:[Boolean,Object]},rowSelection:{},cellSelection:{default:()=>({mode:"range"})},cellSelectionImpliesRows:{type:Boolean},editable:{type:Boolean,default:!1},tooltipMode:{default:"overflow"},alternatingRows:{type:Boolean,default:!0},autoFitColumns:{type:Boolean},dynamicRowHeights:{type:Boolean,default:!1},reorderableRows:{type:Boolean,default:!1},locale:{},engine:{},useWorker:{type:Boolean},loader:{},preventKeyEdit:{type:Boolean,default:!0},showStatusBar:{type:Boolean},showDragHandleColumn:{type:Boolean},undoStack:{},formatRow:{},translations:{},rowStyle:{},headerStyle:{},rowHeightChangeThreshold:{},group:{},columnGroups:{},rowTemplate:{}},emits:["ready","data:loaded","row:click","row:dblclick","row:pinned","row:unpinned","row:reordered","cell:click","cell:dblclick","cell:change","cell:beforeEdit","cell:editCommitting","cell:editCommitted","cell:tooltip","selection:changed","column:resize","column:reorder","column:pin","column:visibility","sort:changed","filter:changed","undo:stateChange","clipboard:copy","clipboard:paste","validation:changed","columnGroup:toggle","scroll","contextmenu"],setup(e,{expose:t,emit:l}){const r=e,i=l,s=o.computed(()=>{const e={...r};for(const t of n.WRAPPER_EXTRA_KEYS)delete e[t];return delete e.name,delete e.locale,e}),a=o.computed(()=>{const e=r,t={};for(const o of n.WRAPPER_EXTRA_KEYS)void 0!==e[o]&&(t[o]=e[o]);return void 0!==e.locale&&(t.locale=e.locale),t}),u=Object.fromEntries(["ready","data:loaded","row:click","row:dblclick","row:pinned","row:unpinned","row:reordered","cell:click","cell:dblclick","cell:change","cell:beforeEdit","cell:editCommitting","cell:editCommitted","cell:tooltip","selection:changed","column:resize","column:reorder","column:pin","column:visibility","sort:changed","filter:changed","undo:stateChange","clipboard:copy","clipboard:paste","validation:changed","columnGroup:toggle","scroll","contextmenu"].map(e=>[e,(...t)=>i(e,...t)]));u.ready=e=>i("ready",G(e));const d=o.ref(null);function c(){return d.value??null}const p={};return Object.defineProperties(p,{grid:{enumerable:!0,get:()=>{var e;return G(null==(e=c())?void 0:e.grid)}},core:{enumerable:!0,get:()=>p},filterModule:{enumerable:!0,get:()=>{var e;return null==(e=c())?void 0:e.filter}},sortModule:{enumerable:!0,get:()=>{var e;return null==(e=c())?void 0:e.sort}},customCellModule:{enumerable:!0,get:()=>{var e;return null==(e=c())?void 0:e.customCell}},bulkEditorModule:{enumerable:!0,get:()=>{var e;return null==(e=c())?void 0:e.bulkEditor}}}),p.refresh=async()=>{var e,t;return null==(t=null==(e=c())?void 0:e.grid)?void 0:t.refresh()},p.loadData=async e=>{var t,o;return null==(o=null==(t=c())?void 0:t.grid)?void 0:o.loadData(e)},p.sort=async e=>{var t,o;return null==(o=null==(t=c())?void 0:t.grid)?void 0:o.sort(e)},p.filter=async e=>{var t,o;return null==(o=null==(t=c())?void 0:t.grid)?void 0:o.filter(e)},t(p),(e,t)=>(o.openBlock(),o.createBlock(P,o.mergeProps({ref_key:"mozRef",ref:d,coreConfig:s.value},a.value,{name:r.name},o.toHandlers(o.unref(u))),o.createSlots({default:o.withCtx(()=>[o.renderSlot(e.$slots,"default")]),_:2},[e.$slots["tool-left"]?{name:"tool-left",fn:o.withCtx(()=>[o.renderSlot(e.$slots,"tool-left")]),key:"0"}:void 0,e.$slots["tool-items"]?{name:"tool-items",fn:o.withCtx(t=>[o.renderSlot(e.$slots,"tool-items",o.normalizeProps(o.guardReactiveProps(t)))]),key:"1"}:void 0,e.$slots.notification?{name:"notification",fn:o.withCtx(()=>[o.renderSlot(e.$slots,"notification")]),key:"2"}:void 0,e.$slots.footer?{name:"footer",fn:o.withCtx(()=>[o.renderSlot(e.$slots,"footer")]),key:"3"}:void 0,e.$slots.customState?{name:"empty-state",fn:o.withCtx(()=>[o.renderSlot(e.$slots,"customState")]),key:"4"}:void 0]),1040,["coreConfig","name"]))}}),L=o.defineComponent({__name:"MozPivotVue",props:{name:{},data:{},rowFields:{},columnFields:{},valueFields:{},height:{default:"100%"},showRowSubTotals:{type:Boolean,default:!1},showRowGrandTotals:{type:Boolean,default:!0},showColumnSubTotals:{type:Boolean,default:!1},showColumnGrandTotals:{type:Boolean,default:!0},trackSourceRows:{type:Boolean,default:!1},showHeader:{type:Boolean,default:!0},alternatingRows:{type:Boolean,default:!1},tooltipMode:{default:"overflow"},rowSelection:{},cellSelection:{default:()=>({mode:"range"})},cellSelectionImpliesRows:{type:Boolean},useToolBox:{type:Boolean,default:!0},useToolBoxSetting:{type:Boolean,default:!0},useFilter:{type:Boolean,default:!0},useSort:{type:Boolean,default:!0},useCustomCell:{type:Boolean,default:!0},useExtendFooter:{type:Boolean,default:!0},useSummaryFooter:{type:Boolean,default:!1},useContextMenu:{type:Boolean,default:!0},contextMenuConfig:{},useChart:{type:Boolean,default:!1},fields:{},availableFields:{},useMultipleChart:{type:Boolean,default:!0},chartIncludeGrandTotal:{type:Boolean,default:!1},chartMap:{},loading:{type:Boolean},emptyState:{}},emits:["ready","data:loaded","filter:changed","pivot:configured","pivot:toggled","update:rowFields","update:columnFields","update:valueFields"],setup(e,{expose:t,emit:l}){const r=e,i=l,s=o.computed(()=>{const e={...r};for(const t of n.WRAPPER_EXTRA_KEYS)delete e[t];return delete e.name,delete e.locale,delete e.availableFields,delete e.useFilter,e.mode="pivot",e}),a=o.computed(()=>{const e=r,t={};for(const o of n.WRAPPER_EXTRA_KEYS)void 0!==e[o]&&(t[o]=e[o]);return void 0!==e.locale&&(t.locale=e.locale),t.sourceFields=e.sourceFields??e.availableFields??e.fields,t}),u=Object.fromEntries(["ready","data:loaded","filter:changed","pivot:toggled"].map(e=>[e,(...t)=>i(e,...t)]));function d(e){var t,o,n;const l=e;i("update:rowFields",l.rowFields??[]),i("update:columnFields",l.columnFields??[]),i("update:valueFields",l.valueFields??[]);const r=null==(n=null==(o=null==(t=p())?void 0:t.pivot)?void 0:o.getRawConfig)?void 0:n.call(o);r&&i("pivot:configured",r)}u.ready=e=>i("ready",G(e));const c=o.ref(null);function p(){return c.value??null}function m(){var e,t;return null==(t=null==(e=p())?void 0:e.grid)?void 0:t.pivot}const f=o.computed({get:()=>{var e,t;return(null==(t=null==(e=p())?void 0:e.chart)?void 0:t.visible)??!1},set:e=>{var t,o;return null==(o=null==(t=p())?void 0:t.chart)?void 0:o.setVisible(e)}}),g={};return Object.defineProperties(g,{grid:{enumerable:!0,get:()=>{var e;return G(null==(e=p())?void 0:e.grid)}},core:{enumerable:!0,get:()=>g},pivotApi:{enumerable:!0,get:()=>m()??null},filterModule:{enumerable:!0,get:()=>{var e;return null==(e=p())?void 0:e.filter}},sortModule:{enumerable:!0,get:()=>{var e;return null==(e=p())?void 0:e.sort}},customCellModule:{enumerable:!0,get:()=>{var e;return null==(e=p())?void 0:e.customCell}},showChart:{enumerable:!0,get:()=>f.value,set:e=>{f.value=e}}}),g.refresh=async()=>{var e,t;return null==(t=null==(e=p())?void 0:e.grid)?void 0:t.refresh()},g.setConfig=async e=>{var t;return null==(t=m())?void 0:t.setConfig(e)},g.getResult=()=>{var e;return(null==(e=m())?void 0:e.getResult())??null},g.expandAll=async()=>{var e;return null==(e=m())?void 0:e.expandAllRows()},g.collapseAll=async()=>{var e;return null==(e=m())?void 0:e.collapseAllRows()},g.expandToLevel=async e=>{var t;return null==(t=m())?void 0:t.expandRowToLevel(e)},g.toggleChart=()=>{f.value=!f.value},t(g),(e,t)=>(o.openBlock(),o.createBlock(P,o.mergeProps({ref_key:"mozRef",ref:c,coreConfig:s.value},a.value,{name:r.name,"onUpdate:coreConfig":d},o.toHandlers(o.unref(u))),o.createSlots({default:o.withCtx(()=>[o.renderSlot(e.$slots,"default")]),_:2},[e.$slots["tool-left"]?{name:"tool-left",fn:o.withCtx(()=>[o.renderSlot(e.$slots,"tool-left")]),key:"0"}:void 0,e.$slots["tool-items"]?{name:"tool-items",fn:o.withCtx(t=>[o.renderSlot(e.$slots,"tool-items",o.normalizeProps(o.guardReactiveProps(t)))]),key:"1"}:void 0,e.$slots.footer?{name:"footer",fn:o.withCtx(()=>[o.renderSlot(e.$slots,"footer")]),key:"2"}:void 0,e.$slots.customState?{name:"empty-state",fn:o.withCtx(()=>[o.renderSlot(e.$slots,"customState")]),key:"3"}:void 0]),1040,["coreConfig","name"]))}});exports.GridNotificationKey=l.GridNotificationKey,exports.provideGridNotification=l.provideGridNotification,exports.useGridNotificationStore=l.useGridNotificationStore,exports.ExcelDataType=s.DataType,exports.FileParameter=s.FileParameter,exports.enUS=s.enUS,exports.getGridVueLocale=s.getGridVueLocale,exports.getGridVueLocaleCode=s.getGridVueLocaleCode,exports.jaJP=s.jaJP,exports.koKR=s.koKR,exports.normalizeGridVueLocale=s.normalizeGridVueLocale,exports.openToast=s.openToast,exports.setGridVueLocale=s.setGridVueLocale,exports.showMessage=s.showMessage,exports.useExcelDownloadStore=s.useExcelDownloadStore,exports.useExcelStore=s.useExcelStore,exports.useExcelUploadStore=s.useExcelUploadStore,exports.zhCN=s.zhCN,Object.defineProperty(exports,"ROW_HEADER_COLUMN_ID",{enumerable:!0,get:()=>u.ROW_HEADER_COLUMN_ID}),Object.defineProperty(exports,"UndoStack",{enumerable:!0,get:()=>u.UndoStack}),Object.defineProperty(exports,"getCornerCell",{enumerable:!0,get:()=>u.getCornerCell}),Object.defineProperty(exports,"getRowHeaderCell",{enumerable:!0,get:()=>u.getRowHeaderCell}),exports.CellEditor=$,exports.CellTemplate=T,exports.ClientExcelUploadController=x,exports.ClientExcelUploadPopup=C,exports.DetailTemplate=D,exports.GRID_BULK_EDITOR_MODULE_KEY=F,exports.GRID_CUSTOM_CELL_MODULE_KEY=k,exports.GRID_FILTER_MODULE_KEY=E,exports.GRID_INSTANCE_KEY=S,exports.GRID_RENDERER_KEY=M,exports.GRID_SORT_MODULE_KEY=R,exports.GRID_TEMPLATE_REGISTRY_KEY=B,exports.GroupTemplate=I,exports.HeaderTemplate=z,exports.MozGrid=P,exports.MozGridVue=V,exports.MozPivotVue=L,exports.StreamingParameter=class{constructor(e){t(this,"params"),t(this,"loading",!0),t(this,"size",0),t(this,"offset",0),t(this,"onReceived"),t(this,"onClosed"),t(this,"onHandleError"),t(this,"onCancelClick"),t(this,"_complete",!1),this.params=e}get ipcObject(){return this.params}get percent(){return 0===this.offset||0===this.size?0:Math.round(this.offset/this.size*100)}get complete(){return this._complete}received(e){this.offset++,this.onReceived&&this.onReceived(e)}closed(e=!0){this._complete=e,this.onClosed&&this.onClosed()}handleError(e,t=!0){this._complete=t,this.onHandleError&&this.onHandleError(e)}},exports.UserLayoutInstance=d,exports.VueRenderer=_,exports.downloadBlob=function(e,t){const o=URL.createObjectURL(e),n=document.createElement("a");n.href=o,n.download=t,n.style.display="none",document.body.appendChild(n),n.click(),document.body.removeChild(n),setTimeout(()=>URL.revokeObjectURL(o),0)},exports.exportCsv=async function(e){let t,o;if("pivot"===e.pivot.getMode()){const n=await e.pivot.getDataMatrix();if(!n)return;t=n.headers,o=n.rows}else{const n=await e.getExportData({scope:"all"});if(!n)return;const{headers:l,rows:r}=n,i=l.map(e=>e.id);t=l.map(e=>e.header),o=r.map(e=>i.map(t=>e[t]))}const n=[];n.push(t.map(g).join(","));for(const a of o)n.push(a.map(g).join(","));const l="\ufeff"+n.join("\r\n"),r=new Blob([l],{type:"text/csv;charset=utf-8;"}),i=URL.createObjectURL(r),s=document.createElement("a");s.href=i,s.download=`export_${(new Date).toISOString().slice(0,10)}.csv`,s.click(),URL.revokeObjectURL(i)},exports.generateSessionId=f,exports.pickFile=function(e=".xlsx"){return new Promise(t=>{const o=document.createElement("input");o.type="file",o.accept=e,o.style.display="none";let n=!1;const l=()=>{o.parentNode&&o.parentNode.removeChild(o)};o.onchange=()=>{if(n)return;n=!0;const e=o.files&&o.files.length>0?o.files[0]:null;l(),t(e)};const r=()=>{window.removeEventListener("focus",r),setTimeout(()=>{n||(n=!0,l(),t(null))},300)};window.addEventListener("focus",r),document.body.appendChild(o),o.click()})},exports.runClientExport=async function(e,t,o){var n;const l=`${t.exportFileName??"export"}_${a().format("YYYYMMDD")}.xlsx`,r=f();o&&o.eventMessages.unshift({noti_type:"progress",header_key:"text-file_download",noti_datetime:a().format("YYYY-MM-DD HH:mm:ss"),noti_sender_id:"",prop_value:{session_id:r,file_name:l,status:"in_progress",progress_per:0,operation_type:"download",remain_time:-1}});try{if(await e.io.saveExcelToFile({scope:"all",includeHeaders:!0,suggestedName:l,fallbackToDownload:!0,sheetSplit:"auto",onProgress:e=>{if(!o)return;const t=o.eventMessages.find(e=>{var t;return(null==(t=e.prop_value)?void 0:t.session_id)===r});if(!(null==t?void 0:t.prop_value))return;let n="number"==typeof e.percent?e.percent:void 0;void 0===n&&"number"==typeof e.rowsProcessed&&"number"==typeof e.totalRows&&e.totalRows>0&&(n=e.rowsProcessed/e.totalRows*100),"number"==typeof n&&(t.prop_value.progress_per=Math.min(99,Math.max(0,Math.floor(n))))},...t.clientExportOptions??{}}),o){const e=o.eventMessages.find(e=>{var t;return(null==(t=e.prop_value)?void 0:t.session_id)===r});(null==e?void 0:e.prop_value)&&(e.prop_value.status="completed",e.prop_value.progress_per=100),setTimeout(()=>{const e=o.eventMessages.findIndex(e=>{var t;return(null==(t=e.prop_value)?void 0:t.session_id)===r});-1!==e&&o.eventMessages.splice(e,1)},2e3)}null==(n=t.onClientExportComplete)||n.call(t,new Blob)}catch(i){if(i instanceof DOMException&&"AbortError"===i.name){if(o){const e=o.eventMessages.findIndex(e=>{var t;return(null==(t=e.prop_value)?void 0:t.session_id)===r});-1!==e&&o.eventMessages.splice(e,1)}return}if(o){const e=o.eventMessages.find(e=>{var t;return(null==(t=e.prop_value)?void 0:t.session_id)===r});(null==e?void 0:e.prop_value)&&(e.prop_value.status="error",e.prop_value.error_message=i instanceof Error?i.message:String(i),e.prop_value.progress_per=0,e.prop_value.remain_time=-1)}}},exports.useClientExcelStore=m,exports.useUserLayoutModule=c;
|
package/dist/index.d.ts
CHANGED
|
@@ -36,7 +36,7 @@ export type { IExcelInfo, IExcelAPI, AdditionalColumn } from './types/excel.type
|
|
|
36
36
|
export { DataType as ExcelDataType } from './types/excel.types';
|
|
37
37
|
export { FileParameter, StreamingParameter } from './types';
|
|
38
38
|
export type { SystemType } from './types/core';
|
|
39
|
-
export type { PureSheetConfig, FieldDef, PureSheetEventType, SortState, FilterState, FilterOperator, Row, ColumnDef, ColumnState, ColumnInfo, ColumnUpdatePartial, MaskConfig, CellAlign, CellAttributes, CellAttributesFn, FormatHeaderCallback, FormatHeaderContext, HeaderCellInfo, EditorConfig, GridState, GridActivity, ViewState, RowSelectionMode, CellSelectionMode, RowSelectionTrigger, RowSelectionConfig, CellSelectionConfig, DataType, AggregateFunc, RowState, ValidationRule, ValidationError, ValidationTrigger,
|
|
39
|
+
export type { PureSheetConfig, FieldDef, PureSheetEventType, SortState, FilterState, FilterOperator, Row, ColumnDef, ColumnState, ColumnInfo, ColumnUpdatePartial, MaskConfig, CellAlign, CellAttributes, CellAttributesFn, FormatHeaderCallback, FormatHeaderContext, HeaderCellInfo, EditorConfig, GridState, GridActivity, ViewState, RowSelectionMode, CellSelectionMode, RowSelectionTrigger, RowSelectionConfig, CellSelectionConfig, DataType, AggregateFunc, RowState, ValidationRule, ValidationError, ValidationTrigger, RowGroupConfig, TreeConfig, MasterDetailConfig, ColumnGroupDef, FormatRowCallback, PartialTranslationMap, IPivotAPI, PivotState, PivotConfig, PivotRowField, PivotColumnField, PivotValueField, PivotResult, PivotHeaderNode, PivotRow, ShowValueAs, IRowsAPI, IColumnsAPI, IChangesAPI, IUndoManagerAPI, IGroupAPI, ITreeAPI, IMasterDetailAPI, IValidationAPI, IClipboardAPI, IHeadersAPI, } from '../../moz-ui-grid-core/src/index.ts';
|
|
40
40
|
export { UndoStack } from '../../moz-ui-grid-core/src/index.ts';
|
|
41
41
|
export type { FormatHeaderCallback as FormatHeaderRowCallback, FormatHeaderContext as FormatHeaderRowContext, } from '../../moz-ui-grid-core/src/index.ts';
|
|
42
42
|
export { getRowHeaderCell, getCornerCell, ROW_HEADER_COLUMN_ID } from '../../moz-ui-grid-core/src/index.ts';
|
package/dist/index.js
CHANGED
|
@@ -945,6 +945,11 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
|
945
945
|
useMultipleChart: { type: Boolean },
|
|
946
946
|
chartIncludeGrandTotal: { type: Boolean },
|
|
947
947
|
chartMap: {},
|
|
948
|
+
useRowGroupSettings: { type: Boolean, default: true },
|
|
949
|
+
useFieldSettings: { type: Boolean, default: true },
|
|
950
|
+
useFormatSettings: { type: Boolean, default: true },
|
|
951
|
+
useLayoutSettings: { type: Boolean, default: true },
|
|
952
|
+
useAggregateSettings: { type: Boolean, default: true },
|
|
948
953
|
useToolBox: { type: Boolean, default: true },
|
|
949
954
|
useToolBoxSetting: { type: Boolean, default: true },
|
|
950
955
|
useExtendFooter: { type: Boolean, default: true },
|
|
@@ -1136,6 +1141,11 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
|
1136
1141
|
usePivot: props.usePivot,
|
|
1137
1142
|
usePivotBar: props.usePivotBar,
|
|
1138
1143
|
useChart: props.useChart,
|
|
1144
|
+
useRowGroupSettings: props.useRowGroupSettings,
|
|
1145
|
+
useFieldSettings: props.useFieldSettings,
|
|
1146
|
+
useFormatSettings: props.useFormatSettings,
|
|
1147
|
+
useLayoutSettings: props.useLayoutSettings,
|
|
1148
|
+
useAggregateSettings: props.useAggregateSettings,
|
|
1139
1149
|
useMultipleChart: props.useMultipleChart,
|
|
1140
1150
|
chartIncludeGrandTotal: props.chartIncludeGrandTotal,
|
|
1141
1151
|
chartMap: props.chartMap,
|
|
@@ -1266,7 +1276,12 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
|
1266
1276
|
useContextMenu: props.useContextMenu,
|
|
1267
1277
|
useBuiltinTooltip: props.useBuiltinTooltip,
|
|
1268
1278
|
usePivot: props.usePivot,
|
|
1269
|
-
usePivotBar: props.usePivotBar
|
|
1279
|
+
usePivotBar: props.usePivotBar,
|
|
1280
|
+
useRowGroupSettings: props.useRowGroupSettings,
|
|
1281
|
+
useFieldSettings: props.useFieldSettings,
|
|
1282
|
+
useFormatSettings: props.useFormatSettings,
|
|
1283
|
+
useLayoutSettings: props.useLayoutSettings,
|
|
1284
|
+
useAggregateSettings: props.useAggregateSettings
|
|
1270
1285
|
}),
|
|
1271
1286
|
(next) => chrome == null ? void 0 : chrome.setUIOptions(next)
|
|
1272
1287
|
);
|
|
@@ -1341,7 +1356,7 @@ const _export_sfc = (sfc, props) => {
|
|
|
1341
1356
|
}
|
|
1342
1357
|
return target;
|
|
1343
1358
|
};
|
|
1344
|
-
const MozGrid = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__scopeId", "data-v-
|
|
1359
|
+
const MozGrid = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__scopeId", "data-v-326c95dd"]]);
|
|
1345
1360
|
const CellTemplate = defineComponent({
|
|
1346
1361
|
name: "CellTemplate",
|
|
1347
1362
|
props: {
|
|
@@ -50,7 +50,7 @@ export declare const Flat: Story;
|
|
|
50
50
|
/**
|
|
51
51
|
* ## 행 그룹 — 그룹 컬럼과 소계가 `id` 로 지목된다
|
|
52
52
|
*
|
|
53
|
-
* `rowGroup.columns` 와 `
|
|
53
|
+
* `rowGroup.columns` 와 `aggregates[].column` 은 **컬럼 식별자**로 지정한다.
|
|
54
54
|
* 소계는 `amount_krw` 하나에만 걸어 두었다.
|
|
55
55
|
*
|
|
56
56
|
* ### 확인할 것
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Meta, StoryObj } from '@storybook/vue3';
|
|
2
|
+
import { default as MozGrid } from '../MozGrid.vue';
|
|
3
|
+
/**
|
|
4
|
+
* [진단용] ITSM-2026-002455 — Ctrl+Space 푸터 값 vs 드래그 선택 푸터 값 불일치.
|
|
5
|
+
*
|
|
6
|
+
* 필터가 걸린 상태에서 같은 컬럼을 Ctrl+Space 로 고를 때와 드래그로 고를 때
|
|
7
|
+
* wrapper 푸터(평균/개수/최소/최대/합계)의 값이 달라지는지 확인한다.
|
|
8
|
+
*
|
|
9
|
+
* 데이터: salary = 100..500 (5행). dept 가 Y 인 2행(200, 400)을 필터로 제외하면
|
|
10
|
+
* 화면에는 100 / 300 / 500 세 행만 남는다.
|
|
11
|
+
*
|
|
12
|
+
* 기대(화면 기준): 합계 900, 개수 3, 평균 300
|
|
13
|
+
*/
|
|
14
|
+
declare const meta: Meta<typeof MozGrid>;
|
|
15
|
+
export default meta;
|
|
16
|
+
type Story = StoryObj<typeof MozGrid>;
|
|
17
|
+
export declare const CtrlSpaceVsDrag: Story;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { Meta, StoryObj } from '@storybook/vue3';
|
|
2
|
+
import { default as MozGrid } from '../MozGrid.vue';
|
|
3
|
+
/**
|
|
4
|
+
* 선택 방식과 무관하게 푸터 집계가 같아야 한다 — ITSM-2026-002455.
|
|
5
|
+
*
|
|
6
|
+
* ## 제보
|
|
7
|
+
*
|
|
8
|
+
* 피벗 그리드(스마트리포트)에서 값 컬럼을 **Ctrl+Space** 로 고른 뒤 푸터를 보면
|
|
9
|
+
* `개수: 1`, 최소·최대·합계가 전부 평균과 같은 값으로 나왔다. 같은 컬럼을
|
|
10
|
+
* **드래그**로 고르면 `개수: 25`, 합계 39,955.76 처럼 정상으로 보였다.
|
|
11
|
+
*
|
|
12
|
+
* ## 원인 (요약)
|
|
13
|
+
*
|
|
14
|
+
* `selectionAggregates()` 는 "선택 영역 집계" 하나의 계약인데, 선택 방식마다 서로 다른
|
|
15
|
+
* 의미의 값을 같은 타입에 담아 돌려주고 있었다.
|
|
16
|
+
*
|
|
17
|
+
* | 경로 | 읽던 소스 | 증상 |
|
|
18
|
+
* |---|---|---|
|
|
19
|
+
* | 피벗 Ctrl+Space | 컬럼 총합계 스칼라 1개 | `개수: 1`, min=max=sum=avg |
|
|
20
|
+
* | 플랫 Ctrl+Space | 소스 배열(필터 무시) | 필터로 숨긴 행이 합산 |
|
|
21
|
+
* | Ctrl+A | 위와 같은 분기 | 동일 |
|
|
22
|
+
* | 드래그 | 뷰포트에 fetch 된 행만 | 화면 밖 선택 행 누락 |
|
|
23
|
+
*
|
|
24
|
+
* 지금은 네 경로 모두 **선택된 셀들의 집계**로 통일돼 있다. 컬럼 전체 선택은 여전히
|
|
25
|
+
* 셀을 순회하지 않는다(엔진 집계 사용) — 최적화는 유지된다.
|
|
26
|
+
*
|
|
27
|
+
* ## 확인 방법
|
|
28
|
+
*
|
|
29
|
+
* 1. 값 컬럼(`이익`)을 **드래그**로 전부 선택 → 푸터의 개수·합계를 기억한다.
|
|
30
|
+
* 2. 같은 컬럼의 셀 하나를 클릭한 뒤 **Ctrl+Space** → 푸터가 **같은 값**이어야 한다.
|
|
31
|
+
* 3. `필터 적용` 을 누르고 1~2 를 반복 → 숨긴 행이 합산되지 않아야 한다.
|
|
32
|
+
* 4. `현재 집계 측정` 은 푸터가 읽는 값과 내부 상태를 함께 찍는다.
|
|
33
|
+
*/
|
|
34
|
+
declare const meta: Meta<typeof MozGrid>;
|
|
35
|
+
export default meta;
|
|
36
|
+
type Story = StoryObj<typeof MozGrid>;
|
|
37
|
+
export declare const PivotCtrlSpaceVsDrag: Story;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { Meta, StoryObj } from '@storybook/vue3';
|
|
2
|
+
import { default as MozGrid } from '../MozGrid.vue';
|
|
3
|
+
/**
|
|
4
|
+
* 플랫 그리드 병합 셀 복사 — ITSM-2026-002315.
|
|
5
|
+
*
|
|
6
|
+
* ## 무엇을 확인하는 스토리인가
|
|
7
|
+
*
|
|
8
|
+
* 병합된 셀을 복사하면 블록 하나가 **자기 크기(rowSpan × colSpan)만큼 반복 출력**되던
|
|
9
|
+
* 결함을 눈으로 재확인하기 위한 것이다. 세로 2행 병합을 고르면 같은 값이 두 줄,
|
|
10
|
+
* 두 열이 같은 범위로 병합돼 있으면 블록이 통째로 두 번 나왔다.
|
|
11
|
+
*
|
|
12
|
+
* ## 고친 뒤의 규칙 — Excel / Google Sheets / Handsontable 과 동일
|
|
13
|
+
*
|
|
14
|
+
* 병합 블록은 **앵커(좌상단)에서 한 번만** 값을 내고, 나머지 멤버 자리는 빈 칸으로 둔다.
|
|
15
|
+
* Handsontable 문서 표현으로는 "keeps only the upper-left value ... and clears other values".
|
|
16
|
+
* 선택 격자의 행 × 열 모양 자체는 그대로 유지되므로 Excel 에 붙여넣으면 화면에서 보던
|
|
17
|
+
* 레이아웃이 그대로 재현된다.
|
|
18
|
+
*
|
|
19
|
+
* ## 조작 방법
|
|
20
|
+
*
|
|
21
|
+
* 1. `부서` / `팀` 열의 병합된 셀을 포함해 범위를 드래그한다.
|
|
22
|
+
* (병합 셀을 건드리면 선택은 항상 블록 전체로 확장된다 — Excel 과 같은 동작.)
|
|
23
|
+
* 2. `복사 결과 보기` 를 누른다. 클립보드로 나가는 TSV 원문이 아래 상자에 뜬다.
|
|
24
|
+
* 탭은 `→`, 줄바꿈은 `↵` 로 치환해 경계를 눈으로 셀 수 있게 했다.
|
|
25
|
+
* 3. 병합 블록이 걸친 행 수만큼 값이 반복되지 않고 **첫 행에만** 있는 것을 확인한다.
|
|
26
|
+
*
|
|
27
|
+
* `Ctrl+C` 도 같은 경로를 쓴다. 버튼은 클립보드 권한 없이도 결과를 볼 수 있게 한 것뿐이다.
|
|
28
|
+
*
|
|
29
|
+
* ## 데이터 구성
|
|
30
|
+
*
|
|
31
|
+
* 병합 경계를 눈으로 세기 쉽도록 고정값이며, **열마다 병합 단위가 다르게** 짰다.
|
|
32
|
+
*
|
|
33
|
+
* | 행 | 부서 | 팀 | 이름 |
|
|
34
|
+
* |---|---|---|---|
|
|
35
|
+
* | 0 | Engineering (3행 병합) | Frontend (2행 병합) | 김철수 |
|
|
36
|
+
* | 1 | 〃 | 〃 | 이영희 |
|
|
37
|
+
* | 2 | 〃 | Backend | 박민수 |
|
|
38
|
+
* | 3 | Design (2행 병합) | UI (2행 병합) | 정수진 |
|
|
39
|
+
* | 4 | 〃 | 〃 | 최동현 |
|
|
40
|
+
*
|
|
41
|
+
* 전체(0~4행 × 4열)를 선택해 복사하면 기대 결과는 이렇다 —
|
|
42
|
+
* 병합된 자리가 빈 칸이고, 비병합 열(`이름`·`급여`)은 행마다 값이 그대로 나온다.
|
|
43
|
+
*
|
|
44
|
+
* ```
|
|
45
|
+
* Engineering → Frontend → 김철수 → 52000 ↵
|
|
46
|
+
* → → 이영희 → 61000 ↵
|
|
47
|
+
* → Backend → 박민수 → 58000 ↵
|
|
48
|
+
* Design → UI → 정수진 → 47000 ↵
|
|
49
|
+
* → → 최동현 → 49000
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
declare const meta: Meta<typeof MozGrid>;
|
|
53
|
+
export default meta;
|
|
54
|
+
type Story = StoryObj<typeof MozGrid>;
|
|
55
|
+
/**
|
|
56
|
+
* 세로 병합 · 열마다 다른 병합 단위 — 앵커에서만 값이 나오는지 확인한다.
|
|
57
|
+
*/
|
|
58
|
+
export declare const FlatMergedCopy: Story;
|