diff --git a/README.md b/README.md index d89c694..21eeba1 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,13 @@ # Modern Spreadsheet +## Features: - High performance spreadsheet based on CanvasAPI. - TypeScript supported +- Native scrolling +- Customizable +- Copy & Paste support -## Basic usage +### Basic usage ```ts import Spreadsheet from "modern_spreadsheet"; @@ -14,7 +18,7 @@ const sheet = new Spreadsheet(target); //... ``` -## Save and load data +### Save and load data ```ts function saveData() { @@ -30,7 +34,7 @@ function loadData() { } ``` -## Supported events +#### Supported events - onCellClick - onSelectionChange - onCellChange @@ -58,7 +62,7 @@ const options: SpreadsheetConstructorProperties = { const sheet = new Spreadsheet("#spreadsheet", options); ``` -## Roadmap +### Roadmap - ~~Rows number and columns heading render~~ - ~~Custom event functions (ex.: onSelectionChange, onCellEdit...). Full list of supported events will available on this page~~ diff --git a/repo_assets/spreadsheet_preview.png b/repo_assets/spreadsheet_preview.png new file mode 100644 index 0000000..9024576 Binary files /dev/null and b/repo_assets/spreadsheet_preview.png differ diff --git a/src/components/columnsBar.ts b/src/components/columnsBar.ts index 0bb2500..57066f9 100644 --- a/src/components/columnsBar.ts +++ b/src/components/columnsBar.ts @@ -83,7 +83,7 @@ export class ColumnsBar { const isColSelected = this.isColumnSelected(column); this.ctx.fillStyle = isColSelected - ? this.root.styles.cells.selectedBackground + ? "#c7ebff" : "white"; this.ctx.strokeStyle = "black"; this.ctx.lineWidth = 1; diff --git a/src/components/rowsBar.ts b/src/components/rowsBar.ts index 7844263..73f0ec9 100644 --- a/src/components/rowsBar.ts +++ b/src/components/rowsBar.ts @@ -70,7 +70,7 @@ export class RowsBar { const isRowSeleted = this.isRowSelected(column); this.ctx.fillStyle = isRowSeleted - ? this.root.styles.cells.selectedBackground + ? "#c7ebff" : "white"; this.ctx.strokeStyle = "black"; this.ctx.lineWidth = this.resizerHeight; diff --git a/src/components/sheet.ts b/src/components/sheet.ts index 47e9d1e..61a69aa 100644 --- a/src/components/sheet.ts +++ b/src/components/sheet.ts @@ -81,7 +81,10 @@ export class Sheet { return { x, y, height, width } } if (!selectedRange && selectedCell) { - return new RenderBox(this.root.config, selectedCell) + const box = new RenderBox(this.root.config, selectedCell) + box.x -= this.root.viewport.left + box.y -= this.root.viewport.top + return box } } diff --git a/src/index.ts b/src/index.ts index 8d7f10a..86f7811 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,4 +1,4 @@ -import Spreadsheet, { SpreadsheetConstructorProperties } from "./main"; +import Spreadsheet, { SpreadsheetConstructorProperties, createSampleData } from "./main"; const options: SpreadsheetConstructorProperties = { onCellClick: (event, cell) => { @@ -17,6 +17,9 @@ const options: SpreadsheetConstructorProperties = { const sheet = new Spreadsheet("#spreadsheet", options); +const data = createSampleData(600, 800, true) +sheet.loadData(data) + function saveDataToLS() { const serializableData = sheet.serializeData(); localStorage.setItem("sheet", JSON.stringify(serializableData));