@taiga-ui/core
Version:
Core library for creating Angular components and applications using Taiga UI
67 lines • 8.47 kB
JavaScript
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==