UNPKG

@progress/kendo-angular-filter

Version:
76 lines (75 loc) 4.36 kB
/**----------------------------------------------------------------------------------------- * Copyright © 2025 Progress Software Corporation. All rights reserved. * Licensed under commercial license. See LICENSE.md in the project root for more information *-------------------------------------------------------------------------------------------*/ import { Directive, ElementRef, EventEmitter, Input, Output, Renderer2 } from '@angular/core'; import { LocalizationService } from '@progress/kendo-angular-l10n'; import { NavigationService } from './navigation.service'; import { selectors } from './util'; import * as i0 from "@angular/core"; import * as i1 from "./navigation.service"; import * as i2 from "@progress/kendo-angular-l10n"; /** * @hidden */ export class BaseFilterRowComponent { element; navigationService; localization; renderer; index; valueChange = new EventEmitter(); constructor(element, navigationService, localization, renderer) { this.element = element; this.navigationService = navigationService; this.localization = localization; this.renderer = renderer; } itemNumber = 0; get toolbarElement() { return this.element.nativeElement.querySelector('.k-toolbar'); } messageFor(key) { return this.localization.get(key); } onMouseDown(event) { let elementToFocus; const closestFilterToolbarItem = event.target.closest(selectors.kendoFilterToolbarItem); const closestButton = event.target.closest(selectors.kendoFilterToolbarButton); const closestToolbarItem = event.target.closest(selectors.kendoToolbar); if (closestFilterToolbarItem || closestButton) { const index = Array.from(closestToolbarItem.children).indexOf(closestFilterToolbarItem) > -1 ? Array.from(closestToolbarItem.children).indexOf(closestFilterToolbarItem) : Array.from(closestToolbarItem.children).indexOf(closestButton); this.navigationService.currentToolbarItemChildrenIndex = index; this.navigationService.isFilterNavigationActivated = true; this.navigationService.isFilterExpressionComponentFocused = true; const wrapperElement = this.navigationService.flattenFilterItems[this.itemNumber].focusableChildren[index]; elementToFocus = wrapperElement.querySelector(selectors.kendoDropDownListComponent) || wrapperElement.querySelector(selectors.kendoInput) || wrapperElement.querySelector(selectors.kendoInputInner) || wrapperElement.querySelector(selectors.inputElement) || wrapperElement.querySelector(selectors.textAreaElement) || wrapperElement.querySelector(selectors.kendoButton) || wrapperElement; } else { this.navigationService.currentToolbarItemChildrenIndex = 0; this.navigationService.isFilterNavigationActivated = false; this.navigationService.isFilterExpressionComponentFocused = false; elementToFocus = this.navigationService.flattenFilterItems[this.itemNumber].focusableChildren[0]; } this.navigationService.currentToolbarItemIndex = this.itemNumber; this.navigationService.focusCurrentElement(elementToFocus, true); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BaseFilterRowComponent, deps: [{ token: i0.ElementRef }, { token: i1.NavigationService }, { token: i2.LocalizationService }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: BaseFilterRowComponent, inputs: { index: "index" }, outputs: { valueChange: "valueChange" }, ngImport: i0 }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BaseFilterRowComponent, decorators: [{ type: Directive, args: [{}] }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.NavigationService }, { type: i2.LocalizationService }, { type: i0.Renderer2 }]; }, propDecorators: { index: [{ type: Input }], valueChange: [{ type: Output }] } });