mirror of
https://github.com/mayswind/ezbookkeeping.git
synced 2026-05-14 06:57:35 +08:00
code refactor
This commit is contained in:
@@ -42,7 +42,7 @@
|
||||
|
||||
<script>
|
||||
import { copyArrayTo } from '@/lib/common.js';
|
||||
import { elements } from '@/lib/ui.mobile.js';
|
||||
import { scrollToSelectedItem } from '@/lib/ui.mobile.js';
|
||||
|
||||
export default {
|
||||
props: [
|
||||
@@ -82,7 +82,7 @@ export default {
|
||||
},
|
||||
onSheetOpen(event) {
|
||||
this.selectedItemIds = copyArrayTo(this.modelValue, []);
|
||||
this.scrollToSelectedItem(event.$el);
|
||||
scrollToSelectedItem(event.$el, '.page-content', 'li.list-item-selected');
|
||||
},
|
||||
onSheetClosed() {
|
||||
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) {
|
||||
for (let i = 0; i < this.selectedItemIds.length; i++) {
|
||||
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)
|
||||
- (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) {
|
||||
return;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user