@smartbit4all/ng-client 7.0.0 → 7.0.1
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/MIGRATION-7.0.md +83 -2
- package/fesm2022/smartbit4all-ng-client.mjs +218 -30
- package/fesm2022/smartbit4all-ng-client.mjs.map +1 -1
- package/package.json +1 -1
- package/smartbit4all-ng-client-7.0.1.tgz +0 -0
- package/types/smartbit4all-ng-client.d.ts +25 -3
- package/smartbit4all-ng-client-7.0.0.tgz +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken, reflectComponentType, Injectable, inject, DOCUMENT, PLATFORM_ID, Optional, Inject, RendererStyleFlags2, input, computed, Component, HostListener, HostBinding, Directive, ViewContainerRef, ElementRef, Renderer2, ChangeDetectorRef, Input, output, signal, Injector, ViewChild, ViewChildren, effect, afterNextRender, NgZone, forwardRef, Pipe, ChangeDetectionStrategy, ViewEncapsulation, ApplicationRef, makeEnvironmentProviders, importProvidersFrom } from '@angular/core';
|
|
2
|
+
import { InjectionToken, reflectComponentType, Injectable, inject, DOCUMENT, PLATFORM_ID, Optional, Inject, RendererStyleFlags2, input, computed, Component, HostListener, HostBinding, Directive, ViewContainerRef, ElementRef, Renderer2, ChangeDetectorRef, Input, output, signal, Injector, ViewChild, ViewChildren, effect, afterNextRender, NgZone, forwardRef, Pipe, ChangeDetectionStrategy, ViewEncapsulation, ApplicationRef, EventEmitter, Output, makeEnvironmentProviders, importProvidersFrom } from '@angular/core';
|
|
3
3
|
import * as i1 from '@angular/common/http';
|
|
4
4
|
import { HttpHeaders, HttpContext, HttpErrorResponse, HttpParams, provideHttpClient, withInterceptors, withInterceptorsFromDi } from '@angular/common/http';
|
|
5
5
|
import { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE } from '@angular/material/core';
|
|
@@ -7,7 +7,7 @@ import { NgxMaskDirective, provideNgxMask } from 'ngx-mask';
|
|
|
7
7
|
import { QuillEditorComponent, QuillModule } from 'ngx-quill';
|
|
8
8
|
import { DateFnsAdapter } from '@angular/material-date-fns-adapter';
|
|
9
9
|
import { enUS, hu } from 'date-fns/locale';
|
|
10
|
-
import { isPlatformBrowser, NgClass, NgTemplateOutlet, NgStyle, AsyncPipe, KeyValuePipe, DatePipe, Location, NgIf } from '@angular/common';
|
|
10
|
+
import { isPlatformBrowser, NgClass, NgTemplateOutlet, NgStyle, AsyncPipe, KeyValuePipe, DatePipe, Location, NgIf, NgForOf } from '@angular/common';
|
|
11
11
|
import { Subject, lastValueFrom, tap, takeUntil, throwError, from, interval, startWith, map, distinctUntilChanged, catchError as catchError$1 } from 'rxjs';
|
|
12
12
|
import { catchError, switchMap, takeUntil as takeUntil$1 } from 'rxjs/operators';
|
|
13
13
|
import { MatButton, MatIconButton, MatMiniFabButton } from '@angular/material/button';
|
|
@@ -8236,6 +8236,7 @@ class UiActionToolbarComponent {
|
|
|
8236
8236
|
}
|
|
8237
8237
|
async onActionClicked(event, entry) {
|
|
8238
8238
|
// event.stopPropagation();
|
|
8239
|
+
this.menuService.closeAllMenus();
|
|
8239
8240
|
if (entry.model.uiAction.disabled) {
|
|
8240
8241
|
return;
|
|
8241
8242
|
}
|
|
@@ -8322,11 +8323,11 @@ class UiActionToolbarComponent {
|
|
|
8322
8323
|
return MenuTriggerType;
|
|
8323
8324
|
}
|
|
8324
8325
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: UiActionToolbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
8325
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: UiActionToolbarComponent, isStandalone: true, selector: "smart-ui-action-toolbar", inputs: { uiActionModels: { classPropertyName: "uiActionModels", publicName: "uiActionModels", isSignal: false, isRequired: false, transformFunction: null }, uiActionDescriptorService: { classPropertyName: "uiActionDescriptorService", publicName: "uiActionDescriptorService", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: false, isRequired: false, transformFunction: null }, executor: { classPropertyName: "executor", publicName: "executor", isSignal: true, isRequired: false, transformFunction: null }, widgetId: { classPropertyName: "widgetId", publicName: "widgetId", isSignal: true, isRequired: false, transformFunction: null }, nodeId: { classPropertyName: "nodeId", publicName: "nodeId", isSignal: true, isRequired: false, transformFunction: null }, actionParams: { classPropertyName: "actionParams", publicName: "actionParams", isSignal: true, isRequired: false, transformFunction: null }, scrollOnWrap: { classPropertyName: "scrollOnWrap", publicName: "scrollOnWrap", isSignal: false, isRequired: false, transformFunction: null }, toolbarPropertes: { classPropertyName: "toolbarPropertes", publicName: "toolbarPropertes", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "window:resize": "onResize()" } }, viewQueries: [{ propertyName: "containerRef", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: "@if (isScrollable && scrollOnWrap) {\n <ui-action-button\n [disabled]=\"!isScrollable\"\n [descriptor]=\"buttonLeft\"\n (actionClick)=\"scrollLeft()\"\n (mousedown)=\"scrollStart('left')\"\n (mouseup)=\"stopScroll()\"\n (mouseleave)=\"stopScroll()\"\n (touchstart)=\"scrollStart('left')\"\n (touchend)=\"stopScroll()\"\n />\n}\n\n<div\n #container\n class=\"uiActionButtonsContainer\"\n [ngClass]=\"{\n scrollableContent: scrollOnWrap,\n verticalToolbar: isVertical,\n horizontalToolbar: isHorizontal,\n alignedStart: isAlignedStart,\n alignedEnd: isAlignedEnd,\n }\"\n >\n <!--\n Tracked by a synthesized key \u2014 the action code plus its ordinal among the entries with\n the same code \u2014 because a code is not unique inside a toolbar. Unique by construction,\n and a button's DOM node follows its action across reordering and insertion. See A14.\n -->\n @for (entry of entries(); track entry.key) {\n @if (entry.model.uiAction.code === 'themeSelector') {\n <theme-selector [model]=\"entry.model\"></theme-selector>\n } @else if (entry.model.uiAction.subActions && entry.model.uiAction.subActions.length > 0) {\n <ng-container *ngTemplateOutlet=\"menuTypes; context: { entry: entry }\"></ng-container>\n } @else {\n <ui-action-button\n (mouseenter)=\"onHover()\"\n [descriptor]=\"entry.descriptor!\"\n [code]=\"entry.model.uiAction.code\"\n [disabled]=\"!!entry.model.uiAction.disabled\"\n [addedCssClass]=\"entry.model.cssClass\"\n [viewActivated]=\"entry.model.uiAction.viewActivated\"\n (actionClick)=\"onActionClicked($event, entry)\"\n (actionDoubleClick)=\"onActionDoubleClicked($event, entry)\"\n >\n </ui-action-button>\n }\n }\n</div>\n\n@if (isScrollable && scrollOnWrap) {\n <ui-action-button\n [disabled]=\"!isScrollable\"\n [descriptor]=\"buttonRight\"\n (actionClick)=\"scrollRight()\"\n (mousedown)=\"scrollStart('right')\"\n (mouseup)=\"stopScroll()\"\n (mouseleave)=\"stopScroll()\"\n (touchstart)=\"scrollStart('right')\"\n (touchend)=\"stopScroll()\"\n />\n}\n\n<ng-template #menuTypes let-entry=\"entry\">\n @switch ($safeNavigationMigration(entry?.model?.uiAction?.descriptor?.menu?.triggerType)) {\n @case (triggerType.HOVER) {\n <ui-hover-menu\n #menu\n [toolbarId]=\"id\"\n (mouseenter)=\"onHover()\"\n [triggerAction]=\"entry.model.uiAction\"\n (actionClick)=\"onActionClicked($event, entry)\"\n ></ui-hover-menu>\n }\n @case (triggerType.CLICK) {\n <ui-tiered-menu\n #menu\n (mouseenter)=\"onHover()\"\n [triggerAction]=\"entry.model.uiAction\"\n (actionClick)=\"onActionClicked($event, entry)\"\n ></ui-tiered-menu>\n }\n @default {\n <ui-tiered-menu\n #menu\n (mouseenter)=\"onHover()\"\n [triggerAction]=\"entry.model.uiAction\"\n (actionClick)=\"onActionClicked($event, entry)\"\n ></ui-tiered-menu>\n }\n }\n</ng-template>\n", styles: [":host:has(.uiActionButtonsContainer.scrollableContent){display:flex;flex-direction:row;justify-content:space-between;gap:.5rem;width:100%;align-items:center}:host:has(.verticalToolbar){height:100%}:host:has(.horizontalToolbar.alignedEnd){width:100%}.uiActionButtonsContainer{display:flex;flex-direction:row;gap:1rem;flex-wrap:wrap}.uiActionButtonsContainer ::ng-deep button{display:flex;gap:1rem;align-items:center;justify-content:center}.uiActionButtonsContainer ::ng-deep .buttonWrapper{position:relative;width:fit-content;height:fit-content}.scrollableContent{flex:1;flex-wrap:nowrap;overflow-x:auto;overflow-y:visible;display:flex;scrollbar-width:none;padding:.5rem 0;align-items:center}.scrollableContent::-webkit-scrollbar{display:none!important}.verticalToolbar{display:flex;flex-direction:column;height:100%}.verticalToolbar ::ng-deep ui-action-button,.verticalToolbar ::ng-deep button{width:100%}.alignedStart{justify-content:flex-start}.alignedEnd{justify-content:flex-end}\n"], dependencies: [{ kind: "component", type: UiActionButtonComponent, selector: "ui-action-button", inputs: ["disabled", "descriptor", "code", "viewActivated", "addedCssClass", "addBasicClasses", "iconPlaceholder"], outputs: ["actionClick", "actionDoubleClick"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ThemeSelectorComponent, selector: "theme-selector", inputs: ["model"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: HoverMenuComponent, selector: "ui-hover-menu", inputs: ["triggerAction", "isSubmenu", "menuOpenDirection", "toolbarId"], outputs: ["actionClick", "submenuOpened"] }, { kind: "component", type: ClickMenuComponent, selector: "ui-tiered-menu", inputs: ["triggerAction", "isSubmenu", "menuOpenDirection"], outputs: ["actionClick", "submenuOpened"] }] }); }
|
|
8326
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: UiActionToolbarComponent, isStandalone: true, selector: "smart-ui-action-toolbar", inputs: { uiActionModels: { classPropertyName: "uiActionModels", publicName: "uiActionModels", isSignal: false, isRequired: false, transformFunction: null }, uiActionDescriptorService: { classPropertyName: "uiActionDescriptorService", publicName: "uiActionDescriptorService", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: false, isRequired: false, transformFunction: null }, executor: { classPropertyName: "executor", publicName: "executor", isSignal: true, isRequired: false, transformFunction: null }, widgetId: { classPropertyName: "widgetId", publicName: "widgetId", isSignal: true, isRequired: false, transformFunction: null }, nodeId: { classPropertyName: "nodeId", publicName: "nodeId", isSignal: true, isRequired: false, transformFunction: null }, actionParams: { classPropertyName: "actionParams", publicName: "actionParams", isSignal: true, isRequired: false, transformFunction: null }, scrollOnWrap: { classPropertyName: "scrollOnWrap", publicName: "scrollOnWrap", isSignal: false, isRequired: false, transformFunction: null }, toolbarPropertes: { classPropertyName: "toolbarPropertes", publicName: "toolbarPropertes", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "window:resize": "onResize()" } }, viewQueries: [{ propertyName: "containerRef", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: "@if (isScrollable && scrollOnWrap) {\n <ui-action-button\n [disabled]=\"!isScrollable\"\n [descriptor]=\"buttonLeft\"\n (actionClick)=\"scrollLeft()\"\n (mousedown)=\"scrollStart('left')\"\n (mouseup)=\"stopScroll()\"\n (mouseleave)=\"stopScroll()\"\n (touchstart)=\"scrollStart('left')\"\n (touchend)=\"stopScroll()\"\n />\n}\n\n<div\n #container\n class=\"uiActionButtonsContainer\"\n (click)=\"$event.stopPropagation()\"\n [ngClass]=\"{\n scrollableContent: scrollOnWrap,\n verticalToolbar: isVertical,\n horizontalToolbar: isHorizontal,\n alignedStart: isAlignedStart,\n alignedEnd: isAlignedEnd,\n }\"\n >\n <!--\n Tracked by a synthesized key \u2014 the action code plus its ordinal among the entries with\n the same code \u2014 because a code is not unique inside a toolbar. Unique by construction,\n and a button's DOM node follows its action across reordering and insertion. See A14.\n -->\n @for (entry of entries(); track entry.key) {\n @if (entry.model.uiAction.code === 'themeSelector') {\n <theme-selector [model]=\"entry.model\"></theme-selector>\n } @else if (entry.model.uiAction.subActions && entry.model.uiAction.subActions.length > 0) {\n <ng-container *ngTemplateOutlet=\"menuTypes; context: { entry: entry }\"></ng-container>\n } @else {\n <ui-action-button\n (mouseenter)=\"onHover()\"\n [descriptor]=\"entry.descriptor!\"\n [code]=\"entry.model.uiAction.code\"\n [disabled]=\"!!entry.model.uiAction.disabled\"\n [addedCssClass]=\"entry.model.cssClass\"\n [viewActivated]=\"entry.model.uiAction.viewActivated\"\n (actionClick)=\"onActionClicked($event, entry)\"\n (actionDoubleClick)=\"onActionDoubleClicked($event, entry)\"\n >\n </ui-action-button>\n }\n }\n</div>\n\n@if (isScrollable && scrollOnWrap) {\n <ui-action-button\n [disabled]=\"!isScrollable\"\n [descriptor]=\"buttonRight\"\n (actionClick)=\"scrollRight()\"\n (mousedown)=\"scrollStart('right')\"\n (mouseup)=\"stopScroll()\"\n (mouseleave)=\"stopScroll()\"\n (touchstart)=\"scrollStart('right')\"\n (touchend)=\"stopScroll()\"\n />\n}\n\n<ng-template #menuTypes let-entry=\"entry\">\n @switch ($safeNavigationMigration(entry?.model?.uiAction?.descriptor?.menu?.triggerType)) {\n @case (triggerType.HOVER) {\n <ui-hover-menu\n #menu\n [toolbarId]=\"id\"\n (mouseenter)=\"onHover()\"\n [triggerAction]=\"entry.model.uiAction\"\n (actionClick)=\"onActionClicked($event, entry)\"\n ></ui-hover-menu>\n }\n @case (triggerType.CLICK) {\n <ui-tiered-menu\n #menu\n (mouseenter)=\"onHover()\"\n [triggerAction]=\"entry.model.uiAction\"\n (actionClick)=\"onActionClicked($event, entry)\"\n ></ui-tiered-menu>\n }\n @default {\n <ui-tiered-menu\n #menu\n (mouseenter)=\"onHover()\"\n [triggerAction]=\"entry.model.uiAction\"\n (actionClick)=\"onActionClicked($event, entry)\"\n ></ui-tiered-menu>\n }\n }\n</ng-template>\n", styles: [":host:has(.uiActionButtonsContainer.scrollableContent){display:flex;flex-direction:row;justify-content:space-between;gap:.5rem;width:100%;align-items:center}:host:has(.verticalToolbar){height:100%}:host:has(.horizontalToolbar.alignedEnd){width:100%}.uiActionButtonsContainer{display:flex;flex-direction:row;gap:1rem;flex-wrap:wrap}.uiActionButtonsContainer ::ng-deep button{display:flex;gap:1rem;align-items:center;justify-content:center}.uiActionButtonsContainer ::ng-deep .buttonWrapper{position:relative;width:fit-content;height:fit-content}.scrollableContent{flex:1;flex-wrap:nowrap;overflow-x:auto;overflow-y:visible;display:flex;scrollbar-width:none;padding:.5rem 0;align-items:center}.scrollableContent::-webkit-scrollbar{display:none!important}.verticalToolbar{display:flex;flex-direction:column;height:100%}.verticalToolbar ::ng-deep ui-action-button,.verticalToolbar ::ng-deep button{width:100%}.alignedStart{justify-content:flex-start}.alignedEnd{justify-content:flex-end}\n"], dependencies: [{ kind: "component", type: UiActionButtonComponent, selector: "ui-action-button", inputs: ["disabled", "descriptor", "code", "viewActivated", "addedCssClass", "addBasicClasses", "iconPlaceholder"], outputs: ["actionClick", "actionDoubleClick"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ThemeSelectorComponent, selector: "theme-selector", inputs: ["model"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: HoverMenuComponent, selector: "ui-hover-menu", inputs: ["triggerAction", "isSubmenu", "menuOpenDirection", "toolbarId"], outputs: ["actionClick", "submenuOpened"] }, { kind: "component", type: ClickMenuComponent, selector: "ui-tiered-menu", inputs: ["triggerAction", "isSubmenu", "menuOpenDirection"], outputs: ["actionClick", "submenuOpened"] }] }); }
|
|
8326
8327
|
}
|
|
8327
8328
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: UiActionToolbarComponent, decorators: [{
|
|
8328
8329
|
type: Component,
|
|
8329
|
-
args: [{ selector: 'smart-ui-action-toolbar', imports: [UiActionButtonComponent, NgClass, ThemeSelectorComponent, NgTemplateOutlet, HoverMenuComponent, ClickMenuComponent], template: "@if (isScrollable && scrollOnWrap) {\n <ui-action-button\n [disabled]=\"!isScrollable\"\n [descriptor]=\"buttonLeft\"\n (actionClick)=\"scrollLeft()\"\n (mousedown)=\"scrollStart('left')\"\n (mouseup)=\"stopScroll()\"\n (mouseleave)=\"stopScroll()\"\n (touchstart)=\"scrollStart('left')\"\n (touchend)=\"stopScroll()\"\n />\n}\n\n<div\n #container\n class=\"uiActionButtonsContainer\"\n [ngClass]=\"{\n scrollableContent: scrollOnWrap,\n verticalToolbar: isVertical,\n horizontalToolbar: isHorizontal,\n alignedStart: isAlignedStart,\n alignedEnd: isAlignedEnd,\n }\"\n >\n <!--\n Tracked by a synthesized key \u2014 the action code plus its ordinal among the entries with\n the same code \u2014 because a code is not unique inside a toolbar. Unique by construction,\n and a button's DOM node follows its action across reordering and insertion. See A14.\n -->\n @for (entry of entries(); track entry.key) {\n @if (entry.model.uiAction.code === 'themeSelector') {\n <theme-selector [model]=\"entry.model\"></theme-selector>\n } @else if (entry.model.uiAction.subActions && entry.model.uiAction.subActions.length > 0) {\n <ng-container *ngTemplateOutlet=\"menuTypes; context: { entry: entry }\"></ng-container>\n } @else {\n <ui-action-button\n (mouseenter)=\"onHover()\"\n [descriptor]=\"entry.descriptor!\"\n [code]=\"entry.model.uiAction.code\"\n [disabled]=\"!!entry.model.uiAction.disabled\"\n [addedCssClass]=\"entry.model.cssClass\"\n [viewActivated]=\"entry.model.uiAction.viewActivated\"\n (actionClick)=\"onActionClicked($event, entry)\"\n (actionDoubleClick)=\"onActionDoubleClicked($event, entry)\"\n >\n </ui-action-button>\n }\n }\n</div>\n\n@if (isScrollable && scrollOnWrap) {\n <ui-action-button\n [disabled]=\"!isScrollable\"\n [descriptor]=\"buttonRight\"\n (actionClick)=\"scrollRight()\"\n (mousedown)=\"scrollStart('right')\"\n (mouseup)=\"stopScroll()\"\n (mouseleave)=\"stopScroll()\"\n (touchstart)=\"scrollStart('right')\"\n (touchend)=\"stopScroll()\"\n />\n}\n\n<ng-template #menuTypes let-entry=\"entry\">\n @switch ($safeNavigationMigration(entry?.model?.uiAction?.descriptor?.menu?.triggerType)) {\n @case (triggerType.HOVER) {\n <ui-hover-menu\n #menu\n [toolbarId]=\"id\"\n (mouseenter)=\"onHover()\"\n [triggerAction]=\"entry.model.uiAction\"\n (actionClick)=\"onActionClicked($event, entry)\"\n ></ui-hover-menu>\n }\n @case (triggerType.CLICK) {\n <ui-tiered-menu\n #menu\n (mouseenter)=\"onHover()\"\n [triggerAction]=\"entry.model.uiAction\"\n (actionClick)=\"onActionClicked($event, entry)\"\n ></ui-tiered-menu>\n }\n @default {\n <ui-tiered-menu\n #menu\n (mouseenter)=\"onHover()\"\n [triggerAction]=\"entry.model.uiAction\"\n (actionClick)=\"onActionClicked($event, entry)\"\n ></ui-tiered-menu>\n }\n }\n</ng-template>\n", styles: [":host:has(.uiActionButtonsContainer.scrollableContent){display:flex;flex-direction:row;justify-content:space-between;gap:.5rem;width:100%;align-items:center}:host:has(.verticalToolbar){height:100%}:host:has(.horizontalToolbar.alignedEnd){width:100%}.uiActionButtonsContainer{display:flex;flex-direction:row;gap:1rem;flex-wrap:wrap}.uiActionButtonsContainer ::ng-deep button{display:flex;gap:1rem;align-items:center;justify-content:center}.uiActionButtonsContainer ::ng-deep .buttonWrapper{position:relative;width:fit-content;height:fit-content}.scrollableContent{flex:1;flex-wrap:nowrap;overflow-x:auto;overflow-y:visible;display:flex;scrollbar-width:none;padding:.5rem 0;align-items:center}.scrollableContent::-webkit-scrollbar{display:none!important}.verticalToolbar{display:flex;flex-direction:column;height:100%}.verticalToolbar ::ng-deep ui-action-button,.verticalToolbar ::ng-deep button{width:100%}.alignedStart{justify-content:flex-start}.alignedEnd{justify-content:flex-end}\n"] }]
|
|
8330
|
+
args: [{ selector: 'smart-ui-action-toolbar', imports: [UiActionButtonComponent, NgClass, ThemeSelectorComponent, NgTemplateOutlet, HoverMenuComponent, ClickMenuComponent], template: "@if (isScrollable && scrollOnWrap) {\n <ui-action-button\n [disabled]=\"!isScrollable\"\n [descriptor]=\"buttonLeft\"\n (actionClick)=\"scrollLeft()\"\n (mousedown)=\"scrollStart('left')\"\n (mouseup)=\"stopScroll()\"\n (mouseleave)=\"stopScroll()\"\n (touchstart)=\"scrollStart('left')\"\n (touchend)=\"stopScroll()\"\n />\n}\n\n<div\n #container\n class=\"uiActionButtonsContainer\"\n (click)=\"$event.stopPropagation()\"\n [ngClass]=\"{\n scrollableContent: scrollOnWrap,\n verticalToolbar: isVertical,\n horizontalToolbar: isHorizontal,\n alignedStart: isAlignedStart,\n alignedEnd: isAlignedEnd,\n }\"\n >\n <!--\n Tracked by a synthesized key \u2014 the action code plus its ordinal among the entries with\n the same code \u2014 because a code is not unique inside a toolbar. Unique by construction,\n and a button's DOM node follows its action across reordering and insertion. See A14.\n -->\n @for (entry of entries(); track entry.key) {\n @if (entry.model.uiAction.code === 'themeSelector') {\n <theme-selector [model]=\"entry.model\"></theme-selector>\n } @else if (entry.model.uiAction.subActions && entry.model.uiAction.subActions.length > 0) {\n <ng-container *ngTemplateOutlet=\"menuTypes; context: { entry: entry }\"></ng-container>\n } @else {\n <ui-action-button\n (mouseenter)=\"onHover()\"\n [descriptor]=\"entry.descriptor!\"\n [code]=\"entry.model.uiAction.code\"\n [disabled]=\"!!entry.model.uiAction.disabled\"\n [addedCssClass]=\"entry.model.cssClass\"\n [viewActivated]=\"entry.model.uiAction.viewActivated\"\n (actionClick)=\"onActionClicked($event, entry)\"\n (actionDoubleClick)=\"onActionDoubleClicked($event, entry)\"\n >\n </ui-action-button>\n }\n }\n</div>\n\n@if (isScrollable && scrollOnWrap) {\n <ui-action-button\n [disabled]=\"!isScrollable\"\n [descriptor]=\"buttonRight\"\n (actionClick)=\"scrollRight()\"\n (mousedown)=\"scrollStart('right')\"\n (mouseup)=\"stopScroll()\"\n (mouseleave)=\"stopScroll()\"\n (touchstart)=\"scrollStart('right')\"\n (touchend)=\"stopScroll()\"\n />\n}\n\n<ng-template #menuTypes let-entry=\"entry\">\n @switch ($safeNavigationMigration(entry?.model?.uiAction?.descriptor?.menu?.triggerType)) {\n @case (triggerType.HOVER) {\n <ui-hover-menu\n #menu\n [toolbarId]=\"id\"\n (mouseenter)=\"onHover()\"\n [triggerAction]=\"entry.model.uiAction\"\n (actionClick)=\"onActionClicked($event, entry)\"\n ></ui-hover-menu>\n }\n @case (triggerType.CLICK) {\n <ui-tiered-menu\n #menu\n (mouseenter)=\"onHover()\"\n [triggerAction]=\"entry.model.uiAction\"\n (actionClick)=\"onActionClicked($event, entry)\"\n ></ui-tiered-menu>\n }\n @default {\n <ui-tiered-menu\n #menu\n (mouseenter)=\"onHover()\"\n [triggerAction]=\"entry.model.uiAction\"\n (actionClick)=\"onActionClicked($event, entry)\"\n ></ui-tiered-menu>\n }\n }\n</ng-template>\n", styles: [":host:has(.uiActionButtonsContainer.scrollableContent){display:flex;flex-direction:row;justify-content:space-between;gap:.5rem;width:100%;align-items:center}:host:has(.verticalToolbar){height:100%}:host:has(.horizontalToolbar.alignedEnd){width:100%}.uiActionButtonsContainer{display:flex;flex-direction:row;gap:1rem;flex-wrap:wrap}.uiActionButtonsContainer ::ng-deep button{display:flex;gap:1rem;align-items:center;justify-content:center}.uiActionButtonsContainer ::ng-deep .buttonWrapper{position:relative;width:fit-content;height:fit-content}.scrollableContent{flex:1;flex-wrap:nowrap;overflow-x:auto;overflow-y:visible;display:flex;scrollbar-width:none;padding:.5rem 0;align-items:center}.scrollableContent::-webkit-scrollbar{display:none!important}.verticalToolbar{display:flex;flex-direction:column;height:100%}.verticalToolbar ::ng-deep ui-action-button,.verticalToolbar ::ng-deep button{width:100%}.alignedStart{justify-content:flex-start}.alignedEnd{justify-content:flex-end}\n"] }]
|
|
8330
8331
|
}], ctorParameters: () => [], propDecorators: { containerRef: [{
|
|
8331
8332
|
type: ViewChild,
|
|
8332
8333
|
args: ['container', { static: false }]
|
|
@@ -12433,7 +12434,25 @@ class SmartFilterEditorService {
|
|
|
12433
12434
|
constructor() {
|
|
12434
12435
|
this.service = inject(FilterService);
|
|
12435
12436
|
this.viewCtxService = inject(SmartViewContextService);
|
|
12437
|
+
/** Signal-backed so template gates (ours and the hosts') re-evaluate under zoneless CD. */
|
|
12438
|
+
this.modelState = signal(undefined, /* @ts-ignore */
|
|
12439
|
+
...(ngDevMode ? [{ debugName: "modelState" }] : /* istanbul ignore next */ []));
|
|
12436
12440
|
this.modelChanged = new Subject();
|
|
12441
|
+
this.itemSelected = new Subject();
|
|
12442
|
+
this.toolbars = [];
|
|
12443
|
+
}
|
|
12444
|
+
get model() {
|
|
12445
|
+
return this.modelState();
|
|
12446
|
+
}
|
|
12447
|
+
set model(model) {
|
|
12448
|
+
this.modelState.set(model);
|
|
12449
|
+
}
|
|
12450
|
+
getComplexToolbars() {
|
|
12451
|
+
return [...this.toolbars];
|
|
12452
|
+
}
|
|
12453
|
+
setComplexToolbars(toolbars) {
|
|
12454
|
+
this.toolbars = [...toolbars];
|
|
12455
|
+
this.parentSmartComponent?.initActions();
|
|
12437
12456
|
}
|
|
12438
12457
|
async load() {
|
|
12439
12458
|
if (this.config.uuid) {
|
|
@@ -12479,6 +12498,20 @@ class SmartFilterEditorService {
|
|
|
12479
12498
|
getAdditionalParams(uiAction) {
|
|
12480
12499
|
throw new Error('Method not implemented.');
|
|
12481
12500
|
}
|
|
12501
|
+
async bulkUpdateFilterExpression(operationType, item) {
|
|
12502
|
+
if (!this.model?.readOnly) {
|
|
12503
|
+
if (item) {
|
|
12504
|
+
item.expressionData.boolOperator = operationType;
|
|
12505
|
+
}
|
|
12506
|
+
await this.peformWidgetAction({
|
|
12507
|
+
code: 'BULK_UPDATE_FILTER_EXPRESSION',
|
|
12508
|
+
params: {
|
|
12509
|
+
model: item,
|
|
12510
|
+
operator: operationType,
|
|
12511
|
+
},
|
|
12512
|
+
});
|
|
12513
|
+
}
|
|
12514
|
+
}
|
|
12482
12515
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SmartFilterEditorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
12483
12516
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SmartFilterEditorService }); }
|
|
12484
12517
|
}
|
|
@@ -18310,11 +18343,11 @@ class SmartGridComponent {
|
|
|
18310
18343
|
this.dialog.open(TableLayoutDefinerComponent, { data: dialogData });
|
|
18311
18344
|
}
|
|
18312
18345
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SmartGridComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
18313
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: SmartGridComponent, isStandalone: true, selector: "smart-grid", inputs: { smartGrid: { classPropertyName: "smartGrid", publicName: "smartGrid", isSignal: false, isRequired: false, transformFunction: null }, uuid: { classPropertyName: "uuid", publicName: "uuid", isSignal: false, isRequired: false, transformFunction: null }, parentLayoutComponent: { classPropertyName: "parentLayoutComponent", publicName: "parentLayoutComponent", isSignal: true, isRequired: false, transformFunction: null }, dev: { classPropertyName: "dev", publicName: "dev", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-testid": "this.testId" } }, providers: [SmartGridService], viewQueries: [{ propertyName: "vcRefTable", first: true, predicate: ["table"], descendants: true, read: ViewContainerRef }, { propertyName: "expandedRowsComps", predicate: ExpandedRowRendererComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "@if (smartGrid) {\n <div class=\"smartGrid-container\">\n <div class=\"smart-grid-toolbar\">\n <smart-ui-action-toolbar [id]=\"toolbarId\"></smart-ui-action-toolbar>\n @if (smartGrid.showEditColumns) {\n <button\n (click)=\"editColumns()\"\n mat-mini-fab\n color=\"text-primary\"\n >\n <mat-icon aria-hidden=\"false\" aria-label=\"Columns\" class=\"smart-grid-edit-icon\"\n >view_columns</mat-icon\n >\n </button>\n }\n </div>\n <!-- <div [ngClass]=\"isBlocked ? 'blocked' : ''\"></div> -->\n <div class=\"smartGridContent\">\n <div>\n @if (smartGrid.showResultCount) {\n <div>\n <div class=\"smartGrid-data-number\">\n {{ smartGrid.gridModel.totalRowCount }}\n </div>\n </div>\n }\n </div>\n <div class=\"smart-grid-table-container\">\n <ng-template #table></ng-template>\n </div>\n @if (smartGrid.layoutDef === layoutDef().EXPANDABLE) {\n <div>\n @for (expandableSection of expandableSections; track expandableSection) {\n <smart-expandable-section\n #gridExpandableSection\n [data]=\"expandableSection\"\n ></smart-expandable-section>\n }\n </div>\n }\n @if (smartGrid.layoutDef === layoutDef().CARD && smartGrid.dataLayoutDef) {\n <div\n class=\"cards-container\"\n [ngStyle]=\"{\n 'grid-template-columns':\n smartGrid.numberOfColumn !== undefined\n ? 'repeat(' + smartGrid.numberOfColumn + ', 1fr)'\n : '',\n }\"\n >\n @for (row of smartGrid.gridModel.page.rows; track row) {\n <app-smart-grid-card\n class=\"smartGrid-card-container\"\n [class.clickable-row]=\"row.layoutDescriptor\"\n (click)=\"row.layoutDescriptor && onClick(row)\"\n [item]=\"row\"\n [smartGrid]=\"smartGrid\"\n [parentLayoutComponent]=\"parentLayoutComponent()\"\n ></app-smart-grid-card>\n }\n </div>\n }\n @if (smartGrid.layoutDef === layoutDef().TREE && treeControl) {\n <div\n class=\"tree-container\"\n [ngStyle]=\"{\n 'grid-template-columns':\n smartGrid.numberOfColumn !== undefined\n ? 'repeat(' + smartGrid.numberOfColumn + ', 1fr)'\n : '',\n }\"\n >\n <mat-tree [dataSource]=\"treeDataSource!\" [treeControl]=\"treeControl!\">\n <mat-tree-node\n *matTreeNodeDef=\"let node\"\n matTreeNodeToggle\n matTreeNodePadding\n matTreeNodePaddingIndent=\"24\"\n >\n <button mat-icon-button disabled class=\"tree-button\"></button>\n <mat-checkbox\n class=\"checklist-leaf-node\"\n [checked]=\"$safeNavigationMigration(treeChecklistSelection?.isSelected(node))\"\n (change)=\"treeNodeSelectionToggle(node)\"\n >{{ getTreeItem(node) }}</mat-checkbox\n >\n </mat-tree-node>\n <mat-tree-node\n *matTreeNodeDef=\"let node; when: hasChild\"\n matTreeNodePadding\n matTreeNodePaddingIndent=\"24\"\n >\n <button\n mat-icon-button\n matTreeNodeToggle\n class=\"tree-button\"\n [attr.aria-label]=\"'Toggle ' + node.item\"\n >\n <mat-icon class=\"mat-icon-rtl-mirror\">\n {{ treeControl!.isExpanded(node) ? 'expand_more' : 'chevron_right' }}\n </mat-icon>\n </button>\n <mat-checkbox\n [checked]=\"$safeNavigationMigration(treeChecklistSelection?.isSelected(node))\"\n [indeterminate]=\"descendantsPartiallySelected(node)\"\n (change)=\"treeNodeSelectionToggle(node)\"\n >{{ getTreeItem(node) }}</mat-checkbox\n >\n </mat-tree-node>\n </mat-tree>\n </div>\n }\n </div>\n @if (smartGrid.paginator) {\n <div class=\"paginator-row-material\">\n @if (smartGrid.gridModel.refreshEnabled) {\n <button mat-icon-button type=\"button\" matTooltip=\"Friss\u00EDt\u00E9s\" (click)=\"refreshPartialResults()\">\n <mat-icon>refresh</mat-icon>\n </button>\n }\n @if (smartGrid.paginator && !treeControl) {\n <mat-paginator\n #paginator\n [length]=\"length\"\n [pageIndex]=\"pageIndex\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"\n (page)=\"onChangePage($event)\"\n ></mat-paginator>\n }\n </div>\n }\n </div>\n }\n", styles: [".smartGrid-container{position:relative;padding:1.5rem;display:flex;flex-direction:column;gap:1rem}.smartGrid-data-number{padding-bottom:1rem}.cards-container{display:grid;gap:1rem;padding:1rem}.smartGrid-container ::ng-deep .mat-form-field-appearance-legacy .mat-form-field-underline{bottom:0}.smartGridContent{width:100%;flex:1;overflow:auto}.blocked{position:absolute;width:calc(100% - 3rem);height:calc(100% - 3rem);z-index:110;background-color:#0003}.smart-grid-table-container{display:flex;flex-direction:column;gap:1rem}.smart-grid-toolbar{display:flex;flex-direction:row;justify-content:flex-end;align-items:center}.smart-grid-toolbar smart-ui-action-toolbar{width:100%}.smart-grid-edit-icon{color:var(--light-gray)}.tree-button{width:24px!important;height:24px!important}.paginator-row-material{display:flex;align-items:center;align-self:flex-end;gap:.25rem}.clickable-row{cursor:pointer}\n"], dependencies: [{ kind: "component", type: UiActionToolbarComponent, selector: "smart-ui-action-toolbar", inputs: ["uiActionModels", "uiActionDescriptorService", "id", "executor", "widgetId", "nodeId", "actionParams", "scrollOnWrap", "toolbarPropertes"] }, { kind: "component", type: MatMiniFabButton, selector: "button[mat-mini-fab], a[mat-mini-fab], button[matMiniFab], a[matMiniFab]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: ExpandableSectionComponent, selector: "smart-expandable-section", inputs: ["data", "index"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: SmartGridCardComponent, selector: "app-smart-grid-card", inputs: ["item", "smartGrid", "parentLayoutComponent"] }, { kind: "component", type: MatTree, selector: "mat-tree", exportAs: ["matTree"] }, { kind: "directive", type: MatTreeNodeDef, selector: "[matTreeNodeDef]", inputs: ["matTreeNodeDefWhen", "matTreeNode"] }, { kind: "directive", type: MatTreeNode, selector: "mat-tree-node", inputs: ["tabIndex", "disabled"], outputs: ["activation", "expandedChange"], exportAs: ["matTreeNode"] }, { kind: "directive", type: MatTreeNodeToggle, selector: "[matTreeNodeToggle]", inputs: ["matTreeNodeToggleRecursive"] }, { kind: "directive", type: MatTreeNodePadding, selector: "[matTreeNodePadding]", inputs: ["matTreeNodePadding", "matTreeNodePaddingIndent"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }] }); }
|
|
18346
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: SmartGridComponent, isStandalone: true, selector: "smart-grid", inputs: { smartGrid: { classPropertyName: "smartGrid", publicName: "smartGrid", isSignal: false, isRequired: false, transformFunction: null }, uuid: { classPropertyName: "uuid", publicName: "uuid", isSignal: false, isRequired: false, transformFunction: null }, parentLayoutComponent: { classPropertyName: "parentLayoutComponent", publicName: "parentLayoutComponent", isSignal: true, isRequired: false, transformFunction: null }, dev: { classPropertyName: "dev", publicName: "dev", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-testid": "this.testId" } }, providers: [SmartGridService], viewQueries: [{ propertyName: "vcRefTable", first: true, predicate: ["table"], descendants: true, read: ViewContainerRef }, { propertyName: "expandedRowsComps", predicate: ExpandedRowRendererComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "@if (smartGrid) {\n <div class=\"smartGrid-container\">\n <div class=\"smart-grid-toolbar\">\n <smart-ui-action-toolbar [id]=\"toolbarId\"></smart-ui-action-toolbar>\n @if (smartGrid.showEditColumns) {\n <button\n (click)=\"editColumns()\"\n mat-mini-fab\n color=\"text-primary\"\n >\n <mat-icon aria-hidden=\"false\" aria-label=\"Columns\" class=\"smart-grid-edit-icon\"\n >view_columns</mat-icon\n >\n </button>\n }\n </div>\n <!-- <div [ngClass]=\"isBlocked ? 'blocked' : ''\"></div> -->\n <div class=\"smartGridContent\">\n <div>\n @if (smartGrid.showResultCount) {\n <div>\n <div class=\"smartGrid-data-number\">\n {{ smartGrid.gridModel.totalRowCount }}\n </div>\n </div>\n }\n </div>\n <div class=\"smart-grid-table-container\">\n <ng-template #table></ng-template>\n </div>\n @if (smartGrid.layoutDef === layoutDef().EXPANDABLE) {\n <div>\n @for (expandableSection of expandableSections; track expandableSection) {\n <smart-expandable-section\n #gridExpandableSection\n [data]=\"expandableSection\"\n ></smart-expandable-section>\n }\n </div>\n }\n @if (smartGrid.layoutDef === layoutDef().CARD && smartGrid.dataLayoutDef) {\n <div\n class=\"cards-container\"\n [ngStyle]=\"{\n 'grid-template-columns':\n smartGrid.numberOfColumn !== undefined\n ? 'repeat(' + smartGrid.numberOfColumn + ', 1fr)'\n : '',\n }\"\n >\n @for (row of smartGrid.gridModel.page.rows; track row.id) {\n <app-smart-grid-card\n class=\"smartGrid-card-container\"\n [class.clickable-row]=\"row.layoutDescriptor\"\n (click)=\"row.layoutDescriptor && onClick(row)\"\n [item]=\"row\"\n [smartGrid]=\"smartGrid\"\n [parentLayoutComponent]=\"parentLayoutComponent()\"\n ></app-smart-grid-card>\n }\n </div>\n }\n @if (smartGrid.layoutDef === layoutDef().TREE && treeControl) {\n <div\n class=\"tree-container\"\n [ngStyle]=\"{\n 'grid-template-columns':\n smartGrid.numberOfColumn !== undefined\n ? 'repeat(' + smartGrid.numberOfColumn + ', 1fr)'\n : '',\n }\"\n >\n <mat-tree [dataSource]=\"treeDataSource!\" [treeControl]=\"treeControl!\">\n <mat-tree-node\n *matTreeNodeDef=\"let node\"\n matTreeNodeToggle\n matTreeNodePadding\n matTreeNodePaddingIndent=\"24\"\n >\n <button mat-icon-button disabled class=\"tree-button\"></button>\n <mat-checkbox\n class=\"checklist-leaf-node\"\n [checked]=\"$safeNavigationMigration(treeChecklistSelection?.isSelected(node))\"\n (change)=\"treeNodeSelectionToggle(node)\"\n >{{ getTreeItem(node) }}</mat-checkbox\n >\n </mat-tree-node>\n <mat-tree-node\n *matTreeNodeDef=\"let node; when: hasChild\"\n matTreeNodePadding\n matTreeNodePaddingIndent=\"24\"\n >\n <button\n mat-icon-button\n matTreeNodeToggle\n class=\"tree-button\"\n [attr.aria-label]=\"'Toggle ' + node.item\"\n >\n <mat-icon class=\"mat-icon-rtl-mirror\">\n {{ treeControl!.isExpanded(node) ? 'expand_more' : 'chevron_right' }}\n </mat-icon>\n </button>\n <mat-checkbox\n [checked]=\"$safeNavigationMigration(treeChecklistSelection?.isSelected(node))\"\n [indeterminate]=\"descendantsPartiallySelected(node)\"\n (change)=\"treeNodeSelectionToggle(node)\"\n >{{ getTreeItem(node) }}</mat-checkbox\n >\n </mat-tree-node>\n </mat-tree>\n </div>\n }\n </div>\n @if (smartGrid.paginator) {\n <div class=\"paginator-row-material\">\n @if (smartGrid.gridModel.refreshEnabled) {\n <button mat-icon-button type=\"button\" matTooltip=\"Friss\u00EDt\u00E9s\" (click)=\"refreshPartialResults()\">\n <mat-icon>refresh</mat-icon>\n </button>\n }\n @if (smartGrid.paginator && !treeControl) {\n <mat-paginator\n #paginator\n [length]=\"length\"\n [pageIndex]=\"pageIndex\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"\n (page)=\"onChangePage($event)\"\n ></mat-paginator>\n }\n </div>\n }\n </div>\n }\n", styles: [".smartGrid-container{position:relative;padding:1.5rem;display:flex;flex-direction:column;gap:1rem}.smartGrid-data-number{padding-bottom:1rem}.cards-container{display:grid;gap:1rem;padding:1rem}.smartGrid-container ::ng-deep .mat-form-field-appearance-legacy .mat-form-field-underline{bottom:0}.smartGridContent{width:100%;flex:1;overflow:auto}.blocked{position:absolute;width:calc(100% - 3rem);height:calc(100% - 3rem);z-index:110;background-color:#0003}.smart-grid-table-container{display:flex;flex-direction:column;gap:1rem}.smart-grid-toolbar{display:flex;flex-direction:row;justify-content:flex-end;align-items:center}.smart-grid-toolbar smart-ui-action-toolbar{width:100%}.smart-grid-edit-icon{color:var(--light-gray)}.tree-button{width:24px!important;height:24px!important}.paginator-row-material{display:flex;align-items:center;align-self:flex-end;gap:.25rem}.clickable-row{cursor:pointer}\n"], dependencies: [{ kind: "component", type: UiActionToolbarComponent, selector: "smart-ui-action-toolbar", inputs: ["uiActionModels", "uiActionDescriptorService", "id", "executor", "widgetId", "nodeId", "actionParams", "scrollOnWrap", "toolbarPropertes"] }, { kind: "component", type: MatMiniFabButton, selector: "button[mat-mini-fab], a[mat-mini-fab], button[matMiniFab], a[matMiniFab]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: ExpandableSectionComponent, selector: "smart-expandable-section", inputs: ["data", "index"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: SmartGridCardComponent, selector: "app-smart-grid-card", inputs: ["item", "smartGrid", "parentLayoutComponent"] }, { kind: "component", type: MatTree, selector: "mat-tree", exportAs: ["matTree"] }, { kind: "directive", type: MatTreeNodeDef, selector: "[matTreeNodeDef]", inputs: ["matTreeNodeDefWhen", "matTreeNode"] }, { kind: "directive", type: MatTreeNode, selector: "mat-tree-node", inputs: ["tabIndex", "disabled"], outputs: ["activation", "expandedChange"], exportAs: ["matTreeNode"] }, { kind: "directive", type: MatTreeNodeToggle, selector: "[matTreeNodeToggle]", inputs: ["matTreeNodeToggleRecursive"] }, { kind: "directive", type: MatTreeNodePadding, selector: "[matTreeNodePadding]", inputs: ["matTreeNodePadding", "matTreeNodePaddingIndent"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }] }); }
|
|
18314
18347
|
}
|
|
18315
18348
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SmartGridComponent, decorators: [{
|
|
18316
18349
|
type: Component,
|
|
18317
|
-
args: [{ selector: 'smart-grid', providers: [SmartGridService], imports: [UiActionToolbarComponent, MatMiniFabButton, MatIcon, ExpandableSectionComponent, NgStyle, SmartGridCardComponent, MatTree, MatTreeNodeDef, MatTreeNode, MatTreeNodeToggle, MatTreeNodePadding, MatIconButton, MatCheckbox, MatTooltip, MatPaginator], template: "@if (smartGrid) {\n <div class=\"smartGrid-container\">\n <div class=\"smart-grid-toolbar\">\n <smart-ui-action-toolbar [id]=\"toolbarId\"></smart-ui-action-toolbar>\n @if (smartGrid.showEditColumns) {\n <button\n (click)=\"editColumns()\"\n mat-mini-fab\n color=\"text-primary\"\n >\n <mat-icon aria-hidden=\"false\" aria-label=\"Columns\" class=\"smart-grid-edit-icon\"\n >view_columns</mat-icon\n >\n </button>\n }\n </div>\n <!-- <div [ngClass]=\"isBlocked ? 'blocked' : ''\"></div> -->\n <div class=\"smartGridContent\">\n <div>\n @if (smartGrid.showResultCount) {\n <div>\n <div class=\"smartGrid-data-number\">\n {{ smartGrid.gridModel.totalRowCount }}\n </div>\n </div>\n }\n </div>\n <div class=\"smart-grid-table-container\">\n <ng-template #table></ng-template>\n </div>\n @if (smartGrid.layoutDef === layoutDef().EXPANDABLE) {\n <div>\n @for (expandableSection of expandableSections; track expandableSection) {\n <smart-expandable-section\n #gridExpandableSection\n [data]=\"expandableSection\"\n ></smart-expandable-section>\n }\n </div>\n }\n @if (smartGrid.layoutDef === layoutDef().CARD && smartGrid.dataLayoutDef) {\n <div\n class=\"cards-container\"\n [ngStyle]=\"{\n 'grid-template-columns':\n smartGrid.numberOfColumn !== undefined\n ? 'repeat(' + smartGrid.numberOfColumn + ', 1fr)'\n : '',\n }\"\n >\n @for (row of smartGrid.gridModel.page.rows; track row) {\n <app-smart-grid-card\n class=\"smartGrid-card-container\"\n [class.clickable-row]=\"row.layoutDescriptor\"\n (click)=\"row.layoutDescriptor && onClick(row)\"\n [item]=\"row\"\n [smartGrid]=\"smartGrid\"\n [parentLayoutComponent]=\"parentLayoutComponent()\"\n ></app-smart-grid-card>\n }\n </div>\n }\n @if (smartGrid.layoutDef === layoutDef().TREE && treeControl) {\n <div\n class=\"tree-container\"\n [ngStyle]=\"{\n 'grid-template-columns':\n smartGrid.numberOfColumn !== undefined\n ? 'repeat(' + smartGrid.numberOfColumn + ', 1fr)'\n : '',\n }\"\n >\n <mat-tree [dataSource]=\"treeDataSource!\" [treeControl]=\"treeControl!\">\n <mat-tree-node\n *matTreeNodeDef=\"let node\"\n matTreeNodeToggle\n matTreeNodePadding\n matTreeNodePaddingIndent=\"24\"\n >\n <button mat-icon-button disabled class=\"tree-button\"></button>\n <mat-checkbox\n class=\"checklist-leaf-node\"\n [checked]=\"$safeNavigationMigration(treeChecklistSelection?.isSelected(node))\"\n (change)=\"treeNodeSelectionToggle(node)\"\n >{{ getTreeItem(node) }}</mat-checkbox\n >\n </mat-tree-node>\n <mat-tree-node\n *matTreeNodeDef=\"let node; when: hasChild\"\n matTreeNodePadding\n matTreeNodePaddingIndent=\"24\"\n >\n <button\n mat-icon-button\n matTreeNodeToggle\n class=\"tree-button\"\n [attr.aria-label]=\"'Toggle ' + node.item\"\n >\n <mat-icon class=\"mat-icon-rtl-mirror\">\n {{ treeControl!.isExpanded(node) ? 'expand_more' : 'chevron_right' }}\n </mat-icon>\n </button>\n <mat-checkbox\n [checked]=\"$safeNavigationMigration(treeChecklistSelection?.isSelected(node))\"\n [indeterminate]=\"descendantsPartiallySelected(node)\"\n (change)=\"treeNodeSelectionToggle(node)\"\n >{{ getTreeItem(node) }}</mat-checkbox\n >\n </mat-tree-node>\n </mat-tree>\n </div>\n }\n </div>\n @if (smartGrid.paginator) {\n <div class=\"paginator-row-material\">\n @if (smartGrid.gridModel.refreshEnabled) {\n <button mat-icon-button type=\"button\" matTooltip=\"Friss\u00EDt\u00E9s\" (click)=\"refreshPartialResults()\">\n <mat-icon>refresh</mat-icon>\n </button>\n }\n @if (smartGrid.paginator && !treeControl) {\n <mat-paginator\n #paginator\n [length]=\"length\"\n [pageIndex]=\"pageIndex\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"\n (page)=\"onChangePage($event)\"\n ></mat-paginator>\n }\n </div>\n }\n </div>\n }\n", styles: [".smartGrid-container{position:relative;padding:1.5rem;display:flex;flex-direction:column;gap:1rem}.smartGrid-data-number{padding-bottom:1rem}.cards-container{display:grid;gap:1rem;padding:1rem}.smartGrid-container ::ng-deep .mat-form-field-appearance-legacy .mat-form-field-underline{bottom:0}.smartGridContent{width:100%;flex:1;overflow:auto}.blocked{position:absolute;width:calc(100% - 3rem);height:calc(100% - 3rem);z-index:110;background-color:#0003}.smart-grid-table-container{display:flex;flex-direction:column;gap:1rem}.smart-grid-toolbar{display:flex;flex-direction:row;justify-content:flex-end;align-items:center}.smart-grid-toolbar smart-ui-action-toolbar{width:100%}.smart-grid-edit-icon{color:var(--light-gray)}.tree-button{width:24px!important;height:24px!important}.paginator-row-material{display:flex;align-items:center;align-self:flex-end;gap:.25rem}.clickable-row{cursor:pointer}\n"] }]
|
|
18350
|
+
args: [{ selector: 'smart-grid', providers: [SmartGridService], imports: [UiActionToolbarComponent, MatMiniFabButton, MatIcon, ExpandableSectionComponent, NgStyle, SmartGridCardComponent, MatTree, MatTreeNodeDef, MatTreeNode, MatTreeNodeToggle, MatTreeNodePadding, MatIconButton, MatCheckbox, MatTooltip, MatPaginator], template: "@if (smartGrid) {\n <div class=\"smartGrid-container\">\n <div class=\"smart-grid-toolbar\">\n <smart-ui-action-toolbar [id]=\"toolbarId\"></smart-ui-action-toolbar>\n @if (smartGrid.showEditColumns) {\n <button\n (click)=\"editColumns()\"\n mat-mini-fab\n color=\"text-primary\"\n >\n <mat-icon aria-hidden=\"false\" aria-label=\"Columns\" class=\"smart-grid-edit-icon\"\n >view_columns</mat-icon\n >\n </button>\n }\n </div>\n <!-- <div [ngClass]=\"isBlocked ? 'blocked' : ''\"></div> -->\n <div class=\"smartGridContent\">\n <div>\n @if (smartGrid.showResultCount) {\n <div>\n <div class=\"smartGrid-data-number\">\n {{ smartGrid.gridModel.totalRowCount }}\n </div>\n </div>\n }\n </div>\n <div class=\"smart-grid-table-container\">\n <ng-template #table></ng-template>\n </div>\n @if (smartGrid.layoutDef === layoutDef().EXPANDABLE) {\n <div>\n @for (expandableSection of expandableSections; track expandableSection) {\n <smart-expandable-section\n #gridExpandableSection\n [data]=\"expandableSection\"\n ></smart-expandable-section>\n }\n </div>\n }\n @if (smartGrid.layoutDef === layoutDef().CARD && smartGrid.dataLayoutDef) {\n <div\n class=\"cards-container\"\n [ngStyle]=\"{\n 'grid-template-columns':\n smartGrid.numberOfColumn !== undefined\n ? 'repeat(' + smartGrid.numberOfColumn + ', 1fr)'\n : '',\n }\"\n >\n @for (row of smartGrid.gridModel.page.rows; track row.id) {\n <app-smart-grid-card\n class=\"smartGrid-card-container\"\n [class.clickable-row]=\"row.layoutDescriptor\"\n (click)=\"row.layoutDescriptor && onClick(row)\"\n [item]=\"row\"\n [smartGrid]=\"smartGrid\"\n [parentLayoutComponent]=\"parentLayoutComponent()\"\n ></app-smart-grid-card>\n }\n </div>\n }\n @if (smartGrid.layoutDef === layoutDef().TREE && treeControl) {\n <div\n class=\"tree-container\"\n [ngStyle]=\"{\n 'grid-template-columns':\n smartGrid.numberOfColumn !== undefined\n ? 'repeat(' + smartGrid.numberOfColumn + ', 1fr)'\n : '',\n }\"\n >\n <mat-tree [dataSource]=\"treeDataSource!\" [treeControl]=\"treeControl!\">\n <mat-tree-node\n *matTreeNodeDef=\"let node\"\n matTreeNodeToggle\n matTreeNodePadding\n matTreeNodePaddingIndent=\"24\"\n >\n <button mat-icon-button disabled class=\"tree-button\"></button>\n <mat-checkbox\n class=\"checklist-leaf-node\"\n [checked]=\"$safeNavigationMigration(treeChecklistSelection?.isSelected(node))\"\n (change)=\"treeNodeSelectionToggle(node)\"\n >{{ getTreeItem(node) }}</mat-checkbox\n >\n </mat-tree-node>\n <mat-tree-node\n *matTreeNodeDef=\"let node; when: hasChild\"\n matTreeNodePadding\n matTreeNodePaddingIndent=\"24\"\n >\n <button\n mat-icon-button\n matTreeNodeToggle\n class=\"tree-button\"\n [attr.aria-label]=\"'Toggle ' + node.item\"\n >\n <mat-icon class=\"mat-icon-rtl-mirror\">\n {{ treeControl!.isExpanded(node) ? 'expand_more' : 'chevron_right' }}\n </mat-icon>\n </button>\n <mat-checkbox\n [checked]=\"$safeNavigationMigration(treeChecklistSelection?.isSelected(node))\"\n [indeterminate]=\"descendantsPartiallySelected(node)\"\n (change)=\"treeNodeSelectionToggle(node)\"\n >{{ getTreeItem(node) }}</mat-checkbox\n >\n </mat-tree-node>\n </mat-tree>\n </div>\n }\n </div>\n @if (smartGrid.paginator) {\n <div class=\"paginator-row-material\">\n @if (smartGrid.gridModel.refreshEnabled) {\n <button mat-icon-button type=\"button\" matTooltip=\"Friss\u00EDt\u00E9s\" (click)=\"refreshPartialResults()\">\n <mat-icon>refresh</mat-icon>\n </button>\n }\n @if (smartGrid.paginator && !treeControl) {\n <mat-paginator\n #paginator\n [length]=\"length\"\n [pageIndex]=\"pageIndex\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"\n (page)=\"onChangePage($event)\"\n ></mat-paginator>\n }\n </div>\n }\n </div>\n }\n", styles: [".smartGrid-container{position:relative;padding:1.5rem;display:flex;flex-direction:column;gap:1rem}.smartGrid-data-number{padding-bottom:1rem}.cards-container{display:grid;gap:1rem;padding:1rem}.smartGrid-container ::ng-deep .mat-form-field-appearance-legacy .mat-form-field-underline{bottom:0}.smartGridContent{width:100%;flex:1;overflow:auto}.blocked{position:absolute;width:calc(100% - 3rem);height:calc(100% - 3rem);z-index:110;background-color:#0003}.smart-grid-table-container{display:flex;flex-direction:column;gap:1rem}.smart-grid-toolbar{display:flex;flex-direction:row;justify-content:flex-end;align-items:center}.smart-grid-toolbar smart-ui-action-toolbar{width:100%}.smart-grid-edit-icon{color:var(--light-gray)}.tree-button{width:24px!important;height:24px!important}.paginator-row-material{display:flex;align-items:center;align-self:flex-end;gap:.25rem}.clickable-row{cursor:pointer}\n"] }]
|
|
18318
18351
|
}], ctorParameters: () => [], propDecorators: { smartGrid: [{
|
|
18319
18352
|
type: Input
|
|
18320
18353
|
}], uuid: [{
|
|
@@ -21008,7 +21041,7 @@ class SmartComponentLayoutComponent {
|
|
|
21008
21041
|
rowUiActionType: GridUiActionType.POPUP_MENU,
|
|
21009
21042
|
},
|
|
21010
21043
|
layoutDef: SmartLayoutDef.TABLE,
|
|
21011
|
-
paginator:
|
|
21044
|
+
paginator: false,
|
|
21012
21045
|
// What a card of this grid instantiates for a row that carries a layoutDescriptor.
|
|
21013
21046
|
// The grid model is the only way across: the card cannot import this class.
|
|
21014
21047
|
layoutComponent: SmartComponentLayoutComponent,
|
|
@@ -21179,11 +21212,11 @@ class SmartFilterParamComponent {
|
|
|
21179
21212
|
});
|
|
21180
21213
|
}
|
|
21181
21214
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SmartFilterParamComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
21182
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: SmartFilterParamComponent, isStandalone: true, selector: "app-target-group-filter-param", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<div class=\"targetGroupFilterParamContainer\">\n @for (data of data()?.group; track data) {\n <div\n class=\"targetGroupFilterItem\"\n (click)=\"onItemClick(data)\"\n >\n <smart-icon icon=\"
|
|
21215
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: SmartFilterParamComponent, isStandalone: true, selector: "app-target-group-filter-param", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<div class=\"targetGroupFilterParamContainer\">\n @for (data of data()?.group; track data) {\n <div\n class=\"targetGroupFilterItem\"\n (click)=\"onItemClick(data)\"\n >\n <smart-icon icon=\"chevron_right\" color=\"gray\"></smart-icon>\n <div class=\"mat-caption\">\n {{ data.label }}\n </div>\n </div>\n }\n</div>\n", styles: [".targetGroupFilterParamContainer{display:flex;flex-direction:column;gap:.25rem}.targetGroupFilterItem{padding:.75rem;border-radius:.25rem;display:flex;flex-direction:row;gap:.5rem;cursor:pointer}.targetGroupFilterItem .mat-caption{margin:auto 0}\n"], dependencies: [{ kind: "component", type: SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color", "imageResource"] }] }); }
|
|
21183
21216
|
}
|
|
21184
21217
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SmartFilterParamComponent, decorators: [{
|
|
21185
21218
|
type: Component,
|
|
21186
|
-
args: [{ selector: 'app-target-group-filter-param', imports: [SmartIconComponent], template: "<div class=\"targetGroupFilterParamContainer\">\n @for (data of data()?.group; track data) {\n <div\n class=\"targetGroupFilterItem\"\n (click)=\"onItemClick(data)\"\n >\n <smart-icon icon=\"
|
|
21219
|
+
args: [{ selector: 'app-target-group-filter-param', imports: [SmartIconComponent], template: "<div class=\"targetGroupFilterParamContainer\">\n @for (data of data()?.group; track data) {\n <div\n class=\"targetGroupFilterItem\"\n (click)=\"onItemClick(data)\"\n >\n <smart-icon icon=\"chevron_right\" color=\"gray\"></smart-icon>\n <div class=\"mat-caption\">\n {{ data.label }}\n </div>\n </div>\n }\n</div>\n", styles: [".targetGroupFilterParamContainer{display:flex;flex-direction:column;gap:.25rem}.targetGroupFilterItem{padding:.75rem;border-radius:.25rem;display:flex;flex-direction:row;gap:.5rem;cursor:pointer}.targetGroupFilterItem .mat-caption{margin:auto 0}\n"] }]
|
|
21187
21220
|
}], ctorParameters: () => [], propDecorators: { data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: true }] }] } });
|
|
21188
21221
|
|
|
21189
21222
|
class SmartFilterParamsComponent {
|
|
@@ -21699,6 +21732,8 @@ var FilterExpressionBuilderApiActions;
|
|
|
21699
21732
|
FilterExpressionBuilderApiActions["SAVE_EXPRESSION_FIELD_LIST"] = "SAVE_EXPRESSION_FIELD_LIST";
|
|
21700
21733
|
})(FilterExpressionBuilderApiActions || (FilterExpressionBuilderApiActions = {}));
|
|
21701
21734
|
|
|
21735
|
+
const USE_ADVANCED_FILTER = new InjectionToken('USE_ADVANCED_FILTER');
|
|
21736
|
+
|
|
21702
21737
|
/**
|
|
21703
21738
|
* Filter API 2
|
|
21704
21739
|
* Filter API 2
|
|
@@ -21726,8 +21761,7 @@ class SmartFilterExpressionItemComponent {
|
|
|
21726
21761
|
this.boolOperatorType = FilterExpressionBoolOperator;
|
|
21727
21762
|
}
|
|
21728
21763
|
ngOnInit() {
|
|
21729
|
-
this.isSelected =
|
|
21730
|
-
JSON.stringify(this.service().model?.selectedField) === JSON.stringify(this.item);
|
|
21764
|
+
this.isSelected = this.service().model?.selectedField?.id === this.item.id;
|
|
21731
21765
|
}
|
|
21732
21766
|
setOperatorTo(event, operationType) {
|
|
21733
21767
|
event?.stopPropagation();
|
|
@@ -21742,12 +21776,12 @@ class SmartFilterExpressionItemComponent {
|
|
|
21742
21776
|
});
|
|
21743
21777
|
}
|
|
21744
21778
|
}
|
|
21745
|
-
select(event, item) {
|
|
21779
|
+
async select(event, item) {
|
|
21746
21780
|
event?.stopPropagation();
|
|
21747
21781
|
const service = this.service();
|
|
21748
21782
|
if (!service.model?.readOnly) {
|
|
21749
21783
|
if (!this.isSelected) {
|
|
21750
|
-
service.peformWidgetAction({
|
|
21784
|
+
await service.peformWidgetAction({
|
|
21751
21785
|
code: 'SELECT_FIELD',
|
|
21752
21786
|
params: {
|
|
21753
21787
|
model: this.item,
|
|
@@ -21755,7 +21789,7 @@ class SmartFilterExpressionItemComponent {
|
|
|
21755
21789
|
});
|
|
21756
21790
|
}
|
|
21757
21791
|
else {
|
|
21758
|
-
service.peformWidgetAction({
|
|
21792
|
+
await service.peformWidgetAction({
|
|
21759
21793
|
code: 'SELECT_FIELD',
|
|
21760
21794
|
params: {
|
|
21761
21795
|
model: this.item,
|
|
@@ -21785,23 +21819,79 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
21785
21819
|
type: Input
|
|
21786
21820
|
}], hasNext: [{ type: i0.Input, args: [{ isSignal: true, alias: "hasNext", required: true }] }], service: [{ type: i0.Input, args: [{ isSignal: true, alias: "service", required: true }] }] } });
|
|
21787
21821
|
|
|
21788
|
-
class
|
|
21789
|
-
|
|
21790
|
-
|
|
21822
|
+
class AdvancedRelationButtonComponent {
|
|
21823
|
+
constructor() {
|
|
21824
|
+
this.boolOperatorChanged = new EventEmitter();
|
|
21825
|
+
this.boolOperatorType = FilterExpressionBoolOperator;
|
|
21791
21826
|
}
|
|
21792
|
-
|
|
21793
|
-
this.
|
|
21827
|
+
toggle(event) {
|
|
21828
|
+
this.boolOperatorChanged.emit(this.boolOperator === FilterExpressionBoolOperator.AND
|
|
21829
|
+
? FilterExpressionBoolOperator.OR
|
|
21830
|
+
: FilterExpressionBoolOperator.AND);
|
|
21794
21831
|
}
|
|
21832
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AdvancedRelationButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
21833
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.8", type: AdvancedRelationButtonComponent, isStandalone: true, selector: "lib-advanced-relation-button", inputs: { boolOperator: "boolOperator" }, outputs: { boolOperatorChanged: "boolOperatorChanged" }, ngImport: i0, template: "<div class=\"relationItemBubble\">\n <button\n mat-button\n (click)=\"toggle($event)\"\n class=\"mat-raised-button\"\n [ngClass]=\"boolOperator === boolOperatorType.AND ? 'and-oeprator' : 'or-operator'\"\n color=\"black\"\n >\n {{ boolOperator === boolOperatorType.AND ? '\u00C9S' : 'VAGY' }}\n </button>\n</div>\n", styles: [".relationItemBubble .mat-mdc-button{border-radius:1.5rem;height:100%;margin:auto 0;padding-top:.75em;padding-bottom:.75em}.relationItemBubble{display:flex;flex-direction:row;border-radius:1.5rem;border:1px solid #cdcdcd;padding:.25rem;max-height:42px;height:100%}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }] }); }
|
|
21834
|
+
}
|
|
21835
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AdvancedRelationButtonComponent, decorators: [{
|
|
21836
|
+
type: Component,
|
|
21837
|
+
args: [{ selector: 'lib-advanced-relation-button', imports: [NgClass, MatButton], template: "<div class=\"relationItemBubble\">\n <button\n mat-button\n (click)=\"toggle($event)\"\n class=\"mat-raised-button\"\n [ngClass]=\"boolOperator === boolOperatorType.AND ? 'and-oeprator' : 'or-operator'\"\n color=\"black\"\n >\n {{ boolOperator === boolOperatorType.AND ? '\u00C9S' : 'VAGY' }}\n </button>\n</div>\n", styles: [".relationItemBubble .mat-mdc-button{border-radius:1.5rem;height:100%;margin:auto 0;padding-top:.75em;padding-bottom:.75em}.relationItemBubble{display:flex;flex-direction:row;border-radius:1.5rem;border:1px solid #cdcdcd;padding:.25rem;max-height:42px;height:100%}\n"] }]
|
|
21838
|
+
}], propDecorators: { boolOperator: [{
|
|
21839
|
+
type: Input
|
|
21840
|
+
}], boolOperatorChanged: [{
|
|
21841
|
+
type: Output
|
|
21842
|
+
}] } });
|
|
21843
|
+
|
|
21844
|
+
class AdvancedSmartFilterExpressionItemComponent extends SmartFilterExpressionItemComponent {
|
|
21845
|
+
async onOperatorChanged(operator) {
|
|
21846
|
+
await this.service().bulkUpdateFilterExpression(operator, this.item);
|
|
21847
|
+
}
|
|
21848
|
+
async select(event, item) {
|
|
21849
|
+
await super.select(event, item);
|
|
21850
|
+
this.service().itemSelected.next(item);
|
|
21851
|
+
}
|
|
21852
|
+
deleteItem($event) {
|
|
21853
|
+
$event.stopPropagation();
|
|
21854
|
+
this.service().peformWidgetAction({
|
|
21855
|
+
code: 'REMOVE_FILTER_EXPRESSION',
|
|
21856
|
+
params: {
|
|
21857
|
+
model: this.item,
|
|
21858
|
+
},
|
|
21859
|
+
});
|
|
21860
|
+
}
|
|
21861
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AdvancedSmartFilterExpressionItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
21862
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.8", type: AdvancedSmartFilterExpressionItemComponent, isStandalone: true, selector: "app-advanced-expression-item", usesInheritance: true, ngImport: i0, template: "<div class=\"expressionItemContainer\">\n <div\n class=\"expressionItemInnerContainer\"\n [ngClass]=\"\n item.expressionData?.currentOperation === 'EXPRESSION'\n ? isSelected\n ? 'selectedExpressionContainer'\n : 'expressionContainer'\n : ''\n \"\n >\n <div\n *ngIf=\"\n item.expressionData?.currentOperation === 'EXPRESSION';\n then expression;\n else simpleItem\n \"\n ></div>\n <ng-template #expression>\n <div class=\"sub-expression-container\" (click)=\"select($event, item)\">\n <div\n class=\"expressionItemBubble expression sub-expression-start\"\n (click)=\"select($event, item)\"\n ></div>\n <div class=\"sub-expression-items\">\n <app-advanced-expression-item\n [item]=\"subItem\"\n [service]=\"service()\"\n [hasNext]=\"i < (item.subFieldList?.filters)!.length - 1\"\n *ngFor=\"let subItem of item.subFieldList?.filters; let i = index\"\n ></app-advanced-expression-item>\n </div>\n <lib-advanced-relation-button\n [boolOperator]=\"item.subFieldList?.defaultOperation\"\n (boolOperatorChanged)=\"onOperatorChanged($event)\"\n ></lib-advanced-relation-button>\n <div class=\"expressionItemBubble expression sub-expression-end\"></div>\n </div>\n </ng-template>\n <ng-template #simpleItem>\n <div>\n <div\n (click)=\"select($event, item)\"\n class=\"expressionItemBubble simpleItem\"\n [ngClass]=\"isSelected ? 'selectedSimpleItem' : ''\"\n >\n <button mat-button class=\"mat-raised-button delete-button\" (click)=\"deleteItem($event)\"\n >x</button\n >\n\n {{ item.label }}:\n <div *ngIf=\"item.expressionData?.currentOperation !== 'BETWEEN'\">\n <div *ngIf=\"item.widgetType === 'DATE'\">\n <b>{{ item.expressionData!.operand2!.valueAsString! | smartDate }}</b>\n </div>\n <div *ngIf=\"item.widgetType === 'DATE_TIME'\">\n <b>{{ item.expressionData!.operand2!.valueAsString! | smartDateTime }}</b>\n </div>\n <div *ngIf=\"item.widgetType !== 'DATE_TIME' && item.widgetType !== 'DATE'\">\n <b>{{ getDisplayValue(item.expressionData!.operand2!.valueAsString!) }}</b>\n </div>\n </div>\n <div *ngIf=\"item.expressionData?.currentOperation === 'IN'\">\n <b *ngFor=\"let value of item.expressionData?.operand2?.selectedValues; let last = last\">\n {{ getDisplayValue(value) }} <b *ngIf=\"!last\">,</b>\n </b>\n </div>\n <div class=\"expressionValues\" *ngIf=\"item.expressionData?.currentOperation === 'BETWEEN'\">\n <div *ngIf=\"item.widgetType === 'DATE'\">\n <b>{{ item.expressionData!.operand2!.valueAsString! | smartDate }}</b>\n </div>\n <div *ngIf=\"item.widgetType === 'DATE_TIME'\">\n <b>{{ item.expressionData!.operand2!.valueAsString! | smartDateTime }}</b>\n </div>\n <div *ngIf=\"item.widgetType !== 'DATE_TIME' && item.widgetType !== 'DATE'\">\n <b>{{ item.expressionData?.operand2?.valueAsString }}</b>\n </div>\n <b>-</b>\n <div *ngIf=\"item.widgetType === 'DATE'\">\n <b>{{ item.expressionData!.operand3!.valueAsString! | smartDate }}</b>\n </div>\n <div *ngIf=\"item.widgetType === 'DATE_TIME'\">\n <b>{{ item.expressionData!.operand3!.valueAsString! | smartDateTime }}</b>\n </div>\n <div *ngIf=\"item.widgetType !== 'DATE_TIME' && item.widgetType !== 'DATE'\">\n <b>{{ item.expressionData?.operand3?.valueAsString }}</b>\n </div>\n </div>\n </div>\n </div>\n </ng-template>\n </div>\n</div>\n", styles: [".expressionItemContainer{display:flex;flex-direction:row;gap:.75rem}.expressionItemInnerContainer{display:flex;flex-direction:row;grid-area:.75rem;padding:.25rem;border-radius:.25rem}.expressionContainer{border:1px dashed var(--primary-lighter-gray-color);cursor:pointer}.selectedExpressionContainer{border:2px dashed var(--primary-color)}.expressionItemBubble,.relationItemBubble{display:flex;flex-direction:row;border-radius:1.5rem}.expressionItemBubble{padding:.75rem}.expression{background-color:var(--inner-container);font-weight:600;margin:auto 0}.simpleItem{background-color:#c6ddff;cursor:pointer}.relationItemBubble{border:1px solid #cdcdcd;padding:.25rem;max-height:42px;margin-top:.25rem}.relationItemBubble .mat-mdc-button{border-radius:1.5rem;height:100%;margin:auto 0}.expressionValues{display:flex;flex-direction:row;gap:.5rem}.sub-expression-container{display:flex;align-items:stretch}.sub-expression-start{padding:5px;height:100%;border-left:2px solid black;border-top:2px solid black;border-bottom:2px solid black;border-radius:0}.sub-expression-end{padding:5px;height:100%;border-right:2px solid black;border-top:2px solid black;border-bottom:2px solid black;border-radius:0}.sub-expression-items{display:flex;flex-wrap:wrap}lib-advanced-relation-button{margin-top:.25rem;margin-bottom:.25rem}.delete-button{min-width:10px;top:-7px;height:20px;padding:5px;border-radius:1.5rem}\n"], dependencies: [{ kind: "component", type: AdvancedSmartFilterExpressionItemComponent, selector: "app-advanced-expression-item" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: AdvancedRelationButtonComponent, selector: "lib-advanced-relation-button", inputs: ["boolOperator"], outputs: ["boolOperatorChanged"] }, { kind: "pipe", type: SmartDatePipe, name: "smartDate" }, { kind: "pipe", type: SmartDateTimePipe, name: "smartDateTime" }] }); }
|
|
21863
|
+
}
|
|
21864
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AdvancedSmartFilterExpressionItemComponent, decorators: [{
|
|
21865
|
+
type: Component,
|
|
21866
|
+
args: [{ selector: 'app-advanced-expression-item', imports: [
|
|
21867
|
+
NgClass,
|
|
21868
|
+
NgIf,
|
|
21869
|
+
NgForOf,
|
|
21870
|
+
MatButton,
|
|
21871
|
+
SmartDatePipe,
|
|
21872
|
+
SmartDateTimePipe,
|
|
21873
|
+
AdvancedRelationButtonComponent,
|
|
21874
|
+
], template: "<div class=\"expressionItemContainer\">\n <div\n class=\"expressionItemInnerContainer\"\n [ngClass]=\"\n item.expressionData?.currentOperation === 'EXPRESSION'\n ? isSelected\n ? 'selectedExpressionContainer'\n : 'expressionContainer'\n : ''\n \"\n >\n <div\n *ngIf=\"\n item.expressionData?.currentOperation === 'EXPRESSION';\n then expression;\n else simpleItem\n \"\n ></div>\n <ng-template #expression>\n <div class=\"sub-expression-container\" (click)=\"select($event, item)\">\n <div\n class=\"expressionItemBubble expression sub-expression-start\"\n (click)=\"select($event, item)\"\n ></div>\n <div class=\"sub-expression-items\">\n <app-advanced-expression-item\n [item]=\"subItem\"\n [service]=\"service()\"\n [hasNext]=\"i < (item.subFieldList?.filters)!.length - 1\"\n *ngFor=\"let subItem of item.subFieldList?.filters; let i = index\"\n ></app-advanced-expression-item>\n </div>\n <lib-advanced-relation-button\n [boolOperator]=\"item.subFieldList?.defaultOperation\"\n (boolOperatorChanged)=\"onOperatorChanged($event)\"\n ></lib-advanced-relation-button>\n <div class=\"expressionItemBubble expression sub-expression-end\"></div>\n </div>\n </ng-template>\n <ng-template #simpleItem>\n <div>\n <div\n (click)=\"select($event, item)\"\n class=\"expressionItemBubble simpleItem\"\n [ngClass]=\"isSelected ? 'selectedSimpleItem' : ''\"\n >\n <button mat-button class=\"mat-raised-button delete-button\" (click)=\"deleteItem($event)\"\n >x</button\n >\n\n {{ item.label }}:\n <div *ngIf=\"item.expressionData?.currentOperation !== 'BETWEEN'\">\n <div *ngIf=\"item.widgetType === 'DATE'\">\n <b>{{ item.expressionData!.operand2!.valueAsString! | smartDate }}</b>\n </div>\n <div *ngIf=\"item.widgetType === 'DATE_TIME'\">\n <b>{{ item.expressionData!.operand2!.valueAsString! | smartDateTime }}</b>\n </div>\n <div *ngIf=\"item.widgetType !== 'DATE_TIME' && item.widgetType !== 'DATE'\">\n <b>{{ getDisplayValue(item.expressionData!.operand2!.valueAsString!) }}</b>\n </div>\n </div>\n <div *ngIf=\"item.expressionData?.currentOperation === 'IN'\">\n <b *ngFor=\"let value of item.expressionData?.operand2?.selectedValues; let last = last\">\n {{ getDisplayValue(value) }} <b *ngIf=\"!last\">,</b>\n </b>\n </div>\n <div class=\"expressionValues\" *ngIf=\"item.expressionData?.currentOperation === 'BETWEEN'\">\n <div *ngIf=\"item.widgetType === 'DATE'\">\n <b>{{ item.expressionData!.operand2!.valueAsString! | smartDate }}</b>\n </div>\n <div *ngIf=\"item.widgetType === 'DATE_TIME'\">\n <b>{{ item.expressionData!.operand2!.valueAsString! | smartDateTime }}</b>\n </div>\n <div *ngIf=\"item.widgetType !== 'DATE_TIME' && item.widgetType !== 'DATE'\">\n <b>{{ item.expressionData?.operand2?.valueAsString }}</b>\n </div>\n <b>-</b>\n <div *ngIf=\"item.widgetType === 'DATE'\">\n <b>{{ item.expressionData!.operand3!.valueAsString! | smartDate }}</b>\n </div>\n <div *ngIf=\"item.widgetType === 'DATE_TIME'\">\n <b>{{ item.expressionData!.operand3!.valueAsString! | smartDateTime }}</b>\n </div>\n <div *ngIf=\"item.widgetType !== 'DATE_TIME' && item.widgetType !== 'DATE'\">\n <b>{{ item.expressionData?.operand3?.valueAsString }}</b>\n </div>\n </div>\n </div>\n </div>\n </ng-template>\n </div>\n</div>\n", styles: [".expressionItemContainer{display:flex;flex-direction:row;gap:.75rem}.expressionItemInnerContainer{display:flex;flex-direction:row;grid-area:.75rem;padding:.25rem;border-radius:.25rem}.expressionContainer{border:1px dashed var(--primary-lighter-gray-color);cursor:pointer}.selectedExpressionContainer{border:2px dashed var(--primary-color)}.expressionItemBubble,.relationItemBubble{display:flex;flex-direction:row;border-radius:1.5rem}.expressionItemBubble{padding:.75rem}.expression{background-color:var(--inner-container);font-weight:600;margin:auto 0}.simpleItem{background-color:#c6ddff;cursor:pointer}.relationItemBubble{border:1px solid #cdcdcd;padding:.25rem;max-height:42px;margin-top:.25rem}.relationItemBubble .mat-mdc-button{border-radius:1.5rem;height:100%;margin:auto 0}.expressionValues{display:flex;flex-direction:row;gap:.5rem}.sub-expression-container{display:flex;align-items:stretch}.sub-expression-start{padding:5px;height:100%;border-left:2px solid black;border-top:2px solid black;border-bottom:2px solid black;border-radius:0}.sub-expression-end{padding:5px;height:100%;border-right:2px solid black;border-top:2px solid black;border-bottom:2px solid black;border-radius:0}.sub-expression-items{display:flex;flex-wrap:wrap}lib-advanced-relation-button{margin-top:.25rem;margin-bottom:.25rem}.delete-button{min-width:10px;top:-7px;height:20px;padding:5px;border-radius:1.5rem}\n"] }]
|
|
21875
|
+
}] });
|
|
21876
|
+
|
|
21877
|
+
class SmartFilterExpressionItemsComponent {
|
|
21795
21878
|
constructor() {
|
|
21796
21879
|
this._destroy$ = new Subject();
|
|
21797
21880
|
this.items = input.required(/* @ts-ignore */
|
|
21798
21881
|
...(ngDevMode ? [{ debugName: "items" }] : /* istanbul ignore next */ []));
|
|
21799
21882
|
this.service = input.required(/* @ts-ignore */
|
|
21800
21883
|
...(ngDevMode ? [{ debugName: "service" }] : /* istanbul ignore next */ []));
|
|
21884
|
+
this.useAdvancedFilter = inject(USE_ADVANCED_FILTER, { optional: true });
|
|
21801
21885
|
/** Written from the editor service's `modelChanged`, never from a template event. */
|
|
21802
21886
|
this.isSelectedState = signal(false, /* @ts-ignore */
|
|
21803
21887
|
...(ngDevMode ? [{ debugName: "isSelectedState" }] : /* istanbul ignore next */ []));
|
|
21804
21888
|
}
|
|
21889
|
+
get isSelected() {
|
|
21890
|
+
return this.isSelectedState();
|
|
21891
|
+
}
|
|
21892
|
+
set isSelected(isSelected) {
|
|
21893
|
+
this.isSelectedState.set(isSelected);
|
|
21894
|
+
}
|
|
21805
21895
|
ngOnInit() {
|
|
21806
21896
|
this.service().modelChanged.subscribe(() => {
|
|
21807
21897
|
const service = this.service();
|
|
@@ -21820,13 +21910,83 @@ class SmartFilterExpressionItemsComponent {
|
|
|
21820
21910
|
drop(event) {
|
|
21821
21911
|
moveItemInArray(this.items(), event.previousIndex, event.currentIndex);
|
|
21822
21912
|
}
|
|
21913
|
+
async onOperatorChanged($event) {
|
|
21914
|
+
await this.service().bulkUpdateFilterExpression($event);
|
|
21915
|
+
}
|
|
21823
21916
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SmartFilterExpressionItemsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
21824
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: SmartFilterExpressionItemsComponent, isStandalone: true, selector: "app-expression-items", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: true, transformFunction: null }, service: { classPropertyName: "service", publicName: "service", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<div\n
|
|
21917
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: SmartFilterExpressionItemsComponent, isStandalone: true, selector: "app-expression-items", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: true, transformFunction: null }, service: { classPropertyName: "service", publicName: "service", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "@if (useAdvancedFilter) {\n <div class=\"advanced-expression-builder-container\">\n <div\n cdkDropList\n cdkDropListOrientation=\"horizontal\"\n (cdkDropListDropped)=\"drop($event)\"\n class=\"expressionsContainer example-list\"\n [ngClass]=\"isSelected ? 'selected' : ''\"\n >\n @for (item of items(); track item; let i = $index) {\n <div\n cdkDrag\n class=\"expressionItem\"\n [ngClass]=\"item.expressionData?.currentOperation == 'EXPRESSION' ? 'non-flex' : ''\"\n >\n <app-advanced-expression-item\n [item]=\"item\"\n [hasNext]=\"i < items().length - 1\"\n [service]=\"service()\"\n ></app-advanced-expression-item>\n </div>\n }\n </div>\n\n <div class=\"relationItemBubble\">\n <lib-advanced-relation-button\n [boolOperator]=\"service().model?.model?.workplaceList?.defaultOperation\"\n (boolOperatorChanged)=\"onOperatorChanged($event)\"\n ></lib-advanced-relation-button>\n </div>\n </div>\n} @else {\n <div\n cdkDropList\n cdkDropListOrientation=\"horizontal\"\n (cdkDropListDropped)=\"drop($event)\"\n class=\"expressionsContainer example-list\"\n [ngClass]=\"isSelected ? 'selected' : ''\"\n >\n @for (item of items(); track item; let i = $index) {\n <div cdkDrag class=\"expressionItem\">\n <app-expression-item\n [item]=\"item\"\n [hasNext]=\"i < items().length - 1\"\n [service]=\"service()\"\n ></app-expression-item>\n </div>\n }\n </div>\n}\n", styles: [".expressionsContainer{display:flex;flex-direction:row;flex-wrap:wrap;gap:.75rem;border:1px dashed var(--primary-lighter-gray-color);padding:.25rem;border-radius:.25rem}.selected{border:2px dashed var(--primary-darker-color)}.expressionItem{margin:auto 0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.example-box:last-child{border:none}.example-list.cdk-drop-list-dragging .example-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.example-custom-placeholder{background:#ccc;border:dotted 3px #999;min-height:60px;transition:transform .25s cubic-bezier(0,0,.2,1)}.non-flex{flex:0 0 100%}lib-advanced-relation-button{margin-top:.25rem;margin-bottom:.25rem}:host{display:flex}.advanced-expression-builder-container{display:inline-flex}.relationItemBubble{padding:.5rem}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: SmartFilterExpressionItemComponent, selector: "app-expression-item", inputs: ["item", "hasNext", "service"] }, { kind: "component", type: AdvancedSmartFilterExpressionItemComponent, selector: "app-advanced-expression-item" }, { kind: "component", type: AdvancedRelationButtonComponent, selector: "lib-advanced-relation-button", inputs: ["boolOperator"], outputs: ["boolOperatorChanged"] }] }); }
|
|
21825
21918
|
}
|
|
21826
21919
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SmartFilterExpressionItemsComponent, decorators: [{
|
|
21827
21920
|
type: Component,
|
|
21828
|
-
args: [{ selector: 'app-expression-items', imports: [
|
|
21829
|
-
|
|
21921
|
+
args: [{ selector: 'app-expression-items', imports: [
|
|
21922
|
+
NgClass,
|
|
21923
|
+
SmartFilterExpressionItemComponent,
|
|
21924
|
+
AdvancedSmartFilterExpressionItemComponent,
|
|
21925
|
+
AdvancedRelationButtonComponent,
|
|
21926
|
+
], template: "@if (useAdvancedFilter) {\n <div class=\"advanced-expression-builder-container\">\n <div\n cdkDropList\n cdkDropListOrientation=\"horizontal\"\n (cdkDropListDropped)=\"drop($event)\"\n class=\"expressionsContainer example-list\"\n [ngClass]=\"isSelected ? 'selected' : ''\"\n >\n @for (item of items(); track item; let i = $index) {\n <div\n cdkDrag\n class=\"expressionItem\"\n [ngClass]=\"item.expressionData?.currentOperation == 'EXPRESSION' ? 'non-flex' : ''\"\n >\n <app-advanced-expression-item\n [item]=\"item\"\n [hasNext]=\"i < items().length - 1\"\n [service]=\"service()\"\n ></app-advanced-expression-item>\n </div>\n }\n </div>\n\n <div class=\"relationItemBubble\">\n <lib-advanced-relation-button\n [boolOperator]=\"service().model?.model?.workplaceList?.defaultOperation\"\n (boolOperatorChanged)=\"onOperatorChanged($event)\"\n ></lib-advanced-relation-button>\n </div>\n </div>\n} @else {\n <div\n cdkDropList\n cdkDropListOrientation=\"horizontal\"\n (cdkDropListDropped)=\"drop($event)\"\n class=\"expressionsContainer example-list\"\n [ngClass]=\"isSelected ? 'selected' : ''\"\n >\n @for (item of items(); track item; let i = $index) {\n <div cdkDrag class=\"expressionItem\">\n <app-expression-item\n [item]=\"item\"\n [hasNext]=\"i < items().length - 1\"\n [service]=\"service()\"\n ></app-expression-item>\n </div>\n }\n </div>\n}\n", styles: [".expressionsContainer{display:flex;flex-direction:row;flex-wrap:wrap;gap:.75rem;border:1px dashed var(--primary-lighter-gray-color);padding:.25rem;border-radius:.25rem}.selected{border:2px dashed var(--primary-darker-color)}.expressionItem{margin:auto 0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.example-box:last-child{border:none}.example-list.cdk-drop-list-dragging .example-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.example-custom-placeholder{background:#ccc;border:dotted 3px #999;min-height:60px;transition:transform .25s cubic-bezier(0,0,.2,1)}.non-flex{flex:0 0 100%}lib-advanced-relation-button{margin-top:.25rem;margin-bottom:.25rem}:host{display:flex}.advanced-expression-builder-container{display:inline-flex}.relationItemBubble{padding:.5rem}\n"] }]
|
|
21927
|
+
}], propDecorators: { items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: true }] }], service: [{ type: i0.Input, args: [{ isSignal: true, alias: "service", required: true }] }] } });
|
|
21928
|
+
|
|
21929
|
+
class ExpressionEditorDialogComponent {
|
|
21930
|
+
constructor() {
|
|
21931
|
+
this.service = inject(ExpressionEditorDialogService);
|
|
21932
|
+
this.smartForm = this.service.form;
|
|
21933
|
+
}
|
|
21934
|
+
cancel() {
|
|
21935
|
+
this.service.closeDialog(false);
|
|
21936
|
+
}
|
|
21937
|
+
save() {
|
|
21938
|
+
let submittedForm = this.formComponent.submitForm();
|
|
21939
|
+
this.service.onSave(submittedForm.componentModel.data);
|
|
21940
|
+
}
|
|
21941
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ExpressionEditorDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
21942
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.8", type: ExpressionEditorDialogComponent, isStandalone: true, selector: "lib-expression-editor-dialog", viewQueries: [{ propertyName: "formComponent", first: true, predicate: ["form"], descendants: true, read: SmartformComponent }], ngImport: i0, template: "<smartform #form [smartForm]=\"smartForm\"></smartform>\n<div class=\"button-container\">\n <button (click)=\"save()\" mat-raised-button color=\"primary\">Ment\u00E9s</button>\n <button (click)=\"cancel()\" mat-raised-button color=\"secondary\">M\u00E9gsem</button>\n</div>\n", styles: [".button-container{display:flex;justify-content:flex-end;gap:1rem}:host{display:flex;flex-direction:column;padding:1rem}:host::ng-deep h4{margin:0}:host::ng-deep .mat-mdc-form-field-infix:has(input){padding:0}\n"], dependencies: [{ kind: "component", type: SmartformComponent, selector: "smartform", inputs: ["smartForm"] }, { kind: "component", type: MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }] }); }
|
|
21943
|
+
}
|
|
21944
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ExpressionEditorDialogComponent, decorators: [{
|
|
21945
|
+
type: Component,
|
|
21946
|
+
args: [{ selector: 'lib-expression-editor-dialog', imports: [SmartformComponent, MatButton], template: "<smartform #form [smartForm]=\"smartForm\"></smartform>\n<div class=\"button-container\">\n <button (click)=\"save()\" mat-raised-button color=\"primary\">Ment\u00E9s</button>\n <button (click)=\"cancel()\" mat-raised-button color=\"secondary\">M\u00E9gsem</button>\n</div>\n", styles: [".button-container{display:flex;justify-content:flex-end;gap:1rem}:host{display:flex;flex-direction:column;padding:1rem}:host::ng-deep h4{margin:0}:host::ng-deep .mat-mdc-form-field-infix:has(input){padding:0}\n"] }]
|
|
21947
|
+
}], ctorParameters: () => [], propDecorators: { formComponent: [{
|
|
21948
|
+
type: ViewChild,
|
|
21949
|
+
args: ['form', { read: SmartformComponent }]
|
|
21950
|
+
}] } });
|
|
21951
|
+
|
|
21952
|
+
class ExpressionEditorDialogService extends SmartdialogService {
|
|
21953
|
+
constructor() {
|
|
21954
|
+
const dialog = inject(MatDialog);
|
|
21955
|
+
const inject$1 = inject(Injector);
|
|
21956
|
+
super(dialog, inject$1);
|
|
21957
|
+
this._destroy$ = new Subject();
|
|
21958
|
+
this.saveEvent = new Subject();
|
|
21959
|
+
}
|
|
21960
|
+
setDataAndOpenDialog(form) {
|
|
21961
|
+
this.form = form;
|
|
21962
|
+
console.log(this.form);
|
|
21963
|
+
this.openDialog();
|
|
21964
|
+
}
|
|
21965
|
+
openDialog() {
|
|
21966
|
+
const dialogData = {
|
|
21967
|
+
content: {
|
|
21968
|
+
title: '',
|
|
21969
|
+
},
|
|
21970
|
+
size: {},
|
|
21971
|
+
customComponent: ExpressionEditorDialogComponent,
|
|
21972
|
+
};
|
|
21973
|
+
this.createDialog(dialogData, ExpressionEditorDialogComponent);
|
|
21974
|
+
}
|
|
21975
|
+
onSave(data) {
|
|
21976
|
+
this.saveEvent.next(data);
|
|
21977
|
+
// this.onAction.complete();
|
|
21978
|
+
this.closeDialog();
|
|
21979
|
+
// this.onAction = new SmartSubject(this._destroy$);
|
|
21980
|
+
}
|
|
21981
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ExpressionEditorDialogService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
21982
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ExpressionEditorDialogService, providedIn: 'root' }); }
|
|
21983
|
+
}
|
|
21984
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ExpressionEditorDialogService, decorators: [{
|
|
21985
|
+
type: Injectable,
|
|
21986
|
+
args: [{
|
|
21987
|
+
providedIn: 'root',
|
|
21988
|
+
}]
|
|
21989
|
+
}], ctorParameters: () => [] });
|
|
21830
21990
|
|
|
21831
21991
|
class SmartFilterEditorContentComponent {
|
|
21832
21992
|
get uiActionModels() {
|
|
@@ -21853,6 +22013,8 @@ class SmartFilterEditorContentComponent {
|
|
|
21853
22013
|
this.type = FilterExpressionBuilderUiModelTypeEnum;
|
|
21854
22014
|
/** The screen component this filter belongs to; the source of its uuid. (ADR-0005) */
|
|
21855
22015
|
this.smartComponent = injectSmartComponent();
|
|
22016
|
+
this.expressionEditorDialogService = inject(ExpressionEditorDialogService);
|
|
22017
|
+
this.useAdvancedFilter = inject(USE_ADVANCED_FILTER, { optional: true });
|
|
21856
22018
|
registerSmartWidget(this.smartComponent, {
|
|
21857
22019
|
identifier: () => this.service?.config?.identifier,
|
|
21858
22020
|
reload: () => this.service.load(),
|
|
@@ -21896,6 +22058,19 @@ class SmartFilterEditorContentComponent {
|
|
|
21896
22058
|
}
|
|
21897
22059
|
this.service.modelChanged.pipe(takeUntil(this._destroy$)).subscribe(() => this.setUp());
|
|
21898
22060
|
this.service.load();
|
|
22061
|
+
if (this.useAdvancedFilter) {
|
|
22062
|
+
this.service.itemSelected.pipe(takeUntil(this._destroy$)).subscribe((item) => {
|
|
22063
|
+
if (item.expressionData?.currentOperation !== 'EXPRESSION') {
|
|
22064
|
+
this.expressionEditorDialogService.setDataAndOpenDialog(this.createFilterEditorForm());
|
|
22065
|
+
}
|
|
22066
|
+
});
|
|
22067
|
+
this.expressionEditorDialogService.saveEvent
|
|
22068
|
+
.pipe(takeUntil(this._destroy$))
|
|
22069
|
+
.subscribe((data) => {
|
|
22070
|
+
this.service.model.selectedField = data;
|
|
22071
|
+
this.updateFilterExpression();
|
|
22072
|
+
});
|
|
22073
|
+
}
|
|
21899
22074
|
}
|
|
21900
22075
|
ngOnDestroy() {
|
|
21901
22076
|
this._destroy$.next();
|
|
@@ -21941,8 +22116,8 @@ class SmartFilterEditorContentComponent {
|
|
|
21941
22116
|
let smartForm = {
|
|
21942
22117
|
direction: SmartFormWidgetDirection.ROW,
|
|
21943
22118
|
componentModel: { data: model },
|
|
21944
|
-
useOnValueChangeEvent:
|
|
21945
|
-
useOnBlurEvent:
|
|
22119
|
+
useOnValueChangeEvent: !this.useAdvancedFilter,
|
|
22120
|
+
useOnBlurEvent: !this.useAdvancedFilter,
|
|
21946
22121
|
widgets,
|
|
21947
22122
|
};
|
|
21948
22123
|
if (this.simpleFilterRef?.instance) {
|
|
@@ -22018,26 +22193,32 @@ class SmartFilterEditorContentComponent {
|
|
|
22018
22193
|
}
|
|
22019
22194
|
}
|
|
22020
22195
|
constructForm() {
|
|
22196
|
+
this.smartForm = this.createFilterEditorForm();
|
|
22021
22197
|
this.vcRef?.clear();
|
|
22022
22198
|
this.formCompRef?.destroy();
|
|
22023
22199
|
if (!this.vcRef) {
|
|
22024
22200
|
return;
|
|
22025
22201
|
}
|
|
22202
|
+
this.formCompRef = this.cfService.createComponent(this.vcRef, SmartformComponent, new Map([['smartForm', this.smartForm]]));
|
|
22203
|
+
this.subscribeEditorFormChildrenEvents();
|
|
22204
|
+
}
|
|
22205
|
+
createFilterEditorForm() {
|
|
22026
22206
|
let generatedWidgets = this.layoutService.render({
|
|
22027
22207
|
layoutDefinitions: this.service.model?.selectedFieldEditor?.layoutDef?.widgets,
|
|
22028
22208
|
});
|
|
22029
|
-
|
|
22209
|
+
return {
|
|
22030
22210
|
direction: SmartFormWidgetDirection.ROW,
|
|
22031
22211
|
useOnBlurEvent: true,
|
|
22032
22212
|
useOnValueChangeEvent: true,
|
|
22033
22213
|
componentModel: { data: this.service.model?.selectedField },
|
|
22034
22214
|
widgets: generatedWidgets,
|
|
22035
22215
|
};
|
|
22036
|
-
this.formCompRef = this.cfService.createComponent(this.vcRef, SmartformComponent, new Map([['smartForm', this.smartForm]]));
|
|
22037
|
-
this.subscribeEditorFormChildrenEvents();
|
|
22038
22216
|
}
|
|
22039
22217
|
save() {
|
|
22040
22218
|
this.formCompRef?.instance?.submitForm(false);
|
|
22219
|
+
this.updateFilterExpression();
|
|
22220
|
+
}
|
|
22221
|
+
updateFilterExpression() {
|
|
22041
22222
|
this.service.peformWidgetAction({
|
|
22042
22223
|
code: 'UPDATE_FILTER_EXPRESSION',
|
|
22043
22224
|
params: {
|
|
@@ -22093,12 +22274,19 @@ class SmartFilterEditorContentComponent {
|
|
|
22093
22274
|
};
|
|
22094
22275
|
return widget;
|
|
22095
22276
|
}
|
|
22277
|
+
async unSelectItems(event) {
|
|
22278
|
+
event.stopPropagation();
|
|
22279
|
+
await this.service.peformWidgetAction({
|
|
22280
|
+
code: 'SELECT_FIELD',
|
|
22281
|
+
params: {},
|
|
22282
|
+
});
|
|
22283
|
+
}
|
|
22096
22284
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SmartFilterEditorContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
22097
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: SmartFilterEditorContentComponent, isStandalone: true, selector: "smart-filter-expression-editor", inputs: { service: "service" }, viewQueries: [{ propertyName: "vcRef", first: true, predicate: ["form"], descendants: true, read: ViewContainerRef }, { propertyName: "simpleFilterVcRef", first: true, predicate: ["simpleFilterFromChild"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<div class=\"smart-filter-editor-container\" *ngIf=\"service.model\">\n @if (service.model.model?.label) {\n <h3 class=\"smart-filter-editor-title\">{{ service.model.model?.label }}</h3>\n }\n\n <div *ngIf=\"service.model
|
|
22285
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: SmartFilterEditorContentComponent, isStandalone: true, selector: "smart-filter-expression-editor", inputs: { service: "service" }, viewQueries: [{ propertyName: "vcRef", first: true, predicate: ["form"], descendants: true, read: ViewContainerRef }, { propertyName: "simpleFilterVcRef", first: true, predicate: ["simpleFilterFromChild"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<div class=\"smart-filter-editor-container\" *ngIf=\"service.model\">\n @if (service.model.model?.label) {\n <h3 class=\"smart-filter-editor-title\">{{ service.model.model?.label }}</h3>\n }\n\n <div *ngIf=\"service.model.type === type.SIMPLE; then simpleFilter; else complexFilter\"></div>\n\n <ng-template #simpleFilter>\n <div class=\"smart-filter-editor-expressionsContainer\">\n <ng-template #simpleFilterFromChild></ng-template>\n <!-- #simpleFilterFromChild [smartForm]=\"simpleFilterForm\"></smartform> -->\n </div>\n </ng-template>\n <ng-template #complexFilter>\n <div class=\"smart-filter-editor-uiActionsBar\" *ngIf=\"!service.model?.readOnly\">\n <smart-ui-action-toolbar\n [uiActionModels]=\"uiActionModels\"\n [executor]=\"service\"\n ></smart-ui-action-toolbar>\n </div>\n <div\n *ngIf=\"\n service.model?.model?.workplaceList?.filters?.length;\n then withParameters;\n else withoutParameters\n \"\n ></div>\n <ng-template #withoutParameters>\n <div class=\"smart-filter-editor-withoutParametersContainer\">\n <span class=\"mat-body\"> M\u00E9g nincs megadva param\u00E9ter </span>\n </div>\n </ng-template>\n <ng-template #withParameters>\n <div class=\"smart-filter-editor-withParametersContainer\">\n <div\n class=\"smart-filter-editor-expressionsContainer\"\n *ngIf=\"service.model?.model?.workplaceList?.filters?.length\"\n (click)=\"unSelectItems($event)\"\n >\n <app-expression-items\n [items]=\"(service.model?.model?.workplaceList)!.filters\"\n [service]=\"service\"\n ></app-expression-items>\n </div>\n <div\n *ngIf=\"\n !useAdvancedFilter ||\n service.model?.selectedField?.expressionData?.currentOperation === 'EXPRESSION'\n \"\n class=\"smart-filter-editor-expressionEditorContainer\"\n >\n <!-- <smartform #form [smartForm]=\"smartForm\"></smartform> -->\n <ng-template #form></ng-template>\n <div *ngIf=\"smartForm\">\n <button (click)=\"remove()\" mat-raised-button color=\"primary\">T\u00F6rl\u00E9s</button>\n </div>\n </div>\n </div>\n </ng-template>\n </ng-template>\n</div>\n", styles: [".smart-filter-editor-container{display:flex;flex-direction:column;overflow:auto;position:relative}.targetGroupContentContainer h3{margin:0;font-weight:600}.smart-filter-editor-uiActionsBar{padding:1.5rem;border-radius:.25rem;background-color:var(--container-color);display:flex;flex-direction:row;gap:1rem}.smart-filter-editor-withoutParametersContainer{display:flex;flex-direction:column;background-color:var(--container-color)}.withoutParametersContainer .mat-body{font-weight:600;text-align:center}.smart-filter-editor-withParametersContainer{display:flex;flex-direction:column;background-color:var(--container-color)}.smart-filter-editor-expressionEditorContainer{display:flex;flex-direction:column;gap:.75rem}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: UiActionToolbarComponent, selector: "smart-ui-action-toolbar", inputs: ["uiActionModels", "uiActionDescriptorService", "id", "executor", "widgetId", "nodeId", "actionParams", "scrollOnWrap", "toolbarPropertes"] }, { kind: "component", type: SmartFilterExpressionItemsComponent, selector: "app-expression-items", inputs: ["items", "service"] }, { kind: "component", type: MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }] }); }
|
|
22098
22286
|
}
|
|
22099
22287
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SmartFilterEditorContentComponent, decorators: [{
|
|
22100
22288
|
type: Component,
|
|
22101
|
-
args: [{ selector: 'smart-filter-expression-editor', imports: [NgIf, UiActionToolbarComponent, SmartFilterExpressionItemsComponent, MatButton], template: "<div class=\"smart-filter-editor-container\" *ngIf=\"service.model\">\n @if (service.model.model?.label) {\n <h3 class=\"smart-filter-editor-title\">{{ service.model.model?.label }}</h3>\n }\n\n <div *ngIf=\"service.model
|
|
22289
|
+
args: [{ selector: 'smart-filter-expression-editor', imports: [NgIf, UiActionToolbarComponent, SmartFilterExpressionItemsComponent, MatButton], template: "<div class=\"smart-filter-editor-container\" *ngIf=\"service.model\">\n @if (service.model.model?.label) {\n <h3 class=\"smart-filter-editor-title\">{{ service.model.model?.label }}</h3>\n }\n\n <div *ngIf=\"service.model.type === type.SIMPLE; then simpleFilter; else complexFilter\"></div>\n\n <ng-template #simpleFilter>\n <div class=\"smart-filter-editor-expressionsContainer\">\n <ng-template #simpleFilterFromChild></ng-template>\n <!-- #simpleFilterFromChild [smartForm]=\"simpleFilterForm\"></smartform> -->\n </div>\n </ng-template>\n <ng-template #complexFilter>\n <div class=\"smart-filter-editor-uiActionsBar\" *ngIf=\"!service.model?.readOnly\">\n <smart-ui-action-toolbar\n [uiActionModels]=\"uiActionModels\"\n [executor]=\"service\"\n ></smart-ui-action-toolbar>\n </div>\n <div\n *ngIf=\"\n service.model?.model?.workplaceList?.filters?.length;\n then withParameters;\n else withoutParameters\n \"\n ></div>\n <ng-template #withoutParameters>\n <div class=\"smart-filter-editor-withoutParametersContainer\">\n <span class=\"mat-body\"> M\u00E9g nincs megadva param\u00E9ter </span>\n </div>\n </ng-template>\n <ng-template #withParameters>\n <div class=\"smart-filter-editor-withParametersContainer\">\n <div\n class=\"smart-filter-editor-expressionsContainer\"\n *ngIf=\"service.model?.model?.workplaceList?.filters?.length\"\n (click)=\"unSelectItems($event)\"\n >\n <app-expression-items\n [items]=\"(service.model?.model?.workplaceList)!.filters\"\n [service]=\"service\"\n ></app-expression-items>\n </div>\n <div\n *ngIf=\"\n !useAdvancedFilter ||\n service.model?.selectedField?.expressionData?.currentOperation === 'EXPRESSION'\n \"\n class=\"smart-filter-editor-expressionEditorContainer\"\n >\n <!-- <smartform #form [smartForm]=\"smartForm\"></smartform> -->\n <ng-template #form></ng-template>\n <div *ngIf=\"smartForm\">\n <button (click)=\"remove()\" mat-raised-button color=\"primary\">T\u00F6rl\u00E9s</button>\n </div>\n </div>\n </div>\n </ng-template>\n </ng-template>\n</div>\n", styles: [".smart-filter-editor-container{display:flex;flex-direction:column;overflow:auto;position:relative}.targetGroupContentContainer h3{margin:0;font-weight:600}.smart-filter-editor-uiActionsBar{padding:1.5rem;border-radius:.25rem;background-color:var(--container-color);display:flex;flex-direction:row;gap:1rem}.smart-filter-editor-withoutParametersContainer{display:flex;flex-direction:column;background-color:var(--container-color)}.withoutParametersContainer .mat-body{font-weight:600;text-align:center}.smart-filter-editor-withParametersContainer{display:flex;flex-direction:column;background-color:var(--container-color)}.smart-filter-editor-expressionEditorContainer{display:flex;flex-direction:column;gap:.75rem}\n"] }]
|
|
22102
22290
|
}], ctorParameters: () => [], propDecorators: { service: [{
|
|
22103
22291
|
type: Input
|
|
22104
22292
|
}], vcRef: [{
|
|
@@ -23129,5 +23317,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
23129
23317
|
* Generated bundle index. Do not edit.
|
|
23130
23318
|
*/
|
|
23131
23319
|
|
|
23132
|
-
export { ACLEntry, APIS$5 as APIS, AclEditingViewComponent, ApiQueueService, BASE_PATH$7 as BASE_PATH, COLLECTION_FORMATS$7 as COLLECTION_FORMATS, CUSTOM_DIAGRAM_OPTIONS, CloseResult, ComponentFactoryService, ComponentType, ComponentWidgetType, Configuration$7 as Configuration, DIALOG_DISABLE_CLOSE, DataChangeKind, DefaultChartOptionsProvider, DefaultUiActionCode_CLOSE, DrawTime, EMPTY_PARAMS, ExpandableSectionButtonIconPosition, ExpandableSectionButtonType, ExpandableSectionComponent, FilterExpressionBoolOperator$1 as FilterExpressionBoolOperator, FilterExpressionBuilderGroupBuilderGroupKindEnum, FilterExpressionBuilderUiModelTypeEnum, FilterExpressionDataType, FilterExpressionFieldWidgetType, FilterExpressionOperation, FilterExpressionOrderByOrderEnum, GenericPageComponent, GeoMapDataLoadingMode, GeoMapDataSourceType, GeoMapItemKind, GeoMapOperationMode, GeoMapSelectionMode, GeoMapTextType, GridColumnContentType, GridDataAccessConfigKindEnum, GridSelectionMode, GridSelectionType, GridUiActionType, GridViewDescriptorKindEnum, HighlightPipe, IS_ASYNC_PARAM_NAME, IconPosition, ImageResourceKindEnum, InvalidSmartlinkComponent, LayoutDirection, LinkTargetEnum, MAP_ENGINE, MapEngine, MenuOpenDirection, MenuTriggerType, MessageOptionType, MessageTextType, MessageType, NAMED_VALIDATOR, NamedValidatorOperationEnum, NamedValidatorService, NoPermissionPageComponent, REUSE_ROUTER_SLOT_COMPONENT, ROOT_CONTAINER_UUID, ROUTER_SLOT_ID, RecordingUploaderPropertiesOpenDirectionEnum, SMART_DATE_FORMATS, SMART_DEFAULT_VIEW_COMPONENTS, SMART_NG_CLIENT_CONFIG, SearchPageComponent, SelectionDefinitionTypeEnum, SelectionDefinitionValueSetValueTypeEnum, ServerRequestType, SessionAPIS, SessionErrorBehaviour, SessionService, SmartActionHost, SmartActionType, SmartBackendBootstrapService, SmartComponent, SmartComponentApiClient, SmartComponentDetachedDirective, SmartComponentHost, SmartComponentLayoutComponent, SmartDateFnsAdapter, SmartDatePipe, SmartDateTimePipe, SmartDefaultErrorUiService, SmartDiagramComponent, SmartDialog, SmartEmbeddedSlotDirective, SmartExpandableSectionService, SmartFileEditorComponent, SmartFilterComponent, SmartFilterEditorContentComponent, SmartFilterEditorService, SmartFilterExpressionFieldComponent, SmartFilterPosition, SmartFilterType, SmartFormInputMode, SmartFormTextFieldButtonIconPosition, SmartFormWidgetDirection, SmartFormWidgetType, SmartFormWidgetWidth, SmartGridButtonType, SmartGridComponent, SmartGridDataLayout, SmartGridService, SmartGridType, SmartIconComponent, SmartIconService, SmartLayoutDef, SmartLinkChannelVariableInPath, SmartLinkMigrationStatusStatusEnum, SmartLinkUuidVariableInPath, SmartMapComponent, SmartMultiFileEditorComponent, SmartNavbarComponent, SmartNavbarService, SmartNavigationService, SmartNgClientFeatureKind, SmartService, SmartSessionService, SmartSessionTimerComponent, SmartTable, SmartTableButtonType, SmartTableHeaderPropertyType, SmartTableInterfaceTypeEnum, SmartTableOptionButtonDirection, SmartTableOrder, SmartTableType, SmartTimePipe, SmartTooltipDirective, SmartTreeComponent, SmartTreeNodeButtonType, SmartUserSettinsIconPosition, SmartValidatorName, SmartViewContextService, SmartViewRedirect, SmartVoiceRecorderComponent, SmartWidgetHintPosition, SmartWidgetHintPositionEnum, SmartdialogService, SmartfileuploaderComponent, SmartformComponent, SmartformLayoutDefinitionService, SmarttreeGenericService, SmarttreeService, SubjectSelectorComponent, ThemeService, ToggleLabelPosition, ToolbarAlignment, ToolbarDirection, TreeArrowPosition, UiActionButtonComponent, UiActionButtonType, UiActionConfirmDialogService, UiActionDescriptorService, UiActionDialogButtonComponent, UiActionDialogType, UiActionFeedbackType, UiActionInputDialogService, UiActionInputType, UiActionService, UiActionToolbarComponent, UiActionTooltipTooltipPositionEnum, UiBadgeComponent, UiBadgeDirective, UploadWidgetType, ValidationResultPageComponent, ValueChangeMode, ViewContextRebuiltError, ViewEventHandlerViewEventTypeEnum, ViewService, ViewState, ViewType, barChart, bubbleChart, createBasicOptions, doughnutChart, horizontalBarChart, horizontalStackedBarChart, injectSmartComponent, multiAxisLineChart, pieChart, polarAreaChart, provideSmartNgClient, radarChart, registerSmartWidget, resolveDateLocale, resolveSlot, resolveSmartNgClientConfig, resolveViewHandler, scatterChart, stackedBarChart, transformDataToBarLikeDataSet, transformDataToBasicDataSets, transformDataToBubble, transformDataToScatter, withSmartDiagram, withSmartMap };
|
|
23320
|
+
export { ACLEntry, APIS$5 as APIS, AclEditingViewComponent, ApiQueueService, BASE_PATH$7 as BASE_PATH, COLLECTION_FORMATS$7 as COLLECTION_FORMATS, CUSTOM_DIAGRAM_OPTIONS, CloseResult, ComponentFactoryService, ComponentType, ComponentWidgetType, Configuration$7 as Configuration, DIALOG_DISABLE_CLOSE, DataChangeKind, DefaultChartOptionsProvider, DefaultUiActionCode_CLOSE, DrawTime, EMPTY_PARAMS, ExpandableSectionButtonIconPosition, ExpandableSectionButtonType, ExpandableSectionComponent, FilterExpressionBoolOperator$1 as FilterExpressionBoolOperator, FilterExpressionBuilderGroupBuilderGroupKindEnum, FilterExpressionBuilderUiModelTypeEnum, FilterExpressionDataType, FilterExpressionFieldWidgetType, FilterExpressionOperation, FilterExpressionOrderByOrderEnum, GenericPageComponent, GeoMapDataLoadingMode, GeoMapDataSourceType, GeoMapItemKind, GeoMapOperationMode, GeoMapSelectionMode, GeoMapTextType, GridColumnContentType, GridDataAccessConfigKindEnum, GridSelectionMode, GridSelectionType, GridUiActionType, GridViewDescriptorKindEnum, HighlightPipe, IS_ASYNC_PARAM_NAME, IconPosition, ImageResourceKindEnum, InvalidSmartlinkComponent, LayoutDirection, LinkTargetEnum, MAP_ENGINE, MapEngine, MenuOpenDirection, MenuTriggerType, MessageOptionType, MessageTextType, MessageType, NAMED_VALIDATOR, NamedValidatorOperationEnum, NamedValidatorService, NoPermissionPageComponent, REUSE_ROUTER_SLOT_COMPONENT, ROOT_CONTAINER_UUID, ROUTER_SLOT_ID, RecordingUploaderPropertiesOpenDirectionEnum, SMART_DATE_FORMATS, SMART_DEFAULT_VIEW_COMPONENTS, SMART_NG_CLIENT_CONFIG, SearchPageComponent, SelectionDefinitionTypeEnum, SelectionDefinitionValueSetValueTypeEnum, ServerRequestType, SessionAPIS, SessionErrorBehaviour, SessionService, SmartActionHost, SmartActionType, SmartBackendBootstrapService, SmartComponent, SmartComponentApiClient, SmartComponentDetachedDirective, SmartComponentHost, SmartComponentLayoutComponent, SmartDateFnsAdapter, SmartDatePipe, SmartDateTimePipe, SmartDefaultErrorUiService, SmartDiagramComponent, SmartDialog, SmartEmbeddedSlotDirective, SmartExpandableSectionService, SmartFileEditorComponent, SmartFilterComponent, SmartFilterEditorContentComponent, SmartFilterEditorService, SmartFilterExpressionFieldComponent, SmartFilterPosition, SmartFilterType, SmartFormInputMode, SmartFormTextFieldButtonIconPosition, SmartFormWidgetDirection, SmartFormWidgetType, SmartFormWidgetWidth, SmartGridButtonType, SmartGridComponent, SmartGridDataLayout, SmartGridService, SmartGridType, SmartIconComponent, SmartIconService, SmartLayoutDef, SmartLinkChannelVariableInPath, SmartLinkMigrationStatusStatusEnum, SmartLinkUuidVariableInPath, SmartMapComponent, SmartMultiFileEditorComponent, SmartNavbarComponent, SmartNavbarService, SmartNavigationService, SmartNgClientFeatureKind, SmartService, SmartSessionService, SmartSessionTimerComponent, SmartTable, SmartTableButtonType, SmartTableHeaderPropertyType, SmartTableInterfaceTypeEnum, SmartTableOptionButtonDirection, SmartTableOrder, SmartTableType, SmartTimePipe, SmartTooltipDirective, SmartTreeComponent, SmartTreeNodeButtonType, SmartUserSettinsIconPosition, SmartValidatorName, SmartViewContextService, SmartViewRedirect, SmartVoiceRecorderComponent, SmartWidgetHintPosition, SmartWidgetHintPositionEnum, SmartdialogService, SmartfileuploaderComponent, SmartformComponent, SmartformLayoutDefinitionService, SmarttreeGenericService, SmarttreeService, SubjectSelectorComponent, ThemeService, ToggleLabelPosition, ToolbarAlignment, ToolbarDirection, TreeArrowPosition, USE_ADVANCED_FILTER, UiActionButtonComponent, UiActionButtonType, UiActionConfirmDialogService, UiActionDescriptorService, UiActionDialogButtonComponent, UiActionDialogType, UiActionFeedbackType, UiActionInputDialogService, UiActionInputType, UiActionService, UiActionToolbarComponent, UiActionTooltipTooltipPositionEnum, UiBadgeComponent, UiBadgeDirective, UploadWidgetType, ValidationResultPageComponent, ValueChangeMode, ViewContextRebuiltError, ViewEventHandlerViewEventTypeEnum, ViewService, ViewState, ViewType, barChart, bubbleChart, createBasicOptions, doughnutChart, horizontalBarChart, horizontalStackedBarChart, injectSmartComponent, multiAxisLineChart, pieChart, polarAreaChart, provideSmartNgClient, radarChart, registerSmartWidget, resolveDateLocale, resolveSlot, resolveSmartNgClientConfig, resolveViewHandler, scatterChart, stackedBarChart, transformDataToBarLikeDataSet, transformDataToBasicDataSets, transformDataToBubble, transformDataToScatter, withSmartDiagram, withSmartMap };
|
|
23133
23321
|
//# sourceMappingURL=smartbit4all-ng-client.mjs.map
|