mirror of
https://github.com/mayswind/ezbookkeeping.git
synced 2026-05-18 16:54:25 +08:00
code refactor
This commit is contained in:
@@ -42,7 +42,7 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { copyArrayTo } from '@/lib/common.js';
|
import { copyArrayTo } from '@/lib/common.js';
|
||||||
import { elements } from '@/lib/ui.mobile.js';
|
import { scrollToSelectedItem } from '@/lib/ui.mobile.js';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
props: [
|
props: [
|
||||||
@@ -82,7 +82,7 @@ export default {
|
|||||||
},
|
},
|
||||||
onSheetOpen(event) {
|
onSheetOpen(event) {
|
||||||
this.selectedItemIds = copyArrayTo(this.modelValue, []);
|
this.selectedItemIds = copyArrayTo(this.modelValue, []);
|
||||||
this.scrollToSelectedItem(event.$el);
|
scrollToSelectedItem(event.$el, '.page-content', 'li.list-item-selected');
|
||||||
},
|
},
|
||||||
onSheetClosed() {
|
onSheetClosed() {
|
||||||
this.$emit('update:show', false);
|
this.$emit('update:show', false);
|
||||||
@@ -107,43 +107,6 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
scrollToSelectedItem(parent) {
|
|
||||||
if (!parent || !parent.length) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const container = parent.find('.page-content');
|
|
||||||
const selectedItem = parent.find('li.list-item-selected');
|
|
||||||
|
|
||||||
if (!container.length || !selectedItem.length) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
let firstSelectedItem = selectedItem;
|
|
||||||
let lastSelectedItem = selectedItem;
|
|
||||||
|
|
||||||
if (selectedItem.length > 0) {
|
|
||||||
firstSelectedItem = elements(selectedItem[0]);
|
|
||||||
lastSelectedItem = elements(selectedItem[selectedItem.length - 1]);
|
|
||||||
}
|
|
||||||
|
|
||||||
let firstSelectedItemInTop = firstSelectedItem.offset().top - container.offset().top - parseInt(container.css('padding-top'), 10);
|
|
||||||
let lastSelectedItemInTop = lastSelectedItem.offset().top - container.offset().top - parseInt(container.css('padding-top'), 10);
|
|
||||||
let lastSelectedItemInBottom = lastSelectedItem.offset().top - container.offset().top - parseInt(container.css('padding-top'), 10)
|
|
||||||
- (container.outerHeight() - firstSelectedItem.outerHeight());
|
|
||||||
|
|
||||||
let targetPos = (firstSelectedItemInTop + lastSelectedItemInBottom) / 2;
|
|
||||||
|
|
||||||
if (lastSelectedItemInTop - firstSelectedItemInTop > container.outerHeight()) {
|
|
||||||
targetPos = firstSelectedItemInTop;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (targetPos <= 0) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
container.scrollTop(targetPos);
|
|
||||||
},
|
|
||||||
isChecked(itemId) {
|
isChecked(itemId) {
|
||||||
for (let i = 0; i < this.selectedItemIds.length; i++) {
|
for (let i = 0; i < this.selectedItemIds.length; i++) {
|
||||||
if (this.selectedItemIds[i] === itemId) {
|
if (this.selectedItemIds[i] === itemId) {
|
||||||
|
|||||||
@@ -167,6 +167,22 @@ export function scrollToSelectedItem(parentEl, containerSelector, selectedItemSe
|
|||||||
let targetPos = selectedItem.offset().top - container.offset().top - parseInt(container.css('padding-top'), 10)
|
let targetPos = selectedItem.offset().top - container.offset().top - parseInt(container.css('padding-top'), 10)
|
||||||
- (container.outerHeight() - selectedItem.outerHeight()) / 2;
|
- (container.outerHeight() - selectedItem.outerHeight()) / 2;
|
||||||
|
|
||||||
|
if (selectedItem.length > 1) {
|
||||||
|
let firstSelectedItem = elements(selectedItem[0]);
|
||||||
|
let lastSelectedItem = elements(selectedItem[selectedItem.length - 1]);
|
||||||
|
|
||||||
|
let firstSelectedItemInTop = firstSelectedItem.offset().top - container.offset().top - parseInt(container.css('padding-top'), 10);
|
||||||
|
let lastSelectedItemInTop = lastSelectedItem.offset().top - container.offset().top - parseInt(container.css('padding-top'), 10);
|
||||||
|
let lastSelectedItemInBottom = lastSelectedItem.offset().top - container.offset().top - parseInt(container.css('padding-top'), 10)
|
||||||
|
- (container.outerHeight() - firstSelectedItem.outerHeight());
|
||||||
|
|
||||||
|
targetPos = (firstSelectedItemInTop + lastSelectedItemInBottom) / 2;
|
||||||
|
|
||||||
|
if (lastSelectedItemInTop - firstSelectedItemInTop > container.outerHeight()) {
|
||||||
|
targetPos = firstSelectedItemInTop;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (targetPos <= 0) {
|
if (targetPos <= 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user