@acorex/data-grid 4.2.0 → 4.2.1
Sign up to get free protection for your applications and to get access to all the features.
- package/acorex-data-grid.d.ts +5 -0
- package/esm2020/acorex-data-grid.mjs +5 -0
- package/esm2020/lib/data-grid/columns/check-column.component.mjs +117 -0
- package/esm2020/lib/data-grid/columns/column.component.mjs +164 -0
- package/esm2020/lib/data-grid/columns/command-column.component.mjs +115 -0
- package/esm2020/lib/data-grid/columns/date-column.component.mjs +111 -0
- package/esm2020/lib/data-grid/columns/row-number-column.component.mjs +37 -0
- package/esm2020/lib/data-grid/columns/selection-column.component.mjs +42 -0
- package/esm2020/lib/data-grid/columns/text-column.component.mjs +89 -0
- package/esm2020/lib/data-grid/datagrid.component.mjs +667 -0
- package/esm2020/lib/data-grid/datagrid.events.mjs +2 -0
- package/esm2020/lib/data-grid/datagrid.module.mjs +145 -0
- package/esm2020/lib/data-grid/filters/filter.component.mjs +39 -0
- package/esm2020/lib/data-grid/templates/cell-template.component.mjs +53 -0
- package/esm2020/lib/data-grid/templates/detail-template.component.mjs +46 -0
- package/esm2020/lib/data-grid/templates/row-template.component.mjs +43 -0
- package/esm2020/lib/data-lov/data-lov-popup/data-lov-popup.component.mjs +113 -0
- package/esm2020/lib/data-lov/data-lov.component.mjs +161 -0
- package/esm2020/lib/data-lov/data-lov.module.mjs +23 -0
- package/esm2020/public-api.mjs +18 -0
- package/fesm2015/acorex-data-grid.mjs +1876 -0
- package/fesm2015/acorex-data-grid.mjs.map +1 -0
- package/fesm2020/acorex-data-grid.mjs +1876 -0
- package/fesm2020/acorex-data-grid.mjs.map +1 -0
- package/lib/data-grid/columns/check-column.component.d.ts +37 -0
- package/lib/data-grid/columns/column.component.d.ts +32 -0
- package/lib/data-grid/columns/command-column.component.d.ts +27 -0
- package/lib/data-grid/columns/date-column.component.d.ts +32 -0
- package/lib/data-grid/columns/row-number-column.component.d.ts +10 -0
- package/lib/data-grid/columns/selection-column.component.d.ts +12 -0
- package/lib/data-grid/columns/text-column.component.d.ts +25 -0
- package/lib/data-grid/datagrid.component.d.ts +142 -0
- package/{src/lib/data-grid/datagrid.events.ts → lib/data-grid/datagrid.events.d.ts} +1 -4
- package/lib/data-grid/datagrid.module.d.ts +23 -0
- package/lib/data-grid/filters/filter.component.d.ts +5 -0
- package/lib/data-grid/templates/cell-template.component.d.ts +22 -0
- package/lib/data-grid/templates/detail-template.component.d.ts +21 -0
- package/lib/data-grid/templates/row-template.component.d.ts +20 -0
- package/lib/data-lov/data-lov-popup/data-lov-popup.component.d.ts +32 -0
- package/lib/data-lov/data-lov.component.d.ts +42 -0
- package/lib/data-lov/data-lov.module.d.ts +12 -0
- package/package.json +37 -17
- package/{src/public-api.ts → public-api.d.ts} +0 -3
- package/karma.conf.js +0 -32
- package/ng-package.json +0 -12
- package/src/lib/data-grid/columns/check-column.component.ts +0 -113
- package/src/lib/data-grid/columns/column.component.ts +0 -182
- package/src/lib/data-grid/columns/command-column.component.ts +0 -101
- package/src/lib/data-grid/columns/date-column.component.ts +0 -118
- package/src/lib/data-grid/columns/row-number-column.component.ts +0 -36
- package/src/lib/data-grid/columns/selection-column.component.ts +0 -39
- package/src/lib/data-grid/columns/text-column.component.ts +0 -92
- package/src/lib/data-grid/datagrid.component.html +0 -27
- package/src/lib/data-grid/datagrid.component.ts +0 -769
- package/src/lib/data-grid/datagrid.module.ts +0 -81
- package/src/lib/data-grid/filters/filter.component.ts +0 -21
- package/src/lib/data-grid/templates/cell-template.component.ts +0 -47
- package/src/lib/data-grid/templates/detail-template.component.ts +0 -43
- package/src/lib/data-grid/templates/row-template.component.ts +0 -41
- package/src/lib/data-lov/data-lov-popup/data-lov-popup.component.html +0 -16
- package/src/lib/data-lov/data-lov-popup/data-lov-popup.component.ts +0 -130
- package/src/lib/data-lov/data-lov.component.html +0 -61
- package/src/lib/data-lov/data-lov.component.ts +0 -181
- package/src/lib/data-lov/data-lov.module.ts +0 -16
- package/src/test.ts +0 -28
- package/tsconfig.lib.json +0 -23
- package/tsconfig.lib.prod.json +0 -6
- package/tsconfig.spec.json +0 -17
- package/tslint.json +0 -17
@@ -1,81 +0,0 @@
|
|
1
|
-
import { NgModule } from '@angular/core';
|
2
|
-
import { CommonModule } from '@angular/common';
|
3
|
-
import { AXDataGridComponent } from './datagrid.component';
|
4
|
-
import { FormsModule } from '@angular/forms';
|
5
|
-
import { AgGridModule } from 'ag-grid-angular';
|
6
|
-
import { AXDataSourceModule } from '@acorex/components';
|
7
|
-
import { AXGridTextColumn, TextFilterRenderer } from './columns/text-column.component';
|
8
|
-
import { AXGridCheckColumn, BooleanRenderer, BooleanFilterRenderer } from './columns/check-column.component';
|
9
|
-
import { AXCoreModule } from '@acorex/core';
|
10
|
-
import { AXGridSelectionColumn } from './columns/selection-column.component';
|
11
|
-
import { CommandRenderer, AXGridCommandColumn } from './columns/command-column.component';
|
12
|
-
import { AXDataGridFilterComponent } from './filters/filter.component';
|
13
|
-
import { AXGridDateColumn, AXDatePickerFilterComponent } from './columns/date-column.component';
|
14
|
-
import { AXDataGridRowTemplateComponent, AXDataGridRowTemplateRenderer } from './templates/row-template.component';
|
15
|
-
import { AXDataGridCellTemplateComponent, AXDataGridCellTemplateRenderer } from './templates/cell-template.component';
|
16
|
-
import { AXDataGridDetailTemplateComponent, AXDataGridDetailTemplateRenderer } from './templates/detail-template.component';
|
17
|
-
import { AXTextBoxModule } from '@acorex/components';
|
18
|
-
import { AXCheckBoxModule } from '@acorex/components';
|
19
|
-
import { AXSelectBoxModule } from '@acorex/components';
|
20
|
-
import { AXButtonModule } from '@acorex/components';
|
21
|
-
import { AXDatePickerModule } from '@acorex/components';
|
22
|
-
import 'ag-grid-enterprise';
|
23
|
-
import { AXGridRowNumberColumn } from './columns/row-number-column.component';
|
24
|
-
|
25
|
-
@NgModule({
|
26
|
-
declarations: [
|
27
|
-
AXDataGridComponent,
|
28
|
-
AXGridTextColumn,
|
29
|
-
AXGridCheckColumn,
|
30
|
-
AXGridSelectionColumn,
|
31
|
-
AXGridDateColumn,
|
32
|
-
AXGridRowNumberColumn,
|
33
|
-
AXGridCommandColumn,
|
34
|
-
BooleanRenderer,
|
35
|
-
BooleanFilterRenderer,
|
36
|
-
TextFilterRenderer,
|
37
|
-
AXDataGridFilterComponent,
|
38
|
-
AXDataGridRowTemplateComponent,
|
39
|
-
AXDataGridDetailTemplateComponent,
|
40
|
-
AXDataGridRowTemplateRenderer,
|
41
|
-
AXDataGridDetailTemplateRenderer,
|
42
|
-
AXDataGridCellTemplateComponent,
|
43
|
-
AXDataGridCellTemplateRenderer,
|
44
|
-
AXDatePickerFilterComponent,
|
45
|
-
CommandRenderer
|
46
|
-
],
|
47
|
-
imports: [
|
48
|
-
CommonModule,
|
49
|
-
AXCoreModule,
|
50
|
-
FormsModule,
|
51
|
-
//AgGridModule,
|
52
|
-
AXTextBoxModule,
|
53
|
-
AXCheckBoxModule,
|
54
|
-
AXSelectBoxModule,
|
55
|
-
AXDataSourceModule,
|
56
|
-
AXButtonModule,
|
57
|
-
AXDatePickerModule,
|
58
|
-
AgGridModule.withComponents([AXDatePickerFilterComponent])
|
59
|
-
],
|
60
|
-
exports: [
|
61
|
-
AXDataGridComponent,
|
62
|
-
AXDataGridFilterComponent,
|
63
|
-
AXDataGridRowTemplateComponent,
|
64
|
-
AXDataGridDetailTemplateComponent,
|
65
|
-
AXDataGridRowTemplateRenderer,
|
66
|
-
AXDataGridDetailTemplateRenderer,
|
67
|
-
AXDataGridCellTemplateComponent,
|
68
|
-
AXDataGridCellTemplateRenderer,
|
69
|
-
AXGridTextColumn,
|
70
|
-
AXGridRowNumberColumn,
|
71
|
-
AXGridCheckColumn,
|
72
|
-
AXGridDateColumn,
|
73
|
-
AXGridSelectionColumn,
|
74
|
-
AXGridCommandColumn,
|
75
|
-
BooleanRenderer,
|
76
|
-
BooleanFilterRenderer,
|
77
|
-
CommandRenderer
|
78
|
-
],
|
79
|
-
providers: []
|
80
|
-
})
|
81
|
-
export class AXDataGridModule {}
|
@@ -1,21 +0,0 @@
|
|
1
|
-
import { Component, ViewEncapsulation } from '@angular/core';
|
2
|
-
|
3
|
-
|
4
|
-
@Component({
|
5
|
-
selector: 'ax-data-grid-filter',
|
6
|
-
template: `
|
7
|
-
<div class='ax-grid-filter-container'>
|
8
|
-
<ng-content></ng-content>
|
9
|
-
<div class='btn-group' role='group'>
|
10
|
-
<button type='button' class='btn btn-primary btn-sm'>
|
11
|
-
<i class='fas fa-filter'></i>
|
12
|
-
</button>
|
13
|
-
<button type='button' class='btn btn-danger btn-sm'>
|
14
|
-
<i class='fas fa-trash-alt'></i>
|
15
|
-
</button>
|
16
|
-
</div>
|
17
|
-
</div>
|
18
|
-
`,
|
19
|
-
encapsulation: ViewEncapsulation.None
|
20
|
-
})
|
21
|
-
export class AXDataGridFilterComponent {}
|
@@ -1,47 +0,0 @@
|
|
1
|
-
import { Component, ContentChild, TemplateRef, ChangeDetectionStrategy } from '@angular/core';
|
2
|
-
import { ICellRendererAngularComp } from 'ag-grid-angular';
|
3
|
-
import { ICellRendererParams } from 'ag-grid-community';
|
4
|
-
|
5
|
-
@Component({
|
6
|
-
selector: 'ax-cell-template',
|
7
|
-
template: `<ng-content></ng-content>
|
8
|
-
`
|
9
|
-
})
|
10
|
-
|
11
|
-
export class AXDataGridCellTemplateComponent {
|
12
|
-
@ContentChild(TemplateRef, { static: true }) templateRef: TemplateRef<any>;
|
13
|
-
renderer: any;
|
14
|
-
params: any;
|
15
|
-
constructor() {
|
16
|
-
this.renderer = AXDataGridCellTemplateRenderer;
|
17
|
-
}
|
18
|
-
ngOnInit(): void {
|
19
|
-
this.params = {
|
20
|
-
templateRef: this.templateRef
|
21
|
-
}
|
22
|
-
}
|
23
|
-
}
|
24
|
-
|
25
|
-
@Component({
|
26
|
-
template: `
|
27
|
-
<ng-container *ngTemplateOutlet='templateRef; context: { $implicit: rowData }'>
|
28
|
-
</ng-container>
|
29
|
-
`
|
30
|
-
})
|
31
|
-
|
32
|
-
export class AXDataGridCellTemplateRenderer implements ICellRendererAngularComp {
|
33
|
-
rowData: any;
|
34
|
-
templateRef: TemplateRef<any>;
|
35
|
-
|
36
|
-
constructor() { }
|
37
|
-
|
38
|
-
agInit(params: ICellRendererParams): void {
|
39
|
-
this.rowData = params.data;
|
40
|
-
this.templateRef = (params as any).templateRef;
|
41
|
-
}
|
42
|
-
|
43
|
-
refresh(params: ICellRendererParams): boolean {
|
44
|
-
this.rowData = params.data;
|
45
|
-
return true;
|
46
|
-
}
|
47
|
-
}
|
@@ -1,43 +0,0 @@
|
|
1
|
-
import { Component, ContentChild, TemplateRef, Input, ChangeDetectorRef } from '@angular/core';
|
2
|
-
import { ICellRendererAngularComp } from 'ag-grid-angular';
|
3
|
-
|
4
|
-
@Component({
|
5
|
-
selector: 'ax-grid-detail-template',
|
6
|
-
template: `<ng-content></ng-content>`
|
7
|
-
})
|
8
|
-
|
9
|
-
export class AXDataGridDetailTemplateComponent {
|
10
|
-
@ContentChild(TemplateRef, { static: true }) templateRef: TemplateRef<any>;
|
11
|
-
renderer: any;
|
12
|
-
params: any;
|
13
|
-
constructor() {
|
14
|
-
this.renderer = AXDataGridDetailTemplateRenderer;
|
15
|
-
}
|
16
|
-
ngOnInit(): void {
|
17
|
-
this.params = {
|
18
|
-
templateRef: this.templateRef
|
19
|
-
}
|
20
|
-
}
|
21
|
-
|
22
|
-
@Input()
|
23
|
-
height: number = 100;
|
24
|
-
}
|
25
|
-
|
26
|
-
@Component({
|
27
|
-
template: `<ng-container *ngTemplateOutlet='templateRef; context: { $implicit: data }'></ng-container>`
|
28
|
-
})
|
29
|
-
|
30
|
-
export class AXDataGridDetailTemplateRenderer implements ICellRendererAngularComp {
|
31
|
-
|
32
|
-
refresh(params: any): boolean {
|
33
|
-
return false;
|
34
|
-
}
|
35
|
-
|
36
|
-
templateRef: TemplateRef<any>;
|
37
|
-
data: any;
|
38
|
-
|
39
|
-
agInit(params: any): void {
|
40
|
-
this.data = params.data;
|
41
|
-
this.templateRef = params.templateRef;
|
42
|
-
}
|
43
|
-
}
|
@@ -1,41 +0,0 @@
|
|
1
|
-
import { Component, ContentChild, TemplateRef, Input } from '@angular/core';
|
2
|
-
import { ICellRendererAngularComp } from 'ag-grid-angular';
|
3
|
-
|
4
|
-
@Component({
|
5
|
-
selector: 'ax-row-template',
|
6
|
-
template: `<ng-content></ng-content>`
|
7
|
-
})
|
8
|
-
|
9
|
-
export class AXDataGridRowTemplateComponent {
|
10
|
-
@ContentChild(TemplateRef, { static: true }) templateRef: TemplateRef<any>;
|
11
|
-
renderer: any;
|
12
|
-
params: any;
|
13
|
-
constructor() {
|
14
|
-
this.renderer = AXDataGridRowTemplateRenderer;
|
15
|
-
}
|
16
|
-
ngOnInit(): void {
|
17
|
-
this.params = {
|
18
|
-
templateRef: this.templateRef
|
19
|
-
}
|
20
|
-
}
|
21
|
-
}
|
22
|
-
|
23
|
-
@Component({
|
24
|
-
template: `<ng-container *ngTemplateOutlet='templateRef; context: { $implicit: data }'></ng-container>`
|
25
|
-
})
|
26
|
-
|
27
|
-
export class AXDataGridRowTemplateRenderer implements ICellRendererAngularComp {
|
28
|
-
|
29
|
-
templateRef: TemplateRef<any>;
|
30
|
-
|
31
|
-
data: any;
|
32
|
-
|
33
|
-
refresh(params: any): boolean {
|
34
|
-
return false;
|
35
|
-
}
|
36
|
-
|
37
|
-
agInit(params: any): void {
|
38
|
-
this.data = params.data.callRecords;
|
39
|
-
this.templateRef = params.templateRef;
|
40
|
-
}
|
41
|
-
}
|
@@ -1,16 +0,0 @@
|
|
1
|
-
<div style="height: 70vh; padding: 0.5em;">
|
2
|
-
<div style="height: calc(100%);">
|
3
|
-
|
4
|
-
<ax-data-grid [rtl]="rtl" [suppressRowClickSelection]="false" [keyField]="keyField"
|
5
|
-
[hasChildField]="hasChildField" [selectRow]="selectedItems" #grid [columns]="columns"
|
6
|
-
[remoteOperation]="true" [selectionMode]="selectionMode" (rowDbClick)="rowDoubleClicked($event)"
|
7
|
-
(rowSelectionChange)="rowSelectionChange($event)" [dataSource]="dataSource">
|
8
|
-
<ax-toolbar>
|
9
|
-
<ax-toolbar-search #searchBox style="width: 100%;"></ax-toolbar-search>
|
10
|
-
</ax-toolbar>
|
11
|
-
<ax-selection-column *ngIf="selectionMode== 'single'? false : true"></ax-selection-column>
|
12
|
-
<!-- <ax-data-source [provideData]="dataSource.provideData">
|
13
|
-
</ax-data-source> -->
|
14
|
-
</ax-data-grid>
|
15
|
-
</div>
|
16
|
-
</div>
|
@@ -1,130 +0,0 @@
|
|
1
|
-
import { Component, ViewChild, ChangeDetectorRef, ElementRef } from '@angular/core';
|
2
|
-
import { AXDataGridComponent, AXDataGridSelectionChangeEvent } from '../../data-grid/datagrid.component';
|
3
|
-
import { AXGridDataColumn } from '../../data-grid/columns/column.component';
|
4
|
-
import { AXTranslator, AXButtonItem, AXConfig } from '@acorex/core';
|
5
|
-
import {
|
6
|
-
AXToolbarSearchComponent,
|
7
|
-
AXBasePopupPageComponent,
|
8
|
-
AXMenuItemClickEvent,
|
9
|
-
AXDataSourceComponent,
|
10
|
-
AXDataSourceReadParams
|
11
|
-
} from '@acorex/components';
|
12
|
-
|
13
|
-
@Component({
|
14
|
-
templateUrl: './data-lov-popup.component.html'
|
15
|
-
})
|
16
|
-
export class AXDataLovPopupComponent extends AXBasePopupPageComponent {
|
17
|
-
@ViewChild('grid', { static: true })
|
18
|
-
grid: AXDataGridComponent;
|
19
|
-
|
20
|
-
@ViewChild('searchBox')
|
21
|
-
searchBox: AXToolbarSearchComponent;
|
22
|
-
|
23
|
-
columns: AXGridDataColumn[] = [];
|
24
|
-
|
25
|
-
selectedItems: any[] = [];
|
26
|
-
|
27
|
-
keyField: string = '';
|
28
|
-
allowNull: boolean = true;
|
29
|
-
|
30
|
-
hasChildField: string;
|
31
|
-
rtl: boolean = AXConfig.get('layout.rtl');
|
32
|
-
|
33
|
-
selectedRows: any[] = [];
|
34
|
-
|
35
|
-
constructor(private cdr: ChangeDetectorRef, private ref: ElementRef) {
|
36
|
-
super();
|
37
|
-
}
|
38
|
-
|
39
|
-
dataSource: AXDataSourceComponent;
|
40
|
-
|
41
|
-
selectionMode: string;
|
42
|
-
|
43
|
-
ngOnInit(): void {
|
44
|
-
if (this.rtl == null) {
|
45
|
-
this.rtl = window.getComputedStyle(this.ref.nativeElement, null).getPropertyValue('direction') === 'rtl';
|
46
|
-
}
|
47
|
-
}
|
48
|
-
|
49
|
-
onDoneClick() {
|
50
|
-
if (this.selectedItems) {
|
51
|
-
this.close(this.selectedItems);
|
52
|
-
} else {
|
53
|
-
this.close();
|
54
|
-
}
|
55
|
-
}
|
56
|
-
|
57
|
-
rowDoubleClicked(e) {
|
58
|
-
if (this.selectionMode == 'single') {
|
59
|
-
this.selectedItems = [];
|
60
|
-
}
|
61
|
-
|
62
|
-
this.selectedItems = this.selectedItems.filter((c) => c[this.keyField] != e.data.data[this.keyField]);
|
63
|
-
this.selectedItems.push(e.data.data);
|
64
|
-
|
65
|
-
this.onDoneClick();
|
66
|
-
}
|
67
|
-
|
68
|
-
onCancelClick() {
|
69
|
-
this.close();
|
70
|
-
}
|
71
|
-
|
72
|
-
rowSelectionChange(e) {
|
73
|
-
if (e.data.node.selected == true) {
|
74
|
-
this.selectedItems = this.selectedItems.filter((c) => c[this.keyField] != e.data.node.data[this.keyField]);
|
75
|
-
this.selectedItems.push(e.data.node.data);
|
76
|
-
} else {
|
77
|
-
if (this.allowNull == true || (this.allowNull == false && this.selectedItems.length > 1)) {
|
78
|
-
this.selectedItems = this.selectedItems.filter((c) => c[this.keyField] != e.data.node.data[this.keyField]);
|
79
|
-
}
|
80
|
-
}
|
81
|
-
}
|
82
|
-
|
83
|
-
ngAfterViewInit() {
|
84
|
-
this.selectedItems.forEach((ele) => {
|
85
|
-
this.selectedRows.push(ele);
|
86
|
-
});
|
87
|
-
this.searchBox.focus();
|
88
|
-
if (this.dataSource.onDataReceived) {
|
89
|
-
this.dataSource.onDataReceived.subscribe((arg) => {
|
90
|
-
this.cdr.markForCheck();
|
91
|
-
this.cdr.detectChanges();
|
92
|
-
});
|
93
|
-
}
|
94
|
-
}
|
95
|
-
|
96
|
-
// onValueSearchChanged(e) {
|
97
|
-
|
98
|
-
// const params: AXDataSourceReadParams = {}
|
99
|
-
// params.searchText = e.value;
|
100
|
-
// // params.take = 100;
|
101
|
-
// // params.skip = 0
|
102
|
-
// this.dataSource.fetch(params);
|
103
|
-
// }
|
104
|
-
|
105
|
-
getFooterButtons(): AXButtonItem[] {
|
106
|
-
return [
|
107
|
-
{
|
108
|
-
text: AXTranslator.get('common.confirm'),
|
109
|
-
name: 'confirm',
|
110
|
-
style: 'ax primary',
|
111
|
-
icon: 'far fa-check-circle'
|
112
|
-
},
|
113
|
-
{
|
114
|
-
text: AXTranslator.get('common.cancel'),
|
115
|
-
name: 'cancel',
|
116
|
-
style: 'ax light',
|
117
|
-
icon: 'far fa-times'
|
118
|
-
}
|
119
|
-
];
|
120
|
-
}
|
121
|
-
|
122
|
-
onFooterButtonClick(e: AXMenuItemClickEvent) {
|
123
|
-
if (e.name === 'confirm') {
|
124
|
-
this.onDoneClick();
|
125
|
-
}
|
126
|
-
if (e.name === 'cancel') {
|
127
|
-
this.onCancelClick();
|
128
|
-
}
|
129
|
-
}
|
130
|
-
}
|
@@ -1,61 +0,0 @@
|
|
1
|
-
<ax-select-box [rowInputTemplate]="rowTemplate" [rtl]="rtl" [allowSearch]="allowSearch" #selectBox [showDropDownButton]="false" [allowNull]="allowNull"
|
2
|
-
[remoteOperation]="true" [placeholder]="placeholder" [size]="size" [textField]="textField" [valueField]="valueField"
|
3
|
-
[disabled]="disabled" [mode]="mode" [(selectedItems)]="selectedItems"
|
4
|
-
(selectionChanged)="handleSelectChange($event)" [dataSource]="dataSource">
|
5
|
-
<ng-container start>
|
6
|
-
<ng-content select="[start]">
|
7
|
-
</ng-content>
|
8
|
-
</ng-container>
|
9
|
-
<ng-container end>
|
10
|
-
<ax-button icon="far fa-bars icon" [disabled]="disabled" type="light blank" (click)="handleButtonClick()" end
|
11
|
-
[tabIndex]="-1">
|
12
|
-
</ax-button>
|
13
|
-
<ng-content select="[end]">
|
14
|
-
</ng-content>
|
15
|
-
</ng-container>
|
16
|
-
</ax-select-box>
|
17
|
-
|
18
|
-
|
19
|
-
<!-- <ax-select-box2 [rtl]="rtl" [allowSearch]="allowSearch" #selectBox [showDropDownButton]="false" [allowNull]="allowNull"
|
20
|
-
[remoteOperation]="true" [placeholder]="placeholder" [size]="size" [textField]="textField" [valueField]="valueField"
|
21
|
-
[disabled]="disabled" [selectionMode]="mode" (onValueChanged)="handleSelectChange($event)" [dataSource]="dataSource"
|
22
|
-
[(value)]="selectedItems" selectionDataMode="item">
|
23
|
-
<ng-container start>
|
24
|
-
<ng-content select="[start]">
|
25
|
-
</ng-content>
|
26
|
-
</ng-container>
|
27
|
-
<ng-container end>
|
28
|
-
<ax-button icon="far fa-bars icon" [disabled]="disabled" type="primary blank" (click)="handleButtonClick()" end
|
29
|
-
[tabIndex]="-1">
|
30
|
-
</ax-button>
|
31
|
-
<ng-content select="[end]">
|
32
|
-
</ng-content>
|
33
|
-
</ng-container>
|
34
|
-
</ax-select-box2> -->
|
35
|
-
|
36
|
-
|
37
|
-
<!-- <div class="ax-lov-box" [style.display]="mode=='hidden' ? 'none':'unset'">
|
38
|
-
<div class="ax-field-set">
|
39
|
-
<div class="ax-field-set-wrapper" [ngClass]="{ 'no-label': !label }">
|
40
|
-
<fieldset [ngClass]="{ 'input-focused': isFocused, 'input-error': errorText }">
|
41
|
-
<legend *ngIf="label">
|
42
|
-
{{ label }}
|
43
|
-
</legend>
|
44
|
-
</fieldset>
|
45
|
-
<input type="text" [(ngModel)]="text" [placeholder]="placeholder" (keyup)="handleKeyEvent($event)"
|
46
|
-
(blur)="handleBlurEvent($event)" (focus)="handleFocusEvent($event)" class="ax-text-box" disabled />
|
47
|
-
<div class="ax-field-set-button">
|
48
|
-
<button *ngIf="text && allowClear" type="button" class="btn btn-light" (click)="clearText()">
|
49
|
-
<i class="far fa-times"></i>
|
50
|
-
</button>
|
51
|
-
<button type="button" class=" btn btn-primary" (click)="handleButtonClick($event)">
|
52
|
-
<i class="far fa-check-circle"></i>
|
53
|
-
</button>
|
54
|
-
</div>
|
55
|
-
</div>
|
56
|
-
</div>
|
57
|
-
<div class="validation-text" *ngIf="errorText">
|
58
|
-
{{ errorText }}
|
59
|
-
</div>
|
60
|
-
|
61
|
-
</div> -->
|
@@ -1,181 +0,0 @@
|
|
1
|
-
import {
|
2
|
-
Component,
|
3
|
-
Input,
|
4
|
-
ContentChildren,
|
5
|
-
QueryList,
|
6
|
-
Output,
|
7
|
-
EventEmitter,
|
8
|
-
ContentChild,
|
9
|
-
ViewChild,
|
10
|
-
ViewEncapsulation,
|
11
|
-
ElementRef,
|
12
|
-
TemplateRef
|
13
|
-
} from '@angular/core';
|
14
|
-
import { AXPopupService, AXBaseInputComponent, AXBaseSizableComponent, AXElementSize, AXValidation } from '@acorex/components';
|
15
|
-
import { AXDataSourceComponent, AXSelectBoxComponent, AXDataEvent, AXValidatableComponent } from '@acorex/components';
|
16
|
-
import { AXDataLovPopupComponent } from './data-lov-popup/data-lov-popup.component';
|
17
|
-
import { AXGridDataColumn } from '../data-grid/columns/column.component';
|
18
|
-
import { AXConfig } from '@acorex/core';
|
19
|
-
|
20
|
-
@Component({
|
21
|
-
selector: 'ax-lov',
|
22
|
-
templateUrl: './data-lov.component.html',
|
23
|
-
encapsulation: ViewEncapsulation.None,
|
24
|
-
host: { style: 'width: 100%' },
|
25
|
-
providers: [{ provide: AXValidatableComponent, useExisting: AXLOVComponent }]
|
26
|
-
})
|
27
|
-
export class AXLOVComponent extends AXValidatableComponent implements AXBaseSizableComponent, AXBaseInputComponent {
|
28
|
-
@ContentChild(AXValidation, { static: true })
|
29
|
-
private _contentValidation: AXValidation;
|
30
|
-
private _validation: AXValidation;
|
31
|
-
|
32
|
-
@Input()
|
33
|
-
public get validation(): AXValidation {
|
34
|
-
return this._validation ? this._validation : this._contentValidation;
|
35
|
-
}
|
36
|
-
public set validation(v: AXValidation) {
|
37
|
-
this._validation = v;
|
38
|
-
}
|
39
|
-
|
40
|
-
constructor(private popup: AXPopupService, private ref: ElementRef) {
|
41
|
-
super();
|
42
|
-
}
|
43
|
-
|
44
|
-
@ViewChild('selectBox', { static: true })
|
45
|
-
selectBox: AXSelectBoxComponent;
|
46
|
-
|
47
|
-
@ContentChild(AXDataSourceComponent, { static: true })
|
48
|
-
dataSource: AXDataSourceComponent;
|
49
|
-
|
50
|
-
@ContentChildren(AXGridDataColumn)
|
51
|
-
private columns: QueryList<AXGridDataColumn>;
|
52
|
-
|
53
|
-
@ContentChild('itemTemplate', { static: true })
|
54
|
-
rowTemplate: TemplateRef<any>;
|
55
|
-
|
56
|
-
@Input()
|
57
|
-
textField: string = '';
|
58
|
-
|
59
|
-
@Input()
|
60
|
-
allowSearch: boolean = true;
|
61
|
-
|
62
|
-
@Input()
|
63
|
-
valueField: string = '';
|
64
|
-
|
65
|
-
@Input()
|
66
|
-
hasChildField: string = 'null';
|
67
|
-
|
68
|
-
@Input()
|
69
|
-
allowNull: boolean = true;
|
70
|
-
|
71
|
-
@Input()
|
72
|
-
popupSize: 'sm' | 'md' | 'lg' | 'full' = 'md';
|
73
|
-
|
74
|
-
@Input()
|
75
|
-
selectedItems: any[] = [];
|
76
|
-
|
77
|
-
// @Input()
|
78
|
-
// selectedValues: any[] = [];
|
79
|
-
|
80
|
-
@Input()
|
81
|
-
readonly: boolean = false;
|
82
|
-
|
83
|
-
@Input()
|
84
|
-
disabled: boolean = false;
|
85
|
-
|
86
|
-
@Input()
|
87
|
-
chipsWidth: string = '';
|
88
|
-
|
89
|
-
@Input()
|
90
|
-
size: AXElementSize = 'md';
|
91
|
-
|
92
|
-
@Input()
|
93
|
-
caption: string;
|
94
|
-
|
95
|
-
@Input()
|
96
|
-
mode: 'single' | 'multiple' = 'single';
|
97
|
-
|
98
|
-
@Input()
|
99
|
-
placeholder: string;
|
100
|
-
|
101
|
-
@Output()
|
102
|
-
onSelectionChange: EventEmitter<AXDataEvent<any>> = new EventEmitter<AXDataEvent<any>>();
|
103
|
-
|
104
|
-
@Input()
|
105
|
-
rtl: boolean = AXConfig.get('layout.rtl');
|
106
|
-
|
107
|
-
focus(): void {
|
108
|
-
this.selectBox.focus();
|
109
|
-
}
|
110
|
-
|
111
|
-
refresh() {
|
112
|
-
this.selectBox.refresh();
|
113
|
-
}
|
114
|
-
|
115
|
-
handleButtonClick() {
|
116
|
-
this.open();
|
117
|
-
}
|
118
|
-
|
119
|
-
ngOnInit(): void {
|
120
|
-
if (this.rtl == null) {
|
121
|
-
this.rtl = window.getComputedStyle(this.ref.nativeElement, null).getPropertyValue('direction') === 'rtl';
|
122
|
-
}
|
123
|
-
// this.selectVal = this.selectedValues;
|
124
|
-
this.onSelectionChange.subscribe((c) => {
|
125
|
-
this.clearValidationStyle(this.ref.nativeElement);
|
126
|
-
});
|
127
|
-
}
|
128
|
-
|
129
|
-
ngAfterContentInit(): void {
|
130
|
-
this.initValidation(this.ref, 'selectedItems', this.validation);
|
131
|
-
}
|
132
|
-
|
133
|
-
handleSelectChange(e) {
|
134
|
-
this.onSelectionChange.emit({ data: this.selectedItems, component: this, htmlElement: this.ref.nativeElement });
|
135
|
-
}
|
136
|
-
|
137
|
-
public open(): Promise<any> {
|
138
|
-
return new Promise((resolve) => {
|
139
|
-
this.selectBox.dropdown.close();
|
140
|
-
this.popup
|
141
|
-
.open(AXDataLovPopupComponent, {
|
142
|
-
size: this.popupSize,
|
143
|
-
// closable: false,
|
144
|
-
data: {
|
145
|
-
dataSource: this.dataSource,
|
146
|
-
selectionMode: this.mode,
|
147
|
-
columns: this.columns.toArray(),
|
148
|
-
// selectedItems: this.selectedValues,
|
149
|
-
selectedItems: this.selectedItems,
|
150
|
-
keyField: this.valueField,
|
151
|
-
allowNull: this.allowNull,
|
152
|
-
hasChildField: this.hasChildField,
|
153
|
-
rtl: this.rtl
|
154
|
-
},
|
155
|
-
title: this.caption
|
156
|
-
// size: this.size,
|
157
|
-
})
|
158
|
-
.then((c) => {
|
159
|
-
if (c.data) {
|
160
|
-
// this.selectedValues = [];
|
161
|
-
this.selectedItems = [];
|
162
|
-
c.data.forEach((elm) => {
|
163
|
-
this.selectedItems.push(elm);
|
164
|
-
});
|
165
|
-
// this.selectedItems = c.data;
|
166
|
-
// this.selectBox.refresh();
|
167
|
-
this.onSelectionChange.emit({ data: this.selectedItems, component: this, htmlElement: this.ref.nativeElement });
|
168
|
-
if (resolve) {
|
169
|
-
resolve(c.data);
|
170
|
-
}
|
171
|
-
} else {
|
172
|
-
if (resolve) {
|
173
|
-
resolve(this.selectedItems);
|
174
|
-
}
|
175
|
-
}
|
176
|
-
|
177
|
-
this.selectBox.refresh();
|
178
|
-
});
|
179
|
-
});
|
180
|
-
}
|
181
|
-
}
|
@@ -1,16 +0,0 @@
|
|
1
|
-
import { NgModule } from '@angular/core';
|
2
|
-
import { CommonModule } from '@angular/common';
|
3
|
-
import { AXLOVComponent } from './data-lov.component';
|
4
|
-
import { FormsModule } from '@angular/forms';
|
5
|
-
import { AXDataLovPopupComponent } from './data-lov-popup/data-lov-popup.component';
|
6
|
-
import { AXDataGridModule } from '../data-grid/datagrid.module';
|
7
|
-
import { AXDataSourceModule, AXButtonModule, AXToolbarModule, AXSearchBoxModule, AXSelectBoxModule } from '@acorex/components';
|
8
|
-
|
9
|
-
|
10
|
-
@NgModule({
|
11
|
-
declarations: [AXLOVComponent, AXDataLovPopupComponent],
|
12
|
-
imports: [CommonModule, FormsModule, AXDataGridModule, AXDataSourceModule, AXButtonModule, AXToolbarModule, AXSelectBoxModule, AXSearchBoxModule],
|
13
|
-
exports: [AXLOVComponent, AXDataLovPopupComponent],
|
14
|
-
providers: []
|
15
|
-
})
|
16
|
-
export class AXLOVModule { }
|
package/src/test.ts
DELETED
@@ -1,28 +0,0 @@
|
|
1
|
-
// This file is required by karma.conf.js and loads recursively all the .spec and framework files
|
2
|
-
|
3
|
-
import 'zone.js';
|
4
|
-
import 'zone.js/testing';
|
5
|
-
import { getTestBed } from '@angular/core/testing';
|
6
|
-
import {
|
7
|
-
BrowserDynamicTestingModule,
|
8
|
-
platformBrowserDynamicTesting
|
9
|
-
} from '@angular/platform-browser-dynamic/testing';
|
10
|
-
|
11
|
-
declare const require: {
|
12
|
-
context(path: string, deep?: boolean, filter?: RegExp): {
|
13
|
-
keys(): string[];
|
14
|
-
<T>(id: string): T;
|
15
|
-
};
|
16
|
-
};
|
17
|
-
|
18
|
-
// First, initialize the Angular testing environment.
|
19
|
-
getTestBed().initTestEnvironment(
|
20
|
-
BrowserDynamicTestingModule,
|
21
|
-
platformBrowserDynamicTesting(), {
|
22
|
-
teardown: { destroyAfterEach: false }
|
23
|
-
}
|
24
|
-
);
|
25
|
-
// Then we find all the tests.
|
26
|
-
const context = require.context('./', true, /\.spec\.ts$/);
|
27
|
-
// And load the modules.
|
28
|
-
context.keys().map(context);
|