@indigina/ui-kit 1.1.129 → 1.1.131
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.
- package/fesm2022/indigina-ui-kit.mjs +786 -27
- package/fesm2022/indigina-ui-kit.mjs.map +1 -1
- package/lib/components/kit-navigation-menu/kit-navigation-menu.component.d.ts +4 -4
- package/lib/i18n/kit-translations.d.ts +2 -0
- package/lib/services/api/kit-settings-api/kit-settings-api.model.d.ts +9 -0
- package/lib/services/api/kit-settings-api/kit-settings-api.service.d.ts +14 -0
- package/lib/services/kit-translate/kit-translate.service.d.ts +9 -0
- package/lib/store/abstract-payload.action.d.ts +4 -0
- package/lib/store/store.const.d.ts +2 -0
- package/lib/store/store.model.d.ts +5 -0
- package/lib/token/kit-base-path.token.d.ts +2 -0
- package/lib/widgets/kit-grid-management/kit-grid-filters/kit-grid-filters.model.d.ts +18 -0
- package/lib/widgets/kit-grid-management/kit-grid-filters/kit-grid-filters.util.d.ts +3 -0
- package/lib/widgets/kit-grid-management/kit-grid-management.util.d.ts +3 -0
- package/lib/widgets/kit-grid-management/kit-grid-views/kit-grid-views-list/kit-grid-views-list.component.d.ts +50 -0
- package/lib/widgets/kit-grid-management/kit-grid-views/kit-grid-views-manager/kit-grid-views-manager.component.d.ts +25 -0
- package/lib/widgets/kit-grid-management/kit-grid-views/kit-grid-views-save/kit-grid-views-save.component.d.ts +38 -0
- package/lib/widgets/kit-grid-management/kit-grid-views/kit-grid-views.component.d.ts +38 -0
- package/lib/widgets/kit-grid-management/kit-grid-views/kit-grid-views.util.d.ts +13 -0
- package/lib/widgets/kit-grid-management/kit-grid-views/store/kit-grid-views.action.d.ts +23 -0
- package/lib/widgets/kit-grid-management/kit-grid-views/store/kit-grid-views.model.d.ts +33 -0
- package/lib/widgets/kit-grid-management/kit-grid-views/store/kit-grid-views.state.d.ts +25 -0
- package/lib/widgets/kit-grid-management/store/kit-grid.action.d.ts +25 -0
- package/lib/widgets/kit-grid-management/store/kit-grid.model.d.ts +18 -0
- package/lib/widgets/kit-grid-management/store/kit-grid.state.d.ts +18 -0
- package/package.json +1 -1
- package/public-api.d.ts +11 -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, 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 } 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,15 +23,16 @@ 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$b from '@angular/common/http';
|
|
35
36
|
import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';
|
|
36
37
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
37
38
|
import initials from 'initials';
|
|
@@ -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 i4 from '@ngx-translate/core';
|
|
54
|
+
import { TranslateModule } from '@ngx-translate/core';
|
|
55
|
+
import { __decorate } from 'tslib';
|
|
56
|
+
import * as i1$c 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) {
|
|
@@ -4002,11 +4011,11 @@ class KitNavigationMenuComponent {
|
|
|
4002
4011
|
/**
|
|
4003
4012
|
* An items list which is going to be rendered as menu items
|
|
4004
4013
|
*/
|
|
4005
|
-
this.menuItems = [];
|
|
4014
|
+
this.menuItems = model([]);
|
|
4006
4015
|
/**
|
|
4007
4016
|
* An items list which is going to be rendered as apps menu items
|
|
4008
4017
|
*/
|
|
4009
|
-
this.appsMenuItems = [];
|
|
4018
|
+
this.appsMenuItems = input([]);
|
|
4010
4019
|
this.logoPath = '';
|
|
4011
4020
|
this.selectedItem = signal(null);
|
|
4012
4021
|
this.selectedAppsItems = signal(null);
|
|
@@ -4017,16 +4026,16 @@ class KitNavigationMenuComponent {
|
|
|
4017
4026
|
this.setExpandedStateOnRouterChange();
|
|
4018
4027
|
}
|
|
4019
4028
|
ngOnInit() {
|
|
4020
|
-
this.updateNavigationState(this.menuItems, this.router.url);
|
|
4029
|
+
this.updateNavigationState(this.menuItems(), this.router.url);
|
|
4021
4030
|
}
|
|
4022
4031
|
handleClick(item) {
|
|
4023
|
-
!item.items ? this.collapseAllItems(this.menuItems) : this.toggleItem(item);
|
|
4032
|
+
!item.items ? this.collapseAllItems(this.menuItems()) : this.toggleItem(item);
|
|
4024
4033
|
this.selectedAppsItems.set(null);
|
|
4025
4034
|
this.selectedItem.set(item);
|
|
4026
4035
|
this.updateMenuState();
|
|
4027
4036
|
}
|
|
4028
4037
|
handleLogoClick() {
|
|
4029
|
-
this.collapseAllItems(this.menuItems);
|
|
4038
|
+
this.collapseAllItems(this.menuItems());
|
|
4030
4039
|
this.selectedAppsItems.set(null);
|
|
4031
4040
|
this.selectedItem.set(null);
|
|
4032
4041
|
this.updateMenuState();
|
|
@@ -4034,17 +4043,16 @@ class KitNavigationMenuComponent {
|
|
|
4034
4043
|
onAppsMenuButtonClick() {
|
|
4035
4044
|
if (this.selectedAppsItems() && !this.collapsed()) {
|
|
4036
4045
|
this.selectedAppsItems.set(null);
|
|
4037
|
-
this.collapseAllItems(this.menuItems);
|
|
4046
|
+
this.collapseAllItems(this.menuItems());
|
|
4038
4047
|
}
|
|
4039
4048
|
else {
|
|
4040
4049
|
this.kitNavigationMenuService.setCollapsedState(false);
|
|
4041
|
-
this.
|
|
4042
|
-
this.selectedAppsItems.set(this.appsMenuItems);
|
|
4050
|
+
this.selectedAppsItems.set(this.appsMenuItems());
|
|
4043
4051
|
}
|
|
4044
4052
|
this.updateMenuState();
|
|
4045
4053
|
}
|
|
4046
4054
|
setExpandedStateOnRouterChange() {
|
|
4047
|
-
this.router.events.pipe(filter(event => event instanceof NavigationEnd), takeUntilDestroyed()).subscribe(() => this.updateNavigationState(this.menuItems, this.router.url));
|
|
4055
|
+
this.router.events.pipe(filter(event => event instanceof NavigationEnd), takeUntilDestroyed()).subscribe(() => this.updateNavigationState(this.menuItems(), this.router.url));
|
|
4048
4056
|
}
|
|
4049
4057
|
updateNavigationState(items, url) {
|
|
4050
4058
|
const matchLink = (item) => !!(item.link && url.startsWith(item.link));
|
|
@@ -4057,7 +4065,6 @@ class KitNavigationMenuComponent {
|
|
|
4057
4065
|
if (item.expanded) {
|
|
4058
4066
|
this.selectedItem.set(item);
|
|
4059
4067
|
this.selectedAppsItems.set(null);
|
|
4060
|
-
this.kitNavigationMenuService.setCollapsedState(false);
|
|
4061
4068
|
this.updateMenuState();
|
|
4062
4069
|
}
|
|
4063
4070
|
}
|
|
@@ -4067,30 +4074,27 @@ class KitNavigationMenuComponent {
|
|
|
4067
4074
|
if (item.active) {
|
|
4068
4075
|
this.selectedItem.set(item);
|
|
4069
4076
|
this.selectedAppsItems.set(null);
|
|
4070
|
-
this.kitNavigationMenuService.setCollapsedState(true);
|
|
4071
4077
|
this.updateMenuState();
|
|
4072
4078
|
}
|
|
4073
4079
|
}
|
|
4074
4080
|
});
|
|
4081
|
+
this.menuItems.set([...items]);
|
|
4075
4082
|
}
|
|
4076
4083
|
collapseAllItems(items) {
|
|
4077
4084
|
this.kitNavigationMenuService.setCollapsedState(true);
|
|
4078
4085
|
items.forEach(item => item.expanded = false);
|
|
4079
4086
|
}
|
|
4080
4087
|
toggleItem(item) {
|
|
4081
|
-
if (this.collapsed() ||
|
|
4088
|
+
if (this.collapsed() || (!this.selectedAppsItems() && this.selectedItem() === item)) {
|
|
4082
4089
|
this.kitNavigationMenuService.setCollapsedState(!this.collapsed());
|
|
4083
4090
|
}
|
|
4084
|
-
else {
|
|
4085
|
-
this.menuItems.forEach(item => item.expanded = false);
|
|
4086
|
-
}
|
|
4087
4091
|
item.expanded = !item.expanded;
|
|
4088
4092
|
}
|
|
4089
4093
|
updateMenuState() {
|
|
4090
4094
|
this.kitNavigationMenuService.setSelectedState(!!this.selectedItem()?.items, !!this.selectedAppsItems());
|
|
4091
4095
|
}
|
|
4092
4096
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: KitNavigationMenuComponent, deps: [{ token: i1$7.Router }, { token: KitNavigationMenuService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4093
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.4", type: KitNavigationMenuComponent, isStandalone: false, selector: "kit-navigation-menu", inputs: { menuItems: "menuItems", appsMenuItems: "appsMenuItems", logoPath: "logoPath" }, ngImport: i0, template: "<div class=\"kit-navigation-menu\"\n [class.collapsed]=\"collapsed()\">\n <div class=\"main-panel\">\n @if (appsMenuItems.length > 1) {\n <button class=\"app-btn\"\n [class.active]=\"selectedAppsItems() && !collapsed()\"\n (click)=\"onAppsMenuButtonClick()\">\n <kit-svg-icon class=\"app-btn-icon\"\n [icon]=\"KitSvgIcon.FOUR_SQUARE\"\n ></kit-svg-icon>\n </button>\n }\n <div class=\"nav-list\">\n @for (item of menuItems; track
|
|
4097
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.4", type: KitNavigationMenuComponent, isStandalone: false, selector: "kit-navigation-menu", inputs: { menuItems: { classPropertyName: "menuItems", publicName: "menuItems", isSignal: true, isRequired: false, transformFunction: null }, appsMenuItems: { classPropertyName: "appsMenuItems", publicName: "appsMenuItems", isSignal: true, isRequired: false, transformFunction: null }, logoPath: { classPropertyName: "logoPath", publicName: "logoPath", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { menuItems: "menuItemsChange" }, ngImport: i0, template: "<div class=\"kit-navigation-menu\"\n [class.collapsed]=\"collapsed()\">\n <div class=\"main-panel\">\n @if (appsMenuItems().length > 1) {\n <button class=\"app-btn\"\n [class.active]=\"selectedAppsItems() && !collapsed()\"\n (click)=\"onAppsMenuButtonClick()\">\n <kit-svg-icon class=\"app-btn-icon\"\n [icon]=\"KitSvgIcon.FOUR_SQUARE\"\n ></kit-svg-icon>\n </button>\n }\n <div class=\"nav-list\">\n @for (item of menuItems(); track $index) {\n @if (item.items?.length) {\n <a class=\"nav-link\"\n kitTooltip\n kitTooltipFilter=\".nav-link\"\n [kitTooltipPosition]=\"KitTooltipPosition.RIGHT\"\n [title]=\"item.title\"\n [class.active]=\"item.active\"\n (click)=\"handleClick(item)\">\n @if (item.icon) {\n <ng-container *ngTemplateOutlet=\"linkIconTemplate; context: { $implicit: item }\"\n ></ng-container>\n }\n </a>\n } @else {\n @if (item.link) {\n <a class=\"nav-link\"\n routerLinkActive=\"active\"\n kitTooltip\n kitTooltipFilter=\".nav-link\"\n [kitTooltipPosition]=\"KitTooltipPosition.RIGHT\"\n [title]=\"item.title\"\n [routerLink]=\"item.link\"\n (click)=\"handleClick(item)\">\n @if (item.icon) {\n <ng-container *ngTemplateOutlet=\"linkIconTemplate; context: { $implicit: item }\"\n ></ng-container>\n }\n </a>\n }\n }\n }\n </div>\n </div>\n\n @if (!collapsed() && (selectedItem()?.items || selectedAppsItems())) {\n <kit-navigation-menu-submenu class=\"sub-panel\"\n [@widthExpandCollapseAnimation]\n [menuItem]=\"selectedItem()\"\n [appsMenuItems]=\"selectedAppsItems()\"\n [logoPath]=\"logoPath\"\n (logoClicked)=\"handleLogoClick()\"\n ></kit-navigation-menu-submenu>\n }\n\n <ng-template #linkIconTemplate let-item>\n <kit-svg-icon class=\"nav-link-icon\"\n [icon]=\"item.icon\"\n [ngClass]=\"item?.iconType ?? KitSvgIconType.FILL\"\n ></kit-svg-icon>\n </ng-template>\n</div>\n", styles: [".kit-navigation-menu{display:flex;height:100%}.kit-navigation-menu .app-btn{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border:none;background:none;border-radius:8px;cursor:pointer}.kit-navigation-menu .app-btn-icon{width:16px;height:16px;fill:var(--ui-kit-color-white);stroke:var(--ui-kit-color-white)}.kit-navigation-menu .app-btn:hover{background:var(--ui-kit-color-grey-14)}.kit-navigation-menu .app-btn.active{background:var(--ui-kit-color-main)}.kit-navigation-menu .main-panel{display:flex;flex-direction:column;padding:25px 10px;width:56px;box-sizing:border-box}.kit-navigation-menu .main-panel:has(.app-btn){gap:46px}.kit-navigation-menu .main-panel:has(.app-btn) .nav-list{margin-top:0}.kit-navigation-menu .sub-panel{display:block;width:200px;overflow:hidden}.kit-navigation-menu .nav-list{display:flex;flex-direction:column;gap:30px;margin-top:82px}.kit-navigation-menu .nav-link{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:8px;cursor:pointer}.kit-navigation-menu .nav-link:hover{background:var(--ui-kit-color-grey-14)}.kit-navigation-menu .nav-link.active{background:var(--ui-kit-color-main)}.kit-navigation-menu .nav-link-icon{display:block;width:16px;height:16px;flex-shrink:0}.kit-navigation-menu .nav-link-icon.fill{fill:var(--ui-kit-color-white);stroke:none}.kit-navigation-menu .nav-link-icon.stroke{fill:none;stroke:var(--ui-kit-color-white)}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: KitSvgIconComponent, selector: "kit-svg-icon", inputs: ["icon", "iconClass"] }, { kind: "directive", type: i1$7.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1$7.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "component", type: KitNavigationMenuSubmenuComponent, selector: "kit-navigation-menu-submenu", inputs: ["menuItem", "appsMenuItems", "logoPath"], outputs: ["logoClicked"] }, { kind: "directive", type: KitTooltipDirective, selector: "[kitTooltip]", inputs: ["kitTooltipPosition", "kitTooltipFilter", "kitTooltipTemplateRef", "kitTooltipVisible"] }], animations: [
|
|
4094
4098
|
expandCollapseAnimation('width'),
|
|
4095
4099
|
], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
4096
4100
|
}
|
|
@@ -4098,12 +4102,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImpor
|
|
|
4098
4102
|
type: Component,
|
|
4099
4103
|
args: [{ selector: 'kit-navigation-menu', changeDetection: ChangeDetectionStrategy.OnPush, animations: [
|
|
4100
4104
|
expandCollapseAnimation('width'),
|
|
4101
|
-
], standalone: false, template: "<div class=\"kit-navigation-menu\"\n [class.collapsed]=\"collapsed()\">\n <div class=\"main-panel\">\n @if (appsMenuItems.length > 1) {\n <button class=\"app-btn\"\n [class.active]=\"selectedAppsItems() && !collapsed()\"\n (click)=\"onAppsMenuButtonClick()\">\n <kit-svg-icon class=\"app-btn-icon\"\n [icon]=\"KitSvgIcon.FOUR_SQUARE\"\n ></kit-svg-icon>\n </button>\n }\n <div class=\"nav-list\">\n @for (item of menuItems; track
|
|
4102
|
-
}], ctorParameters: () => [{ type: i1$7.Router }, { type: KitNavigationMenuService }], propDecorators: {
|
|
4103
|
-
type: Input
|
|
4104
|
-
}], appsMenuItems: [{
|
|
4105
|
-
type: Input
|
|
4106
|
-
}], logoPath: [{
|
|
4105
|
+
], standalone: false, template: "<div class=\"kit-navigation-menu\"\n [class.collapsed]=\"collapsed()\">\n <div class=\"main-panel\">\n @if (appsMenuItems().length > 1) {\n <button class=\"app-btn\"\n [class.active]=\"selectedAppsItems() && !collapsed()\"\n (click)=\"onAppsMenuButtonClick()\">\n <kit-svg-icon class=\"app-btn-icon\"\n [icon]=\"KitSvgIcon.FOUR_SQUARE\"\n ></kit-svg-icon>\n </button>\n }\n <div class=\"nav-list\">\n @for (item of menuItems(); track $index) {\n @if (item.items?.length) {\n <a class=\"nav-link\"\n kitTooltip\n kitTooltipFilter=\".nav-link\"\n [kitTooltipPosition]=\"KitTooltipPosition.RIGHT\"\n [title]=\"item.title\"\n [class.active]=\"item.active\"\n (click)=\"handleClick(item)\">\n @if (item.icon) {\n <ng-container *ngTemplateOutlet=\"linkIconTemplate; context: { $implicit: item }\"\n ></ng-container>\n }\n </a>\n } @else {\n @if (item.link) {\n <a class=\"nav-link\"\n routerLinkActive=\"active\"\n kitTooltip\n kitTooltipFilter=\".nav-link\"\n [kitTooltipPosition]=\"KitTooltipPosition.RIGHT\"\n [title]=\"item.title\"\n [routerLink]=\"item.link\"\n (click)=\"handleClick(item)\">\n @if (item.icon) {\n <ng-container *ngTemplateOutlet=\"linkIconTemplate; context: { $implicit: item }\"\n ></ng-container>\n }\n </a>\n }\n }\n }\n </div>\n </div>\n\n @if (!collapsed() && (selectedItem()?.items || selectedAppsItems())) {\n <kit-navigation-menu-submenu class=\"sub-panel\"\n [@widthExpandCollapseAnimation]\n [menuItem]=\"selectedItem()\"\n [appsMenuItems]=\"selectedAppsItems()\"\n [logoPath]=\"logoPath\"\n (logoClicked)=\"handleLogoClick()\"\n ></kit-navigation-menu-submenu>\n }\n\n <ng-template #linkIconTemplate let-item>\n <kit-svg-icon class=\"nav-link-icon\"\n [icon]=\"item.icon\"\n [ngClass]=\"item?.iconType ?? KitSvgIconType.FILL\"\n ></kit-svg-icon>\n </ng-template>\n</div>\n", styles: [".kit-navigation-menu{display:flex;height:100%}.kit-navigation-menu .app-btn{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border:none;background:none;border-radius:8px;cursor:pointer}.kit-navigation-menu .app-btn-icon{width:16px;height:16px;fill:var(--ui-kit-color-white);stroke:var(--ui-kit-color-white)}.kit-navigation-menu .app-btn:hover{background:var(--ui-kit-color-grey-14)}.kit-navigation-menu .app-btn.active{background:var(--ui-kit-color-main)}.kit-navigation-menu .main-panel{display:flex;flex-direction:column;padding:25px 10px;width:56px;box-sizing:border-box}.kit-navigation-menu .main-panel:has(.app-btn){gap:46px}.kit-navigation-menu .main-panel:has(.app-btn) .nav-list{margin-top:0}.kit-navigation-menu .sub-panel{display:block;width:200px;overflow:hidden}.kit-navigation-menu .nav-list{display:flex;flex-direction:column;gap:30px;margin-top:82px}.kit-navigation-menu .nav-link{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:8px;cursor:pointer}.kit-navigation-menu .nav-link:hover{background:var(--ui-kit-color-grey-14)}.kit-navigation-menu .nav-link.active{background:var(--ui-kit-color-main)}.kit-navigation-menu .nav-link-icon{display:block;width:16px;height:16px;flex-shrink:0}.kit-navigation-menu .nav-link-icon.fill{fill:var(--ui-kit-color-white);stroke:none}.kit-navigation-menu .nav-link-icon.stroke{fill:none;stroke:var(--ui-kit-color-white)}\n"] }]
|
|
4106
|
+
}], ctorParameters: () => [{ type: i1$7.Router }, { type: KitNavigationMenuService }], propDecorators: { logoPath: [{
|
|
4107
4107
|
type: Input
|
|
4108
4108
|
}] } });
|
|
4109
4109
|
|
|
@@ -6348,11 +6348,770 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImpor
|
|
|
6348
6348
|
|
|
6349
6349
|
const kitDataStateToODataString = (state) => toODataString(state);
|
|
6350
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
|
+
},
|
|
6369
|
+
},
|
|
6370
|
+
};
|
|
6371
|
+
|
|
6372
|
+
class KitTranslateService {
|
|
6373
|
+
constructor(translateService) {
|
|
6374
|
+
this.translateService = translateService;
|
|
6375
|
+
}
|
|
6376
|
+
registerTranslations() {
|
|
6377
|
+
Object.keys(kitTranslations).forEach(lang => {
|
|
6378
|
+
this.translateService.setTranslation(lang, kitTranslations[lang], true);
|
|
6379
|
+
});
|
|
6380
|
+
}
|
|
6381
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: KitTranslateService, deps: [{ token: i4.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
6382
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: KitTranslateService, providedIn: 'root' }); }
|
|
6383
|
+
}
|
|
6384
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: KitTranslateService, decorators: [{
|
|
6385
|
+
type: Injectable,
|
|
6386
|
+
args: [{
|
|
6387
|
+
providedIn: 'root',
|
|
6388
|
+
}]
|
|
6389
|
+
}], ctorParameters: () => [{ type: i4.TranslateService }] });
|
|
6390
|
+
|
|
6391
|
+
class AbstractPayloadAction {
|
|
6392
|
+
constructor(payload) {
|
|
6393
|
+
this.payload = payload;
|
|
6394
|
+
}
|
|
6395
|
+
}
|
|
6396
|
+
|
|
6397
|
+
class SetGridSkip extends AbstractPayloadAction {
|
|
6398
|
+
static { this.type = '[Grid] SetSkip'; }
|
|
6399
|
+
}
|
|
6400
|
+
class SetGridSort extends AbstractPayloadAction {
|
|
6401
|
+
static { this.type = '[Grid] SetSort'; }
|
|
6402
|
+
}
|
|
6403
|
+
class SetGridColumns extends AbstractPayloadAction {
|
|
6404
|
+
static { this.type = '[Grid] SetColumns'; }
|
|
6405
|
+
}
|
|
6406
|
+
class AddGridFilter extends AbstractPayloadAction {
|
|
6407
|
+
static { this.type = '[Grid] AddFilter'; }
|
|
6408
|
+
}
|
|
6409
|
+
class RemoveGridFilter extends AbstractPayloadAction {
|
|
6410
|
+
static { this.type = '[Grid] RemoveFilter'; }
|
|
6411
|
+
}
|
|
6412
|
+
class UpdateGridFilter extends AbstractPayloadAction {
|
|
6413
|
+
static { this.type = '[Grid] UpdateFilter'; }
|
|
6414
|
+
}
|
|
6415
|
+
class SetGridFilters extends AbstractPayloadAction {
|
|
6416
|
+
static { this.type = '[Grid] SetFilters'; }
|
|
6417
|
+
}
|
|
6418
|
+
|
|
6419
|
+
const KIT_GRID_STATE_TOKEN = new StateToken('grid');
|
|
6420
|
+
let KitGridState = class KitGridState {
|
|
6421
|
+
setGridSkip(ctx, action) {
|
|
6422
|
+
ctx.setState(patch({
|
|
6423
|
+
skip: action.payload,
|
|
6424
|
+
}));
|
|
6425
|
+
}
|
|
6426
|
+
setGridSort(ctx, action) {
|
|
6427
|
+
ctx.setState(patch({
|
|
6428
|
+
sort: action.payload,
|
|
6429
|
+
}));
|
|
6430
|
+
}
|
|
6431
|
+
setGridColumns(ctx, action) {
|
|
6432
|
+
ctx.setState(patch({
|
|
6433
|
+
columns: action.payload,
|
|
6434
|
+
}));
|
|
6435
|
+
}
|
|
6436
|
+
addGridFilter(ctx, action) {
|
|
6437
|
+
const items = ctx.getState().filter;
|
|
6438
|
+
return of(items).pipe(tap(() => ctx.setState(patch({
|
|
6439
|
+
filter: append([action.payload]),
|
|
6440
|
+
}))));
|
|
6441
|
+
}
|
|
6442
|
+
removeGridFilter(ctx, action) {
|
|
6443
|
+
const items = ctx.getState().filter;
|
|
6444
|
+
return of(items).pipe(tap(() => ctx.setState(patch({
|
|
6445
|
+
filter: removeItem(item => item.field === action.payload),
|
|
6446
|
+
}))));
|
|
6447
|
+
}
|
|
6448
|
+
updateGridFilter(ctx, action) {
|
|
6449
|
+
const items = ctx.getState().filter;
|
|
6450
|
+
return of(items).pipe(tap(() => ctx.setState(patch({
|
|
6451
|
+
filter: updateItem(item => item.field === action.payload.field, action.payload),
|
|
6452
|
+
}))));
|
|
6453
|
+
}
|
|
6454
|
+
setGridFilters(ctx, action) {
|
|
6455
|
+
return of(action.payload).pipe(tap(filters => ctx.setState(patch({
|
|
6456
|
+
filter: filters,
|
|
6457
|
+
}))));
|
|
6458
|
+
}
|
|
6459
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: KitGridState, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
6460
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: KitGridState }); }
|
|
6461
|
+
};
|
|
6462
|
+
__decorate([
|
|
6463
|
+
Action(SetGridSkip)
|
|
6464
|
+
], KitGridState.prototype, "setGridSkip", null);
|
|
6465
|
+
__decorate([
|
|
6466
|
+
Action(SetGridSort)
|
|
6467
|
+
], KitGridState.prototype, "setGridSort", null);
|
|
6468
|
+
__decorate([
|
|
6469
|
+
Action(SetGridColumns)
|
|
6470
|
+
], KitGridState.prototype, "setGridColumns", null);
|
|
6471
|
+
__decorate([
|
|
6472
|
+
Action(AddGridFilter)
|
|
6473
|
+
], KitGridState.prototype, "addGridFilter", null);
|
|
6474
|
+
__decorate([
|
|
6475
|
+
Action(RemoveGridFilter)
|
|
6476
|
+
], KitGridState.prototype, "removeGridFilter", null);
|
|
6477
|
+
__decorate([
|
|
6478
|
+
Action(UpdateGridFilter)
|
|
6479
|
+
], KitGridState.prototype, "updateGridFilter", null);
|
|
6480
|
+
__decorate([
|
|
6481
|
+
Action(SetGridFilters)
|
|
6482
|
+
], KitGridState.prototype, "setGridFilters", null);
|
|
6483
|
+
KitGridState = __decorate([
|
|
6484
|
+
State({
|
|
6485
|
+
name: KIT_GRID_STATE_TOKEN,
|
|
6486
|
+
defaults: {
|
|
6487
|
+
skip: 0,
|
|
6488
|
+
sort: [],
|
|
6489
|
+
filter: [],
|
|
6490
|
+
columns: [],
|
|
6491
|
+
},
|
|
6492
|
+
})
|
|
6493
|
+
], KitGridState);
|
|
6494
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: KitGridState, decorators: [{
|
|
6495
|
+
type: Injectable
|
|
6496
|
+
}], propDecorators: { setGridSkip: [], setGridSort: [], setGridColumns: [], addGridFilter: [], removeGridFilter: [], updateGridFilter: [], setGridFilters: [] } });
|
|
6497
|
+
|
|
6498
|
+
const kitBuildGridColumn = (field, title, type, sortable = true, hidden = false, width, filterType) => ({
|
|
6499
|
+
field,
|
|
6500
|
+
title,
|
|
6501
|
+
sortable,
|
|
6502
|
+
hidden,
|
|
6503
|
+
width,
|
|
6504
|
+
filterType,
|
|
6505
|
+
type,
|
|
6506
|
+
});
|
|
6507
|
+
|
|
6508
|
+
var KitGridViewType;
|
|
6509
|
+
(function (KitGridViewType) {
|
|
6510
|
+
KitGridViewType["SYSTEM"] = "system";
|
|
6511
|
+
KitGridViewType["USER"] = "user";
|
|
6512
|
+
KitGridViewType["CONFIG"] = "config";
|
|
6513
|
+
})(KitGridViewType || (KitGridViewType = {}));
|
|
6514
|
+
|
|
6515
|
+
const filterDuplicateGridViews = (views) => views.filter((item, index, arr) => {
|
|
6516
|
+
const duplicateItems = arr.filter(i => i.title === item.title);
|
|
6517
|
+
return duplicateItems.length <= 1 || item.type !== KitGridViewType.SYSTEM;
|
|
6518
|
+
});
|
|
6519
|
+
const findGridViewByName = (views, name) => views.find(view => view.title === name && view.type === KitGridViewType.USER && !view.hidden) ??
|
|
6520
|
+
views.find(view => view.title === name && !view.hidden) ??
|
|
6521
|
+
null;
|
|
6522
|
+
const buildGridViewColumns = (columns) => columns.map(column => ({
|
|
6523
|
+
field: column.field,
|
|
6524
|
+
hidden: column.hidden,
|
|
6525
|
+
}));
|
|
6526
|
+
const hasOverriddenSystemView = (name, views) => views.some(item => item.type === KitGridViewType.SYSTEM && item.title === name);
|
|
6527
|
+
const buildGridColumns = (columns, viewColumns) => viewColumns.map(viewColumn => {
|
|
6528
|
+
const matchingColumn = columns.find(column => column.field === viewColumn.field);
|
|
6529
|
+
return matchingColumn && { ...matchingColumn, hidden: viewColumn.hidden } || null;
|
|
6530
|
+
}).filter(column => !!column);
|
|
6531
|
+
const navigateToView = (name, router, activatedRoute) => {
|
|
6532
|
+
const routePath = kitEncodeViewNameToUrl(name.toLowerCase());
|
|
6533
|
+
router.navigate([`../${routePath}`], { relativeTo: activatedRoute });
|
|
6534
|
+
};
|
|
6535
|
+
const kitEncodeViewNameToUrl = (name) => name.split(' ').join('-');
|
|
6536
|
+
const decodeViewNameFromUrl = (name) => name.split('-').join(' ');
|
|
6537
|
+
const isViewNameValid = (name) => {
|
|
6538
|
+
const specialChars = '!@#$%^&*()_+[]{}|;:,.<>?/~`-=';
|
|
6539
|
+
return [...specialChars].every(item => !name.includes(item));
|
|
6540
|
+
};
|
|
6541
|
+
const getInputMessage = (views, viewName) => {
|
|
6542
|
+
if (!isViewNameValid(viewName)) {
|
|
6543
|
+
return 'kit.views.invalidMessage';
|
|
6544
|
+
}
|
|
6545
|
+
const isViewExist = !!views.find(item => item.title === viewName);
|
|
6546
|
+
return isViewExist && 'kit.views.overrideMessage' || '';
|
|
6547
|
+
};
|
|
6548
|
+
|
|
6549
|
+
class FetchGridViews extends AbstractPayloadAction {
|
|
6550
|
+
static { this.type = '[GridViews] Fetch'; }
|
|
6551
|
+
}
|
|
6552
|
+
class AddGridView extends AbstractPayloadAction {
|
|
6553
|
+
static { this.type = '[GridView] Add'; }
|
|
6554
|
+
}
|
|
6555
|
+
class RemoveGridView extends AbstractPayloadAction {
|
|
6556
|
+
static { this.type = '[GridView] Remove'; }
|
|
6557
|
+
}
|
|
6558
|
+
class SetGridViews extends AbstractPayloadAction {
|
|
6559
|
+
static { this.type = '[GridViews] Set'; }
|
|
6560
|
+
}
|
|
6561
|
+
class FetchGridViewsConfig extends AbstractPayloadAction {
|
|
6562
|
+
static { this.type = '[GridViews] FetchConfig'; }
|
|
6563
|
+
}
|
|
6564
|
+
class UpdateGridViewsConfig extends AbstractPayloadAction {
|
|
6565
|
+
static { this.type = '[GridViews] UpdateConfig'; }
|
|
6566
|
+
}
|
|
6567
|
+
class SetSelectedView extends AbstractPayloadAction {
|
|
6568
|
+
static { this.type = '[GridViews] SetSelectedView'; }
|
|
6569
|
+
}
|
|
6570
|
+
|
|
6571
|
+
const apiResponseDefaultEntities = () => ({
|
|
6572
|
+
data: [],
|
|
6573
|
+
total: 0,
|
|
6574
|
+
loading: true,
|
|
6575
|
+
});
|
|
6576
|
+
|
|
6577
|
+
class KitSettingsApiService {
|
|
6578
|
+
constructor(httpClient, basePath) {
|
|
6579
|
+
this.httpClient = httpClient;
|
|
6580
|
+
this.basePath = basePath;
|
|
6581
|
+
}
|
|
6582
|
+
getSettingsByGroup(group) {
|
|
6583
|
+
const url = `${this.basePath}/users/me/settings/groups/${group}`;
|
|
6584
|
+
return this.httpClient.get(url);
|
|
6585
|
+
}
|
|
6586
|
+
setSettingByKey(key, settingValue) {
|
|
6587
|
+
const url = `${this.basePath}/users/me/settings/${key}`;
|
|
6588
|
+
return this.httpClient.put(url, settingValue);
|
|
6589
|
+
}
|
|
6590
|
+
deleteSettingByGroupAndKey(key, group) {
|
|
6591
|
+
const url = `${this.basePath}/users/me/settings/groups/${group}/${key}`;
|
|
6592
|
+
return this.httpClient.delete(url);
|
|
6593
|
+
}
|
|
6594
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: KitSettingsApiService, deps: [{ token: i1$b.HttpClient }, { token: KIT_BASE_PATH }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
6595
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: KitSettingsApiService, providedIn: 'root' }); }
|
|
6596
|
+
}
|
|
6597
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: KitSettingsApiService, decorators: [{
|
|
6598
|
+
type: Injectable,
|
|
6599
|
+
args: [{
|
|
6600
|
+
providedIn: 'root',
|
|
6601
|
+
}]
|
|
6602
|
+
}], ctorParameters: () => [{ type: i1$b.HttpClient }, { type: undefined, decorators: [{
|
|
6603
|
+
type: Inject,
|
|
6604
|
+
args: [KIT_BASE_PATH]
|
|
6605
|
+
}] }] });
|
|
6606
|
+
|
|
6607
|
+
var KitGridViewsState_1;
|
|
6608
|
+
const KIT_GRID_VIEWS_STATE_TOKEN = new StateToken('gridViews');
|
|
6609
|
+
let KitGridViewsState = class KitGridViewsState {
|
|
6610
|
+
static { KitGridViewsState_1 = this; }
|
|
6611
|
+
constructor(settingsService) {
|
|
6612
|
+
this.settingsService = settingsService;
|
|
6613
|
+
}
|
|
6614
|
+
fetchGridViews(ctx, action) {
|
|
6615
|
+
return this.settingsService.getSettingsByGroup(action.payload.group).pipe(map(settings => settings.map(setting => ({
|
|
6616
|
+
title: setting.key,
|
|
6617
|
+
group: setting.group,
|
|
6618
|
+
type: KitGridViewType.USER,
|
|
6619
|
+
value: setting.value && JSON.parse(setting.value),
|
|
6620
|
+
}))), map(values => ([
|
|
6621
|
+
...action.payload.defaultItems ?? [],
|
|
6622
|
+
...values,
|
|
6623
|
+
])), tap(data => ctx.setState(patch({
|
|
6624
|
+
loading: false,
|
|
6625
|
+
data: patch({
|
|
6626
|
+
views: data,
|
|
6627
|
+
}),
|
|
6628
|
+
}))));
|
|
6629
|
+
}
|
|
6630
|
+
addGridView(ctx, action) {
|
|
6631
|
+
const items = ctx.getState().data.views;
|
|
6632
|
+
const formattedPayload = { ...action.payload, title: action.payload.title.toLowerCase() };
|
|
6633
|
+
const { title, group, value } = formattedPayload;
|
|
6634
|
+
const settingValue = {
|
|
6635
|
+
group,
|
|
6636
|
+
value: JSON.stringify(value),
|
|
6637
|
+
};
|
|
6638
|
+
return this.settingsService.setSettingByKey(title, settingValue).pipe(tap(() => {
|
|
6639
|
+
const viewExists = items.some(item => this.hasUserView(item, title));
|
|
6640
|
+
ctx.setState(patch({
|
|
6641
|
+
data: patch({
|
|
6642
|
+
views: viewExists && updateItem(item => this.hasUserView(item, title), formattedPayload) || append([formattedPayload]),
|
|
6643
|
+
}),
|
|
6644
|
+
}));
|
|
6645
|
+
}));
|
|
6646
|
+
}
|
|
6647
|
+
removeGridView(ctx, action) {
|
|
6648
|
+
const { title, group } = action.payload;
|
|
6649
|
+
return this.settingsService.deleteSettingByGroupAndKey(title, group ?? '').pipe(tap(() => ctx.setState(patch({
|
|
6650
|
+
data: patch({
|
|
6651
|
+
views: removeItem(item => this.hasUserView(item, title)),
|
|
6652
|
+
}),
|
|
6653
|
+
}))));
|
|
6654
|
+
}
|
|
6655
|
+
setGridViews(ctx, action) {
|
|
6656
|
+
return of(action.payload).pipe(tap(() => ctx.setState(patch({
|
|
6657
|
+
data: patch({
|
|
6658
|
+
views: action.payload,
|
|
6659
|
+
}),
|
|
6660
|
+
}))));
|
|
6661
|
+
}
|
|
6662
|
+
fetchGridViewsConfig(ctx, action) {
|
|
6663
|
+
return this.settingsService.getSettingsByGroup(action.payload).pipe(map(settings => settings.map(setting => ({
|
|
6664
|
+
title: setting.key,
|
|
6665
|
+
group: setting.group,
|
|
6666
|
+
type: KitGridViewType.CONFIG,
|
|
6667
|
+
value: setting.value && JSON.parse(setting.value),
|
|
6668
|
+
}))), tap(values => ctx.setState(patch({
|
|
6669
|
+
data: patch({
|
|
6670
|
+
config: values[0],
|
|
6671
|
+
}),
|
|
6672
|
+
}))));
|
|
6673
|
+
}
|
|
6674
|
+
updateGridViewsConfig(ctx, action) {
|
|
6675
|
+
const { title, group, value } = action.payload;
|
|
6676
|
+
const settingValue = {
|
|
6677
|
+
group,
|
|
6678
|
+
value: JSON.stringify(value),
|
|
6679
|
+
};
|
|
6680
|
+
return this.settingsService.setSettingByKey(title, settingValue).pipe(tap(() => ctx.setState(patch({
|
|
6681
|
+
data: patch({
|
|
6682
|
+
config: action.payload,
|
|
6683
|
+
}),
|
|
6684
|
+
}))));
|
|
6685
|
+
}
|
|
6686
|
+
setSelectedView(ctx, action) {
|
|
6687
|
+
return of(action.payload).pipe(tap(() => ctx.setState(patch({
|
|
6688
|
+
data: patch({
|
|
6689
|
+
selectedView: action.payload,
|
|
6690
|
+
}),
|
|
6691
|
+
}))));
|
|
6692
|
+
}
|
|
6693
|
+
static getViews() {
|
|
6694
|
+
return createSelector([KitGridViewsState_1], (gridViewsState) => {
|
|
6695
|
+
const views = gridViewsState?.data?.views ?? [];
|
|
6696
|
+
const viewsConfig = gridViewsState?.data?.config?.value?.config ?? null;
|
|
6697
|
+
if (!viewsConfig) {
|
|
6698
|
+
return views;
|
|
6699
|
+
}
|
|
6700
|
+
const areViewsEqual = (firstView, secondView) => firstView.title === secondView.title && firstView.type === secondView.type;
|
|
6701
|
+
const updatedViews = views.map(view => {
|
|
6702
|
+
const configItem = viewsConfig.find(item => areViewsEqual(item, view)) ?? null;
|
|
6703
|
+
return configItem && { ...view, hidden: configItem.hidden } || view;
|
|
6704
|
+
});
|
|
6705
|
+
const existingViews = updatedViews.filter(view => viewsConfig.some(config => areViewsEqual(config, view)));
|
|
6706
|
+
const newViews = updatedViews.filter(view => !viewsConfig.some(config => areViewsEqual(config, view)));
|
|
6707
|
+
return [
|
|
6708
|
+
...existingViews.sort((a, b) => viewsConfig.findIndex(c => areViewsEqual(c, a)) - viewsConfig.findIndex(c => areViewsEqual(c, b))),
|
|
6709
|
+
...newViews,
|
|
6710
|
+
];
|
|
6711
|
+
});
|
|
6712
|
+
}
|
|
6713
|
+
hasUserView(item, title) {
|
|
6714
|
+
return item.type === KitGridViewType.USER && item.title === title;
|
|
6715
|
+
}
|
|
6716
|
+
static selectedView(state) {
|
|
6717
|
+
return state.data.selectedView;
|
|
6718
|
+
}
|
|
6719
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: KitGridViewsState, deps: [{ token: KitSettingsApiService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
6720
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: KitGridViewsState }); }
|
|
6721
|
+
};
|
|
6722
|
+
__decorate([
|
|
6723
|
+
Action(FetchGridViews)
|
|
6724
|
+
], KitGridViewsState.prototype, "fetchGridViews", null);
|
|
6725
|
+
__decorate([
|
|
6726
|
+
Action(AddGridView)
|
|
6727
|
+
], KitGridViewsState.prototype, "addGridView", null);
|
|
6728
|
+
__decorate([
|
|
6729
|
+
Action(RemoveGridView)
|
|
6730
|
+
], KitGridViewsState.prototype, "removeGridView", null);
|
|
6731
|
+
__decorate([
|
|
6732
|
+
Action(SetGridViews)
|
|
6733
|
+
], KitGridViewsState.prototype, "setGridViews", null);
|
|
6734
|
+
__decorate([
|
|
6735
|
+
Action(FetchGridViewsConfig)
|
|
6736
|
+
], KitGridViewsState.prototype, "fetchGridViewsConfig", null);
|
|
6737
|
+
__decorate([
|
|
6738
|
+
Action(UpdateGridViewsConfig)
|
|
6739
|
+
], KitGridViewsState.prototype, "updateGridViewsConfig", null);
|
|
6740
|
+
__decorate([
|
|
6741
|
+
Action(SetSelectedView)
|
|
6742
|
+
], KitGridViewsState.prototype, "setSelectedView", null);
|
|
6743
|
+
__decorate([
|
|
6744
|
+
Selector()
|
|
6745
|
+
], KitGridViewsState, "selectedView", null);
|
|
6746
|
+
KitGridViewsState = KitGridViewsState_1 = __decorate([
|
|
6747
|
+
State({
|
|
6748
|
+
name: KIT_GRID_VIEWS_STATE_TOKEN,
|
|
6749
|
+
defaults: apiResponseDefaultEntities(),
|
|
6750
|
+
})
|
|
6751
|
+
], KitGridViewsState);
|
|
6752
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: KitGridViewsState, decorators: [{
|
|
6753
|
+
type: Injectable
|
|
6754
|
+
}], ctorParameters: () => [{ type: KitSettingsApiService }], propDecorators: { fetchGridViews: [], addGridView: [], removeGridView: [], setGridViews: [], fetchGridViewsConfig: [], updateGridViewsConfig: [], setSelectedView: [] } });
|
|
6755
|
+
|
|
6756
|
+
class KitGridViewsManagerComponent extends DialogContentBase {
|
|
6757
|
+
constructor(store, dialog) {
|
|
6758
|
+
super(dialog);
|
|
6759
|
+
this.store = store;
|
|
6760
|
+
this.dialog = dialog;
|
|
6761
|
+
this.configGroup = input.required();
|
|
6762
|
+
this.items = signal(this.store.selectSnapshot(KitGridViewsState.getViews()) ?? []);
|
|
6763
|
+
this.kitButtonKind = KitButtonKind;
|
|
6764
|
+
this.kitButtonType = KitButtonType;
|
|
6765
|
+
this.kitSvgIcon = KitSvgIcon;
|
|
6766
|
+
this.kitSvgIconType = KitSvgIconType;
|
|
6767
|
+
}
|
|
6768
|
+
applyChanges() {
|
|
6769
|
+
const existingViews = this.store.selectSnapshot(KIT_GRID_VIEWS_STATE_TOKEN).data.views;
|
|
6770
|
+
const viewsToRemove = existingViews
|
|
6771
|
+
.filter(view => !this.items()
|
|
6772
|
+
.some(item => item.title === view.title && item.type === view.type));
|
|
6773
|
+
const viewsToSave = this.items().map(({ value, ...item }) => item);
|
|
6774
|
+
const viewConfig = {
|
|
6775
|
+
title: this.configGroup(),
|
|
6776
|
+
group: this.configGroup(),
|
|
6777
|
+
type: KitGridViewType.CONFIG,
|
|
6778
|
+
value: {
|
|
6779
|
+
config: viewsToSave,
|
|
6780
|
+
},
|
|
6781
|
+
};
|
|
6782
|
+
this.store.dispatch([
|
|
6783
|
+
...viewsToRemove.map(view => new RemoveGridView(view)),
|
|
6784
|
+
new SetGridViews(this.items()),
|
|
6785
|
+
new UpdateGridViewsConfig(viewConfig),
|
|
6786
|
+
]).subscribe(() => this.dialog.close(true));
|
|
6787
|
+
}
|
|
6788
|
+
close() {
|
|
6789
|
+
this.dialog.close();
|
|
6790
|
+
}
|
|
6791
|
+
onColumnVisibilityChange(event, view) {
|
|
6792
|
+
this.items.update(items => items
|
|
6793
|
+
.map(item => (item.title === view.title && item.type === view.type) && { ...item, hidden: !event } || item));
|
|
6794
|
+
}
|
|
6795
|
+
isSystemView(item) {
|
|
6796
|
+
return item.type === KitGridViewType.SYSTEM;
|
|
6797
|
+
}
|
|
6798
|
+
onViewRemove(view) {
|
|
6799
|
+
this.items.update(items => items.filter(item => item.title !== view.title || item.type === KitGridViewType.SYSTEM));
|
|
6800
|
+
}
|
|
6801
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: KitGridViewsManagerComponent, deps: [{ token: i1$c.Store }, { token: i1$8.DialogRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6802
|
+
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: i4.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 }); }
|
|
6803
|
+
}
|
|
6804
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: KitGridViewsManagerComponent, decorators: [{
|
|
6805
|
+
type: Component,
|
|
6806
|
+
args: [{ selector: 'kit-grid-views-manager', imports: [
|
|
6807
|
+
KitButtonModule,
|
|
6808
|
+
KitSortableComponent,
|
|
6809
|
+
KitSvgIconModule,
|
|
6810
|
+
TranslateModule,
|
|
6811
|
+
NgClass,
|
|
6812
|
+
KitDialogActionsComponent,
|
|
6813
|
+
TitleCasePipe,
|
|
6814
|
+
KitTruncateTextComponent,
|
|
6815
|
+
], 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"] }]
|
|
6816
|
+
}], ctorParameters: () => [{ type: i1$c.Store }, { type: i1$8.DialogRef }] });
|
|
6817
|
+
|
|
6818
|
+
class KitGridViewsListComponent {
|
|
6819
|
+
constructor(activatedRoute, router, store, kitDialogService, translateService, viewContainerRef) {
|
|
6820
|
+
this.activatedRoute = activatedRoute;
|
|
6821
|
+
this.router = router;
|
|
6822
|
+
this.store = store;
|
|
6823
|
+
this.kitDialogService = kitDialogService;
|
|
6824
|
+
this.translateService = translateService;
|
|
6825
|
+
this.viewContainerRef = viewContainerRef;
|
|
6826
|
+
this.viewGroup = input.required();
|
|
6827
|
+
this.viewConfigGroup = input.required();
|
|
6828
|
+
this.views = input.required();
|
|
6829
|
+
this.defaultColumns = input.required();
|
|
6830
|
+
this.defaultSorting = input.required();
|
|
6831
|
+
this.defaultViewName = input.required();
|
|
6832
|
+
this.anchor = viewChild.required('toggleButton', { read: ElementRef });
|
|
6833
|
+
this.popup = viewChild('popup', { read: KitPopupComponent });
|
|
6834
|
+
this.viewName = signal('');
|
|
6835
|
+
this.createViewPopupVisible = signal(false);
|
|
6836
|
+
this.kitButtonType = KitButtonType;
|
|
6837
|
+
this.kitButtonKind = KitButtonKind;
|
|
6838
|
+
this.kitSvgIcon = KitSvgIcon;
|
|
6839
|
+
this.kitSvgIconType = KitSvgIconType;
|
|
6840
|
+
this.kitButtonIconPosition = KitButtonIconPosition;
|
|
6841
|
+
this.gridViewType = KitGridViewType;
|
|
6842
|
+
this.kitTextboxState = KitTextboxState;
|
|
6843
|
+
this.selectedView = this.store.selectSignal(KitGridViewsState.selectedView);
|
|
6844
|
+
}
|
|
6845
|
+
get isViewNameValid() {
|
|
6846
|
+
return isViewNameValid(this.viewName());
|
|
6847
|
+
}
|
|
6848
|
+
get inputMessage() {
|
|
6849
|
+
const infoMessage = getInputMessage(this.views(), this.viewName().toLowerCase());
|
|
6850
|
+
return infoMessage && this.translateService.instant(infoMessage) || '';
|
|
6851
|
+
}
|
|
6852
|
+
onViewSelect(item) {
|
|
6853
|
+
navigateToView(item.title, this.router, this.activatedRoute);
|
|
6854
|
+
this.popup()?.close();
|
|
6855
|
+
this.store.dispatch(new SetSelectedView(item));
|
|
6856
|
+
}
|
|
6857
|
+
newViewToggle(visible) {
|
|
6858
|
+
this.viewName.set('');
|
|
6859
|
+
setTimeout(() => this.createViewPopupVisible.set(visible));
|
|
6860
|
+
}
|
|
6861
|
+
onPopupToggle() {
|
|
6862
|
+
this.viewName.set('');
|
|
6863
|
+
this.createViewPopupVisible.set(false);
|
|
6864
|
+
this.popup()?.toggle();
|
|
6865
|
+
}
|
|
6866
|
+
onViewCreate() {
|
|
6867
|
+
const view = {
|
|
6868
|
+
title: this.viewName(),
|
|
6869
|
+
group: this.viewGroup(),
|
|
6870
|
+
type: KitGridViewType.USER,
|
|
6871
|
+
value: {
|
|
6872
|
+
filter: [],
|
|
6873
|
+
sort: this.defaultSorting(),
|
|
6874
|
+
columns: this.defaultColumns(),
|
|
6875
|
+
},
|
|
6876
|
+
};
|
|
6877
|
+
this.store.dispatch(new AddGridView(view)).subscribe(() => {
|
|
6878
|
+
navigateToView(this.viewName().toLowerCase(), this.router, this.activatedRoute);
|
|
6879
|
+
this.viewName.set('');
|
|
6880
|
+
this.popup()?.close();
|
|
6881
|
+
this.store.dispatch(new SetSelectedView(view));
|
|
6882
|
+
});
|
|
6883
|
+
}
|
|
6884
|
+
openViewsManagerModal() {
|
|
6885
|
+
this.popup()?.close();
|
|
6886
|
+
this.kitDialogService.openDialog({
|
|
6887
|
+
title: this.translateService.instant('kit.views.views'),
|
|
6888
|
+
content: KitGridViewsManagerComponent,
|
|
6889
|
+
appendTo: this.viewContainerRef,
|
|
6890
|
+
});
|
|
6891
|
+
signalSetFn(this.kitDialogService.dialogInstance.configGroup[SIGNAL], this.viewConfigGroup());
|
|
6892
|
+
this.kitDialogService.dialogRef?.result.pipe(filter(result => !(result instanceof DialogCloseResult))).subscribe(() => this.handleViewChange());
|
|
6893
|
+
}
|
|
6894
|
+
handleViewChange() {
|
|
6895
|
+
const view = findGridViewByName(this.views(), this.selectedView()?.title ?? '');
|
|
6896
|
+
return view
|
|
6897
|
+
? this.store.dispatch(new SetSelectedView(view))
|
|
6898
|
+
: navigateToView(this.defaultViewName(), this.router, this.activatedRoute);
|
|
6899
|
+
}
|
|
6900
|
+
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$c.Store }, { token: KitDialogService }, { token: i4.TranslateService }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6901
|
+
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: i4.TranslatePipe, name: "translate" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: TitleCasePipe, name: "titlecase" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
6902
|
+
}
|
|
6903
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: KitGridViewsListComponent, decorators: [{
|
|
6904
|
+
type: Component,
|
|
6905
|
+
args: [{ selector: 'kit-grid-views-list', imports: [
|
|
6906
|
+
KitButtonModule,
|
|
6907
|
+
KitPopupComponent,
|
|
6908
|
+
KitSvgIconModule,
|
|
6909
|
+
KitTextboxModule,
|
|
6910
|
+
TranslateModule,
|
|
6911
|
+
NgClass,
|
|
6912
|
+
TitleCasePipe,
|
|
6913
|
+
], 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"] }]
|
|
6914
|
+
}], ctorParameters: () => [{ type: i1$7.ActivatedRoute }, { type: i1$7.Router }, { type: i1$c.Store }, { type: KitDialogService }, { type: i4.TranslateService }, { type: i0.ViewContainerRef }] });
|
|
6915
|
+
|
|
6916
|
+
var KitFilterType;
|
|
6917
|
+
(function (KitFilterType) {
|
|
6918
|
+
KitFilterType["CHECKBOX"] = "checkbox";
|
|
6919
|
+
KitFilterType["DATE"] = "date";
|
|
6920
|
+
KitFilterType["TEXT"] = "text";
|
|
6921
|
+
})(KitFilterType || (KitFilterType = {}));
|
|
6922
|
+
|
|
6923
|
+
const convertFilterStringDate = (filters) => filters.map(filter => {
|
|
6924
|
+
return filter.type === KitFilterType.DATE && filter.value?.filters && {
|
|
6925
|
+
...filter,
|
|
6926
|
+
value: {
|
|
6927
|
+
...filter.value,
|
|
6928
|
+
filters: filter.value.filters.map(item => ({
|
|
6929
|
+
...item,
|
|
6930
|
+
value: item.value && new Date(item.value) || item.value,
|
|
6931
|
+
})),
|
|
6932
|
+
},
|
|
6933
|
+
} || filter;
|
|
6934
|
+
});
|
|
6935
|
+
const removeReadonlyPropertyFromFilters = (filters) => filters.map(({ readonly, ...item }) => item);
|
|
6936
|
+
|
|
6937
|
+
class KitGridViewsSaveComponent {
|
|
6938
|
+
constructor(store, router, activatedRoute, translateService) {
|
|
6939
|
+
this.store = store;
|
|
6940
|
+
this.router = router;
|
|
6941
|
+
this.activatedRoute = activatedRoute;
|
|
6942
|
+
this.translateService = translateService;
|
|
6943
|
+
this.viewGroup = input.required();
|
|
6944
|
+
this.views = input.required();
|
|
6945
|
+
this.viewsAutocompleteItems = input.required();
|
|
6946
|
+
this.anchor = viewChild.required('toggleButton', { read: ElementRef });
|
|
6947
|
+
this.popup = viewChild('popup', { read: KitPopupComponent });
|
|
6948
|
+
this.viewName = signal('');
|
|
6949
|
+
this.kitButtonKind = KitButtonKind;
|
|
6950
|
+
this.kitSvgIcon = KitSvgIcon;
|
|
6951
|
+
this.kitButtonIconPosition = KitButtonIconPosition;
|
|
6952
|
+
this.kitTooltipPosition = KitTooltipPosition;
|
|
6953
|
+
this.hasUnsavedChanges = signal(false);
|
|
6954
|
+
this.selectedView = this.store.selectSignal(KitGridViewsState.selectedView);
|
|
6955
|
+
}
|
|
6956
|
+
get isViewNameValid() {
|
|
6957
|
+
return isViewNameValid(this.viewName());
|
|
6958
|
+
}
|
|
6959
|
+
get inputMessage() {
|
|
6960
|
+
const infoMessage = getInputMessage(this.views(), this.viewName());
|
|
6961
|
+
return infoMessage && this.translateService.instant(infoMessage) || '';
|
|
6962
|
+
}
|
|
6963
|
+
ngOnInit() {
|
|
6964
|
+
this.store.select(KIT_GRID_STATE_TOKEN).pipe(filter(({ columns }) => !!columns.length)).subscribe(({ filter, sort, columns }) => {
|
|
6965
|
+
const selectedViewState = {
|
|
6966
|
+
filter: this.selectedView()?.value?.filter,
|
|
6967
|
+
sort: this.selectedView()?.value?.sort,
|
|
6968
|
+
columns: buildGridViewColumns(this.selectedView()?.value?.columns ?? []),
|
|
6969
|
+
};
|
|
6970
|
+
const currentViewState = {
|
|
6971
|
+
filter,
|
|
6972
|
+
sort,
|
|
6973
|
+
columns: buildGridViewColumns(columns),
|
|
6974
|
+
};
|
|
6975
|
+
this.hasUnsavedChanges.set(JSON.stringify(selectedViewState) !== JSON.stringify(currentViewState));
|
|
6976
|
+
});
|
|
6977
|
+
}
|
|
6978
|
+
onPopupToggle() {
|
|
6979
|
+
this.viewName.set('');
|
|
6980
|
+
this.popup()?.toggle();
|
|
6981
|
+
}
|
|
6982
|
+
onViewSave() {
|
|
6983
|
+
const { filter, sort, columns } = this.store.selectSnapshot(KIT_GRID_STATE_TOKEN);
|
|
6984
|
+
const views = this.store.selectSnapshot(KIT_GRID_VIEWS_STATE_TOKEN).data.views;
|
|
6985
|
+
const view = {
|
|
6986
|
+
title: this.viewName(),
|
|
6987
|
+
group: this.viewGroup(),
|
|
6988
|
+
type: KitGridViewType.USER,
|
|
6989
|
+
value: {
|
|
6990
|
+
filter: hasOverriddenSystemView(this.viewName(), views) && filter || removeReadonlyPropertyFromFilters(filter),
|
|
6991
|
+
sort,
|
|
6992
|
+
columns: buildGridViewColumns(columns),
|
|
6993
|
+
},
|
|
6994
|
+
};
|
|
6995
|
+
this.store.dispatch(new AddGridView(view)).subscribe(() => {
|
|
6996
|
+
this.hasUnsavedChanges.set(false);
|
|
6997
|
+
navigateToView(this.viewName(), this.router, this.activatedRoute);
|
|
6998
|
+
this.viewName.set('');
|
|
6999
|
+
this.popup()?.close();
|
|
7000
|
+
this.store.dispatch(new SetSelectedView(view));
|
|
7001
|
+
});
|
|
7002
|
+
}
|
|
7003
|
+
onValueChange(value) {
|
|
7004
|
+
if (!value) {
|
|
7005
|
+
return;
|
|
7006
|
+
}
|
|
7007
|
+
this.viewName.set(value);
|
|
7008
|
+
}
|
|
7009
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: KitGridViewsSaveComponent, deps: [{ token: i1$c.Store }, { token: i1$7.Router }, { token: i1$7.ActivatedRoute }, { token: i4.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7010
|
+
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: i4.TranslatePipe, name: "translate" }, { kind: "directive", type: KitTooltipDirective, selector: "[kitTooltip]", inputs: ["kitTooltipPosition", "kitTooltipFilter", "kitTooltipTemplateRef", "kitTooltipVisible"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
7011
|
+
}
|
|
7012
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: KitGridViewsSaveComponent, decorators: [{
|
|
7013
|
+
type: Component,
|
|
7014
|
+
args: [{ selector: 'kit-grid-views-save', imports: [
|
|
7015
|
+
KitButtonModule,
|
|
7016
|
+
KitPopupComponent,
|
|
7017
|
+
KitAutocompleteModule,
|
|
7018
|
+
TranslateModule,
|
|
7019
|
+
KitTooltipDirective,
|
|
7020
|
+
], 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"] }]
|
|
7021
|
+
}], ctorParameters: () => [{ type: i1$c.Store }, { type: i1$7.Router }, { type: i1$7.ActivatedRoute }, { type: i4.TranslateService }] });
|
|
7022
|
+
|
|
7023
|
+
class KitGridViewsComponent {
|
|
7024
|
+
constructor(store, activatedRoute, router, destroyRef, titleCasePipe) {
|
|
7025
|
+
this.store = store;
|
|
7026
|
+
this.activatedRoute = activatedRoute;
|
|
7027
|
+
this.router = router;
|
|
7028
|
+
this.destroyRef = destroyRef;
|
|
7029
|
+
this.titleCasePipe = titleCasePipe;
|
|
7030
|
+
this.viewGroup = input.required();
|
|
7031
|
+
this.viewConfigGroup = input.required();
|
|
7032
|
+
this.defaultColumns = input.required();
|
|
7033
|
+
this.defaultViewName = input.required();
|
|
7034
|
+
this.defaultSorting = input.required();
|
|
7035
|
+
this.systemViews = input.required();
|
|
7036
|
+
this.viewChanged = new EventEmitter();
|
|
7037
|
+
this.currentViewName$ = combineLatest([
|
|
7038
|
+
this.activatedRoute.params.pipe(map(params => params['view'] && decodeViewNameFromUrl(params['view']))),
|
|
7039
|
+
this.activatedRoute.data.pipe(map(data => data['view'])),
|
|
7040
|
+
]).pipe(map(([viewParam, viewData,]) => viewParam ?? viewData));
|
|
7041
|
+
this.viewsState$ = this.store.select(KIT_GRID_VIEWS_STATE_TOKEN);
|
|
7042
|
+
this.views$ = this.store.select(KitGridViewsState.getViews());
|
|
7043
|
+
this.viewsAutocompleteItems$ = this.views$.pipe(map(views => filterDuplicateGridViews(views)), map(views => views.map(({ title }) => ({
|
|
7044
|
+
text: this.titleCasePipe.transform(title),
|
|
7045
|
+
value: title,
|
|
7046
|
+
}))));
|
|
7047
|
+
}
|
|
7048
|
+
ngOnInit() {
|
|
7049
|
+
this.fetchViews();
|
|
7050
|
+
this.handleViewOnRouteChange();
|
|
7051
|
+
this.store.select(KitGridViewsState.selectedView).subscribe(view => {
|
|
7052
|
+
view && this.updateGridState(view);
|
|
7053
|
+
});
|
|
7054
|
+
}
|
|
7055
|
+
ngOnDestroy() {
|
|
7056
|
+
this.store.dispatch(new StateReset(KitGridViewsState));
|
|
7057
|
+
}
|
|
7058
|
+
fetchViews() {
|
|
7059
|
+
this.store.dispatch([
|
|
7060
|
+
new FetchGridViews({
|
|
7061
|
+
group: this.viewGroup(),
|
|
7062
|
+
defaultItems: this.systemViews(),
|
|
7063
|
+
}),
|
|
7064
|
+
new FetchGridViewsConfig(this.viewConfigGroup()),
|
|
7065
|
+
]);
|
|
7066
|
+
}
|
|
7067
|
+
handleViewOnRouteChange() {
|
|
7068
|
+
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));
|
|
7069
|
+
}
|
|
7070
|
+
handleViewChange(viewName, views) {
|
|
7071
|
+
if (viewName !== viewName.toLowerCase()) {
|
|
7072
|
+
return navigateToView(viewName, this.router, this.activatedRoute);
|
|
7073
|
+
}
|
|
7074
|
+
const currentView = findGridViewByName(views, viewName);
|
|
7075
|
+
if (!currentView) {
|
|
7076
|
+
navigateToView(this.defaultViewName(), this.router, this.activatedRoute);
|
|
7077
|
+
return;
|
|
7078
|
+
}
|
|
7079
|
+
if (!this.store.selectSnapshot(KitGridViewsState.selectedView)) {
|
|
7080
|
+
this.store.dispatch(new SetSelectedView(currentView));
|
|
7081
|
+
}
|
|
7082
|
+
}
|
|
7083
|
+
updateGridState(view) {
|
|
7084
|
+
this.store.dispatch([
|
|
7085
|
+
new SetGridSort(view?.value?.sort ?? this.defaultSorting()),
|
|
7086
|
+
new SetGridFilters(convertFilterStringDate(view?.value?.filter ?? [])),
|
|
7087
|
+
new SetGridColumns(buildGridColumns(this.defaultColumns(), view?.value?.columns ?? this.defaultColumns())),
|
|
7088
|
+
new SetGridSkip(0),
|
|
7089
|
+
]).subscribe(() => this.viewChanged.emit());
|
|
7090
|
+
}
|
|
7091
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: KitGridViewsComponent, deps: [{ token: i1$c.Store }, { token: i1$7.ActivatedRoute }, { token: i1$7.Router }, { token: i0.DestroyRef }, { token: i1$1.TitleCasePipe }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7092
|
+
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: [
|
|
7093
|
+
TitleCasePipe,
|
|
7094
|
+
], 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 }); }
|
|
7095
|
+
}
|
|
7096
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: KitGridViewsComponent, decorators: [{
|
|
7097
|
+
type: Component,
|
|
7098
|
+
args: [{ selector: 'kit-grid-views', imports: [
|
|
7099
|
+
AsyncPipe,
|
|
7100
|
+
KitGridViewsListComponent,
|
|
7101
|
+
KitSkeletonModule,
|
|
7102
|
+
KitGridViewsSaveComponent,
|
|
7103
|
+
], providers: [
|
|
7104
|
+
TitleCasePipe,
|
|
7105
|
+
], 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"] }]
|
|
7106
|
+
}], ctorParameters: () => [{ type: i1$c.Store }, { type: i1$7.ActivatedRoute }, { type: i1$7.Router }, { type: i0.DestroyRef }, { type: i1$1.TitleCasePipe }], propDecorators: { viewChanged: [{
|
|
7107
|
+
type: Output
|
|
7108
|
+
}] } });
|
|
7109
|
+
|
|
6351
7110
|
// KitButton
|
|
6352
7111
|
|
|
6353
7112
|
/**
|
|
6354
7113
|
* Generated bundle index. Do not edit.
|
|
6355
7114
|
*/
|
|
6356
7115
|
|
|
6357
|
-
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 };
|
|
7116
|
+
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, 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, kitBuildGridColumn, kitDataStateToODataString, kitEncodeViewNameToUrl };
|
|
6358
7117
|
//# sourceMappingURL=indigina-ui-kit.mjs.map
|