px-jspreadsheet-ce 0.0.4 → 0.0.6

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/index.d.ts CHANGED
@@ -972,6 +972,8 @@ declare namespace jspreadsheet {
972
972
  */
973
973
  classes?: Record<string, string>;
974
974
 
975
+ cells?: Record<string, Omit<Column, 'width'>>;
976
+
975
977
  /**
976
978
  * Allow column dragging.
977
979
  * @default true
@@ -1501,6 +1503,8 @@ declare namespace jspreadsheet {
1501
1503
  */
1502
1504
  deleteWorksheet: (position: number) => void;
1503
1505
 
1506
+ updateWorksheet: (options: WorksheetOptions) => void;
1507
+
1504
1508
  /**
1505
1509
  * Remove all merged cells.
1506
1510
  */
package/package.json CHANGED
@@ -6,7 +6,7 @@
6
6
  "main": "dist/index.js",
7
7
  "module": "src/index.js",
8
8
  "types": "dist/index.d.ts",
9
- "version": "0.0.4",
9
+ "version": "0.0.6",
10
10
  "exports": {
11
11
  ".": {
12
12
  "import": "./src/index.js",
package/src/index.js CHANGED
@@ -78,6 +78,8 @@ libraryBase.jspreadsheet.destroyAll = function () {
78
78
 
79
79
  libraryBase.jspreadsheet.destroy(spreadsheet.element);
80
80
  }
81
+ libraryBase.jspreadsheet.current = null;
82
+ libraryBase.jspreadsheet.spreadsheet = [];
81
83
  };
82
84
 
83
85
  libraryBase.jspreadsheet.current = null;
@@ -102,6 +102,7 @@ const createWorksheets = async function (spreadsheet, options, el) {
102
102
  formula: [],
103
103
  history: [],
104
104
  selection: [],
105
+ vueApps: [],
105
106
  historyIndex: -1,
106
107
  });
107
108
 
@@ -494,7 +494,10 @@ export const createCell = function (i, j, value) {
494
494
  td.innerHTML = value;
495
495
  }
496
496
  if (typeof config.type.createCell == 'function') {
497
- config.type.createCell(td, value, parseInt(i), parseInt(j), obj, config);
497
+ const result = config.type.createCell(td, value, parseInt(i), parseInt(j), obj, config);
498
+ if (result && typeof result.mount === 'function' && typeof result.unmount === 'function') {
499
+ obj.vueApps.push(result);
500
+ }
498
501
  }
499
502
  }
500
503
 
@@ -505,12 +508,12 @@ export const createCell = function (i, j, value) {
505
508
 
506
509
  if (obj.options.freezeRows > j) {
507
510
  td.classList.add('jss_frozen_row');
508
- td.style.top = getFreezeRowTop(j, obj.options.rows);
511
+ td.style.top = getFreezeRowTop(j, obj.options.rows, obj.options.defaultRowHeight);
509
512
  }
510
513
 
511
514
  if (obj.options.freezeColumns > i) {
512
515
  td.classList.add('jss_frozen');
513
- td.style.left = getFreezeColumnLeft(i, obj.options.columns);
516
+ td.style.left = getFreezeColumnLeft(i, obj.options.columns, obj.options.defaultColWidth);
514
517
  }
515
518
 
516
519
  // Text align
@@ -73,23 +73,23 @@ export const getColumnNameFromId = function (cellId) {
73
73
  * 获取静态的左侧距离
74
74
  *
75
75
  */
76
- export const getFreezeColumnLeft = function (colNumber, columns) {
76
+ export const getFreezeColumnLeft = function (colNumber, columns, defaultWidth) {
77
77
  let left = 50; // 距离左侧的位置
78
78
  while (colNumber > 0) {
79
79
  const obj = columns[colNumber - 1]; // 左侧单元格
80
80
  if (obj.type !== 'hidden') {
81
- left += parseInt(obj.width);
81
+ left += parseInt(obj.width || defaultWidth);
82
82
  }
83
83
  colNumber -= 1;
84
84
  }
85
85
  return left + 'px';
86
86
  };
87
87
 
88
- export const getFreezeRowTop = function (rowNumber, rows) {
88
+ export const getFreezeRowTop = function (rowNumber, rows, defaultHeight) {
89
89
  let top = 30; // 距离顶部的位置
90
90
  while (rowNumber > 0) {
91
91
  const obj = rows[rowNumber - 1]; // 左侧单元格
92
- top += parseInt(obj.height);
92
+ top += parseInt(obj.height || defaultHeight);
93
93
  rowNumber -= 1;
94
94
  }
95
95
  return top + 'px';
@@ -635,31 +635,62 @@ export const deleteWorksheet = function (position) {
635
635
  const removedWorksheet = obj.parent.worksheets.splice(position, 1)[0];
636
636
  dispatch.call(obj.parent, 'ondeleteworksheet', removedWorksheet, position);
637
637
 
638
- removedWorksheet.content.onscroll = null;
639
- removedWorksheet.content.onwheel = null;
640
- removedWorksheet.searchInput.onfocus = null;
641
- removedWorksheet.paginationDropdown && (removedWorksheet.paginationDropdown.onchange = null);
638
+ // 卸载vue实例
639
+ obj.vueApps.forEach(function (app) {
640
+ app.unmount();
641
+ });
642
+
643
+ obj.content.onscroll = null;
644
+ obj.content.onwheel = null;
645
+ obj.searchInput.onfocus = null;
646
+ if (obj.paginationDropdown) {
647
+ obj.paginationDropdown.onchange = null;
648
+ }
642
649
 
643
- removedWorksheet.textarea.remove();
644
- removedWorksheet.textarea = null;
650
+ obj.textarea.remove();
651
+ obj.textarea = null;
645
652
 
646
- if (removedWorksheet.element) {
647
- delete removedWorksheet.element.jssWorksheet;
648
- delete removedWorksheet.element.jspreadsheet;
653
+ if (obj.element) {
654
+ delete obj.element.jssWorksheet;
655
+ delete obj.element.jspreadsheet;
656
+ obj.element = null;
649
657
  }
650
658
 
651
- removedWorksheet.headers = null;
652
- removedWorksheet.cols = null;
653
- removedWorksheet.records = null;
654
- removedWorksheet.options = null;
659
+ obj.headers = null;
660
+ obj.cols = null;
661
+ obj.records = null;
662
+ obj.options = null;
655
663
 
656
- Object.keys(removedWorksheet).forEach((key) => {
657
- if (Object.hasOwn(removedWorksheet, key)) {
658
- removedWorksheet[key] = null;
664
+ Object.keys(obj).forEach((key) => {
665
+ if (Object.hasOwn(obj, key)) {
666
+ obj[key] = null;
659
667
  }
660
668
  });
661
669
  };
662
670
 
671
+ export const updateWorksheet = function (options) {
672
+ const obj = this;
673
+
674
+ // Reset selection
675
+ obj.resetSelection();
676
+
677
+ // 卸载vue实例
678
+ obj.vueApps.forEach(function (app) {
679
+ app.unmount();
680
+ });
681
+ obj.vueApps = [];
682
+
683
+ obj.element.removeChild(obj.content);
684
+ obj.element.removeChild(obj.pagination);
685
+ obj.element.removeChild(obj.ads);
686
+
687
+ obj.options = options;
688
+ obj.history = [];
689
+ obj.historyIndex = -1;
690
+ // Prepare table
691
+ prepareTable.call(obj);
692
+ };
693
+
663
694
  const worksheetPublicMethods = [
664
695
  ['selectAll', selectAll],
665
696
  [
@@ -777,6 +808,7 @@ const worksheetPublicMethods = [
777
808
  ['createWorksheet', createWorksheet],
778
809
  ['openWorksheet', openWorksheet],
779
810
  ['deleteWorksheet', deleteWorksheet],
811
+ ['updateWorksheet', updateWorksheet],
780
812
  [
781
813
  'copy',
782
814
  function (cut) {