UNPKG

@taiga-ui/core

Version:

Core library for creating Angular components and applications using Taiga UI

67 lines 8.47 kB
import { DOCUMENT } from '@angular/common'; import { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, inject, Input, Output, signal, ViewChild, } from '@angular/core'; import { TuiRoot } from '@taiga-ui/core/components/root'; import * as i0 from "@angular/core"; class TuiFullscreen { constructor() { this.doc = inject(DOCUMENT); this.open = signal(false); this.opened = new EventEmitter(); this.options = { navigationUI: 'auto' }; } set fullscreen(open) { if (this.open() === open) { return; } if (open) { this.root?.nativeElement .requestFullscreen(this.options) .then(() => this.fullscreenState(open)); } else { this.doc .exitFullscreen() .then(() => this.fullscreenState(open)) .catch((error) => console.error('Failed to exit fullscreen:', error)); } } closedByEscape(event) { const escaped = !this.doc.fullscreenElement && event.target === this.root?.nativeElement; if (escaped) { this.fullscreenState(false); } } fullscreenState(open) { this.open.set(open); this.opened.emit(open); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiFullscreen, deps: [], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiFullscreen, isStandalone: true, selector: "[tuiFullscreen]", inputs: { options: ["tuiFullscreenOptions", "options"], fullscreen: ["tuiFullscreen", "fullscreen"] }, outputs: { opened: "tuiFullscreenChange" }, host: { listeners: { "document:fullscreenchange": "closedByEscape($event)" } }, viewQueries: [{ propertyName: "root", first: true, predicate: TuiRoot, descendants: true, read: ElementRef }], ngImport: i0, template: '<tui-root><ng-content /></tui-root>', isInline: true, dependencies: [{ kind: "component", type: TuiRoot, selector: "tui-root" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); } } export { TuiFullscreen }; i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiFullscreen, decorators: [{ type: Component, args: [{ standalone: true, selector: '[tuiFullscreen]', imports: [TuiRoot], template: '<tui-root><ng-content /></tui-root>', changeDetection: ChangeDetectionStrategy.OnPush, host: { '(document:fullscreenchange)': 'closedByEscape($event)', }, }] }], propDecorators: { root: [{ type: ViewChild, args: [TuiRoot, { read: ElementRef }] }], opened: [{ type: Output, args: ['tuiFullscreenChange'] }], options: [{ type: Input, args: ['tuiFullscreenOptions'] }], fullscreen: [{ type: Input, args: ['tuiFullscreen'] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVsbHNjcmVlbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvZnVsbHNjcmVlbi9mdWxsc2NyZWVuLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBQ04sU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQzs7QUFFdkQsTUFVYSxhQUFhO0lBVjFCO1FBY3FCLFFBQUcsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDckIsU0FBSSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUd4QixXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUc5QyxZQUFPLEdBQXVCLEVBQUMsWUFBWSxFQUFFLE1BQU0sRUFBQyxDQUFDO0tBbUMvRDtJQWpDRyxJQUNXLFVBQVUsQ0FBQyxJQUFhO1FBQy9CLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLElBQUksRUFBRTtZQUN0QixPQUFPO1NBQ1Y7UUFFRCxJQUFJLElBQUksRUFBRTtZQUNOLElBQUksQ0FBQyxJQUFJLEVBQUUsYUFBYTtpQkFDbkIsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztpQkFDL0IsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztTQUMvQzthQUFNO1lBQ0gsSUFBSSxDQUFDLEdBQUc7aUJBQ0gsY0FBYyxFQUFFO2lCQUNoQixJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDdEMsS0FBSyxDQUFDLENBQUMsS0FBYyxFQUFFLEVBQUUsQ0FDdEIsT0FBTyxDQUFDLEtBQUssQ0FBQyw0QkFBNEIsRUFBRSxLQUFLLENBQUMsQ0FDckQsQ0FBQztTQUNUO0lBQ0wsQ0FBQztJQUVTLGNBQWMsQ0FBQyxLQUFZO1FBQ2pDLE1BQU0sT0FBTyxHQUNULENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDO1FBRTdFLElBQUksT0FBTyxFQUFFO1lBQ1QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUMvQjtJQUNMLENBQUM7SUFFTyxlQUFlLENBQUMsSUFBYTtRQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQixDQUFDOytHQTdDUSxhQUFhO21HQUFiLGFBQWEsb1ZBQ1gsT0FBTywyQkFBUyxVQUFVLDZCQVAzQixxQ0FBcUMsNERBRHJDLE9BQU87O1NBT1IsYUFBYTs0RkFBYixhQUFhO2tCQVZ6QixTQUFTO21CQUFDO29CQUNQLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsaUJBQWlCO29CQUMzQixPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUM7b0JBQ2xCLFFBQVEsRUFBRSxxQ0FBcUM7b0JBQy9DLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxJQUFJLEVBQUU7d0JBQ0YsNkJBQTZCLEVBQUUsd0JBQXdCO3FCQUMxRDtpQkFDSjs4QkFHb0IsSUFBSTtzQkFEcEIsU0FBUzt1QkFBQyxPQUFPLEVBQUUsRUFBQyxJQUFJLEVBQUUsVUFBVSxFQUFDO2dCQU90QixNQUFNO3NCQURyQixNQUFNO3VCQUFDLHFCQUFxQjtnQkFJdEIsT0FBTztzQkFEYixLQUFLO3VCQUFDLHNCQUFzQjtnQkFJbEIsVUFBVTtzQkFEcEIsS0FBSzt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtET0NVTUVOVH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgc2lnbmFsLFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1R1aVJvb3R9IGZyb20gJ0B0YWlnYS11aS9jb3JlL2NvbXBvbmVudHMvcm9vdCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdbdHVpRnVsbHNjcmVlbl0nLFxuICAgIGltcG9ydHM6IFtUdWlSb290XSxcbiAgICB0ZW1wbGF0ZTogJzx0dWktcm9vdD48bmctY29udGVudCAvPjwvdHVpLXJvb3Q+JyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBob3N0OiB7XG4gICAgICAgICcoZG9jdW1lbnQ6ZnVsbHNjcmVlbmNoYW5nZSknOiAnY2xvc2VkQnlFc2NhcGUoJGV2ZW50KScsXG4gICAgfSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpRnVsbHNjcmVlbiB7XG4gICAgQFZpZXdDaGlsZChUdWlSb290LCB7cmVhZDogRWxlbWVudFJlZn0pXG4gICAgcHJpdmF0ZSByZWFkb25seSByb290PzogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvYyA9IGluamVjdChET0NVTUVOVCk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IG9wZW4gPSBzaWduYWwoZmFsc2UpO1xuXG4gICAgQE91dHB1dCgndHVpRnVsbHNjcmVlbkNoYW5nZScpXG4gICAgcHVibGljIHJlYWRvbmx5IG9wZW5lZCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIEBJbnB1dCgndHVpRnVsbHNjcmVlbk9wdGlvbnMnKVxuICAgIHB1YmxpYyBvcHRpb25zPzogRnVsbHNjcmVlbk9wdGlvbnMgPSB7bmF2aWdhdGlvblVJOiAnYXV0byd9O1xuXG4gICAgQElucHV0KCd0dWlGdWxsc2NyZWVuJylcbiAgICBwdWJsaWMgc2V0IGZ1bGxzY3JlZW4ob3BlbjogYm9vbGVhbikge1xuICAgICAgICBpZiAodGhpcy5vcGVuKCkgPT09IG9wZW4pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcGVuKSB7XG4gICAgICAgICAgICB0aGlzLnJvb3Q/Lm5hdGl2ZUVsZW1lbnRcbiAgICAgICAgICAgICAgICAucmVxdWVzdEZ1bGxzY3JlZW4odGhpcy5vcHRpb25zKVxuICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHRoaXMuZnVsbHNjcmVlblN0YXRlKG9wZW4pKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZG9jXG4gICAgICAgICAgICAgICAgLmV4aXRGdWxsc2NyZWVuKClcbiAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB0aGlzLmZ1bGxzY3JlZW5TdGF0ZShvcGVuKSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goKGVycm9yOiB1bmtub3duKSA9PlxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gZXhpdCBmdWxsc2NyZWVuOicsIGVycm9yKSxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNsb3NlZEJ5RXNjYXBlKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBlc2NhcGVkID1cbiAgICAgICAgICAgICF0aGlzLmRvYy5mdWxsc2NyZWVuRWxlbWVudCAmJiBldmVudC50YXJnZXQgPT09IHRoaXMucm9vdD8ubmF0aXZlRWxlbWVudDtcblxuICAgICAgICBpZiAoZXNjYXBlZCkge1xuICAgICAgICAgICAgdGhpcy5mdWxsc2NyZWVuU3RhdGUoZmFsc2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmdWxsc2NyZWVuU3RhdGUob3BlbjogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLm9wZW4uc2V0KG9wZW4pO1xuICAgICAgICB0aGlzLm9wZW5lZC5lbWl0KG9wZW4pO1xuICAgIH1cbn1cbiJdfQ==