@taiga-ui/core
Version:
Core library for creating Angular components and applications using Taiga UI
70 lines • 9.58 kB
JavaScript
import { __decorate } from "tslib";
import { computed, Directive, inject } from '@angular/core';
import { EMPTY_CLIENT_RECT } from '@taiga-ui/cdk/constants';
import { TuiActiveZone } from '@taiga-ui/cdk/directives/active-zone';
import { TUI_IS_TOUCH } from '@taiga-ui/cdk/tokens';
import { tuiGetActualTarget, tuiPointToClientRect } from '@taiga-ui/cdk/utils/dom';
import { tuiAsDriver, tuiAsRectAccessor, TuiRectAccessor } from '@taiga-ui/core/classes';
import { shouldCall } from '@taiga-ui/event-plugins';
import { TuiDropdownDriver } from './dropdown.driver';
import * as i0 from "@angular/core";
function activeZoneFilter(event) {
return (!event ||
(this.driver.value && !this.activeZone.contains(tuiGetActualTarget(event))));
}
class TuiDropdownContext extends TuiRectAccessor {
constructor() {
super(...arguments);
this.isTouch = inject(TUI_IS_TOUCH);
this.currentRect = EMPTY_CLIENT_RECT;
this.userSelect = computed(() => (this.isTouch() ? 'none' : null));
this.activeZone = inject(TuiActiveZone);
this.driver = inject(TuiDropdownDriver);
this.type = 'dropdown';
}
getClientRect() {
return this.currentRect;
}
closeDropdown(_event) {
this.driver.next(false);
this.currentRect = EMPTY_CLIENT_RECT;
}
onContextMenu(x, y) {
this.currentRect = tuiPointToClientRect(x, y);
this.driver.next(true);
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdownContext, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiDropdownContext, isStandalone: true, selector: "[tuiDropdownContext]", host: { listeners: { "document:pointerdown.zoneless": "closeDropdown($event)", "document:contextmenu.capture.zoneless": "closeDropdown($event)", "document:keydown.esc": "closeDropdown()", "longtap": "onContextMenu($event.detail.clientX, $event.detail.clientY)" }, properties: { "style.user-select": "userSelect()", "style.-webkit-user-select": "userSelect()", "style.-webkit-touch-callout": "userSelect()" } }, providers: [
TuiActiveZone,
TuiDropdownDriver,
tuiAsDriver(TuiDropdownDriver),
tuiAsRectAccessor(TuiDropdownContext),
], usesInheritance: true, ngImport: i0 }); }
}
__decorate([
shouldCall(activeZoneFilter)
], TuiDropdownContext.prototype, "closeDropdown", null);
export { TuiDropdownContext };
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdownContext, decorators: [{
type: Directive,
args: [{
standalone: true,
selector: '[tuiDropdownContext]',
providers: [
TuiActiveZone,
TuiDropdownDriver,
tuiAsDriver(TuiDropdownDriver),
tuiAsRectAccessor(TuiDropdownContext),
],
host: {
'[style.user-select]': 'userSelect()',
'[style.-webkit-user-select]': 'userSelect()',
'[style.-webkit-touch-callout]': 'userSelect()',
'(document:pointerdown.zoneless)': 'closeDropdown($event)',
'(document:contextmenu.capture.zoneless)': 'closeDropdown($event)',
'(document:keydown.esc)': 'closeDropdown()',
'(longtap)': 'onContextMenu($event.detail.clientX, $event.detail.clientY)',
},
}]
}], propDecorators: { closeDropdown: [] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tY29udGV4dC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2RpcmVjdGl2ZXMvZHJvcGRvd24vZHJvcGRvd24tY29udGV4dC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUMxRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sc0NBQXNDLENBQUM7QUFDbkUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxrQkFBa0IsRUFBRSxvQkFBb0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ2pGLE9BQU8sRUFBQyxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDdkYsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBRW5ELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLG1CQUFtQixDQUFDOztBQUVwRCxTQUFTLGdCQUFnQixDQUEyQixLQUFhO0lBQzdELE9BQU8sQ0FDSCxDQUFDLEtBQUs7UUFDTixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUM5RSxDQUFDO0FBQ04sQ0FBQztBQUVELE1BbUJhLGtCQUFtQixTQUFRLGVBQWU7SUFuQnZEOztRQW9CcUIsWUFBTyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN4QyxnQkFBVyxHQUFHLGlCQUFpQixDQUFDO1FBRXJCLGVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUM5RCxlQUFVLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ25DLFdBQU0sR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUV0QyxTQUFJLEdBQUcsVUFBVSxDQUFDO0tBZ0JyQztJQWRVLGFBQWE7UUFDaEIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzVCLENBQUM7SUFHUyxhQUFhLENBQUMsTUFBYztRQUNsQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsV0FBVyxHQUFHLGlCQUFpQixDQUFDO0lBQ3pDLENBQUM7SUFFUyxhQUFhLENBQUMsQ0FBUyxFQUFFLENBQVM7UUFDeEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxvQkFBb0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0IsQ0FBQzsrR0F2QlEsa0JBQWtCO21HQUFsQixrQkFBa0IsOGRBaEJoQjtZQUNQLGFBQWE7WUFDYixpQkFBaUI7WUFDakIsV0FBVyxDQUFDLGlCQUFpQixDQUFDO1lBQzlCLGlCQUFpQixDQUFDLGtCQUFrQixDQUFDO1NBQ3hDOztBQTBCUztJQURULFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQzt1REFJNUI7U0FsQlEsa0JBQWtCOzRGQUFsQixrQkFBa0I7a0JBbkI5QixTQUFTO21CQUFDO29CQUNQLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsc0JBQXNCO29CQUNoQyxTQUFTLEVBQUU7d0JBQ1AsYUFBYTt3QkFDYixpQkFBaUI7d0JBQ2pCLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQzt3QkFDOUIsaUJBQWlCLG9CQUFvQjtxQkFDeEM7b0JBQ0QsSUFBSSxFQUFFO3dCQUNGLHFCQUFxQixFQUFFLGNBQWM7d0JBQ3JDLDZCQUE2QixFQUFFLGNBQWM7d0JBQzdDLCtCQUErQixFQUFFLGNBQWM7d0JBQy9DLGlDQUFpQyxFQUFFLHVCQUF1Qjt3QkFDMUQseUNBQXlDLEVBQUUsdUJBQXVCO3dCQUNsRSx3QkFBd0IsRUFBRSxpQkFBaUI7d0JBQzNDLFdBQVcsRUFBRSw2REFBNkQ7cUJBQzdFO2lCQUNKOzhCQWdCYSxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtjb21wdXRlZCwgRGlyZWN0aXZlLCBpbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtFTVBUWV9DTElFTlRfUkVDVH0gZnJvbSAnQHRhaWdhLXVpL2Nkay9jb25zdGFudHMnO1xuaW1wb3J0IHtUdWlBY3RpdmVab25lfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2RpcmVjdGl2ZXMvYWN0aXZlLXpvbmUnO1xuaW1wb3J0IHtUVUlfSVNfVE9VQ0h9IGZyb20gJ0B0YWlnYS11aS9jZGsvdG9rZW5zJztcbmltcG9ydCB7dHVpR2V0QWN0dWFsVGFyZ2V0LCB0dWlQb2ludFRvQ2xpZW50UmVjdH0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9kb20nO1xuaW1wb3J0IHt0dWlBc0RyaXZlciwgdHVpQXNSZWN0QWNjZXNzb3IsIFR1aVJlY3RBY2Nlc3Nvcn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvY2xhc3Nlcyc7XG5pbXBvcnQge3Nob3VsZENhbGx9IGZyb20gJ0B0YWlnYS11aS9ldmVudC1wbHVnaW5zJztcblxuaW1wb3J0IHtUdWlEcm9wZG93bkRyaXZlcn0gZnJvbSAnLi9kcm9wZG93bi5kcml2ZXInO1xuXG5mdW5jdGlvbiBhY3RpdmVab25lRmlsdGVyKHRoaXM6IFR1aURyb3Bkb3duQ29udGV4dCwgZXZlbnQ/OiBFdmVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICAgICFldmVudCB8fFxuICAgICAgICAodGhpcy5kcml2ZXIudmFsdWUgJiYgIXRoaXMuYWN0aXZlWm9uZS5jb250YWlucyh0dWlHZXRBY3R1YWxUYXJnZXQoZXZlbnQpKSlcbiAgICApO1xufVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnW3R1aURyb3Bkb3duQ29udGV4dF0nLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBUdWlBY3RpdmVab25lLFxuICAgICAgICBUdWlEcm9wZG93bkRyaXZlcixcbiAgICAgICAgdHVpQXNEcml2ZXIoVHVpRHJvcGRvd25Ecml2ZXIpLFxuICAgICAgICB0dWlBc1JlY3RBY2Nlc3NvcihUdWlEcm9wZG93bkNvbnRleHQpLFxuICAgIF0sXG4gICAgaG9zdDoge1xuICAgICAgICAnW3N0eWxlLnVzZXItc2VsZWN0XSc6ICd1c2VyU2VsZWN0KCknLFxuICAgICAgICAnW3N0eWxlLi13ZWJraXQtdXNlci1zZWxlY3RdJzogJ3VzZXJTZWxlY3QoKScsXG4gICAgICAgICdbc3R5bGUuLXdlYmtpdC10b3VjaC1jYWxsb3V0XSc6ICd1c2VyU2VsZWN0KCknLFxuICAgICAgICAnKGRvY3VtZW50OnBvaW50ZXJkb3duLnpvbmVsZXNzKSc6ICdjbG9zZURyb3Bkb3duKCRldmVudCknLFxuICAgICAgICAnKGRvY3VtZW50OmNvbnRleHRtZW51LmNhcHR1cmUuem9uZWxlc3MpJzogJ2Nsb3NlRHJvcGRvd24oJGV2ZW50KScsXG4gICAgICAgICcoZG9jdW1lbnQ6a2V5ZG93bi5lc2MpJzogJ2Nsb3NlRHJvcGRvd24oKScsXG4gICAgICAgICcobG9uZ3RhcCknOiAnb25Db250ZXh0TWVudSgkZXZlbnQuZGV0YWlsLmNsaWVudFgsICRldmVudC5kZXRhaWwuY2xpZW50WSknLFxuICAgIH0sXG59KVxuZXhwb3J0IGNsYXNzIFR1aURyb3Bkb3duQ29udGV4dCBleHRlbmRzIFR1aVJlY3RBY2Nlc3NvciB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBpc1RvdWNoID0gaW5qZWN0KFRVSV9JU19UT1VDSCk7XG4gICAgcHJpdmF0ZSBjdXJyZW50UmVjdCA9IEVNUFRZX0NMSUVOVF9SRUNUO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHVzZXJTZWxlY3QgPSBjb21wdXRlZCgoKSA9PiAodGhpcy5pc1RvdWNoKCkgPyAnbm9uZScgOiBudWxsKSk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGFjdGl2ZVpvbmUgPSBpbmplY3QoVHVpQWN0aXZlWm9uZSk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGRyaXZlciA9IGluamVjdChUdWlEcm9wZG93bkRyaXZlcik7XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgdHlwZSA9ICdkcm9wZG93bic7XG5cbiAgICBwdWJsaWMgZ2V0Q2xpZW50UmVjdCgpOiBET01SZWN0IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFJlY3Q7XG4gICAgfVxuXG4gICAgQHNob3VsZENhbGwoYWN0aXZlWm9uZUZpbHRlcilcbiAgICBwcm90ZWN0ZWQgY2xvc2VEcm9wZG93bihfZXZlbnQ/OiBFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRyaXZlci5uZXh0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5jdXJyZW50UmVjdCA9IEVNUFRZX0NMSUVOVF9SRUNUO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvbkNvbnRleHRNZW51KHg6IG51bWJlciwgeTogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3VycmVudFJlY3QgPSB0dWlQb2ludFRvQ2xpZW50UmVjdCh4LCB5KTtcbiAgICAgICAgdGhpcy5kcml2ZXIubmV4dCh0cnVlKTtcbiAgICB9XG59XG4iXX0=