Skip to content

Commit 2375207

Browse files
author
Kenneth Cheng
committed
Fixed sticky and auto-fill-width
1 parent 357c1be commit 2375207

File tree

4 files changed

+32
-16
lines changed

4 files changed

+32
-16
lines changed

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
@@ -2,7 +2,7 @@
22
"name": "vue3-excel-editor",
33
"email": "apple.6502@gmail.com",
44
"description": "Vue3 plugin for displaying and editing the array-of-object in Excel style",
5-
"version": "1.0.56",
5+
"version": "1.0.59",
66
"main": "src/main.js",
77
"dependencies": {
88
"@vuepic/vue-datepicker": "^3.3.0",

src/VueExcelColumn.vue

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,7 @@ export default {
247247
label: this.label === null ? this.field : this.label,
248248
type: this.type,
249249
width: this.width,
250+
origWidth: this.width,
250251
autoFillWidth: this.autoFillWidth,
251252
252253
validate: validate,

src/VueExcelEditor.vue

Lines changed: 29 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@
117117
grouping: item.grouping,
118118
expand: item.grouping && ungroup[item.name + record[item.name]],
119119
datepick: item.type == 'date',
120-
stickyColumn: item.sticky,
120+
'sticky-column': item.sticky,
121121
hideDuplicate: item.hideDuplicate && rowPos > 0 && isSameSinceLeft(p, record, pagingTable[rowPos-1]),
122122
}"
123123
:key="p"
@@ -587,13 +587,14 @@ export default defineComponent({
587587
this.$emit('page-changed', this.pageTop, this.pageTop + newVal - 1)
588588
}
589589
},
590+
activated () {
591+
this.addEventListener()
592+
},
593+
deactivated () {
594+
this.removeEventListener()
595+
},
590596
beforeUnmount () {
591-
window.removeEventListener('resize', this.winResize)
592-
window.removeEventListener('paste', this.winPaste)
593-
window.removeEventListener('keydown', this.winKeydown)
594-
window.removeEventListener('keyup', this.winKeyup)
595-
window.removeEventListener('scroll', this.winScroll)
596-
window.removeEventListener('wheel', this.mousewheel)
597+
this.removeEventListener()
597598
},
598599
mounted () {
599600
this.editor = this.$refs.editor
@@ -621,12 +622,7 @@ export default defineComponent({
621622
}, 200)
622623
623624
if (ResizeObserver) new ResizeObserver(this.winResize).observe(this.editor)
624-
window.addEventListener('resize', this.winResize)
625-
window.addEventListener('paste', this.winPaste)
626-
window.addEventListener('keydown', this.winKeydown)
627-
window.addEventListener('keyup', this.winKeyup)
628-
window.addEventListener('scroll', this.winScroll)
629-
window.addEventListener('wheel', this.mousewheel, {passive: false})
625+
this.addEventListener()
630626
631627
if (this.remember) {
632628
const saved = localStorage[window.location.pathname + window.location.hash + '.' + this.token]
@@ -638,6 +634,22 @@ export default defineComponent({
638634
}
639635
},
640636
methods: {
637+
addEventListener () {
638+
window.addEventListener('resize', this.winResize)
639+
window.addEventListener('paste', this.winPaste)
640+
window.addEventListener('keydown', this.winKeydown)
641+
window.addEventListener('keyup', this.winKeyup)
642+
window.addEventListener('scroll', this.winScroll)
643+
window.addEventListener('wheel', this.mousewheel, {passive: false})
644+
},
645+
removeEventListener () {
646+
window.removeEventListener('resize', this.winResize)
647+
window.removeEventListener('paste', this.winPaste)
648+
window.removeEventListener('keydown', this.winKeydown)
649+
window.removeEventListener('keyup', this.winKeyup)
650+
window.removeEventListener('scroll', this.winScroll)
651+
window.removeEventListener('wheel', this.mousewheel)
652+
},
641653
isSameSinceLeft(p, rec1, rec2) {
642654
for(let i=0; i<=p; i++) {
643655
if (!this.fields[i].invisible && this.fields[i].hideDuplicate) {
@@ -1110,7 +1122,10 @@ export default defineComponent({
11101122
if (this.vScroller.buttonHeight < this.vScroller.height) fullWidth -= 13
11111123
const fillWidth = viewWidth - fullWidth + 2
11121124
if (Math.abs(fillWidth) > 1)
1113-
doFields.forEach(f => f.width = (parseFloat(f.width) - fillWidth / count) + 'px')
1125+
doFields.forEach(f => {
1126+
const w = parseFloat(f.width) - fillWidth / count
1127+
f.width = (w > parseFloat(f.origWidth) ? w : parseFloat(f.origWidth)) + 'px'
1128+
})
11141129
})
11151130
},
11161131

0 commit comments

Comments
 (0)