UNPKG

@steinv/filippine

Version:

Filippine - acrostic word puzzle with Angular

55 lines 7.21 kB
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=