@sl-material/sl-table-sheet 1.1.0-beta0 → 1.1.0-beta1

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.
Files changed (43) hide show
  1. package/README.md +550 -0
  2. package/{core → dist/core}/Dialog.d.ts +0 -4
  3. package/{core → dist/core}/excel/parsers/HeaderDetector.d.ts +9 -0
  4. package/dist/core/styles/dialog.d.ts +5 -0
  5. package/dist/core/styles/toolbar.d.ts +5 -0
  6. package/{index.d.ts → dist/index.d.ts} +2 -0
  7. package/dist/package.json +42 -0
  8. package/{sl-table-sheet.cjs.js → dist/sl-table-sheet.cjs.js} +150 -152
  9. package/{sl-table-sheet.es.js → dist/sl-table-sheet.es.js} +3712 -3676
  10. package/{sl-table-sheet.umd.umd.js → dist/sl-table-sheet.umd.umd.js} +150 -152
  11. package/package.json +41 -18
  12. package/core/Dialog-column.d.ts +0 -117
  13. package/core/ExcelUtils.d.ts +0 -6
  14. package/core/styles/dialog.d.ts +0 -5
  15. package/core/styles/toolbar.d.ts +0 -5
  16. /package/{config → dist/config}/config.d.ts +0 -0
  17. /package/{core → dist/core}/SheetTabs.d.ts +0 -0
  18. /package/{core → dist/core}/SlTableSheet.d.ts +0 -0
  19. /package/{core → dist/core}/TableSheet.d.ts +0 -0
  20. /package/{core → dist/core}/Toolbar.d.ts +0 -0
  21. /package/{core/comnon.d.ts → dist/core/common.d.ts} +0 -0
  22. /package/{core → dist/core}/excel/ExcelExporter.d.ts +0 -0
  23. /package/{core → dist/core}/excel/ExcelParser.d.ts +0 -0
  24. /package/{core → dist/core}/excel/index.d.ts +0 -0
  25. /package/{core → dist/core}/excel/parsers/CommentExtractor.d.ts +0 -0
  26. /package/{core → dist/core}/excel/parsers/StyleExtractor.d.ts +0 -0
  27. /package/{core → dist/core}/excel/types.d.ts +0 -0
  28. /package/{core → dist/core}/excel/utils/ColorConverter.d.ts +0 -0
  29. /package/{core → dist/core}/index.d.ts +0 -0
  30. /package/{core → dist/core}/managers/CellMarkManager.d.ts +0 -0
  31. /package/{core → dist/core}/managers/CustomComponentManager.d.ts +0 -0
  32. /package/{core → dist/core}/managers/EditorManager.d.ts +0 -0
  33. /package/{core → dist/core}/managers/EventManager.d.ts +0 -0
  34. /package/{core → dist/core}/processors/DataProcessor.d.ts +0 -0
  35. /package/{core → dist/core}/processors/StyleProcessor.d.ts +0 -0
  36. /package/{core → dist/core}/styles/index.d.ts +0 -0
  37. /package/{core → dist/core}/types.d.ts +0 -0
  38. /package/{core → dist/core}/utils/DomUtils.d.ts +0 -0
  39. /package/{core → dist/core}/utils/index.d.ts +0 -0
  40. /package/{data.d.ts → dist/data.d.ts} +0 -0
  41. /package/{index.umd.d.ts → dist/index.umd.d.ts} +0 -0
  42. /package/{locales → dist/locales}/index.d.ts +0 -0
  43. /package/{locales → dist/locales}/test-zh-TW.d.ts +0 -0
package/package.json CHANGED
@@ -1,29 +1,45 @@
1
1
  {
2
2
  "name": "@sl-material/sl-table-sheet",
3
- "version": "1.1.0-beta0",
3
+ "version": "1.1.0-beta1",
4
4
  "description": "VTable 组件库 - 支持 npm 和 UMD",
5
- "main": "./sl-table-sheet.cjs.js",
6
- "module": "./sl-table-sheet.es.js",
7
- "types": "./index.d.ts",
5
+ "main": "./dist/sl-table-sheet.cjs.js",
6
+ "module": "./dist/sl-table-sheet.es.js",
7
+ "types": "./dist/index.d.ts",
8
8
  "exports": {
9
9
  ".": {
10
- "import": "./sl-table-sheet.es.js",
11
- "require": "./sl-table-sheet.cjs.js",
12
- "types": "./index.d.ts"
13
- }
10
+ "import": "./src/index.ts",
11
+ "require": "./dist/sl-table-sheet.cjs.js",
12
+ "types": "./dist/index.d.ts"
13
+ },
14
+ "./style.css": "./dist/sl-table-sheet.css",
15
+ "./dist/style.css": "./dist/sl-table-sheet.css"
14
16
  },
15
- "keywords": [
16
- "spreadsheet",
17
- "typescript",
18
- "javascript"
17
+ "files": [
18
+ "dist"
19
19
  ],
20
- "author": "",
21
- "license": "MIT",
20
+ "scripts": {
21
+ "dev": "vite",
22
+ "build": "pnpm run build:lib && pnpm run build:umd",
23
+ "build:lib": "vite build --mode lib",
24
+ "build:umd": "vite build --mode umd",
25
+ "preview": "vite preview",
26
+ "type-check": "tsc --noEmit",
27
+ "publish": "npm run build && cd dist && npm publish"
28
+ },
29
+ "devDependencies": {
30
+ "typescript": "^5.3.0",
31
+ "vite": "^5.0.0",
32
+ "vite-plugin-css-injected-by-js": "^3.5.2",
33
+ "vite-plugin-dts": "^3.7.0"
34
+ },
35
+ "dependencies": {
36
+ "@sl-ui-pc/theme-chalk": "0.1.0-beta1",
37
+ "xlsx": "^0.18.5"
38
+ },
22
39
  "peerDependencies": {
23
40
  "@visactor/vtable": "^1.24.0",
24
41
  "@visactor/vtable-editors": "^1.24.0",
25
- "@visactor/vtable-sheet": "^1.24.0",
26
- "@visactor/vtable-gantt": "^1.24.0"
42
+ "@visactor/vtable-sheet": "^1.24.0"
27
43
  },
28
44
  "peerDependenciesMeta": {
29
45
  "@visactor/vtable": {
@@ -38,5 +54,12 @@
38
54
  "@visactor/vtable-gantt": {
39
55
  "optional": false
40
56
  }
41
- }
42
- }
57
+ },
58
+ "keywords": [
59
+ "spreadsheet",
60
+ "typescript",
61
+ "javascript"
62
+ ],
63
+ "author": "",
64
+ "license": "MIT"
65
+ }
@@ -1,117 +0,0 @@
1
- /**
2
- * 查找替换弹窗 - 纯 TypeScript/JavaScript 实现
3
- * 不依赖任何框架,可在任何项目中使用
4
- */
5
- export interface MatchPosition {
6
- row: number;
7
- col: number;
8
- value: string;
9
- }
10
- export interface FindReplaceOptions {
11
- container?: HTMLElement | string;
12
- tableInstance?: any;
13
- onSearch?: (matches: MatchPosition[]) => void;
14
- onReplace?: (match: MatchPosition, newValue: string) => void;
15
- selectedColumnsOnly?: boolean;
16
- }
17
- export declare class FindReplaceDialog {
18
- private dialog;
19
- private tableInstance;
20
- private elements;
21
- private state;
22
- private options;
23
- constructor(options?: FindReplaceOptions);
24
- /**
25
- * 初始化弹窗
26
- */
27
- private init;
28
- /**
29
- * 创建弹窗 DOM
30
- */
31
- private createDialog;
32
- /**
33
- * 绑定事件
34
- */
35
- private bindEvents;
36
- /**
37
- * 绑定拖拽事件
38
- */
39
- private bindDragEvents;
40
- /**
41
- * 注入样式
42
- */
43
- private injectStyles;
44
- /**
45
- * 解析容器
46
- */
47
- private resolveContainer;
48
- /**
49
- * 打开弹窗
50
- */
51
- open(): void;
52
- /**
53
- * 关闭弹窗
54
- */
55
- close(): void;
56
- /**
57
- * 重置状态
58
- */
59
- private resetState;
60
- /**
61
- * 清除结果显示
62
- */
63
- private clearResults;
64
- /**
65
- * 执行查找
66
- */
67
- private performSearch;
68
- /**
69
- * 高亮匹配项
70
- */
71
- private highlightMatch;
72
- /**
73
- * 查找下一个
74
- */
75
- findNext(): void;
76
- /**
77
- * 查找上一个
78
- */
79
- findPrevious(): void;
80
- /**
81
- * 替换一个
82
- */
83
- replaceOne(): void;
84
- /**
85
- * 全部替换
86
- */
87
- replaceAll(): void;
88
- /**
89
- * 显示消息
90
- */
91
- private showMessage;
92
- /**
93
- * 设置表格实例(用于表格重建后更新引用)
94
- */
95
- setTableInstance(tableInstance: any): void;
96
- /**
97
- * 设置是否只搜索选中列
98
- */
99
- setSelectedColumnsOnly(selectedOnly: boolean): void;
100
- /**
101
- * 获取是否只搜索选中列
102
- */
103
- getSelectedColumnsOnly(): boolean;
104
- /**
105
- * 设置查找文本
106
- */
107
- setFindText(text: string): void;
108
- /**
109
- * 设置替换文本
110
- */
111
- setReplaceText(text: string): void;
112
- /**
113
- * 销毁弹窗
114
- */
115
- destroy(): void;
116
- }
117
- export default FindReplaceDialog;
@@ -1,6 +0,0 @@
1
- /**
2
- * ExcelUtils - Excel 导入导出工具类(兼容层)
3
- * 此文件保留用于向后兼容,新代码请使用 ./excel 模块
4
- * @deprecated 请使用 ./excel 模块中的功能
5
- */
6
- export * from './excel';
@@ -1,5 +0,0 @@
1
- /**
2
- * Dialog 样式
3
- */
4
- export declare const DIALOG_STYLES = "\n .find-replace-dialog {\n position: fixed;\n top: 80px;\n left: 50%;\n transform: translateX(-50%);\n z-index: 9999;\n font-size: 14px;\n color: #1D2129;\n pointer-events: auto;\n }\n\n .find-replace-container {\n background: white;\n border-radius: 8px;\n width: 500px;\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);\n animation: slideIn 0.2s ease-out;\n }\n\n @keyframes slideIn {\n from { opacity: 0; transform: translateX(20px); }\n to { opacity: 1; transform: translateX(0); }\n }\n\n .find-replace-title {\n font-size: 16px;\n font-weight: 500;\n color: #303133;\n }\n\n .find-replace-body {\n padding: 16px;\n }\n\n .find-replace-group {\n margin-bottom: 16px;\n display: flex;\n align-items: center;\n }\n\n .find-replace-label {\n display: block;\n min-width: 56px;\n margin-right: 8px;\n }\n\n .find-replace-checkbox {\n display: none;\n align-items: center;\n font-weight: normal;\n min-width: auto;\n margin-right: 0;\n }\n\n .find-replace-checkbox input {\n margin-right: 6px;\n }\n\n .find-replace-input-wrapper {\n position: relative;\n display: flex;\n align-items: center;\n flex: 1;\n height: 32px;\n }\n\n .find-replace-input {\n width: 100%;\n padding: 0px 12px;\n border: 1px solid #dcdfe6;\n border-radius: 4px;\n height: 32px;\n }\n\n .find-replace-input:focus {\n outline: none;\n border-color: #409eff;\n }\n\n .current-position {\n margin-left: 10px;\n color: #409eff;\n font-weight: 500;\n }\n\n .find-replace-footer {\n padding: 0px 16px 16px 16px;\n display: flex;\n justify-content: flex-end;\n gap: 8px;\n flex-wrap: wrap;\n }\n\n .find-replace-btn {\n padding: 6px 16px;\n border-radius: 4px;\n height: 32px;\n cursor: pointer;\n background: var(--sl-color-white);\n border: 1px solid var(--sl-border-color);\n }\n\n .find-replace-btn-primary {\n background-color: var(--sl-color-primary);\n color: white;\n }\n\n .find-replace-btn-primary:hover {\n border-color: var(--sl-button-hover-border-color);\n background-color: var(--sl-button-hover-bg-color);\n }\n\n .message-toast {\n height: 40px;\n position: fixed;\n top: 20px;\n left: 50%;\n transform: translateX(-50%) translateY(-100px);\n padding: 11px 15px;\n color: white;\n border-radius: 4px;\n box-shadow: 0 2px 12px rgba(0, 0, 0, 0.15);\n z-index: 9999;\n opacity: 0;\n transition: all 0.3s ease-out;\n display: flex;\n align-items: center;\n }\n\n .message-toast--info {\n background-color: var(--sl-color-info-light-9);\n border: 1px solid var(--sl-color-info-light-8);\n color: var(--sl-color-info);\n }\n\n .message-toast--success {\n background-color: var(--sl-color-success-light-9);\n border: 1px solid var(--sl-color-success-light-8);\n color: var(--sl-color-success);\n }\n\n .message-toast--warning {\n background-color: var(--sl-color-warning-light-9);\n border: 1px solid var(--sl-color-warning-light-8);\n color: var(--sl-color-warning);\n }\n\n .message-toast--error {\n background-color: var(--sl-color-error-light-9);\n border: 1px solid var(--sl-color-error-light-8);\n color: var(--sl-color-error);\n }\n\n .message-toast.show {\n transform: translateX(-50%) translateY(0);\n opacity: 1;\n }\n";
5
- export declare const DIALOG_STYLE_ID = "find-replace-styles";
@@ -1,5 +0,0 @@
1
- /**
2
- * Toolbar 样式
3
- */
4
- export declare const TOOLBAR_STYLES = "\n .sl-toolbar {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 8px 16px;\n background: var(--sl-vtable-card-bg-color);\n font-size: 14px;\n color: var(--sl-vtable-content-color);\n flex-shrink: 0;\n border-radius: 4px;\n }\n \n .sl-toolbar-right {\n display: flex;\n align-items: center;\n gap: 24px;\n }\n\n .sl-toolbar-btn {\n padding: 6px 16px;\n height: 32px;\n border: 1px solid var(--sl-vtable-bg-color1);\n border-radius: 4px;\n font-size: 14px;\n color: var(--sl-vtable-content-color);\n cursor: pointer;\n white-space: nowrap;\n }\n\n .sl-toolbar-btn:hover {\n background: #E8E9EB;\n }\n\n .sl-toolbar-btn-icon {\n padding: 6px 10px;\n font-size: 16px;\n min-width: 32px;\n }\n\n .sl-toolbar-btn-complex {\n display: flex;\n align-items: center;\n gap: 4px;\n }\n\n .sl-btn-icon {\n font-size: 14px;\n }\n\n .sl-btn-text {\n font-size: 14px;\n }\n\n .sl-btn-count {\n font-size: 14px;\n font-weight: 600;\n color: var(--sl-vtable-primary-color);\n }\n\n .sl-btn-suffix {\n font-size: 14px;\n }\n\n .sl-freeze-selector {\n display: flex;\n align-items: center;\n gap: 4px;\n }\n\n .sl-freeze-label {\n font-size: 14px;\n color: var(--sl-vtable-content-color);\n white-space: nowrap;\n }\n\n .sl-freeze-input-wrapper {\n position: relative;\n display: inline-flex;\n align-items: center;\n background: var(--sl-vtable-bg-color1);\n border: 1px solid var(--sl-vtable-bg-color1);\n border-radius: 4px;\n transition: all 0.2s;\n height: 32px;\n box-sizing: border-box;\n }\n\n .sl-freeze-input-wrapper:focus-within {\n border-color: var(--sl-vtable-primary-color);\n box-shadow: 0 0 0 2px rgba(40, 120, 255, 0.1);\n }\n\n .sl-freeze-input {\n width: 30px;\n height: 30px;\n padding: 0px 2px;\n border-radius: 4px 0px 0px 4px;\n background: #fff;\n border: none;\n font-size: 14px;\n color: var(--sl-vtable-content-color);\n text-align: center;\n outline: none;\n -moz-appearance: textfield;\n }\n\n .sl-freeze-input::-webkit-outer-spin-button,\n .sl-freeze-input::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n\n .sl-freeze-arrows {\n display: flex;\n flex-direction: column;\n border-left: 1px solid #E5E6EB;\n }\n\n .sl-freeze-arrow {\n width: 20px;\n height: 10px;\n padding: 0;\n background: transparent;\n border: none;\n font-size: 14px;\n color: var(--sl-vtable-content-color);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n\n .sl-freeze-arrow-up {\n border-radius: 0 8px 0 0;\n }\n\n .sl-freeze-arrow-down {\n border-radius: 0 0 8px 0;\n transform: rotate(180deg);\n }\n\n .sl-freeze-suffix {\n font-size: 14px;\n color: var(--sl-vtable-content-color);\n }\n\n .sl-error-list-checkbox {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n cursor: pointer;\n user-select: none;\n }\n\n .sl-checkbox-input {\n position: absolute;\n opacity: 0;\n width: 0;\n height: 0;\n }\n\n .sl-checkbox-custom {\n position: relative;\n width: 16px;\n height: 16px;\n border: 2px solid #C9CDD4;\n border-radius: 4px;\n background: #fff;\n transition: all 0.2s;\n flex-shrink: 0;\n }\n\n .sl-checkbox-input:checked + .sl-checkbox-custom {\n background: var(--sl-vtable-primary-color);\n border-color: var(--sl-vtable-primary-color);\n }\n\n .sl-checkbox-input:checked + .sl-checkbox-custom::after {\n content: \"\";\n position: absolute;\n left: 4px;\n top: 1px;\n width: 4px;\n height: 8px;\n border: solid white;\n border-width: 0 2px 2px 0;\n transform: rotate(45deg);\n }\n\n .sl-error-list-checkbox:hover .sl-checkbox-custom {\n border-color: var(--sl-vtable-primary-color);\n }\n\n .sl-checkbox-label {\n font-size: 14px;\n color: var(--sl-vtable-content-color);\n }\n\n /* \u54CD\u5E94\u5F0F\u8BBE\u8BA1 */\n @media (max-width: 768px) {\n .sl-toolbar {\n flex-direction: column;\n align-items: flex-start;\n gap: 12px;\n }\n\n .sl-toolbar-left {\n flex-direction: column;\n align-items: flex-start;\n gap: 8px;\n }\n\n .sl-toolbar-right {\n width: 100%;\n justify-content: flex-start;\n flex-wrap: wrap;\n }\n }\n";
5
- export declare const TOOLBAR_STYLE_ID = "sl-toolbar-styles";
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes