Ports from v3

pull/5868/head
tugcekucukoglu 2024-06-07 11:05:42 +03:00
parent 56933ea3d5
commit 970ba75b06
5 changed files with 51 additions and 39 deletions

View File

@ -44,7 +44,7 @@ export default {
name: 'ContextMenu', name: 'ContextMenu',
extends: BaseContextMenu, extends: BaseContextMenu,
inheritAttrs: false, inheritAttrs: false,
emits: ['focus', 'blur', 'show', 'hide'], emits: ['focus', 'blur', 'show', 'hide', 'before-show', 'before-hide'],
target: null, target: null,
outsideClickListener: null, outsideClickListener: null,
resizeListener: null, resizeListener: null,
@ -125,6 +125,7 @@ export default {
this.visible ? this.hide() : this.show(event); this.visible ? this.hide() : this.show(event);
}, },
show(event) { show(event) {
this.$emit('before-show');
this.activeItemPath = []; this.activeItemPath = [];
this.focusedItemInfo = { index: -1, level: 0, parentKey: '' }; this.focusedItemInfo = { index: -1, level: 0, parentKey: '' };
DomHandler.focus(this.list); DomHandler.focus(this.list);
@ -137,6 +138,7 @@ export default {
event.preventDefault(); event.preventDefault();
}, },
hide() { hide() {
this.$emit('before-hide');
this.visible = false; this.visible = false;
this.activeItemPath = []; this.activeItemPath = [];
this.focusedItemInfo = { index: -1, level: 0, parentKey: '' }; this.focusedItemInfo = { index: -1, level: 0, parentKey: '' };

View File

@ -477,8 +477,14 @@ export default {
}, },
onHomeKey(event, pressedInInputText = false) { onHomeKey(event, pressedInInputText = false) {
if (pressedInInputText) { if (pressedInInputText) {
event.currentTarget.setSelectionRange(0, 0); const target = event.currentTarget;
this.focusedOptionIndex = -1;
if (event.shiftKey) {
target.setSelectionRange(0, event.target.selectionStart);
} else {
target.setSelectionRange(0, 0);
this.focusedOptionIndex = -1;
}
} else { } else {
let metaKey = event.metaKey || event.ctrlKey; let metaKey = event.metaKey || event.ctrlKey;
let optionIndex = this.findFirstOptionIndex(); let optionIndex = this.findFirstOptionIndex();
@ -495,10 +501,15 @@ export default {
onEndKey(event, pressedInInputText = false) { onEndKey(event, pressedInInputText = false) {
if (pressedInInputText) { if (pressedInInputText) {
const target = event.currentTarget; const target = event.currentTarget;
const len = target.value.length;
target.setSelectionRange(len, len); if (event.shiftKey) {
this.focusedOptionIndex = -1; target.setSelectionRange(event.target.selectionStart, target.value.length);
} else {
const len = target.value.length;
target.setSelectionRange(len, len);
this.focusedOptionIndex = -1;
}
} else { } else {
let metaKey = event.metaKey || event.ctrlKey; let metaKey = event.metaKey || event.ctrlKey;
let optionIndex = this.findLastOptionIndex(); let optionIndex = this.findLastOptionIndex();

View File

@ -610,13 +610,15 @@ export default {
pressedInInputText && (this.focusedOptionIndex = -1); pressedInInputText && (this.focusedOptionIndex = -1);
}, },
onHomeKey(event, pressedInInputText = false) { onHomeKey(event, pressedInInputText = false) {
const { currentTarget } = event;
if (pressedInInputText) { if (pressedInInputText) {
const len = currentTarget.value.length; const target = event.currentTarget;
currentTarget.setSelectionRange(0, event.shiftKey ? len : 0); if (event.shiftKey) {
this.focusedOptionIndex = -1; target.setSelectionRange(0, event.target.selectionStart);
} else {
target.setSelectionRange(0, 0);
this.focusedOptionIndex = -1;
}
} else { } else {
let metaKey = event.metaKey || event.ctrlKey; let metaKey = event.metaKey || event.ctrlKey;
let optionIndex = this.findFirstOptionIndex(); let optionIndex = this.findFirstOptionIndex();
@ -633,13 +635,17 @@ export default {
event.preventDefault(); event.preventDefault();
}, },
onEndKey(event, pressedInInputText = false) { onEndKey(event, pressedInInputText = false) {
const { currentTarget } = event;
if (pressedInInputText) { if (pressedInInputText) {
const len = currentTarget.value.length; const target = event.currentTarget;
currentTarget.setSelectionRange(event.shiftKey ? 0 : len, len); if (event.shiftKey) {
this.focusedOptionIndex = -1; target.setSelectionRange(event.target.selectionStart, target.value.length);
} else {
const len = target.value.length;
target.setSelectionRange(len, len);
this.focusedOptionIndex = -1;
}
} else { } else {
let metaKey = event.metaKey || event.ctrlKey; let metaKey = event.metaKey || event.ctrlKey;
let optionIndex = this.findLastOptionIndex(); let optionIndex = this.findLastOptionIndex();

View File

@ -90,15 +90,6 @@ describe('clear checks', () => {
expect(wrapper.find('.p-select-clear-icon').classes()).toContain('pi-discord'); expect(wrapper.find('.p-select-clear-icon').classes()).toContain('pi-discord');
}); });
it('should clear with delete key', async () => {
const updateModelSpy = vi.spyOn(wrapper.vm, 'updateModel');
await wrapper.find('.p-select-label.p-inputtext').trigger('keydown', { code: 'Delete' });
expect(updateModelSpy).toHaveBeenCalledOnce();
expect(updateModelSpy).toHaveBeenCalledWith(expect.any(KeyboardEvent), null);
});
});
describe('editable checks', () => { describe('editable checks', () => {
let wrapper; let wrapper;

View File

@ -376,9 +376,6 @@ export default {
this.onArrowLeftKey(event, this.editable); this.onArrowLeftKey(event, this.editable);
break; break;
case 'Delete':
this.onDeleteKey(event);
case 'Home': case 'Home':
this.onHomeKey(event, this.editable); this.onHomeKey(event, this.editable);
break; break;
@ -555,12 +552,6 @@ export default {
break; break;
} }
}, },
onDeleteKey(event) {
if (this.showClear) {
this.updateModel(event, null);
event.preventDefault();
}
},
onArrowDownKey(event) { onArrowDownKey(event) {
if (!this.overlayVisible) { if (!this.overlayVisible) {
this.show(); this.show();
@ -595,8 +586,14 @@ export default {
}, },
onHomeKey(event, pressedInInputText = false) { onHomeKey(event, pressedInInputText = false) {
if (pressedInInputText) { if (pressedInInputText) {
event.currentTarget.setSelectionRange(0, 0); const target = event.currentTarget;
this.focusedOptionIndex = -1;
if (event.shiftKey) {
target.setSelectionRange(0, event.target.selectionStart);
} else {
target.setSelectionRange(0, 0);
this.focusedOptionIndex = -1;
}
} else { } else {
this.changeFocusedOptionIndex(event, this.findFirstOptionIndex()); this.changeFocusedOptionIndex(event, this.findFirstOptionIndex());
@ -608,10 +605,15 @@ export default {
onEndKey(event, pressedInInputText = false) { onEndKey(event, pressedInInputText = false) {
if (pressedInInputText) { if (pressedInInputText) {
const target = event.currentTarget; const target = event.currentTarget;
const len = target.value.length;
target.setSelectionRange(len, len); if (event.shiftKey) {
this.focusedOptionIndex = -1; target.setSelectionRange(event.target.selectionStart, target.value.length);
} else {
const len = target.value.length;
target.setSelectionRange(len, len);
this.focusedOptionIndex = -1;
}
} else { } else {
this.changeFocusedOptionIndex(event, this.findLastOptionIndex()); this.changeFocusedOptionIndex(event, this.findLastOptionIndex());