@steinv/filippine
Version:
Filippine - acrostic word puzzle with Angular
55 lines • 7.21 kB
JavaScript
import { Directive, HostListener } from '@angular/core';
export class AutoTabDirective {
constructor() { }
onKeyUp(event) {
const input = event.target;
if (!input.id || event.key === 'Tab' || event.key === 'Shift') {
return;
}
const length = input.value.length;
const index = +input.name;
const position = input.id.split(',');
let elementByCoordinates = position;
let elementByName = index;
if ((length === 1 || event.key === 'ArrowRight') && input.id) {
elementByCoordinates = position[0] + ',' + (+position[1] + 1);
elementByName = index + 1;
}
if ((event.key === 'Backspace' || event.key === 'ArrowLeft') && input.id) {
elementByCoordinates = position[0] + ',' + (+position[1] - 1);
elementByName = index - 1;
}
if ((event.key === 'ArrowUp') && input.id) {
elementByCoordinates = (+position[0] - 1) + ',' + position[1];
elementByName = index - 1;
}
if ((event.key === 'ArrowDown') && input.id) {
elementByCoordinates = (+position[0] + 1) + ',' + position[1];
elementByName = index + 1;
}
const field = document.getElementById(elementByCoordinates);
if (field) {
field.focus();
field.setSelectionRange(0, 1);
return;
}
else {
const fields = document.getElementsByName(elementByName.toString());
if (fields && fields.item(0)) {
const inputField = fields.item(0);
inputField.focus();
inputField.setSelectionRange(0, 1);
}
}
}
}
AutoTabDirective.decorators = [
{ type: Directive, args: [{
selector: '[AutoTab]',
},] }
];
AutoTabDirective.ctorParameters = () => [];
AutoTabDirective.propDecorators = {
onKeyUp: [{ type: HostListener, args: ['keyup', ['$event'],] }]
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0by10YWIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uL3Byb2plY3RzL2ZpbGlwcGluZS9zcmMvIiwic291cmNlcyI6WyJsaWIvYXV0by10YWIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBS3hELE1BQU0sT0FBTyxnQkFBZ0I7SUFFM0IsZ0JBQWdCLENBQUM7SUFFa0IsT0FBTyxDQUFDLEtBQVU7UUFDbkQsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUMzQixJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLEtBQUssSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLE9BQU8sRUFBRTtZQUM3RCxPQUFPO1NBQ1I7UUFFRCxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUNsQyxNQUFNLEtBQUssR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7UUFDMUIsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDckMsSUFBSSxvQkFBb0IsR0FBRyxRQUFRLENBQUM7UUFDcEMsSUFBSSxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBRTFCLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssWUFBWSxDQUFDLElBQUksS0FBSyxDQUFDLEVBQUUsRUFBRTtZQUM1RCxvQkFBb0IsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDOUQsYUFBYSxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUM7U0FDM0I7UUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxXQUFXLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxXQUFXLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBRSxFQUFFO1lBQ3hFLG9CQUFvQixHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUM5RCxhQUFhLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQztTQUMzQjtRQUNELElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLFNBQVMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFLEVBQUU7WUFDekMsb0JBQW9CLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlELGFBQWEsR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1NBQzNCO1FBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssV0FBVyxDQUFDLElBQUksS0FBSyxDQUFDLEVBQUUsRUFBRTtZQUMzQyxvQkFBb0IsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDOUQsYUFBYSxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUM7U0FDM0I7UUFFRCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLG9CQUFvQixDQUFxQixDQUFDO1FBQ2hGLElBQUksS0FBSyxFQUFFO1lBQ1QsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2QsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM5QixPQUFPO1NBQ1I7YUFFSTtZQUNILE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUNwRSxJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUM1QixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBcUIsQ0FBQztnQkFDdEQsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNuQixVQUFVLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQ3BDO1NBQ0Y7SUFDSCxDQUFDOzs7WUFuREYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxXQUFXO2FBQ3RCOzs7O3NCQUtFLFlBQVksU0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3RMaXN0ZW5lciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbQXV0b1RhYl0nLFxufSlcbmV4cG9ydCBjbGFzcyBBdXRvVGFiRGlyZWN0aXZlIHtcblxuICBjb25zdHJ1Y3RvcigpIHsgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2tleXVwJywgWyckZXZlbnQnXSkgb25LZXlVcChldmVudDogYW55KSB7XG4gICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQ7XG4gICAgaWYgKCFpbnB1dC5pZCB8fCBldmVudC5rZXkgPT09ICdUYWInIHx8IGV2ZW50LmtleSA9PT0gJ1NoaWZ0Jykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGxlbmd0aCA9IGlucHV0LnZhbHVlLmxlbmd0aDtcbiAgICBjb25zdCBpbmRleCA9ICtpbnB1dC5uYW1lO1xuICAgIGNvbnN0IHBvc2l0aW9uID0gaW5wdXQuaWQuc3BsaXQoJywnKTtcbiAgICBsZXQgZWxlbWVudEJ5Q29vcmRpbmF0ZXMgPSBwb3NpdGlvbjtcbiAgICBsZXQgZWxlbWVudEJ5TmFtZSA9IGluZGV4O1xuXG4gICAgaWYgKChsZW5ndGggPT09IDEgfHwgZXZlbnQua2V5ID09PSAnQXJyb3dSaWdodCcpICYmIGlucHV0LmlkKSB7XG4gICAgICBlbGVtZW50QnlDb29yZGluYXRlcyA9IHBvc2l0aW9uWzBdICsgJywnICsgKCtwb3NpdGlvblsxXSArIDEpO1xuICAgICAgZWxlbWVudEJ5TmFtZSA9IGluZGV4ICsgMTtcbiAgICB9XG4gICAgaWYgKChldmVudC5rZXkgPT09ICdCYWNrc3BhY2UnIHx8IGV2ZW50LmtleSA9PT0gJ0Fycm93TGVmdCcpICYmIGlucHV0LmlkKSB7XG4gICAgICBlbGVtZW50QnlDb29yZGluYXRlcyA9IHBvc2l0aW9uWzBdICsgJywnICsgKCtwb3NpdGlvblsxXSAtIDEpO1xuICAgICAgZWxlbWVudEJ5TmFtZSA9IGluZGV4IC0gMTtcbiAgICB9XG4gICAgaWYgKChldmVudC5rZXkgPT09ICdBcnJvd1VwJykgJiYgaW5wdXQuaWQpIHtcbiAgICAgIGVsZW1lbnRCeUNvb3JkaW5hdGVzID0gKCtwb3NpdGlvblswXSAtIDEpICsgJywnICsgcG9zaXRpb25bMV07XG4gICAgICBlbGVtZW50QnlOYW1lID0gaW5kZXggLSAxO1xuICAgIH1cbiAgICBpZiAoKGV2ZW50LmtleSA9PT0gJ0Fycm93RG93bicpICYmIGlucHV0LmlkKSB7XG4gICAgICBlbGVtZW50QnlDb29yZGluYXRlcyA9ICgrcG9zaXRpb25bMF0gKyAxKSArICcsJyArIHBvc2l0aW9uWzFdO1xuICAgICAgZWxlbWVudEJ5TmFtZSA9IGluZGV4ICsgMTtcbiAgICB9XG5cbiAgICBjb25zdCBmaWVsZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRCeUNvb3JkaW5hdGVzKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgIGlmIChmaWVsZCkge1xuICAgICAgZmllbGQuZm9jdXMoKTtcbiAgICAgIGZpZWxkLnNldFNlbGVjdGlvblJhbmdlKDAsIDEpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGVsc2Uge1xuICAgICAgY29uc3QgZmllbGRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoZWxlbWVudEJ5TmFtZS50b1N0cmluZygpKTtcbiAgICAgIGlmIChmaWVsZHMgJiYgZmllbGRzLml0ZW0oMCkpIHtcbiAgICAgICAgY29uc3QgaW5wdXRGaWVsZCA9IGZpZWxkcy5pdGVtKDApIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICAgIGlucHV0RmllbGQuZm9jdXMoKTtcbiAgICAgICAgaW5wdXRGaWVsZC5zZXRTZWxlY3Rpb25SYW5nZSgwLCAxKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn0iXX0=