UNPKG

@clr/angular

Version:

Angular components for Clarity

44 lines 6.01 kB
/* * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved. * This software is released under MIT license. * The full license information can be found in LICENSE in the root directory of this project. */ import { IEKeys, Keys } from '../../enums/keys.enum'; export function normalizeKey(key) { if (key === Keys.ArrowUp || key === IEKeys.ArrowUp) { return Keys.ArrowUp; } else if (key === Keys.ArrowDown || key === IEKeys.ArrowDown) { return Keys.ArrowDown; } else if (key === Keys.ArrowRight || key === IEKeys.ArrowRight) { return Keys.ArrowRight; } else if (key === Keys.ArrowLeft || key === IEKeys.ArrowLeft) { return Keys.ArrowLeft; } else if (key === Keys.Space || key === IEKeys.Space) { return Keys.Space; } else if (key === Keys.Escape || key === IEKeys.Escape) { return Keys.Escape; } else { return key; } } export function preventArrowKeyScroll(event) { const key = normalizeKey(event.key); if (key === Keys.ArrowUp || key === Keys.ArrowDown || key === Keys.ArrowLeft || key === Keys.ArrowRight) { // prevent element container scroll // MDN references this is really the only way to prevent native browser interactions // https://developer.mozilla.org/en-US/docs/Web/Accessibility/Keyboard-navigable_JavaScript_widgets event.preventDefault(); } } export function isKeyEitherLetterOrNumber(event) { const char = event.key; // Only letter characters differ when they switch between lowercase and uppercase, whether it's an English or non-English letter. return char.toLowerCase() !== char.toUpperCase() || (char >= '0' && char <= '9'); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL3V0aWxzL2ZvY3VzL2tleS1mb2N1cy91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFFSCxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXJELE1BQU0sVUFBVSxZQUFZLENBQUMsR0FBVztJQUN0QyxJQUFJLEdBQUcsS0FBSyxJQUFJLENBQUMsT0FBTyxJQUFJLEdBQUcsS0FBSyxNQUFNLENBQUMsT0FBTyxFQUFFO1FBQ2xELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztLQUNyQjtTQUFNLElBQUksR0FBRyxLQUFLLElBQUksQ0FBQyxTQUFTLElBQUksR0FBRyxLQUFLLE1BQU0sQ0FBQyxTQUFTLEVBQUU7UUFDN0QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0tBQ3ZCO1NBQU0sSUFBSSxHQUFHLEtBQUssSUFBSSxDQUFDLFVBQVUsSUFBSSxHQUFHLEtBQUssTUFBTSxDQUFDLFVBQVUsRUFBRTtRQUMvRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7S0FDeEI7U0FBTSxJQUFJLEdBQUcsS0FBSyxJQUFJLENBQUMsU0FBUyxJQUFJLEdBQUcsS0FBSyxNQUFNLENBQUMsU0FBUyxFQUFFO1FBQzdELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztLQUN2QjtTQUFNLElBQUksR0FBRyxLQUFLLElBQUksQ0FBQyxLQUFLLElBQUksR0FBRyxLQUFLLE1BQU0sQ0FBQyxLQUFLLEVBQUU7UUFDckQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0tBQ25CO1NBQU0sSUFBSSxHQUFHLEtBQUssSUFBSSxDQUFDLE1BQU0sSUFBSSxHQUFHLEtBQUssTUFBTSxDQUFDLE1BQU0sRUFBRTtRQUN2RCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7S0FDcEI7U0FBTTtRQUNMLE9BQU8sR0FBRyxDQUFDO0tBQ1o7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLHFCQUFxQixDQUFDLEtBQW9CO0lBQ3hELE1BQU0sR0FBRyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFcEMsSUFBSSxHQUFHLEtBQUssSUFBSSxDQUFDLE9BQU8sSUFBSSxHQUFHLEtBQUssSUFBSSxDQUFDLFNBQVMsSUFBSSxHQUFHLEtBQUssSUFBSSxDQUFDLFNBQVMsSUFBSSxHQUFHLEtBQUssSUFBSSxDQUFDLFVBQVUsRUFBRTtRQUN2RyxtQ0FBbUM7UUFDbkMsb0ZBQW9GO1FBQ3BGLG1HQUFtRztRQUNuRyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7S0FDeEI7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLHlCQUF5QixDQUFDLEtBQW9CO0lBQzVELE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUM7SUFDdkIsaUlBQWlJO0lBQ2pJLE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDO0FBQ25GLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE2LTIwMjMgVk13YXJlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlLlxuICogVGhlIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gTElDRU5TRSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBwcm9qZWN0LlxuICovXG5cbmltcG9ydCB7IElFS2V5cywgS2V5cyB9IGZyb20gJy4uLy4uL2VudW1zL2tleXMuZW51bSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVLZXkoa2V5OiBzdHJpbmcpIHtcbiAgaWYgKGtleSA9PT0gS2V5cy5BcnJvd1VwIHx8IGtleSA9PT0gSUVLZXlzLkFycm93VXApIHtcbiAgICByZXR1cm4gS2V5cy5BcnJvd1VwO1xuICB9IGVsc2UgaWYgKGtleSA9PT0gS2V5cy5BcnJvd0Rvd24gfHwga2V5ID09PSBJRUtleXMuQXJyb3dEb3duKSB7XG4gICAgcmV0dXJuIEtleXMuQXJyb3dEb3duO1xuICB9IGVsc2UgaWYgKGtleSA9PT0gS2V5cy5BcnJvd1JpZ2h0IHx8IGtleSA9PT0gSUVLZXlzLkFycm93UmlnaHQpIHtcbiAgICByZXR1cm4gS2V5cy5BcnJvd1JpZ2h0O1xuICB9IGVsc2UgaWYgKGtleSA9PT0gS2V5cy5BcnJvd0xlZnQgfHwga2V5ID09PSBJRUtleXMuQXJyb3dMZWZ0KSB7XG4gICAgcmV0dXJuIEtleXMuQXJyb3dMZWZ0O1xuICB9IGVsc2UgaWYgKGtleSA9PT0gS2V5cy5TcGFjZSB8fCBrZXkgPT09IElFS2V5cy5TcGFjZSkge1xuICAgIHJldHVybiBLZXlzLlNwYWNlO1xuICB9IGVsc2UgaWYgKGtleSA9PT0gS2V5cy5Fc2NhcGUgfHwga2V5ID09PSBJRUtleXMuRXNjYXBlKSB7XG4gICAgcmV0dXJuIEtleXMuRXNjYXBlO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBrZXk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZXZlbnRBcnJvd0tleVNjcm9sbChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICBjb25zdCBrZXkgPSBub3JtYWxpemVLZXkoZXZlbnQua2V5KTtcblxuICBpZiAoa2V5ID09PSBLZXlzLkFycm93VXAgfHwga2V5ID09PSBLZXlzLkFycm93RG93biB8fCBrZXkgPT09IEtleXMuQXJyb3dMZWZ0IHx8IGtleSA9PT0gS2V5cy5BcnJvd1JpZ2h0KSB7XG4gICAgLy8gcHJldmVudCBlbGVtZW50IGNvbnRhaW5lciBzY3JvbGxcbiAgICAvLyBNRE4gcmVmZXJlbmNlcyB0aGlzIGlzIHJlYWxseSB0aGUgb25seSB3YXkgdG8gcHJldmVudCBuYXRpdmUgYnJvd3NlciBpbnRlcmFjdGlvbnNcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BY2Nlc3NpYmlsaXR5L0tleWJvYXJkLW5hdmlnYWJsZV9KYXZhU2NyaXB0X3dpZGdldHNcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0tleUVpdGhlckxldHRlck9yTnVtYmVyKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gIGNvbnN0IGNoYXIgPSBldmVudC5rZXk7XG4gIC8vIE9ubHkgbGV0dGVyIGNoYXJhY3RlcnMgZGlmZmVyIHdoZW4gdGhleSBzd2l0Y2ggYmV0d2VlbiBsb3dlcmNhc2UgYW5kIHVwcGVyY2FzZSwgd2hldGhlciBpdCdzIGFuIEVuZ2xpc2ggb3Igbm9uLUVuZ2xpc2ggbGV0dGVyLlxuICByZXR1cm4gY2hhci50b0xvd2VyQ2FzZSgpICE9PSBjaGFyLnRvVXBwZXJDYXNlKCkgfHwgKGNoYXIgPj0gJzAnICYmIGNoYXIgPD0gJzknKTtcbn1cbiJdfQ==