UNPKG

sgc-ng-crud-view-list

Version:

Custom SGC-NG-CRUD-VIEW-LIST (DATATABLE CRUD VIEW) UI Components. *** This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 19.1.0.

1 lines 77.7 kB
{"version":3,"file":"sgc-ng-crud-view-list.mjs","sources":["../../../projects/sgc-ng-crud-view-list/src/lib/sgc-ng-crud-view-list.service.ts","../../../projects/sgc-ng-crud-view-list/src/lib/model/sg-ng-model.ts","../../../projects/sgc-ng-crud-view-list/src/lib/sgc-ng-crud-view-list.component.ts","../../../projects/sgc-ng-crud-view-list/src/lib/sgc-ng-crud-view-list.component.html","../../../projects/sgc-ng-crud-view-list/src/lib/sgc-ng-crud-view-list.module.ts","../../../projects/sgc-ng-crud-view-list/src/public-api.ts","../../../projects/sgc-ng-crud-view-list/src/sgc-ng-crud-view-list.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class SgcNgCrudViewListService {\n\n  constructor() { }\n}","import { CollectionViewer, DataSource } from '@angular/cdk/collections';\nimport {\n  CrudDataService,\n  CrudDataService_ListView,\n  PaginateReponseAPI,\n  ParamFindData,\n  TypeCrudView,\n} from 'sgc-share-lib';\nimport { BehaviorSubject, Observable, of } from 'rxjs';\nimport { HttpClient } from '@angular/common/http';\n\n//-----------------------------------------------\nexport enum TypeViewList {\n  DATAGRID_VIEW = 0,\n  REPORT_VIEW = 1,\n  STATISTICS_VIEW = 2,\n}\n\n//--------------------------------------\n\nexport class CrudDataSource<TDataList> implements DataSource<TDataList> {\n  private dataSubject: BehaviorSubject<TDataList[]> = new BehaviorSubject<\n    TDataList[]\n  >([]);\n  private loadingSubject = new BehaviorSubject<boolean>(false);\n  public totalRecords: number = 0;\n  //public pageCourant: number = 0;\n  //public reponseAPI?:PaginateReponseAPI<TDataList[]>;\n\n  public loading$ = this.loadingSubject.asObservable();\n\n  constructor(protected crudDataService: CrudDataService_ListView<TDataList>) {}\n\n  connect(collectionViewer: CollectionViewer): Observable<TDataList[]> {\n    return this.dataSubject.asObservable();\n  }\n\n  disconnect(collectionViewer: CollectionViewer): void {\n    this.dataSubject.complete();\n    this.loadingSubject.complete();\n  }\n\n  loadData(findParams: ParamFindData) {\n    this.loadingSubject.next(true);\n\n    /*this.crudDataService.findLessons(courseId, filter, sortDirection,\n          pageIndex, pageSize).pipe(\n          catchError(() => of([])),\n          finalize(() => this.loadingSubject.next(false))\n      )\n      .subscribe(lessons => this.dataSubject.next(lessons));*/\n    this.crudDataService\n      .findDataFromServer(findParams) /*.pipe(\n          catchError(() => of([])),\n          finalize(() => this.loadingSubject.next(false))\n      )*/\n      .subscribe({\n        next: (response: PaginateReponseAPI<TDataList[]>) => {\n          console.log('***** CRUDDATASOURCE - LOADDATA - response subscribe');\n          console.log(response);\n          if (response.reponseOK) {\n            /*this.dataSource.data = response.data.pageData;\n            this.totalRecords = response.data.totalRecords;\n            this.dataSource.paginator = this.paginator;\n            this.dataSource.sort = this.sort;*/\n\n            this.totalRecords = response.data.totalRecords;\n            this.dataSubject.next(response.data.pageData);\n            //this.reponseAPI=response;\n            this.loadingSubject.next(false);\n            return;\n          } else {\n            //this.notificationService.error(response.message);\n            console.log(response);\n            this.loadingSubject.next(false);\n            return;\n          }\n        },\n        error: (err) => {\n          console.log(\n            '***** CRUDDATASOURCE - LOADDATA - response subscribe ERROR'\n          );\n          console.log(err);\n          this.loadingSubject.next(false);\n          return;\n          //return of([]);\n        },\n        complete: () => {\n          console.log(\n            '***** CRUDDATASOURCE - LOADDATA - response subscribe COMPLETE'\n          );\n          this.loadingSubject.next(false);\n          return;\n        },\n      });\n  }\n}\n\n//-------------------------------------------------------------------\n/**\n *\n */\nexport class CrudDataService_ReportView<TDataExport> extends CrudDataService<\n  any,\n  any,\n  any,\n  any,\n  TDataExport\n> {\n  titreReportView!: string;\n  urlNavigatePageListView!: string;\n\n  constructor(\n    myHttpClient: HttpClient,\n    myDataKeyField: string,\n    myTitreView?: string,\n    myUrlNavigateListView?: string\n  ) {\n    super(myHttpClient, myDataKeyField, TypeCrudView.REPORT);\n    this.titreReportView = myTitreView ? myTitreView : 'REPORT VIEW';\n    this.urlNavigatePageListView = myUrlNavigateListView\n      ? myUrlNavigateListView\n      : '';\n  }\n}\n\n//-------------------------------------------------------------------\n/**\n *\n */\nexport class CrudDataService_StatisticsView<TDataList> extends CrudDataService<\n  TDataList,\n  any,\n  any,\n  any,\n  any\n> {\n  titreStatisticsView!: string;\n  urlNavigatePageListView!: string;\n\n  constructor(\n    myHttpClient: HttpClient,\n    myDataKeyField: string,\n    myTitreView?: string,\n    myUrlNavigateListView?: string\n  ) {\n    super(myHttpClient, myDataKeyField, TypeCrudView.REPORT);\n    this.titreStatisticsView = myTitreView ? myTitreView : 'STATISTICS VIEW';\n    this.urlNavigatePageListView = myUrlNavigateListView\n      ? myUrlNavigateListView\n      : '';\n  }\n}\n","import {\n  Component,\n  OnInit,\n  OnDestroy,\n  ViewChild,\n  AfterViewInit,\n  Input,\n} from '@angular/core';\nimport {\n  ColumnDatatableFilterValue,\n  ParamFindData,\n  TColumnDataTableDef,\n  Enum_FilterOperator,\n  TypeFieldDataView,\n  CrudDataService_ListView,\n  ANDFilters,\n  CrudFiltreRecherche,\n  Enum_FilterMatchMode,\n  ExportListDataParams,\n  FiltreRequete,\n  ORofAndFilters,\n  ResponseResolveCrudList,\n  isColTypeBooleen,\n  isColTypeDate,\n  isColTypeNombre,\n  isColTypeTexte,\n  FiltreRechercheService,\n  NotificationService,\n  readProperty,\n  TOptionListeSelectValues,\n  getListeTypeExportFormat,\n  getListeTypeExportOrientation,\n  TOptionExportData,\n  TExportFormat,\n  TExportPageOrientation,\n  getListeTypeExportHeaderDataValueFrom,\n  TExportHeaderDataValueFrom,\n} from 'sgc-share-lib';\nimport { BehaviorSubject, Subscription } from 'rxjs';\nimport { ActivatedRoute, Router } from '@angular/router';\n\n//import { LazyLoadEvent, ConfirmationService, MessageService, MenuItem, FilterMatchMode } from 'primeng/api';\nimport * as fileSaver from 'file-saver';\n//import { MenuDataService } from '../../core/services/app-svc/menu-data.service';\n//import { CrudDataService } from '../../core/services/utils/crud.service';\n//import { RouteStateService } from '../../core/services/app-svc/route-state.service';\n//import { NotificationService } from '../../core/services/app-svc/notification.service';\n//import { ReloadViewService } from '../../core/services/app-svc/reload-view.service';\n//import { UserContextService } from '../../core/services/app-svc/user-context.service';\n//import { LegacyPageEvent as PageEvent } from '@angular/material/legacy-paginator';\nimport { MatSort } from '@angular/material/sort';\nimport {\n  CrudDataService_ReportView,\n  CrudDataService_StatisticsView,\n  CrudDataSource,\n  TypeViewList,\n} from './model/sg-ng-model';\nimport { PageEvent } from '@angular/material/paginator';\n\n@Component({\n    selector: 'sgc-ng-crud-view-list',\n    templateUrl: './sgc-ng-crud-view-list.component.html',\n    styleUrls: ['./sgc-ng-crud-view-list.component.scss'],\n    standalone: false\n})\nexport class SgcNgCrudViewListComponent<TDataList, TDataImport, TDataExport>\n  implements OnInit, AfterViewInit, OnDestroy {\n  @Input() css_heightMainDiv: string = '300';\n  @Input() crudDataService_List!: CrudDataService_ListView<TDataList>;\n  @Input() crudDataService_Report?: CrudDataService_ReportView<TDataExport>;\n  @Input()\n  crudDataService_Statistics?: CrudDataService_StatisticsView<TDataList>;\n  @Input() useRoutingForNavigate: boolean = false;\n  @Input() selectedTypeViewList: TypeViewList = TypeViewList.DATAGRID_VIEW;\n\n  isMenuVisible: boolean = true;\n  isPanelExportOpen: boolean = false;\n  toggleMenuSubscription!: Subscription;\n  loadingSubscription!: Subscription;\n\n  listeTypeExportFormat: Array<TOptionListeSelectValues> = getListeTypeExportFormat();\n  listeTypeExportOrientationPage: Array<TOptionListeSelectValues> = getListeTypeExportOrientation();\n  listeTypeExportHeaderDataValueFrom: Array<TOptionListeSelectValues> = getListeTypeExportHeaderDataValueFrom();\n  selectedExportOption: TOptionExportData = { exportFormat: TExportFormat.EXCEL, exportPageOrientation: TExportPageOrientation.PORTRAIT, exportHeaderDataValueFrom: TExportHeaderDataValueFrom.FIELD_LABEL, exportListeColsData: [], exportShowRowNumber: false };\n  //selectedColsExport: Array<string>=[];\n  listeAllColsExport: Array<TOptionListeSelectValues> = [];\n\n  changeActiveMenuSubscription!: Subscription;\n  //tabMenu: TabMenuData = undefined;\n\n  //****************************************************************\n  //**** Variables à initialiser à partir du service CRUD ***********************\n  svc_dataKeyField!: string;\n  svc_titreViewDataList?: string;\n  svc_cols: Array<TColumnDataTableDef> = [];\n  svc_exportColumns?: any[];\n  svc_globalFiltersColumns!: string[];\n  svc_urlNavigatePageCreateOrEdit?: string;\n  svc_urlNavigatePageImport?: string;\n\n  //********************************************************************\n  nbRowsPage!: number;\n  pageCourant: number = 0;\n  totalRecords: number = 0;\n  //selectedData?: TDataList;\n\n  pageEvent?: PageEvent;\n\n  listeColsGlobalFilter: string[] = [];\n  paramsFindData!: ParamFindData;\n\n  dataSource!: CrudDataSource<TDataList>;\n  //@ViewChild(MatPaginator) paginator!: MatPaginator | null;\n  @ViewChild(MatSort) sort!: MatSort | null;\n\n  showCreateButton: boolean = true;\n  showEditButton: boolean = true;\n  showDeleteButton: boolean = true;\n  showImportButton: boolean = false;\n  showMaintenanceButton: boolean = false;\n  showExportButton: boolean = false;\n\n  filtreRechercheSubscription!: Subscription;\n  filtres: ORofAndFilters = [];\n  staticFiltres: ORofAndFilters = [];\n  crudFiltreRecherhe: CrudFiltreRecherche = new CrudFiltreRecherche();\n  searchGlobalInputValue!: string;\n\n  //heightCssMainDiv!: string;\n\n  //itemsExportButton: MenuItem[];\n  //itemsMaintenanceButton: MenuItem[];\n\n  exportParams: ExportListDataParams = {\n    title: 'Liste des données',\n    useLandscape: false,\n    useHeaderDataFieldName: false,\n    addNumeroOrdre: false,\n    listeColsData: [],\n    periodeReference: '',\n  };\n  //currentArb: Number = 0;\n  //currentCecId: Number = 0;\n\n  constructor(\n    //protected menuDataService: MenuDataService,\n    protected route: ActivatedRoute,\n    protected router: Router,\n    //protected routeStateService: RouteStateService,\n    /*protected crudDataService: CrudDataService<\n      TDataList,\n      TDataCreate,\n      TDataEdit,\n      TDataImport,\n      TDataExport\n    >,*/\n    protected readonly notificationService: NotificationService,\n    protected filtreRechercheService: FiltreRechercheService //protected reloadViewService: ReloadViewService, //protected userCtxtService: UserContextService\n  ) { }\n\n  myInit = (): void => {\n    this.crudDataService_List.myInit_ListView();\n    this.listeAllColsExport = this.crudDataService_List.cols_Datatable.map(elt => ({ label: elt.header, value: elt.field } as TOptionListeSelectValues))\n    this.selectedExportOption.exportListeColsData = this.crudDataService_List.cols_Datatable.filter(elt => elt.visible == true).map(elt => elt.field);\n  };\n\n  onPrepareList = (responseResolveData: any): void => {\n    this.crudDataService_List.onPrepare_ListView(responseResolveData);\n  };\n\n  setStaticParameters = (): void => {\n    this.crudDataService_List.setStaticParameters_ListView();\n  };\n\n  afterDelete = (): void => {\n    this.crudFiltreRecherhe.validateChangeFiltre(this.filtres);\n  };\n\n  ngOnInit(): void {\n    console.log(\n      '******** SgcNgCrudViewListComponent  -- NGONINIT -- css_heightMainDiv ******************'\n    );\n    console.log(this.css_heightMainDiv);\n    //this.heightCssMainDiv = this.css_heightMainDiv;\n    //-----------------------------\n    //this.nbRowsPage = this.crudDataService.nbRowsDatatablePage;\n    this.resetParamsFindData();\n    this.dataSource = new CrudDataSource(this.crudDataService_List);\n\n    this.svc_dataKeyField = this.crudDataService_List.dataKeyField;\n    this.svc_titreViewDataList = this.crudDataService_List.titreViewDataList;\n    this.svc_cols = this.crudDataService_List.cols_Datatable;\n    this.svc_exportColumns = this.crudDataService_List.exportColumns\n      ? this.crudDataService_List.exportColumns\n      : this.svc_cols.map((col) => ({\n        title: col.header,\n        dataKey: col.field,\n      }));\n    this.svc_globalFiltersColumns = this.crudDataService_List\n      .globalFiltersColumns\n      ? this.crudDataService_List.globalFiltersColumns\n      : this.svc_cols\n        .filter((col1) => col1.visible == true)\n        .map((col2) => col2.field);\n    this.svc_urlNavigatePageCreateOrEdit =\n      this.crudDataService_List.urlNavigatePageCreateOrEdit;\n    this.svc_urlNavigatePageImport =\n      this.crudDataService_List.urlNavigatePageImport;\n    //-------------------------------------\n    this.crudDataService_List.navigateToEdit_Subject.next(false);\n    this.crudDataService_List.navigateToCreate_Subject.next(false);\n    this.crudDataService_List.navigateToImport_Subject.next(false);\n    //------------------------------------\n    console.log(\n      '**** VIEW CRUD COMPONENT LISTENER - NGONINIT - get constantscss*****'\n    );\n\n    /*if (this.heightCssMainDiv == undefined) {\n      this.heightCssMainDiv = readProperty('heightMiddleView');\n      console.log(\n        '**** VIEW CRUD COMPONENT LISTENER - NGONINIT - get heightCssMainDiv*****'\n      );\n      console.log(this.heightCssMainDiv);\n    }*/\n    //-------------------------------------\n    /*//----- Commentaires du 21/11/2023 ----\n    this.showMaintenanceButton =\n      this.userCtxtService.priveFN_isShowButtonMaintenance();\n\n    this.isMenuVisible = this.menuDataService.visible;\n    this.toggleMenuSubscription = this.menuDataService.toggleSideBar.subscribe(\n      (data: any) => {\n        console.log('**** VIEW CRUD COMPONENT LISTENER - NGONINIT *****');\n        console.log(data);\n        this.isMenuVisible = data;\n      }\n    );*/\n\n    let responseResolve: ResponseResolveCrudList =\n      this.route.snapshot.data['listData'];\n    console.log('****** GENERIC VIEW - ResponseResolve *******');\n    console.log(responseResolve);\n    this.onPrepareList(responseResolve?.response);\n    this.myInit();\n\n    console.log('****** GENERIC VIEW - SVC_COLS *******');\n    console.log(this.svc_cols);\n\n    console.log(\n      '****** GENERIC VIEW - BEFORE filtreRechercheSubscription *******'\n    );\n    console.log(this.crudFiltreRecherhe.reloadOnFiltreChange);\n    this.filtreRechercheSubscription =\n      this.crudFiltreRecherhe.reloadOnFiltreChange.subscribe(\n        (data: string[]) => {\n          console.log('****** GENERIC VIEW - BEFORE ONFETCH *******');\n          this.onFetch();\n        }\n      );\n    this.onFetch();\n    console.log(\n      '****** GENERIC VIEW - AFTER filtreRechercheSubscription *******'\n    );\n  }\n\n\n\n  ngAfterViewInit(): void {\n    // If the user changes the sort order, reset back to the first page.\n    /*this.sort?.sortChange.subscribe({\n      next() {\n        if (this.paginator != undefined) this.paginator.pageIndex = 0;\n      },\n    });\n\n    this.paginator?.page.pipe(tap(() => this.onFetch())).subscribe();*/\n    /*if (this.heightCssMainDiv == undefined) {\n      this.heightCssMainDiv = readProperty('heightMiddleView') + 'px';\n      console.log(\n        '**** VIEW CRUD COMPONENT LISTENER - NGAFTERVIEWINIT - get heightCssMainDiv*****'\n      );\n      console.log(this.heightCssMainDiv);\n      //this.heightCssMainDiv = \"300px\";\n    }*/\n  }\n\n  ngOnDestroy(): void {\n    this.filtreRechercheSubscription.unsubscribe();\n    //this.toggleMenuSubscription.unsubscribe();\n  }\n\n  refreshParamsFindData(): void {\n    this.paramsFindData = {\n      listeFiltres: this.filtres,\n      page: this.pageCourant,\n      size: this.nbRowsPage,\n    };\n  }\n\n  resetParamsFindData() {\n    this.searchGlobalInputValue = '';\n    this.pageCourant = 0;\n    this.nbRowsPage = this.crudDataService_List.nbRowsDataTableByPage;\n    this.filtres = this.staticFiltres;\n    this.refreshParamsFindData();\n  }\n\n  /*handlePageEvent(e: PageEvent) {\n    this.pageEvent = e;\n    this.totalRecords = e.length;\n    this.nbRowsPage = e.pageSize;\n    this.pageCourant = e.pageIndex;\n    this.onFetch();\n  }*/\n\n  handlePaginatorChangeEvent(e?: any) {\n    console.log(\n      '**** VIEW CRUD COMPONENT - handlePaginatorChangeEvent - indexpage - NbRowsPage '\n    );\n    console.log(e);\n    console.log(this.pageCourant);\n    console.log(this.nbRowsPage);\n    this.onFetch();\n  }\n\n  applyGlobalFilter(event: Event) {\n    //const filterValue = (event.target as HTMLInputElement).value;\n    const filterValue = this.searchGlobalInputValue;\n    console.log(\n      '**** VIEW CRUD COMPONENT LISTENER - APPLYFILTER --- Show filter value : '\n    );\n    console.log(filterValue);\n    if (filterValue) {\n      let myMapFilter: Map<string, ColumnDatatableFilterValue> = new Map();\n      //myMapFilter.set(this.svc_dataKeyField,{operator:TFilterOperator.EQUALS,value:filterValue} as ColumnDatatableFilterValue);\n      myMapFilter.set(this.svc_globalFiltersColumns.join(','), {\n        operator: Enum_FilterOperator.EQUALS,\n        value: filterValue,\n      } as ColumnDatatableFilterValue);\n      this.paramsFindData.filters = myMapFilter;\n    } else {\n      this.paramsFindData.filters = undefined;\n    }\n    this.onFetch();\n  }\n\n  resetGlobalFilter(event: Event) {\n    this.searchGlobalInputValue = '';\n    this.applyGlobalFilter(event);\n  }\n\n  /*updateFilterData(filterdata: any) {\n    console.log('******** VIEW CRUD - UPDATE FILTRE *************');\n    console.log(filterdata);\n    this.filtres = filterdata;\n    this.crudFiltreRecherhe.validateChangeFiltre(this.filtres);\n  }*/\n\n  /*getColumnsFilters(): Array<TColumnDataTableDef> {\n    return this.svc_cols.filter(\n      (elt1) => elt1.listFilterOperators != undefined\n    );\n  }*/\n\n  getColumnsToDisplay(): Array<TColumnDataTableDef> {\n    return this.svc_cols.filter(elt => elt.visible == true);\n    //return this.svc_cols.filter(elt => elt.visible==true).map(elt => ({...elt, header:'list_'+elt.field}));\n  }\n\n  getColumnsNameToDisplay(): Array<string> {\n    return this.getColumnsToDisplay().map((elt1) => elt1.field);\n  }\n\n  /*************************************************************/\n  /** */\n  combineStaticFiltertoFilter() {\n    this.setStaticParameters();\n    console.log(\n      '****** VIEW CRUD COMPONENT - COMBINESTATICFILTERTOFILTER - Show staticParameters *****'\n    );\n    console.log(this.staticFiltres);\n    if (this.staticFiltres != undefined && this.staticFiltres.length > 0) {\n      if (this.filtres == undefined || this.filtres.length == 0) {\n        this.filtres = this.staticFiltres;\n      } else {\n        let newFiltres: ORofAndFilters = [];\n        this.filtres.forEach((orPredicates) => {\n          this.staticFiltres.forEach((staticOrPredicates: ANDFilters) => {\n            newFiltres.push({\n              value: [...orPredicates.value, ...staticOrPredicates.value],\n              visible: orPredicates.visible,\n            });\n          });\n        });\n        this.filtres = newFiltres;\n      }\n    }\n  }\n\n  /*************************************************************/\n  /** */\n  combineDatatableFilterValues() {\n    if (this.filtres == undefined) {\n      this.filtres = [];\n    }\n    let dtFilters: Map<string, ColumnDatatableFilterValue>;\n    dtFilters = this.paramsFindData.filters\n      ? this.paramsFindData.filters\n      : new Map(); //?.((value) => value != undefined);\n\n    console.log(\n      '****** VIEW CRUD COMPONENT - combineDatatableFilterValues - Show FilterValues *****'\n    );\n    console.log(dtFilters);\n    console.log(dtFilters.size);\n    console.log(dtFilters.entries());\n\n    if (dtFilters != undefined && dtFilters.size > 0) {\n      //----- Construire le filtre du Datatable ----\n\n      //----- Initialiser le nouveau prédicat avec les prédicats déjà contenus dans le filtre actuel ---\n      let newOrOfAndFilters: ORofAndFilters = [];\n      if (this.filtres.length > 0) {\n        this.filtres.forEach((orPredicates) => {\n          newOrOfAndFilters.push({\n            value: [...orPredicates.value],\n            visible: orPredicates.visible,\n          });\n        });\n      }\n\n      for (let [dtfilterKey, dtfilterValue] of dtFilters.entries()) {\n        console.log(\n          '****** VIEW CRUD COMPONENT - combineDatatableFilterValues - Entry Map filtervalue *****'\n        );\n        console.log(dtfilterKey + ' : ' + dtfilterValue.value);\n\n        let colsFilterStr: string[] = [];\n        colsFilterStr = dtfilterKey.split(',');\n\n        for (let colfilterstr of colsFilterStr) {\n          let colFilter: TColumnDataTableDef | undefined = this.svc_cols.find(\n            (col) => col.field == colfilterstr\n          );\n\n          let newAndFilter: ANDFilters = { value: [], visible: true };\n\n          if (\n            dtfilterValue.value != undefined &&\n            dtfilterValue.value.length != 0 &&\n            colFilter != undefined\n          ) {\n            let colFilterOperator: Enum_FilterOperator = dtfilterValue.operator;\n\n            if (colFilter.typeData == TypeFieldDataView.TEXTE) {\n              colFilterOperator = Enum_FilterOperator.CONTAINS;\n            }\n            newAndFilter.value.push({\n              name: colfilterstr,\n              value: dtfilterValue.value,\n              operator: colFilterOperator,\n              active: true,\n              ignoreWhenNull: true,\n            } as FiltreRequete);\n          }\n\n          console.log(\n            '****** VIEW CRUD COMPONENT - combineDatatableFilterValues - AndFilter *****'\n          );\n          console.log(newAndFilter);\n\n          newOrOfAndFilters.push({\n            value: [...newAndFilter.value],\n            visible: true,\n          });\n        }\n\n        console.log(\n          '****** VIEW CRUD COMPONENT - combineDatatableFilterValues - OrOfAndFilters *****'\n        );\n        console.log(newOrOfAndFilters);\n\n        /*let colFilter: TColumnDataTableDef | undefined = this.svc_cols.find(\n          (col) => col.field == dtfilterKey\n        );\n        if (\n          dtfilterValue.value != undefined &&\n          colFilter != undefined &&\n          (colFilter.typeData != TypeFieldData.TEXTE ||\n            dtfilterValue.value != '')\n        ) {\n          newAndFilter.value.push({\n            name: dtfilterKey,\n            value: dtfilterValue.value,\n            operator: dtfilterValue.operator,\n            active: true,\n            ignoreWhenNull: true,\n          } as FiltreRequete);\n        }\n        console.log(\n        '****** VIEW CRUD COMPONENT - combineDatatableFilterValues - Filtres *****'\n      );\n      console.log(newAndFilter);\n        */\n      }\n\n      //----- Mettre à jour le filtre principal en fonction des données du filtre du Datatable ----\n\n      if (newOrOfAndFilters.length > 0) {\n        this.filtres = newOrOfAndFilters;\n      }\n    }\n  }\n\n  /*************************************************************/\n  /** */\n  onFetch() {\n    console.log(\n      '******** VIEW CRUD - ONFETCH (initLoadingSubject to true before fetching data) ************'\n    );\n    //this.resetParamsFindData();\n    this.filtres = [];\n    this.combineStaticFiltertoFilter();\n    this.combineDatatableFilterValues();\n    this.refreshParamsFindData();\n\n    console.log('******** VIEW CRUD - ONFETCH (critères) ************');\n    console.log(this.filtres);\n\n    console.log(\n      '******** VIEW CRUD - ONFETCH (critères as string) ************'\n    );\n    console.log(this.paramsFindData);\n\n    this.dataSource.loadData(this.paramsFindData);\n    this.crudDataService_List.selectedData = undefined;\n\n    /*setTimeout(() => {\n      this.crudDataService\n        .findDataFromServer(this.paramsFindData)\n        .subscribe((response) => {\n          console.log('RECHERCHE DATA - ONFETCH');\n          console.log(response);\n          if (response.reponseOK) {\n            this.dataSource.data = response.data.pageData;\n            this.totalRecords = response.data.totalRecords;\n            this.dataSource.paginator = this.paginator;\n            this.dataSource.sort = this.sort;\n            this.loadingSubject.next(false);\n            return;\n          } else {\n            this.notificationService.error(response.message);\n            console.log(response);\n            this.loadingSubject.next(false);\n            return;\n          }\n        });\n    }, 1000);*/\n  }\n\n  /*************************************************************/\n  /** */\n  navigateToEditView() {\n    console.log('***** VIEW CRUD COMPONENT : EDIT DATA ******');\n    console.log('***** ROW DATA ******');\n    console.log(this.crudDataService_List.selectedData);\n    if (this.crudDataService_List.selectedData != undefined) {\n      if (this.useRoutingForNavigate) {\n        this.router.navigate([this.svc_urlNavigatePageCreateOrEdit], {\n          queryParams: {\n            id: this.crudDataService_List.getIDValue(\n              this.crudDataService_List.selectedData\n            ), //.get(this.svc_dataKeyField),\n            urlPage: this.svc_urlNavigatePageCreateOrEdit,\n          },\n        });\n      } else {\n        this.crudDataService_List.navigateToEdit_Subject.next(true);\n      }\n      //this.routeStateService.add(this.menudataService.menuitem_.label, this.menudataService.menuitem_detailcontrat.routerLink, { idMenu: this.menudataService.menuitem_detailcontrat.id, params: {numContrat: \"\"+rowData?.connum.toString()}}, true);\n    }\n    return;\n  }\n\n  /*************************************************************/\n  /** */\n  navigateToCreateView() {\n    console.log('***** VIEW CRUD COMPONENT : CREATE DATA ******');\n    //console.log('***** EVENT ******');\n    //console.log(event);\n    if (this.useRoutingForNavigate) {\n      this.router.navigate([this.svc_urlNavigatePageCreateOrEdit], {\n        queryParams: { urlPage: this.svc_urlNavigatePageCreateOrEdit },\n      });\n    } else {\n      this.crudDataService_List.navigateToCreate_Subject.next(true);\n    }\n    //this.routeStateService.add(this.menudataService.menuitem_detailcontrat.label, this.menudataService.menuitem_detailcontrat.routerLink, { idMenu: this.menudataService.menuitem_detailcontrat.id, params: {numContrat: \"\"+rowData?.connum.toString()}}, true);\n    return;\n  }\n\n  /*************************************************************/\n  /** */\n  navigateToImportView() {\n    console.log('***** VIEW CRUD COMPONENT : Navigate to Import View ******');\n    //console.log('***** EVENT ******');\n    //console.log(event);\n    console.log(this.svc_urlNavigatePageImport);\n\n    if (this.useRoutingForNavigate) {\n      if (this.svc_urlNavigatePageImport != null) {\n        this.router.navigate([this.svc_urlNavigatePageImport], {\n          queryParams: { urlPage: this.svc_urlNavigatePageImport },\n        });\n        //this.routeStateService.add(this.menudataService.menuitem_detailcontrat.label, this.menudataService.menuitem_detailcontrat.routerLink, { idMenu: this.menudataService.menuitem_detailcontrat.id, params: {numContrat: \"\"+rowData?.connum.toString()}}, true);\n      }\n    }else {\n      this.crudDataService_List.navigateToImport_Subject.next(true);\n    }\n  }\n\n  /*************************************************************/\n  /** */\n  deleteData() {\n    console.log('***** VIEW CRUD COMPONENT : DELETE DATA ******');\n    console.log('***** ROWDATA ******');\n    console.log(this.crudDataService_List.selectedData);\n    if (this.crudDataService_List.selectedData != undefined) {\n      const idRowData: any = this.crudDataService_List.getIDValue(\n        this.crudDataService_List.selectedData\n      );\n      this.notificationService.confirmation(\n        'Voulez-vous supprimer cette enregistrement? ',\n        'Confirmation suppression',\n        () => {\n          this.crudDataService_List\n            .deleteById(idRowData)\n            .subscribe((response) => {\n              if (response.reponseOK) {\n                //this.filtreRechercheService.validateChangeFiltre(undefined)\n                this.afterDelete();\n                this.notificationService.success(response.message);\n                //this.loading = false;\n                return;\n              } else {\n                console.log('--- Error1 ---');\n                console.log(response.message);\n                this.notificationService.error(response.message);\n                return;\n              }\n            }); /*.catch(\n              (error) => {\n                this.toastService.addSingle('error', '', 'Erreur système - suppression des données!');\n                console.log(\"--- Error2 ---\");\n                console.log(error);\n                //this.loading = false;\n                return;\n              });*/\n        }\n      );\n    }\n    return;\n  }\n\n  /*************************************************************/\n  /** */\n  /*clearAllData() {\n    console.log('***** VIEW CRUD COMPONENT : CLEAR ALL DATA ******');\n\n    this.notificationService.confirmation(\n      'Attention! vous allez effacer la liste des enregistrements? ',\n      'Confirmation suppression',\n      () => {\n        this.crudDataService.deleteAll().subscribe((response) => {\n          if (response.reponseOK) {\n            //this.filtreRechercheService.validateChangeFiltre(undefined)\n            this.afterDelete();\n            this.notificationService.success(response.message);\n            return;\n          } else {\n            console.log('--- Error1 ---');\n            console.log(response.message);\n            this.notificationService.error(response.message);\n            return;\n          }\n        });\n      }\n    );\n    return;\n  }*/\n\n  /*************************************************************/\n  rowClicked(mySelectedRowData: TDataList) {\n    console.log('***** VIEW CRUD COMPONENT -- RowClicked  ******');\n    console.log(mySelectedRowData);\n\n    this.crudDataService_List.selectedData = mySelectedRowData;\n  }\n\n  rowDblClicked(mySelectedRowData: TDataList) {\n    console.log('***** VIEW CRUD COMPONENT -- RowDblClicked  ******');\n    console.log(mySelectedRowData);\n    this.crudDataService_List.selectedData = mySelectedRowData;\n    this.navigateToEditView();\n  }\n\n  isSelectedDataRow(myrow: TDataList) {\n    return this.crudDataService_List.selectedData == myrow;\n  }\n  /** */\n  isColTypeDate(col: TColumnDataTableDef) {\n    return isColTypeDate(col);\n  }\n\n  isColTypeBooleen(col: TColumnDataTableDef) {\n    return isColTypeBooleen(col);\n  }\n\n  isColTypeNombre(col: TColumnDataTableDef) {\n    return isColTypeNombre(col);\n  }\n\n  isColTypeTexte(col: TColumnDataTableDef) {\n    return isColTypeTexte(col);\n  }\n\n  //********************************************************* */\n  actionCustomGridView() {\n    console.log(\n      '******** VIEWCRUD PERSONNALISER GRILLE AFFICHAGE ******************'\n    );\n  }\n  //********************************************************* */\n  /*exportPDF() {\n    this.export('pdf');\n  }\n\n  exportEXCEL() {\n    this.export('xlsx');\n  }\n\n  exportCSV() {\n    this.export('csv');\n  }*/\n  //-----------\n  export() {\n    const typeExport: string = this.selectedExportOption.exportFormat;\n    const orientationExport: boolean = this.selectedExportOption.exportPageOrientation === TExportPageOrientation.LANDSCAPE ? true : false;\n    const headerValueUseExport: boolean = this.selectedExportOption.exportHeaderDataValueFrom === TExportHeaderDataValueFrom.FIELD_NAME ? true : false;\n\n    console.log('********   VIEWCRUD EXPORT -- ExportParams ***************');\n    console.log(this.exportParams);\n\n    this.exportParams.title = this.crudDataService_List.titreViewDataList\n    this.exportParams.useLandscape = orientationExport;\n    this.exportParams.useHeaderDataFieldName = headerValueUseExport;\n    this.exportParams.addNumeroOrdre = this.selectedExportOption.exportShowRowNumber;\n    this.exportParams.listeColsData = this.selectedExportOption.exportListeColsData;\n\n    this.crudDataService_List\n      .exportData(\n        typeExport,\n        this.exportParams,\n        this.paramsFindData.listeFiltres\n      )\n      .subscribe({\n        next: (res) => {\n          console.log(\n            '************** VIEWCRUD - EXPORT ***********************'\n          );\n          console.log(res);\n\n          const blob = new Blob([res.body], {\n            type: res.headers.get('content-type'),\n          });\n          const filename: string = res.headers\n            .get('content-disposition')\n            ?.split('filename=')[1];\n          console.log(\n            '************** VIEWCRUD - EXPORT - FILEOUTPUT NAME***********************'\n          );\n          console.log(filename);\n          this.isPanelExportOpen = false;\n          fileSaver.saveAs(blob, filename);\n        },\n        error: (error) => {\n          console.log(\n            '************** VIEWCRUD - EXPORT -- ERROR ***********************'\n          );\n          console.log(error);\n          this.notificationService.error('Echec export.');\n        },\n      });\n  }\n\n  /*************************************************************/\n\n  getFilterTypeFromTypeFieldData(typefielddata: TypeFieldDataView): string {\n    if (TypeFieldDataView.TEXTE == typefielddata) {\n      return 'text';\n    } else if (TypeFieldDataView.NOMBRE == typefielddata) {\n      return 'numeric';\n    } else if (TypeFieldDataView.BOOLEEN == typefielddata) {\n      return 'boolean';\n    } else if (TypeFieldDataView.DATE_HEURE == typefielddata) {\n      return 'date';\n    } /*else if (TypeFieldDataView.HEURE == typefielddata) {\n      return 'text';\n    } else if (TypeFieldDataView.FILE_DOC == typefielddata) {\n      return 'text';\n    }else if (TypeFieldDataView.FILE_IMAGE == typefielddata) {\n      return 'date';\n    }*/ else {\n      return 'text';\n    }\n  }\n\n  /*************************************************************/\n  getDefaultFilterMatchmodeFromTypeFieldData(\n    typefielddata: TypeFieldDataView\n  ): string {\n    if (TypeFieldDataView.TEXTE == typefielddata) {\n      return Enum_FilterMatchMode.CONTAINS;\n    } else if (TypeFieldDataView.NOMBRE == typefielddata) {\n      return Enum_FilterMatchMode.EXACT;\n    } else if (TypeFieldDataView.BOOLEEN == typefielddata) {\n      return Enum_FilterMatchMode.EXACT;\n    } else if (TypeFieldDataView.DATE_HEURE == typefielddata) {\n      return Enum_FilterMatchMode.EXACT;\n    } else {\n      return Enum_FilterMatchMode.EXACT;\n    }\n  }\n  //---------------------------\n  /*getColWidth(col:TColumnDataTableDef):number{\n    return col.width?col.width:0\n  }*/\n\n  //-----------------------------------------------------\n  isTypeViewList_DataGrid(): boolean {\n    //return false;\n    return this.selectedTypeViewList == TypeViewList.DATAGRID_VIEW;\n  }\n\n  resetTypeViewListTo_DataGrid() {\n    this.selectedTypeViewList = TypeViewList.DATAGRID_VIEW;\n    this.onTypeViewListChange();\n  }\n\n  isTypeViewList_Report(): boolean {\n    return this.selectedTypeViewList == TypeViewList.REPORT_VIEW;\n  }\n\n  resetTypeViewListTo_Report() {\n    this.selectedTypeViewList = TypeViewList.REPORT_VIEW;\n    this.onTypeViewListChange();\n  }\n\n  isTypeViewList_Statistics(): boolean {\n    return this.selectedTypeViewList == TypeViewList.STATISTICS_VIEW;\n  }\n\n  resetTypeViewListTo_Statistics() {\n    console.log(\"********* SGC-NG-CRUD-VIEW-LIST-COMPONENT --> resetTypeViewListTo_Statistics 1 **************\");\n    console.log(this.selectedTypeViewList);\n    this.selectedTypeViewList = TypeViewList.STATISTICS_VIEW;\n    console.log(\"********* SGC-NG-CRUD-VIEW-LIST-COMPONENT --> resetTypeViewListTo_Statistics 2 **************\");\n    console.log(this.selectedTypeViewList);\n    this.onTypeViewListChange();\n  }\n\n  private onTypeViewListChange(): void { }\n\n  isSelectedTypeExportFormat_CSV(): boolean {\n    return this.selectedExportOption?.exportFormat == TExportFormat.CSV;\n  }\n\n}\n","<ng-template #customToolbarButtons>\n  <button mat-stroked-button matToolTip=\"List Data\" aria-label=\"List Data\" (click)=\"resetTypeViewListTo_DataGrid()\">\n    <mat-icon class=\"color_green\">list_alt</mat-icon>\n  </button>\n  <button mat-stroked-button matToolTip=\"Report Data\" aria-label=\"Report Data\" [disabled]=\"!crudDataService_Report\"\n    (click)=\"resetTypeViewListTo_Report()\">\n    <mat-icon>library_books</mat-icon>\n  </button>\n  <button mat-stroked-button matToolTip=\"Statistics\" aria-label=\"Statistics\" [disabled]=\"!crudDataService_Statistics\"\n    (click)=\"resetTypeViewListTo_Statistics()\">\n    <mat-icon>equalizer</mat-icon>\n  </button>\n</ng-template>\n\n<div class=\"main-div\" style=\"--heightViewCrud: {{ css_heightMainDiv }}\">\n  <!--div *ngIf=\"isTypeViewList_DataGrid()\"-->\n  <p>MA DATA TABLE</p>\n  <div class=\"spinner-container overlay\" *ngIf=\"dataSource.loading$ | async\">\n    <div class=\"center\">\n      <!--mat-spinner></mat-spinner-->\n      <mat-progress-spinner diameter=\"100\" mode=\"indeterminate\"></mat-progress-spinner>\n    </div>\n  </div>\n\n  <div class=\"datatable-toolbar-css\">\n    <mat-toolbar>\n      <mat-toolbar-row class=\"toolbar-row-title-css\">\n        <div>\n          <p>{{ crudDataService_List.titreViewDataList }}</p>\n        </div>\n        <div>\n          <ng-container *ngTemplateOutlet=\"customToolbarButtons\"></ng-container>\n        </div>\n      </mat-toolbar-row>\n      <mat-toolbar-row class=\"datatable-toolbar-row-filter-css\">\n        <div class=\"datatable-filter-default-css\">\n          <!--mat-form-field floatLabel=\"never\" appearance=\"standard\" class=\"datatable-filter-default-css\"-->\n          <!--mat-form-field appearance=\"standard\"  class=\"datatable-filter-default-css\" -->\n          <input matInput type=\"search\" (keydown.enter)=\"applyGlobalFilter($event)\" [(ngModel)]=\"searchGlobalInputValue\"\n            placeholder=\"search text\" class=\"searchInputCss\" #input />\n          <div>\n            <button *ngIf=\"searchGlobalInputValue\" mat-icon-button color=\"warn\" aria-label=\"Clear\"\n              (click)=\"resetGlobalFilter($event)\">\n              <mat-icon>close</mat-icon>\n            </button>\n            <button mat-icon-button color=\"accent\" (click)=\"applyGlobalFilter($event)\">\n              <mat-icon>search</mat-icon>\n            </button>\n          </div>\n          <!--/mat-form-field-->\n        </div>\n        <span class=\"my-toolbar-spacer\"></span>\n        <div class=\"wrapper-action-buttons\">\n          <button [disabled]=\"false\" matTooltip=\"Create-2\" matTooltipPosition=\"above\" (click)=\"navigateToCreateView()\">\n            <mat-icon color=\"primary\">add_circle</mat-icon>\n          </button>\n          <button [disabled]=\"!crudDataService_List.selectedData\" matTooltip=\"Edit\" matTooltipPosition=\"above\"\n            (click)=\"navigateToEditView()\">\n            <mat-icon color=\"primary\">create</mat-icon>\n          </button>\n          <button [disabled]=\"!crudDataService_List.selectedData\" matTooltip=\"Delete\" matTooltipPosition=\"above\"\n            (click)=\"deleteData()\">\n            <mat-icon color=\"warn\">delete</mat-icon>\n          </button>\n          \n\n          <button cdkOverlayOrigin #myExportOriginOverlay=\"cdkOverlayOrigin\"\n            (click)=\"isPanelExportOpen = !isPanelExportOpen\" [disabled]=\"false\" matTooltip=\"Export data\"\n            matTooltipPosition=\"above\" aria-label=\"Export data\">\n            <mat-icon color=\"primary\">browser_updated</mat-icon>\n          </button>\n          <ng-template cdkConnectedOverlay [cdkConnectedOverlayOrigin]=\"myExportOriginOverlay\"\n            [cdkConnectedOverlayOpen]=\"isPanelExportOpen\" cdkConnectedOverlayWidth=\"35%\"\n            >\n            <div class=\"overlayExportContainer\">\n              <!--section class=\"overlayExportBody\"-->\n              <!--mat-form-field-->\n              <div class=\"overlayRow\">\n                <label id=\"format-export-label\">Format export</label>\n                <mat-radio-group aria-labelledby=\"format-export-label\" class=\"format-export-radio-group\"\n                  [(ngModel)]=\"selectedExportOption.exportFormat\">\n                  <mat-radio-button *ngFor=\"let fmtExport of listeTypeExportFormat\" class=\"format-export-radio-button\"\n                    [value]=\"fmtExport.value\">{{fmtExport.label}}</mat-radio-button>\n                </mat-radio-group>\n              </div>\n              <!--/mat-form-field-->\n\n              <!--mat-form-field-->\n              <div class=\"overlayRow\" *ngIf=\"!isSelectedTypeExportFormat_CSV()\">\n                <label id=\"pageorientation-export-label\">Orientation page</label>\n                <mat-radio-group aria-labelledby=\"pageorientation-export-label\" class=\"orientation-export-radio-group\"\n                  [(ngModel)]=\"selectedExportOption.exportPageOrientation\">\n                  <mat-radio-button *ngFor=\"let orientExport of listeTypeExportOrientationPage\"\n                    class=\"orientation-export-radio-button\"\n                    [value]=\"orientExport.value\">{{orientExport.label}}</mat-radio-button>\n                </mat-radio-group>\n              </div>\n\n              <div class=\"overlayRow\">\n                <label id=\"header-data-export\">Header data</label>\n                <mat-radio-group aria-labelledby=\"header-data-export\" class=\"header-data-export-radio-group\"\n                  [(ngModel)]=\"selectedExportOption.exportHeaderDataValueFrom\">\n                  <mat-radio-button *ngFor=\"let headerDataValueExport of listeTypeExportHeaderDataValueFrom\"\n                    class=\"header-data-export-radio-button\"\n                    [value]=\"headerDataValueExport.value\">{{headerDataValueExport.label}}</mat-radio-button>\n                </mat-radio-group>\n              </div>\n\n              <div class=\"overlayRow\">\n                <label id=\"custom-cols-export\">Customize columns</label>\n                <mat-select aria-labelledby=\"custom-cols-export\" [(ngModel)]=\"selectedExportOption.exportListeColsData\" multiple>\n                  <mat-option *ngFor=\"let col of listeAllColsExport\" [value]=\"col.value\">{{col.value}}</mat-option>\n                </mat-select>\n              </div>\n\n              <div class=\"overlayRow\">\n                <label id=\"custom-row-number-export\">Add row number</label>\n                <mat-checkbox aria-labelledby=\"custom-row-number-export\" class=\"custom-row-number-export-class\" [(ngModel)]=\"selectedExportOption.exportShowRowNumber\">\n                </mat-checkbox>                \n              </div>\n              <!--/mat-form-field-->\n              <!--/section-->\n              <mat-divider class=\"section-separator\"></mat-divider>\n              <section class=\"overlayExportFooter\">\n                <button mat-raised-button color=\"accent\" (click)=\"isPanelExportOpen = false\">Annuler</button>\n                <button mat-raised-button color=\"primary\" (click)=\"export()\">Exporter</button>\n              </section>\n            </div>\n          </ng-template>\n\n          <button [disabled]=\"false\" matTooltip=\"Import data\" matTooltipPosition=\"above\" (click)=\"navigateToImportView()\">\n            <mat-icon color=\"primary\">publish</mat-icon>\n          </button>\n        </div>\n      </mat-toolbar-row>\n    </mat-toolbar>\n  </div>\n\n  <section class=\"datatable-container-default-css mat-elevation-z8\" tabindex=\"0\">\n    <table #myTable mat-table [dataSource]=\"dataSource\" matSort matSortDisableClear *ngIf=\"true\">\n      <ng-container *ngFor=\"let col of getColumnsToDisplay()\" [matColumnDef]=\"col.field\">\n        <!--span *ngIf=\"col.width\"-->\n        <th mat-header-cell *matHeaderCellDef [ngClass]=\"[col.styleClassHeader?col.styleClassHeader:'']\" mat-sort-header\n          [ngStyle]=\"{\n            width: col.css_width ? col.css_width + '%' : null,\n            'text-align': col.css_textAlign ? col.css_textAlign : null\n          }\">\n          {{ col.header }}\n        </th>\n        <td [ngStyle]=\"{\n            width: col.css_width ? col.css_width + '%' : null,\n            'text-align': col.css_textAlign ? col.css_textAlign : null\n          }\" mat-cell *matCellDef=\"let element\">\n          {{ element[col.field] }}\n        </td>\n      </ng-container>\n\n      <tr mat-header-row class=\"datatable-header-default-css\"\n        *matHeaderRowDef=\"getColumnsNameToDisplay(); sticky: true\"></tr>\n      <tr mat-row *matRowDef=\"let myRowData; columns: getColumnsNameToDisplay()\"\n        [ngClass]=\"{ selectedRowCss: isSelectedDataRow(myRowData) }\" (click)=\"rowClicked(myRowData)\"\n        (dblclick)=\"rowDblClicked(myRowData)\"></tr>\n    </table>\n  </section>\n  <div class=\"wrapper-paginator\">\n    <sgc-ng-paginator [totalElements]=\"dataSource.totalRecords\" [(taillePage)]=\"nbRowsPage\"\n      [(indexPageCourant)]=\"pageCourant\" [listeTaillesPages]=\"[5, 10, 15, 20, 25, 30, 40, 50]\"\n      (onPaginatorChangeEvent)=\"handlePaginatorChangeEvent($event)\"></sgc-ng-paginator>\n  </div>\n  <!--/div>\n\n  <div *ngIf=\"isTypeViewList_Report() && crudDataService_Report\">\n    <div class=\"report-toolbar-css\">\n      <mat-toolbar>\n        <mat-toolbar-row class=\"toolbar-row-title-css\">\n          <div>\n            <p>{{ crudDataService_Report.titreReportView }}</p>\n          </div>\n          <div>\n            <ng-container\n              *ngTemplateOutlet=\"customToolbarButtons\"\n            ></ng-container>\n          </div> </mat-toolbar-row\n      ></mat-toolbar>\n      <section\n        class=\"report-container-default-css mat-elevation-z8\"\n        tabindex=\"0\"\n      >\n        REPORT VIEW LIST\n      </section>\n    </div>\n\n    <div *ngIf=\"isTypeViewList_Statistics() && crudDataService_Statistics\">\n      <div class=\"statistics-toolbar-css\">\n        <mat-toolbar>\n          <mat-toolbar-row class=\"toolbar-row-title-css\">\n            <div>\n              <p>{{ crudDataService_Statistics.titreStatisticsView }}</p>\n            </div>\n            <div>\n              <ng-container\n                *ngTemplateOutlet=\"customToolbarButtons\"\n              ></ng-container>\n            </div> </mat-toolbar-row\n        ></mat-toolbar>\n        <section\n          class=\"statistics-container-default-css mat-elevation-z8\"\n          tabindex=\"0\"\n        >\n          STATISTICS VIEW LIST\n        </section>\n      </div>\n    </div>\n  </div-->\n</div>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSortModule } from '@angular/material/sort';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { SgcNgCrudViewListComponent } from './sgc-ng-crud-view-list.component';\nimport { SgcNgPaginatorModule } from 'sgc-ng-paginator';\nimport { RouterModule, Routes } from '@angular/router';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatSelectModule } from '@angular/material/select';\n\n/*const routes: Routes = [\n  {\n    path: '',\n    component: SgcNgCrudViewListComponent,\n  },\n];*/\n\n@NgModule({\n  declarations: [SgcNgCrudViewListComponent],\n  imports: [\n    CommonModule,\n    FormsModule,\n    ReactiveFormsModule,\n    RouterModule,\n    MatTableModule,\n    MatSortModule,\n    MatProgressSpinnerModule,\n    MatIconModule,\n    MatSnackBarModule,\n    MatDialogModule,\n    MatFormFieldModule,\n    MatInputModule,\n    MatButtonModule,\n    MatToolbarModule,\n    MatTooltipModule,\n    MatMenuModule,\n    SgcNgPaginatorModule,\n    OverlayModule,\n    MatRadioModule,\n    MatDividerModule,\n    MatCheckboxModule,\n    MatSelectModule\n    //RouterModule.forChild(routes),\n  ],\n  exports: [\n    SgcNgCrudViewListComponent,\n    MatTableModule,\n    MatSortModule,\n    MatProgressSpinnerModule,\n    MatIconModule,\n    MatSnackBarModule,\n    MatDialogModule,\n    MatFormFieldModule,\n    MatInputModule,\n    MatButtonModule,\n    MatToolbarModule,\n    MatTooltipModule,\n    MatMenuModule,\n    SgcNgPaginatorModule,\n    OverlayModule,\n    MatRadioModule,\n    MatDividerModule,\n    MatCheckboxModule,\n    MatSelectModule\n  ],\n})\nexport class SgcNgCrudViewListModule { }\n","/*\n * Public API Surface of sgc-ng-crud-view-list\n */\n\nexport * from './lib/sgc-ng-crud-view-list.service';\nexport * from './lib/sgc-ng-crud-view-list.component';\nexport * from './lib/sgc-ng-crud-view-list.module';\nexport * from './lib/model/sg-ng-model';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}