Fixed #4850 - PickList OrderList | Keyboard Support Enhancements

pull/4858/head
Yiğit FINDIKLI 2023-11-20 15:10:15 +03:00
parent 20a818b403
commit a5a4f6230c
2 changed files with 32 additions and 2 deletions

View File

@ -187,6 +187,8 @@ export default {
if (event.ctrlKey) { if (event.ctrlKey) {
this.d_selection = [...this.modelValue]; this.d_selection = [...this.modelValue];
this.$emit('update:selection', this.d_selection); this.$emit('update:selection', this.d_selection);
event.preventDefault();
} }
default: default:
@ -227,6 +229,10 @@ export default {
this.d_selection = [...this.modelValue].slice(0, matchedOptionIndex + 1); this.d_selection = [...this.modelValue].slice(0, matchedOptionIndex + 1);
this.$emit('update:selection', this.d_selection); this.$emit('update:selection', this.d_selection);
this.$emit('selection-change', {
originalEvent: event,
value: this.d_selection
});
} else { } else {
this.changeFocusedOptionIndex(0); this.changeFocusedOptionIndex(0);
} }
@ -241,6 +247,10 @@ export default {
this.d_selection = [...this.modelValue].slice(matchedOptionIndex, items.length); this.d_selection = [...this.modelValue].slice(matchedOptionIndex, items.length);
this.$emit('update:selection', this.d_selection); this.$emit('update:selection', this.d_selection);
this.$emit('selection-change', {
originalEvent: event,
value: this.d_selection
});
} else { } else {
this.changeFocusedOptionIndex(DomHandler.find(this.list, '[data-pc-section="item"]').length - 1); this.changeFocusedOptionIndex(DomHandler.find(this.list, '[data-pc-section="item"]').length - 1);
} }
@ -257,7 +267,9 @@ export default {
event.preventDefault(); event.preventDefault();
}, },
onSpaceKey(event) { onSpaceKey(event) {
if (event.shiftKey) { event.preventDefault();
if (event.shiftKey && this.d_selection && this.d_selection.length > 0) {
const items = DomHandler.find(this.list, '[data-pc-section="item"]'); const items = DomHandler.find(this.list, '[data-pc-section="item"]');
const selectedItemIndex = ObjectUtils.findIndexInList(this.d_selection[0], [...this.modelValue]); const selectedItemIndex = ObjectUtils.findIndexInList(this.d_selection[0], [...this.modelValue]);
const focusedItem = DomHandler.findSingle(this.list, `[data-pc-section="item"][id=${this.focusedOptionIndex}]`); const focusedItem = DomHandler.findSingle(this.list, `[data-pc-section="item"][id=${this.focusedOptionIndex}]`);
@ -265,6 +277,10 @@ export default {
this.d_selection = [...this.modelValue].slice(Math.min(selectedItemIndex, matchedOptionIndex), Math.max(selectedItemIndex, matchedOptionIndex) + 1); this.d_selection = [...this.modelValue].slice(Math.min(selectedItemIndex, matchedOptionIndex), Math.max(selectedItemIndex, matchedOptionIndex) + 1);
this.$emit('update:selection', this.d_selection); this.$emit('update:selection', this.d_selection);
this.$emit('selection-change', {
originalEvent: event,
value: this.d_selection
});
} else { } else {
this.onEnterKey(event); this.onEnterKey(event);
} }

View File

@ -617,6 +617,8 @@ export default {
if (event.ctrlKey) { if (event.ctrlKey) {
this.d_selection = [...this.modelValue]; this.d_selection = [...this.modelValue];
this.$emit('update:selection', this.d_selection); this.$emit('update:selection', this.d_selection);
event.preventDefault();
} }
default: default:
@ -658,7 +660,7 @@ export default {
onSpaceKey(event, listType) { onSpaceKey(event, listType) {
event.preventDefault(); event.preventDefault();
if (event.shiftKey) { if (event.shiftKey && this.d_selection && this.d_selection.length > 0) {
const listId = listType === 'sourceList' ? 0 : 1; const listId = listType === 'sourceList' ? 0 : 1;
const items = DomHandler.find(this.$refs[listType].$el, '[data-pc-section="item"]'); const items = DomHandler.find(this.$refs[listType].$el, '[data-pc-section="item"]');
const selectedItemIndex = ObjectUtils.findIndexInList(this.d_selection[listId][0], [...this.modelValue[listId]]); const selectedItemIndex = ObjectUtils.findIndexInList(this.d_selection[listId][0], [...this.modelValue[listId]]);
@ -667,6 +669,10 @@ export default {
this.d_selection[listId] = [...this.modelValue[listId]].slice(Math.min(selectedItemIndex, matchedOptionIndex), Math.max(selectedItemIndex, matchedOptionIndex) + 1); this.d_selection[listId] = [...this.modelValue[listId]].slice(Math.min(selectedItemIndex, matchedOptionIndex), Math.max(selectedItemIndex, matchedOptionIndex) + 1);
this.$emit('update:selection', this.d_selection); this.$emit('update:selection', this.d_selection);
this.$emit('selection-change', {
originalEvent: event,
value: this.d_selection
});
} else { } else {
this.onEnterKey(event, listType); this.onEnterKey(event, listType);
} }
@ -680,6 +686,10 @@ export default {
this.d_selection[listId] = [...this.modelValue[listId]].slice(0, matchedOptionIndex + 1); this.d_selection[listId] = [...this.modelValue[listId]].slice(0, matchedOptionIndex + 1);
this.$emit('update:selection', this.d_selection); this.$emit('update:selection', this.d_selection);
this.$emit('selection-change', {
originalEvent: event,
value: this.d_selection
});
} else { } else {
this.changeFocusedOptionIndex(0, listType); this.changeFocusedOptionIndex(0, listType);
} }
@ -696,6 +706,10 @@ export default {
this.d_selection[listId] = [...this.modelValue[listId]].slice(matchedOptionIndex, items.length); this.d_selection[listId] = [...this.modelValue[listId]].slice(matchedOptionIndex, items.length);
this.$emit('update:selection', this.d_selection); this.$emit('update:selection', this.d_selection);
this.$emit('selection-change', {
originalEvent: event,
value: this.d_selection
});
} else { } else {
this.changeFocusedOptionIndex(items.length - 1, listType); this.changeFocusedOptionIndex(items.length - 1, listType);
} }