@indigina/ui-kit 1.1.130 → 1.1.132

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/fesm2022/indigina-ui-kit.mjs +1277 -10
  2. package/fesm2022/indigina-ui-kit.mjs.map +1 -1
  3. package/lib/i18n/kit-translations.d.ts +2 -0
  4. package/lib/services/api/kit-settings-api/kit-settings-api.model.d.ts +9 -0
  5. package/lib/services/api/kit-settings-api/kit-settings-api.service.d.ts +14 -0
  6. package/lib/services/kit-translate/kit-translate.service.d.ts +9 -0
  7. package/lib/store/abstract-payload.action.d.ts +4 -0
  8. package/lib/store/store.const.d.ts +2 -0
  9. package/lib/store/store.model.d.ts +5 -0
  10. package/lib/token/kit-base-path.token.d.ts +2 -0
  11. package/lib/widgets/kit-grid-management/kit-grid-filters/kit-filter-checkbox/kit-filter-checkbox.component.d.ts +33 -0
  12. package/lib/widgets/kit-grid-management/kit-grid-filters/kit-filter-checkbox/kit-filter-checkbox.model.d.ts +5 -0
  13. package/lib/widgets/kit-grid-management/kit-grid-filters/kit-filter-date/kit-filter-date.component.d.ts +32 -0
  14. package/lib/widgets/kit-grid-management/kit-grid-filters/kit-filter-date/kit-filter-date.model.d.ts +4 -0
  15. package/lib/widgets/kit-grid-management/kit-grid-filters/kit-filter-selector/kit-filter-selector.component.d.ts +26 -0
  16. package/lib/widgets/kit-grid-management/kit-grid-filters/kit-filter-selector/kit-filter-selector.model.d.ts +7 -0
  17. package/lib/widgets/kit-grid-management/kit-grid-filters/kit-filter-text/kit-filter-text.component.d.ts +50 -0
  18. package/lib/widgets/kit-grid-management/kit-grid-filters/kit-filter-text/kit-filter-text.const.d.ts +2 -0
  19. package/lib/widgets/kit-grid-management/kit-grid-filters/kit-grid-filters.component.d.ts +24 -0
  20. package/lib/widgets/kit-grid-management/kit-grid-filters/kit-grid-filters.model.d.ts +23 -0
  21. package/lib/widgets/kit-grid-management/kit-grid-filters/kit-grid-filters.util.d.ts +8 -0
  22. package/lib/widgets/kit-grid-management/kit-grid-management.util.d.ts +3 -0
  23. package/lib/widgets/kit-grid-management/kit-grid-views/kit-grid-views-list/kit-grid-views-list.component.d.ts +50 -0
  24. package/lib/widgets/kit-grid-management/kit-grid-views/kit-grid-views-manager/kit-grid-views-manager.component.d.ts +25 -0
  25. package/lib/widgets/kit-grid-management/kit-grid-views/kit-grid-views-save/kit-grid-views-save.component.d.ts +38 -0
  26. package/lib/widgets/kit-grid-management/kit-grid-views/kit-grid-views.component.d.ts +38 -0
  27. package/lib/widgets/kit-grid-management/kit-grid-views/kit-grid-views.util.d.ts +13 -0
  28. package/lib/widgets/kit-grid-management/kit-grid-views/store/kit-grid-views.action.d.ts +23 -0
  29. package/lib/widgets/kit-grid-management/kit-grid-views/store/kit-grid-views.model.d.ts +33 -0
  30. package/lib/widgets/kit-grid-management/kit-grid-views/store/kit-grid-views.state.d.ts +25 -0
  31. package/lib/widgets/kit-grid-management/store/kit-grid.action.d.ts +25 -0
  32. package/lib/widgets/kit-grid-management/store/kit-grid.model.d.ts +18 -0
  33. package/lib/widgets/kit-grid-management/store/kit-grid.state.d.ts +18 -0
  34. package/package.json +1 -1
  35. package/public-api.d.ts +15 -0
@@ -1,9 +1,9 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Component, ChangeDetectionStrategy, Input, input, EventEmitter, ViewEncapsulation, Output, NgModule, effect, inject, ElementRef, NgZone, Renderer2, Directive, forwardRef, signal, TemplateRef, ContentChild, ViewChild, HostListener, Injectable, output, Host, Self, Inject, model, contentChildren, viewChild, ContentChildren, computed, contentChild } from '@angular/core';
2
+ import { Component, ChangeDetectionStrategy, Input, input, EventEmitter, ViewEncapsulation, Output, NgModule, effect, inject, ElementRef, NgZone, Renderer2, Directive, forwardRef, signal, TemplateRef, ContentChild, ViewChild, HostListener, Injectable, output, Host, Self, Inject, model, contentChildren, viewChild, ContentChildren, computed, contentChild, InjectionToken } from '@angular/core';
3
3
  import * as i1 from '@progress/kendo-angular-buttons';
4
4
  import { ButtonModule, ButtonGroupModule } from '@progress/kendo-angular-buttons';
5
5
  import * as i1$1 from '@angular/common';
6
- import { CommonModule, NgClass, DOCUMENT, NgTemplateOutlet, DatePipe } from '@angular/common';
6
+ import { CommonModule, NgClass, DOCUMENT, NgTemplateOutlet, DatePipe, TitleCasePipe, AsyncPipe, SlicePipe } from '@angular/common';
7
7
  import * as i1$2 from '@progress/kendo-angular-label';
8
8
  import { LabelModule } from '@progress/kendo-angular-label';
9
9
  import { TooltipDirective, TooltipSettings } from '@progress/kendo-angular-tooltip';
@@ -23,17 +23,18 @@ import * as i1$6 from 'ngx-toastr';
23
23
  import { ToastrModule, TOAST_CONFIG, DefaultGlobalConfig } from 'ngx-toastr';
24
24
  import * as i1$7 from '@angular/router';
25
25
  import { RouterModule, NavigationEnd, RouterLink } from '@angular/router';
26
- import { BehaviorSubject, filter } from 'rxjs';
26
+ import { BehaviorSubject, filter, of, tap, map, combineLatest, combineLatestWith, distinctUntilChanged } from 'rxjs';
27
27
  import { v4 } from 'uuid';
28
28
  import * as i1$8 from '@progress/kendo-angular-dialog';
29
- import { KENDO_DIALOGS, DialogActionsComponent } from '@progress/kendo-angular-dialog';
29
+ import { KENDO_DIALOGS, DialogActionsComponent, DialogContentBase, DialogCloseResult } from '@progress/kendo-angular-dialog';
30
30
  export { DialogAction, DialogCloseResult, DialogContentBase, DialogRef } from '@progress/kendo-angular-dialog';
31
31
  import * as i1$9 from '@progress/kendo-angular-indicators';
32
32
  import { IndicatorsModule } from '@progress/kendo-angular-indicators';
33
33
  import * as i2$1 from '@progress/kendo-angular-upload';
34
34
  import { UploadModule } from '@progress/kendo-angular-upload';
35
+ import * as i1$c from '@angular/common/http';
35
36
  import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';
36
- import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
37
+ import { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';
37
38
  import initials from 'initials';
38
39
  import * as i2$2 from '@progress/kendo-angular-layout';
39
40
  import { LayoutModule, TileLayoutModule } from '@progress/kendo-angular-layout';
@@ -49,6 +50,14 @@ export { pdf } from '@progress/kendo-drawing';
49
50
  import * as i2$4 from '@progress/kendo-angular-sortable';
50
51
  import { KENDO_SORTABLE } from '@progress/kendo-angular-sortable';
51
52
  import { toODataString } from '@progress/kendo-data-query';
53
+ import * as i1$b from '@ngx-translate/core';
54
+ import { TranslateModule } from '@ngx-translate/core';
55
+ import { __decorate } from 'tslib';
56
+ import * as i1$d from '@ngxs/store';
57
+ import { StateToken, Action, State, createSelector, Selector } from '@ngxs/store';
58
+ import { patch, append, removeItem, updateItem } from '@ngxs/store/operators';
59
+ import { signalSetFn, SIGNAL } from '@angular/core/primitives/signals';
60
+ import { StateReset } from 'ngxs-reset-plugin';
52
61
 
53
62
  var KitSvgIcon;
54
63
  (function (KitSvgIcon) {
@@ -4076,12 +4085,9 @@ class KitNavigationMenuComponent {
4076
4085
  items.forEach(item => item.expanded = false);
4077
4086
  }
4078
4087
  toggleItem(item) {
4079
- if (this.collapsed()) {
4088
+ if (this.collapsed() || (!this.selectedAppsItems() && this.selectedItem() === item)) {
4080
4089
  this.kitNavigationMenuService.setCollapsedState(!this.collapsed());
4081
4090
  }
4082
- else {
4083
- !this.selectedAppsItems() && this.kitNavigationMenuService.setCollapsedState(true);
4084
- }
4085
4091
  item.expanded = !item.expanded;
4086
4092
  }
4087
4093
  updateMenuState() {
@@ -6342,11 +6348,1272 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImpor
6342
6348
 
6343
6349
  const kitDataStateToODataString = (state) => toODataString(state);
6344
6350
 
6351
+ const KIT_BASE_PATH = new InjectionToken('kitBasePath');
6352
+
6353
+ const kitTranslations = {
6354
+ en: {
6355
+ kit: {
6356
+ views: {
6357
+ save: 'Save',
6358
+ cancel: 'Cancel',
6359
+ apply: 'Apply',
6360
+ newView: 'New View',
6361
+ enterText: 'Enter Text',
6362
+ overrideMessage: 'Existing view will be overridden',
6363
+ invalidMessage: 'Special characters are not allowed',
6364
+ noUnsavedChanges: 'No unsaved changes',
6365
+ manageViews: 'Manage Views',
6366
+ views: 'Views',
6367
+ },
6368
+ filters: {
6369
+ addNewFilter: 'Add New Filter',
6370
+ chooseDateFrom: 'Choose Date From',
6371
+ chooseDateTo: 'Choose Date To',
6372
+ clear: 'Clear',
6373
+ apply: 'Apply',
6374
+ search: 'Search',
6375
+ logic: {
6376
+ or: 'Or',
6377
+ and: 'And',
6378
+ },
6379
+ operator: {
6380
+ contains: 'Contains',
6381
+ eq: 'Is equal to',
6382
+ isnotnull: 'Has value',
6383
+ isnull: 'Has no value',
6384
+ neq: 'Is not equal to',
6385
+ startswith: 'Starts with',
6386
+ endswith: 'Ends with',
6387
+ doesnotcontain: 'Does not contain',
6388
+ },
6389
+ },
6390
+ },
6391
+ },
6392
+ };
6393
+
6394
+ class KitTranslateService {
6395
+ constructor(translateService) {
6396
+ this.translateService = translateService;
6397
+ }
6398
+ registerTranslations() {
6399
+ Object.keys(kitTranslations).forEach(lang => {
6400
+ this.translateService.setTranslation(lang, kitTranslations[lang], true);
6401
+ });
6402
+ }
6403
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: KitTranslateService, deps: [{ token: i1$b.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
6404
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: KitTranslateService, providedIn: 'root' }); }
6405
+ }
6406
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: KitTranslateService, decorators: [{
6407
+ type: Injectable,
6408
+ args: [{
6409
+ providedIn: 'root',
6410
+ }]
6411
+ }], ctorParameters: () => [{ type: i1$b.TranslateService }] });
6412
+
6413
+ class AbstractPayloadAction {
6414
+ constructor(payload) {
6415
+ this.payload = payload;
6416
+ }
6417
+ }
6418
+
6419
+ class SetGridSkip extends AbstractPayloadAction {
6420
+ static { this.type = '[Grid] SetSkip'; }
6421
+ }
6422
+ class SetGridSort extends AbstractPayloadAction {
6423
+ static { this.type = '[Grid] SetSort'; }
6424
+ }
6425
+ class SetGridColumns extends AbstractPayloadAction {
6426
+ static { this.type = '[Grid] SetColumns'; }
6427
+ }
6428
+ class AddGridFilter extends AbstractPayloadAction {
6429
+ static { this.type = '[Grid] AddFilter'; }
6430
+ }
6431
+ class RemoveGridFilter extends AbstractPayloadAction {
6432
+ static { this.type = '[Grid] RemoveFilter'; }
6433
+ }
6434
+ class UpdateGridFilter extends AbstractPayloadAction {
6435
+ static { this.type = '[Grid] UpdateFilter'; }
6436
+ }
6437
+ class SetGridFilters extends AbstractPayloadAction {
6438
+ static { this.type = '[Grid] SetFilters'; }
6439
+ }
6440
+
6441
+ const KIT_GRID_STATE_TOKEN = new StateToken('grid');
6442
+ let KitGridState = class KitGridState {
6443
+ setGridSkip(ctx, action) {
6444
+ ctx.setState(patch({
6445
+ skip: action.payload,
6446
+ }));
6447
+ }
6448
+ setGridSort(ctx, action) {
6449
+ ctx.setState(patch({
6450
+ sort: action.payload,
6451
+ }));
6452
+ }
6453
+ setGridColumns(ctx, action) {
6454
+ ctx.setState(patch({
6455
+ columns: action.payload,
6456
+ }));
6457
+ }
6458
+ addGridFilter(ctx, action) {
6459
+ const items = ctx.getState().filter;
6460
+ return of(items).pipe(tap(() => ctx.setState(patch({
6461
+ filter: append([action.payload]),
6462
+ }))));
6463
+ }
6464
+ removeGridFilter(ctx, action) {
6465
+ const items = ctx.getState().filter;
6466
+ return of(items).pipe(tap(() => ctx.setState(patch({
6467
+ filter: removeItem(item => item.field === action.payload),
6468
+ }))));
6469
+ }
6470
+ updateGridFilter(ctx, action) {
6471
+ const items = ctx.getState().filter;
6472
+ return of(items).pipe(tap(() => ctx.setState(patch({
6473
+ filter: updateItem(item => item.field === action.payload.field, action.payload),
6474
+ }))));
6475
+ }
6476
+ setGridFilters(ctx, action) {
6477
+ return of(action.payload).pipe(tap(filters => ctx.setState(patch({
6478
+ filter: filters,
6479
+ }))));
6480
+ }
6481
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: KitGridState, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
6482
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: KitGridState }); }
6483
+ };
6484
+ __decorate([
6485
+ Action(SetGridSkip)
6486
+ ], KitGridState.prototype, "setGridSkip", null);
6487
+ __decorate([
6488
+ Action(SetGridSort)
6489
+ ], KitGridState.prototype, "setGridSort", null);
6490
+ __decorate([
6491
+ Action(SetGridColumns)
6492
+ ], KitGridState.prototype, "setGridColumns", null);
6493
+ __decorate([
6494
+ Action(AddGridFilter)
6495
+ ], KitGridState.prototype, "addGridFilter", null);
6496
+ __decorate([
6497
+ Action(RemoveGridFilter)
6498
+ ], KitGridState.prototype, "removeGridFilter", null);
6499
+ __decorate([
6500
+ Action(UpdateGridFilter)
6501
+ ], KitGridState.prototype, "updateGridFilter", null);
6502
+ __decorate([
6503
+ Action(SetGridFilters)
6504
+ ], KitGridState.prototype, "setGridFilters", null);
6505
+ KitGridState = __decorate([
6506
+ State({
6507
+ name: KIT_GRID_STATE_TOKEN,
6508
+ defaults: {
6509
+ skip: 0,
6510
+ sort: [],
6511
+ filter: [],
6512
+ columns: [],
6513
+ },
6514
+ })
6515
+ ], KitGridState);
6516
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: KitGridState, decorators: [{
6517
+ type: Injectable
6518
+ }], propDecorators: { setGridSkip: [], setGridSort: [], setGridColumns: [], addGridFilter: [], removeGridFilter: [], updateGridFilter: [], setGridFilters: [] } });
6519
+
6520
+ const kitBuildGridColumn = (field, title, type, sortable = true, hidden = false, width, filterType) => ({
6521
+ field,
6522
+ title,
6523
+ sortable,
6524
+ hidden,
6525
+ width,
6526
+ filterType,
6527
+ type,
6528
+ });
6529
+
6530
+ var KitGridViewType;
6531
+ (function (KitGridViewType) {
6532
+ KitGridViewType["SYSTEM"] = "system";
6533
+ KitGridViewType["USER"] = "user";
6534
+ KitGridViewType["CONFIG"] = "config";
6535
+ })(KitGridViewType || (KitGridViewType = {}));
6536
+
6537
+ const filterDuplicateGridViews = (views) => views.filter((item, index, arr) => {
6538
+ const duplicateItems = arr.filter(i => i.title === item.title);
6539
+ return duplicateItems.length <= 1 || item.type !== KitGridViewType.SYSTEM;
6540
+ });
6541
+ const findGridViewByName = (views, name) => views.find(view => view.title === name && view.type === KitGridViewType.USER && !view.hidden) ??
6542
+ views.find(view => view.title === name && !view.hidden) ??
6543
+ null;
6544
+ const buildGridViewColumns = (columns) => columns.map(column => ({
6545
+ field: column.field,
6546
+ hidden: column.hidden,
6547
+ }));
6548
+ const hasOverriddenSystemView = (name, views) => views.some(item => item.type === KitGridViewType.SYSTEM && item.title === name);
6549
+ const buildGridColumns = (columns, viewColumns) => viewColumns.map(viewColumn => {
6550
+ const matchingColumn = columns.find(column => column.field === viewColumn.field);
6551
+ return matchingColumn && { ...matchingColumn, hidden: viewColumn.hidden } || null;
6552
+ }).filter(column => !!column);
6553
+ const navigateToView = (name, router, activatedRoute) => {
6554
+ const routePath = kitEncodeViewNameToUrl(name.toLowerCase());
6555
+ router.navigate([`../${routePath}`], { relativeTo: activatedRoute });
6556
+ };
6557
+ const kitEncodeViewNameToUrl = (name) => name.split(' ').join('-');
6558
+ const decodeViewNameFromUrl = (name) => name.split('-').join(' ');
6559
+ const isViewNameValid = (name) => {
6560
+ const specialChars = '!@#$%^&*()_+[]{}|;:,.<>?/~`-=';
6561
+ return [...specialChars].every(item => !name.includes(item));
6562
+ };
6563
+ const getInputMessage = (views, viewName) => {
6564
+ if (!isViewNameValid(viewName)) {
6565
+ return 'kit.views.invalidMessage';
6566
+ }
6567
+ const isViewExist = !!views.find(item => item.title === viewName);
6568
+ return isViewExist && 'kit.views.overrideMessage' || '';
6569
+ };
6570
+
6571
+ class FetchGridViews extends AbstractPayloadAction {
6572
+ static { this.type = '[GridViews] Fetch'; }
6573
+ }
6574
+ class AddGridView extends AbstractPayloadAction {
6575
+ static { this.type = '[GridView] Add'; }
6576
+ }
6577
+ class RemoveGridView extends AbstractPayloadAction {
6578
+ static { this.type = '[GridView] Remove'; }
6579
+ }
6580
+ class SetGridViews extends AbstractPayloadAction {
6581
+ static { this.type = '[GridViews] Set'; }
6582
+ }
6583
+ class FetchGridViewsConfig extends AbstractPayloadAction {
6584
+ static { this.type = '[GridViews] FetchConfig'; }
6585
+ }
6586
+ class UpdateGridViewsConfig extends AbstractPayloadAction {
6587
+ static { this.type = '[GridViews] UpdateConfig'; }
6588
+ }
6589
+ class SetSelectedView extends AbstractPayloadAction {
6590
+ static { this.type = '[GridViews] SetSelectedView'; }
6591
+ }
6592
+
6593
+ const apiResponseDefaultEntities = () => ({
6594
+ data: [],
6595
+ total: 0,
6596
+ loading: true,
6597
+ });
6598
+
6599
+ class KitSettingsApiService {
6600
+ constructor(httpClient, basePath) {
6601
+ this.httpClient = httpClient;
6602
+ this.basePath = basePath;
6603
+ }
6604
+ getSettingsByGroup(group) {
6605
+ const url = `${this.basePath}/users/me/settings/groups/${group}`;
6606
+ return this.httpClient.get(url);
6607
+ }
6608
+ setSettingByKey(key, settingValue) {
6609
+ const url = `${this.basePath}/users/me/settings/${key}`;
6610
+ return this.httpClient.put(url, settingValue);
6611
+ }
6612
+ deleteSettingByGroupAndKey(key, group) {
6613
+ const url = `${this.basePath}/users/me/settings/groups/${group}/${key}`;
6614
+ return this.httpClient.delete(url);
6615
+ }
6616
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: KitSettingsApiService, deps: [{ token: i1$c.HttpClient }, { token: KIT_BASE_PATH }], target: i0.ɵɵFactoryTarget.Injectable }); }
6617
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: KitSettingsApiService, providedIn: 'root' }); }
6618
+ }
6619
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: KitSettingsApiService, decorators: [{
6620
+ type: Injectable,
6621
+ args: [{
6622
+ providedIn: 'root',
6623
+ }]
6624
+ }], ctorParameters: () => [{ type: i1$c.HttpClient }, { type: undefined, decorators: [{
6625
+ type: Inject,
6626
+ args: [KIT_BASE_PATH]
6627
+ }] }] });
6628
+
6629
+ var KitGridViewsState_1;
6630
+ const KIT_GRID_VIEWS_STATE_TOKEN = new StateToken('gridViews');
6631
+ let KitGridViewsState = class KitGridViewsState {
6632
+ static { KitGridViewsState_1 = this; }
6633
+ constructor(settingsService) {
6634
+ this.settingsService = settingsService;
6635
+ }
6636
+ fetchGridViews(ctx, action) {
6637
+ return this.settingsService.getSettingsByGroup(action.payload.group).pipe(map(settings => settings.map(setting => ({
6638
+ title: setting.key,
6639
+ group: setting.group,
6640
+ type: KitGridViewType.USER,
6641
+ value: setting.value && JSON.parse(setting.value),
6642
+ }))), map(values => ([
6643
+ ...action.payload.defaultItems ?? [],
6644
+ ...values,
6645
+ ])), tap(data => ctx.setState(patch({
6646
+ loading: false,
6647
+ data: patch({
6648
+ views: data,
6649
+ }),
6650
+ }))));
6651
+ }
6652
+ addGridView(ctx, action) {
6653
+ const items = ctx.getState().data.views;
6654
+ const formattedPayload = { ...action.payload, title: action.payload.title.toLowerCase() };
6655
+ const { title, group, value } = formattedPayload;
6656
+ const settingValue = {
6657
+ group,
6658
+ value: JSON.stringify(value),
6659
+ };
6660
+ return this.settingsService.setSettingByKey(title, settingValue).pipe(tap(() => {
6661
+ const viewExists = items.some(item => this.hasUserView(item, title));
6662
+ ctx.setState(patch({
6663
+ data: patch({
6664
+ views: viewExists && updateItem(item => this.hasUserView(item, title), formattedPayload) || append([formattedPayload]),
6665
+ }),
6666
+ }));
6667
+ }));
6668
+ }
6669
+ removeGridView(ctx, action) {
6670
+ const { title, group } = action.payload;
6671
+ return this.settingsService.deleteSettingByGroupAndKey(title, group ?? '').pipe(tap(() => ctx.setState(patch({
6672
+ data: patch({
6673
+ views: removeItem(item => this.hasUserView(item, title)),
6674
+ }),
6675
+ }))));
6676
+ }
6677
+ setGridViews(ctx, action) {
6678
+ return of(action.payload).pipe(tap(() => ctx.setState(patch({
6679
+ data: patch({
6680
+ views: action.payload,
6681
+ }),
6682
+ }))));
6683
+ }
6684
+ fetchGridViewsConfig(ctx, action) {
6685
+ return this.settingsService.getSettingsByGroup(action.payload).pipe(map(settings => settings.map(setting => ({
6686
+ title: setting.key,
6687
+ group: setting.group,
6688
+ type: KitGridViewType.CONFIG,
6689
+ value: setting.value && JSON.parse(setting.value),
6690
+ }))), tap(values => ctx.setState(patch({
6691
+ data: patch({
6692
+ config: values[0],
6693
+ }),
6694
+ }))));
6695
+ }
6696
+ updateGridViewsConfig(ctx, action) {
6697
+ const { title, group, value } = action.payload;
6698
+ const settingValue = {
6699
+ group,
6700
+ value: JSON.stringify(value),
6701
+ };
6702
+ return this.settingsService.setSettingByKey(title, settingValue).pipe(tap(() => ctx.setState(patch({
6703
+ data: patch({
6704
+ config: action.payload,
6705
+ }),
6706
+ }))));
6707
+ }
6708
+ setSelectedView(ctx, action) {
6709
+ return of(action.payload).pipe(tap(() => ctx.setState(patch({
6710
+ data: patch({
6711
+ selectedView: action.payload,
6712
+ }),
6713
+ }))));
6714
+ }
6715
+ static getViews() {
6716
+ return createSelector([KitGridViewsState_1], (gridViewsState) => {
6717
+ const views = gridViewsState?.data?.views ?? [];
6718
+ const viewsConfig = gridViewsState?.data?.config?.value?.config ?? null;
6719
+ if (!viewsConfig) {
6720
+ return views;
6721
+ }
6722
+ const areViewsEqual = (firstView, secondView) => firstView.title === secondView.title && firstView.type === secondView.type;
6723
+ const updatedViews = views.map(view => {
6724
+ const configItem = viewsConfig.find(item => areViewsEqual(item, view)) ?? null;
6725
+ return configItem && { ...view, hidden: configItem.hidden } || view;
6726
+ });
6727
+ const existingViews = updatedViews.filter(view => viewsConfig.some(config => areViewsEqual(config, view)));
6728
+ const newViews = updatedViews.filter(view => !viewsConfig.some(config => areViewsEqual(config, view)));
6729
+ return [
6730
+ ...existingViews.sort((a, b) => viewsConfig.findIndex(c => areViewsEqual(c, a)) - viewsConfig.findIndex(c => areViewsEqual(c, b))),
6731
+ ...newViews,
6732
+ ];
6733
+ });
6734
+ }
6735
+ hasUserView(item, title) {
6736
+ return item.type === KitGridViewType.USER && item.title === title;
6737
+ }
6738
+ static selectedView(state) {
6739
+ return state.data.selectedView;
6740
+ }
6741
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: KitGridViewsState, deps: [{ token: KitSettingsApiService }], target: i0.ɵɵFactoryTarget.Injectable }); }
6742
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: KitGridViewsState }); }
6743
+ };
6744
+ __decorate([
6745
+ Action(FetchGridViews)
6746
+ ], KitGridViewsState.prototype, "fetchGridViews", null);
6747
+ __decorate([
6748
+ Action(AddGridView)
6749
+ ], KitGridViewsState.prototype, "addGridView", null);
6750
+ __decorate([
6751
+ Action(RemoveGridView)
6752
+ ], KitGridViewsState.prototype, "removeGridView", null);
6753
+ __decorate([
6754
+ Action(SetGridViews)
6755
+ ], KitGridViewsState.prototype, "setGridViews", null);
6756
+ __decorate([
6757
+ Action(FetchGridViewsConfig)
6758
+ ], KitGridViewsState.prototype, "fetchGridViewsConfig", null);
6759
+ __decorate([
6760
+ Action(UpdateGridViewsConfig)
6761
+ ], KitGridViewsState.prototype, "updateGridViewsConfig", null);
6762
+ __decorate([
6763
+ Action(SetSelectedView)
6764
+ ], KitGridViewsState.prototype, "setSelectedView", null);
6765
+ __decorate([
6766
+ Selector()
6767
+ ], KitGridViewsState, "selectedView", null);
6768
+ KitGridViewsState = KitGridViewsState_1 = __decorate([
6769
+ State({
6770
+ name: KIT_GRID_VIEWS_STATE_TOKEN,
6771
+ defaults: apiResponseDefaultEntities(),
6772
+ })
6773
+ ], KitGridViewsState);
6774
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: KitGridViewsState, decorators: [{
6775
+ type: Injectable
6776
+ }], ctorParameters: () => [{ type: KitSettingsApiService }], propDecorators: { fetchGridViews: [], addGridView: [], removeGridView: [], setGridViews: [], fetchGridViewsConfig: [], updateGridViewsConfig: [], setSelectedView: [] } });
6777
+
6778
+ class KitGridViewsManagerComponent extends DialogContentBase {
6779
+ constructor(store, dialog) {
6780
+ super(dialog);
6781
+ this.store = store;
6782
+ this.dialog = dialog;
6783
+ this.configGroup = input.required();
6784
+ this.items = signal(this.store.selectSnapshot(KitGridViewsState.getViews()) ?? []);
6785
+ this.kitButtonKind = KitButtonKind;
6786
+ this.kitButtonType = KitButtonType;
6787
+ this.kitSvgIcon = KitSvgIcon;
6788
+ this.kitSvgIconType = KitSvgIconType;
6789
+ }
6790
+ applyChanges() {
6791
+ const existingViews = this.store.selectSnapshot(KIT_GRID_VIEWS_STATE_TOKEN).data.views;
6792
+ const viewsToRemove = existingViews
6793
+ .filter(view => !this.items()
6794
+ .some(item => item.title === view.title && item.type === view.type));
6795
+ const viewsToSave = this.items().map(({ value, ...item }) => item);
6796
+ const viewConfig = {
6797
+ title: this.configGroup(),
6798
+ group: this.configGroup(),
6799
+ type: KitGridViewType.CONFIG,
6800
+ value: {
6801
+ config: viewsToSave,
6802
+ },
6803
+ };
6804
+ this.store.dispatch([
6805
+ ...viewsToRemove.map(view => new RemoveGridView(view)),
6806
+ new SetGridViews(this.items()),
6807
+ new UpdateGridViewsConfig(viewConfig),
6808
+ ]).subscribe(() => this.dialog.close(true));
6809
+ }
6810
+ close() {
6811
+ this.dialog.close();
6812
+ }
6813
+ onColumnVisibilityChange(event, view) {
6814
+ this.items.update(items => items
6815
+ .map(item => (item.title === view.title && item.type === view.type) && { ...item, hidden: !event } || item));
6816
+ }
6817
+ isSystemView(item) {
6818
+ return item.type === KitGridViewType.SYSTEM;
6819
+ }
6820
+ onViewRemove(view) {
6821
+ this.items.update(items => items.filter(item => item.title !== view.title || item.type === KitGridViewType.SYSTEM));
6822
+ }
6823
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: KitGridViewsManagerComponent, deps: [{ token: i1$d.Store }, { token: i1$8.DialogRef }], target: i0.ɵɵFactoryTarget.Component }); }
6824
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.4", type: KitGridViewsManagerComponent, isStandalone: true, selector: "kit-grid-views-manager", inputs: { configGroup: { classPropertyName: "configGroup", publicName: "configGroup", isSignal: true, isRequired: true, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: "<div class=\"kit-grid-views-manager\">\n <kit-sortable itemClass=\"item\"\n activeItemClass=\"item active\"\n [columnCount]=\"2\"\n [items]=\"items()\">\n <ng-template let-item>\n <div class=\"item-wrapper\"\n [ngClass]=\"item.type\">\n <kit-svg-icon class=\"item-icon-menu\"\n [ngClass]=\"{ hidden: item.hidden }\"\n [icon]=\"kitSvgIcon.MENU\"\n ></kit-svg-icon>\n @if (item.hidden) {\n <kit-svg-icon class=\"item-icon-checkbox hidden\"\n [icon]=\"kitSvgIcon.EYE_CLOSE\"\n (click)=\"onColumnVisibilityChange(true, item)\"\n ></kit-svg-icon>\n } @else {\n <kit-svg-icon class=\"item-icon-checkbox\"\n [ngClass]=\"{ disabled: isSystemView(item) }\"\n [icon]=\"kitSvgIcon.EYE_OPEN\"\n (click)=\"onColumnVisibilityChange(false, item)\"\n ></kit-svg-icon>\n }\n <div class=\"item-label\">\n <kit-truncate-text>{{ item.title | titlecase }}</kit-truncate-text>\n </div>\n @if (isSystemView(item)) {\n <kit-svg-icon class=\"item-icon-system\"\n [icon]=\"kitSvgIcon.GLOBAL\"\n ></kit-svg-icon>\n }\n <kit-button [disabled]=\"isSystemView(item)\"\n [type]=\"kitButtonType.LINK\"\n [kind]=\"kitButtonKind.SMALL\"\n [icon]=\"kitSvgIcon.CIRCLE_MINUS\"\n [iconType]=\"kitSvgIconType.STROKE\"\n (clicked)=\"onViewRemove(item)\"\n ></kit-button>\n </div>\n </ng-template>\n </kit-sortable>\n\n <kit-dialog-actions>\n <kit-button [label]=\"'kit.views.cancel' | translate\"\n [kind]=\"kitButtonKind.MEDIUM\"\n [type]=\"kitButtonType.GHOST\"\n (clicked)=\"close()\"\n ></kit-button>\n <kit-button [label]=\"'kit.views.apply' | translate\"\n [kind]=\"kitButtonKind.MEDIUM\"\n (clicked)=\"applyChanges()\"\n ></kit-button>\n </kit-dialog-actions>\n</div>\n", styles: [".kit-grid-views-manager{width:452px}.kit-grid-views-manager ::ng-deep .kit-sortable{margin:0 -24px;column-gap:0;column-rule:1px solid var(--color-grey-6)}.kit-grid-views-manager ::ng-deep .item{margin-bottom:8px;padding:8px 25px;min-width:250px;border-radius:8px;box-sizing:border-box;cursor:pointer}.kit-grid-views-manager ::ng-deep .item-wrapper{display:flex;align-items:center;gap:8px}.kit-grid-views-manager ::ng-deep .item .system .item-label{color:var(--color-blue-4)}.kit-grid-views-manager ::ng-deep .item .system .item-icon-system{stroke:var(--color-blue-4)}.kit-grid-views-manager ::ng-deep .item:hover .item-icon{fill:var(--color-hover)}.kit-grid-views-manager ::ng-deep .item-label{flex:1;color:var(--color-grey-4);font-size:14px;font-weight:400;line-height:22px;max-width:110px}.kit-grid-views-manager ::ng-deep .item-icon-menu{margin-right:8px;width:12px;height:12px;fill:var(--color-main)}.kit-grid-views-manager ::ng-deep .item-icon-menu.hidden{fill:var(--color-grey-8)}.kit-grid-views-manager ::ng-deep .item-icon-checkbox{width:18px;height:18px;fill:var(--color-main)}.kit-grid-views-manager ::ng-deep .item-icon-checkbox.disabled{cursor:none;pointer-events:none}.kit-grid-views-manager ::ng-deep .item-icon-checkbox.disabled,.kit-grid-views-manager ::ng-deep .item-icon-checkbox.hidden{fill:var(--color-grey-8)}.kit-grid-views-manager ::ng-deep .item-icon-system{width:18px;height:18px;stroke:var(--color-grey-8);fill:none}.kit-grid-views-manager ::ng-deep .item.active{box-shadow:4px 4px 8px #0003;background:var(--ui-kit-color-white)}.kit-grid-views-manager ::ng-deep .item.active .item-icon{fill:var(--color-main)}\n"], dependencies: [{ kind: "ngmodule", type: KitButtonModule }, { kind: "component", type: KitButtonComponent, selector: "kit-button", inputs: ["disabled", "label", "type", "icon", "iconType", "kind", "state", "iconPosition", "buttonClass", "active"], outputs: ["clicked"] }, { kind: "component", type: KitSortableComponent, selector: "kit-sortable", inputs: ["items", "columnCount", "itemClass", "activeItemClass"] }, { kind: "ngmodule", type: KitSvgIconModule }, { kind: "component", type: KitSvgIconComponent, selector: "kit-svg-icon", inputs: ["icon", "iconClass"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$b.TranslatePipe, name: "translate" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: KitDialogActionsComponent, selector: "kit-dialog-actions" }, { kind: "pipe", type: TitleCasePipe, name: "titlecase" }, { kind: "component", type: KitTruncateTextComponent, selector: "kit-truncate-text" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6825
+ }
6826
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: KitGridViewsManagerComponent, decorators: [{
6827
+ type: Component,
6828
+ args: [{ selector: 'kit-grid-views-manager', imports: [
6829
+ KitButtonModule,
6830
+ KitSortableComponent,
6831
+ KitSvgIconModule,
6832
+ TranslateModule,
6833
+ NgClass,
6834
+ KitDialogActionsComponent,
6835
+ TitleCasePipe,
6836
+ KitTruncateTextComponent,
6837
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"kit-grid-views-manager\">\n <kit-sortable itemClass=\"item\"\n activeItemClass=\"item active\"\n [columnCount]=\"2\"\n [items]=\"items()\">\n <ng-template let-item>\n <div class=\"item-wrapper\"\n [ngClass]=\"item.type\">\n <kit-svg-icon class=\"item-icon-menu\"\n [ngClass]=\"{ hidden: item.hidden }\"\n [icon]=\"kitSvgIcon.MENU\"\n ></kit-svg-icon>\n @if (item.hidden) {\n <kit-svg-icon class=\"item-icon-checkbox hidden\"\n [icon]=\"kitSvgIcon.EYE_CLOSE\"\n (click)=\"onColumnVisibilityChange(true, item)\"\n ></kit-svg-icon>\n } @else {\n <kit-svg-icon class=\"item-icon-checkbox\"\n [ngClass]=\"{ disabled: isSystemView(item) }\"\n [icon]=\"kitSvgIcon.EYE_OPEN\"\n (click)=\"onColumnVisibilityChange(false, item)\"\n ></kit-svg-icon>\n }\n <div class=\"item-label\">\n <kit-truncate-text>{{ item.title | titlecase }}</kit-truncate-text>\n </div>\n @if (isSystemView(item)) {\n <kit-svg-icon class=\"item-icon-system\"\n [icon]=\"kitSvgIcon.GLOBAL\"\n ></kit-svg-icon>\n }\n <kit-button [disabled]=\"isSystemView(item)\"\n [type]=\"kitButtonType.LINK\"\n [kind]=\"kitButtonKind.SMALL\"\n [icon]=\"kitSvgIcon.CIRCLE_MINUS\"\n [iconType]=\"kitSvgIconType.STROKE\"\n (clicked)=\"onViewRemove(item)\"\n ></kit-button>\n </div>\n </ng-template>\n </kit-sortable>\n\n <kit-dialog-actions>\n <kit-button [label]=\"'kit.views.cancel' | translate\"\n [kind]=\"kitButtonKind.MEDIUM\"\n [type]=\"kitButtonType.GHOST\"\n (clicked)=\"close()\"\n ></kit-button>\n <kit-button [label]=\"'kit.views.apply' | translate\"\n [kind]=\"kitButtonKind.MEDIUM\"\n (clicked)=\"applyChanges()\"\n ></kit-button>\n </kit-dialog-actions>\n</div>\n", styles: [".kit-grid-views-manager{width:452px}.kit-grid-views-manager ::ng-deep .kit-sortable{margin:0 -24px;column-gap:0;column-rule:1px solid var(--color-grey-6)}.kit-grid-views-manager ::ng-deep .item{margin-bottom:8px;padding:8px 25px;min-width:250px;border-radius:8px;box-sizing:border-box;cursor:pointer}.kit-grid-views-manager ::ng-deep .item-wrapper{display:flex;align-items:center;gap:8px}.kit-grid-views-manager ::ng-deep .item .system .item-label{color:var(--color-blue-4)}.kit-grid-views-manager ::ng-deep .item .system .item-icon-system{stroke:var(--color-blue-4)}.kit-grid-views-manager ::ng-deep .item:hover .item-icon{fill:var(--color-hover)}.kit-grid-views-manager ::ng-deep .item-label{flex:1;color:var(--color-grey-4);font-size:14px;font-weight:400;line-height:22px;max-width:110px}.kit-grid-views-manager ::ng-deep .item-icon-menu{margin-right:8px;width:12px;height:12px;fill:var(--color-main)}.kit-grid-views-manager ::ng-deep .item-icon-menu.hidden{fill:var(--color-grey-8)}.kit-grid-views-manager ::ng-deep .item-icon-checkbox{width:18px;height:18px;fill:var(--color-main)}.kit-grid-views-manager ::ng-deep .item-icon-checkbox.disabled{cursor:none;pointer-events:none}.kit-grid-views-manager ::ng-deep .item-icon-checkbox.disabled,.kit-grid-views-manager ::ng-deep .item-icon-checkbox.hidden{fill:var(--color-grey-8)}.kit-grid-views-manager ::ng-deep .item-icon-system{width:18px;height:18px;stroke:var(--color-grey-8);fill:none}.kit-grid-views-manager ::ng-deep .item.active{box-shadow:4px 4px 8px #0003;background:var(--ui-kit-color-white)}.kit-grid-views-manager ::ng-deep .item.active .item-icon{fill:var(--color-main)}\n"] }]
6838
+ }], ctorParameters: () => [{ type: i1$d.Store }, { type: i1$8.DialogRef }] });
6839
+
6840
+ class KitGridViewsListComponent {
6841
+ constructor(activatedRoute, router, store, kitDialogService, translateService, viewContainerRef) {
6842
+ this.activatedRoute = activatedRoute;
6843
+ this.router = router;
6844
+ this.store = store;
6845
+ this.kitDialogService = kitDialogService;
6846
+ this.translateService = translateService;
6847
+ this.viewContainerRef = viewContainerRef;
6848
+ this.viewGroup = input.required();
6849
+ this.viewConfigGroup = input.required();
6850
+ this.views = input.required();
6851
+ this.defaultColumns = input.required();
6852
+ this.defaultSorting = input.required();
6853
+ this.defaultViewName = input.required();
6854
+ this.anchor = viewChild.required('toggleButton', { read: ElementRef });
6855
+ this.popup = viewChild('popup', { read: KitPopupComponent });
6856
+ this.viewName = signal('');
6857
+ this.createViewPopupVisible = signal(false);
6858
+ this.kitButtonType = KitButtonType;
6859
+ this.kitButtonKind = KitButtonKind;
6860
+ this.kitSvgIcon = KitSvgIcon;
6861
+ this.kitSvgIconType = KitSvgIconType;
6862
+ this.kitButtonIconPosition = KitButtonIconPosition;
6863
+ this.gridViewType = KitGridViewType;
6864
+ this.kitTextboxState = KitTextboxState;
6865
+ this.selectedView = this.store.selectSignal(KitGridViewsState.selectedView);
6866
+ }
6867
+ get isViewNameValid() {
6868
+ return isViewNameValid(this.viewName());
6869
+ }
6870
+ get inputMessage() {
6871
+ const infoMessage = getInputMessage(this.views(), this.viewName().toLowerCase());
6872
+ return infoMessage && this.translateService.instant(infoMessage) || '';
6873
+ }
6874
+ onViewSelect(item) {
6875
+ navigateToView(item.title, this.router, this.activatedRoute);
6876
+ this.popup()?.close();
6877
+ this.store.dispatch(new SetSelectedView(item));
6878
+ }
6879
+ newViewToggle(visible) {
6880
+ this.viewName.set('');
6881
+ setTimeout(() => this.createViewPopupVisible.set(visible));
6882
+ }
6883
+ onPopupToggle() {
6884
+ this.viewName.set('');
6885
+ this.createViewPopupVisible.set(false);
6886
+ this.popup()?.toggle();
6887
+ }
6888
+ onViewCreate() {
6889
+ const view = {
6890
+ title: this.viewName(),
6891
+ group: this.viewGroup(),
6892
+ type: KitGridViewType.USER,
6893
+ value: {
6894
+ filter: [],
6895
+ sort: this.defaultSorting(),
6896
+ columns: this.defaultColumns(),
6897
+ },
6898
+ };
6899
+ this.store.dispatch(new AddGridView(view)).subscribe(() => {
6900
+ navigateToView(this.viewName().toLowerCase(), this.router, this.activatedRoute);
6901
+ this.viewName.set('');
6902
+ this.popup()?.close();
6903
+ this.store.dispatch(new SetSelectedView(view));
6904
+ });
6905
+ }
6906
+ openViewsManagerModal() {
6907
+ this.popup()?.close();
6908
+ this.kitDialogService.openDialog({
6909
+ title: this.translateService.instant('kit.views.views'),
6910
+ content: KitGridViewsManagerComponent,
6911
+ appendTo: this.viewContainerRef,
6912
+ });
6913
+ signalSetFn(this.kitDialogService.dialogInstance.configGroup[SIGNAL], this.viewConfigGroup());
6914
+ this.kitDialogService.dialogRef?.result.pipe(filter(result => !(result instanceof DialogCloseResult))).subscribe(() => this.handleViewChange());
6915
+ }
6916
+ handleViewChange() {
6917
+ const view = findGridViewByName(this.views(), this.selectedView()?.title ?? '');
6918
+ return view
6919
+ ? this.store.dispatch(new SetSelectedView(view))
6920
+ : navigateToView(this.defaultViewName(), this.router, this.activatedRoute);
6921
+ }
6922
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: KitGridViewsListComponent, deps: [{ token: i1$7.ActivatedRoute }, { token: i1$7.Router }, { token: i1$d.Store }, { token: KitDialogService }, { token: i1$b.TranslateService }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component }); }
6923
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.4", type: KitGridViewsListComponent, isStandalone: true, selector: "kit-grid-views-list", inputs: { viewGroup: { classPropertyName: "viewGroup", publicName: "viewGroup", isSignal: true, isRequired: true, transformFunction: null }, viewConfigGroup: { classPropertyName: "viewConfigGroup", publicName: "viewConfigGroup", isSignal: true, isRequired: true, transformFunction: null }, views: { classPropertyName: "views", publicName: "views", isSignal: true, isRequired: true, transformFunction: null }, defaultColumns: { classPropertyName: "defaultColumns", publicName: "defaultColumns", isSignal: true, isRequired: true, transformFunction: null }, defaultSorting: { classPropertyName: "defaultSorting", publicName: "defaultSorting", isSignal: true, isRequired: true, transformFunction: null }, defaultViewName: { classPropertyName: "defaultViewName", publicName: "defaultViewName", isSignal: true, isRequired: true, transformFunction: null } }, viewQueries: [{ propertyName: "anchor", first: true, predicate: ["toggleButton"], descendants: true, read: ElementRef, isSignal: true }, { propertyName: "popup", first: true, predicate: ["popup"], descendants: true, read: KitPopupComponent, isSignal: true }], ngImport: i0, template: "<kit-button #toggleButton\n [label]=\"(selectedView()?.title ?? '') | titlecase\"\n [type]=\"kitButtonType.GHOST\"\n [kind]=\"kitButtonKind.MEDIUM\"\n [icon]=\"kitSvgIcon.CHEVRON_DOWN\"\n [iconType]=\"kitSvgIconType.STROKE\"\n [active]=\"popup.isPopupOpen\"\n (clicked)=\"onPopupToggle()\"\n></kit-button>\n\n<kit-popup #popup\n popupClass=\"kit-grid-views-list\"\n [anchor]=\"anchor()\"\n [content]=\"content\">\n</kit-popup>\n\n<ng-template #content>\n @if (!createViewPopupVisible()) {\n <div class=\"view\">\n <div class=\"views-list\">\n @for (item of views(); track item) {\n @if (!item.hidden) {\n <div class=\"views-item\"\n [ngClass]=\"item.type\"\n [class.active]=\"item.title === selectedView()?.title && item.type === selectedView()?.type\"\n (click)=\"onViewSelect(item)\">\n <kit-svg-icon class=\"view-icon\"\n [icon]=\"item.type === gridViewType.SYSTEM && kitSvgIcon.GLOBAL || kitSvgIcon.USER\"\n ></kit-svg-icon>\n <div class=\"item-name\">{{ item.title | titlecase }}</div>\n <kit-svg-icon class=\"check-icon\"\n [icon]=\"kitSvgIcon.CHECK\"\n ></kit-svg-icon>\n </div>\n }\n }\n </div>\n <div class=\"popup-action\">\n <kit-button [label]=\"'kit.views.newView' | translate\"\n [type]=\"kitButtonType.TEXT\"\n [kind]=\"kitButtonKind.SMALL\"\n [icon]=\"kitSvgIcon.PLUS\"\n [iconPosition]=\"kitButtonIconPosition.LEADING\"\n (clicked)=\"newViewToggle(true)\"\n ></kit-button>\n <kit-button [label]=\"'kit.views.manageViews' | translate\"\n [type]=\"kitButtonType.TEXT\"\n [kind]=\"kitButtonKind.SMALL\"\n [icon]=\"kitSvgIcon.PLUS\"\n [iconPosition]=\"kitButtonIconPosition.LEADING\"\n [disabled]=\"views().length < 2\"\n (clicked)=\"openViewsManagerModal()\"\n ></kit-button>\n </div>\n </div>\n } @else {\n <div class=\"new-view\">\n <kit-textbox [defaultValue]=\"viewName()\"\n [placeholder]=\"'kit.views.enterText' | translate\"\n [state]=\"isViewNameValid && kitTextboxState.DEFAULT || kitTextboxState.ERROR\"\n [messageText]=\"inputMessage\"\n (changed)=\"viewName.set($event)\"\n ></kit-textbox>\n <div class=\"new-view-action\">\n <kit-button [label]=\"'kit.views.cancel' | translate\"\n [kind]=\"kitButtonKind.MEDIUM\"\n [type]=\"kitButtonType.GHOST\"\n (clicked)=\"newViewToggle(false)\"\n ></kit-button>\n <kit-button [label]=\"'kit.views.save' | translate\"\n [kind]=\"kitButtonKind.MEDIUM\"\n [disabled]=\"!viewName() || !isViewNameValid\"\n (clicked)=\"onViewCreate()\"\n ></kit-button>\n </div>\n </div>\n }\n</ng-template>\n", styles: ["::ng-deep .kit-grid-views-list{width:408px}::ng-deep .kit-grid-views-list .views-list{display:flex;flex-direction:column;margin-bottom:12px;max-height:300px;overflow:auto}::ng-deep .kit-grid-views-list .views-item{display:flex;align-items:center;gap:8px;padding:6px 12px;font-size:14px;font-weight:400;line-height:20px;border-radius:4px;cursor:pointer}::ng-deep .kit-grid-views-list .views-item.system{color:var(--color-blue-4)}::ng-deep .kit-grid-views-list .views-item.system .view-icon{stroke:var(--color-blue-4);fill:none}::ng-deep .kit-grid-views-list .views-item.user{color:var(--color-grey-4)}::ng-deep .kit-grid-views-list .views-item.user .view-icon{fill:var(--color-grey-8);stroke:none}::ng-deep .kit-grid-views-list .views-item.user:hover{color:var(--color-main)}::ng-deep .kit-grid-views-list .views-item.user:hover .view-icon{fill:var(--color-main)}::ng-deep .kit-grid-views-list .views-item:hover{background:var(--color-grey-3)}::ng-deep .kit-grid-views-list .views-item.active{background-color:var(--color-grey-3)}::ng-deep .kit-grid-views-list .views-item.active .check-icon{display:block}::ng-deep .kit-grid-views-list .views-item.active.system .check-icon{stroke:var(--color-blue-4)}::ng-deep .kit-grid-views-list .views-item .item-name{flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}::ng-deep .kit-grid-views-list .views-item .check-icon{display:none;flex-shrink:0;width:14px;height:14px;fill:none;stroke:var(--color-main)}::ng-deep .kit-grid-views-list .views-item .view-icon{width:16px;height:16px}::ng-deep .kit-grid-views-list .popup-action{display:flex;flex-direction:column;gap:12px;padding-top:12px;border-top:1px solid var(--color-grey-6)}::ng-deep .kit-grid-views-list .new-view{display:flex;flex-direction:column;gap:15px}::ng-deep .kit-grid-views-list .new-view-action{display:flex;align-items:center;justify-content:space-between;padding-top:15px;border-top:1px solid var(--color-grey-6)}\n"], dependencies: [{ kind: "ngmodule", type: KitButtonModule }, { kind: "component", type: KitButtonComponent, selector: "kit-button", inputs: ["disabled", "label", "type", "icon", "iconType", "kind", "state", "iconPosition", "buttonClass", "active"], outputs: ["clicked"] }, { kind: "component", type: KitPopupComponent, selector: "kit-popup", inputs: ["anchor", "content", "closeOnOutsideClick", "showFooter", "cancelButtonLabel", "applyButtonLabel", "isApplyButtonDisabled", "positionMode", "popupClass", "closePopupOnCancel"], outputs: ["onCancel", "onApply", "onOpen", "onClose"] }, { kind: "ngmodule", type: KitSvgIconModule }, { kind: "component", type: KitSvgIconComponent, selector: "kit-svg-icon", inputs: ["icon", "iconClass"] }, { kind: "ngmodule", type: KitTextboxModule }, { kind: "component", type: KitTextboxComponent, selector: "kit-textbox", inputs: ["placeholder", "label", "defaultValue", "messageIcon", "messageText", "disabled", "maxlength", "state", "size", "icon"], outputs: ["blured", "changed"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$b.TranslatePipe, name: "translate" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: TitleCasePipe, name: "titlecase" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6924
+ }
6925
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: KitGridViewsListComponent, decorators: [{
6926
+ type: Component,
6927
+ args: [{ selector: 'kit-grid-views-list', imports: [
6928
+ KitButtonModule,
6929
+ KitPopupComponent,
6930
+ KitSvgIconModule,
6931
+ KitTextboxModule,
6932
+ TranslateModule,
6933
+ NgClass,
6934
+ TitleCasePipe,
6935
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<kit-button #toggleButton\n [label]=\"(selectedView()?.title ?? '') | titlecase\"\n [type]=\"kitButtonType.GHOST\"\n [kind]=\"kitButtonKind.MEDIUM\"\n [icon]=\"kitSvgIcon.CHEVRON_DOWN\"\n [iconType]=\"kitSvgIconType.STROKE\"\n [active]=\"popup.isPopupOpen\"\n (clicked)=\"onPopupToggle()\"\n></kit-button>\n\n<kit-popup #popup\n popupClass=\"kit-grid-views-list\"\n [anchor]=\"anchor()\"\n [content]=\"content\">\n</kit-popup>\n\n<ng-template #content>\n @if (!createViewPopupVisible()) {\n <div class=\"view\">\n <div class=\"views-list\">\n @for (item of views(); track item) {\n @if (!item.hidden) {\n <div class=\"views-item\"\n [ngClass]=\"item.type\"\n [class.active]=\"item.title === selectedView()?.title && item.type === selectedView()?.type\"\n (click)=\"onViewSelect(item)\">\n <kit-svg-icon class=\"view-icon\"\n [icon]=\"item.type === gridViewType.SYSTEM && kitSvgIcon.GLOBAL || kitSvgIcon.USER\"\n ></kit-svg-icon>\n <div class=\"item-name\">{{ item.title | titlecase }}</div>\n <kit-svg-icon class=\"check-icon\"\n [icon]=\"kitSvgIcon.CHECK\"\n ></kit-svg-icon>\n </div>\n }\n }\n </div>\n <div class=\"popup-action\">\n <kit-button [label]=\"'kit.views.newView' | translate\"\n [type]=\"kitButtonType.TEXT\"\n [kind]=\"kitButtonKind.SMALL\"\n [icon]=\"kitSvgIcon.PLUS\"\n [iconPosition]=\"kitButtonIconPosition.LEADING\"\n (clicked)=\"newViewToggle(true)\"\n ></kit-button>\n <kit-button [label]=\"'kit.views.manageViews' | translate\"\n [type]=\"kitButtonType.TEXT\"\n [kind]=\"kitButtonKind.SMALL\"\n [icon]=\"kitSvgIcon.PLUS\"\n [iconPosition]=\"kitButtonIconPosition.LEADING\"\n [disabled]=\"views().length < 2\"\n (clicked)=\"openViewsManagerModal()\"\n ></kit-button>\n </div>\n </div>\n } @else {\n <div class=\"new-view\">\n <kit-textbox [defaultValue]=\"viewName()\"\n [placeholder]=\"'kit.views.enterText' | translate\"\n [state]=\"isViewNameValid && kitTextboxState.DEFAULT || kitTextboxState.ERROR\"\n [messageText]=\"inputMessage\"\n (changed)=\"viewName.set($event)\"\n ></kit-textbox>\n <div class=\"new-view-action\">\n <kit-button [label]=\"'kit.views.cancel' | translate\"\n [kind]=\"kitButtonKind.MEDIUM\"\n [type]=\"kitButtonType.GHOST\"\n (clicked)=\"newViewToggle(false)\"\n ></kit-button>\n <kit-button [label]=\"'kit.views.save' | translate\"\n [kind]=\"kitButtonKind.MEDIUM\"\n [disabled]=\"!viewName() || !isViewNameValid\"\n (clicked)=\"onViewCreate()\"\n ></kit-button>\n </div>\n </div>\n }\n</ng-template>\n", styles: ["::ng-deep .kit-grid-views-list{width:408px}::ng-deep .kit-grid-views-list .views-list{display:flex;flex-direction:column;margin-bottom:12px;max-height:300px;overflow:auto}::ng-deep .kit-grid-views-list .views-item{display:flex;align-items:center;gap:8px;padding:6px 12px;font-size:14px;font-weight:400;line-height:20px;border-radius:4px;cursor:pointer}::ng-deep .kit-grid-views-list .views-item.system{color:var(--color-blue-4)}::ng-deep .kit-grid-views-list .views-item.system .view-icon{stroke:var(--color-blue-4);fill:none}::ng-deep .kit-grid-views-list .views-item.user{color:var(--color-grey-4)}::ng-deep .kit-grid-views-list .views-item.user .view-icon{fill:var(--color-grey-8);stroke:none}::ng-deep .kit-grid-views-list .views-item.user:hover{color:var(--color-main)}::ng-deep .kit-grid-views-list .views-item.user:hover .view-icon{fill:var(--color-main)}::ng-deep .kit-grid-views-list .views-item:hover{background:var(--color-grey-3)}::ng-deep .kit-grid-views-list .views-item.active{background-color:var(--color-grey-3)}::ng-deep .kit-grid-views-list .views-item.active .check-icon{display:block}::ng-deep .kit-grid-views-list .views-item.active.system .check-icon{stroke:var(--color-blue-4)}::ng-deep .kit-grid-views-list .views-item .item-name{flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}::ng-deep .kit-grid-views-list .views-item .check-icon{display:none;flex-shrink:0;width:14px;height:14px;fill:none;stroke:var(--color-main)}::ng-deep .kit-grid-views-list .views-item .view-icon{width:16px;height:16px}::ng-deep .kit-grid-views-list .popup-action{display:flex;flex-direction:column;gap:12px;padding-top:12px;border-top:1px solid var(--color-grey-6)}::ng-deep .kit-grid-views-list .new-view{display:flex;flex-direction:column;gap:15px}::ng-deep .kit-grid-views-list .new-view-action{display:flex;align-items:center;justify-content:space-between;padding-top:15px;border-top:1px solid var(--color-grey-6)}\n"] }]
6936
+ }], ctorParameters: () => [{ type: i1$7.ActivatedRoute }, { type: i1$7.Router }, { type: i1$d.Store }, { type: KitDialogService }, { type: i1$b.TranslateService }, { type: i0.ViewContainerRef }] });
6937
+
6938
+ var KitFilterType;
6939
+ (function (KitFilterType) {
6940
+ KitFilterType["CHECKBOX"] = "checkbox";
6941
+ KitFilterType["DATE"] = "date";
6942
+ KitFilterType["TEXT"] = "text";
6943
+ })(KitFilterType || (KitFilterType = {}));
6944
+
6945
+ const filterOperators = [
6946
+ KitFilterOperator.CONTAINS,
6947
+ KitFilterOperator.EQ,
6948
+ KitFilterOperator.IS_NOT_NULL,
6949
+ KitFilterOperator.IS_NULL,
6950
+ KitFilterOperator.NEQ,
6951
+ KitFilterOperator.STARTS_WITH,
6952
+ KitFilterOperator.ENDS_WITH,
6953
+ KitFilterOperator.DOES_NOT_CONTAIN,
6954
+ ];
6955
+ const kitNoValueRequiredFilterOperators = [
6956
+ KitFilterOperator.IS_NOT_NULL,
6957
+ KitFilterOperator.IS_NULL,
6958
+ ];
6959
+
6960
+ const convertFilterStringDate = (filters) => filters.map(filter => {
6961
+ return filter.type === KitFilterType.DATE && filter.value?.filters && {
6962
+ ...filter,
6963
+ value: {
6964
+ ...filter.value,
6965
+ filters: filter.value.filters.map(item => ({
6966
+ ...item,
6967
+ value: item.value && new Date(item.value) || item.value,
6968
+ })),
6969
+ },
6970
+ } || filter;
6971
+ });
6972
+ const removeReadonlyPropertyFromFilters = (filters) => filters.map(({ readonly, ...item }) => item);
6973
+ const kitBuildCheckboxFilterItems = (enumObject) => {
6974
+ return Object.keys(enumObject).map(item => ({
6975
+ title: item,
6976
+ value: item,
6977
+ checked: false,
6978
+ }));
6979
+ };
6980
+ const removeFilterPrefix = (value) => value.split('$filter=')[1];
6981
+ const filterEmptyValues = (filters) => ({
6982
+ logic: filters?.logic ?? KitFilterLogic.AND,
6983
+ filters: filters?.filters.filter(item => kitNoValueRequiredFilterOperators.includes(item.operator) || !!item.value) ?? [],
6984
+ });
6985
+ const kitBuildOdataFilter = (filter) => removeFilterPrefix(kitDataStateToODataString({
6986
+ filter,
6987
+ }));
6988
+ const kitBuildFilters = (filters) => ({
6989
+ logic: KitFilterLogic.AND,
6990
+ filters: filters.map(filter => filterEmptyValues(filter.value) ?? []),
6991
+ });
6992
+
6993
+ class KitGridViewsSaveComponent {
6994
+ constructor(store, router, activatedRoute, translateService) {
6995
+ this.store = store;
6996
+ this.router = router;
6997
+ this.activatedRoute = activatedRoute;
6998
+ this.translateService = translateService;
6999
+ this.viewGroup = input.required();
7000
+ this.views = input.required();
7001
+ this.viewsAutocompleteItems = input.required();
7002
+ this.anchor = viewChild.required('toggleButton', { read: ElementRef });
7003
+ this.popup = viewChild('popup', { read: KitPopupComponent });
7004
+ this.viewName = signal('');
7005
+ this.kitButtonKind = KitButtonKind;
7006
+ this.kitSvgIcon = KitSvgIcon;
7007
+ this.kitButtonIconPosition = KitButtonIconPosition;
7008
+ this.kitTooltipPosition = KitTooltipPosition;
7009
+ this.hasUnsavedChanges = signal(false);
7010
+ this.selectedView = this.store.selectSignal(KitGridViewsState.selectedView);
7011
+ }
7012
+ get isViewNameValid() {
7013
+ return isViewNameValid(this.viewName());
7014
+ }
7015
+ get inputMessage() {
7016
+ const infoMessage = getInputMessage(this.views(), this.viewName());
7017
+ return infoMessage && this.translateService.instant(infoMessage) || '';
7018
+ }
7019
+ ngOnInit() {
7020
+ this.store.select(KIT_GRID_STATE_TOKEN).pipe(filter(({ columns }) => !!columns.length)).subscribe(({ filter, sort, columns }) => {
7021
+ const selectedViewState = {
7022
+ filter: this.selectedView()?.value?.filter,
7023
+ sort: this.selectedView()?.value?.sort,
7024
+ columns: buildGridViewColumns(this.selectedView()?.value?.columns ?? []),
7025
+ };
7026
+ const currentViewState = {
7027
+ filter,
7028
+ sort,
7029
+ columns: buildGridViewColumns(columns),
7030
+ };
7031
+ this.hasUnsavedChanges.set(JSON.stringify(selectedViewState) !== JSON.stringify(currentViewState));
7032
+ });
7033
+ }
7034
+ onPopupToggle() {
7035
+ this.viewName.set('');
7036
+ this.popup()?.toggle();
7037
+ }
7038
+ onViewSave() {
7039
+ const { filter, sort, columns } = this.store.selectSnapshot(KIT_GRID_STATE_TOKEN);
7040
+ const views = this.store.selectSnapshot(KIT_GRID_VIEWS_STATE_TOKEN).data.views;
7041
+ const view = {
7042
+ title: this.viewName(),
7043
+ group: this.viewGroup(),
7044
+ type: KitGridViewType.USER,
7045
+ value: {
7046
+ filter: hasOverriddenSystemView(this.viewName(), views) && filter || removeReadonlyPropertyFromFilters(filter),
7047
+ sort,
7048
+ columns: buildGridViewColumns(columns),
7049
+ },
7050
+ };
7051
+ this.store.dispatch(new AddGridView(view)).subscribe(() => {
7052
+ this.hasUnsavedChanges.set(false);
7053
+ navigateToView(this.viewName(), this.router, this.activatedRoute);
7054
+ this.viewName.set('');
7055
+ this.popup()?.close();
7056
+ this.store.dispatch(new SetSelectedView(view));
7057
+ });
7058
+ }
7059
+ onValueChange(value) {
7060
+ if (!value) {
7061
+ return;
7062
+ }
7063
+ this.viewName.set(value);
7064
+ }
7065
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: KitGridViewsSaveComponent, deps: [{ token: i1$d.Store }, { token: i1$7.Router }, { token: i1$7.ActivatedRoute }, { token: i1$b.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
7066
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.1.4", type: KitGridViewsSaveComponent, isStandalone: true, selector: "kit-grid-views-save", inputs: { viewGroup: { classPropertyName: "viewGroup", publicName: "viewGroup", isSignal: true, isRequired: true, transformFunction: null }, views: { classPropertyName: "views", publicName: "views", isSignal: true, isRequired: true, transformFunction: null }, viewsAutocompleteItems: { classPropertyName: "viewsAutocompleteItems", publicName: "viewsAutocompleteItems", isSignal: true, isRequired: true, transformFunction: null } }, viewQueries: [{ propertyName: "anchor", first: true, predicate: ["toggleButton"], descendants: true, read: ElementRef, isSignal: true }, { propertyName: "popup", first: true, predicate: ["popup"], descendants: true, read: KitPopupComponent, isSignal: true }], ngImport: i0, template: "<kit-button #toggleButton\n kitTooltip\n class=\"grid-views-save-btn\"\n kitTooltipFilter=\".grid-views-save-btn\"\n [kitTooltipPosition]=\"kitTooltipPosition.TOP\"\n [title]=\"hasUnsavedChanges() ? '' : ('kit.views.noUnsavedChanges' | translate)\"\n [label]=\"'kit.views.save' | translate\"\n [active]=\"popup.isPopupOpen\"\n [kind]=\"kitButtonKind.MEDIUM\"\n [icon]=\"kitSvgIcon.DISKETTE\"\n [iconPosition]=\"kitButtonIconPosition.LEADING\"\n [disabled]=\"!hasUnsavedChanges()\"\n (clicked)=\"onPopupToggle()\"\n></kit-button>\n\n<kit-popup #popup\n popupClass=\"grid-views-save\"\n [anchor]=\"anchor()\"\n [content]=\"content\"\n [showFooter]=\"true\"\n [applyButtonLabel]=\"'kit.views.save' | translate\"\n [cancelButtonLabel]=\"'kit.views.cancel' | translate\"\n [isApplyButtonDisabled]=\"!viewName() || !isViewNameValid\"\n (onApply)=\"onViewSave()\">\n</kit-popup>\n\n<ng-template #content>\n <kit-autocomplete [placeholder]=\"'kit.views.enterText' | translate\"\n [allowCustom]=\"true\"\n [items]=\"viewsAutocompleteItems() ?? []\"\n [closePopupIfDataNotFound]=\"true\"\n [invalid]=\"!isViewNameValid\"\n [messageText]=\"inputMessage\"\n (filterChanged)=\"onValueChange($event)\"\n (valueChanged)=\"viewName.set($event)\"\n (selectionChanged)=\"onValueChange($event)\"\n ></kit-autocomplete>\n</ng-template>\n", styles: ["::ng-deep .grid-views-save{display:flex;flex-direction:column;width:344px}::ng-deep .grid-views-save .k-popup .footer{margin-top:30px;padding-top:30px}\n"], dependencies: [{ kind: "ngmodule", type: KitButtonModule }, { kind: "component", type: KitButtonComponent, selector: "kit-button", inputs: ["disabled", "label", "type", "icon", "iconType", "kind", "state", "iconPosition", "buttonClass", "active"], outputs: ["clicked"] }, { kind: "component", type: KitPopupComponent, selector: "kit-popup", inputs: ["anchor", "content", "closeOnOutsideClick", "showFooter", "cancelButtonLabel", "applyButtonLabel", "isApplyButtonDisabled", "positionMode", "popupClass", "closePopupOnCancel"], outputs: ["onCancel", "onApply", "onOpen", "onClose"] }, { kind: "ngmodule", type: KitAutocompleteModule }, { kind: "component", type: KitAutocompleteComponent, selector: "kit-autocomplete", inputs: ["label", "placeholder", "items", "selectedValue", "disabled", "loaderVisible", "messageIcon", "messageText", "invalid", "allowCustom", "closePopupIfDataNotFound"], outputs: ["filterChanged", "valueChanged", "selectionChanged", "blured", "focused"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$b.TranslatePipe, name: "translate" }, { kind: "directive", type: KitTooltipDirective, selector: "[kitTooltip]", inputs: ["kitTooltipPosition", "kitTooltipFilter", "kitTooltipTemplateRef", "kitTooltipVisible"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7067
+ }
7068
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: KitGridViewsSaveComponent, decorators: [{
7069
+ type: Component,
7070
+ args: [{ selector: 'kit-grid-views-save', imports: [
7071
+ KitButtonModule,
7072
+ KitPopupComponent,
7073
+ KitAutocompleteModule,
7074
+ TranslateModule,
7075
+ KitTooltipDirective,
7076
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<kit-button #toggleButton\n kitTooltip\n class=\"grid-views-save-btn\"\n kitTooltipFilter=\".grid-views-save-btn\"\n [kitTooltipPosition]=\"kitTooltipPosition.TOP\"\n [title]=\"hasUnsavedChanges() ? '' : ('kit.views.noUnsavedChanges' | translate)\"\n [label]=\"'kit.views.save' | translate\"\n [active]=\"popup.isPopupOpen\"\n [kind]=\"kitButtonKind.MEDIUM\"\n [icon]=\"kitSvgIcon.DISKETTE\"\n [iconPosition]=\"kitButtonIconPosition.LEADING\"\n [disabled]=\"!hasUnsavedChanges()\"\n (clicked)=\"onPopupToggle()\"\n></kit-button>\n\n<kit-popup #popup\n popupClass=\"grid-views-save\"\n [anchor]=\"anchor()\"\n [content]=\"content\"\n [showFooter]=\"true\"\n [applyButtonLabel]=\"'kit.views.save' | translate\"\n [cancelButtonLabel]=\"'kit.views.cancel' | translate\"\n [isApplyButtonDisabled]=\"!viewName() || !isViewNameValid\"\n (onApply)=\"onViewSave()\">\n</kit-popup>\n\n<ng-template #content>\n <kit-autocomplete [placeholder]=\"'kit.views.enterText' | translate\"\n [allowCustom]=\"true\"\n [items]=\"viewsAutocompleteItems() ?? []\"\n [closePopupIfDataNotFound]=\"true\"\n [invalid]=\"!isViewNameValid\"\n [messageText]=\"inputMessage\"\n (filterChanged)=\"onValueChange($event)\"\n (valueChanged)=\"viewName.set($event)\"\n (selectionChanged)=\"onValueChange($event)\"\n ></kit-autocomplete>\n</ng-template>\n", styles: ["::ng-deep .grid-views-save{display:flex;flex-direction:column;width:344px}::ng-deep .grid-views-save .k-popup .footer{margin-top:30px;padding-top:30px}\n"] }]
7077
+ }], ctorParameters: () => [{ type: i1$d.Store }, { type: i1$7.Router }, { type: i1$7.ActivatedRoute }, { type: i1$b.TranslateService }] });
7078
+
7079
+ class KitGridViewsComponent {
7080
+ constructor(store, activatedRoute, router, destroyRef, titleCasePipe) {
7081
+ this.store = store;
7082
+ this.activatedRoute = activatedRoute;
7083
+ this.router = router;
7084
+ this.destroyRef = destroyRef;
7085
+ this.titleCasePipe = titleCasePipe;
7086
+ this.viewGroup = input.required();
7087
+ this.viewConfigGroup = input.required();
7088
+ this.defaultColumns = input.required();
7089
+ this.defaultViewName = input.required();
7090
+ this.defaultSorting = input.required();
7091
+ this.systemViews = input.required();
7092
+ this.viewChanged = new EventEmitter();
7093
+ this.currentViewName$ = combineLatest([
7094
+ this.activatedRoute.params.pipe(map(params => params['view'] && decodeViewNameFromUrl(params['view']))),
7095
+ this.activatedRoute.data.pipe(map(data => data['view'])),
7096
+ ]).pipe(map(([viewParam, viewData,]) => viewParam ?? viewData));
7097
+ this.viewsState$ = this.store.select(KIT_GRID_VIEWS_STATE_TOKEN);
7098
+ this.views$ = this.store.select(KitGridViewsState.getViews());
7099
+ this.viewsAutocompleteItems$ = this.views$.pipe(map(views => filterDuplicateGridViews(views)), map(views => views.map(({ title }) => ({
7100
+ text: this.titleCasePipe.transform(title),
7101
+ value: title,
7102
+ }))));
7103
+ }
7104
+ ngOnInit() {
7105
+ this.fetchViews();
7106
+ this.handleViewOnRouteChange();
7107
+ this.store.select(KitGridViewsState.selectedView).subscribe(view => {
7108
+ view && this.updateGridState(view);
7109
+ });
7110
+ }
7111
+ ngOnDestroy() {
7112
+ this.store.dispatch(new StateReset(KitGridViewsState));
7113
+ }
7114
+ fetchViews() {
7115
+ this.store.dispatch([
7116
+ new FetchGridViews({
7117
+ group: this.viewGroup(),
7118
+ defaultItems: this.systemViews(),
7119
+ }),
7120
+ new FetchGridViewsConfig(this.viewConfigGroup()),
7121
+ ]);
7122
+ }
7123
+ handleViewOnRouteChange() {
7124
+ this.currentViewName$.pipe(combineLatestWith(this.views$), filter(([_, views,]) => !!views.length), distinctUntilChanged(([prevViewName], [currViewName]) => prevViewName === currViewName), takeUntilDestroyed(this.destroyRef)).subscribe(([viewName, views,]) => this.handleViewChange(viewName, views));
7125
+ }
7126
+ handleViewChange(viewName, views) {
7127
+ if (viewName !== viewName.toLowerCase()) {
7128
+ return navigateToView(viewName, this.router, this.activatedRoute);
7129
+ }
7130
+ const currentView = findGridViewByName(views, viewName);
7131
+ if (!currentView) {
7132
+ navigateToView(this.defaultViewName(), this.router, this.activatedRoute);
7133
+ return;
7134
+ }
7135
+ if (!this.store.selectSnapshot(KitGridViewsState.selectedView)) {
7136
+ this.store.dispatch(new SetSelectedView(currentView));
7137
+ }
7138
+ }
7139
+ updateGridState(view) {
7140
+ this.store.dispatch([
7141
+ new SetGridSort(view?.value?.sort ?? this.defaultSorting()),
7142
+ new SetGridFilters(convertFilterStringDate(view?.value?.filter ?? [])),
7143
+ new SetGridColumns(buildGridColumns(this.defaultColumns(), view?.value?.columns ?? this.defaultColumns())),
7144
+ new SetGridSkip(0),
7145
+ ]).subscribe(() => this.viewChanged.emit());
7146
+ }
7147
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: KitGridViewsComponent, deps: [{ token: i1$d.Store }, { token: i1$7.ActivatedRoute }, { token: i1$7.Router }, { token: i0.DestroyRef }, { token: i1$1.TitleCasePipe }], target: i0.ɵɵFactoryTarget.Component }); }
7148
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.4", type: KitGridViewsComponent, isStandalone: true, selector: "kit-grid-views", inputs: { viewGroup: { classPropertyName: "viewGroup", publicName: "viewGroup", isSignal: true, isRequired: true, transformFunction: null }, viewConfigGroup: { classPropertyName: "viewConfigGroup", publicName: "viewConfigGroup", isSignal: true, isRequired: true, transformFunction: null }, defaultColumns: { classPropertyName: "defaultColumns", publicName: "defaultColumns", isSignal: true, isRequired: true, transformFunction: null }, defaultViewName: { classPropertyName: "defaultViewName", publicName: "defaultViewName", isSignal: true, isRequired: true, transformFunction: null }, defaultSorting: { classPropertyName: "defaultSorting", publicName: "defaultSorting", isSignal: true, isRequired: true, transformFunction: null }, systemViews: { classPropertyName: "systemViews", publicName: "systemViews", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { viewChanged: "viewChanged" }, providers: [
7149
+ TitleCasePipe,
7150
+ ], ngImport: i0, template: "<div class=\"kit-grid-views\">\n @if (viewsState$ | async; as viewsState) {\n @if (!viewsState.loading) {\n @if (views$ | async; as views) {\n <kit-grid-views-list [viewGroup]=\"viewGroup()\"\n [viewConfigGroup]=\"viewConfigGroup()\"\n [views]=\"views\"\n [defaultColumns]=\"defaultColumns()\"\n [defaultViewName]=\"defaultViewName()\"\n [defaultSorting]=\"defaultSorting()\"\n ></kit-grid-views-list>\n\n <kit-grid-views-save [viewGroup]=\"viewGroup()\"\n [views]=\"views\"\n [viewsAutocompleteItems]=\"viewsAutocompleteItems$ | async\"\n ></kit-grid-views-save>\n }\n } @else {\n <kit-skeleton [width]=\"200\"\n [height]=\"32\"\n ></kit-skeleton>\n }\n }\n</div>\n", styles: [".kit-grid-views{display:flex;align-items:center;gap:16px}.kit-grid-views .popup-content{display:flex;flex-direction:column;width:296px}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: KitGridViewsListComponent, selector: "kit-grid-views-list", inputs: ["viewGroup", "viewConfigGroup", "views", "defaultColumns", "defaultSorting", "defaultViewName"] }, { kind: "ngmodule", type: KitSkeletonModule }, { kind: "component", type: KitSkeletonComponent, selector: "kit-skeleton", inputs: ["width", "height", "shape", "animation"] }, { kind: "component", type: KitGridViewsSaveComponent, selector: "kit-grid-views-save", inputs: ["viewGroup", "views", "viewsAutocompleteItems"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7151
+ }
7152
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: KitGridViewsComponent, decorators: [{
7153
+ type: Component,
7154
+ args: [{ selector: 'kit-grid-views', imports: [
7155
+ AsyncPipe,
7156
+ KitGridViewsListComponent,
7157
+ KitSkeletonModule,
7158
+ KitGridViewsSaveComponent,
7159
+ ], providers: [
7160
+ TitleCasePipe,
7161
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"kit-grid-views\">\n @if (viewsState$ | async; as viewsState) {\n @if (!viewsState.loading) {\n @if (views$ | async; as views) {\n <kit-grid-views-list [viewGroup]=\"viewGroup()\"\n [viewConfigGroup]=\"viewConfigGroup()\"\n [views]=\"views\"\n [defaultColumns]=\"defaultColumns()\"\n [defaultViewName]=\"defaultViewName()\"\n [defaultSorting]=\"defaultSorting()\"\n ></kit-grid-views-list>\n\n <kit-grid-views-save [viewGroup]=\"viewGroup()\"\n [views]=\"views\"\n [viewsAutocompleteItems]=\"viewsAutocompleteItems$ | async\"\n ></kit-grid-views-save>\n }\n } @else {\n <kit-skeleton [width]=\"200\"\n [height]=\"32\"\n ></kit-skeleton>\n }\n }\n</div>\n", styles: [".kit-grid-views{display:flex;align-items:center;gap:16px}.kit-grid-views .popup-content{display:flex;flex-direction:column;width:296px}\n"] }]
7162
+ }], ctorParameters: () => [{ type: i1$d.Store }, { type: i1$7.ActivatedRoute }, { type: i1$7.Router }, { type: i0.DestroyRef }, { type: i1$1.TitleCasePipe }], propDecorators: { viewChanged: [{
7163
+ type: Output
7164
+ }] } });
7165
+
7166
+ class KitFilterSelectorComponent {
7167
+ constructor(translateService) {
7168
+ this.translateService = translateService;
7169
+ this.items = input([]);
7170
+ this.itemSelected = output();
7171
+ this.anchor = viewChild.required('toggleButton', { read: ElementRef });
7172
+ this.popup = viewChild('popup', { read: KitPopupComponent });
7173
+ this.kitSvgIcon = KitSvgIcon;
7174
+ this.kitSvgIconType = KitSvgIconType;
7175
+ this.kitTextboxSize = KitTextboxSize;
7176
+ this.kitPillType = KitPillType;
7177
+ this.searchTerm = signal('');
7178
+ this.filterItems = computed(() => this.items()
7179
+ .filter(item => this.translateService.instant(item.title).toLowerCase().startsWith(this.searchTerm())));
7180
+ }
7181
+ onSearchChange(value) {
7182
+ this.searchTerm.set(value);
7183
+ }
7184
+ onItemClick(item) {
7185
+ this.itemSelected.emit(item);
7186
+ this.searchTerm.set('');
7187
+ this.popup()?.close();
7188
+ }
7189
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: KitFilterSelectorComponent, deps: [{ token: i1$b.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
7190
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.4", type: KitFilterSelectorComponent, isStandalone: true, selector: "kit-filter-selector", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { itemSelected: "itemSelected" }, viewQueries: [{ propertyName: "anchor", first: true, predicate: ["toggleButton"], descendants: true, read: ElementRef, isSignal: true }, { propertyName: "popup", first: true, predicate: ["popup"], descendants: true, read: KitPopupComponent, isSignal: true }], ngImport: i0, template: "<div class=\"kit-filter-selector\">\n <kit-pill #toggleButton\n [type]=\"kitPillType.DASHED\"\n [selectable]=\"true\"\n [selected]=\"popup.isPopupOpen\"\n [icon]=\"kitSvgIcon.PLUS\"\n [iconType]=\"kitSvgIconType.STROKE\"\n (clicked)=\"popup.toggle()\">\n {{ \"kit.filters.addNewFilter\" | translate }}\n </kit-pill>\n</div>\n\n<kit-popup #popup\n popupClass=\"kit-filter-selector-popup\"\n [anchor]=\"anchor()\"\n [content]=\"content\">\n</kit-popup>\n\n<ng-template #content>\n <div class=\"popup-content\">\n <div class=\"filter-search\">\n <kit-textbox [placeholder]=\"'kit.filters.search' | translate\"\n [size]=\"kitTextboxSize.SMALL\"\n [defaultValue]=\"searchTerm()\"\n (changed)=\"onSearchChange($event)\"\n ></kit-textbox>\n </div>\n <div class=\"filter-items\">\n @for (item of filterItems(); track item.field) {\n <div class=\"filter-item\"\n [class.disabled]=\"item.disabled\"\n (click)=\"onItemClick(item)\">\n {{ item.title | translate }}\n </div>\n }\n </div>\n </div>\n</ng-template>\n", styles: ["::ng-deep .kit-filter-selector-popup .popup-content{width:172px;box-sizing:border-box}::ng-deep .kit-filter-selector-popup .filter-search{margin-bottom:5px;padding-bottom:15px;border-bottom:1px solid var(--color-grey-6)}::ng-deep .kit-filter-selector-popup .filter-items{max-height:400px;overflow-y:auto}::ng-deep .kit-filter-selector-popup .filter-items::-webkit-scrollbar{width:4px}::ng-deep .kit-filter-selector-popup .filter-items::-webkit-scrollbar-thumb{background-color:var(--color-grey-7);border-radius:2px}::ng-deep .kit-filter-selector-popup .filter-items::-webkit-scrollbar-thumb:hover{background-color:var(--color-grey-4)}::ng-deep .kit-filter-selector-popup .filter-item{padding:6px 12px;color:var(--color-grey-4);font-size:14px;font-weight:400;line-height:20px;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}::ng-deep .kit-filter-selector-popup .filter-item:hover{color:var(--color-main)}::ng-deep .kit-filter-selector-popup .filter-item.disabled{color:var(--color-grey-8);pointer-events:none}\n"], dependencies: [{ kind: "component", type: KitPopupComponent, selector: "kit-popup", inputs: ["anchor", "content", "closeOnOutsideClick", "showFooter", "cancelButtonLabel", "applyButtonLabel", "isApplyButtonDisabled", "positionMode", "popupClass", "closePopupOnCancel"], outputs: ["onCancel", "onApply", "onOpen", "onClose"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$b.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: KitTextboxModule }, { kind: "component", type: KitTextboxComponent, selector: "kit-textbox", inputs: ["placeholder", "label", "defaultValue", "messageIcon", "messageText", "disabled", "maxlength", "state", "size", "icon"], outputs: ["blured", "changed"] }, { kind: "component", type: KitPillComponent, selector: "kit-pill", inputs: ["removable", "selectable", "selected", "type", "theme", "icon", "iconType"], outputs: ["clicked", "removed"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7191
+ }
7192
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: KitFilterSelectorComponent, decorators: [{
7193
+ type: Component,
7194
+ args: [{ selector: 'kit-filter-selector', imports: [
7195
+ KitPopupComponent,
7196
+ TranslateModule,
7197
+ KitTextboxModule,
7198
+ KitPillComponent,
7199
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"kit-filter-selector\">\n <kit-pill #toggleButton\n [type]=\"kitPillType.DASHED\"\n [selectable]=\"true\"\n [selected]=\"popup.isPopupOpen\"\n [icon]=\"kitSvgIcon.PLUS\"\n [iconType]=\"kitSvgIconType.STROKE\"\n (clicked)=\"popup.toggle()\">\n {{ \"kit.filters.addNewFilter\" | translate }}\n </kit-pill>\n</div>\n\n<kit-popup #popup\n popupClass=\"kit-filter-selector-popup\"\n [anchor]=\"anchor()\"\n [content]=\"content\">\n</kit-popup>\n\n<ng-template #content>\n <div class=\"popup-content\">\n <div class=\"filter-search\">\n <kit-textbox [placeholder]=\"'kit.filters.search' | translate\"\n [size]=\"kitTextboxSize.SMALL\"\n [defaultValue]=\"searchTerm()\"\n (changed)=\"onSearchChange($event)\"\n ></kit-textbox>\n </div>\n <div class=\"filter-items\">\n @for (item of filterItems(); track item.field) {\n <div class=\"filter-item\"\n [class.disabled]=\"item.disabled\"\n (click)=\"onItemClick(item)\">\n {{ item.title | translate }}\n </div>\n }\n </div>\n </div>\n</ng-template>\n", styles: ["::ng-deep .kit-filter-selector-popup .popup-content{width:172px;box-sizing:border-box}::ng-deep .kit-filter-selector-popup .filter-search{margin-bottom:5px;padding-bottom:15px;border-bottom:1px solid var(--color-grey-6)}::ng-deep .kit-filter-selector-popup .filter-items{max-height:400px;overflow-y:auto}::ng-deep .kit-filter-selector-popup .filter-items::-webkit-scrollbar{width:4px}::ng-deep .kit-filter-selector-popup .filter-items::-webkit-scrollbar-thumb{background-color:var(--color-grey-7);border-radius:2px}::ng-deep .kit-filter-selector-popup .filter-items::-webkit-scrollbar-thumb:hover{background-color:var(--color-grey-4)}::ng-deep .kit-filter-selector-popup .filter-item{padding:6px 12px;color:var(--color-grey-4);font-size:14px;font-weight:400;line-height:20px;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}::ng-deep .kit-filter-selector-popup .filter-item:hover{color:var(--color-main)}::ng-deep .kit-filter-selector-popup .filter-item.disabled{color:var(--color-grey-8);pointer-events:none}\n"] }]
7200
+ }], ctorParameters: () => [{ type: i1$b.TranslateService }] });
7201
+
7202
+ class KitFilterCheckboxComponent {
7203
+ constructor() {
7204
+ this.filter = input.required();
7205
+ this.translateKeyPrefix = input('');
7206
+ this.items = model([]);
7207
+ this.filterRemoved = output();
7208
+ this.filterChanged = output();
7209
+ this.anchor = viewChild.required('toggleButton', { read: ElementRef });
7210
+ this.popup = viewChild('popup', { read: KitPopupComponent });
7211
+ this.kitTooltipPosition = KitTooltipPosition;
7212
+ this.selectedValues = signal([]);
7213
+ this.kitPillTheme = KitPillTheme;
7214
+ }
7215
+ ngOnInit() {
7216
+ this.initializeSelectedValues();
7217
+ this.updateItemsState();
7218
+ this.showPopupOnInit();
7219
+ }
7220
+ removeFilter() {
7221
+ this.popup()?.close();
7222
+ this.filterRemoved.emit();
7223
+ }
7224
+ applyButtonDisabled() {
7225
+ return !this.items().some(item => item.checked);
7226
+ }
7227
+ clearAllFilters() {
7228
+ this.items.update(items => items.map(item => ({
7229
+ ...item,
7230
+ checked: false,
7231
+ })));
7232
+ }
7233
+ applyFilter() {
7234
+ const checkedValues = this.items().filter(item => item.checked).map(item => item.value);
7235
+ const checked = {
7236
+ logic: KitFilterLogic.OR,
7237
+ filters: checkedValues.map(value => ({
7238
+ field: this.filter().field,
7239
+ operator: KitFilterOperator.EQ,
7240
+ value,
7241
+ })),
7242
+ };
7243
+ this.filterChanged.emit(checked);
7244
+ this.selectedValues.set(checkedValues);
7245
+ }
7246
+ onPopupToggle() {
7247
+ this.popup()?.toggle();
7248
+ }
7249
+ close() {
7250
+ if (!this.filter().value && !this.selectedValues().length) {
7251
+ this.removeFilter();
7252
+ }
7253
+ else {
7254
+ this.updateItemsState();
7255
+ }
7256
+ }
7257
+ buildTranslateKey(value) {
7258
+ return `${this.translateKeyPrefix()}${value}`;
7259
+ }
7260
+ onChange() {
7261
+ this.items.set([...this.items()]);
7262
+ }
7263
+ initializeSelectedValues() {
7264
+ this.selectedValues.set(this.filter().value?.filters.map(item => item.value) ?? []);
7265
+ }
7266
+ updateItemsState() {
7267
+ this.items.update(items => items.map(item => ({
7268
+ ...item,
7269
+ checked: this.selectedValues().includes(item.value) ?? false,
7270
+ })));
7271
+ }
7272
+ showPopupOnInit() {
7273
+ if (!this.selectedValues().length) {
7274
+ requestAnimationFrame(() => this.onPopupToggle());
7275
+ }
7276
+ }
7277
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: KitFilterCheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7278
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.4", type: KitFilterCheckboxComponent, isStandalone: true, selector: "kit-filter-checkbox", inputs: { filter: { classPropertyName: "filter", publicName: "filter", isSignal: true, isRequired: true, transformFunction: null }, translateKeyPrefix: { classPropertyName: "translateKeyPrefix", publicName: "translateKeyPrefix", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { items: "itemsChange", filterRemoved: "filterRemoved", filterChanged: "filterChanged" }, viewQueries: [{ propertyName: "anchor", first: true, predicate: ["toggleButton"], descendants: true, read: ElementRef, isSignal: true }, { propertyName: "popup", first: true, predicate: ["popup"], descendants: true, read: KitPopupComponent, isSignal: true }], ngImport: i0, template: "<div class=\"kit-filter-checkbox\">\n <kit-pill #toggleButton\n [selectable]=\"!filter().readonly\"\n [selected]=\"popup.isPopupOpen\"\n [removable]=\"!filter().readonly\"\n [theme]=\"filter().readonly && kitPillTheme.BLUE || kitPillTheme.DEFAULT\"\n (removed)=\"removeFilter()\"\n (clicked)=\"onPopupToggle()\">\n {{ filter().title | translate }}:\n @if (selectedValues().length) {\n @if (selectedValues().length > 1) {\n <div class=\"tooltip\"\n kitTooltip\n kitTooltipFilter=\".tooltip\"\n [kitTooltipPosition]=\"kitTooltipPosition.RIGHT\"\n [kitTooltipTemplateRef]=\"tooltipTemplate\">\n {{ buildTranslateKey(selectedValues()[0]) | translate }}\n <span class=\"tooltip-count\">+{{ selectedValues().length - 1 }}</span>\n </div>\n } @else {\n {{ buildTranslateKey(selectedValues()[0]) | translate }}\n }\n }\n </kit-pill>\n</div>\n\n<kit-popup #popup\n popupClass=\"kit-filter-checkbox-popup\"\n [anchor]=\"anchor()\"\n [content]=\"content\"\n [showFooter]=\"true\"\n [applyButtonLabel]=\"'common.apply' | translate\"\n [cancelButtonLabel]=\"'common.clear' | translate\"\n [isApplyButtonDisabled]=\"applyButtonDisabled()\"\n [closePopupOnCancel]=\"false\"\n (onApply)=\"applyFilter()\"\n (onCancel)=\"clearAllFilters()\"\n (onClose)=\"close()\">\n</kit-popup>\n\n<ng-template #content>\n <div class=\"popup-content\">\n @for (item of items(); track $index) {\n <kit-checkbox class=\"checkbox-item\"\n [label]=\"buildTranslateKey(item.title) | translate\"\n [(ngModel)]=\"item.checked\"\n (changed)=\"onChange()\"\n ></kit-checkbox>\n }\n </div>\n</ng-template>\n\n<ng-template #tooltipTemplate>\n @for (item of selectedValues() | slice: 1; track item) {\n <div class=\"tooltip-item\">{{ buildTranslateKey(item) | translate }}</div>\n }\n</ng-template>\n", styles: [".kit-filter-checkbox .tooltip-count{color:var(--color-main)}.kit-filter-checkbox .tooltip-item{color:var(--color-grey-4);font-size:12px;font-weight:500;line-height:20px}::ng-deep .kit-filter-checkbox-popup .popup-content{width:172px}::ng-deep .kit-filter-checkbox-popup .checkbox-item{display:block;padding:6px 0}\n"], dependencies: [{ kind: "component", type: KitPillComponent, selector: "kit-pill", inputs: ["removable", "selectable", "selected", "type", "theme", "icon", "iconType"], outputs: ["clicked", "removed"] }, { kind: "ngmodule", type: KitTextboxModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$b.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: KitCheckboxModule }, { kind: "component", type: KitCheckboxComponent, selector: "kit-checkbox", inputs: ["label", "disabled", "checked", "readonly", "state", "messageIcon", "messageText"], outputs: ["changed"] }, { kind: "directive", type: KitTooltipDirective, selector: "[kitTooltip]", inputs: ["kitTooltipPosition", "kitTooltipFilter", "kitTooltipTemplateRef", "kitTooltipVisible"] }, { kind: "pipe", type: SlicePipe, name: "slice" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: KitPopupComponent, selector: "kit-popup", inputs: ["anchor", "content", "closeOnOutsideClick", "showFooter", "cancelButtonLabel", "applyButtonLabel", "isApplyButtonDisabled", "positionMode", "popupClass", "closePopupOnCancel"], outputs: ["onCancel", "onApply", "onOpen", "onClose"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7279
+ }
7280
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: KitFilterCheckboxComponent, decorators: [{
7281
+ type: Component,
7282
+ args: [{ selector: 'kit-filter-checkbox', imports: [
7283
+ KitPillComponent,
7284
+ KitTextboxModule,
7285
+ TranslateModule,
7286
+ KitCheckboxModule,
7287
+ KitTooltipDirective,
7288
+ SlicePipe,
7289
+ FormsModule,
7290
+ KitPopupComponent,
7291
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"kit-filter-checkbox\">\n <kit-pill #toggleButton\n [selectable]=\"!filter().readonly\"\n [selected]=\"popup.isPopupOpen\"\n [removable]=\"!filter().readonly\"\n [theme]=\"filter().readonly && kitPillTheme.BLUE || kitPillTheme.DEFAULT\"\n (removed)=\"removeFilter()\"\n (clicked)=\"onPopupToggle()\">\n {{ filter().title | translate }}:\n @if (selectedValues().length) {\n @if (selectedValues().length > 1) {\n <div class=\"tooltip\"\n kitTooltip\n kitTooltipFilter=\".tooltip\"\n [kitTooltipPosition]=\"kitTooltipPosition.RIGHT\"\n [kitTooltipTemplateRef]=\"tooltipTemplate\">\n {{ buildTranslateKey(selectedValues()[0]) | translate }}\n <span class=\"tooltip-count\">+{{ selectedValues().length - 1 }}</span>\n </div>\n } @else {\n {{ buildTranslateKey(selectedValues()[0]) | translate }}\n }\n }\n </kit-pill>\n</div>\n\n<kit-popup #popup\n popupClass=\"kit-filter-checkbox-popup\"\n [anchor]=\"anchor()\"\n [content]=\"content\"\n [showFooter]=\"true\"\n [applyButtonLabel]=\"'common.apply' | translate\"\n [cancelButtonLabel]=\"'common.clear' | translate\"\n [isApplyButtonDisabled]=\"applyButtonDisabled()\"\n [closePopupOnCancel]=\"false\"\n (onApply)=\"applyFilter()\"\n (onCancel)=\"clearAllFilters()\"\n (onClose)=\"close()\">\n</kit-popup>\n\n<ng-template #content>\n <div class=\"popup-content\">\n @for (item of items(); track $index) {\n <kit-checkbox class=\"checkbox-item\"\n [label]=\"buildTranslateKey(item.title) | translate\"\n [(ngModel)]=\"item.checked\"\n (changed)=\"onChange()\"\n ></kit-checkbox>\n }\n </div>\n</ng-template>\n\n<ng-template #tooltipTemplate>\n @for (item of selectedValues() | slice: 1; track item) {\n <div class=\"tooltip-item\">{{ buildTranslateKey(item) | translate }}</div>\n }\n</ng-template>\n", styles: [".kit-filter-checkbox .tooltip-count{color:var(--color-main)}.kit-filter-checkbox .tooltip-item{color:var(--color-grey-4);font-size:12px;font-weight:500;line-height:20px}::ng-deep .kit-filter-checkbox-popup .popup-content{width:172px}::ng-deep .kit-filter-checkbox-popup .checkbox-item{display:block;padding:6px 0}\n"] }]
7292
+ }] });
7293
+
7294
+ class KitFilterDateComponent {
7295
+ constructor() {
7296
+ this.filter = input.required();
7297
+ this.filterRemoved = output();
7298
+ this.filterChanged = output();
7299
+ this.anchor = viewChild.required('toggleButton', { read: ElementRef });
7300
+ this.popup = viewChild('popup', { read: KitPopupComponent });
7301
+ this.startDate = signal(undefined);
7302
+ this.endDate = signal(undefined);
7303
+ this.selectedValues = signal({});
7304
+ this.pillDateFormat = 'dd/MM/yy';
7305
+ this.kitPillTheme = KitPillTheme;
7306
+ }
7307
+ documentClick(event) {
7308
+ const datePicker = document.querySelector('.kit-datepicker-popup');
7309
+ const popupElement = this.popup()?.popupHTMLElement;
7310
+ const isClickOutsideDatePicker = !datePicker?.contains(event.target) &&
7311
+ !event.target.matches('.k-link') &&
7312
+ !event.target?.parentElement?.parentElement?.matches('.k-calendar-nav');
7313
+ if (!popupElement?.contains(event.target)
7314
+ && !this.anchor()?.nativeElement.contains(event.target)
7315
+ && isClickOutsideDatePicker) {
7316
+ this.popup()?.close();
7317
+ }
7318
+ }
7319
+ ngOnInit() {
7320
+ this.initializeSelectedValues();
7321
+ this.showPopupOnInit();
7322
+ }
7323
+ removeFilter() {
7324
+ this.popup()?.close();
7325
+ this.filterRemoved.emit();
7326
+ }
7327
+ onPopupToggle() {
7328
+ this.popup()?.toggle();
7329
+ }
7330
+ close() {
7331
+ if (!this.filter().value && !(this.selectedValues().start || this.selectedValues().end)) {
7332
+ this.removeFilter();
7333
+ }
7334
+ else {
7335
+ const [startFilter, endFilter,] = this.filter().value?.filters || [];
7336
+ this.startDate.set(startFilter?.value);
7337
+ this.endDate.set(endFilter?.value);
7338
+ }
7339
+ }
7340
+ onFromDateChange(date) {
7341
+ this.startDate.set(date);
7342
+ }
7343
+ onToDateChange(date) {
7344
+ this.endDate.set(date);
7345
+ }
7346
+ applyButtonDisabled() {
7347
+ return !this.startDate() && !this.endDate();
7348
+ }
7349
+ clearAllFilters() {
7350
+ this.startDate.set(undefined);
7351
+ this.endDate.set(undefined);
7352
+ }
7353
+ applyFilter() {
7354
+ const dates = {
7355
+ ...this.startDate() && { start: this.startDate() },
7356
+ ...this.endDate() && { end: this.endDate() },
7357
+ };
7358
+ const filterValue = {
7359
+ logic: KitFilterLogic.AND,
7360
+ filters: [
7361
+ {
7362
+ field: this.filter().field,
7363
+ operator: KitFilterOperator.GTE,
7364
+ value: dates.start,
7365
+ },
7366
+ {
7367
+ field: this.filter().field,
7368
+ operator: KitFilterOperator.LTE,
7369
+ value: dates.end,
7370
+ },
7371
+ ],
7372
+ };
7373
+ this.filterChanged.emit(filterValue);
7374
+ this.selectedValues.set(dates);
7375
+ }
7376
+ initializeSelectedValues() {
7377
+ const filterValue = this.filter().value?.filters ?? null;
7378
+ this.selectedValues.set({
7379
+ start: filterValue?.[0]?.value,
7380
+ end: filterValue?.[1]?.value,
7381
+ });
7382
+ this.startDate.set(this.selectedValues()?.start);
7383
+ this.endDate.set(this.selectedValues()?.end);
7384
+ }
7385
+ showPopupOnInit() {
7386
+ if (!this.selectedValues()?.start && !this.selectedValues()?.end) {
7387
+ requestAnimationFrame(() => this.onPopupToggle());
7388
+ }
7389
+ }
7390
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: KitFilterDateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7391
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.4", type: KitFilterDateComponent, isStandalone: true, selector: "kit-filter-date", inputs: { filter: { classPropertyName: "filter", publicName: "filter", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { filterRemoved: "filterRemoved", filterChanged: "filterChanged" }, host: { listeners: { "document:click": "documentClick($event)" } }, viewQueries: [{ propertyName: "anchor", first: true, predicate: ["toggleButton"], descendants: true, read: ElementRef, isSignal: true }, { propertyName: "popup", first: true, predicate: ["popup"], descendants: true, read: KitPopupComponent, isSignal: true }], ngImport: i0, template: "<div class=\"kit-filter-date\">\n <kit-pill #toggleButton\n [selectable]=\"!filter().readonly\"\n [selected]=\"popup.isPopupOpen\"\n [removable]=\"!filter().readonly\"\n [theme]=\"filter().readonly && kitPillTheme.BLUE || kitPillTheme.DEFAULT\"\n (removed)=\"removeFilter()\"\n (clicked)=\"onPopupToggle()\">\n {{ filter().title | translate }}:\n @if (selectedValues(); as selectedValues) {\n {{ selectedValues?.start | date: pillDateFormat }}\n @if (selectedValues?.start && selectedValues?.end) {\n -\n }\n {{ selectedValues?.end | date: pillDateFormat }}\n }\n </kit-pill>\n</div>\n\n<kit-popup #popup\n popupClass=\"kit-filter-date-popup\"\n [anchor]=\"anchor()\"\n [content]=\"content\"\n [closeOnOutsideClick]=\"false\"\n [showFooter]=\"true\"\n [applyButtonLabel]=\"'kit.filters.apply' | translate\"\n [cancelButtonLabel]=\"'kit.filters.clear' | translate\"\n [isApplyButtonDisabled]=\"applyButtonDisabled()\"\n [closePopupOnCancel]=\"false\"\n (onApply)=\"applyFilter()\"\n (onCancel)=\"clearAllFilters()\"\n (onClose)=\"close()\">\n</kit-popup>\n\n<ng-template #content>\n <div class=\"popup-content\">\n <div class=\"date-input\">\n <kit-datepicker [placeholder]=\"'kit.filters.chooseDateFrom' | translate\"\n [defaultDate]=\"startDate()\"\n [max]=\"endDate()\"\n (changed)=\"onFromDateChange($event)\"\n ></kit-datepicker>\n <kit-datepicker [placeholder]=\"'kit.filters.chooseDateTo' | translate\"\n [defaultDate]=\"endDate()\"\n [min]=\"startDate()\"\n (changed)=\"onToDateChange($event)\"\n ></kit-datepicker>\n </div>\n </div>\n</ng-template>\n", styles: ["::ng-deep .kit-filter-date-popup .popup-content{width:296px;box-sizing:border-box}::ng-deep .kit-filter-date-popup .date-input{display:flex;flex-direction:column;gap:10px}\n"], dependencies: [{ kind: "component", type: KitPillComponent, selector: "kit-pill", inputs: ["removable", "selectable", "selected", "type", "theme", "icon", "iconType"], outputs: ["clicked", "removed"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$b.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: KitDatepickerModule }, { kind: "component", type: KitDatepickerComponent, selector: "kit-datepicker", inputs: ["placeholder", "label", "defaultDate", "disabled", "format", "min", "max", "messageIcon", "messageText"], outputs: ["changed"] }, { kind: "pipe", type: DatePipe, name: "date" }, { kind: "component", type: KitPopupComponent, selector: "kit-popup", inputs: ["anchor", "content", "closeOnOutsideClick", "showFooter", "cancelButtonLabel", "applyButtonLabel", "isApplyButtonDisabled", "positionMode", "popupClass", "closePopupOnCancel"], outputs: ["onCancel", "onApply", "onOpen", "onClose"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7392
+ }
7393
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: KitFilterDateComponent, decorators: [{
7394
+ type: Component,
7395
+ args: [{ selector: 'kit-filter-date', imports: [
7396
+ KitPillComponent,
7397
+ TranslateModule,
7398
+ KitDatepickerModule,
7399
+ DatePipe,
7400
+ KitPopupComponent,
7401
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"kit-filter-date\">\n <kit-pill #toggleButton\n [selectable]=\"!filter().readonly\"\n [selected]=\"popup.isPopupOpen\"\n [removable]=\"!filter().readonly\"\n [theme]=\"filter().readonly && kitPillTheme.BLUE || kitPillTheme.DEFAULT\"\n (removed)=\"removeFilter()\"\n (clicked)=\"onPopupToggle()\">\n {{ filter().title | translate }}:\n @if (selectedValues(); as selectedValues) {\n {{ selectedValues?.start | date: pillDateFormat }}\n @if (selectedValues?.start && selectedValues?.end) {\n -\n }\n {{ selectedValues?.end | date: pillDateFormat }}\n }\n </kit-pill>\n</div>\n\n<kit-popup #popup\n popupClass=\"kit-filter-date-popup\"\n [anchor]=\"anchor()\"\n [content]=\"content\"\n [closeOnOutsideClick]=\"false\"\n [showFooter]=\"true\"\n [applyButtonLabel]=\"'kit.filters.apply' | translate\"\n [cancelButtonLabel]=\"'kit.filters.clear' | translate\"\n [isApplyButtonDisabled]=\"applyButtonDisabled()\"\n [closePopupOnCancel]=\"false\"\n (onApply)=\"applyFilter()\"\n (onCancel)=\"clearAllFilters()\"\n (onClose)=\"close()\">\n</kit-popup>\n\n<ng-template #content>\n <div class=\"popup-content\">\n <div class=\"date-input\">\n <kit-datepicker [placeholder]=\"'kit.filters.chooseDateFrom' | translate\"\n [defaultDate]=\"startDate()\"\n [max]=\"endDate()\"\n (changed)=\"onFromDateChange($event)\"\n ></kit-datepicker>\n <kit-datepicker [placeholder]=\"'kit.filters.chooseDateTo' | translate\"\n [defaultDate]=\"endDate()\"\n [min]=\"startDate()\"\n (changed)=\"onToDateChange($event)\"\n ></kit-datepicker>\n </div>\n </div>\n</ng-template>\n", styles: ["::ng-deep .kit-filter-date-popup .popup-content{width:296px;box-sizing:border-box}::ng-deep .kit-filter-date-popup .date-input{display:flex;flex-direction:column;gap:10px}\n"] }]
7402
+ }], propDecorators: { documentClick: [{
7403
+ type: HostListener,
7404
+ args: ['document:click', ['$event']]
7405
+ }] } });
7406
+
7407
+ class KitFilterTextComponent {
7408
+ constructor(translateService) {
7409
+ this.translateService = translateService;
7410
+ this.filter = input.required();
7411
+ this.filterRemoved = output();
7412
+ this.filterChanged = output();
7413
+ this.anchor = viewChild.required('toggleButton', { read: ElementRef });
7414
+ this.popup = viewChild('popup', { read: KitPopupComponent });
7415
+ this.kitDropdownSize = KitDropdownSize;
7416
+ this.kitTextboxSize = KitTextboxSize;
7417
+ this.filterLogicDropdownItems = Object.values(KitFilterLogic).map(item => ({
7418
+ text: this.translateService.instant(`kit.filters.logic.${item}`),
7419
+ value: item,
7420
+ }));
7421
+ this.filterOperatorDropdownItems = filterOperators.map(item => ({
7422
+ text: this.translateService.instant(`kit.filters.operator.${item}`),
7423
+ value: item,
7424
+ }));
7425
+ this.filterItems = signal({
7426
+ logic: KitFilterLogic.AND,
7427
+ filters: [],
7428
+ });
7429
+ this.selectedValues = signal(null);
7430
+ this.kitPillTheme = KitPillTheme;
7431
+ }
7432
+ ngOnInit() {
7433
+ this.initializeSelectedValues();
7434
+ this.showPopupOnInit();
7435
+ }
7436
+ get applyButtonDisabled() {
7437
+ return !this.hasActiveFilters();
7438
+ }
7439
+ onLogicChange(event) {
7440
+ this.filterItems.update(items => ({
7441
+ ...items,
7442
+ logic: event,
7443
+ }));
7444
+ }
7445
+ onOperatorSelect(event, index) {
7446
+ this.updateFilterItem(index, { operator: event });
7447
+ }
7448
+ onValueChange(event, index) {
7449
+ this.updateFilterItem(index, { value: event.trim() });
7450
+ }
7451
+ removeFilter() {
7452
+ this.popup()?.close();
7453
+ this.filterRemoved.emit();
7454
+ }
7455
+ onPopupToggle() {
7456
+ this.popup()?.toggle();
7457
+ }
7458
+ close() {
7459
+ if (!this.hasActiveFilters() || !this.selectedValues()) {
7460
+ this.removeFilter();
7461
+ }
7462
+ }
7463
+ clearAllFilters() {
7464
+ this.resetFiltersItems();
7465
+ }
7466
+ applyFilter() {
7467
+ this.selectedValues.set(this.filterItems());
7468
+ this.filterChanged.emit(this.filterItems());
7469
+ }
7470
+ isFilterValueTextboxDisabled(index) {
7471
+ return this.hasNoValueRequiredOperator(this.filterItems().filters[index].operator);
7472
+ }
7473
+ getSelectedFilterText(filter) {
7474
+ if (this.hasNoValueRequiredOperator(filter.operator)) {
7475
+ return this.translateService.instant(`kit.filters.operator.${filter.operator}`);
7476
+ }
7477
+ return filter.value ?? '';
7478
+ }
7479
+ getSelectedLogicText(selectedValues) {
7480
+ if (!selectedValues) {
7481
+ return null;
7482
+ }
7483
+ const [firstFilter, secondFilter,] = selectedValues.filters;
7484
+ if (this.hasSelectedFilter(firstFilter) && this.hasSelectedFilter(secondFilter)) {
7485
+ return this.translateService.instant(`kit.filters.logic.${selectedValues.logic}`).toLowerCase();
7486
+ }
7487
+ return null;
7488
+ }
7489
+ hasNoValueRequiredOperator(operator) {
7490
+ return kitNoValueRequiredFilterOperators.includes(operator);
7491
+ }
7492
+ initializeSelectedValues() {
7493
+ const filterValue = this.filter().value;
7494
+ if (filterValue) {
7495
+ this.selectedValues.set(filterValue);
7496
+ this.filterItems.set(filterValue);
7497
+ }
7498
+ else {
7499
+ this.resetFiltersItems();
7500
+ }
7501
+ }
7502
+ resetFiltersItems() {
7503
+ const field = this.filter().field;
7504
+ this.filterItems.update(() => ({
7505
+ logic: KitFilterLogic.AND,
7506
+ filters: [
7507
+ this.createFilterItem(field),
7508
+ this.createFilterItem(field),
7509
+ ],
7510
+ }));
7511
+ }
7512
+ showPopupOnInit() {
7513
+ if (!this.hasActiveFilters()) {
7514
+ requestAnimationFrame(() => this.onPopupToggle());
7515
+ }
7516
+ }
7517
+ createFilterItem(field) {
7518
+ return {
7519
+ field,
7520
+ value: '',
7521
+ operator: KitFilterOperator.CONTAINS,
7522
+ };
7523
+ }
7524
+ updateFilterItem(index, update) {
7525
+ this.filterItems.update(items => ({
7526
+ ...items,
7527
+ filters: items.filters.map((item, i) => (i === index && { ...item, ...update } || item)),
7528
+ }));
7529
+ }
7530
+ hasActiveFilters() {
7531
+ return this.filterItems().filters.some(filter => this.hasSelectedFilter(filter));
7532
+ }
7533
+ hasSelectedFilter(filter) {
7534
+ return this.hasNoValueRequiredOperator(filter.operator) || !!filter.value;
7535
+ }
7536
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: KitFilterTextComponent, deps: [{ token: i1$b.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
7537
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.4", type: KitFilterTextComponent, isStandalone: true, selector: "kit-filter-text", inputs: { filter: { classPropertyName: "filter", publicName: "filter", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { filterRemoved: "filterRemoved", filterChanged: "filterChanged" }, viewQueries: [{ propertyName: "anchor", first: true, predicate: ["toggleButton"], descendants: true, read: ElementRef, isSignal: true }, { propertyName: "popup", first: true, predicate: ["popup"], descendants: true, read: KitPopupComponent, isSignal: true }], ngImport: i0, template: "<kit-pill #toggleButton\n [selectable]=\"!filter().readonly\"\n [selected]=\"popup.isPopupOpen\"\n [removable]=\"!filter().readonly\"\n [theme]=\"filter().readonly && kitPillTheme.BLUE || kitPillTheme.DEFAULT\"\n (removed)=\"removeFilter()\"\n (clicked)=\"onPopupToggle()\">\n {{ filter().title | translate }}:\n @if (selectedValues()?.filters; as selectedFilters) {\n @for (filter of selectedFilters; track $index) {\n {{ getSelectedFilterText(filter) }}\n\n @if ($index === 0) {\n {{ getSelectedLogicText(selectedValues()) }}\n }\n }\n }\n</kit-pill>\n\n<kit-popup #popup\n popupClass=\"kit-filter-text-popup\"\n [anchor]=\"anchor()\"\n [content]=\"content\"\n [showFooter]=\"true\"\n [applyButtonLabel]=\"'kit.filters.apply' | translate\"\n [cancelButtonLabel]=\"'kit.filters.clear' | translate\"\n [isApplyButtonDisabled]=\"applyButtonDisabled\"\n [closePopupOnCancel]=\"false\"\n (onApply)=\"applyFilter()\"\n (onCancel)=\"clearAllFilters()\"\n (onClose)=\"close()\">\n</kit-popup>\n\n<ng-template #content>\n <div class=\"popup-content\">\n @for (item of filterItems().filters; track $index) {\n <div class=\"filter-item\">\n <kit-dropdown [items]=\"filterOperatorDropdownItems\"\n [size]=\"kitDropdownSize.SMALL\"\n [selectedItem]=\"$any(item.operator)\"\n (selected)=\"onOperatorSelect($event.value, $index)\"\n ></kit-dropdown>\n <div class=\"filter-controls\">\n <kit-textbox class=\"filter-item-value\"\n [size]=\"kitTextboxSize.SMALL\"\n [defaultValue]=\"item.value\"\n [disabled]=\"isFilterValueTextboxDisabled($index)\"\n (changed)=\"onValueChange($event, $index)\"\n ></kit-textbox>\n @if ($index === 0) {\n <kit-dropdown class=\"logic-selector\"\n [selectedItem]=\"filterItems().logic\"\n [items]=\"filterLogicDropdownItems\"\n [size]=\"kitDropdownSize.SMALL\"\n (selected)=\"onLogicChange($event.value)\"\n ></kit-dropdown>\n }\n </div>\n </div>\n }\n </div>\n</ng-template>\n", styles: ["::ng-deep .kit-filter-text-popup .popup-content{display:flex;flex-direction:column;gap:10px;width:296px;box-sizing:border-box}::ng-deep .kit-filter-text-popup .filter-item{display:flex;flex-direction:column;gap:10px}::ng-deep .kit-filter-text-popup .filter-item-value{flex:1}::ng-deep .kit-filter-text-popup .filter-controls{display:flex;gap:10px}::ng-deep .kit-filter-text-popup .logic-selector{flex-shrink:0;width:100px}\n"], dependencies: [{ kind: "ngmodule", type: KitDropdownModule }, { kind: "component", type: KitDropdownComponent, selector: "kit-dropdown", inputs: ["items", "selectedItem", "label", "disabled", "messageIcon", "messageText", "invalid", "defaultItem", "listHeight", "hideDefaultItem", "toggleIcon", "popupSettings", "isValuePrimitive", "size"], outputs: ["selected"] }, { kind: "ngmodule", type: KitTextboxModule }, { kind: "component", type: KitTextboxComponent, selector: "kit-textbox", inputs: ["placeholder", "label", "defaultValue", "messageIcon", "messageText", "disabled", "maxlength", "state", "size", "icon"], outputs: ["blured", "changed"] }, { kind: "component", type: KitPillComponent, selector: "kit-pill", inputs: ["removable", "selectable", "selected", "type", "theme", "icon", "iconType"], outputs: ["clicked", "removed"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$b.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: KitPopupComponent, selector: "kit-popup", inputs: ["anchor", "content", "closeOnOutsideClick", "showFooter", "cancelButtonLabel", "applyButtonLabel", "isApplyButtonDisabled", "positionMode", "popupClass", "closePopupOnCancel"], outputs: ["onCancel", "onApply", "onOpen", "onClose"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7538
+ }
7539
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: KitFilterTextComponent, decorators: [{
7540
+ type: Component,
7541
+ args: [{ selector: 'kit-filter-text', imports: [
7542
+ KitDropdownModule,
7543
+ KitTextboxModule,
7544
+ KitPillComponent,
7545
+ TranslateModule,
7546
+ ReactiveFormsModule,
7547
+ KitPopupComponent,
7548
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<kit-pill #toggleButton\n [selectable]=\"!filter().readonly\"\n [selected]=\"popup.isPopupOpen\"\n [removable]=\"!filter().readonly\"\n [theme]=\"filter().readonly && kitPillTheme.BLUE || kitPillTheme.DEFAULT\"\n (removed)=\"removeFilter()\"\n (clicked)=\"onPopupToggle()\">\n {{ filter().title | translate }}:\n @if (selectedValues()?.filters; as selectedFilters) {\n @for (filter of selectedFilters; track $index) {\n {{ getSelectedFilterText(filter) }}\n\n @if ($index === 0) {\n {{ getSelectedLogicText(selectedValues()) }}\n }\n }\n }\n</kit-pill>\n\n<kit-popup #popup\n popupClass=\"kit-filter-text-popup\"\n [anchor]=\"anchor()\"\n [content]=\"content\"\n [showFooter]=\"true\"\n [applyButtonLabel]=\"'kit.filters.apply' | translate\"\n [cancelButtonLabel]=\"'kit.filters.clear' | translate\"\n [isApplyButtonDisabled]=\"applyButtonDisabled\"\n [closePopupOnCancel]=\"false\"\n (onApply)=\"applyFilter()\"\n (onCancel)=\"clearAllFilters()\"\n (onClose)=\"close()\">\n</kit-popup>\n\n<ng-template #content>\n <div class=\"popup-content\">\n @for (item of filterItems().filters; track $index) {\n <div class=\"filter-item\">\n <kit-dropdown [items]=\"filterOperatorDropdownItems\"\n [size]=\"kitDropdownSize.SMALL\"\n [selectedItem]=\"$any(item.operator)\"\n (selected)=\"onOperatorSelect($event.value, $index)\"\n ></kit-dropdown>\n <div class=\"filter-controls\">\n <kit-textbox class=\"filter-item-value\"\n [size]=\"kitTextboxSize.SMALL\"\n [defaultValue]=\"item.value\"\n [disabled]=\"isFilterValueTextboxDisabled($index)\"\n (changed)=\"onValueChange($event, $index)\"\n ></kit-textbox>\n @if ($index === 0) {\n <kit-dropdown class=\"logic-selector\"\n [selectedItem]=\"filterItems().logic\"\n [items]=\"filterLogicDropdownItems\"\n [size]=\"kitDropdownSize.SMALL\"\n (selected)=\"onLogicChange($event.value)\"\n ></kit-dropdown>\n }\n </div>\n </div>\n }\n </div>\n</ng-template>\n", styles: ["::ng-deep .kit-filter-text-popup .popup-content{display:flex;flex-direction:column;gap:10px;width:296px;box-sizing:border-box}::ng-deep .kit-filter-text-popup .filter-item{display:flex;flex-direction:column;gap:10px}::ng-deep .kit-filter-text-popup .filter-item-value{flex:1}::ng-deep .kit-filter-text-popup .filter-controls{display:flex;gap:10px}::ng-deep .kit-filter-text-popup .logic-selector{flex-shrink:0;width:100px}\n"] }]
7549
+ }], ctorParameters: () => [{ type: i1$b.TranslateService }] });
7550
+
7551
+ class KitGridFiltersComponent {
7552
+ constructor(store) {
7553
+ this.store = store;
7554
+ this.excludedColumns = input.required();
7555
+ this.columns = input.required();
7556
+ this.checkboxConfig = input.required();
7557
+ this.filterChanged = output();
7558
+ this.kitFilterType = KitFilterType;
7559
+ this.filters = toSignal(this.store.select(KIT_GRID_STATE_TOKEN).pipe(map(gridData => gridData.filter)), { initialValue: [] });
7560
+ this.filterSelectorItems = computed(() => this.columns()
7561
+ .filter(item => !item.hidden)
7562
+ .filter(item => !this.excludedColumns().includes(item.field))
7563
+ .map(item => this.buildFilterSelectorItem(item, this.filters())));
7564
+ }
7565
+ addFilter(item) {
7566
+ this.store.dispatch(new AddGridFilter({
7567
+ title: item.title,
7568
+ field: item.field,
7569
+ type: item.filterType,
7570
+ value: null,
7571
+ }));
7572
+ }
7573
+ removeFilter(field) {
7574
+ this.store.dispatch(new RemoveGridFilter(field));
7575
+ this.filterChanged.emit();
7576
+ }
7577
+ applyFilter(filter, values) {
7578
+ this.store.dispatch([
7579
+ new UpdateGridFilter({
7580
+ ...filter,
7581
+ value: values,
7582
+ }),
7583
+ new SetGridSkip(0),
7584
+ ]);
7585
+ this.filterChanged.emit();
7586
+ }
7587
+ buildFilterSelectorItem(item, filters) {
7588
+ return {
7589
+ title: item.title,
7590
+ field: item.field,
7591
+ disabled: this.isFilterSelectorItemDisabled(item, filters),
7592
+ filterType: item.filterType,
7593
+ };
7594
+ }
7595
+ ;
7596
+ isFilterSelectorItemDisabled(item, filters) {
7597
+ return filters.some(filter => filter.field === item.field);
7598
+ }
7599
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: KitGridFiltersComponent, deps: [{ token: i1$d.Store }], target: i0.ɵɵFactoryTarget.Component }); }
7600
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.4", type: KitGridFiltersComponent, isStandalone: true, selector: "kit-grid-filters", inputs: { excludedColumns: { classPropertyName: "excludedColumns", publicName: "excludedColumns", isSignal: true, isRequired: true, transformFunction: null }, columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: true, transformFunction: null }, checkboxConfig: { classPropertyName: "checkboxConfig", publicName: "checkboxConfig", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { filterChanged: "filterChanged" }, ngImport: i0, template: "<div class=\"kit-grid-filters\">\n @for (item of filters(); track item) {\n @switch (item.type) {\n @case (kitFilterType.CHECKBOX) {\n <kit-filter-checkbox [filter]=\"item\"\n [items]=\"checkboxConfig()[item.field].items\"\n [translateKeyPrefix]=\"checkboxConfig()[item.field].translateKeyPrefix\"\n (filterRemoved)=\"removeFilter(item.field)\"\n (filterChanged)=\"applyFilter(item, $event)\"\n ></kit-filter-checkbox>\n }\n @case (kitFilterType.DATE) {\n <kit-filter-date [filter]=\"item\"\n (filterRemoved)=\"removeFilter(item.field)\"\n (filterChanged)=\"applyFilter(item, $event)\"\n ></kit-filter-date>\n }\n @case (kitFilterType.TEXT) {\n <kit-filter-text [filter]=\"item\"\n (filterRemoved)=\"removeFilter(item.field)\"\n (filterChanged)=\"applyFilter(item, $event)\"\n ></kit-filter-text>\n }\n }\n }\n\n <kit-filter-selector [items]=\"filterSelectorItems()\"\n (itemSelected)=\"addFilter($event)\"\n ></kit-filter-selector>\n</div>\n", styles: [".kit-grid-filters{display:flex;flex-wrap:wrap;gap:10px}\n"], dependencies: [{ kind: "component", type: KitFilterSelectorComponent, selector: "kit-filter-selector", inputs: ["items"], outputs: ["itemSelected"] }, { kind: "component", type: KitFilterCheckboxComponent, selector: "kit-filter-checkbox", inputs: ["filter", "translateKeyPrefix", "items"], outputs: ["itemsChange", "filterRemoved", "filterChanged"] }, { kind: "component", type: KitFilterDateComponent, selector: "kit-filter-date", inputs: ["filter"], outputs: ["filterRemoved", "filterChanged"] }, { kind: "component", type: KitFilterTextComponent, selector: "kit-filter-text", inputs: ["filter"], outputs: ["filterRemoved", "filterChanged"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7601
+ }
7602
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: KitGridFiltersComponent, decorators: [{
7603
+ type: Component,
7604
+ args: [{ selector: 'kit-grid-filters', standalone: true, imports: [
7605
+ KitFilterSelectorComponent,
7606
+ KitFilterCheckboxComponent,
7607
+ KitFilterDateComponent,
7608
+ KitFilterTextComponent,
7609
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"kit-grid-filters\">\n @for (item of filters(); track item) {\n @switch (item.type) {\n @case (kitFilterType.CHECKBOX) {\n <kit-filter-checkbox [filter]=\"item\"\n [items]=\"checkboxConfig()[item.field].items\"\n [translateKeyPrefix]=\"checkboxConfig()[item.field].translateKeyPrefix\"\n (filterRemoved)=\"removeFilter(item.field)\"\n (filterChanged)=\"applyFilter(item, $event)\"\n ></kit-filter-checkbox>\n }\n @case (kitFilterType.DATE) {\n <kit-filter-date [filter]=\"item\"\n (filterRemoved)=\"removeFilter(item.field)\"\n (filterChanged)=\"applyFilter(item, $event)\"\n ></kit-filter-date>\n }\n @case (kitFilterType.TEXT) {\n <kit-filter-text [filter]=\"item\"\n (filterRemoved)=\"removeFilter(item.field)\"\n (filterChanged)=\"applyFilter(item, $event)\"\n ></kit-filter-text>\n }\n }\n }\n\n <kit-filter-selector [items]=\"filterSelectorItems()\"\n (itemSelected)=\"addFilter($event)\"\n ></kit-filter-selector>\n</div>\n", styles: [".kit-grid-filters{display:flex;flex-wrap:wrap;gap:10px}\n"] }]
7610
+ }], ctorParameters: () => [{ type: i1$d.Store }] });
7611
+
6345
7612
  // KitButton
6346
7613
 
6347
7614
  /**
6348
7615
  * Generated bundle index. Do not edit.
6349
7616
  */
6350
7617
 
6351
- export { AbstractKitCtaPanelConfirmationComponent, KitAutocompleteComponent, KitAutocompleteDirective, KitAutocompleteModule, KitAvatarComponent, KitAvatarModule, KitAvatarSize, KitBadgeDirective, KitBadgeTheme, KitBreadcrumbsComponent, KitBreadcrumbsModule, KitButtonComponent, KitButtonIconPosition, KitButtonKind, KitButtonModule, KitButtonState, KitButtonType, KitCardComponent, KitCardModule, KitCardTheme, KitCheckboxComponent, KitCheckboxModule, KitCheckboxState, KitCollapsedListComponent, KitCopyTextComponent, KitCopyTextModule, KitCtaPanelAbstractConfirmationComponent, KitCtaPanelAbstractConfirmationModule, KitCtaPanelActionComponent, KitCtaPanelActionModule, KitCtaPanelConfirmationComponent, KitCtaPanelConfirmationModule, KitCtaPanelItemComponent, KitCtaPanelItemModule, KitCtaPanelItemType, KitDataFieldComponent, KitDataFieldState, KitDatepickerComponent, KitDatepickerModule, KitDaterangeComponent, KitDaterangeModule, KitDaterangeType, KitDatetimepickerComponent, KitDatetimepickerModule, KitDialogActionsComponent, KitDialogComponent, KitDialogService, KitDropdownComponent, KitDropdownModule, KitDropdownSize, KitEmptySectionComponent, KitEntitySectionComponent, KitEntitySectionContainerComponent, KitEntityTitleComponent, KitEntityTitleModule, KitFileCardComponent, KitFileCardMessagesComponent, KitFileCardModule, KitFileUploadComponent, KitFileUploadModule, KitFilterLogic, KitFilterOperator, KitGridCellTemplateDirective, KitGridColumnComponent, KitGridComponent, KitGridDetailTemplateDirective, KitGridModule, KitGridSortSettingsMode, KitInputLabelComponent, KitInputLabelModule, KitInputMessageComponent, KitInputMessageModule, KitLoaderComponent, KitLoaderModule, KitLocationStepperComponent, KitLocationStepperModule, KitMultiselectComponent, KitMultiselectModule, KitNavigationMenuComponent, KitNavigationMenuModule, KitNavigationMenuService, KitNavigationMenuSubmenuComponent, KitNavigationTabsComponent, KitNavigationTabsModule, KitNavigationTabsType, KitNoteComponent, KitNoteModule, KitNotificationComponent, KitNotificationService, KitNotificationType, KitNumericTextboxComponent, KitNumericTextboxModule, KitNumericTextboxState, KitPermissionDirective, KitPermissionModule, KitPillComponent, KitPillTheme, KitPillType, KitPopupAlignHorizontal, KitPopupAlignVertical, KitPopupComponent, KitPopupPositionMode, KitProfileMenuComponent, KitQueryParamsName, KitQueryParamsService, KitRadioButtonComponent, KitRadioButtonModule, KitRadioButtonType, KitScrollNavigationComponent, KitScrollNavigationSectionComponent, KitSearchBarComponent, KitSearchBarModule, KitShipmentCard, KitSkeletonAnimation, KitSkeletonComponent, KitSkeletonModule, KitSkeletonShape, KitSortDirection, KitSortableComponent, KitSvgIcon, KitSvgIconComponent, KitSvgIconModule, KitSvgIconType, KitSvgSpriteComponent, KitSvgSpriteModule, KitSwitchComponent, KitSwitchMode, KitSwitchModule, KitSwitchState, KitTabComponent, KitTabContentDirective, KitTabsComponent, KitTabsModule, KitTabsSize, KitTabsType, KitTextLabelComponent, KitTextLabelModule, KitTextLabelState, KitTextareaAutoresizeDirective, KitTextareaComponent, KitTextareaModule, KitTextareaState, KitTextboxComponent, KitTextboxModule, KitTextboxSize, KitTextboxState, KitTileLayoutComponent, KitTileLayoutItemComponent, KitTileLayoutModule, KitTimelineCardComponent, KitTimelineComponent, KitTimelineTheme, KitTimelineType, KitTimepickerComponent, KitTimepickerModule, KitTitleTemplateDirective, KitToastrModule, KitToastrPosition, KitToastrService, KitToastrType, KitToggleComponent, KitToggleModule, KitTooltipDirective, KitTooltipPosition, KitTruncateTextComponent, KitUnitsTextboxComponent, KitUnitsTextboxDropdownPosition, KitUnitsTextboxModule, KitUnitsTextboxType, buildRandomUUID, kitDataStateToODataString };
7618
+ export { AbstractKitCtaPanelConfirmationComponent, AddGridFilter, KIT_BASE_PATH, KIT_GRID_STATE_TOKEN, KitAutocompleteComponent, KitAutocompleteDirective, KitAutocompleteModule, KitAvatarComponent, KitAvatarModule, KitAvatarSize, KitBadgeDirective, KitBadgeTheme, KitBreadcrumbsComponent, KitBreadcrumbsModule, KitButtonComponent, KitButtonIconPosition, KitButtonKind, KitButtonModule, KitButtonState, KitButtonType, KitCardComponent, KitCardModule, KitCardTheme, KitCheckboxComponent, KitCheckboxModule, KitCheckboxState, KitCollapsedListComponent, KitCopyTextComponent, KitCopyTextModule, KitCtaPanelAbstractConfirmationComponent, KitCtaPanelAbstractConfirmationModule, KitCtaPanelActionComponent, KitCtaPanelActionModule, KitCtaPanelConfirmationComponent, KitCtaPanelConfirmationModule, KitCtaPanelItemComponent, KitCtaPanelItemModule, KitCtaPanelItemType, KitDataFieldComponent, KitDataFieldState, KitDatepickerComponent, KitDatepickerModule, KitDaterangeComponent, KitDaterangeModule, KitDaterangeType, KitDatetimepickerComponent, KitDatetimepickerModule, KitDialogActionsComponent, KitDialogComponent, KitDialogService, KitDropdownComponent, KitDropdownModule, KitDropdownSize, KitEmptySectionComponent, KitEntitySectionComponent, KitEntitySectionContainerComponent, KitEntityTitleComponent, KitEntityTitleModule, KitFileCardComponent, KitFileCardMessagesComponent, KitFileCardModule, KitFileUploadComponent, KitFileUploadModule, KitFilterLogic, KitFilterOperator, KitFilterType, KitGridCellTemplateDirective, KitGridColumnComponent, KitGridComponent, KitGridDetailTemplateDirective, KitGridFiltersComponent, KitGridModule, KitGridSortSettingsMode, KitGridState, KitGridViewType, KitGridViewsComponent, KitGridViewsState, KitInputLabelComponent, KitInputLabelModule, KitInputMessageComponent, KitInputMessageModule, KitLoaderComponent, KitLoaderModule, KitLocationStepperComponent, KitLocationStepperModule, KitMultiselectComponent, KitMultiselectModule, KitNavigationMenuComponent, KitNavigationMenuModule, KitNavigationMenuService, KitNavigationMenuSubmenuComponent, KitNavigationTabsComponent, KitNavigationTabsModule, KitNavigationTabsType, KitNoteComponent, KitNoteModule, KitNotificationComponent, KitNotificationService, KitNotificationType, KitNumericTextboxComponent, KitNumericTextboxModule, KitNumericTextboxState, KitPermissionDirective, KitPermissionModule, KitPillComponent, KitPillTheme, KitPillType, KitPopupAlignHorizontal, KitPopupAlignVertical, KitPopupComponent, KitPopupPositionMode, KitProfileMenuComponent, KitQueryParamsName, KitQueryParamsService, KitRadioButtonComponent, KitRadioButtonModule, KitRadioButtonType, KitScrollNavigationComponent, KitScrollNavigationSectionComponent, KitSearchBarComponent, KitSearchBarModule, KitShipmentCard, KitSkeletonAnimation, KitSkeletonComponent, KitSkeletonModule, KitSkeletonShape, KitSortDirection, KitSortableComponent, KitSvgIcon, KitSvgIconComponent, KitSvgIconModule, KitSvgIconType, KitSvgSpriteComponent, KitSvgSpriteModule, KitSwitchComponent, KitSwitchMode, KitSwitchModule, KitSwitchState, KitTabComponent, KitTabContentDirective, KitTabsComponent, KitTabsModule, KitTabsSize, KitTabsType, KitTextLabelComponent, KitTextLabelModule, KitTextLabelState, KitTextareaAutoresizeDirective, KitTextareaComponent, KitTextareaModule, KitTextareaState, KitTextboxComponent, KitTextboxModule, KitTextboxSize, KitTextboxState, KitTileLayoutComponent, KitTileLayoutItemComponent, KitTileLayoutModule, KitTimelineCardComponent, KitTimelineComponent, KitTimelineTheme, KitTimelineType, KitTimepickerComponent, KitTimepickerModule, KitTitleTemplateDirective, KitToastrModule, KitToastrPosition, KitToastrService, KitToastrType, KitToggleComponent, KitToggleModule, KitTooltipDirective, KitTooltipPosition, KitTranslateService, KitTruncateTextComponent, KitUnitsTextboxComponent, KitUnitsTextboxDropdownPosition, KitUnitsTextboxModule, KitUnitsTextboxType, RemoveGridFilter, SetGridColumns, SetGridSkip, SetGridSort, UpdateGridFilter, buildRandomUUID, kitBuildCheckboxFilterItems, kitBuildFilters, kitBuildGridColumn, kitBuildOdataFilter, kitDataStateToODataString, kitEncodeViewNameToUrl, kitNoValueRequiredFilterOperators };
6352
7619
  //# sourceMappingURL=indigina-ui-kit.mjs.map