ontimize-web-ngx 15.0.0-beta.4 → 15.0.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/esm2020/lib/components/form/navigation/o-form.navigation.class.mjs +5 -2
  2. package/esm2020/lib/components/form/o-form.component.mjs +11 -2
  3. package/esm2020/lib/components/grid/o-grid.component.mjs +11 -1
  4. package/esm2020/lib/components/image/o-image.component.mjs +3 -3
  5. package/esm2020/lib/components/index.mjs +2 -1
  6. package/esm2020/lib/components/input/combo/combo-search/o-combo-search.component.mjs +3 -3
  7. package/esm2020/lib/components/input/currency-input/o-currency-input.component.mjs +4 -4
  8. package/esm2020/lib/components/input/file-input/o-file-input.component.mjs +2 -18
  9. package/esm2020/lib/components/input/o-form-service-component.class.mjs +7 -9
  10. package/esm2020/lib/components/o-service-component.class.mjs +3 -6
  11. package/esm2020/lib/components/table/column/cell-renderer/service/o-table-cell-renderer-service.component.mjs +26 -4
  12. package/esm2020/lib/components/table/extensions/header/table-menu/o-table-menu.component.mjs +20 -4
  13. package/esm2020/lib/components/table/o-table.component.mjs +4 -1
  14. package/esm2020/lib/components/tree/header/index.mjs +2 -0
  15. package/esm2020/lib/components/tree/header/tree-menu/o-tree-menu.component.mjs +33 -0
  16. package/esm2020/lib/components/tree/index.mjs +5 -0
  17. package/esm2020/lib/components/tree/o-tree-dao.service.mjs +43 -0
  18. package/esm2020/lib/components/tree/o-tree.component.mjs +523 -0
  19. package/esm2020/lib/components/tree/o-tree.datasource.mjs +79 -0
  20. package/esm2020/lib/components/tree/o-tree.module.mjs +24 -0
  21. package/esm2020/lib/components/tree/tree-node/tree-node.component.mjs +49 -0
  22. package/esm2020/lib/config/o-modules.mjs +8 -6
  23. package/esm2020/lib/directives/o-mat-error.directive.mjs +4 -1
  24. package/esm2020/lib/i18n/i18n.mjs +17 -8
  25. package/esm2020/lib/layouts/form-layout/o-form-layout-manager-base.class.mjs +1 -1
  26. package/esm2020/lib/ontimize-web-ngx.module.mjs +4 -3
  27. package/esm2020/lib/services/permissions/o-permissions.module.mjs +1 -3
  28. package/esm2020/lib/services/permissions/permissions.service.mjs +18 -8
  29. package/esm2020/lib/services/state/o-tree-component-state.class.mjs +4 -0
  30. package/esm2020/lib/services/state/o-tree-component-state.service.mjs +50 -0
  31. package/fesm2015/ontimize-web-ngx.mjs +6441 -5678
  32. package/fesm2015/ontimize-web-ngx.mjs.map +1 -1
  33. package/fesm2020/ontimize-web-ngx.mjs +6424 -5665
  34. package/fesm2020/ontimize-web-ngx.mjs.map +1 -1
  35. package/lib/components/form/o-form.component.d.ts +4 -1
  36. package/lib/components/grid/o-grid.component.d.ts +1 -0
  37. package/lib/components/index.d.ts +1 -0
  38. package/lib/components/input/file-input/o-file-input.component.d.ts +1 -1
  39. package/lib/components/table/extensions/header/table-menu/o-table-menu.component.d.ts +5 -0
  40. package/lib/components/table/o-table.component.d.ts +1 -1
  41. package/lib/components/tree/header/index.d.ts +1 -0
  42. package/lib/components/tree/header/tree-menu/o-tree-menu.component.d.ts +13 -0
  43. package/lib/components/tree/index.d.ts +4 -0
  44. package/lib/components/tree/o-tree-dao.service.d.ts +18 -0
  45. package/lib/components/tree/o-tree.component.d.ts +111 -0
  46. package/lib/components/tree/o-tree.datasource.d.ts +22 -0
  47. package/lib/components/tree/o-tree.module.d.ts +14 -0
  48. package/lib/components/tree/tree-node/tree-node.component.d.ts +14 -0
  49. package/lib/i18n/i18n.d.ts +9 -0
  50. package/lib/layouts/form-layout/o-form-layout-manager-base.class.d.ts +1 -0
  51. package/lib/ontimize-web-ngx.module.d.ts +2 -1
  52. package/lib/services/state/o-tree-component-state.class.d.ts +3 -0
  53. package/lib/services/state/o-tree-component-state.service.d.ts +13 -0
  54. package/package.json +1 -1
  55. package/theme.scss +2 -2
  56. package/theming/ontimize-style-v8.scss +2 -1
  57. package/theming/styles/density.scss +6 -2
  58. package/theming/styles/ontimize-v8/o-form-field-style.scss +6 -3
  59. package/theming/themes/ontimize-black-yellow.scss +13 -3
@@ -88,6 +88,9 @@ export declare class OFormComponent implements OnInit, OnDestroy, CanComponentDe
88
88
  onUpdateMode: EventEmitter<null>;
89
89
  onInitialMode: EventEmitter<null>;
90
90
  onFormModeChange: EventEmitter<number>;
91
+ onBeforeInsert: EventEmitter<any>;
92
+ onBeforeUpdate: EventEmitter<any>;
93
+ onBeforeDelete: EventEmitter<any>;
91
94
  onInsert: EventEmitter<any>;
92
95
  onUpdate: EventEmitter<any>;
93
96
  onDelete: EventEmitter<any>;
@@ -245,5 +248,5 @@ export declare class OFormComponent implements OnInit, OnDestroy, CanComponentDe
245
248
  protected isUpdateModePath(path: string): boolean;
246
249
  private showError;
247
250
  static ɵfac: i0.ɵɵFactoryDeclaration<OFormComponent, never>;
248
- static ɵcmp: i0.ɵɵComponentDeclaration<OFormComponent, "o-form", never, { "showHeader": "show-header"; "headerMode": "header-mode"; "headerPosition": "header-position"; "labelheader": "label-header"; "labelHeaderAlign": "label-header-align"; "headeractions": "header-actions"; "showHeaderActionsText": "show-header-actions-text"; "entity": "entity"; "keys": "keys"; "columns": "columns"; "service": "service"; "stayInRecordAfterEdit": "stay-in-record-after-edit"; "afterInsertMode": "after-insert-mode"; "serviceType": "service-type"; "queryOnInit": "query-on-init"; "parentKeys": "parent-keys"; "queryMethod": "query-method"; "insertMethod": "insert-method"; "updateMethod": "update-method"; "deleteMethod": "delete-method"; "layoutDirection": "layout-direction"; "layoutAlign": "layout-align"; "editableDetail": "editable-detail"; "keysSqlTypes": "keys-sql-types"; "undoButton": "undo-button"; "showHeaderNavigation": "show-header-navigation"; "oattr": "attr"; "includeBreadcrumb": "include-breadcrumb"; "detectChangesOnBlur": "detect-changes-on-blur"; "confirmExit": "confirm-exit"; "ignoreOnExit": "ignore-on-exit"; "queryFallbackFunction": "query-fallback-function"; "ignoreDefaultNavigation": "ignore-default-navigation"; "messageServiceType": "message-service-type"; }, { "onDataLoaded": "onDataLoaded"; "beforeCloseDetail": "beforeCloseDetail"; "beforeGoEditMode": "beforeGoEditMode"; "onFormModeChange": "onFormModeChange"; "onInsert": "onInsert"; "onUpdate": "onUpdate"; "onDelete": "onDelete"; "beforeInsertMode": "beforeInsertMode"; "beforeUpdateMode": "beforeUpdateMode"; "beforeInitialMode": "beforeInitialMode"; "onInsertMode": "onInsertMode"; "onUpdateMode": "onUpdateMode"; "onInitialMode": "onInitialMode"; "onCancel": "onCancel"; }, never, ["[o-form-toolbar-buttons]", "*"], false, never>;
251
+ static ɵcmp: i0.ɵɵComponentDeclaration<OFormComponent, "o-form", never, { "showHeader": "show-header"; "headerMode": "header-mode"; "headerPosition": "header-position"; "labelheader": "label-header"; "labelHeaderAlign": "label-header-align"; "headeractions": "header-actions"; "showHeaderActionsText": "show-header-actions-text"; "entity": "entity"; "keys": "keys"; "columns": "columns"; "service": "service"; "stayInRecordAfterEdit": "stay-in-record-after-edit"; "afterInsertMode": "after-insert-mode"; "serviceType": "service-type"; "queryOnInit": "query-on-init"; "parentKeys": "parent-keys"; "queryMethod": "query-method"; "insertMethod": "insert-method"; "updateMethod": "update-method"; "deleteMethod": "delete-method"; "layoutDirection": "layout-direction"; "layoutAlign": "layout-align"; "editableDetail": "editable-detail"; "keysSqlTypes": "keys-sql-types"; "undoButton": "undo-button"; "showHeaderNavigation": "show-header-navigation"; "oattr": "attr"; "includeBreadcrumb": "include-breadcrumb"; "detectChangesOnBlur": "detect-changes-on-blur"; "confirmExit": "confirm-exit"; "ignoreOnExit": "ignore-on-exit"; "queryFallbackFunction": "query-fallback-function"; "ignoreDefaultNavigation": "ignore-default-navigation"; "messageServiceType": "message-service-type"; }, { "onDataLoaded": "onDataLoaded"; "beforeCloseDetail": "beforeCloseDetail"; "beforeGoEditMode": "beforeGoEditMode"; "onFormModeChange": "onFormModeChange"; "onBeforeInsert": "onBeforeInsert"; "onBeforeUpdate": "onBeforeUpdate"; "onBeforeDelete": "onBeforeDelete"; "onInsert": "onInsert"; "onUpdate": "onUpdate"; "onDelete": "onDelete"; "beforeInsertMode": "beforeInsertMode"; "beforeUpdateMode": "beforeUpdateMode"; "beforeInitialMode": "beforeInitialMode"; "onInsertMode": "onInsertMode"; "onUpdateMode": "onUpdateMode"; "onInitialMode": "onInitialMode"; "onCancel": "onCancel"; }, never, ["[o-form-toolbar-buttons]", "*"], false, never>;
249
252
  }
@@ -85,6 +85,7 @@ export declare class OGridComponent extends AbstractOServiceComponent<OGridCompo
85
85
  pageSizeChanged(): void;
86
86
  sortColumnChanged(event: MatSelectChange): void;
87
87
  registerQuickFilter(arg: any): void;
88
+ protected getPaginationDataFromArray(dataArray: any[]): any[];
88
89
  static ɵfac: i0.ɵɵFactoryDeclaration<OGridComponent, [null, null, { optional: true; }]>;
89
90
  static ɵcmp: i0.ɵɵComponentDeclaration<OGridComponent, "o-grid", never, { "cols": "cols"; "showPageSize": "show-page-size"; "showSort": "orderable"; "sortableColumns": "sortable-columns"; "sortColumn": "sort-column"; "quickFilterColumns": "quick-filter-columns"; "gridItemHeight": "grid-item-height"; "refreshButton": "refresh-button"; "gutterSize": "gutter-size"; "fixedHeader": "fixed-header"; "showFooter": "show-footer"; "insertButtonPosition": "insert-button-position"; "insertButtonFloatable": "insert-button-floatable"; "showButtonsText": "show-buttons-text"; }, {}, ["inputGridItems"], ["[o-grid-toolbar][position=start]", "[o-grid-toolbar][position=end]", "[o-grid-toolbar]"], false, never>;
90
91
  }
@@ -41,3 +41,4 @@ export * from './dual-list-selector/index';
41
41
  export * from './o-data-toolbar/index';
42
42
  export * from './expandable-container/o-expandable-container.component';
43
43
  export * from './expandable-container/o-expandable-container.module';
44
+ export * from './tree/index';
@@ -54,5 +54,5 @@ export declare class OFileInputComponent extends OFormDataComponent implements O
54
54
  protected maxFileSizeValidator(control: UntypedFormControl): ValidationErrors;
55
55
  protected maxFilesValidator(control: UntypedFormControl): ValidationErrors;
56
56
  static ɵfac: i0.ɵɵFactoryDeclaration<OFileInputComponent, [{ optional: true; }, null, null]>;
57
- static ɵcmp: i0.ɵɵComponentDeclaration<OFileInputComponent, "o-file-input", never, { "oattr": "attr"; "olabel": "label"; "floatLabel": "float-label"; "oplaceholder": "placeholder"; "tooltip": "tooltip"; "tooltipPosition": "tooltip-position"; "tooltipShowDelay": "tooltip-show-delay"; "tooltipHideDelay": "tooltip-hide-delay"; "enabled": "enabled"; "orequired": "required"; "service": "service"; "entity": "entity"; "serviceType": "service-type"; "width": "width"; "readOnly": "read-only"; "clearButton": "clear-button"; "acceptFileType": "accept-file-type"; "maxFileSize": "max-file-size"; "multiple": "multiple"; "maxFiles": "max-files"; "showInfo": "show-info"; "splitUpload": "split-upload"; "additionalData": "additional-data"; "appearance": "appearance"; "hideRequiredMarker": "hide-required-marker"; "labelVisible": "label-visible"; }, { "onBeforeUpload": "onBeforeUpload"; "onBeforeUploadFile": "onBeforeUploadFile"; "onProgress": "onProgress"; "onProgressFile": "onProgressFile"; "onCancel": "onCancel"; "onCancelFile": "onCancelFile"; "onUpload": "onUpload"; "onUploadFile": "onUploadFile"; "onComplete": "onComplete"; "onCompleteFile": "onCompleteFile"; "onError": "onError"; "onErrorFile": "onErrorFile"; }, never, never, false, never>;
57
+ static ɵcmp: i0.ɵɵComponentDeclaration<OFileInputComponent, "o-file-input", never, { "acceptFileType": "accept-file-type"; "maxFileSize": "max-file-size"; "multiple": "multiple"; "maxFiles": "max-files"; "showInfo": "show-info"; "splitUpload": "split-upload"; "additionalData": "additional-data"; "appearance": "appearance"; "hideRequiredMarker": "hide-required-marker"; "labelVisible": "label-visible"; }, { "onBeforeUpload": "onBeforeUpload"; "onBeforeUploadFile": "onBeforeUploadFile"; "onProgress": "onProgress"; "onProgressFile": "onProgressFile"; "onCancel": "onCancel"; "onCancelFile": "onCancelFile"; "onUpload": "onUpload"; "onUploadFile": "onUploadFile"; "onComplete": "onComplete"; "onCompleteFile": "onCompleteFile"; "onError": "onError"; "onErrorFile": "onErrorFile"; }, never, never, false, never>;
58
58
  }
@@ -74,6 +74,11 @@ export declare class OTableMenuComponent implements OTableMenu, OnInit, AfterVie
74
74
  get enabledConfigurationMenu(): boolean;
75
75
  get showGroupByButton(): boolean;
76
76
  get showChartsOnDemandButton(): boolean;
77
+ get showFirstDivider(): boolean;
78
+ get showSecondDivider(): boolean;
79
+ get showAnyOptionThirdSection(): boolean;
80
+ get showAnyOptionFirstSection(): boolean;
81
+ get showAnyOptionSecondSection(): boolean;
77
82
  onShowsSelects(): void;
78
83
  onExportButtonClicked(): void;
79
84
  onChangeColumnsVisibilityClicked(): void;
@@ -278,7 +278,7 @@ export declare class OTableComponent extends AbstractOServiceComponent<OTableCom
278
278
  protected isInsideInactiveTab(): boolean;
279
279
  getComponentFilter(existingFilter?: any): any;
280
280
  protected getQuickFilterExpression(): Expression;
281
- protected getColumnFiltersExpression(): Expression;
281
+ getColumnFiltersExpression(): Expression;
282
282
  updatePaginationInfo(queryRes: any): void;
283
283
  initViewPort(data: any[]): void;
284
284
  protected setData(data: any, sqlTypes: any): void;
@@ -0,0 +1 @@
1
+ export * from './tree-menu/o-tree-menu.component';
@@ -0,0 +1,13 @@
1
+ import { EventEmitter } from '@angular/core';
2
+ import { MatCheckboxChange } from '@angular/material/checkbox';
3
+ import { MatMenu } from '@angular/material/menu';
4
+ import * as i0 from "@angular/core";
5
+ export declare class OTreeMenuComponent {
6
+ matMenu: MatMenu;
7
+ selectAllCheckbox: boolean;
8
+ selectAllCheckboxVisible: boolean;
9
+ onSelectCheckboxChange: EventEmitter<boolean>;
10
+ toggleShowCheckbox(event: MatCheckboxChange): void;
11
+ static ɵfac: i0.ɵɵFactoryDeclaration<OTreeMenuComponent, never>;
12
+ static ɵcmp: i0.ɵɵComponentDeclaration<OTreeMenuComponent, "o-tree-menu", never, { "selectAllCheckbox": "select-all-checkbox"; "selectAllCheckboxVisible": "select-all-checkbox-visible"; }, { "onSelectCheckboxChange": "onSelectCheckboxChange"; }, never, never, false, never>;
13
+ }
@@ -0,0 +1,4 @@
1
+ export * from './o-tree.module';
2
+ export * from './o-tree.component';
3
+ export * from './tree-node/tree-node.component';
4
+ export * from './header/index';
@@ -0,0 +1,18 @@
1
+ import { BehaviorSubject } from 'rxjs';
2
+ import { OTreeFlatNode } from './o-tree.component';
3
+ import * as i0 from "@angular/core";
4
+ export declare class OTreeDao {
5
+ protected _isLoadingResults: boolean;
6
+ protected loadingTimer: any;
7
+ dataChange: BehaviorSubject<any[]>;
8
+ sqlTypesChange: BehaviorSubject<object>;
9
+ get data(): any[];
10
+ rootLevelNodes: OTreeFlatNode[];
11
+ flatNodeMap: Map<OTreeFlatNode, any>;
12
+ setDataArray(data: Array<any>): import("rxjs").Observable<any[]>;
13
+ get isLoadingResults(): boolean;
14
+ set isLoadingResults(val: boolean);
15
+ protected cleanTimer(): void;
16
+ static ɵfac: i0.ɵɵFactoryDeclaration<OTreeDao, never>;
17
+ static ɵprov: i0.ɵɵInjectableDeclaration<OTreeDao>;
18
+ }
@@ -0,0 +1,111 @@
1
+ import { SelectionModel } from '@angular/cdk/collections';
2
+ import { FlatTreeControl } from '@angular/cdk/tree';
3
+ import { AfterViewInit, ElementRef, EventEmitter, Injector, OnDestroy, OnInit, TemplateRef } from '@angular/core';
4
+ import { Observable, Subscription } from 'rxjs';
5
+ import { ServiceResponse } from '../../interfaces/service-response.interface';
6
+ import { OTreeComponentStateService } from '../../services/state/o-tree-component-state.service';
7
+ import { OFormComponent } from '../form/o-form.component';
8
+ import { AbstractOServiceComponent } from '../o-service-component.class';
9
+ import { OTreeDao } from './o-tree-dao.service';
10
+ import { OTreeDataSource } from './o-tree.datasource';
11
+ import { OTreeNodeComponent } from './tree-node/tree-node.component';
12
+ import * as i0 from "@angular/core";
13
+ export type OTreeFlatNode = {
14
+ id: string | number;
15
+ label: string;
16
+ level: number;
17
+ rootNode?: boolean;
18
+ expandable: boolean;
19
+ treeNode?: OTreeNodeComponent;
20
+ data: any;
21
+ isLoading?: boolean;
22
+ route?: string;
23
+ };
24
+ export declare const DEFAULT_INPUTS_O_TREE: string[];
25
+ export declare const DEFAULT_OUTPUTS_O_TREE: string[];
26
+ export declare class OTreeComponent extends AbstractOServiceComponent<OTreeComponentStateService> implements OnInit, OnDestroy, AfterViewInit {
27
+ injector: Injector;
28
+ getLevel: (node: OTreeFlatNode) => number;
29
+ isExpandable: (node: OTreeFlatNode) => boolean;
30
+ getChildren: (node: OTreeFlatNode) => any;
31
+ getTreeNodeChildren(node: OTreeFlatNode): any;
32
+ getRecursiveChildrenNode(node: OTreeFlatNode): any;
33
+ getComponentFilter(existingFilter?: any): any;
34
+ hasChild: (_: number, _nodeData: OTreeFlatNode) => boolean;
35
+ hasNoContent: (_: number, _nodeData: OTreeFlatNode) => boolean;
36
+ dataSource: OTreeDataSource;
37
+ refreshButton: boolean;
38
+ deleteButton: boolean;
39
+ showButtonsText: boolean;
40
+ visibleColumns: string;
41
+ separator: string;
42
+ parentColumn: string;
43
+ sortColumn: string;
44
+ selectAllCheckboxVisible: boolean;
45
+ selectAllCheckbox: boolean;
46
+ recursive: boolean;
47
+ protected _quickFilter: boolean;
48
+ paginationControls: boolean;
49
+ quickFilterColumns: string;
50
+ childreNodes: OTreeFlatNode[];
51
+ nodesArray: OTreeFlatNode[];
52
+ ancestors: any[];
53
+ checklistSelection: SelectionModel<OTreeFlatNode>;
54
+ onNodeSelected: EventEmitter<any>;
55
+ onNodeExpanded: EventEmitter<any>;
56
+ onNodeCollapsed: EventEmitter<any>;
57
+ onLoadNextLevel: EventEmitter<any>;
58
+ rootTitle: string;
59
+ rootNodes: OTreeFlatNode[];
60
+ daoTree: OTreeDao;
61
+ leafNodeTemplate: TemplateRef<any>;
62
+ parentNodeTemplate: TemplateRef<any>;
63
+ treeFlattener: any;
64
+ treeControl: FlatTreeControl<OTreeFlatNode, OTreeFlatNode>;
65
+ set nodeTemplate(value: TemplateRef<any>);
66
+ treeNode: OTreeNodeComponent;
67
+ protected visibleColumnsArray: string[];
68
+ enabledDeleteButton: boolean;
69
+ protected subscription: Subscription;
70
+ route: string;
71
+ get showTreeMenuButton(): boolean;
72
+ constructor(injector: Injector, elRef: ElementRef, form: OFormComponent);
73
+ ngOnInit(): void;
74
+ initialize(): void;
75
+ protected initializeDao(): void;
76
+ initializeParams(): void;
77
+ ngAfterViewInit(): void;
78
+ ngOnDestroy(): void;
79
+ registerTreeNode(oTreeNode: OTreeNodeComponent): void;
80
+ checkboxClicked(event: Event): void;
81
+ leafNodeClicked(event: Event, node: OTreeFlatNode): void;
82
+ parentNodeClicked(event: Event, node: OTreeFlatNode): void;
83
+ protected nodeClicked(node: OTreeFlatNode, event: Event): void;
84
+ isRootNode(node: OTreeFlatNode): boolean;
85
+ onClickToggleButton(event: Event, node: any): void;
86
+ toggleNode(node: OTreeFlatNode, expand: boolean): void;
87
+ private updateAsyncTree;
88
+ todoLeafItemSelectionToggle(node: OTreeFlatNode): void;
89
+ todoItemSelectionToggle(node: OTreeFlatNode): void;
90
+ descendantsAllSelected(node: OTreeFlatNode): boolean;
91
+ descendantsPartiallySelected(node: OTreeFlatNode): boolean;
92
+ protected setTreeControl(): void;
93
+ protected setDatasource(): void;
94
+ getParentNodes(node: OTreeFlatNode, index: number, tree: OTreeFlatNode[]): OTreeFlatNode[];
95
+ filterData(value?: string, loadMore?: boolean): void;
96
+ expandNodesWithNodes(treeData: OTreeFlatNode[]): void;
97
+ getDataArray(): any[];
98
+ setDataArray(data: any): void;
99
+ transformer: (node: any, level: number, parentNode?: any) => OTreeFlatNode;
100
+ onSelectCheckboxChange(visible: boolean): void;
101
+ protected sort(array: OTreeFlatNode[]): void;
102
+ protected getItemText(item: any): string;
103
+ getItemKey(item: any): string;
104
+ protected filterByQuickFilterColumns(item: any, quickfilter: string): boolean;
105
+ add(e?: Event): void;
106
+ protected getNodeId(item: any, parentNode: any): string;
107
+ childQueryData(node: OTreeFlatNode): Observable<ServiceResponse> | Observable<any>;
108
+ protected navigateToViewDetail(node: OTreeFlatNode): void;
109
+ static ɵfac: i0.ɵɵFactoryDeclaration<OTreeComponent, [null, null, { optional: true; }]>;
110
+ static ɵcmp: i0.ɵɵComponentDeclaration<OTreeComponent, "o-tree", never, { "oattr": "attr"; "service": "service"; "entity": "entity"; "columns": "columns"; "keys": "keys"; "parentKeys": "parent-keys"; "queryMethod": "query-method"; "insertButton": "insert-button"; "refreshButton": "refresh-button"; "deleteButton": "delete-button"; "visibleColumns": "visible-columns"; "selectAllCheckbox": "select-all-checkbox"; "separator": "separator"; "parentColumn": "parent-column"; "sortColumn": "sort-column"; "selectAllCheckboxVisible": "select-all-checkbox-visible"; "filterCaseSensitive": "filter-case-sensitive"; "quickFilter": "quick-filter"; "quickFilterPlaceholder": "quick-filter-placeholder"; "quickFilterColumns": "quick-filter-columns"; "detailMode": "detail-mode"; "detailFormRoute": "detail-form-route"; "showButtonsText": "show-buttons-text"; "rootTitle": "root-title"; "recursive": "recursive"; "route": "route"; }, { "onNodeSelected": "onNodeSelected"; "onNodeExpanded": "onNodeExpanded"; "onNodeCollapsed": "onNodeCollapsed"; "onLoadNextLevel": "onLoadNextLevel"; "onDataLoaded": "onDataLoaded"; }, ["leafNodeTemplate", "parentNodeTemplate", "nodeTemplate", "treeNode"], ["[o-tree-button]"], false, never>;
111
+ }
@@ -0,0 +1,22 @@
1
+ import { CollectionViewer, DataSource, SelectionChange } from '@angular/cdk/collections';
2
+ import { FlatTreeControl } from '@angular/cdk/tree';
3
+ import { Injector } from '@angular/core';
4
+ import { BehaviorSubject, Observable } from 'rxjs';
5
+ import { OTreeDao } from './o-tree-dao.service';
6
+ import { OTreeComponent, OTreeFlatNode } from './o-tree.component';
7
+ export declare class OTreeDataSource implements DataSource<OTreeFlatNode> {
8
+ private oTree;
9
+ private _treeControl;
10
+ private injector;
11
+ dataChange: BehaviorSubject<OTreeFlatNode[]>;
12
+ translateService: any;
13
+ protected _database: OTreeDao;
14
+ get data(): OTreeFlatNode[];
15
+ set data(value: OTreeFlatNode[]);
16
+ constructor(oTree: OTreeComponent, _treeControl: FlatTreeControl<OTreeFlatNode>, injector: Injector);
17
+ connect(collectionViewer: CollectionViewer): Observable<OTreeFlatNode[]>;
18
+ disconnect(collectionViewer: CollectionViewer): void;
19
+ handleTreeControl(change: SelectionChange<OTreeFlatNode>): void;
20
+ isTreeFlatNode(value: any): boolean;
21
+ updateTree(parentNode: OTreeFlatNode, children: Array<any>, expand: boolean): void;
22
+ }
@@ -0,0 +1,14 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "./tree-node/tree-node.component";
3
+ import * as i2 from "./o-tree.component";
4
+ import * as i3 from "./header/tree-menu/o-tree-menu.component";
5
+ import * as i4 from "@angular/common";
6
+ import * as i5 from "../input/search-input/o-search-input.module";
7
+ import * as i6 from "../../shared/shared.module";
8
+ import * as i7 from "@angular/cdk/tree";
9
+ import * as i8 from "@angular/material/tree";
10
+ export declare class OTreeModule {
11
+ static ɵfac: i0.ɵɵFactoryDeclaration<OTreeModule, never>;
12
+ static ɵmod: i0.ɵɵNgModuleDeclaration<OTreeModule, [typeof i1.OTreeNodeComponent, typeof i2.OTreeComponent, typeof i3.OTreeMenuComponent], [typeof i4.CommonModule, typeof i5.OSearchInputModule, typeof i6.OSharedModule, typeof i7.CdkTreeModule, typeof i8.MatTreeModule], [typeof i2.OTreeComponent, typeof i1.OTreeNodeComponent]>;
13
+ static ɵinj: i0.ɵɵInjectorDeclaration<OTreeModule>;
14
+ }
@@ -0,0 +1,14 @@
1
+ import { AfterViewInit, ElementRef, Injector, OnInit } from '@angular/core';
2
+ import { OFormComponent } from '../../form';
3
+ import { OTreeComponent } from '../o-tree.component';
4
+ import * as i0 from "@angular/core";
5
+ export declare class OTreeNodeComponent extends OTreeComponent implements OnInit, AfterViewInit {
6
+ injector: Injector;
7
+ oTree: OTreeComponent;
8
+ parentNode: OTreeNodeComponent;
9
+ constructor(injector: Injector, elRef: ElementRef, form: OFormComponent, oTree: OTreeComponent, parentNode: OTreeNodeComponent);
10
+ ngOnInit(): void;
11
+ ngAfterViewInit(): void;
12
+ static ɵfac: i0.ɵɵFactoryDeclaration<OTreeNodeComponent, [null, null, { optional: true; }, { optional: true; }, { optional: true; skipSelf: true; }]>;
13
+ static ɵcmp: i0.ɵɵComponentDeclaration<OTreeNodeComponent, "o-tree-node", never, {}, {}, never, never, false, never>;
14
+ }
@@ -290,6 +290,9 @@ export declare const MAP: {
290
290
  'FILTERBUILDERMENU.DIALOG.CONFIRM_CLEAR_FILTER': string;
291
291
  'OIMAGE.TEXT.DROP&DRAG': string;
292
292
  'OIMAGE.BUTTON.BROWSEFILE': string;
293
+ 'TREE.BUTTONS.SELECT': string;
294
+ 'REPORT.COLUMN.TRUEVALUE': string;
295
+ 'REPORT.COLUMN.FALSEVALUE': string;
293
296
  };
294
297
  es: {
295
298
  LANGUAGE: string;
@@ -573,6 +576,9 @@ export declare const MAP: {
573
576
  'FILTERBUILDERMENU.DIALOG.CONFIRM_CLEAR_FILTER': string;
574
577
  'OIMAGE.TEXT.DROP&DRAG': string;
575
578
  'OIMAGE.BUTTON.BROWSEFILE': string;
579
+ 'TREE.BUTTONS.SELECT': string;
580
+ 'REPORT.COLUMN.TRUEVALUE': string;
581
+ 'REPORT.COLUMN.FALSEVALUE': string;
576
582
  };
577
583
  pt: {
578
584
  LANGUAGE: string;
@@ -844,5 +850,8 @@ export declare const MAP: {
844
850
  'FILTERBUILDERMENU.DIALOG.CONFIRM_CLEAR_FILTER': string;
845
851
  'OIMAGE.TEXT.DROP&DRAG': string;
846
852
  'OIMAGE.BUTTON.BROWSEFILE': string;
853
+ 'TREE.BUTTONS.SELECT': string;
854
+ 'REPORT.COLUMN.TRUEVALUE': string;
855
+ 'REPORT.COLUMN.FALSEVALUE': string;
847
856
  };
848
857
  };
@@ -32,4 +32,5 @@ export declare abstract class OFormLayoutManagerBase {
32
32
  abstract updateNavigation(data: any, keysValues: any, insertionMode: boolean): any;
33
33
  abstract getDataToStore(): any;
34
34
  abstract getComponentKey(): string;
35
+ abstract closeDetails(detailsKeysData: any[], options?: FormLayoutCloseDetailOptions): void;
35
36
  }
@@ -55,9 +55,10 @@ import * as i51 from "./config/o-modules";
55
55
  import * as i52 from "./services/permissions/o-permissions.module";
56
56
  import * as i53 from "./components/input/slider/o-slider.module";
57
57
  import * as i54 from "./components/o-data-toolbar/o-data-toolbar.module";
58
+ import * as i55 from "./components/tree/o-tree.module";
58
59
  export declare class OntimizeWebModule {
59
60
  static forRoot(config: Config): ModuleWithProviders<OntimizeWebModule>;
60
61
  static ɵfac: i0.ɵɵFactoryDeclaration<OntimizeWebModule, never>;
61
- static ɵmod: i0.ɵɵNgModuleDeclaration<OntimizeWebModule, never, [typeof i1.HttpClientModule, typeof i2.TranslateModule, typeof i3.NgxMaterialTimepickerModule, typeof i4.OSharedModule, typeof i5.OBarMenuModule, typeof i6.OBreadcrumbModule, typeof i7.OButtonModule, typeof i8.OButtonToggleModule, typeof i9.OCardMenuItemModule, typeof i10.OColumnModule, typeof i11.OColumnCollapsibleModule, typeof i12.ORowModule, typeof i13.ORowCollapsibleModule, typeof i14.OContextMenuModule, typeof i15.OFilterBuilderModule, typeof i16.OFormModule, typeof i17.OFormContainerModule, typeof i18.OGridModule, typeof i19.OImageModule, typeof i20.OCheckboxModule, typeof i21.OComboModule, typeof i22.OCurrencyInputModule, typeof i23.ODateInputModule, typeof i24.ODateRangeInputModule, typeof i25.OEmailInputModule, typeof i26.OPhoneInputModule, typeof i27.OFileInputModule, typeof i28.OHourInputModule, typeof i29.OHTMLInputModule, typeof i30.OIntegerInputModule, typeof i31.OListPickerModule, typeof i32.ONIFInputModule, typeof i33.OPasswordInputModule, typeof i34.OPercentInputModule, typeof i35.ORadioModule, typeof i36.ORealInputModule, typeof i37.OSearchInputModule, typeof i38.OSlideToggleModule, typeof i39.OTextInputModule, typeof i40.OTextareaInputModule, typeof i41.OTimeInputModule, typeof i42.OLanguageSelectorModule, typeof i43.OListModule, typeof i44.OTableModule, typeof i45.OUserInfoModule, typeof i46.OAppLayoutModule, typeof i47.OCardMenuLayoutModule, typeof i48.OFormLayoutManagerModule, typeof i49.OExpandableContainerModule, typeof i50.ODualListSelectorModule], [typeof i51.OntimizeWebTranslateModule, typeof i52.OPermissionsModule, typeof i1.HttpClientModule, typeof i4.OSharedModule, typeof i5.OBarMenuModule, typeof i6.OBreadcrumbModule, typeof i7.OButtonModule, typeof i8.OButtonToggleModule, typeof i20.OCheckboxModule, typeof i21.OComboModule, typeof i10.OColumnModule, typeof i11.OColumnCollapsibleModule, typeof i14.OContextMenuModule, typeof i12.ORowModule, typeof i13.ORowCollapsibleModule, typeof i15.OFilterBuilderModule, typeof i16.OFormModule, typeof i17.OFormContainerModule, typeof i19.OImageModule, typeof i22.OCurrencyInputModule, typeof i23.ODateInputModule, typeof i25.OEmailInputModule, typeof i26.OPhoneInputModule, typeof i27.OFileInputModule, typeof i29.OHTMLInputModule, typeof i30.OIntegerInputModule, typeof i31.OListPickerModule, typeof i32.ONIFInputModule, typeof i33.OPasswordInputModule, typeof i34.OPercentInputModule, typeof i36.ORealInputModule, typeof i39.OTextInputModule, typeof i40.OTextareaInputModule, typeof i43.OListModule, typeof i37.OSearchInputModule, typeof i44.OTableModule, typeof i46.OAppLayoutModule, typeof i48.OFormLayoutManagerModule, typeof i45.OUserInfoModule, typeof i42.OLanguageSelectorModule, typeof i9.OCardMenuItemModule, typeof i47.OCardMenuLayoutModule, typeof i28.OHourInputModule, typeof i41.OTimeInputModule, typeof i18.OGridModule, typeof i35.ORadioModule, typeof i38.OSlideToggleModule, typeof i53.OSliderModule, typeof i24.ODateRangeInputModule, typeof i49.OExpandableContainerModule, typeof i50.ODualListSelectorModule, typeof i54.ODataToolbarModule]>;
62
+ static ɵmod: i0.ɵɵNgModuleDeclaration<OntimizeWebModule, never, [typeof i1.HttpClientModule, typeof i2.TranslateModule, typeof i3.NgxMaterialTimepickerModule, typeof i4.OSharedModule, typeof i5.OBarMenuModule, typeof i6.OBreadcrumbModule, typeof i7.OButtonModule, typeof i8.OButtonToggleModule, typeof i9.OCardMenuItemModule, typeof i10.OColumnModule, typeof i11.OColumnCollapsibleModule, typeof i12.ORowModule, typeof i13.ORowCollapsibleModule, typeof i14.OContextMenuModule, typeof i15.OFilterBuilderModule, typeof i16.OFormModule, typeof i17.OFormContainerModule, typeof i18.OGridModule, typeof i19.OImageModule, typeof i20.OCheckboxModule, typeof i21.OComboModule, typeof i22.OCurrencyInputModule, typeof i23.ODateInputModule, typeof i24.ODateRangeInputModule, typeof i25.OEmailInputModule, typeof i26.OPhoneInputModule, typeof i27.OFileInputModule, typeof i28.OHourInputModule, typeof i29.OHTMLInputModule, typeof i30.OIntegerInputModule, typeof i31.OListPickerModule, typeof i32.ONIFInputModule, typeof i33.OPasswordInputModule, typeof i34.OPercentInputModule, typeof i35.ORadioModule, typeof i36.ORealInputModule, typeof i37.OSearchInputModule, typeof i38.OSlideToggleModule, typeof i39.OTextInputModule, typeof i40.OTextareaInputModule, typeof i41.OTimeInputModule, typeof i42.OLanguageSelectorModule, typeof i43.OListModule, typeof i44.OTableModule, typeof i45.OUserInfoModule, typeof i46.OAppLayoutModule, typeof i47.OCardMenuLayoutModule, typeof i48.OFormLayoutManagerModule, typeof i49.OExpandableContainerModule, typeof i50.ODualListSelectorModule], [typeof i51.OntimizeWebTranslateModule, typeof i52.OPermissionsModule, typeof i1.HttpClientModule, typeof i4.OSharedModule, typeof i5.OBarMenuModule, typeof i6.OBreadcrumbModule, typeof i7.OButtonModule, typeof i8.OButtonToggleModule, typeof i20.OCheckboxModule, typeof i21.OComboModule, typeof i10.OColumnModule, typeof i11.OColumnCollapsibleModule, typeof i14.OContextMenuModule, typeof i12.ORowModule, typeof i13.ORowCollapsibleModule, typeof i15.OFilterBuilderModule, typeof i16.OFormModule, typeof i17.OFormContainerModule, typeof i19.OImageModule, typeof i22.OCurrencyInputModule, typeof i23.ODateInputModule, typeof i25.OEmailInputModule, typeof i26.OPhoneInputModule, typeof i27.OFileInputModule, typeof i29.OHTMLInputModule, typeof i30.OIntegerInputModule, typeof i31.OListPickerModule, typeof i32.ONIFInputModule, typeof i33.OPasswordInputModule, typeof i34.OPercentInputModule, typeof i36.ORealInputModule, typeof i39.OTextInputModule, typeof i40.OTextareaInputModule, typeof i43.OListModule, typeof i37.OSearchInputModule, typeof i44.OTableModule, typeof i46.OAppLayoutModule, typeof i48.OFormLayoutManagerModule, typeof i45.OUserInfoModule, typeof i42.OLanguageSelectorModule, typeof i9.OCardMenuItemModule, typeof i47.OCardMenuLayoutModule, typeof i28.OHourInputModule, typeof i41.OTimeInputModule, typeof i18.OGridModule, typeof i35.ORadioModule, typeof i38.OSlideToggleModule, typeof i53.OSliderModule, typeof i24.ODateRangeInputModule, typeof i49.OExpandableContainerModule, typeof i50.ODualListSelectorModule, typeof i54.ODataToolbarModule, typeof i55.OTreeModule]>;
62
63
  static ɵinj: i0.ɵɵInjectorDeclaration<OntimizeWebModule>;
63
64
  }
@@ -0,0 +1,3 @@
1
+ import { DefaultServiceComponentStateClass } from './o-component-state.class';
2
+ export declare class OTreeComponentStateClass extends DefaultServiceComponentStateClass {
3
+ }
@@ -0,0 +1,13 @@
1
+ import { OTreeComponent } from '../../components/tree/o-tree.component';
2
+ import { AbstractComponentStateService } from './o-component-state.service';
3
+ import { OTreeComponentStateClass } from './o-tree-component-state.class';
4
+ import * as i0 from "@angular/core";
5
+ export declare class OTreeComponentStateService extends AbstractComponentStateService<OTreeComponentStateClass, OTreeComponent> {
6
+ initialize(component: OTreeComponent): void;
7
+ initializeState(state: OTreeComponentStateClass): void;
8
+ getDataToStore(): any;
9
+ protected getTablePropertiesToStore(properties: string[]): any;
10
+ protected getTreePropertyToStore(property: string): any;
11
+ static ɵfac: i0.ɵɵFactoryDeclaration<OTreeComponentStateService, never>;
12
+ static ɵprov: i0.ɵɵInjectableDeclaration<OTreeComponentStateService>;
13
+ }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "ontimize-web-ngx",
3
3
  "homepage": "https://github.com/OntimizeWeb/ontimize-web-ngx#readme",
4
- "version": "15.0.0-beta.4",
4
+ "version": "15.0.0-rc.0",
5
5
  "description": "Ontimize Web framework using Angular 15",
6
6
  "bugs": "https://github.com/OntimizeWeb/ontimize-web-ngx/issues",
7
7
  "author": "Imatia S.L.",
package/theme.scss CHANGED
@@ -642,8 +642,8 @@
642
642
  box-sizing: border-box;
643
643
  display: block;
644
644
  position: absolute;
645
- width: 40px;
646
- height: 40px;
645
+ aspect-ratio: 1;
646
+ height: calc(100% - 12px);
647
647
  margin: 6px;
648
648
  border: 3px solid;
649
649
  border-radius: 50%;
@@ -90,6 +90,7 @@ $app-background-color: #eaeaea;
90
90
  @include o-density.list();
91
91
  @include o-density.radio();
92
92
  @include o-density.menu($typography);
93
+ @include o-density.tree();
93
94
  @include o-table-style.o-table-style($theme-or-color-config);
94
95
  @include report-on-demand.report-on-demand($theme-or-color-config);
95
96
  @include charts-on-demand.o-chart-on-demand($theme-or-color-config);
@@ -327,4 +328,4 @@ $app-background-color: #eaeaea;
327
328
  typography: null,
328
329
  density: null,
329
330
  ));
330
- }
331
+ }
@@ -81,10 +81,14 @@
81
81
  min-height: auto;
82
82
 
83
83
  @if($typography) {
84
- .mdc-list-item__primary-text{
84
+ .mdc-list-item__primary-text {
85
85
  font-size: mat.font-size($typography, body-2);
86
86
 
87
87
  }
88
88
  }
89
89
  }
90
- }
90
+ }
91
+
92
+ @mixin tree() {
93
+ @include mat.tree-density(-2);
94
+ }
@@ -1,4 +1,4 @@
1
- @use '@angular/material'as mat;
1
+ @use '@angular/material' as mat;
2
2
  @use 'variables.scss';
3
3
 
4
4
  .mat-mdc-form-field {
@@ -36,9 +36,12 @@
36
36
  .mat-mdc-form-field-flex {
37
37
  .mat-mdc-form-field-infix {
38
38
  min-height: auto;
39
+ align-items: center;
39
40
 
40
- .mat-mdc-form-field-input-control:not(textarea){
41
- height: 1em;
41
+ @-moz-document url-prefix() {
42
+ .mat-mdc-form-field-input-control:not(textarea) {
43
+ height: 1em;
44
+ }
42
45
  }
43
46
  .mat-mdc-floating-label {
44
47
  display: block;
@@ -1,14 +1,24 @@
1
+ /*
2
+ ontimize-black-yellow.scss for use with ontimize v8 styles,
3
+ ontimize v8 styles differs v15 styes in that the background of the sidenav is the color primary.
4
+
5
+ In your app.css, you must add the next line
6
+
7
+ `@use 'ontimize-web-ngx/theming/ontimize-style-v8.scss' as ontimize-style;` instead of `@use 'ontimize-web-ngx/theming/ontimize-style.scss' as ontimize-style;`
8
+
9
+ */
10
+
1
11
  @use '@angular/material'as mat;
2
12
  @use '../ontimize-style-v8.scss'as ontimize-style;
3
13
 
4
14
 
5
15
  /* Color definitions */
6
- $mat-custom-primary: (50 : #e5e5e5, 100 : #bdbdbd, 200 : #929292, 300 : #666666, 400 : #454545, 500 : #242424, 600 : #202020, 700 : #1b1b1b, 800 : #161616, 900 : #0d0d0d, A100 : #e5e5e5, A200 : #bdbdbd, A400 : #454545, A700 : #1b1b1b, contrast: (50: $black-87-opacity, 100: $black-87-opacity, 200: $black-87-opacity, 300: white, 400: white, 500: $white-87-opacity, 600: $white-87-opacity, 700: $white-87-opacity, 800: $white-87-opacity, 900: $white-87-opacity, A100: $black-87-opacity, A200: white, A400: white, A700: white, ));
16
+ $mat-custom-primary: (50 : #e5e5e5, 100 : #bdbdbd, 200 : #929292, 300 : #666666, 400 : #454545, 500 : #242424, 600 : #202020, 700 : #1b1b1b, 800 : #161616, 900 : #0d0d0d, A100 : #e5e5e5, A200 : #bdbdbd, A400 : #454545, A700 : #1b1b1b, contrast: (50: #000000DE, 100: #000000DE, 200: #000000DE, 300: white, 400: white, 500: #FFFFFFDE, 600: #FFFFFFDE, 700: #FFFFFFDE, 800: #FFFFFFDE, 900: #FFFFFFDE, A100: #000000DE, A200: white, A400: white, A700: white, ));
7
17
 
8
- $mat-custom-accent: (50 : #fff9e0, 100 : #fff0b3, 200 : #ffe680, 300 : #ffdb4d, 400 : #ffd426, 500 : #ffcc00, 600 : #ffc700, 700 : #ffc000, 800 : #ffb900, 900 : #ffad00, A100 : #fff9e0, A200 : #ffe680, A400 : #ffd426, A700 : #ffc000, contrast: (50: $black-87-opacity, 100: $black-87-opacity, 200: $black-87-opacity, 300: white, 400: white, 500: $white-87-opacity, 600: $white-87-opacity, 700: $white-87-opacity, 800: $white-87-opacity, 900: $white-87-opacity, A100: $black-87-opacity, A200: white, A400: white, A700: white, ));
18
+ $mat-custom-accent: (50 : #fff9e0, 100 : #fff0b3, 200 : #ffe680, 300 : #ffdb4d, 400 : #ffd426, 500 : #ffcc00, 600 : #ffc700, 700 : #ffc000, 800 : #ffb900, 900 : #ffad00, A100 : #fff9e0, A200 : #ffe680, A400 : #ffd426, A700 : #ffc000, contrast: (50: #000000DE, 100: #000000DE, 200: #000000DE, 300: white, 400: white, 500: #FFFFFFDE, 600: #FFFFFFDE, 700: #FFFFFFDE, 800: #FFFFFFDE, 900: #FFFFFFDE, A100: #000000DE, A200: white, A400: white, A700: white, ));
9
19
 
10
20
  // Define a theme.
11
21
  $primary: mat.define-palette($mat-custom-primary);
12
22
  $accent: mat.define-palette($mat-custom-accent);
13
23
  $theme: ontimize-style.o-mat-light-theme($primary, $accent);
14
- $dark-theme: ontimize-style.o-mat-dark-theme($primary, $accent);
24
+ $dark-theme: ontimize-style.o-mat-dark-theme($primary, $accent);