@rosoftlab/rdict 1.0.4-alpha-8 → 1.0.4-alpha-10

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.
@@ -1,39 +1,41 @@
1
- import * as i6$1 from '@angular/common';
1
+ import * as i6 from '@angular/common';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
- import { Inject, Injectable, Component, NgModule, HostBinding, forwardRef, Input, ViewChild, EventEmitter, ElementRef, Output, ViewEncapsulation, InjectionToken } from '@angular/core';
4
+ import { Inject, Injectable, forwardRef, ViewChild, Input, Component, NgModule, HostBinding, EventEmitter, ElementRef, Output, ViewEncapsulation, InjectionToken } from '@angular/core';
5
5
  import * as i1 from '@angular/router';
6
6
  import { RouterModule, UrlSegment, NavigationStart } from '@angular/router';
7
7
  import * as i2 from '@ngx-translate/core';
8
8
  import { TranslateModule, TranslateService } from '@ngx-translate/core';
9
- import * as i5 from '@progress/kendo-angular-buttons';
10
9
  import { ButtonsModule, KENDO_BUTTONS } from '@progress/kendo-angular-buttons';
11
10
  import { KENDO_SVGICON } from '@progress/kendo-angular-icons';
12
- import * as i6 from '@progress/kendo-angular-layout';
11
+ import * as i7 from '@progress/kendo-angular-layout';
13
12
  import { LayoutModule } from '@progress/kendo-angular-layout';
14
- import * as i9 from '@progress/kendo-angular-toolbar';
15
- import { ToolBarModule, KENDO_TOOLBAR, ToolBarToolComponent } from '@progress/kendo-angular-toolbar';
13
+ import * as i6$1 from '@progress/kendo-angular-toolbar';
14
+ import { ToolBarToolComponent, ToolBarModule, KENDO_TOOLBAR } from '@progress/kendo-angular-toolbar';
16
15
  import * as allIcons from '@progress/kendo-svg-icons';
17
- import { menuIcon, saveIcon, arrowLeftIcon, pencilIcon, trashIcon, plusIcon } from '@progress/kendo-svg-icons';
16
+ import { menuIcon, userIcon, logoutIcon, saveIcon, arrowLeftIcon, pencilIcon, trashIcon, plusIcon } from '@progress/kendo-svg-icons';
17
+ import * as i4 from '@rosoftlab/core';
18
+ import { BaseModel, Attribute, BaseModelConfig, BaseService } from '@rosoftlab/core';
18
19
  import { Subject, fromEvent, Observable, defer, mergeMap, filter, race, first, map, timeout, from, tap, catchError, throwError, BehaviorSubject } from 'rxjs';
19
20
  import { v4 } from 'uuid';
20
21
  import { io } from 'socket.io-client';
21
22
  import * as i2$1 from '@progress/kendo-angular-dialog';
22
23
  import { DialogCloseResult, KENDO_DIALOG } from '@progress/kendo-angular-dialog';
23
24
  import * as i3 from '@progress/kendo-angular-notification';
24
- import * as i4 from '@rosoftlab/core';
25
- import { BaseModel, Attribute, BaseModelConfig, BaseService } from '@rosoftlab/core';
26
25
  import { __decorate, __metadata } from 'tslib';
27
26
  import * as i8 from '@angular/forms';
28
27
  import { FormGroup, FormControl, ReactiveFormsModule } from '@angular/forms';
29
- import * as i7 from '@ngx-formly/core';
28
+ import * as i7$1 from '@ngx-formly/core';
30
29
  import { FORMLY_CONFIG, FormlyModule } from '@ngx-formly/core';
31
30
  import { FormlyKendoModule } from '@ngx-formly/kendo';
32
- import * as i8$1 from '@progress/kendo-angular-grid';
31
+ import * as i9 from '@progress/kendo-angular-grid';
33
32
  import { KENDO_GRID } from '@progress/kendo-angular-grid';
34
- import * as i1$1 from '@progress/kendo-angular-label';
33
+ import * as i1$2 from '@progress/kendo-angular-label';
35
34
  import { KENDO_LABEL } from '@progress/kendo-angular-label';
36
35
  import * as i6$2 from '@progress/kendo-angular-intl';
36
+ import * as i1$1 from '@angular/common/http';
37
+ import { HttpHeaders, HttpRequest, HttpEventType, HttpResponse } from '@angular/common/http';
38
+ import { filter as filter$1, map as map$1 } from 'rxjs/operators';
37
39
 
38
40
  class SocketService {
39
41
  constructor(socketUrl) {
@@ -877,37 +879,84 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImpor
877
879
  }]
878
880
  }], ctorParameters: () => [{ type: i4.DatastoreCore }] });
879
881
 
882
+ class KendoToolbarSpanComponent extends ToolBarToolComponent {
883
+ constructor() {
884
+ super();
885
+ this.tabindex = -1;
886
+ this.text = '';
887
+ this.cssClass = '';
888
+ }
889
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: KendoToolbarSpanComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
890
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.8", type: KendoToolbarSpanComponent, isStandalone: true, selector: "kendo-toolbar-span", inputs: { text: "text", cssClass: "cssClass" }, providers: [{ provide: ToolBarToolComponent, useExisting: forwardRef(() => KendoToolbarSpanComponent) }], viewQueries: [{ propertyName: "toolbarTemplate", first: true, predicate: ["toolbarTemplate"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
891
+ <ng-template #toolbarTemplate>
892
+ <span [ngClass]="cssClass" [textContent]="text"></span>
893
+ </ng-template>
894
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
895
+ }
896
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: KendoToolbarSpanComponent, decorators: [{
897
+ type: Component,
898
+ args: [{
899
+ providers: [{ provide: ToolBarToolComponent, useExisting: forwardRef(() => KendoToolbarSpanComponent) }],
900
+ selector: 'kendo-toolbar-span',
901
+ standalone: true,
902
+ imports: [CommonModule],
903
+ template: `
904
+ <ng-template #toolbarTemplate>
905
+ <span [ngClass]="cssClass" [textContent]="text"></span>
906
+ </ng-template>
907
+ `
908
+ }]
909
+ }], ctorParameters: () => [], propDecorators: { text: [{
910
+ type: Input
911
+ }], cssClass: [{
912
+ type: Input
913
+ }], toolbarTemplate: [{
914
+ type: ViewChild,
915
+ args: ['toolbarTemplate', { static: true }]
916
+ }] } });
917
+
880
918
  class FullComponent {
881
- constructor(userService, router, translate, rdict) {
919
+ constructor(userService, router, translate, rdict, auth_service) {
882
920
  this.userService = userService;
883
921
  this.router = router;
884
922
  this.translate = translate;
885
923
  this.rdict = rdict;
886
- this.selected = "Inbox";
924
+ this.auth_service = auth_service;
925
+ this.selected = 'Inbox';
887
926
  this.menuSvg = menuIcon;
927
+ this.userSvg = userIcon;
888
928
  this.expandedIndices = [2];
889
929
  this.hasItems = false;
890
930
  this.items = [];
891
931
  this.icons = allIcons;
892
932
  //private rdict: ReactiveDictionary | undefined;
893
- this.apptitle = "Test";
933
+ this.apptitle = 'Test';
934
+ this.user_menu = [
935
+ {
936
+ text: 'Logout',
937
+ svgIcon: logoutIcon,
938
+ click: () => {
939
+ this.auth_service.logout();
940
+ }
941
+ }
942
+ ];
894
943
  this.isItemExpanded = (item) => {
895
944
  return this.expandedIndices.indexOf(item.id) >= 0;
896
945
  };
897
946
  this.getMenu();
898
947
  }
899
948
  async ngOnInit() {
900
- this.apptitle = await this.rdict.asyncGet("appname");
949
+ this.apptitle = await this.rdict.asyncGet('appname');
901
950
  }
902
951
  getMenu() {
903
952
  this.userService.getMenus().subscribe({
904
- next: value => {
953
+ next: (value) => {
905
954
  this.items = this.transformToDrawerItems(value.getModels());
906
955
  },
907
- error: err => console.error('Observable emitted an error: ' + err),
956
+ error: (err) => console.error('Observable emitted an error: ' + err),
908
957
  complete: () => console.log('Observable emitted the complete notification')
909
958
  });
910
- this.menu$ = this.userService.getMenus().pipe(map(f => {
959
+ this.menu$ = this.userService.getMenus().pipe(map((f) => {
911
960
  const data = f.getModels();
912
961
  this.hasItems = data.length > 0;
913
962
  return data;
@@ -926,12 +975,12 @@ class FullComponent {
926
975
  if (ev.item.path && ev.item.path !== '') {
927
976
  this.router.navigate([ev.item.path]);
928
977
  // this.router.navigateByUrl(ev.item.path);
929
- // this.router.navigate(['/import_layout']);
978
+ // this.router.navigate(['/import_layout']);
930
979
  }
931
980
  }
932
981
  transformToDrawerItems(data, parentId) {
933
982
  let drawerItems = [];
934
- data.forEach(item => {
983
+ data.forEach((item) => {
935
984
  const drawerItem = {
936
985
  id: item.id,
937
986
  text: this.translate.instant(item.translationKey),
@@ -939,7 +988,7 @@ class FullComponent {
939
988
  svgIcon: this.icons[item.icon],
940
989
  selected: false, // Set this based on your application's state or logic
941
990
  parentId: parentId,
942
- path: (item.sublinks && item.sublinks.length > 0) ? '' : item.link
991
+ path: item.sublinks && item.sublinks.length > 0 ? '' : item.link
943
992
  };
944
993
  drawerItems.push(drawerItem);
945
994
  // Recursively process children and flatten them
@@ -950,8 +999,8 @@ class FullComponent {
950
999
  });
951
1000
  return drawerItems;
952
1001
  }
953
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: FullComponent, deps: [{ token: UserService }, { token: i1.Router }, { token: i2.TranslateService }, { token: ReactiveDictionary }], target: i0.ɵɵFactoryTarget.Component }); }
954
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.8", type: FullComponent, isStandalone: true, selector: "rdict-full", ngImport: i0, template: "<div class=\"custom-toolbar\">\r\n <button kendoButton [svgIcon]=\"menuSvg\" fillMode=\"flat\" (click)=\"drawer.toggle()\"></button>\r\n <span class=\"app-title\">{{apptitle}}</span>\r\n</div>\r\n<kendo-drawer-container>\r\n <kendo-drawer #drawer [items]=\"items\" mode=\"push\" [mini]=\"true\" [expanded]=\"true\" (select)=\"onSelect($event)\"\r\n [autoCollapse]=\"false\" [isItemExpanded]=\"isItemExpanded\"> \r\n </kendo-drawer>\r\n\r\n <kendo-drawer-content>\r\n <router-outlet></router-outlet>\r\n </kendo-drawer-content>\r\n</kendo-drawer-container>", styles: ["html,body,rdict-full{padding:0;height:100%}rdict-full{display:flex;flex-direction:column}kendo-drawer-container{flex:1 1 auto;overflow-y:auto}.k-icon{font-size:20px}.custom-toolbar{width:100%;background-color:#f6f6f6;line-height:10px;border-bottom:inset;border-bottom-width:1px;color:#656565}.custom-toolbar button{margin:3px 0 3px 8px}.app-title{margin-left:20px;font-weight:700;font-size:17px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1.RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: ButtonsModule }, { kind: "component", type: i5.ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "ngmodule", type: ToolBarModule }, { kind: "ngmodule", type: LayoutModule }, { kind: "component", type: i6.DrawerComponent, selector: "kendo-drawer", inputs: ["mode", "position", "mini", "expanded", "width", "miniWidth", "autoCollapse", "items", "isItemExpanded", "animation"], outputs: ["expand", "collapse", "select", "expandedChange"], exportAs: ["kendoDrawer"] }, { kind: "component", type: i6.DrawerContainerComponent, selector: "kendo-drawer-container" }, { kind: "component", type: i6.DrawerContentComponent, selector: "kendo-drawer-content" }] }); }
1002
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: FullComponent, deps: [{ token: UserService }, { token: i1.Router }, { token: i2.TranslateService }, { token: ReactiveDictionary }, { token: i4.AuthService }], target: i0.ɵɵFactoryTarget.Component }); }
1003
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.8", type: FullComponent, isStandalone: true, selector: "rdict-full", ngImport: i0, template: "<!-- <div class=\"custom-toolbar\">\r\n <button kendoButton [svgIcon]=\"menuSvg\" fillMode=\"flat\" (click)=\"drawer.toggle()\"></button>\r\n <span class=\"app-title\">{{apptitle}}</span>\r\n</div> -->\r\n<kendo-toolbar>\r\n <kendo-toolbar-span text=\"{{apptitle}}\" cssClass=\"app-title\"></kendo-toolbar-span>\r\n <kendo-toolbar-button [svgIcon]=\"menuSvg\" fillMode=\"flat\" (click)=\"drawer.toggle()\"></kendo-toolbar-button>\r\n <kendo-toolbar-spacer></kendo-toolbar-spacer>\r\n <kendo-toolbar-dropdownbutton text=\"{{auth_service?.name}}\" [svgIcon]=\"userSvg\" [data]=\"user_menu\"></kendo-toolbar-dropdownbutton>\r\n</kendo-toolbar>\r\n<kendo-drawer-container>\r\n <kendo-drawer #drawer [items]=\"items\" mode=\"push\" [mini]=\"true\" [expanded]=\"true\" (select)=\"onSelect($event)\"\r\n [autoCollapse]=\"false\" [isItemExpanded]=\"isItemExpanded\">\r\n </kendo-drawer>\r\n\r\n <kendo-drawer-content>\r\n <router-outlet></router-outlet>\r\n </kendo-drawer-content>\r\n</kendo-drawer-container>", styles: ["html,body,rdict-full{padding:0;height:100%}rdict-full{display:flex;flex-direction:column}kendo-drawer-container{flex:1 1 auto;overflow-y:auto}.k-icon{font-size:20px}.custom-toolbar{width:100%;background-color:#f6f6f6;line-height:10px;border-bottom:inset;border-bottom-width:1px;color:#656565}.custom-toolbar button{margin:3px 0 3px 8px}.app-title{margin-left:20px;font-weight:700;font-size:17px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1.RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: ButtonsModule }, { kind: "ngmodule", type: ToolBarModule }, { kind: "component", type: i6$1.ToolBarComponent, selector: "kendo-toolbar", inputs: ["overflow", "resizable", "popupSettings", "fillMode", "tabindex", "size", "tabIndex"], outputs: ["open", "close"], exportAs: ["kendoToolBar"] }, { kind: "component", type: i6$1.ToolBarButtonComponent, selector: "kendo-toolbar-button", inputs: ["showText", "showIcon", "text", "style", "className", "title", "disabled", "toggleable", "look", "togglable", "selected", "fillMode", "themeColor", "icon", "iconClass", "svgIcon", "imageUrl"], outputs: ["click", "pointerdown", "selectedChange"], exportAs: ["kendoToolBarButton"] }, { kind: "component", type: i6$1.ToolBarDropDownButtonComponent, selector: "kendo-toolbar-dropdownbutton", inputs: ["arrowIcon", "title", "showText", "showIcon", "text", "icon", "svgIcon", "iconClass", "imageUrl", "popupSettings", "look", "primary", "fillMode", "themeColor", "buttonClass", "textField", "disabled", "data"], outputs: ["itemClick", "open", "close"], exportAs: ["kendoToolBarDropDownButton"] }, { kind: "component", type: i6$1.ToolBarSpacerComponent, selector: "kendo-toolbar-spacer", exportAs: ["kendoToolBarSpacer"] }, { kind: "ngmodule", type: LayoutModule }, { kind: "component", type: i7.DrawerComponent, selector: "kendo-drawer", inputs: ["mode", "position", "mini", "expanded", "width", "miniWidth", "autoCollapse", "items", "isItemExpanded", "animation"], outputs: ["expand", "collapse", "select", "expandedChange"], exportAs: ["kendoDrawer"] }, { kind: "component", type: i7.DrawerContainerComponent, selector: "kendo-drawer-container" }, { kind: "component", type: i7.DrawerContentComponent, selector: "kendo-drawer-content" }, { kind: "component", type: KendoToolbarSpanComponent, selector: "kendo-toolbar-span", inputs: ["text", "cssClass"] }] }); }
955
1004
  }
956
1005
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: FullComponent, decorators: [{
957
1006
  type: Component,
@@ -963,9 +1012,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImpor
963
1012
  ButtonsModule,
964
1013
  ToolBarModule,
965
1014
  LayoutModule,
966
- KENDO_SVGICON
967
- ], template: "<div class=\"custom-toolbar\">\r\n <button kendoButton [svgIcon]=\"menuSvg\" fillMode=\"flat\" (click)=\"drawer.toggle()\"></button>\r\n <span class=\"app-title\">{{apptitle}}</span>\r\n</div>\r\n<kendo-drawer-container>\r\n <kendo-drawer #drawer [items]=\"items\" mode=\"push\" [mini]=\"true\" [expanded]=\"true\" (select)=\"onSelect($event)\"\r\n [autoCollapse]=\"false\" [isItemExpanded]=\"isItemExpanded\"> \r\n </kendo-drawer>\r\n\r\n <kendo-drawer-content>\r\n <router-outlet></router-outlet>\r\n </kendo-drawer-content>\r\n</kendo-drawer-container>", styles: ["html,body,rdict-full{padding:0;height:100%}rdict-full{display:flex;flex-direction:column}kendo-drawer-container{flex:1 1 auto;overflow-y:auto}.k-icon{font-size:20px}.custom-toolbar{width:100%;background-color:#f6f6f6;line-height:10px;border-bottom:inset;border-bottom-width:1px;color:#656565}.custom-toolbar button{margin:3px 0 3px 8px}.app-title{margin-left:20px;font-weight:700;font-size:17px}\n"] }]
968
- }], ctorParameters: () => [{ type: UserService }, { type: i1.Router }, { type: i2.TranslateService }, { type: ReactiveDictionary }] });
1015
+ KENDO_SVGICON,
1016
+ KENDO_TOOLBAR,
1017
+ KendoToolbarSpanComponent
1018
+ ], template: "<!-- <div class=\"custom-toolbar\">\r\n <button kendoButton [svgIcon]=\"menuSvg\" fillMode=\"flat\" (click)=\"drawer.toggle()\"></button>\r\n <span class=\"app-title\">{{apptitle}}</span>\r\n</div> -->\r\n<kendo-toolbar>\r\n <kendo-toolbar-span text=\"{{apptitle}}\" cssClass=\"app-title\"></kendo-toolbar-span>\r\n <kendo-toolbar-button [svgIcon]=\"menuSvg\" fillMode=\"flat\" (click)=\"drawer.toggle()\"></kendo-toolbar-button>\r\n <kendo-toolbar-spacer></kendo-toolbar-spacer>\r\n <kendo-toolbar-dropdownbutton text=\"{{auth_service?.name}}\" [svgIcon]=\"userSvg\" [data]=\"user_menu\"></kendo-toolbar-dropdownbutton>\r\n</kendo-toolbar>\r\n<kendo-drawer-container>\r\n <kendo-drawer #drawer [items]=\"items\" mode=\"push\" [mini]=\"true\" [expanded]=\"true\" (select)=\"onSelect($event)\"\r\n [autoCollapse]=\"false\" [isItemExpanded]=\"isItemExpanded\">\r\n </kendo-drawer>\r\n\r\n <kendo-drawer-content>\r\n <router-outlet></router-outlet>\r\n </kendo-drawer-content>\r\n</kendo-drawer-container>", styles: ["html,body,rdict-full{padding:0;height:100%}rdict-full{display:flex;flex-direction:column}kendo-drawer-container{flex:1 1 auto;overflow-y:auto}.k-icon{font-size:20px}.custom-toolbar{width:100%;background-color:#f6f6f6;line-height:10px;border-bottom:inset;border-bottom-width:1px;color:#656565}.custom-toolbar button{margin:3px 0 3px 8px}.app-title{margin-left:20px;font-weight:700;font-size:17px}\n"] }]
1019
+ }], ctorParameters: () => [{ type: UserService }, { type: i1.Router }, { type: i2.TranslateService }, { type: ReactiveDictionary }, { type: i4.AuthService }] });
969
1020
 
970
1021
  class TranslateExtension {
971
1022
  constructor(translate) {
@@ -1244,8 +1295,8 @@ class RdictCrudComponent {
1244
1295
  this.router.navigate([this.routeHistory.getPreviousUrl() || '/']);
1245
1296
  }
1246
1297
  }
1247
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: RdictCrudComponent, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }, { token: i2.TranslateService }, { token: ReactiveDictionary }, { token: i4.LocalFileService }, { token: MaterialDialogService }, { token: i4.RouteHistoryService }, { token: i6$1.Location }], target: i0.ɵɵFactoryTarget.Component }); }
1248
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.8", type: RdictCrudComponent, isStandalone: true, selector: "app-rdict-crud", host: { properties: { "class": "this.hostClasses" } }, ngImport: i0, template: "<kendo-toolbar>\r\n <kendo-toolbar-button text=\"Back\" showText=\"both\" [svgIcon]=\"backIcon\" showIcon=\"both\" themeColor=\"primary\"\r\n [disabled]=\"false\" (click)=\"onBack()\">\r\n </kendo-toolbar-button>\r\n <kendo-toolbar-spacer></kendo-toolbar-spacer>\r\n <kendo-toolbar-button text=\"Save\" showText=\"both\" [svgIcon]=\"saveIcon\" showIcon=\"both\" themeColor=\"success\"\r\n [disabled]=\"false\" (click)=\"onSave()\">\r\n </kendo-toolbar-button>\r\n</kendo-toolbar>\r\n\r\n <form [formGroup]=\"baseForm\" (ngSubmit)=\"onSubmit(model)\">\r\n <formly-form [form]=\"baseForm\" [fields]=\"fields\" [model]=\"model\" [options]=\"options\"></formly-form>\r\n </form>\r\n<div kendoDialogContainer></div>", styles: ["::ng-deep formly-field{padding:.3rem;display:block}\n"], dependencies: [{ kind: "ngmodule", type: FormlyModule }, { kind: "component", type: i7.FormlyForm, selector: "formly-form", inputs: ["form", "model", "fields", "options"], outputs: ["modelChange"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i8.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i8.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i8.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormlyKendoModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: CrudFormlyTransaltionModule }, { kind: "component", type: i9.ToolBarComponent, selector: "kendo-toolbar", inputs: ["overflow", "resizable", "popupSettings", "fillMode", "tabindex", "size", "tabIndex"], outputs: ["open", "close"], exportAs: ["kendoToolBar"] }, { kind: "component", type: i9.ToolBarButtonComponent, selector: "kendo-toolbar-button", inputs: ["showText", "showIcon", "text", "style", "className", "title", "disabled", "toggleable", "look", "togglable", "selected", "fillMode", "themeColor", "icon", "iconClass", "svgIcon", "imageUrl"], outputs: ["click", "pointerdown", "selectedChange"], exportAs: ["kendoToolBarButton"] }, { kind: "component", type: i9.ToolBarSpacerComponent, selector: "kendo-toolbar-spacer", exportAs: ["kendoToolBarSpacer"] }, { kind: "directive", type: i2$1.DialogContainerDirective, selector: "[kendoDialogContainer]" }] }); }
1298
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: RdictCrudComponent, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }, { token: i2.TranslateService }, { token: ReactiveDictionary }, { token: i4.LocalFileService }, { token: MaterialDialogService }, { token: i4.RouteHistoryService }, { token: i6.Location }], target: i0.ɵɵFactoryTarget.Component }); }
1299
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.8", type: RdictCrudComponent, isStandalone: true, selector: "app-rdict-crud", host: { properties: { "class": "this.hostClasses" } }, ngImport: i0, template: "<kendo-toolbar>\r\n <kendo-toolbar-button text=\"Back\" showText=\"both\" [svgIcon]=\"backIcon\" showIcon=\"both\" themeColor=\"primary\"\r\n [disabled]=\"false\" (click)=\"onBack()\">\r\n </kendo-toolbar-button>\r\n <kendo-toolbar-spacer></kendo-toolbar-spacer>\r\n <kendo-toolbar-button text=\"Save\" showText=\"both\" [svgIcon]=\"saveIcon\" showIcon=\"both\" themeColor=\"success\"\r\n [disabled]=\"false\" (click)=\"onSave()\">\r\n </kendo-toolbar-button>\r\n</kendo-toolbar>\r\n\r\n <form [formGroup]=\"baseForm\" (ngSubmit)=\"onSubmit(model)\">\r\n <formly-form [form]=\"baseForm\" [fields]=\"fields\" [model]=\"model\" [options]=\"options\"></formly-form>\r\n </form>\r\n<div kendoDialogContainer></div>", styles: ["::ng-deep formly-field{padding:.3rem;display:block}\n"], dependencies: [{ kind: "ngmodule", type: FormlyModule }, { kind: "component", type: i7$1.FormlyForm, selector: "formly-form", inputs: ["form", "model", "fields", "options"], outputs: ["modelChange"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i8.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i8.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i8.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormlyKendoModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: CrudFormlyTransaltionModule }, { kind: "component", type: i6$1.ToolBarComponent, selector: "kendo-toolbar", inputs: ["overflow", "resizable", "popupSettings", "fillMode", "tabindex", "size", "tabIndex"], outputs: ["open", "close"], exportAs: ["kendoToolBar"] }, { kind: "component", type: i6$1.ToolBarButtonComponent, selector: "kendo-toolbar-button", inputs: ["showText", "showIcon", "text", "style", "className", "title", "disabled", "toggleable", "look", "togglable", "selected", "fillMode", "themeColor", "icon", "iconClass", "svgIcon", "imageUrl"], outputs: ["click", "pointerdown", "selectedChange"], exportAs: ["kendoToolBarButton"] }, { kind: "component", type: i6$1.ToolBarSpacerComponent, selector: "kendo-toolbar-spacer", exportAs: ["kendoToolBarSpacer"] }, { kind: "directive", type: i2$1.DialogContainerDirective, selector: "[kendoDialogContainer]" }] }); }
1249
1300
  }
1250
1301
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: RdictCrudComponent, decorators: [{
1251
1302
  type: Component,
@@ -1261,11 +1312,153 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImpor
1261
1312
  KENDO_BUTTONS,
1262
1313
  KENDO_DIALOG
1263
1314
  ], template: "<kendo-toolbar>\r\n <kendo-toolbar-button text=\"Back\" showText=\"both\" [svgIcon]=\"backIcon\" showIcon=\"both\" themeColor=\"primary\"\r\n [disabled]=\"false\" (click)=\"onBack()\">\r\n </kendo-toolbar-button>\r\n <kendo-toolbar-spacer></kendo-toolbar-spacer>\r\n <kendo-toolbar-button text=\"Save\" showText=\"both\" [svgIcon]=\"saveIcon\" showIcon=\"both\" themeColor=\"success\"\r\n [disabled]=\"false\" (click)=\"onSave()\">\r\n </kendo-toolbar-button>\r\n</kendo-toolbar>\r\n\r\n <form [formGroup]=\"baseForm\" (ngSubmit)=\"onSubmit(model)\">\r\n <formly-form [form]=\"baseForm\" [fields]=\"fields\" [model]=\"model\" [options]=\"options\"></formly-form>\r\n </form>\r\n<div kendoDialogContainer></div>", styles: ["::ng-deep formly-field{padding:.3rem;display:block}\n"] }]
1264
- }], ctorParameters: () => [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.TranslateService }, { type: ReactiveDictionary }, { type: i4.LocalFileService }, { type: MaterialDialogService }, { type: i4.RouteHistoryService }, { type: i6$1.Location }], propDecorators: { hostClasses: [{
1315
+ }], ctorParameters: () => [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.TranslateService }, { type: ReactiveDictionary }, { type: i4.LocalFileService }, { type: MaterialDialogService }, { type: i4.RouteHistoryService }, { type: i6.Location }], propDecorators: { hostClasses: [{
1265
1316
  type: HostBinding,
1266
1317
  args: ['class']
1267
1318
  }] } });
1268
1319
 
1320
+ class FileService {
1321
+ // private baseUrl ='http://localhost:5200';
1322
+ constructor(http, socketUrl) {
1323
+ this.http = http;
1324
+ this.baseUrl = '';
1325
+ this.baseUrl = socketUrl;
1326
+ }
1327
+ // uploadFile(file: File | Blob, filename?: string): Observable<UploadProgress> {
1328
+ // const url = `${this.baseUrl}/upload`;
1329
+ // const totalSize = file instanceof File ? file.size : file.size;
1330
+ // // determine the filename
1331
+ // const name =
1332
+ // file instanceof File ? file.name : filename ?? 'upload.bin';
1333
+ // const formData = new FormData();
1334
+ // formData.append('file', file, file.name);
1335
+ // // capture total size for the final event
1336
+ // const totalSize = file.size;
1337
+ // const req = new HttpRequest('POST', url, formData, {
1338
+ // reportProgress: true,
1339
+ // });
1340
+ // return this.http.request<{ file_id: string }>(req).pipe(
1341
+ // // only let through progress events or the final response
1342
+ // filter(
1343
+ // (
1344
+ // evt: HttpEvent<{ file_id: string }>
1345
+ // ): evt is HttpUploadProgressEvent | HttpResponse<{ file_id: string }> =>
1346
+ // evt.type === HttpEventType.UploadProgress ||
1347
+ // evt instanceof HttpResponse
1348
+ // ),
1349
+ // map((evt) => {
1350
+ // if (evt.type === HttpEventType.UploadProgress) {
1351
+ // // ✔️ safe to read loaded/total here
1352
+ // return {
1353
+ // type: 'progress',
1354
+ // loaded: evt.loaded,
1355
+ // total: evt.total ?? undefined,
1356
+ // } as UploadProgress;
1357
+ // } else {
1358
+ // // ✔️ evt is HttpResponse<{file_id:string}>
1359
+ // return {
1360
+ // type: 'response',
1361
+ // loaded: totalSize,
1362
+ // total: totalSize,
1363
+ // fileId: evt.body?.file_id,
1364
+ // } as UploadProgress;
1365
+ // }
1366
+ // })
1367
+ // );
1368
+ // }
1369
+ uploadFile(file, filename, fileId) {
1370
+ const url = `${this.baseUrl}/upload`;
1371
+ const totalSize = file instanceof File ? file.size : file.size;
1372
+ // determine the filename
1373
+ const name = file instanceof File ? file.name : filename ?? 'upload.bin';
1374
+ const fd = new FormData();
1375
+ fd.append('file', file, name);
1376
+ fd.append('filename', name);
1377
+ if (fileId !== undefined && fileId !== null) {
1378
+ fd.append('fileId', fileId);
1379
+ }
1380
+ // build headers
1381
+ const headers = new HttpHeaders({
1382
+ 'Content-Type': 'application/octet-stream',
1383
+ 'X-Filename': name
1384
+ });
1385
+ // raw-body POST
1386
+ const req = new HttpRequest('POST', url, fd, {
1387
+ // headers,
1388
+ reportProgress: true
1389
+ // responseType: 'json',
1390
+ // withCredentials: false,
1391
+ });
1392
+ return this.http.request(req).pipe(
1393
+ // only let through progress events or the final response
1394
+ filter$1((evt) => evt.type === HttpEventType.UploadProgress || evt instanceof HttpResponse), map$1((evt) => {
1395
+ if (evt.type === HttpEventType.UploadProgress) {
1396
+ // live progress
1397
+ return {
1398
+ type: 'progress',
1399
+ loaded: evt.loaded,
1400
+ total: evt.total ?? undefined
1401
+ };
1402
+ }
1403
+ else {
1404
+ // final response, emit 100%
1405
+ return {
1406
+ type: 'response',
1407
+ loaded: totalSize,
1408
+ total: totalSize,
1409
+ fileId: evt.body?.file_id
1410
+ };
1411
+ }
1412
+ }));
1413
+ }
1414
+ downloadFile(fileId) {
1415
+ const url = `${this.baseUrl}/download/${fileId}`;
1416
+ console.log('Download URL:', url);
1417
+ const req = new HttpRequest('GET', url, {
1418
+ reportProgress: true,
1419
+ responseType: 'blob'
1420
+ });
1421
+ return this.http.request(req).pipe(
1422
+ // Only let through DownloadProgressEvent or the final HttpResponse<Blob>
1423
+ filter$1((evt) => evt.type === HttpEventType.DownloadProgress || evt instanceof HttpResponse), map$1((evt) => {
1424
+ if (evt.type === HttpEventType.DownloadProgress) {
1425
+ // A progress event
1426
+ return {
1427
+ type: 'progress',
1428
+ loaded: evt.loaded,
1429
+ total: evt.total ?? undefined
1430
+ };
1431
+ }
1432
+ else {
1433
+ // The full response
1434
+ const cd = evt.headers.get('Content-Disposition') || '';
1435
+ const m = /filename="?(.+?)"?($|;)/.exec(cd);
1436
+ const filename = m ? m[1] : 'download.bin';
1437
+ // build a File from the blob
1438
+ const file = new File([evt.body], filename, {
1439
+ type: evt.body.type
1440
+ });
1441
+ const size = evt.body.size;
1442
+ return {
1443
+ type: 'response',
1444
+ loaded: size,
1445
+ total: size,
1446
+ file
1447
+ };
1448
+ }
1449
+ }));
1450
+ }
1451
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: FileService, deps: [{ token: i1$1.HttpClient }, { token: SOCKET_URL }], target: i0.ɵɵFactoryTarget.Injectable }); }
1452
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: FileService, providedIn: 'root' }); }
1453
+ }
1454
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: FileService, decorators: [{
1455
+ type: Injectable,
1456
+ args: [{ providedIn: 'root' }]
1457
+ }], ctorParameters: () => [{ type: i1$1.HttpClient }, { type: undefined, decorators: [{
1458
+ type: Inject,
1459
+ args: [SOCKET_URL]
1460
+ }] }] });
1461
+
1269
1462
  /** Main mapper */
1270
1463
  function kendoToFilterRequest(e) {
1271
1464
  const { skip = 0, take = 0, sort, filter, group } = e ?? e;
@@ -1475,7 +1668,7 @@ class RdictTableTitle extends ToolBarToolComponent {
1475
1668
  <ng-template #toolbarTemplate>
1476
1669
  <kendo-label>{{text}}</kendo-label>
1477
1670
  </ng-template>
1478
- `, isInline: true, dependencies: [{ kind: "component", type: i1$1.LabelComponent, selector: "kendo-label", inputs: ["text", "for", "optional", "labelCssStyle", "labelCssClass"], exportAs: ["kendoLabel"] }] }); }
1671
+ `, isInline: true, dependencies: [{ kind: "component", type: i1$2.LabelComponent, selector: "kendo-label", inputs: ["text", "for", "optional", "labelCssStyle", "labelCssClass"], exportAs: ["kendoLabel"] }] }); }
1479
1672
  }
1480
1673
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: RdictTableTitle, decorators: [{
1481
1674
  type: Component,
@@ -1500,7 +1693,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImpor
1500
1693
  }] } });
1501
1694
 
1502
1695
  class GenericRdictTableComponent {
1503
- constructor(router, route, translate, injector, localFileService, rdict, dialogService, intl) {
1696
+ constructor(router, route, translate, injector, localFileService, rdict, dialogService, intl, fileService) {
1504
1697
  this.router = router;
1505
1698
  this.route = route;
1506
1699
  this.translate = translate;
@@ -1509,6 +1702,7 @@ class GenericRdictTableComponent {
1509
1702
  this.rdict = rdict;
1510
1703
  this.dialogService = dialogService;
1511
1704
  this.intl = intl;
1705
+ this.fileService = fileService;
1512
1706
  this.editOnClick = false;
1513
1707
  this.editOnDblClick = false;
1514
1708
  this.data = [];
@@ -1779,8 +1973,37 @@ class GenericRdictTableComponent {
1779
1973
  // this.editDataItem = args.dataItem;
1780
1974
  // this.isNew = false;
1781
1975
  }
1782
- edit(dataItem) {
1783
- this.router.navigate([`${this.basePath}/edit/${dataItem.__idx}`]);
1976
+ edit(dataItem, column) {
1977
+ if (column.type == 'file') {
1978
+ const fileId = dataItem[column.file_id_property];
1979
+ const file_name = dataItem[column.propertyName];
1980
+ this.fileService.downloadFile(fileId).subscribe({
1981
+ next: (evt) => {
1982
+ if (evt.type === 'progress') {
1983
+ // optional: show progress
1984
+ // this.progress = evt.total ? Math.round(100 * evt.loaded / evt.total) : null;
1985
+ return;
1986
+ }
1987
+ // evt.type === 'response'
1988
+ const file = evt.file;
1989
+ const url = URL.createObjectURL(file);
1990
+ const a = document.createElement('a');
1991
+ a.href = url;
1992
+ a.download = file_name; // suggested filename
1993
+ a.style.display = 'none';
1994
+ document.body.appendChild(a);
1995
+ a.click();
1996
+ a.remove();
1997
+ URL.revokeObjectURL(url);
1998
+ },
1999
+ error: (err) => {
2000
+ console.error('Download failed', err);
2001
+ }
2002
+ });
2003
+ }
2004
+ else {
2005
+ this.router.navigate([`${this.basePath}/edit/${dataItem.__idx}`]);
2006
+ }
1784
2007
  }
1785
2008
  removeHandler(args) {
1786
2009
  this.dialogService.confirmDelete().subscribe({
@@ -1862,11 +2085,11 @@ class GenericRdictTableComponent {
1862
2085
  return 'boolean';
1863
2086
  return 'text';
1864
2087
  }
1865
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: GenericRdictTableComponent, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }, { token: i2.TranslateService }, { token: i0.Injector }, { token: i4.LocalFileService }, { token: ReactiveDictionary }, { token: MaterialDialogService }, { token: i6$2.IntlService }], target: i0.ɵɵFactoryTarget.Component }); }
1866
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.8", type: GenericRdictTableComponent, isStandalone: true, selector: "rsl-rdict-generic-table", inputs: { showSerach: "showSerach", searchFields: "searchFields", customInclude: "customInclude", defaultSort: "defaultSort", deletePropertyName: "deletePropertyName", defaultFilter: "defaultFilter", showHeader: "showHeader", hasAdd: "hasAdd", canDelete: "canDelete", canEdit: "canEdit", editOnClick: "editOnClick", editOnDblClick: "editOnDblClick" }, outputs: { selectedObject: "selectedObject", click: "click", editModel: "editModel" }, providers: [], viewQueries: [{ propertyName: "filter", first: true, predicate: ElementRef, descendants: true }], ngImport: i0, template: "<kendo-grid [data]=\"dataSource\" [sortable]=\"true\" [filterable]=\"showSerach\" [resizable]=\"true\" (add)=\"addHandler()\"\r\n (edit)=\"editHandler($event)\" (remove)=\"removeHandler($event)\"\r\n (filterChange)=\"filterChange($event)\"\r\n (dataStateChange)=\"dataStateChange($event)\"\r\n \r\n [pageable]=\"{pageSizes:pageSizes}\" [pageSize]=\"state.take\"\r\n [skip]=\"state.skip\" [sort]=\"state.sort\" >\r\n <kendo-toolbar>\r\n <table-title text=\"{{title}}\"></table-title>\r\n <kendo-toolbar-messages>Test</kendo-toolbar-messages>\r\n <!-- <kendo-toolbar-separator></kendo-toolbar-separator> -->\r\n <kendo-toolbar-spacer></kendo-toolbar-spacer>\r\n <kendo-toolbar-button *ngIf=\"hasAdd\" kendoButton [svgIcon]=\"svgAdd\" text=\"Add new\" kendoGridAddTool></kendo-toolbar-button>\r\n </kendo-toolbar>\r\n\r\n <!-- <kendo-toolbar>\r\n \r\n <kendo-toolbar-spacer></kendo-toolbar-spacer>\r\n <button kendoGridAddCommand type=\"button\">Add new</button>\r\n </kendo-toolbar> -->\r\n <!-- <kendo-grid-column *ngFor=\"let column of allColumns\" field=\"{{ column.propertyName }}\"\r\n title=\" {{column.translateKey | translate}}\">\r\n </kendo-grid-column> -->\r\n\r\n <kendo-grid-column *ngFor=\"let column of allColumns\" [field]=\"column.propertyName\"\r\n [title]=\"column.translateKey | translate\" [format]=\"column.format\" [filter]=\"inferFilterType(column)\">\r\n <!-- Use ng-template to customize the column content -->\r\n <ng-template *ngIf=\"column.isEditLink; else defaultTemplate\" kendoGridCellTemplate let-dataItem>\r\n <!-- Create a link that calls editHandler(dataItem) -->\r\n <a href=\"javascript:void(0)\" (click)=\"edit(dataItem)\" class=\"edit-link\">\r\n {{ getCellValue(dataItem,column) }}\r\n </a>\r\n </ng-template>\r\n \r\n <!-- <ng-template *ngIf=\"column.type=='reference'; else defaultTemplate\" kendoGridCellTemplate let-dataItem>\r\n <a href=\"javascript:void(0)\" (click)=\"edit(dataItem)\" class=\"edit-link\">\r\n {{ getCellValue$(dataItem,column) | async }}\r\n </a>\r\n </ng-template> -->\r\n <!-- Default template for non-link columns -->\r\n <ng-template #defaultTemplate kendoGridCellTemplate let-dataItem>\r\n {{ getCellValue(dataItem,column) }}\r\n </ng-template>\r\n </kendo-grid-column>\r\n\r\n\r\n <kendo-grid-command-column *ngIf=\"canEdit && canDelete\" title=\"\" [width]=\"100\">\r\n <ng-template kendoGridCellTemplate>\r\n <!-- <button kendoButton kendoGridEditCommand [svgIcon]=\"svgEdit\" themeColor=\"light\" ></button>\r\n <button kendoButton kendoGridRemoveCommand [svgIcon]=\"svgDelete\" themeColor=\"error\"></button> -->\r\n <button *ngIf=\"canEdit\" kendoGridEditCommand [svgIcon]=\"svgEdit\" themeColor=\"light\"></button>\r\n <button *ngIf=\"canDelete\" kendoGridRemoveCommand [svgIcon]=\"svgDelete\" themeColor=\"error\"></button>\r\n </ng-template>\r\n </kendo-grid-command-column>\r\n</kendo-grid>\r\n<div kendoDialogContainer></div>", styles: [".edit-link{color:#00f!important;text-decoration:underline!important;cursor:pointer!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type:
2088
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: GenericRdictTableComponent, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }, { token: i2.TranslateService }, { token: i0.Injector }, { token: i4.LocalFileService }, { token: ReactiveDictionary }, { token: MaterialDialogService }, { token: i6$2.IntlService }, { token: FileService }], target: i0.ɵɵFactoryTarget.Component }); }
2089
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.8", type: GenericRdictTableComponent, isStandalone: true, selector: "rsl-rdict-generic-table", inputs: { showSerach: "showSerach", searchFields: "searchFields", customInclude: "customInclude", defaultSort: "defaultSort", deletePropertyName: "deletePropertyName", defaultFilter: "defaultFilter", showHeader: "showHeader", hasAdd: "hasAdd", canDelete: "canDelete", canEdit: "canEdit", editOnClick: "editOnClick", editOnDblClick: "editOnDblClick" }, outputs: { selectedObject: "selectedObject", click: "click", editModel: "editModel" }, providers: [], viewQueries: [{ propertyName: "filter", first: true, predicate: ElementRef, descendants: true }], ngImport: i0, template: "<kendo-grid [data]=\"dataSource\" [sortable]=\"true\" [filterable]=\"showSerach\" [resizable]=\"true\" (add)=\"addHandler()\"\r\n (edit)=\"editHandler($event)\" (remove)=\"removeHandler($event)\"\r\n (filterChange)=\"filterChange($event)\"\r\n (dataStateChange)=\"dataStateChange($event)\"\r\n \r\n [pageable]=\"{pageSizes:pageSizes}\" [pageSize]=\"state.take\"\r\n [skip]=\"state.skip\" [sort]=\"state.sort\" >\r\n <kendo-toolbar>\r\n <table-title text=\"{{title}}\"></table-title>\r\n <kendo-toolbar-messages>Test</kendo-toolbar-messages>\r\n <!-- <kendo-toolbar-separator></kendo-toolbar-separator> -->\r\n <kendo-toolbar-spacer></kendo-toolbar-spacer>\r\n <kendo-toolbar-button *ngIf=\"hasAdd\" kendoButton [svgIcon]=\"svgAdd\" text=\"Add new\" kendoGridAddTool></kendo-toolbar-button>\r\n </kendo-toolbar>\r\n\r\n <!-- <kendo-toolbar>\r\n \r\n <kendo-toolbar-spacer></kendo-toolbar-spacer>\r\n <button kendoGridAddCommand type=\"button\">Add new</button>\r\n </kendo-toolbar> -->\r\n <!-- <kendo-grid-column *ngFor=\"let column of allColumns\" field=\"{{ column.propertyName }}\"\r\n title=\" {{column.translateKey | translate}}\">\r\n </kendo-grid-column> -->\r\n\r\n <kendo-grid-column *ngFor=\"let column of allColumns\" [field]=\"column.propertyName\"\r\n [title]=\"column.translateKey | translate\" [format]=\"column.format\" [filter]=\"inferFilterType(column)\">\r\n <!-- Use ng-template to customize the column content -->\r\n <ng-template *ngIf=\"column.isEditLink; else defaultTemplate\" kendoGridCellTemplate let-dataItem>\r\n <!-- Create a link that calls editHandler(dataItem) -->\r\n <a href=\"javascript:void(0)\" (click)=\"edit(dataItem,column)\" class=\"edit-link\">\r\n {{ getCellValue(dataItem,column) }}\r\n </a>\r\n </ng-template>\r\n \r\n <!-- <ng-template *ngIf=\"column.type=='reference'; else defaultTemplate\" kendoGridCellTemplate let-dataItem>\r\n <a href=\"javascript:void(0)\" (click)=\"edit(dataItem)\" class=\"edit-link\">\r\n {{ getCellValue$(dataItem,column) | async }}\r\n </a>\r\n </ng-template> -->\r\n <!-- Default template for non-link columns -->\r\n <ng-template #defaultTemplate kendoGridCellTemplate let-dataItem>\r\n {{ getCellValue(dataItem,column) }}\r\n </ng-template>\r\n </kendo-grid-column>\r\n\r\n\r\n <kendo-grid-command-column *ngIf=\"canEdit && canDelete\" title=\"\" [width]=\"100\">\r\n <ng-template kendoGridCellTemplate>\r\n <!-- <button kendoButton kendoGridEditCommand [svgIcon]=\"svgEdit\" themeColor=\"light\" ></button>\r\n <button kendoButton kendoGridRemoveCommand [svgIcon]=\"svgDelete\" themeColor=\"error\"></button> -->\r\n <button *ngIf=\"canEdit\" kendoGridEditCommand [svgIcon]=\"svgEdit\" themeColor=\"light\"></button>\r\n <button *ngIf=\"canDelete\" kendoGridRemoveCommand [svgIcon]=\"svgDelete\" themeColor=\"error\"></button>\r\n </ng-template>\r\n </kendo-grid-command-column>\r\n</kendo-grid>\r\n<div kendoDialogContainer></div>", styles: [".edit-link{color:#00f!important;text-decoration:underline!important;cursor:pointer!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type:
1867
2090
  // MatPaginatorModule,
1868
2091
  // MatTableModule,
1869
- TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "component", type: i8$1.GridComponent, selector: "kendo-grid", inputs: ["data", "pageSize", "height", "rowHeight", "detailRowHeight", "skip", "scrollable", "selectable", "sort", "size", "trackBy", "filter", "group", "virtualColumns", "filterable", "sortable", "pageable", "groupable", "gridResizable", "rowReorderable", "navigable", "navigatable", "autoSize", "rowClass", "rowSticky", "rowSelected", "isRowSelectable", "cellSelected", "resizable", "reorderable", "loading", "columnMenu", "hideHeader", "isDetailExpanded", "isGroupExpanded"], outputs: ["filterChange", "pageChange", "groupChange", "sortChange", "selectionChange", "rowReorder", "dataStateChange", "groupExpand", "groupCollapse", "detailExpand", "detailCollapse", "edit", "cancel", "save", "remove", "add", "cellClose", "cellClick", "pdfExport", "excelExport", "columnResize", "columnReorder", "columnVisibilityChange", "columnLockedChange", "columnStickyChange", "scrollBottom", "contentScroll"], exportAs: ["kendoGrid"] }, { kind: "directive", type: i8$1.GridToolbarFocusableDirective, selector: " [kendoGridToolbarFocusable], [kendoGridAddCommand], [kendoGridCancelCommand], [kendoGridEditCommand], [kendoGridRemoveCommand], [kendoGridSaveCommand], [kendoGridExcelCommand], [kendoGridPDFCommand] " }, { kind: "component", type: i8$1.ColumnComponent, selector: "kendo-grid-column", inputs: ["field", "format", "sortable", "groupable", "editor", "filter", "filterable", "editable"] }, { kind: "directive", type: i8$1.FocusableDirective, selector: "[kendoGridFocusable], [kendoGridEditCommand], [kendoGridRemoveCommand], [kendoGridSaveCommand], [kendoGridCancelCommand], [kendoGridSelectionCheckbox] ", inputs: ["kendoGridFocusable"] }, { kind: "component", type: i8$1.CommandColumnComponent, selector: "kendo-grid-command-column" }, { kind: "directive", type: i8$1.CellTemplateDirective, selector: "[kendoGridCellTemplate]" }, { kind: "component", type: i8$1.EditCommandDirective, selector: "[kendoGridEditCommand]" }, { kind: "component", type: i8$1.RemoveCommandDirective, selector: "[kendoGridRemoveCommand]" }, { kind: "directive", type: i8$1.AddCommandToolbarDirective, selector: "[kendoGridAddTool]" }, { kind: "component", type: i9.ToolBarComponent, selector: "kendo-toolbar", inputs: ["overflow", "resizable", "popupSettings", "fillMode", "tabindex", "size", "tabIndex"], outputs: ["open", "close"], exportAs: ["kendoToolBar"] }, { kind: "component", type: i9.ToolbarCustomMessagesComponent, selector: "kendo-toolbar-messages" }, { kind: "component", type: i9.ToolBarButtonComponent, selector: "kendo-toolbar-button", inputs: ["showText", "showIcon", "text", "style", "className", "title", "disabled", "toggleable", "look", "togglable", "selected", "fillMode", "themeColor", "icon", "iconClass", "svgIcon", "imageUrl"], outputs: ["click", "pointerdown", "selectedChange"], exportAs: ["kendoToolBarButton"] }, { kind: "component", type: i9.ToolBarSpacerComponent, selector: "kendo-toolbar-spacer", exportAs: ["kendoToolBarSpacer"] }, { kind: "directive", type: i2$1.DialogContainerDirective, selector: "[kendoDialogContainer]" }, { kind: "component", type: RdictTableTitle, selector: "table-title", inputs: ["text"] }], encapsulation: i0.ViewEncapsulation.None }); }
2092
+ TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "component", type: i9.GridComponent, selector: "kendo-grid", inputs: ["data", "pageSize", "height", "rowHeight", "detailRowHeight", "skip", "scrollable", "selectable", "sort", "size", "trackBy", "filter", "group", "virtualColumns", "filterable", "sortable", "pageable", "groupable", "gridResizable", "rowReorderable", "navigable", "navigatable", "autoSize", "rowClass", "rowSticky", "rowSelected", "isRowSelectable", "cellSelected", "resizable", "reorderable", "loading", "columnMenu", "hideHeader", "isDetailExpanded", "isGroupExpanded"], outputs: ["filterChange", "pageChange", "groupChange", "sortChange", "selectionChange", "rowReorder", "dataStateChange", "groupExpand", "groupCollapse", "detailExpand", "detailCollapse", "edit", "cancel", "save", "remove", "add", "cellClose", "cellClick", "pdfExport", "excelExport", "columnResize", "columnReorder", "columnVisibilityChange", "columnLockedChange", "columnStickyChange", "scrollBottom", "contentScroll"], exportAs: ["kendoGrid"] }, { kind: "directive", type: i9.GridToolbarFocusableDirective, selector: " [kendoGridToolbarFocusable], [kendoGridAddCommand], [kendoGridCancelCommand], [kendoGridEditCommand], [kendoGridRemoveCommand], [kendoGridSaveCommand], [kendoGridExcelCommand], [kendoGridPDFCommand] " }, { kind: "component", type: i9.ColumnComponent, selector: "kendo-grid-column", inputs: ["field", "format", "sortable", "groupable", "editor", "filter", "filterable", "editable"] }, { kind: "directive", type: i9.FocusableDirective, selector: "[kendoGridFocusable], [kendoGridEditCommand], [kendoGridRemoveCommand], [kendoGridSaveCommand], [kendoGridCancelCommand], [kendoGridSelectionCheckbox] ", inputs: ["kendoGridFocusable"] }, { kind: "component", type: i9.CommandColumnComponent, selector: "kendo-grid-command-column" }, { kind: "directive", type: i9.CellTemplateDirective, selector: "[kendoGridCellTemplate]" }, { kind: "component", type: i9.EditCommandDirective, selector: "[kendoGridEditCommand]" }, { kind: "component", type: i9.RemoveCommandDirective, selector: "[kendoGridRemoveCommand]" }, { kind: "directive", type: i9.AddCommandToolbarDirective, selector: "[kendoGridAddTool]" }, { kind: "component", type: i6$1.ToolBarComponent, selector: "kendo-toolbar", inputs: ["overflow", "resizable", "popupSettings", "fillMode", "tabindex", "size", "tabIndex"], outputs: ["open", "close"], exportAs: ["kendoToolBar"] }, { kind: "component", type: i6$1.ToolbarCustomMessagesComponent, selector: "kendo-toolbar-messages" }, { kind: "component", type: i6$1.ToolBarButtonComponent, selector: "kendo-toolbar-button", inputs: ["showText", "showIcon", "text", "style", "className", "title", "disabled", "toggleable", "look", "togglable", "selected", "fillMode", "themeColor", "icon", "iconClass", "svgIcon", "imageUrl"], outputs: ["click", "pointerdown", "selectedChange"], exportAs: ["kendoToolBarButton"] }, { kind: "component", type: i6$1.ToolBarSpacerComponent, selector: "kendo-toolbar-spacer", exportAs: ["kendoToolBarSpacer"] }, { kind: "directive", type: i2$1.DialogContainerDirective, selector: "[kendoDialogContainer]" }, { kind: "component", type: RdictTableTitle, selector: "table-title", inputs: ["text"] }], encapsulation: i0.ViewEncapsulation.None }); }
1870
2093
  }
1871
2094
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: GenericRdictTableComponent, decorators: [{
1872
2095
  type: Component,
@@ -1882,8 +2105,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImpor
1882
2105
  KENDO_BUTTONS,
1883
2106
  KENDO_DIALOG,
1884
2107
  RdictTableTitle
1885
- ], providers: [], template: "<kendo-grid [data]=\"dataSource\" [sortable]=\"true\" [filterable]=\"showSerach\" [resizable]=\"true\" (add)=\"addHandler()\"\r\n (edit)=\"editHandler($event)\" (remove)=\"removeHandler($event)\"\r\n (filterChange)=\"filterChange($event)\"\r\n (dataStateChange)=\"dataStateChange($event)\"\r\n \r\n [pageable]=\"{pageSizes:pageSizes}\" [pageSize]=\"state.take\"\r\n [skip]=\"state.skip\" [sort]=\"state.sort\" >\r\n <kendo-toolbar>\r\n <table-title text=\"{{title}}\"></table-title>\r\n <kendo-toolbar-messages>Test</kendo-toolbar-messages>\r\n <!-- <kendo-toolbar-separator></kendo-toolbar-separator> -->\r\n <kendo-toolbar-spacer></kendo-toolbar-spacer>\r\n <kendo-toolbar-button *ngIf=\"hasAdd\" kendoButton [svgIcon]=\"svgAdd\" text=\"Add new\" kendoGridAddTool></kendo-toolbar-button>\r\n </kendo-toolbar>\r\n\r\n <!-- <kendo-toolbar>\r\n \r\n <kendo-toolbar-spacer></kendo-toolbar-spacer>\r\n <button kendoGridAddCommand type=\"button\">Add new</button>\r\n </kendo-toolbar> -->\r\n <!-- <kendo-grid-column *ngFor=\"let column of allColumns\" field=\"{{ column.propertyName }}\"\r\n title=\" {{column.translateKey | translate}}\">\r\n </kendo-grid-column> -->\r\n\r\n <kendo-grid-column *ngFor=\"let column of allColumns\" [field]=\"column.propertyName\"\r\n [title]=\"column.translateKey | translate\" [format]=\"column.format\" [filter]=\"inferFilterType(column)\">\r\n <!-- Use ng-template to customize the column content -->\r\n <ng-template *ngIf=\"column.isEditLink; else defaultTemplate\" kendoGridCellTemplate let-dataItem>\r\n <!-- Create a link that calls editHandler(dataItem) -->\r\n <a href=\"javascript:void(0)\" (click)=\"edit(dataItem)\" class=\"edit-link\">\r\n {{ getCellValue(dataItem,column) }}\r\n </a>\r\n </ng-template>\r\n \r\n <!-- <ng-template *ngIf=\"column.type=='reference'; else defaultTemplate\" kendoGridCellTemplate let-dataItem>\r\n <a href=\"javascript:void(0)\" (click)=\"edit(dataItem)\" class=\"edit-link\">\r\n {{ getCellValue$(dataItem,column) | async }}\r\n </a>\r\n </ng-template> -->\r\n <!-- Default template for non-link columns -->\r\n <ng-template #defaultTemplate kendoGridCellTemplate let-dataItem>\r\n {{ getCellValue(dataItem,column) }}\r\n </ng-template>\r\n </kendo-grid-column>\r\n\r\n\r\n <kendo-grid-command-column *ngIf=\"canEdit && canDelete\" title=\"\" [width]=\"100\">\r\n <ng-template kendoGridCellTemplate>\r\n <!-- <button kendoButton kendoGridEditCommand [svgIcon]=\"svgEdit\" themeColor=\"light\" ></button>\r\n <button kendoButton kendoGridRemoveCommand [svgIcon]=\"svgDelete\" themeColor=\"error\"></button> -->\r\n <button *ngIf=\"canEdit\" kendoGridEditCommand [svgIcon]=\"svgEdit\" themeColor=\"light\"></button>\r\n <button *ngIf=\"canDelete\" kendoGridRemoveCommand [svgIcon]=\"svgDelete\" themeColor=\"error\"></button>\r\n </ng-template>\r\n </kendo-grid-command-column>\r\n</kendo-grid>\r\n<div kendoDialogContainer></div>", styles: [".edit-link{color:#00f!important;text-decoration:underline!important;cursor:pointer!important}\n"] }]
1886
- }], ctorParameters: () => [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.TranslateService }, { type: i0.Injector }, { type: i4.LocalFileService }, { type: ReactiveDictionary }, { type: MaterialDialogService }, { type: i6$2.IntlService }], propDecorators: { showSerach: [{
2108
+ ], providers: [], template: "<kendo-grid [data]=\"dataSource\" [sortable]=\"true\" [filterable]=\"showSerach\" [resizable]=\"true\" (add)=\"addHandler()\"\r\n (edit)=\"editHandler($event)\" (remove)=\"removeHandler($event)\"\r\n (filterChange)=\"filterChange($event)\"\r\n (dataStateChange)=\"dataStateChange($event)\"\r\n \r\n [pageable]=\"{pageSizes:pageSizes}\" [pageSize]=\"state.take\"\r\n [skip]=\"state.skip\" [sort]=\"state.sort\" >\r\n <kendo-toolbar>\r\n <table-title text=\"{{title}}\"></table-title>\r\n <kendo-toolbar-messages>Test</kendo-toolbar-messages>\r\n <!-- <kendo-toolbar-separator></kendo-toolbar-separator> -->\r\n <kendo-toolbar-spacer></kendo-toolbar-spacer>\r\n <kendo-toolbar-button *ngIf=\"hasAdd\" kendoButton [svgIcon]=\"svgAdd\" text=\"Add new\" kendoGridAddTool></kendo-toolbar-button>\r\n </kendo-toolbar>\r\n\r\n <!-- <kendo-toolbar>\r\n \r\n <kendo-toolbar-spacer></kendo-toolbar-spacer>\r\n <button kendoGridAddCommand type=\"button\">Add new</button>\r\n </kendo-toolbar> -->\r\n <!-- <kendo-grid-column *ngFor=\"let column of allColumns\" field=\"{{ column.propertyName }}\"\r\n title=\" {{column.translateKey | translate}}\">\r\n </kendo-grid-column> -->\r\n\r\n <kendo-grid-column *ngFor=\"let column of allColumns\" [field]=\"column.propertyName\"\r\n [title]=\"column.translateKey | translate\" [format]=\"column.format\" [filter]=\"inferFilterType(column)\">\r\n <!-- Use ng-template to customize the column content -->\r\n <ng-template *ngIf=\"column.isEditLink; else defaultTemplate\" kendoGridCellTemplate let-dataItem>\r\n <!-- Create a link that calls editHandler(dataItem) -->\r\n <a href=\"javascript:void(0)\" (click)=\"edit(dataItem,column)\" class=\"edit-link\">\r\n {{ getCellValue(dataItem,column) }}\r\n </a>\r\n </ng-template>\r\n \r\n <!-- <ng-template *ngIf=\"column.type=='reference'; else defaultTemplate\" kendoGridCellTemplate let-dataItem>\r\n <a href=\"javascript:void(0)\" (click)=\"edit(dataItem)\" class=\"edit-link\">\r\n {{ getCellValue$(dataItem,column) | async }}\r\n </a>\r\n </ng-template> -->\r\n <!-- Default template for non-link columns -->\r\n <ng-template #defaultTemplate kendoGridCellTemplate let-dataItem>\r\n {{ getCellValue(dataItem,column) }}\r\n </ng-template>\r\n </kendo-grid-column>\r\n\r\n\r\n <kendo-grid-command-column *ngIf=\"canEdit && canDelete\" title=\"\" [width]=\"100\">\r\n <ng-template kendoGridCellTemplate>\r\n <!-- <button kendoButton kendoGridEditCommand [svgIcon]=\"svgEdit\" themeColor=\"light\" ></button>\r\n <button kendoButton kendoGridRemoveCommand [svgIcon]=\"svgDelete\" themeColor=\"error\"></button> -->\r\n <button *ngIf=\"canEdit\" kendoGridEditCommand [svgIcon]=\"svgEdit\" themeColor=\"light\"></button>\r\n <button *ngIf=\"canDelete\" kendoGridRemoveCommand [svgIcon]=\"svgDelete\" themeColor=\"error\"></button>\r\n </ng-template>\r\n </kendo-grid-command-column>\r\n</kendo-grid>\r\n<div kendoDialogContainer></div>", styles: [".edit-link{color:#00f!important;text-decoration:underline!important;cursor:pointer!important}\n"] }]
2109
+ }], ctorParameters: () => [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.TranslateService }, { type: i0.Injector }, { type: i4.LocalFileService }, { type: ReactiveDictionary }, { type: MaterialDialogService }, { type: i6$2.IntlService }, { type: FileService }], propDecorators: { showSerach: [{
1887
2110
  type: Input
1888
2111
  }], searchFields: [{
1889
2112
  type: Input