You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
2.3 KiB
63 lines
2.3 KiB
"use strict"; |
|
|
|
Object.defineProperty(exports, "__esModule", { |
|
value: true |
|
}); |
|
exports.keydownBehavior = void 0; |
|
|
|
var _utils = require("../../utils"); |
|
|
|
var _shared = require("../shared"); |
|
|
|
/** |
|
* This file should contain behavior for arrow keys as described here: |
|
* https://w3c.github.io/uievents-code/#key-controlpad-section |
|
*/ |
|
const keydownBehavior = [{ |
|
matches: (keyDef, element) => (keyDef.key === 'Home' || keyDef.key === 'End') && ((0, _utils.isElementType)(element, ['input', 'textarea']) || (0, _utils.isContentEditable)(element)), |
|
handle: (keyDef, element) => { |
|
// This could probably been improved by collapsing a selection range |
|
if (keyDef.key === 'Home') { |
|
(0, _utils.setSelectionRange)(element, 0, 0); |
|
} else { |
|
var _getValue$length, _getValue; |
|
|
|
const newPos = (_getValue$length = (_getValue = (0, _utils.getValue)(element)) == null ? void 0 : _getValue.length) != null ? _getValue$length : |
|
/* istanbul ignore next */ |
|
0; |
|
(0, _utils.setSelectionRange)(element, newPos, newPos); |
|
} |
|
} |
|
}, { |
|
matches: (keyDef, element) => (keyDef.key === 'PageUp' || keyDef.key === 'PageDown') && (0, _utils.isElementType)(element, ['input']), |
|
handle: (keyDef, element) => { |
|
// This could probably been improved by collapsing a selection range |
|
if (keyDef.key === 'PageUp') { |
|
(0, _utils.setSelectionRange)(element, 0, 0); |
|
} else { |
|
var _getValue$length2, _getValue2; |
|
|
|
const newPos = (_getValue$length2 = (_getValue2 = (0, _utils.getValue)(element)) == null ? void 0 : _getValue2.length) != null ? _getValue$length2 : |
|
/* istanbul ignore next */ |
|
0; |
|
(0, _utils.setSelectionRange)(element, newPos, newPos); |
|
} |
|
} |
|
}, { |
|
matches: (keyDef, element) => keyDef.key === 'Delete' && (0, _utils.isEditable)(element) && !(0, _utils.isCursorAtEnd)(element), |
|
handle: (keDef, element, options, state) => { |
|
const { |
|
newValue, |
|
newSelectionStart |
|
} = (0, _utils.calculateNewValue)('', element, state.carryValue, undefined, 'forward'); |
|
(0, _shared.fireInputEvent)(element, { |
|
newValue, |
|
newSelectionStart, |
|
eventOverrides: { |
|
inputType: 'deleteContentForward' |
|
} |
|
}); |
|
(0, _shared.carryValue)(element, state, newValue); |
|
} |
|
}]; |
|
exports.keydownBehavior = keydownBehavior; |