@taiga-ui/addon-mobile
Version:
Extension package for Taiga UI that adds support for mobile specific behaviors such as custom data pickers, dropdowns, etc.
53 lines • 6.11 kB
JavaScript
import { DOCUMENT } from '@angular/common';
import { inject, Injectable } from '@angular/core';
import { tuiGetNativeFocused } from '@taiga-ui/cdk/utils/focus';
import { filter, fromEvent, merge } from 'rxjs';
import * as i0 from "@angular/core";
class TuiKeyboardService {
constructor() {
this.doc = inject(DOCUMENT);
this.sub = merge(fromEvent(this.doc, 'focusout'), fromEvent(this.doc, 'mousedown').pipe(filter((e) => Object.is(e.target, this.element)))).subscribe(() => {
this.show();
});
this.inputMode = '';
}
ngOnDestroy() {
this.sub.unsubscribe();
this.show();
}
toggle() {
if (this.element) {
this.show();
}
else {
this.hide();
}
}
hide() {
const focused = tuiGetNativeFocused(this.doc);
if (focused?.inputMode === undefined || this.element) {
return;
}
this.element = focused;
this.inputMode = focused.inputMode;
focused.inputMode = 'none';
}
show() {
if (!this.element) {
return;
}
this.element.inputMode = 'none';
this.element.inputMode = this.inputMode;
this.element = undefined;
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiKeyboardService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiKeyboardService, providedIn: 'root' }); }
}
export { TuiKeyboardService };
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiKeyboardService, decorators: [{
type: Injectable,
args: [{
providedIn: 'root',
}]
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Ym9hcmQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FkZG9uLW1vYmlsZS9zZXJ2aWNlcy9rZXlib2FyZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDOUQsT0FBTyxFQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFDLE1BQU0sTUFBTSxDQUFDOztBQUU5QyxNQUdhLGtCQUFrQjtJQUgvQjtRQUlxQixRQUFHLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZCLFFBQUcsR0FBRyxLQUFLLENBQ3hCLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxFQUMvQixTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQ2pDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUNuRCxDQUNKLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNiLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNoQixDQUFDLENBQUMsQ0FBQztRQUdLLGNBQVMsR0FBRyxFQUFFLENBQUM7S0FvQzFCO0lBbENVLFdBQVc7UUFDZCxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBRU0sTUFBTTtRQUNULElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNkLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNmO2FBQU07WUFDSCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDZjtJQUNMLENBQUM7SUFFTSxJQUFJO1FBQ1AsTUFBTSxPQUFPLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBcUIsQ0FBQztRQUVsRSxJQUFJLE9BQU8sRUFBRSxTQUFTLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDbEQsT0FBTztTQUNWO1FBRUQsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDO1FBQ25DLE9BQU8sQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDO0lBQy9CLENBQUM7SUFFTSxJQUFJO1FBQ1AsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDZixPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUM7UUFDaEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUN4QyxJQUFJLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQztJQUM3QixDQUFDOytHQS9DUSxrQkFBa0I7bUhBQWxCLGtCQUFrQixjQUZmLE1BQU07O1NBRVQsa0JBQWtCOzRGQUFsQixrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtET0NVTUVOVH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7aW5qZWN0LCBJbmplY3RhYmxlLCB0eXBlIE9uRGVzdHJveX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3R1aUdldE5hdGl2ZUZvY3VzZWR9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvZm9jdXMnO1xuaW1wb3J0IHtmaWx0ZXIsIGZyb21FdmVudCwgbWVyZ2V9IGZyb20gJ3J4anMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBUdWlLZXlib2FyZFNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZG9jID0gaW5qZWN0KERPQ1VNRU5UKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN1YiA9IG1lcmdlKFxuICAgICAgICBmcm9tRXZlbnQodGhpcy5kb2MsICdmb2N1c291dCcpLFxuICAgICAgICBmcm9tRXZlbnQodGhpcy5kb2MsICdtb3VzZWRvd24nKS5waXBlKFxuICAgICAgICAgICAgZmlsdGVyKChlKSA9PiBPYmplY3QuaXMoZS50YXJnZXQsIHRoaXMuZWxlbWVudCkpLFxuICAgICAgICApLFxuICAgICkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5zaG93KCk7XG4gICAgfSk7XG5cbiAgICBwcml2YXRlIGVsZW1lbnQ/OiBFbGVtZW50Q29udGVudEVkaXRhYmxlO1xuICAgIHByaXZhdGUgaW5wdXRNb2RlID0gJyc7XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuc2hvdygpO1xuICAgIH1cblxuICAgIHB1YmxpYyB0b2dnbGUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuc2hvdygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgaGlkZSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZm9jdXNlZCA9IHR1aUdldE5hdGl2ZUZvY3VzZWQodGhpcy5kb2MpIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG5cbiAgICAgICAgaWYgKGZvY3VzZWQ/LmlucHV0TW9kZSA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuZWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5lbGVtZW50ID0gZm9jdXNlZDtcbiAgICAgICAgdGhpcy5pbnB1dE1vZGUgPSBmb2N1c2VkLmlucHV0TW9kZTtcbiAgICAgICAgZm9jdXNlZC5pbnB1dE1vZGUgPSAnbm9uZSc7XG4gICAgfVxuXG4gICAgcHVibGljIHNob3coKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5lbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmVsZW1lbnQuaW5wdXRNb2RlID0gJ25vbmUnO1xuICAgICAgICB0aGlzLmVsZW1lbnQuaW5wdXRNb2RlID0gdGhpcy5pbnB1dE1vZGU7XG4gICAgICAgIHRoaXMuZWxlbWVudCA9IHVuZGVmaW5lZDtcbiAgICB9XG59XG4iXX0=