Skip to content

Commit 77c77fe

Browse files
committed
- add tabindex in root element to make it possible to capture key
events. - check some events for event source.
1 parent f5058a8 commit 77c77fe

File tree

8 files changed

+41
-10
lines changed

8 files changed

+41
-10
lines changed

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
# Change Logs
22

3+
## v0.0.5
4+
5+
- add `tabindex` in root element to make it possible to capture key events.
6+
- check some events for event source.
7+
8+
39
## v0.0.4
410

511
- tweak fixed cell style

dist/index.js

Lines changed: 12 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/index.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package-lock.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"name": "@plotdb/sheet",
44
"license": "MIT",
55
"description": "spreadsheet",
6-
"version": "0.0.4",
6+
"version": "0.0.5",
77
"main": "dist/index.js",
88
"homepage": "https://github.com/plotdb/sheet",
99
"files": [

src/index.ls

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ sheet = (opt={}) ->
4848
n = document.createElement(\div)
4949
..classList.add it
5050
[it, n]
51+
@dom.sheet.setAttribute \tabindex, -1
5152
@dom.textarea = document.createElement \textarea
5253
@root.appendChild(@dom.sheet)
5354
<[inner caret range edit layout]>.map ~> @dom.sheet.appendChild @dom[it]
@@ -81,13 +82,15 @@ sheet.prototype = Object.create(Object.prototype) <<< do
8182
@edit {node: p, quick: false}
8283

8384
document.body.addEventListener \paste, (e) ~>
85+
# TODO we need to find some way to ensure sheet gets users' focus before handling paste event
8486
if !@les.start => return
8587
data = e.clipboardData.getData('text')
8688
data = parse-csv data
8789
for r from 0 til data.length => for c from 0 til data[r].length =>
8890
@set {row: r + @les.start.row, col: c + @les.start.col, data: data[r][c]}
8991

90-
document.body.addEventListener \keydown, (e) ~>
92+
dom.addEventListener \keydown, (e) ~>
93+
if !@event-in-scope(e) => return
9194
code = e.keyCode
9295
if code == 8 =>
9396
if !@les.node => return
@@ -111,7 +114,7 @@ sheet.prototype = Object.create(Object.prototype) <<< do
111114
e.stopPropagation!
112115
e.preventDefault!
113116

114-
document.body.addEventListener \keypress, (e) ~>
117+
dom.addEventListener \keypress, (e) ~>
115118
if @les.node and !@editing.on => @edit node: @les.node, quick: (if e.keyCode == 13 => false else true)
116119

117120
@dom.textarea.addEventListener \keydown, (e) ~>
@@ -130,6 +133,7 @@ sheet.prototype = Object.create(Object.prototype) <<< do
130133
height: "#{Math.max(lbox.height, box.height + 1)}px"
131134

132135
document.body.addEventListener \wheel, ((e) ~>
136+
if !@event-in-scope(e) => return
133137
spos = @scroll-pos
134138
[dx, dy] = [e.deltaX, e.deltaY]
135139
[dx, dy] = if Math.abs(dx) > Math.abs(dy) => [dx, 0] else [0, dy]
@@ -147,6 +151,7 @@ sheet.prototype = Object.create(Object.prototype) <<< do
147151
), {passive: false}
148152

149153

154+
event-in-scope: (e) -> (parent e.target, '.sheet', @dom.sheet) == @dom.sheet
150155
regrid: ->
151156
@dom.inner.style.gridTemplateColumns = "repeat(#{@dim.col}, max-content)"
152157

web/static/assets/lib/@plotdb/sheet/dev/index.js

Lines changed: 12 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)