@vmscloud/moz-ui-grid-vue 0.1.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +71 -0
- package/dist/MozGrid.vue.d.ts +127 -0
- package/dist/bridge/VueRenderer.d.ts +37 -0
- package/dist/bridge/fieldBuilder.d.ts +9 -0
- package/dist/bridge/lifecycle.d.ts +6 -0
- package/dist/bridge/templateRegistry.d.ts +8 -0
- package/dist/chunks/index-BDQ0HlwR.js +3404 -0
- package/dist/chunks/index-D5KJLBGW.cjs +14 -0
- package/dist/chunks/notification.contract-BTOch6ed.js +16 -0
- package/dist/chunks/notification.contract-oFkBaE2U.cjs +1 -0
- package/dist/compat/MozGridVue.vue.d.ts +645 -0
- package/dist/compat/MozPivotVue.vue.d.ts +606 -0
- package/dist/compat/index.d.ts +9 -0
- package/dist/compat/legacyGridAliases.d.ts +8 -0
- package/dist/composables/useGridPreset.d.ts +19 -0
- package/dist/contracts/UserLayoutInstance.d.ts +38 -0
- package/dist/contracts/notification.contract.d.ts +41 -0
- package/dist/contracts/userLayout.contract.d.ts +16 -0
- package/dist/index.cjs +26 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.js +90599 -0
- package/dist/legacy/components/common/Dragging.d.ts +17 -0
- package/dist/legacy/components/common/Dragging.vue.d.ts +49 -0
- package/dist/legacy/components/common/custom-cell/FormulaEngine.d.ts +256 -0
- package/dist/legacy/components/common/custom-cell/FormulaInput.vue.d.ts +33 -0
- package/dist/legacy/components/common/custom-cell/GridCustomCell.vue.d.ts +23 -0
- package/dist/legacy/components/common/custom-cell/useFormulaAutocomplete.d.ts +44 -0
- package/dist/legacy/components/common/excel/ClientExcelUploadPopup.vue.d.ts +201 -0
- package/dist/legacy/components/common/excel/assets/IconDropZone.vue.d.ts +2 -0
- package/dist/legacy/components/common/excel/assets/IconFileUpload.vue.d.ts +2 -0
- package/dist/legacy/components/common/filter/GridFilter.vue.d.ts +23 -0
- package/dist/legacy/components/common/footer/GridFooter.vue.d.ts +29 -0
- package/dist/legacy/components/common/sort/GridSort.vue.d.ts +23 -0
- package/dist/legacy/components/common/toolbar/GridSearchInput.vue.d.ts +33 -0
- package/dist/legacy/components/grid/MozGridVue.vue.d.ts +2041 -0
- package/dist/legacy/components/grid/MozGridVueCore.vue.d.ts +118 -0
- package/dist/legacy/components/grid/bulk-editor/GridBulkEditor.vue.d.ts +10 -0
- package/dist/legacy/components/grid/column-settings/AlignPicker.vue.d.ts +10 -0
- package/dist/legacy/components/grid/column-settings/ColorSwatchPicker.vue.d.ts +11 -0
- package/dist/legacy/components/grid/column-settings/ColumnListItem.vue.d.ts +17 -0
- package/dist/legacy/components/grid/column-settings/ColumnOptionsPanel.vue.d.ts +32 -0
- package/dist/legacy/components/grid/column-settings/FontSizePicker.vue.d.ts +10 -0
- package/dist/legacy/components/grid/column-settings/FontStyleToggles.vue.d.ts +15 -0
- package/dist/legacy/components/grid/column-settings/MaskPresetPicker.vue.d.ts +14 -0
- package/dist/legacy/components/grid/context-menu/GridContextMenu.vue.d.ts +208 -0
- package/dist/legacy/components/grid/group-panel/GroupPanel.vue.d.ts +18 -0
- package/dist/legacy/components/grid/toolbar/ColumnPicker.vue.d.ts +17 -0
- package/dist/legacy/components/grid/toolbar/ColumnSettings.vue.d.ts +30 -0
- package/dist/legacy/components/grid/toolbar/GridOptionModal.vue.d.ts +211 -0
- package/dist/legacy/components/grid/toolbar/GridToolBox.vue.d.ts +69 -0
- package/dist/legacy/components/pivot/MozPivotVue.vue.d.ts +1868 -0
- package/dist/legacy/components/pivot/PivotContextMenu.vue.d.ts +634 -0
- package/dist/legacy/components/pivot/PivotFieldChip.vue.d.ts +16 -0
- package/dist/legacy/components/pivot/PivotFieldDropZone.vue.d.ts +26 -0
- package/dist/legacy/components/pivot/PivotFieldPanel.vue.d.ts +28 -0
- package/dist/legacy/components/pivot/PivotOptionModal.vue.d.ts +534 -0
- package/dist/legacy/components/pivot/PivotToolBox.vue.d.ts +79 -0
- package/dist/legacy/components/pivot/chart/EChart.vue.d.ts +13 -0
- package/dist/legacy/components/pivot/chart/MozPivotChart.types.d.ts +16 -0
- package/dist/legacy/components/pivot/chart/MozPivotChart.vue.d.ts +14 -0
- package/dist/legacy/components/pivot/chart/PivotChartDetail.vue.d.ts +13 -0
- package/dist/legacy/components/pivot/chart/PivotChartMini.vue.d.ts +18 -0
- package/dist/legacy/components/pivot/chart/PivotChartMultiple.vue.d.ts +18 -0
- package/dist/legacy/components/pivot/chart/PivotChartToolbar.vue.d.ts +38 -0
- package/dist/legacy/components/pivot/chart/chartUtils.d.ts +45 -0
- package/dist/legacy/components/pivot/chart/useChartData.d.ts +35 -0
- package/dist/legacy/composables/useCellTooltip.d.ts +8 -0
- package/dist/legacy/composables/useClientExcelExport.d.ts +24 -0
- package/dist/legacy/composables/useClientExcelStore.d.ts +16 -0
- package/dist/legacy/composables/useColumnFormatter.d.ts +45 -0
- package/dist/legacy/composables/useColumnSettings.d.ts +35 -0
- package/dist/legacy/composables/useContextMenu.d.ts +71 -0
- package/dist/legacy/composables/useGridBulkEditor.d.ts +36 -0
- package/dist/legacy/composables/useGridChanges.d.ts +28 -0
- package/dist/legacy/composables/useGridColumns.d.ts +37 -0
- package/dist/legacy/composables/useGridCustomCell.d.ts +34 -0
- package/dist/legacy/composables/useGridEvents.d.ts +14 -0
- package/dist/legacy/composables/useGridFilter.d.ts +38 -0
- package/dist/legacy/composables/useGridInstance.d.ts +16 -0
- package/dist/legacy/composables/useGridSelect.d.ts +18 -0
- package/dist/legacy/composables/useGridSelection.d.ts +18 -0
- package/dist/legacy/composables/useGridSort.d.ts +38 -0
- package/dist/legacy/composables/useGridUndoRedo.d.ts +28 -0
- package/dist/legacy/composables/useGridValidation.d.ts +28 -0
- package/dist/legacy/composables/useMaskPresets.d.ts +38 -0
- package/dist/legacy/composables/useSearchHighlight.d.ts +12 -0
- package/dist/legacy/icons/IconAdd.vue.d.ts +11 -0
- package/dist/legacy/icons/IconArrowDownWithTail.vue.d.ts +11 -0
- package/dist/legacy/icons/IconArrowLeft.vue.d.ts +11 -0
- package/dist/legacy/icons/IconArrowLeftWithTail.vue.d.ts +11 -0
- package/dist/legacy/icons/IconArrowRight.vue.d.ts +11 -0
- package/dist/legacy/icons/IconArrowUpCenter.vue.d.ts +11 -0
- package/dist/legacy/icons/IconArrowUpWithTail.vue.d.ts +11 -0
- package/dist/legacy/icons/IconChart.vue.d.ts +11 -0
- package/dist/legacy/icons/IconClose.vue.d.ts +13 -0
- package/dist/legacy/icons/IconColorPicker.vue.d.ts +11 -0
- package/dist/legacy/icons/IconCustomCell.vue.d.ts +11 -0
- package/dist/legacy/icons/IconDecide.vue.d.ts +11 -0
- package/dist/legacy/icons/IconDownload.vue.d.ts +11 -0
- package/dist/legacy/icons/IconDragHandler.vue.d.ts +11 -0
- package/dist/legacy/icons/IconFilter.vue.d.ts +11 -0
- package/dist/legacy/icons/IconInfoFilled.vue.d.ts +11 -0
- package/dist/legacy/icons/IconRedo.vue.d.ts +9 -0
- package/dist/legacy/icons/IconReset.vue.d.ts +9 -0
- package/dist/legacy/icons/IconResetGridToolbar.vue.d.ts +11 -0
- package/dist/legacy/icons/IconSearch.vue.d.ts +11 -0
- package/dist/legacy/icons/IconSetting.vue.d.ts +11 -0
- package/dist/legacy/icons/IconSettingFilled.vue.d.ts +11 -0
- package/dist/legacy/icons/IconSort.vue.d.ts +11 -0
- package/dist/legacy/icons/IconToastWarning.vue.d.ts +11 -0
- package/dist/legacy/icons/IconUndo.vue.d.ts +9 -0
- package/dist/legacy/icons/index.d.ts +25 -0
- package/dist/legacy/index.d.ts +69 -0
- package/dist/legacy/shared/colorPresets.d.ts +36 -0
- package/dist/legacy/store/UploadRefreshRegistry.d.ts +5 -0
- package/dist/legacy/store/excelStore.d.ts +89 -0
- package/dist/legacy/store/index.d.ts +231 -0
- package/dist/legacy/stores/index.d.ts +2 -0
- package/dist/legacy/stores/projectInfo/projectInfo.contract.d.ts +130 -0
- package/dist/legacy/stories/Autofit.stories.d.ts +9 -0
- package/dist/legacy/stories/CRUD.stories.d.ts +9 -0
- package/dist/legacy/stories/CellAttributes.stories.d.ts +19 -0
- package/dist/legacy/stories/CellMask.stories.d.ts +19 -0
- package/dist/legacy/stories/ClientExcel.stories.d.ts +8 -0
- package/dist/legacy/stories/Clipboard.stories.d.ts +12 -0
- package/dist/legacy/stories/ColumnVisibility.stories.d.ts +12 -0
- package/dist/legacy/stories/ColumnWidths.stories.d.ts +11 -0
- package/dist/legacy/stories/CustomSortFilter.stories.d.ts +7 -0
- package/dist/legacy/stories/DynamicRowHeight.stories.d.ts +13 -0
- package/dist/legacy/stories/Editors.stories.d.ts +9 -0
- package/dist/legacy/stories/EmptyState.stories.d.ts +10 -0
- package/dist/legacy/stories/FormatRow.stories.d.ts +20 -0
- package/dist/legacy/stories/Grouping.stories.d.ts +14 -0
- package/dist/legacy/stories/HeaderGroup.stories.d.ts +11 -0
- package/dist/legacy/stories/LargeData.stories.d.ts +19 -0
- package/dist/legacy/stories/MasterDetail.stories.d.ts +17 -0
- package/dist/legacy/stories/Merge.stories.d.ts +10 -0
- package/dist/legacy/stories/MultiRow.stories.d.ts +12 -0
- package/dist/legacy/stories/MultiRowCrud.stories.d.ts +11 -0
- package/dist/legacy/stories/MultiRowGroup.stories.d.ts +11 -0
- package/dist/legacy/stories/Pinning.stories.d.ts +44 -0
- package/dist/legacy/stories/Pivot.stories.d.ts +23 -0
- package/dist/legacy/stories/PivotAdvanced.stories.d.ts +20 -0
- package/dist/legacy/stories/PivotChart.stories.d.ts +23 -0
- package/dist/legacy/stories/PivotNonNumeric.stories.d.ts +27 -0
- package/dist/legacy/stories/Preset.stories.d.ts +11 -0
- package/dist/legacy/stories/ReactiveAPI.stories.d.ts +8 -0
- package/dist/legacy/stories/ReactiveSafety.stories.d.ts +28 -0
- package/dist/legacy/stories/Repro.stories.d.ts +36 -0
- package/dist/legacy/stories/RowAPI.stories.d.ts +12 -0
- package/dist/legacy/stories/SelectionModes.stories.d.ts +35 -0
- package/dist/legacy/stories/Streaming.stories.d.ts +12 -0
- package/dist/legacy/stories/Tree.stories.d.ts +13 -0
- package/dist/legacy/stories/WorkerMode.stories.d.ts +15 -0
- package/dist/legacy/stories/_helpers/localDataLoader.d.ts +7 -0
- package/dist/legacy/stories/_helpers/sampleData.d.ts +117 -0
- package/dist/legacy/types/FileParameter.d.ts +31 -0
- package/dist/legacy/types/StreamingParameter.d.ts +18 -0
- package/dist/legacy/types/excel.types.d.ts +48 -0
- package/dist/legacy/types/index.d.ts +10 -0
- package/dist/legacy/types/pivot-props.d.ts +140 -0
- package/dist/legacy/types/props.d.ts +176 -0
- package/dist/legacy/types/toolbar.d.ts +225 -0
- package/dist/legacy/utils/async/debounce.d.ts +4 -0
- package/dist/legacy/utils/crypto/crypto.d.ts +7 -0
- package/dist/legacy/utils/dialog/dialog.d.ts +19 -0
- package/dist/legacy/utils/excel/ExcelGuard.d.ts +73 -0
- package/dist/legacy/utils/excel/ExcelImportUtil.d.ts +34 -0
- package/dist/legacy/utils/excel/ExcelQueueManager.d.ts +57 -0
- package/dist/legacy/utils/excel/ExcelTaskRunner.d.ts +17 -0
- package/dist/legacy/utils/excel/ExcelTimeoutManager.d.ts +37 -0
- package/dist/legacy/utils/file.d.ts +34 -0
- package/dist/legacy/utils/http/rest.d.ts +5 -0
- package/dist/legacy/utils/id/generator.d.ts +2 -0
- package/dist/legacy/utils/index.d.ts +10 -0
- package/dist/store.cjs +1 -0
- package/dist/store.js +8 -0
- package/dist/stories/ColumnLockVisible.stories.d.ts +42 -0
- package/dist/stories/DateBooleanFilter.stories.d.ts +42 -0
- package/dist/stories/DisplayedRowApi.stories.d.ts +28 -0
- package/dist/stories/FieldId.stories.d.ts +113 -0
- package/dist/stories/GroupPanelWithoutToolbox.stories.d.ts +28 -0
- package/dist/stories/GroupRowRecycle.stories.d.ts +45 -0
- package/dist/stories/GroupTreeExpandNav.stories.d.ts +41 -0
- package/dist/stories/LargeData.stories.d.ts +20 -0
- package/dist/stories/MozGrid.stories.d.ts +51 -0
- package/dist/stories/PivotBarInitiallyOpen.stories.d.ts +69 -0
- package/dist/stories/PivotBarWithoutToolbox.stories.d.ts +39 -0
- package/dist/stories/SelectionApiPlayground.stories.d.ts +28 -0
- package/dist/stories/SingleSelectionModes.stories.d.ts +47 -0
- package/dist/stories/WideColumns.stories.d.ts +17 -0
- package/dist/style.css +1 -0
- package/dist/templates/CellEditor.d.ts +27 -0
- package/dist/templates/CellTemplate.d.ts +27 -0
- package/dist/templates/DetailTemplate.d.ts +60 -0
- package/dist/templates/GroupTemplate.d.ts +17 -0
- package/dist/templates/HeaderTemplate.d.ts +25 -0
- package/dist/types/injection-keys.d.ts +24 -0
- package/dist/types/slots.d.ts +49 -0
- package/dist/utils/excel/ExcelGuard.cjs +1 -0
- package/dist/utils/excel/ExcelGuard.js +74 -0
- package/dist/utils/excel/ExcelImportUtil.cjs +1 -0
- package/dist/utils/excel/ExcelImportUtil.js +61 -0
- package/dist/utils/excel/ExcelQueueManager.cjs +1 -0
- package/dist/utils/excel/ExcelQueueManager.js +10 -0
- package/dist/utils/excel/ExcelTaskRunner.cjs +1 -0
- package/dist/utils/excel/ExcelTaskRunner.js +12 -0
- package/dist/utils/excel/ExcelTimeoutManager.cjs +1 -0
- package/dist/utils/excel/ExcelTimeoutManager.js +420 -0
- package/docs/manual/examples.md +2385 -0
- package/docs/manual/reference.md +4695 -0
- package/docs/manual/reference_vue.md +709 -0
- package/package.json +129 -0
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Excel 관련 타입 및 파라미터 barrel export
|
|
3
|
+
* - 기존 types/ 디렉토리의 개별 파일(pivot-props, props, slots 등)은
|
|
4
|
+
* 직접 import 경로가 안정적이라 별도 re-export 하지 않습니다.
|
|
5
|
+
*/
|
|
6
|
+
export type { IExcelInfo, IExcelAPI, AdditionalColumn } from './excel.types';
|
|
7
|
+
export { DataType } from './excel.types';
|
|
8
|
+
export { default as FileParameter } from './FileParameter';
|
|
9
|
+
export { default as StreamingParameter } from './StreamingParameter';
|
|
10
|
+
export type { SystemType } from './core';
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { PivotRowField, PivotColumnField, PivotValueField, PivotFilterField, FieldDef, RowSelectionConfig, CellSelectionConfig } from '../../../../moz-ui-grid-core/src/index.ts';
|
|
2
|
+
import { IContextMenuConfig } from './toolbar';
|
|
3
|
+
/** PivotGrid 컴포넌트 Props */
|
|
4
|
+
export interface PivotGridProps {
|
|
5
|
+
/** 레이아웃 식별자 (프리셋 저장/복원용, useUserLayoutModule 연동) */
|
|
6
|
+
name?: string;
|
|
7
|
+
/** 데이터 배열 */
|
|
8
|
+
data?: Record<string, unknown>[];
|
|
9
|
+
/** 피벗 행 필드 정의 */
|
|
10
|
+
rowFields: PivotRowField[];
|
|
11
|
+
/** 피벗 열 필드 정의 */
|
|
12
|
+
columnFields: PivotColumnField[];
|
|
13
|
+
/** 피벗 값 필드 정의 */
|
|
14
|
+
valueFields: PivotValueField[];
|
|
15
|
+
/** 그리드 높이 (CSS 값) */
|
|
16
|
+
height?: string | number;
|
|
17
|
+
/** 행 소계 표시 여부 */
|
|
18
|
+
showRowSubTotals?: boolean;
|
|
19
|
+
/** 행 총계 표시 여부 */
|
|
20
|
+
showRowGrandTotals?: boolean;
|
|
21
|
+
/** 열 소계 표시 여부 */
|
|
22
|
+
showColumnSubTotals?: boolean;
|
|
23
|
+
/** 열 총계 표시 여부 */
|
|
24
|
+
showColumnGrandTotals?: boolean;
|
|
25
|
+
/** 원본 행 추적 여부 */
|
|
26
|
+
trackSourceRows?: boolean;
|
|
27
|
+
/** 헤더 표시 여부 (기본: true) */
|
|
28
|
+
showHeader?: boolean;
|
|
29
|
+
/** 줄무늬 행 (기본: false) */
|
|
30
|
+
alternatingRows?: boolean;
|
|
31
|
+
/** 툴팁 모드 (기본: 'none') */
|
|
32
|
+
tooltipMode?: 'none' | 'overflow' | 'always';
|
|
33
|
+
/**
|
|
34
|
+
* 행 선택 설정 — `cellSelection`과 독립.
|
|
35
|
+
* 둘 다 미지정 시 코어 기본값은 `cellSelection: { mode: 'range' }`.
|
|
36
|
+
*/
|
|
37
|
+
rowSelection?: RowSelectionConfig;
|
|
38
|
+
/**
|
|
39
|
+
* 셀 선택 설정 — `rowSelection`과 독립.
|
|
40
|
+
*/
|
|
41
|
+
cellSelection?: CellSelectionConfig;
|
|
42
|
+
/**
|
|
43
|
+
* 셀 선택이 행 선택을 함의하는지 (Policy B fallback). 기본 false.
|
|
44
|
+
*/
|
|
45
|
+
cellSelectionImpliesRows?: boolean;
|
|
46
|
+
/** 툴박스 표시 (기본: true) */
|
|
47
|
+
useToolBox?: boolean;
|
|
48
|
+
/** 툴박스 설정(톱니바퀴) 버튼 표시 (기본: true) */
|
|
49
|
+
useToolBoxSetting?: boolean;
|
|
50
|
+
/** 필터 버튼 표시 (기본: true) */
|
|
51
|
+
useFilter?: boolean;
|
|
52
|
+
/** 정렬 버튼 표시 (기본: true) */
|
|
53
|
+
useSort?: boolean;
|
|
54
|
+
/** 조건부 스타일 버튼 표시 (기본: true) */
|
|
55
|
+
useCustomCell?: boolean;
|
|
56
|
+
/** 푸터 표시 (기본: true) */
|
|
57
|
+
useExtendFooter?: boolean;
|
|
58
|
+
/** 집계 푸터 표시 (기본: false) */
|
|
59
|
+
useSummaryFooter?: boolean;
|
|
60
|
+
/** 컨텍스트 메뉴 사용 여부 (기본: true) */
|
|
61
|
+
useContextMenu?: boolean;
|
|
62
|
+
/** 컨텍스트 메뉴 설정 (엑셀 import/export 등) */
|
|
63
|
+
contextMenuConfig?: IContextMenuConfig;
|
|
64
|
+
/** 차트 버튼 표시 여부 (기본: false) */
|
|
65
|
+
useChart?: boolean;
|
|
66
|
+
/**
|
|
67
|
+
* 사용 가능한 전체 필드 정의 (FieldDef[]).
|
|
68
|
+
* 제공 시 `availableFields` / data[0] 추론보다 우선 사용됩니다.
|
|
69
|
+
*/
|
|
70
|
+
fields?: FieldDef[];
|
|
71
|
+
/** 사용 가능한 전체 필드 목록 (제공 시 data[0] 추론 대신 사용) */
|
|
72
|
+
availableFields?: AvailableField[];
|
|
73
|
+
/** Multiple 차트 사용 여부 (기본: true) */
|
|
74
|
+
useMultipleChart?: boolean;
|
|
75
|
+
/** Grand Total 차트 포함 여부 (기본: false) */
|
|
76
|
+
chartIncludeGrandTotal?: boolean;
|
|
77
|
+
/** 시리즈별 차트 타입/색상 설정 */
|
|
78
|
+
chartMap?: Record<string, {
|
|
79
|
+
type?: 'bar' | 'line' | 'lineSymbols' | 'area';
|
|
80
|
+
color?: string;
|
|
81
|
+
}>;
|
|
82
|
+
/** 로딩 상태 표시 (기본: false) */
|
|
83
|
+
loading?: boolean;
|
|
84
|
+
/** 빈 상태 설정 — 객체를 넘겨야 EmptyState가 활성화됨 (레거시 ExtendPivotGrid와 동일한 opt-in) */
|
|
85
|
+
emptyState?: {
|
|
86
|
+
/** 커스텀 빈 상태 (customState 슬롯 사용) */
|
|
87
|
+
isCustomState?: boolean;
|
|
88
|
+
headerMsg?: string;
|
|
89
|
+
contentMsg?: string;
|
|
90
|
+
useImg?: boolean;
|
|
91
|
+
/** 빈 상태 이미지 강제 지정 (생략 시 totalRowCount/filteredRowCount로 자동 결정) */
|
|
92
|
+
selectImg?: 'Custom' | 'Result' | 'Data' | 'Search';
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
/** PivotOptionModal에서 사용하는 필드 항목 */
|
|
96
|
+
export interface PivotFieldItem {
|
|
97
|
+
/** 필드명 */
|
|
98
|
+
field: string;
|
|
99
|
+
/** 표시 헤더 */
|
|
100
|
+
header?: string;
|
|
101
|
+
/** 필드가 속한 영역 */
|
|
102
|
+
area: 'row' | 'column' | 'value' | 'filter';
|
|
103
|
+
/** 값 필드인 경우 집계 함수 */
|
|
104
|
+
aggregate?: string;
|
|
105
|
+
}
|
|
106
|
+
/** 사용 가능한 필드 (데이터 키에서 추출) */
|
|
107
|
+
export interface AvailableField {
|
|
108
|
+
/** 필드 키 */
|
|
109
|
+
field: string;
|
|
110
|
+
/** 표시 헤더 */
|
|
111
|
+
header: string;
|
|
112
|
+
/**
|
|
113
|
+
* 데이터 타입.
|
|
114
|
+
* `array` 는 PivotFieldPanel 의 `aggregatesFor` 분기에서 array 전용 집계 옵션
|
|
115
|
+
* (count/countAll/first/last) 만 노출하는 데 사용.
|
|
116
|
+
*/
|
|
117
|
+
dataType: 'string' | 'number' | 'date' | 'boolean' | 'array';
|
|
118
|
+
}
|
|
119
|
+
/** PivotFieldPanel에서 관리하는 필드 설정 상태 */
|
|
120
|
+
export interface PivotFieldPanelConfig {
|
|
121
|
+
rowFields: PivotRowField[];
|
|
122
|
+
columnFields: PivotColumnField[];
|
|
123
|
+
valueFields: PivotValueField[];
|
|
124
|
+
filterFields: PivotFilterField[];
|
|
125
|
+
}
|
|
126
|
+
/** PivotOptionModal 그리드 설정 payload */
|
|
127
|
+
export interface PivotGridSettings {
|
|
128
|
+
showRowSubTotals: boolean;
|
|
129
|
+
showRowGrandTotals: boolean;
|
|
130
|
+
showColumnSubTotals: boolean;
|
|
131
|
+
showColumnGrandTotals: boolean;
|
|
132
|
+
rowSubTotalFields?: string[];
|
|
133
|
+
columnSubTotalFields?: string[];
|
|
134
|
+
totalsBeforeData: boolean;
|
|
135
|
+
showZeros: boolean;
|
|
136
|
+
/** 행 그룹 접기/펼치기 허용 여부 (default true) */
|
|
137
|
+
rowCollapsible: boolean;
|
|
138
|
+
/** 열 그룹 접기/펼치기 허용 여부 (default true) */
|
|
139
|
+
columnCollapsible: boolean;
|
|
140
|
+
}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import { FieldDef, PureSheetEventType, PivotRowField, PivotColumnField, PivotValueField, FormatRowCallback, PartialTranslationMap, GroupConfig, ColumnGroupDef, RowHeaderConfig, FieldRowTemplate, LoaderConfig, RowSelectionConfig, CellSelectionConfig, UndoStack } from '../../../../moz-ui-grid-core/src/index.ts';
|
|
2
|
+
import { IContextMenuConfig } from './toolbar';
|
|
3
|
+
/**
|
|
4
|
+
* MozGridVueCore Props
|
|
5
|
+
* PureSheet 엔진과의 bridge 역할에 필요한 핵심 Props.
|
|
6
|
+
*/
|
|
7
|
+
export interface MozGridVueCoreProps {
|
|
8
|
+
/** 컬럼 정의 (flat 모드 필수) */
|
|
9
|
+
fields: FieldDef[];
|
|
10
|
+
/** 데이터 배열 */
|
|
11
|
+
data?: Record<string, unknown>[];
|
|
12
|
+
/** 그리드 모드 (기본: 'flat') */
|
|
13
|
+
mode?: 'flat' | 'pivot';
|
|
14
|
+
/** 피벗 행 필드 (pivot 모드 전용) */
|
|
15
|
+
pivotRowFields?: PivotRowField[];
|
|
16
|
+
/** 피벗 열 필드 (pivot 모드 전용) */
|
|
17
|
+
pivotColumnFields?: PivotColumnField[];
|
|
18
|
+
/** 피벗 값 필드 (pivot 모드 전용) */
|
|
19
|
+
pivotValueFields?: PivotValueField[];
|
|
20
|
+
/** 그리드 높이 (CSS 값) */
|
|
21
|
+
height?: string | number;
|
|
22
|
+
/** 키 필드 (기본: ['id']) */
|
|
23
|
+
keyFields?: string[];
|
|
24
|
+
/** 테마 (기본: 'light') */
|
|
25
|
+
theme?: 'light' | 'dark' | 'auto';
|
|
26
|
+
/** 행 높이 (px) */
|
|
27
|
+
rowHeight?: number;
|
|
28
|
+
/** 헤더 높이 (px) */
|
|
29
|
+
headerHeight?: number;
|
|
30
|
+
/** 헤더 표시 여부 (기본: true) */
|
|
31
|
+
showHeader?: boolean;
|
|
32
|
+
/** 컬럼 리사이즈 (기본: true) */
|
|
33
|
+
resizableColumns?: boolean;
|
|
34
|
+
/** 컬럼 재정렬 (기본: true) */
|
|
35
|
+
reorderableColumns?: boolean;
|
|
36
|
+
/** @deprecated `rowHeader`를 사용하세요 (core가 warn 후 자동 매핑) */
|
|
37
|
+
showRowHeader?: boolean | {
|
|
38
|
+
width?: number;
|
|
39
|
+
};
|
|
40
|
+
/** 행 헤더 (구 showRowHeader) — 객체형으로 width/cellRenderer/headerRenderer 지정 */
|
|
41
|
+
rowHeader?: boolean | RowHeaderConfig;
|
|
42
|
+
/**
|
|
43
|
+
* 행 선택 설정 — `cellSelection`과 독립.
|
|
44
|
+
* 둘 다 미지정 시 코어 기본값은 `cellSelection: { mode: 'range' }` (셀 전용 Excel 스타일).
|
|
45
|
+
* @example { mode: 'multi' } // 행 헤더 트리거 자동 (셀 선택과 공존)
|
|
46
|
+
* @example { mode: 'multi', trigger: 'checkbox' } // 체크박스 컬럼 트리거
|
|
47
|
+
*/
|
|
48
|
+
rowSelection?: RowSelectionConfig;
|
|
49
|
+
/**
|
|
50
|
+
* 셀 선택 설정 — `rowSelection`과 독립.
|
|
51
|
+
* @example { mode: 'range' }
|
|
52
|
+
*/
|
|
53
|
+
cellSelection?: CellSelectionConfig;
|
|
54
|
+
/**
|
|
55
|
+
* 셀 선택이 행 선택을 함의하는지 (Policy B fallback). 기본 false.
|
|
56
|
+
* @default false
|
|
57
|
+
*/
|
|
58
|
+
cellSelectionImpliesRows?: boolean;
|
|
59
|
+
/** 편집 가능 (기본: false) */
|
|
60
|
+
editable?: boolean;
|
|
61
|
+
/** 툴팁 모드 (기본: 'none') */
|
|
62
|
+
tooltipMode?: 'none' | 'overflow' | 'always';
|
|
63
|
+
/** 줄무늬 행 (기본: false) */
|
|
64
|
+
alternatingRows?: boolean;
|
|
65
|
+
/** 컬럼 자동 맞춤 */
|
|
66
|
+
autoFitColumns?: boolean;
|
|
67
|
+
/** 동적 행 높이 (기본: false) */
|
|
68
|
+
dynamicRowHeights?: boolean;
|
|
69
|
+
/** 행 드래그 재정렬 (기본: false) */
|
|
70
|
+
reorderableRows?: boolean;
|
|
71
|
+
/** i18n 로케일 */
|
|
72
|
+
locale?: string;
|
|
73
|
+
/** 데이터 처리 엔진 (기본: 'native') */
|
|
74
|
+
engine?: 'aq' | 'native';
|
|
75
|
+
/** Web Worker 사용 여부 */
|
|
76
|
+
useWorker?: boolean;
|
|
77
|
+
/** Worker 데이터 로더 설정 (useWorker: true 시 사용) */
|
|
78
|
+
loader?: LoaderConfig;
|
|
79
|
+
/** 키 컬럼 편집 방지 (기본: false) */
|
|
80
|
+
preventKeyEdit?: boolean;
|
|
81
|
+
/** 상태 바 표시 여부 */
|
|
82
|
+
showStatusBar?: boolean;
|
|
83
|
+
/** 드래그 핸들 컬럼 표시 여부 */
|
|
84
|
+
showDragHandleColumn?: boolean;
|
|
85
|
+
/** 외부 Undo 스택 주입 */
|
|
86
|
+
undoStack?: InstanceType<typeof UndoStack>;
|
|
87
|
+
/** 행 포맷팅 콜백 */
|
|
88
|
+
formatRow?: FormatRowCallback;
|
|
89
|
+
/** 번역 오버라이드 */
|
|
90
|
+
translations?: PartialTranslationMap;
|
|
91
|
+
/** 행 CSS 스타일 */
|
|
92
|
+
rowStyle?: string;
|
|
93
|
+
/** 헤더 CSS 스타일 */
|
|
94
|
+
headerStyle?: string;
|
|
95
|
+
/** 행 높이 변경 감지 임계값 */
|
|
96
|
+
rowHeightChangeThreshold?: number;
|
|
97
|
+
/** 그룹화 설정 (flat 모드 전용) */
|
|
98
|
+
group?: GroupConfig;
|
|
99
|
+
/** 컬럼 그룹 — 다단계 헤더 (flat 모드 전용, 구 headerGroups) */
|
|
100
|
+
columnGroups?: ColumnGroupDef[];
|
|
101
|
+
/** Multi-Row 레이아웃 (flat 모드 전용) */
|
|
102
|
+
rowTemplate?: FieldRowTemplate;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* MozGridVue 컴포넌트 Props
|
|
106
|
+
* Core Props + UI 옵션 (툴박스, 푸터, 컨텍스트 메뉴 등).
|
|
107
|
+
*/
|
|
108
|
+
export interface MozGridVueProps extends MozGridVueCoreProps {
|
|
109
|
+
/** 레이아웃 식별자 (프리셋 저장/복원용, useUserLayoutModule 연동) */
|
|
110
|
+
name?: string;
|
|
111
|
+
/** 툴박스 표시 (기본: true) */
|
|
112
|
+
useToolBox?: boolean;
|
|
113
|
+
/** 툴박스 설정(톱니바퀴) 버튼 표시 (기본: true) */
|
|
114
|
+
useToolBoxSetting?: boolean;
|
|
115
|
+
/** 푸터 표시 (기본: true) */
|
|
116
|
+
useExtendFooter?: boolean;
|
|
117
|
+
/** 집계 푸터 표시 (기본: false) */
|
|
118
|
+
useSummaryFooter?: boolean;
|
|
119
|
+
/** 정렬 버튼 표시 (기본: true) */
|
|
120
|
+
useSort?: boolean;
|
|
121
|
+
/** 조건부 스타일 버튼 표시 (기본: true) */
|
|
122
|
+
useCustomCell?: boolean;
|
|
123
|
+
/** 컨텍스트 메뉴 설정 */
|
|
124
|
+
contextMenuConfig?: IContextMenuConfig;
|
|
125
|
+
/** 컨텍스트 메뉴 사용 (기본: true) */
|
|
126
|
+
useContextMenu?: boolean;
|
|
127
|
+
/** 로딩 상태 표시 (기본: false) */
|
|
128
|
+
loading?: boolean;
|
|
129
|
+
/** 빈 상태 설정 — 객체를 넘겨야 EmptyState가 활성화됨 (레거시 ExtendFlexGrid와 동일한 opt-in) */
|
|
130
|
+
emptyState?: {
|
|
131
|
+
/** 커스텀 빈 상태 (customState 슬롯 사용) */
|
|
132
|
+
isCustomState?: boolean;
|
|
133
|
+
headerMsg?: string;
|
|
134
|
+
contentMsg?: string;
|
|
135
|
+
useImg?: boolean;
|
|
136
|
+
/** 빈 상태 이미지 강제 지정 (생략 시 totalRowCount/filteredRowCount로 자동 결정) */
|
|
137
|
+
selectImg?: 'Custom' | 'Result' | 'Data' | 'Search';
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
/** MozGridVue 컴포넌트 Emits */
|
|
141
|
+
export interface MozGridVueEmits {
|
|
142
|
+
(e: 'ready', grid: unknown): void;
|
|
143
|
+
(e: 'data:loaded'): void;
|
|
144
|
+
(e: 'row:click', payload: unknown): void;
|
|
145
|
+
(e: 'row:dblclick', payload: unknown): void;
|
|
146
|
+
(e: 'row:pinned', payload: unknown): void;
|
|
147
|
+
(e: 'row:unpinned', payload: unknown): void;
|
|
148
|
+
(e: 'row:reordered', payload: unknown): void;
|
|
149
|
+
(e: 'cell:click', payload: unknown): void;
|
|
150
|
+
(e: 'cell:dblclick', payload: unknown): void;
|
|
151
|
+
(e: 'cell:change', payload: unknown): void;
|
|
152
|
+
(e: 'cell:beforeEdit', payload: unknown): void;
|
|
153
|
+
(e: 'cell:editCommitting', payload: unknown): void;
|
|
154
|
+
(e: 'cell:editCommitted', payload: unknown): void;
|
|
155
|
+
(e: 'cell:tooltip', payload: unknown): void;
|
|
156
|
+
(e: 'selection:changed', payload: unknown): void;
|
|
157
|
+
(e: 'column:resize', payload: unknown): void;
|
|
158
|
+
(e: 'column:reorder', payload: unknown): void;
|
|
159
|
+
(e: 'column:pin', payload: unknown): void;
|
|
160
|
+
(e: 'column:visibility', payload: unknown): void;
|
|
161
|
+
(e: 'sort:changed', payload: unknown): void;
|
|
162
|
+
(e: 'filter:changed', payload: unknown): void;
|
|
163
|
+
(e: 'scroll', payload: unknown): void;
|
|
164
|
+
(e: 'undo:stateChange', payload: unknown): void;
|
|
165
|
+
(e: 'clipboard:copy', payload: unknown): void;
|
|
166
|
+
(e: 'clipboard:paste', payload: unknown): void;
|
|
167
|
+
(e: 'validation:changed', payload: unknown): void;
|
|
168
|
+
(e: 'columnGroup:toggle', payload: unknown): void;
|
|
169
|
+
(e: 'contextmenu', payload: unknown): void;
|
|
170
|
+
}
|
|
171
|
+
/** Props → PureSheetConfig 변환에 사용하는 키 목록 */
|
|
172
|
+
export declare const CONFIG_PROP_KEYS: readonly ["keyFields", "theme", "rowHeight", "headerHeight", "showHeader", "resizableColumns", "reorderableColumns", "showRowHeader", "rowHeader", "rowSelection", "cellSelection", "cellSelectionImpliesRows", "editable", "tooltipMode", "alternatingRows", "autoFitColumns", "dynamicRowHeights", "reorderableRows", "locale", "engine", "useWorker", "loader", "preventKeyEdit", "showStatusBar", "showDragHandleColumn", "undoStack", "formatRow", "translations", "rowStyle", "headerStyle", "rowHeightChangeThreshold"];
|
|
173
|
+
/** flat 모드 전용 Props 키 목록 (pivot 모드에서는 제외) */
|
|
174
|
+
export declare const FLAT_ONLY_PROP_KEYS: readonly ["group", "columnGroups", "rowTemplate"];
|
|
175
|
+
/** emit으로 브릿지할 PureSheet 이벤트 목록 */
|
|
176
|
+
export declare const BRIDGED_EVENTS: PureSheetEventType[];
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Grid UI 타입 정의
|
|
3
|
+
*
|
|
4
|
+
* moz-wijmo-grid의 types.d.ts에서 포팅.
|
|
5
|
+
* ComparisonOperator, LogicalOperator, IFilterDef, ISortDef, ICustomCellRuleSet 등
|
|
6
|
+
* Wijmo 비의존 타입은 그대로 재사용합니다.
|
|
7
|
+
*/
|
|
8
|
+
/** 비교 연산자 */
|
|
9
|
+
export type ComparisonOperator = '=' | '≠' | '%' | '!%' | '>' | '≥' | '<' | '≤' | '∅' | '●';
|
|
10
|
+
/** 논리 연산자 */
|
|
11
|
+
export type LogicalOperator = 'OR' | 'AND';
|
|
12
|
+
/** 필터 조건 정의 */
|
|
13
|
+
export interface IFilterDef {
|
|
14
|
+
/** 순서 */
|
|
15
|
+
sequence: number;
|
|
16
|
+
/** 컬럼 헤더 (표시용) */
|
|
17
|
+
header: string;
|
|
18
|
+
/** 컬럼 바인딩 키 (fieldId) */
|
|
19
|
+
binding: string;
|
|
20
|
+
/** 비교 연산자 */
|
|
21
|
+
comparison: ComparisonOperator;
|
|
22
|
+
/** 논리 연산자 (이전 조건과의 관계) */
|
|
23
|
+
logical?: LogicalOperator;
|
|
24
|
+
/** 데이터 타입 */
|
|
25
|
+
type?: 'string' | 'number' | 'boolean' | 'date';
|
|
26
|
+
/** 비교 값 */
|
|
27
|
+
variable: unknown;
|
|
28
|
+
/** between 연산자의 두 번째 값 */
|
|
29
|
+
variable2?: unknown;
|
|
30
|
+
}
|
|
31
|
+
/** 정렬 정의 */
|
|
32
|
+
export interface ISortDef {
|
|
33
|
+
/** 순서 */
|
|
34
|
+
sequence: number;
|
|
35
|
+
/** 컬럼 헤더 (표시용) */
|
|
36
|
+
header: string;
|
|
37
|
+
/** 컬럼 바인딩 키 (fieldId) */
|
|
38
|
+
binding: string;
|
|
39
|
+
/** 오름차순 여부 */
|
|
40
|
+
ascending: boolean;
|
|
41
|
+
/** 피벗 값 기반 정렬 (GrandTotal 기준 값 필드 ID) */
|
|
42
|
+
byValue?: string;
|
|
43
|
+
}
|
|
44
|
+
/** 조건부 스타일 규칙 */
|
|
45
|
+
export interface ICustomCellDef {
|
|
46
|
+
/** 순서 */
|
|
47
|
+
sequence: number;
|
|
48
|
+
/** 컬럼 헤더 */
|
|
49
|
+
header: string;
|
|
50
|
+
/** 컬럼 바인딩 키 */
|
|
51
|
+
binding: string;
|
|
52
|
+
/** 비교 연산자 */
|
|
53
|
+
comparison: ComparisonOperator;
|
|
54
|
+
/** 논리 연산자 */
|
|
55
|
+
logical?: LogicalOperator;
|
|
56
|
+
/** 데이터 타입 (Wijmo DataType 숫자 또는 문자열) */
|
|
57
|
+
type?: number | string;
|
|
58
|
+
/** 비교 값 */
|
|
59
|
+
variable: any;
|
|
60
|
+
}
|
|
61
|
+
/** 조건부 스타일 규칙셋 */
|
|
62
|
+
export interface ICustomCellRuleSet {
|
|
63
|
+
/** 고유 ID */
|
|
64
|
+
id: string;
|
|
65
|
+
/** 규칙셋 이름 */
|
|
66
|
+
name?: string;
|
|
67
|
+
/** 우선순위 (낮을수록 먼저 적용, 높은 값이 덮어씀) */
|
|
68
|
+
priority: number;
|
|
69
|
+
/** 조건 모드: 'ui' (드롭다운 빌더) 또는 'formula' (수식 입력) */
|
|
70
|
+
mode?: 'ui' | 'formula';
|
|
71
|
+
/** 조건 규칙 목록 (UI 모드) */
|
|
72
|
+
rules: ICustomCellDef[];
|
|
73
|
+
/** 수식 문자열 (수식 모드) */
|
|
74
|
+
formula?: string;
|
|
75
|
+
/** 수식 검증 에러 메시지 */
|
|
76
|
+
formulaError?: string;
|
|
77
|
+
/** 배경색 */
|
|
78
|
+
backgroundColor: string;
|
|
79
|
+
/** 글꼴색 */
|
|
80
|
+
textColor: string;
|
|
81
|
+
/** 대상 컬럼 (비어있으면 전체 행) */
|
|
82
|
+
targetColumns?: string[];
|
|
83
|
+
/** 활성 여부 (기본: true) */
|
|
84
|
+
enabled?: boolean;
|
|
85
|
+
}
|
|
86
|
+
/** 조건부 스타일 전체 설정 */
|
|
87
|
+
export interface ICustomCellConfig {
|
|
88
|
+
ruleSets: ICustomCellRuleSet[];
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* 사용자가 컬럼 옵션 패널에서 적용하는 시각 서식 단위 (정적 객체).
|
|
92
|
+
*
|
|
93
|
+
* 구조화된 shape — 각 키가 의미를 가짐. UI 컴포넌트와 1:1 바인딩.
|
|
94
|
+
* 미지정 키는 적용 안 됨 (기존 셀 스타일 그대로).
|
|
95
|
+
*/
|
|
96
|
+
export interface IColumnCellFormat {
|
|
97
|
+
/** CSS 색상 값 (`#FFE066`, `rgb(...)` 등) */
|
|
98
|
+
backgroundColor?: string;
|
|
99
|
+
color?: string;
|
|
100
|
+
fontWeight?: 'normal' | 'bold';
|
|
101
|
+
fontStyle?: 'normal' | 'italic';
|
|
102
|
+
textDecoration?: 'none' | 'underline';
|
|
103
|
+
/** CSS 폰트 크기 (예: '12px') */
|
|
104
|
+
fontSize?: string;
|
|
105
|
+
/** 추가 클래스 토큰 (사용자 정의 확장용) */
|
|
106
|
+
classes?: string[];
|
|
107
|
+
}
|
|
108
|
+
export interface IColumnHeaderFormat extends IColumnCellFormat {
|
|
109
|
+
/**
|
|
110
|
+
* 헤더 텍스트 정렬. 셀 정렬(`align`) 은 코어가 처리하지만 헤더는 wrapper layer 가
|
|
111
|
+
* inline style 로 적용 (헤더 셀이 flex container 라 `justifyContent` 도 동시 적용).
|
|
112
|
+
*/
|
|
113
|
+
textAlign?: 'left' | 'center' | 'right';
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* 컬럼 옵션 패널이 관리하는 사용자 정의 시각 서식 전체 설정.
|
|
117
|
+
*
|
|
118
|
+
* - `cell[colId]` / `header[colId]` 키별로 부분 서식
|
|
119
|
+
* - 직렬화 가능 (함수 X)
|
|
120
|
+
* - `useColumnFormatter().config` 의 ref 타입
|
|
121
|
+
*/
|
|
122
|
+
export interface IColumnFormatConfig {
|
|
123
|
+
/** columnId → 사용자 셀 서식 */
|
|
124
|
+
cell: Record<string, IColumnCellFormat>;
|
|
125
|
+
/** columnId → 사용자 헤더 서식 */
|
|
126
|
+
header: Record<string, IColumnHeaderFormat>;
|
|
127
|
+
}
|
|
128
|
+
/** 컨텍스트 메뉴 항목 */
|
|
129
|
+
export interface IContextMenuItem {
|
|
130
|
+
/** 메뉴 ID */
|
|
131
|
+
id: string;
|
|
132
|
+
/** 표시 텍스트 */
|
|
133
|
+
label: string;
|
|
134
|
+
/** 아이콘 */
|
|
135
|
+
icon?: string;
|
|
136
|
+
/** 비활성화 */
|
|
137
|
+
disabled?: boolean;
|
|
138
|
+
/** 구분선 */
|
|
139
|
+
separator?: boolean;
|
|
140
|
+
/** 하위 메뉴 */
|
|
141
|
+
children?: IContextMenuItem[];
|
|
142
|
+
/** 클릭 핸들러 */
|
|
143
|
+
handler?: () => void;
|
|
144
|
+
/**
|
|
145
|
+
* 메뉴 표시 순서 (낮을수록 위에 표시)
|
|
146
|
+
*
|
|
147
|
+
* 내장 메뉴와 커스텀 메뉴를 합친 후 이 값으로 정렬합니다.
|
|
148
|
+
* 미지정 시 기본값 50. 내장 메뉴: 필터/정렬=10, 복사=20, 고정=30, 내보내기=40
|
|
149
|
+
*/
|
|
150
|
+
order?: number;
|
|
151
|
+
}
|
|
152
|
+
/** 컨텍스트 메뉴 설정 */
|
|
153
|
+
export interface IContextMenuConfig {
|
|
154
|
+
/** 컬럼 선택 UI 표시 여부 (설정 모달 내) */
|
|
155
|
+
useViewSelectColumn?: boolean;
|
|
156
|
+
/** 고정 컬럼 메뉴 */
|
|
157
|
+
useFixedColumn?: boolean;
|
|
158
|
+
/** 그룹 메뉴 */
|
|
159
|
+
useGroupColumn?: boolean;
|
|
160
|
+
/** 컨텍스트 메뉴 활성화 */
|
|
161
|
+
useContextMenu?: boolean;
|
|
162
|
+
/** 정렬 메뉴 */
|
|
163
|
+
useSort?: boolean;
|
|
164
|
+
/** 필터 메뉴 */
|
|
165
|
+
useFilter?: boolean;
|
|
166
|
+
/** 조건부 스타일 메뉴 */
|
|
167
|
+
useCustomCell?: boolean;
|
|
168
|
+
/** 일괄 편집 메뉴 */
|
|
169
|
+
useBulkEditColumn?: boolean;
|
|
170
|
+
/** 데이터 복사 메뉴 */
|
|
171
|
+
useDataCopy?: boolean;
|
|
172
|
+
/** 헤더 포함 복사 메뉴 */
|
|
173
|
+
useDataWithHeaderCopy?: boolean;
|
|
174
|
+
/** 컬럼 자동 맞춤 메뉴 */
|
|
175
|
+
useAutoSizeColumns?: boolean;
|
|
176
|
+
/** CSV 내보내기 메뉴 */
|
|
177
|
+
useExportCsv?: boolean;
|
|
178
|
+
/** 행 고정(Pin) 메뉴 */
|
|
179
|
+
useRowPinning?: boolean;
|
|
180
|
+
/** 엑셀 가져오기/내보내기 메뉴 표시 (onImportExcel/onImportExcelAppend 콜백 필요) */
|
|
181
|
+
useExportImport?: boolean;
|
|
182
|
+
/** 엑셀 내보내기 메뉴 표시 (XLSX/CSV) */
|
|
183
|
+
useExportExcel?: boolean;
|
|
184
|
+
/** 엑셀 가져오기 — 덮어쓰기 모드 콜백 */
|
|
185
|
+
onImportExcel?: (ctx: IContextMenuExcelEventArgs) => void;
|
|
186
|
+
/** 엑셀 가져오기 — 추가 모드 콜백 */
|
|
187
|
+
onImportExcelAppend?: (ctx: IContextMenuExcelEventArgs) => void;
|
|
188
|
+
/** 엑셀 내보내기 — 서버 측 처리 콜백 (없으면 메뉴 비활성) */
|
|
189
|
+
onExportOriginalData?: (format: 'excel' | 'csv') => void;
|
|
190
|
+
/** 클라이언트 사이드 엑셀 가져오기 메뉴 활성화 (core grid.io.fromExcel 사용) */
|
|
191
|
+
useClientExcelImport?: boolean;
|
|
192
|
+
/** 클라이언트 사이드 엑셀 내보내기 메뉴 활성화 (core grid.io.toExcel 사용) */
|
|
193
|
+
useClientExcelExport?: boolean;
|
|
194
|
+
/** 원본(집계 전) 데이터 XLSX 내보내기 — core saveExcelToFile({exportSource:true}). 피벗/그룹/머지 무시. */
|
|
195
|
+
useExportOriginal?: boolean;
|
|
196
|
+
/** 클라이언트 import 기본 옵션 (mode/conflictStrategy/autoCommit 등) */
|
|
197
|
+
clientImportOptions?: Record<string, unknown>;
|
|
198
|
+
/** 클라이언트 export 기본 옵션 (scope/includeHeaders 등) */
|
|
199
|
+
clientExportOptions?: Record<string, unknown>;
|
|
200
|
+
/** 클라이언트 export 파일명 prefix (기본: 'export') */
|
|
201
|
+
exportFileName?: string;
|
|
202
|
+
/** 클라이언트 import 완료 후 콜백 */
|
|
203
|
+
onClientImportComplete?: (result: unknown) => void;
|
|
204
|
+
/** 클라이언트 export 완료 후 콜백 */
|
|
205
|
+
onClientExportComplete?: (blob: Blob) => void;
|
|
206
|
+
/** 커스텀 메뉴 항목 */
|
|
207
|
+
customMenu?: IContextMenuItem[];
|
|
208
|
+
}
|
|
209
|
+
/** 엑셀 가져오기 콜백에 전달되는 컨텍스트 */
|
|
210
|
+
export interface IContextMenuExcelEventArgs {
|
|
211
|
+
/** PureSheet 인스턴스 */
|
|
212
|
+
grid: unknown;
|
|
213
|
+
/** 우클릭한 컬럼의 FieldDef (있을 경우) */
|
|
214
|
+
field?: unknown;
|
|
215
|
+
}
|
|
216
|
+
/** 집계 타입 */
|
|
217
|
+
export type AggregateType = 'SUM' | 'AVERAGE' | 'COUNT' | 'MIN' | 'MAX';
|
|
218
|
+
/** 푸터 집계 값 */
|
|
219
|
+
export interface IAggregateValues {
|
|
220
|
+
SUM?: number;
|
|
221
|
+
AVERAGE?: number;
|
|
222
|
+
COUNT?: number;
|
|
223
|
+
MIN?: number;
|
|
224
|
+
MAX?: number;
|
|
225
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 간단한 Base64 헬퍼.
|
|
3
|
+
* - moz-wijmo-grid에는 XOR/AES 암호화 유틸이 있지만, 엑셀 모듈에서는
|
|
4
|
+
* `encodeUnescapeBtoa`만 사용하므로 crypto-js 의존성을 제거하고 최소화합니다.
|
|
5
|
+
*/
|
|
6
|
+
export declare const encodeUnescapeBtoa: (text?: string) => string;
|
|
7
|
+
export declare const decodeEscapeAtob: (text?: string) => string;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
type DialogIcon = 'error' | 'warning' | 'success' | 'info';
|
|
2
|
+
type DialogAction = 'confirm' | 'save' | 'check' | 'close' | 'no-footer';
|
|
3
|
+
export declare const showConfirm: (options: {
|
|
4
|
+
title?: string;
|
|
5
|
+
message: string;
|
|
6
|
+
type?: DialogIcon;
|
|
7
|
+
}) => Promise<boolean>;
|
|
8
|
+
export declare function showDialog(options: {
|
|
9
|
+
title?: string;
|
|
10
|
+
message: string;
|
|
11
|
+
preset?: DialogAction;
|
|
12
|
+
type?: DialogIcon;
|
|
13
|
+
actions?: {
|
|
14
|
+
positive?: string;
|
|
15
|
+
negative?: string;
|
|
16
|
+
};
|
|
17
|
+
}): Promise<boolean>;
|
|
18
|
+
export declare const showMessage: (message: any, result: boolean | DialogIcon, options?: Record<string, any>) => void;
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ExcelGuard
|
|
3
|
+
*
|
|
4
|
+
* - 목적: 프런트엔드에서 유저당 동시 엑셀 업로드/다운로드를 1건으로 제한하기 위한 임시 가드
|
|
5
|
+
* - 동작: 단일 탭 인메모리 락으로만 제어 (크로스 탭/새로고침 복원 없음)
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* 유저 식별 가능한 락 키 생성
|
|
9
|
+
* @param tenantId 테넌트 ID
|
|
10
|
+
* @param userId 사용자 ID
|
|
11
|
+
* @returns `${LOCK_PREFIX}:${tenantId}:${userId}` 형식의 키
|
|
12
|
+
*/
|
|
13
|
+
export declare const getUserLockKey: (tenantId?: string, userId?: string) => string;
|
|
14
|
+
/**
|
|
15
|
+
* 현재 락 여부 확인
|
|
16
|
+
* - localStorage에 키가 있고, 만료되지 않았으면 true
|
|
17
|
+
* - 만료되었으면 정리 후 false
|
|
18
|
+
*/
|
|
19
|
+
export declare const isLocked: (key: string) => boolean;
|
|
20
|
+
/**
|
|
21
|
+
* 락 설정 + 브로드캐스트 전파
|
|
22
|
+
* @param key getUserLockKey로 생성한 키
|
|
23
|
+
* @param sessionId 다운로드 세션 ID (진행 중인 다운로드 식별용)
|
|
24
|
+
* @param ttlMs 만료 시간(ms). 기본 5분: 서버 비정상 종료 등 대비
|
|
25
|
+
*/
|
|
26
|
+
export declare const lock: (key: string, sessionId: string, ttlMs?: number) => void;
|
|
27
|
+
/**
|
|
28
|
+
* 락 해제 + 브로드캐스트 전파
|
|
29
|
+
* @param key getUserLockKey로 생성한 키
|
|
30
|
+
*/
|
|
31
|
+
export declare const unlock: (key: string) => void;
|
|
32
|
+
/**
|
|
33
|
+
* 크로스 탭 동기화 초기화
|
|
34
|
+
* - excel_lock / excel_unlock 이벤트 수신 시 localStorage를 동기화
|
|
35
|
+
* - 한 번만 초기화되도록 가드
|
|
36
|
+
*/
|
|
37
|
+
/**
|
|
38
|
+
* 초기화 훅 (단일 탭 모드에서는 실질 동작 없음)
|
|
39
|
+
*/
|
|
40
|
+
export declare const initExcelGuard: () => void;
|
|
41
|
+
/**
|
|
42
|
+
* 세션 목록 로컬 스토리지 키 생성
|
|
43
|
+
* @deprecated 크로스 탭/새로고침 동기화를 더 이상 지원하지 않습니다.
|
|
44
|
+
*/
|
|
45
|
+
export declare const getSessionsKey: (tenantId?: string, userId?: string) => string;
|
|
46
|
+
/**
|
|
47
|
+
* 저장된 모든 세션 조회 (sessionId -> fileName)
|
|
48
|
+
* @deprecated 크로스 탭/새로고침 동기화를 더 이상 지원하지 않습니다.
|
|
49
|
+
*/
|
|
50
|
+
export declare const getAllSessions: (tenantId?: string, userId?: string) => Record<string, string>;
|
|
51
|
+
/**
|
|
52
|
+
* 세션 저장 또는 업데이트
|
|
53
|
+
* @deprecated 단일 탭 모드에서는 세션이 로컬스토리지에 저장되지 않습니다.
|
|
54
|
+
*/
|
|
55
|
+
export declare const setSession: (_tenantId: string, _userId: string, _sessionId: string, _fileName: string, _operationType?: "upload" | "download") => void;
|
|
56
|
+
/**
|
|
57
|
+
* 세션 파일명 업데이트
|
|
58
|
+
* @deprecated 단일 탭 모드에서는 세션이 로컬스토리지에 저장되지 않습니다.
|
|
59
|
+
*/
|
|
60
|
+
export declare const updateSessionFileName: (_tenantId: string, _userId: string, _sessionId: string, _fileName: string) => void;
|
|
61
|
+
/**
|
|
62
|
+
* 세션 제거
|
|
63
|
+
* @deprecated 단일 탭 모드에서는 세션이 로컬스토리지에 저장되지 않습니다.
|
|
64
|
+
*/
|
|
65
|
+
export declare const removeSession: (_tenantId: string, _userId: string, _sessionId: string) => void;
|
|
66
|
+
declare const _default: {
|
|
67
|
+
getUserLockKey: (tenantId?: string, userId?: string) => string;
|
|
68
|
+
isLocked: (key: string) => boolean;
|
|
69
|
+
lock: (key: string, sessionId: string, ttlMs?: number) => void;
|
|
70
|
+
unlock: (key: string) => void;
|
|
71
|
+
initExcelGuard: () => void;
|
|
72
|
+
};
|
|
73
|
+
export default _default;
|