@progress/kendo-react-spreadsheet 5.14.0-dev.202305250741 → 5.14.0-dev.202305301859

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 (68) hide show
  1. package/README.md +9 -0
  2. package/dist/cdn/js/kendo-react-spreadsheet.js +1 -1
  3. package/dist/es/NameBox.js +7 -4
  4. package/dist/es/SheetsBar.js +4 -2
  5. package/dist/es/Spreadsheet.js +29 -29
  6. package/dist/es/SpreadsheetProps.d.ts +55 -17
  7. package/dist/es/SpreadsheetProps.js +4 -1
  8. package/dist/es/messages.d.ts +2 -0
  9. package/dist/es/messages.js +6 -0
  10. package/dist/es/package-metadata.js +1 -1
  11. package/dist/es/tools/align.d.ts +2 -2
  12. package/dist/es/tools/align.js +1 -1
  13. package/dist/es/tools/defaultTools.js +17 -5
  14. package/dist/es/tools/export.d.ts +2 -2
  15. package/dist/es/tools/export.js +1 -1
  16. package/dist/es/tools/fontFamily.js +1 -1
  17. package/dist/es/tools/fontSize.js +1 -1
  18. package/dist/es/tools/format.d.ts +2 -2
  19. package/dist/es/tools/format.js +1 -1
  20. package/dist/es/tools/gridLines.d.ts +2 -2
  21. package/dist/es/tools/gridLines.js +1 -1
  22. package/dist/es/tools/index.d.ts +1 -0
  23. package/dist/es/tools/open.d.ts +2 -2
  24. package/dist/es/tools/open.js +1 -1
  25. package/dist/es/tools/redo.d.ts +2 -2
  26. package/dist/es/tools/redo.js +3 -2
  27. package/dist/es/tools/tableTools.d.ts +7 -7
  28. package/dist/es/tools/tableTools.js +1 -1
  29. package/dist/es/tools/textWrap.d.ts +2 -2
  30. package/dist/es/tools/textWrap.js +1 -1
  31. package/dist/es/tools/undo.d.ts +2 -2
  32. package/dist/es/tools/undo.js +3 -2
  33. package/dist/es/tools/utils.d.ts +7 -10
  34. package/dist/es/tools/utils.js +3 -3
  35. package/dist/npm/NameBox.js +7 -4
  36. package/dist/npm/SheetsBar.js +4 -2
  37. package/dist/npm/Spreadsheet.js +29 -29
  38. package/dist/npm/SpreadsheetProps.d.ts +55 -17
  39. package/dist/npm/SpreadsheetProps.js +8 -0
  40. package/dist/npm/messages.d.ts +2 -0
  41. package/dist/npm/messages.js +6 -0
  42. package/dist/npm/package-metadata.js +1 -1
  43. package/dist/npm/tools/align.d.ts +2 -2
  44. package/dist/npm/tools/align.js +1 -1
  45. package/dist/npm/tools/defaultTools.js +17 -5
  46. package/dist/npm/tools/export.d.ts +2 -2
  47. package/dist/npm/tools/export.js +1 -1
  48. package/dist/npm/tools/fontFamily.js +1 -1
  49. package/dist/npm/tools/fontSize.js +1 -1
  50. package/dist/npm/tools/format.d.ts +2 -2
  51. package/dist/npm/tools/format.js +1 -1
  52. package/dist/npm/tools/gridLines.d.ts +2 -2
  53. package/dist/npm/tools/gridLines.js +1 -1
  54. package/dist/npm/tools/index.d.ts +1 -0
  55. package/dist/npm/tools/open.d.ts +2 -2
  56. package/dist/npm/tools/open.js +1 -1
  57. package/dist/npm/tools/redo.d.ts +2 -2
  58. package/dist/npm/tools/redo.js +2 -1
  59. package/dist/npm/tools/tableTools.d.ts +7 -7
  60. package/dist/npm/tools/tableTools.js +1 -1
  61. package/dist/npm/tools/textWrap.d.ts +2 -2
  62. package/dist/npm/tools/textWrap.js +1 -1
  63. package/dist/npm/tools/undo.d.ts +2 -2
  64. package/dist/npm/tools/undo.js +2 -1
  65. package/dist/npm/tools/utils.d.ts +7 -10
  66. package/dist/npm/tools/utils.js +3 -3
  67. package/dist/systemjs/kendo-react-spreadsheet.js +1 -1
  68. package/package.json +11 -11
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { Spreadsheet as SpreadsheetInstance } from '@progress/kendo-spreadsheet-common';
2
+ import { SpreadsheetWidget } from './../SpreadsheetProps';
3
3
  import { ColorPickerProps } from '@progress/kendo-react-inputs';
4
4
  import { SVGIcon } from '@progress/kendo-react-common';
5
5
  /**
@@ -28,22 +28,19 @@ export declare const FORMATS: ({
28
28
  text: string;
29
29
  value: string;
30
30
  })[];
31
- /**
32
- * @hidden
33
- */
34
- export interface BaseToolProps {
35
- spreadsheetRef: React.RefObject<SpreadsheetInstance>;
31
+ export interface SpreadsheetToolProps {
32
+ spreadsheetRef: React.RefObject<SpreadsheetWidget>;
36
33
  }
37
34
  /**
38
35
  * @hidden
39
36
  */
40
- export interface PropertyChangeToolProps extends BaseToolProps {
37
+ export interface PropertyChangeToolProps extends SpreadsheetToolProps {
41
38
  value?: boolean;
42
39
  }
43
40
  /**
44
41
  * @hidden
45
42
  */
46
- export interface DropDownToolProps extends BaseToolProps {
43
+ export interface DropDownToolProps extends SpreadsheetToolProps {
47
44
  value?: any;
48
45
  }
49
46
  /**
@@ -58,7 +55,7 @@ export declare const PropertyChangeTool: <Props extends PropertyChangeToolProps>
58
55
  /**
59
56
  * @hidden
60
57
  */
61
- export interface ColorToolProps extends BaseToolProps {
58
+ export interface ColorToolProps extends SpreadsheetToolProps {
62
59
  value?: string;
63
60
  }
64
61
  /**
@@ -71,7 +68,7 @@ export declare const ColorTool: <Props extends ColorToolProps>(settings: ColorPi
71
68
  /**
72
69
  * @hidden
73
70
  */
74
- export declare const UndoRedo: <Props extends BaseToolProps>(settings: {
71
+ export declare const UndoRedo: <Props extends SpreadsheetToolProps>(settings: {
75
72
  action: string;
76
73
  icon: string;
77
74
  svgIcon: SVGIcon;
@@ -61,7 +61,7 @@ export const PropertyChangeTool = (settings) => {
61
61
  spreadsheetRef.current.executeCommand(options);
62
62
  }
63
63
  }, [selected]);
64
- return (React.createElement(Button, { type: "button", icon: icon, svgIcon: svgIcon, togglable: true, onClick: onClick, selected: selected, title: useLocalization().toLanguageString(titleKey, messages[titleKey]) }));
64
+ return (React.createElement(Button, { type: "button", icon: icon, svgIcon: svgIcon, fillMode: "flat", togglable: true, onClick: onClick, selected: selected, title: useLocalization().toLanguageString(titleKey, messages[titleKey]) }));
65
65
  };
66
66
  return tool;
67
67
  };
@@ -80,7 +80,7 @@ export const ColorTool = (settings) => {
80
80
  spreadsheetRef.current.executeCommand(options);
81
81
  }
82
82
  }, [property]);
83
- return (React.createElement(ColorPicker, Object.assign({ onChange: onChange, onActiveColorClick: onChange }, colorPickerProps, { title: useLocalization().toLanguageString(titleKey, messages[titleKey]), value: value })));
83
+ return (React.createElement(ColorPicker, Object.assign({ onChange: onChange, onActiveColorClick: onChange, fillMode: "flat" }, colorPickerProps, { title: useLocalization().toLanguageString(titleKey, messages[titleKey]), value: value })));
84
84
  };
85
85
  return tool;
86
86
  };
@@ -96,7 +96,7 @@ export const UndoRedo = (settings) => {
96
96
  workbook.undoRedoStack[settings.action]();
97
97
  }
98
98
  }, []);
99
- return (React.createElement(Button, { type: "button", fillMode: "flat", icon: settings.icon, svgIcon: settings.svgIcon, title: useLocalization().toLanguageString(settings.titleKey, messages[settings.titleKey]), onClick: onClick }));
99
+ return (React.createElement(Button, { type: "button", icon: settings.icon, svgIcon: settings.svgIcon, fillMode: "flat", title: useLocalization().toLanguageString(settings.titleKey, messages[settings.titleKey]), onClick: onClick }));
100
100
  };
101
101
  return tool;
102
102
  };
@@ -63,10 +63,13 @@ exports.NameBox = React.forwardRef((props, ref) => {
63
63
  }
64
64
  const editor = props.nameEditor();
65
65
  if (editor && event.value) {
66
- editor.trigger('select', { name: event.value.name });
67
- setValue(event.value.name);
66
+ const name = event.value.name;
67
+ if (name !== value) {
68
+ editor.trigger('select', { name });
69
+ setValue(name);
70
+ }
68
71
  }
69
- }, []);
72
+ }, [value]);
70
73
  const onKeyDown = React.useCallback((event) => {
71
74
  const editor = props.nameEditor();
72
75
  if (editor) {
@@ -85,7 +88,7 @@ exports.NameBox = React.forwardRef((props, ref) => {
85
88
  memo.prevValue = event.value.name;
86
89
  }, []);
87
90
  return (React.createElement("div", { className: "k-spreadsheet-name-editor", onKeyDown: onKeyDown },
88
- React.createElement(kendo_react_dropdowns_1.ComboBox, { ref: comboboxRef, title: (0, kendo_react_intl_1.useLocalization)().toLanguageString(messages_1.keys.nameBox, messages_1.messages[messages_1.keys.nameBox]), popupSettings: { className: 'k-spreadsheet-names-popup' }, clearButton: false, dataItemKey: "name", textField: "name", itemRender: itemRender, data: data, value: value ? (data.find((d) => d.name === name) || { name: value }) : null, onChange: onChange, opened: open, onOpen: onOpen, onClose: onClose, onFocus: onFocus, listNoDataRender: listNoDataRender, allowCustom: true })));
91
+ React.createElement(kendo_react_dropdowns_1.ComboBox, { ref: comboboxRef, title: (0, kendo_react_intl_1.useLocalization)().toLanguageString(messages_1.keys.nameBox, messages_1.messages[messages_1.keys.nameBox]), popupSettings: { className: 'k-spreadsheet-names-popup' }, fillMode: "flat", clearButton: false, dataItemKey: "name", textField: "name", itemRender: itemRender, data: data, value: value ? (data.find((d) => d.name === name) || { name: value }) : null, onChange: onChange, opened: open, onOpen: onOpen, onClose: onClose, onFocus: onFocus, listNoDataRender: listNoDataRender, allowCustom: true })));
89
92
  });
90
93
  exports.NameBox.displayName = 'NameBox';
91
94
  exports.NameBox.propTypes = {};
@@ -227,11 +227,13 @@ const SheetsBar = (props) => {
227
227
  const onSheetReorderEnd = React.useCallback((event) => {
228
228
  if (spreadsheetRef.current) {
229
229
  const { prevIndex, nextIndex } = event;
230
+ activeSheet.current = spreadsheetRef.current.sheets()[prevIndex].name();
230
231
  spreadsheetRef.current.view.sheetsbar.onSheetReorderEnd({ oldIndex: prevIndex, newIndex: nextIndex });
232
+ selectActiveSheet();
231
233
  }
232
234
  }, []);
233
- return (React.createElement("div", { className: "k-spreadsheet-sheets-bar" },
234
- React.createElement(kendo_react_buttons_1.Button, { fillMode: "flat", icon: "plus", title: (0, kendo_react_intl_1.useLocalization)().toLanguageString(messages_1.keys.addNewSheet, messages_1.messages[messages_1.keys.addNewSheet]), svgIcon: kendo_svg_icons_1.plusIcon, onClick: onAddSheet }),
235
+ return (React.createElement("div", { className: "k-spreadsheet-sheets-bar k-header" },
236
+ React.createElement(kendo_react_buttons_1.Button, { fillMode: "flat", icon: "plus", className: "k-spreadsheet-sheets-bar-add", title: (0, kendo_react_intl_1.useLocalization)().toLanguageString(messages_1.keys.addNewSheet, messages_1.messages[messages_1.keys.addNewSheet]), svgIcon: kendo_svg_icons_1.plusIcon, onClick: onAddSheet }),
235
237
  React.createElement(Tabs, { sheets: sheets, setSheets: setSheets, onSheetSelect: onSelect, onSheetDelete: onSheetDelete, onSheetEdit: onSheetRename, onSheetReorderEnd: onSheetReorderEnd })));
236
238
  };
237
239
  exports.SheetsBar = SheetsBar;
@@ -3,19 +3,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Spreadsheet = void 0;
4
4
  const React = require("react");
5
5
  const PropTypes = require("prop-types");
6
- const kendo_spreadsheet_common_1 = require("@progress/kendo-spreadsheet-common");
7
6
  const kendo_react_buttons_1 = require("@progress/kendo-react-buttons");
8
7
  const kendo_react_layout_1 = require("@progress/kendo-react-layout");
9
- const undo_1 = require("./tools/undo");
10
- const redo_1 = require("./tools/redo");
11
8
  const FormulaInput_1 = require("./FormulaInput");
12
9
  const NameBox_1 = require("./NameBox");
13
10
  const SheetsBar_1 = require("./SheetsBar");
11
+ const SpreadsheetProps_1 = require("./SpreadsheetProps");
14
12
  const defaultTools_1 = require("./tools/defaultTools");
15
13
  const kendo_react_common_1 = require("@progress/kendo-react-common");
16
14
  const package_metadata_1 = require("./package-metadata");
17
15
  const kendo_svg_icons_1 = require("@progress/kendo-svg-icons");
18
16
  const kendo_react_intl_1 = require("@progress/kendo-react-intl");
17
+ const kendo_file_saver_1 = require("@progress/kendo-file-saver");
18
+ const kendo_ooxml_1 = require("@progress/kendo-ooxml");
19
19
  const messages_1 = require("./messages");
20
20
  const toolsFunctions = ['bold', 'italic', 'underline', 'fontFamily', 'fontSize', 'color', 'background', 'textAlign', 'verticalAlign', 'wrap', 'gridLines'];
21
21
  const toolsValueMap = {
@@ -44,7 +44,15 @@ const toolbarButtons = [
44
44
  ];
45
45
  exports.Spreadsheet = React.forwardRef((props, ref) => {
46
46
  (0, kendo_react_common_1.validatePackage)(package_metadata_1.packageMetadata);
47
- const [tab, setTab] = React.useState(0);
47
+ const { toolbar = defaultTools_1.defaultTabs } = props;
48
+ const toolbarTools = [];
49
+ if (typeof toolbar === 'boolean') {
50
+ toolbarTools.push(...(toolbar ? defaultTools_1.defaultTabs : []));
51
+ }
52
+ else {
53
+ toolbarTools.push(...toolbar);
54
+ }
55
+ const [tab, setTab] = React.useState(toolbarTools.findIndex(t => t.selected) || 0);
48
56
  const [_init, setInit] = React.useState(false);
49
57
  const elementRef = React.useRef(null);
50
58
  const formulaBarInputRef = React.useRef(null);
@@ -56,11 +64,6 @@ exports.Spreadsheet = React.forwardRef((props, ref) => {
56
64
  prevState.current = toolsState;
57
65
  const propsRef = React.useRef({});
58
66
  propsRef.current = props;
59
- const onRender = React.useCallback((event) => {
60
- if (propsRef.current.onRender) {
61
- propsRef.current.onRender.call(undefined, event);
62
- }
63
- }, []);
64
67
  const onSelect = React.useCallback((event) => {
65
68
  if (propsRef.current.onSelect) {
66
69
  propsRef.current.onSelect.call(undefined, event);
@@ -90,7 +93,22 @@ exports.Spreadsheet = React.forwardRef((props, ref) => {
90
93
  React.useImperativeHandle(target, () => ({
91
94
  element: elementRef.current,
92
95
  get instance() { return spreadsheetRef.current; },
93
- props
96
+ props,
97
+ get view() { return spreadsheetRef.current.view; },
98
+ get workbook() { return spreadsheetRef.current.workbook; },
99
+ executeCommand(options) { var _a; (_a = spreadsheetRef.current) === null || _a === void 0 ? void 0 : _a.executeCommand(options); },
100
+ fromJSON(json) { var _a; return (_a = spreadsheetRef.current) === null || _a === void 0 ? void 0 : _a.fromJSON(json); },
101
+ toJSON() { return spreadsheetRef.current.toJSON(); },
102
+ saveJSON() { return spreadsheetRef.current.saveJSON(); },
103
+ fromFile(file) { return spreadsheetRef.current.fromFile(file); },
104
+ saveAsExcel(options) {
105
+ var _a;
106
+ (_a = spreadsheetRef.current) === null || _a === void 0 ? void 0 : _a.saveAsExcel(Object.assign(Object.assign(Object.assign({}, spreadsheetRef.current.options.excel), { saveAs: kendo_file_saver_1.saveAs,
107
+ Workbook: kendo_ooxml_1.Workbook }), options));
108
+ },
109
+ activeSheet(sheet) { var _a; return (_a = spreadsheetRef.current) === null || _a === void 0 ? void 0 : _a.activeSheet(sheet); },
110
+ sheets() { return spreadsheetRef.current.sheets(); },
111
+ refresh() { var _a; return (_a = spreadsheetRef.current) === null || _a === void 0 ? void 0 : _a.refresh(); }
94
112
  }), [props]);
95
113
  React.useImperativeHandle(ref, () => target.current);
96
114
  const nameEditor = React.useCallback(() => {
@@ -126,9 +144,8 @@ exports.Spreadsheet = React.forwardRef((props, ref) => {
126
144
  }, formulaBarInputRef,
127
145
  formulaCellInputRef,
128
146
  nameBoxRef });
129
- const spreadsheet = new kendo_spreadsheet_common_1.Spreadsheet(elementRef.current, options);
147
+ const spreadsheet = new SpreadsheetProps_1.SpreadsheetWidget(elementRef.current, options);
130
148
  spreadsheetRef.current = spreadsheet;
131
- spreadsheet.bind('render', onRender);
132
149
  spreadsheet.bind('select', onSelect);
133
150
  spreadsheet.bind('change', onChange);
134
151
  spreadsheet.bind('changeFormat', onChangeFormat);
@@ -140,11 +157,6 @@ exports.Spreadsheet = React.forwardRef((props, ref) => {
140
157
  onUpdateTools({ range: sheet.range(sheet.activeCell()) });
141
158
  }
142
159
  setInit(true);
143
- const quickAccessToolbar = elementRef.current && elementRef.current.querySelector('.k-spreadsheet-quick-access-toolbar');
144
- const tabstripItems = elementRef.current && elementRef.current.querySelector('.k-spreadsheet-tabstrip .k-tabstrip-items');
145
- if (quickAccessToolbar && tabstripItems) {
146
- tabstripItems.style.paddingLeft = quickAccessToolbar.offsetWidth + 'px';
147
- }
148
160
  return () => {
149
161
  spreadsheet.destroy();
150
162
  };
@@ -153,14 +165,6 @@ exports.Spreadsheet = React.forwardRef((props, ref) => {
153
165
  const tool = (React.createElement(Tool, { spreadsheetRef: spreadsheetRef, value: toolsValueMap[Tool.displayName] ? toolsValueMap[Tool.displayName](toolsState) : undefined, key: index }));
154
166
  return tool.type === kendo_react_buttons_1.ToolbarSeparator ? React.createElement(Tool, { key: index }) : tool;
155
167
  }, [toolsState]);
156
- const { toolbar = defaultTools_1.defaultTabs } = props;
157
- const toolbarTools = [];
158
- if (typeof toolbar === 'boolean') {
159
- toolbarTools.push(...(toolbar ? defaultTools_1.defaultTabs : []));
160
- }
161
- else {
162
- toolbarTools.push(...toolbar);
163
- }
164
168
  let tabstrip = null;
165
169
  if (toolbarTools.length) {
166
170
  tabstrip = (React.createElement(kendo_react_layout_1.TabStrip, { selected: tab, animation: false, className: "k-floatwrap k-spreadsheet-tabstrip", style: { minHeight: 'auto' }, onSelect: e => setTab(e.selected) }, toolbarTools.map((tabData) => {
@@ -177,9 +181,6 @@ exports.Spreadsheet = React.forwardRef((props, ref) => {
177
181
  })));
178
182
  }
179
183
  return (React.createElement("div", { ref: elementRef, style: props.style, className: (0, kendo_react_common_1.classNames)('k-widget k-spreadsheet', props.className), role: "application" },
180
- tabstrip && React.createElement("div", { className: "k-spreadsheet-quick-access-toolbar" },
181
- React.createElement(undo_1.Undo, { spreadsheetRef: spreadsheetRef }),
182
- React.createElement(redo_1.Redo, { spreadsheetRef: spreadsheetRef })),
183
184
  tabstrip,
184
185
  React.createElement("div", { className: "k-spreadsheet-action-bar" },
185
186
  React.createElement(NameBox_1.NameBox, { ref: nameBoxRef, nameEditor: nameEditor }),
@@ -200,7 +201,6 @@ exports.Spreadsheet.propTypes = {
200
201
  defaultProps: PropTypes.any,
201
202
  toolbar: PropTypes.oneOfType([PropTypes.bool, PropTypes.arrayOf(PropTypes.any)]),
202
203
  style: PropTypes.object,
203
- onRender: PropTypes.func,
204
204
  onSelect: PropTypes.func,
205
205
  onChange: PropTypes.func,
206
206
  onChangeFormat: PropTypes.func,
@@ -1,23 +1,22 @@
1
1
  /// <reference types="react" />
2
- import { Workbook } from '@progress/kendo-ooxml';
3
- import { SpreadsheetOptions as SpreadsheetOpts, Spreadsheet, Range as SpreadsheetRange } from '@progress/kendo-spreadsheet-common';
4
- export interface SpreadsheetInstance extends Spreadsheet {
2
+ import { Workbook as OoxmlWorkbook } from '@progress/kendo-ooxml';
3
+ import { SpreadsheetOptions as SpreadsheetOpts, Spreadsheet, Range, DocumentDescriptor, View, Sheet, ExcelExportSettings, SheetDescriptor, Workbook } from '@progress/kendo-spreadsheet-common';
4
+ export declare class SpreadsheetWidget extends Spreadsheet {
5
5
  }
6
- export interface SpreadsheetOptions extends SpreadsheetOpts {
6
+ export interface SpreadsheetOptions extends Omit<SpreadsheetOpts, 'formulaBarInputRef' | 'formulaCellInputRef' | 'nameBoxRef' | 'locale'> {
7
7
  }
8
+ export { DocumentDescriptor, View, Workbook, Sheet, SheetDescriptor, ExcelExportSettings };
8
9
  interface SpreadsheetEvent {
9
10
  /**
10
11
  * The widget instance which fired the event.
11
12
  */
12
- sender: SpreadsheetInstance;
13
- }
14
- export interface SpreadsheetRenderEvent extends SpreadsheetEvent {
13
+ sender: SpreadsheetWidget;
15
14
  }
16
15
  export interface SpreadsheetSelectEvent extends SpreadsheetEvent {
17
16
  /**
18
17
  * The Range that is selected.
19
18
  */
20
- range: SpreadsheetRange;
19
+ range: Range;
21
20
  }
22
21
  export interface SpreadsheetChangeEvent extends SpreadsheetEvent, SpreadsheetSelectEvent {
23
22
  }
@@ -40,7 +39,7 @@ export interface SpreadsheetExcelExportEvent extends SpreadsheetEvent {
40
39
  * The Excel workbook configuration object.
41
40
  * Modifications of the workbook will reflect in the output Excel document.
42
41
  */
43
- workbook: Workbook;
42
+ workbook: OoxmlWorkbook;
44
43
  /**
45
44
  * If invoked, the Spreadsheet will not save the generated file.
46
45
  */
@@ -49,6 +48,7 @@ export interface SpreadsheetExcelExportEvent extends SpreadsheetEvent {
49
48
  export interface SpreadsheetTab {
50
49
  text?: string;
51
50
  textKey?: string;
51
+ selected?: boolean;
52
52
  tools: (React.ComponentType<any> | React.ComponentType<any>[])[];
53
53
  }
54
54
  export interface SpreadsheetProps {
@@ -67,12 +67,6 @@ export interface SpreadsheetProps {
67
67
  * Specifies the styles that will be applied to the wrapping element.
68
68
  */
69
69
  style?: React.CSSProperties;
70
- /**
71
- * Triggered after the widget has completed rendering.
72
- * The event will also fire when a cell is selected or when the Spreadsheet's tools (bold, italic) are used,
73
- * as the target element is re-generated with new styles (e.g background-color, box-shadow, font-weight, etc.).
74
- */
75
- onRender?: (event: SpreadsheetRenderEvent) => void;
76
70
  /**
77
71
  * Triggered when the Spreadsheet selection is changed.
78
72
  */
@@ -103,6 +97,50 @@ export interface SpreadsheetHandle {
103
97
  * The props values of the Spreadsheet.
104
98
  */
105
99
  props: SpreadsheetProps;
106
- instance: SpreadsheetInstance | null;
100
+ instance: SpreadsheetWidget | null;
101
+ get view(): View;
102
+ get workbook(): Workbook;
103
+ executeCommand(options: any): void;
104
+ /**
105
+ * Loads the workbook data from an object with the format that is defined in the configuration.
106
+ *
107
+ * Note: All existing sheets and their data will be lost.
108
+ *
109
+ * @param json The object from where data will be loaded. This has to be the deserialized object, not the JSON string.
110
+ */
111
+ fromJSON(json: DocumentDescriptor): void;
112
+ /**
113
+ * Serializes the workbook.
114
+ */
115
+ toJSON(): DocumentDescriptor;
116
+ /**
117
+ * Serializes the workbook. This method does not return the JSON, but a Promise object which will yield the JSON data when it is available.
118
+ * The method is functionally similar to `toJSON`, but it is also able to save the embedded images (this is the reason why it must be asynchronous).
119
+ */
120
+ saveJSON(): Promise<DocumentDescriptor>;
121
+ /**
122
+ * Clears the Spreadsheet and populates it with data from the specified Excel (.xlsx) file.
123
+ *
124
+ * @param blob The file or blob that is usually obtained through a file input.
125
+ */
126
+ fromFile(file: File | Blob): void;
127
+ /**
128
+ * Initiates the Excel export. Also fires the excelExport event.
129
+ *
130
+ * Node: Calling this method may trigger the built-in popup blocker of the browser.
131
+ * To avoid that, always call it as a response to an end-user action, for example, a button click.
132
+ */
133
+ saveAsExcel(options: any): void;
134
+ /**
135
+ * Gets or sets the active sheet.
136
+ */
137
+ activeSheet(sheet?: Sheet): Sheet | void;
138
+ /**
139
+ * Returns an array with the sheets in the workbook.
140
+ */
141
+ sheets(): Sheet[];
142
+ /**
143
+ * Re-renders all data in the Spreadsheet.
144
+ */
145
+ refresh(): void;
107
146
  }
108
- export {};
@@ -1,2 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Sheet = exports.Workbook = exports.View = exports.SpreadsheetWidget = void 0;
4
+ const kendo_spreadsheet_common_1 = require("@progress/kendo-spreadsheet-common");
5
+ Object.defineProperty(exports, "View", { enumerable: true, get: function () { return kendo_spreadsheet_common_1.View; } });
6
+ Object.defineProperty(exports, "Sheet", { enumerable: true, get: function () { return kendo_spreadsheet_common_1.Sheet; } });
7
+ Object.defineProperty(exports, "Workbook", { enumerable: true, get: function () { return kendo_spreadsheet_common_1.Workbook; } });
8
+ class SpreadsheetWidget extends kendo_spreadsheet_common_1.Spreadsheet {
9
+ }
10
+ exports.SpreadsheetWidget = SpreadsheetWidget;
@@ -33,6 +33,7 @@ export declare const messages: {
33
33
  "spreadsheet.nameBox": string;
34
34
  "spreadsheet.defaultSheetName": string;
35
35
  "spreadsheet.home": string;
36
+ "spreadsheet.file": string;
36
37
  "spreadsheet.insert": string;
37
38
  "spreadsheet.addNewSheet": string;
38
39
  };
@@ -70,6 +71,7 @@ export declare const keys: {
70
71
  gridLines: string;
71
72
  nameBox: string;
72
73
  defaultSheetName: string;
74
+ file: string;
73
75
  home: string;
74
76
  insert: string;
75
77
  addNewSheet: string;
@@ -125,6 +125,10 @@ const defaultSheetName = 'spreadsheet.defaultSheetName';
125
125
  * @hidden
126
126
  */
127
127
  const home = 'spreadsheet.home';
128
+ /**
129
+ * @hidden
130
+ */
131
+ const file = 'spreadsheet.file';
128
132
  /**
129
133
  * @hidden
130
134
  */
@@ -168,6 +172,7 @@ exports.messages = {
168
172
  [nameBox]: 'Name Box',
169
173
  [defaultSheetName]: 'Sheet',
170
174
  [home]: 'Home',
175
+ [file]: 'File',
171
176
  [insert]: 'Insert',
172
177
  [addNewSheet]: 'Add new sheet'
173
178
  };
@@ -205,6 +210,7 @@ exports.keys = {
205
210
  gridLines,
206
211
  nameBox,
207
212
  defaultSheetName,
213
+ file,
208
214
  home,
209
215
  insert,
210
216
  addNewSheet
@@ -8,7 +8,7 @@ exports.packageMetadata = {
8
8
  name: '@progress/kendo-react-spreadsheet',
9
9
  productName: 'KendoReact',
10
10
  productCodes: ['KENDOUIREACT', 'KENDOUICOMPLETE'],
11
- publishDate: 1684999837,
11
+ publishDate: 1685472613,
12
12
  version: '',
13
13
  licensingDocsUrl: 'https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning'
14
14
  };
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
- import { BaseToolProps } from './utils';
3
- export interface AlignmentProps extends BaseToolProps {
2
+ import { SpreadsheetToolProps } from './utils';
3
+ export interface AlignmentProps extends SpreadsheetToolProps {
4
4
  value: {
5
5
  textAlign?: string;
6
6
  verticalAlign?: string;
@@ -37,7 +37,7 @@ const Alignment = props => {
37
37
  if (verticalAlign) {
38
38
  items = items.map(i => i.commandName === 'verticalAlign' ? Object.assign(Object.assign({}, i), { selected: i.value === verticalAlign }) : i);
39
39
  }
40
- return (React.createElement(kendo_react_buttons_1.DropDownButton, { icon: "align-left", svgIcon: kendo_svg_icons_1.alignLeftIcon, items: items, onItemClick: onItemClick, title: loc.toLanguageString(messages_1.keys.align, messages_1.messages[messages_1.keys.align]), text: React.createElement(kendo_react_common_1.IconWrap, { name: "caret-alt-down", icon: kendo_svg_icons_1.caretAltDownIcon }) }));
40
+ return (React.createElement(kendo_react_buttons_1.DropDownButton, { icon: "align-left", svgIcon: kendo_svg_icons_1.alignLeftIcon, items: items, fillMode: "flat", onItemClick: onItemClick, title: loc.toLanguageString(messages_1.keys.align, messages_1.messages[messages_1.keys.align]), text: React.createElement(kendo_react_common_1.IconWrap, { name: "caret-alt-down", icon: kendo_svg_icons_1.caretAltDownIcon }) }));
41
41
  };
42
42
  exports.Alignment = Alignment;
43
43
  exports.Alignment.displayName = 'Alignment';
@@ -17,22 +17,34 @@ const gridLines_1 = require("./gridLines");
17
17
  const format_1 = require("./format");
18
18
  const tableTools_1 = require("./tableTools");
19
19
  const messages_1 = require("../messages");
20
+ const undo_1 = require("./undo");
21
+ const redo_1 = require("./redo");
20
22
  exports.defaultTabs = [
21
23
  {
22
- textKey: messages_1.keys.home,
24
+ textKey: messages_1.keys.file,
23
25
  tools: [
24
26
  open_1.Open,
25
- export_1.ExcelExport,
27
+ export_1.ExcelExport
28
+ ]
29
+ }, {
30
+ textKey: messages_1.keys.home,
31
+ selected: true,
32
+ tools: [
33
+ [undo_1.Undo, redo_1.Redo],
26
34
  kendo_react_buttons_1.ToolbarSeparator,
27
- [bold_1.Bold, italic_1.Italic, underline_1.Underline],
28
35
  fontFamily_1.FontFamily,
29
36
  fontSize_1.FontSize,
37
+ [bold_1.Bold, italic_1.Italic, underline_1.Underline],
30
38
  textColor_1.TextColor,
39
+ kendo_react_buttons_1.ToolbarSeparator,
31
40
  backgroundColor_1.BackgroundColor,
41
+ kendo_react_buttons_1.ToolbarSeparator,
32
42
  align_1.Alignment,
33
43
  textWrap_1.TextWrap,
34
- gridLines_1.GridLines,
35
- format_1.Format
44
+ kendo_react_buttons_1.ToolbarSeparator,
45
+ format_1.Format,
46
+ kendo_react_buttons_1.ToolbarSeparator,
47
+ gridLines_1.GridLines
36
48
  ]
37
49
  }, {
38
50
  textKey: messages_1.keys.insert,
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { BaseToolProps } from './utils';
3
- export interface ExcelExportProps extends BaseToolProps {
2
+ import { SpreadsheetToolProps } from './utils';
3
+ export interface ExcelExportProps extends SpreadsheetToolProps {
4
4
  }
5
5
  export declare const ExcelExport: React.FunctionComponent<ExcelExportProps>;
@@ -14,7 +14,7 @@ const ExcelExport = props => {
14
14
  Workbook: kendo_ooxml_1.Workbook }));
15
15
  }
16
16
  }, []);
17
- return (React.createElement(kendo_react_buttons_1.Button, { className: 'k-toolbar-button', title: 'Export...', icon: 'download', svgIcon: kendo_svg_icons_1.downloadIcon, onClick: onDownload }));
17
+ return (React.createElement(kendo_react_buttons_1.Button, { className: 'k-toolbar-button', title: 'Export...', icon: 'download', fillMode: "flat", svgIcon: kendo_svg_icons_1.downloadIcon, onClick: onDownload }));
18
18
  };
19
19
  exports.ExcelExport = ExcelExport;
20
20
  exports.ExcelExport.displayName = 'ExcelExport';
@@ -16,7 +16,7 @@ const FontFamily = props => {
16
16
  spreadsheetRef.current.executeCommand(options);
17
17
  }
18
18
  }, []);
19
- return (React.createElement(kendo_react_dropdowns_1.DropDownList, { onChange: onChange, value: value, data: utils_1.FONT_FAMILIES, defaultValue: utils_1.DEFAULT_FONT_FAMILY, title: (0, kendo_react_intl_1.useLocalization)().toLanguageString(messages_1.keys.fontName, messages_1.messages[messages_1.keys.fontName]), leftRightKeysNavigation: false }));
19
+ return (React.createElement(kendo_react_dropdowns_1.DropDownList, { onChange: onChange, value: value, data: utils_1.FONT_FAMILIES, defaultValue: utils_1.DEFAULT_FONT_FAMILY, fillMode: "flat", title: (0, kendo_react_intl_1.useLocalization)().toLanguageString(messages_1.keys.fontName, messages_1.messages[messages_1.keys.fontName]), leftRightKeysNavigation: false }));
20
20
  };
21
21
  exports.FontFamily = FontFamily;
22
22
  exports.FontFamily.displayName = 'FontFamily';
@@ -18,7 +18,7 @@ const FontSize = props => {
18
18
  }
19
19
  }, 0);
20
20
  }, []);
21
- return (React.createElement(kendo_react_dropdowns_1.ComboBox, { onChange: onChange, value: value, data: utils_1.FONT_SIZES, defaultValue: utils_1.DEFAULT_FONT_SIZE, allowCustom: true, title: (0, kendo_react_intl_1.useLocalization)().toLanguageString(messages_1.keys.fontSize, messages_1.messages[messages_1.keys.fontSize]), tabIndex: -1 }));
21
+ return (React.createElement(kendo_react_dropdowns_1.ComboBox, { onChange: onChange, value: value, data: utils_1.FONT_SIZES, defaultValue: utils_1.DEFAULT_FONT_SIZE, allowCustom: true, fillMode: "flat", title: (0, kendo_react_intl_1.useLocalization)().toLanguageString(messages_1.keys.fontSize, messages_1.messages[messages_1.keys.fontSize]), tabIndex: -1, clearButton: false }));
22
22
  };
23
23
  exports.FontSize = FontSize;
24
24
  exports.FontSize.displayName = 'FontSize';
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { BaseToolProps } from './utils';
3
- export interface FormatProps extends BaseToolProps {
2
+ import { SpreadsheetToolProps } from './utils';
3
+ export interface FormatProps extends SpreadsheetToolProps {
4
4
  }
5
5
  export declare const Format: React.FunctionComponent<FormatProps>;
@@ -21,7 +21,7 @@ const Format = props => {
21
21
  }
22
22
  }, 0);
23
23
  }, []);
24
- return (React.createElement(kendo_react_buttons_1.DropDownButton, { icon: 'custom-format', svgIcon: kendo_svg_icons_1.customFormatIcon, onItemClick: onChange, items: utils_1.FORMATS, title: (0, kendo_react_intl_1.useLocalization)().toLanguageString(messages_1.keys.format, messages_1.messages[messages_1.keys.format]), text: React.createElement(kendo_react_common_1.IconWrap, { name: "caret-alt-down" }) }));
24
+ return (React.createElement(kendo_react_buttons_1.DropDownButton, { icon: 'custom-format', svgIcon: kendo_svg_icons_1.customFormatIcon, fillMode: "flat", onItemClick: onChange, items: utils_1.FORMATS, title: (0, kendo_react_intl_1.useLocalization)().toLanguageString(messages_1.keys.format, messages_1.messages[messages_1.keys.format]), text: React.createElement(kendo_react_common_1.IconWrap, { name: "caret-alt-down" }) }));
25
25
  };
26
26
  exports.Format = Format;
27
27
  exports.Format.displayName = 'Format';
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
- import { BaseToolProps } from './utils';
3
- export interface GridLinesProps extends BaseToolProps {
2
+ import { SpreadsheetToolProps } from './utils';
3
+ export interface GridLinesProps extends SpreadsheetToolProps {
4
4
  value?: boolean;
5
5
  }
6
6
  export declare const GridLines: React.FunctionComponent<GridLinesProps>;
@@ -20,7 +20,7 @@ const GridLines = props => {
20
20
  }
21
21
  }
22
22
  }, []);
23
- return (React.createElement(kendo_react_buttons_1.Button, { type: 'button', togglable: true, icon: 'borders-none', svgIcon: kendo_svg_icons_1.bordersNoneIcon, title: (0, kendo_react_intl_1.useLocalization)().toLanguageString(messages_1.keys.gridLines, messages_1.messages[messages_1.keys.gridLines]), onClick: onClick, selected: selected }));
23
+ return (React.createElement(kendo_react_buttons_1.Button, { type: 'button', togglable: true, icon: 'borders-none', svgIcon: kendo_svg_icons_1.bordersNoneIcon, fillMode: "flat", title: (0, kendo_react_intl_1.useLocalization)().toLanguageString(messages_1.keys.gridLines, messages_1.messages[messages_1.keys.gridLines]), onClick: onClick, selected: selected }));
24
24
  };
25
25
  exports.GridLines = GridLines;
26
26
  exports.GridLines.displayName = 'GridLines';
@@ -15,3 +15,4 @@ export * from './textColor';
15
15
  export * from './textWrap';
16
16
  export * from './underline';
17
17
  export * from './undo';
18
+ export { SpreadsheetToolProps } from './utils';
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { BaseToolProps } from './utils';
3
- export interface OpenProps extends BaseToolProps {
2
+ import { SpreadsheetToolProps } from './utils';
3
+ export interface OpenProps extends SpreadsheetToolProps {
4
4
  }
5
5
  export declare const Open: React.FunctionComponent<OpenProps>;
@@ -29,7 +29,7 @@ const Open = props => {
29
29
  }
30
30
  }, []);
31
31
  return (React.createElement(React.Fragment, null,
32
- React.createElement(kendo_react_buttons_1.Button, { className: 'k-toolbar-button', title: (0, kendo_react_intl_1.useLocalization)().toLanguageString(messages_1.keys.open, messages_1.messages[messages_1.keys.open]), icon: 'folder-open', svgIcon: kendo_svg_icons_1.folderOpenIcon, onClick: onFileOpen }),
32
+ React.createElement(kendo_react_buttons_1.Button, { className: 'k-toolbar-button', title: (0, kendo_react_intl_1.useLocalization)().toLanguageString(messages_1.keys.open, messages_1.messages[messages_1.keys.open]), icon: 'folder-open', svgIcon: kendo_svg_icons_1.folderOpenIcon, fillMode: "flat", onClick: onFileOpen }),
33
33
  React.createElement("div", { style: { display: 'none' } },
34
34
  React.createElement(kendo_react_upload_1.Upload, { restrictions: { allowedExtensions: ['.xlsx'] }, onAdd: onAdd, autoUpload: false, defaultFiles: [], multiple: false, accept: ".xlsx,.XLSX", withCredentials: false }))));
35
35
  };
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react" />
2
- import { BaseToolProps } from './utils';
3
- export interface RedoProps extends BaseToolProps {
2
+ import { SpreadsheetToolProps } from './utils';
3
+ export interface RedoProps extends SpreadsheetToolProps {
4
4
  }
5
5
  export declare const Redo: React.FunctionComponent<RedoProps>;
@@ -4,5 +4,6 @@ exports.Redo = void 0;
4
4
  const kendo_svg_icons_1 = require("@progress/kendo-svg-icons");
5
5
  const utils_1 = require("./utils");
6
6
  const messages_1 = require("../messages");
7
- exports.Redo = (0, utils_1.UndoRedo)({ action: 'redo', icon: 'redo', svgIcon: kendo_svg_icons_1.redoIcon, titleKey: messages_1.keys.redo });
7
+ const redoSettings = { action: 'redo', icon: 'reload', svgIcon: kendo_svg_icons_1.arrowRotateCwIcon, titleKey: messages_1.keys.redo };
8
+ exports.Redo = (0, utils_1.UndoRedo)(redoSettings);
8
9
  exports.Redo.displayName = 'Redo';