Ports from v3
parent
56933ea3d5
commit
970ba75b06
|
@ -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: '' };
|
||||||
|
|
|
@ -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();
|
||||||
|
|
|
@ -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();
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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());
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue