@progress/kendo-angular-filter
Version:
Kendo UI Angular Filter
76 lines (75 loc) • 4.36 kB
JavaScript
/**-----------------------------------------------------------------------------------------
* 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
}] } });