Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4,420 changes: 1,543 additions & 2,877 deletions Angular/package-lock.json

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions Angular/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@
"@angular/platform-browser": "^18.0.3",
"@angular/platform-browser-dynamic": "^18.0.3",
"@angular/router": "^18.0.3",
"devextreme": "24.2.3",
"devextreme-angular": "24.2.3",
"devextreme": "25.1",
"devextreme-angular": "25.1",
"rxjs": "~7.8.0",
"tslib": "^2.3.0",
"zone.js": "~0.14.7"
Expand Down
322 changes: 168 additions & 154 deletions Angular/src/app/app.component.html
Original file line number Diff line number Diff line change
@@ -1,161 +1,175 @@
<dx-data-grid
#grid
[dataSource]="{ store: this.employeeStore }"
[showBorders]="true"
[repaintChangesOnly]="true"
<dx-data-grid
#grid
[dataSource]="{ store: this.employeeStore }"
[showBorders]="true"
[repaintChangesOnly]="true"
>
<dxo-editing
[allowUpdating]="true"
[allowAdding]="true"
[allowDeleting]="true"
[useIcons]="true"
mode="popup"
> </dxo-editing>
<dxi-column dataField="FirstName" dataType="string"></dxi-column>
<dxi-column dataField="LastName" dataType="string"></dxi-column>
<dxi-column dataField="BirthDate" dataType="date"></dxi-column>
<dxi-column dataField="Position" dataType="string"></dxi-column>
<dxi-column dataField="HireDate" dataType="date"></dxi-column>
<dxi-column dataField="Address" dataType="string"></dxi-column>
<dxi-column type="buttons">
<dxi-button name="edit" [onClick]="editRow"></dxi-button>
<dxi-button name="delete"></dxi-button>
</dxi-column>
<dxo-toolbar>
<dxi-item location="after">
<div *dxTemplate>
<dx-button icon="plus" (onClick)="addRow()"></dx-button>
</div>
</dxi-item>
</dxo-toolbar>
<dxo-data-grid-editing
[allowUpdating]="true"
[allowAdding]="true"
[allowDeleting]="true"
[useIcons]="true"
mode="popup"
>
</dxo-data-grid-editing>
<dxi-data-grid-column
dataField="FirstName"
dataType="string"
></dxi-data-grid-column>
<dxi-data-grid-column
dataField="LastName"
dataType="string"
></dxi-data-grid-column>
<dxi-data-grid-column
dataField="BirthDate"
dataType="date"
></dxi-data-grid-column>
<dxi-data-grid-column
dataField="Position"
dataType="string"
></dxi-data-grid-column>
<dxi-data-grid-column
dataField="HireDate"
dataType="date"
></dxi-data-grid-column>
<dxi-data-grid-column
dataField="Address"
dataType="string"
></dxi-data-grid-column>
<dxi-data-grid-column type="buttons">
<dxi-data-grid-button
name="edit"
[onClick]="editRow"
></dxi-data-grid-button>
<dxi-data-grid-button name="delete"></dxi-data-grid-button>
</dxi-data-grid-column>
<dxo-data-grid-toolbar>
<dxi-data-grid-toolbar-item location="after">
<div *dxTemplate>
<dx-button icon="plus" (onClick)="addRow()"></dx-button>
</div>
</dxi-data-grid-toolbar-item>
</dxo-data-grid-toolbar>
</dx-data-grid>

<dx-popup
*ngIf="visible"
[title]="isNewRecord ? 'Add' : 'Edit'"
[hideOnOutsideClick]="true"
height="auto"
[visible]="true"
onHiding="hidePopup"
<dx-popup
*ngIf="visible"
[title]="isNewRecord ? 'Add' : 'Edit'"
[hideOnOutsideClick]="true"
height="auto"
[visible]="true"
onHiding="hidePopup"
>
<dxi-toolbar-item
widget="dxButton"
location="after"
toolbar="bottom"
[options]="{
text: 'Confirm',
type: 'success',
onClick: confirmChanges
}"
> </dxi-toolbar-item>
<dxi-toolbar-item
widget="dxButton"
location="after"
toolbar="bottom"
[options]="{
text: 'Cancel',
onClick: hidePopup
}"
> </dxi-toolbar-item>

<div *dxTemplate="let data of 'content'">
<dx-form
[validationGroup]="validationGroupName"
[formData]="formData"
<dxi-popup-toolbar-item
widget="dxButton"
location="after"
toolbar="bottom"
[options]="{
text: 'Confirm',
type: 'success',
onClick: confirmChanges
}"
>
</dxi-popup-toolbar-item>
<dxi-popup-toolbar-item
widget="dxButton"
location="after"
toolbar="bottom"
[options]="{
text: 'Cancel',
onClick: hidePopup
}"
>
</dxi-popup-toolbar-item>

<div *dxTemplate="let data of 'content'">
<dx-form [validationGroup]="validationGroupName" [formData]="formData">
<dxi-form-item itemType="group" [colCount]="2">
<dxi-form-item dataField="FirstName">
<dxi-form-validation-rule
type="required"
message="First Name is required."
></dxi-form-validation-rule>
<dxo-form-label template="name"></dxo-form-label>
</dxi-form-item>
<dxi-form-item
dataField="Position"
editorType="dxSelectBox"
[editorOptions]="positionEditorOptions"
>
<dxo-form-label template="position"></dxo-form-label>
</dxi-form-item>
<dxi-form-item dataField="LastName">
<dxi-form-validation-rule
type="required"
message="Last Name is required."
></dxi-form-validation-rule>
<dxo-form-label template="name"></dxo-form-label>
</dxi-form-item>
<dxi-form-item dataField="Address">
<dxo-form-label template="address"></dxo-form-label>
</dxi-form-item>
<dxi-form-item dataField="BirthDate" editorType="dxDateBox">
<dxi-form-validation-rule
type="required"
message="Birth Date is required."
invalidDateMessage="The date must have the following format: mm/dd/yyyy"
></dxi-form-validation-rule>
<dxo-form-label template="date"></dxo-form-label>
</dxi-form-item>
<dxi-form-item dataField="HireDate" editorType="dxDateBox">
<dxo-form-label template="date"></dxo-form-label>
</dxi-form-item>
<dxi-form-item
dataField="Notes"
editorType="dxTextArea"
[editorOptions]="notesEditorOptions"
[colSpan]="2"
>
<dxo-form-label template="notes"></dxo-form-label>
</dxi-form-item>
<dxi-form-item dataField="Phone" [editorOptions]="phoneEditorOptions">
<dxi-form-validation-rule
type="required"
message="Phone number is required."
></dxi-form-validation-rule>
<dxo-form-label template="phone"></dxo-form-label>
</dxi-form-item>
<dxi-form-item dataField="Email">
<dxi-form-validation-rule
type="email"
message="Email is incorrect."
></dxi-form-validation-rule>
<dxo-form-label template="email"></dxo-form-label>
</dxi-form-item>
</dxi-form-item>

<ng-container *ngFor="let label of labelTemplates">
<div *dxTemplate="let data of label.name">
<div><i class="dx-icon {{ label.icon }}"></i>{{ data.text }}</div>
</div>
</ng-container>

<div *dxTemplate="let data of 'notes'">
<div id="template-content">
<i id="helpedInfo" class="dx-icon dx-icon-info"></i>
Additional
<br />
{{ data.text }}
</div>

<dx-tooltip
target="#helpedInfo"
showEvent="mouseenter"
hideEvent="mouseleave"
>
<dxi-item itemType="group" [colCount]="2" >
<dxi-item dataField="FirstName" >
<dxi-validation-rule
type="required"
message="First Name is required."
></dxi-validation-rule>
<dxo-label template="name"></dxo-label>
</dxi-item>
<dxi-item
dataField="Position"
editorType="dxSelectBox"
[editorOptions]="positionEditorOptions"
>
<dxo-label template="position"></dxo-label>
</dxi-item>
<dxi-item dataField="LastName" >
<dxi-validation-rule
type="required"
message="Last Name is required."
></dxi-validation-rule>
<dxo-label template="name"></dxo-label>
</dxi-item>
<dxi-item dataField="Address">
<dxo-label template="address"></dxo-label>
</dxi-item>
<dxi-item
dataField="BirthDate"
editorType="dxDateBox"
>
<dxi-validation-rule
type="required"
message="Birth Date is required."
invalidDateMessage="The date must have the following format: mm/dd/yyyy"
></dxi-validation-rule>
<dxo-label template="date"></dxo-label>
</dxi-item>
<dxi-item
dataField="HireDate"
editorType="dxDateBox"
>
<dxo-label template="date"></dxo-label>
</dxi-item>
<dxi-item
dataField="Notes"
editorType="dxTextArea"
[editorOptions]="notesEditorOptions"
[colSpan]="2"
>
<dxo-label template="notes"></dxo-label>
</dxi-item>
<dxi-item dataField="Phone" [editorOptions]="phoneEditorOptions">
<dxi-validation-rule
type="required"
message="Phone number is required."
></dxi-validation-rule>
<dxo-label template="phone"></dxo-label>
</dxi-item>
<dxi-item dataField="Email">
<dxi-validation-rule
type="email"
message="Email is incorrect."
></dxi-validation-rule>
<dxo-label template="email"></dxo-label>
</dxi-item>
</dxi-item>

<ng-container *ngFor="let label of labelTemplates">
<div *dxTemplate="let data of label.name">
<div><i class="dx-icon {{ label.icon }}"></i>{{ data.text }}</div>
</div>
</ng-container>

<div *dxTemplate="let data of 'notes'">
<div id="template-content">
<i id="helpedInfo" class="dx-icon dx-icon-info"></i>
Additional
<br />
{{ data.text }}
</div>

<dx-tooltip
target="#helpedInfo"
showEvent="mouseenter"
hideEvent="mouseleave"
>
<div *dxTemplate="let data = data; of: 'content'">
<div id="tooltip-content">
This field must not exceed 200 characters
</div>
</div>
</dx-tooltip>
<div *dxTemplate="let data = data; of: 'content'">
<div id="tooltip-content">
This field must not exceed 200 characters
</div>
</dx-form>
</div>
</div>
</dx-tooltip>
</div>
</dx-form>
</div>
</dx-popup>

6 changes: 3 additions & 3 deletions Angular/src/app/app.component.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@ describe('AppComponent', () => {
beforeEach(async () => {
await TestBed.configureTestingModule({
imports: [
RouterTestingModule
RouterTestingModule,
],
declarations: [
AppComponent
AppComponent,
],
}).compileComponents();
});
Expand All @@ -20,7 +20,7 @@ describe('AppComponent', () => {
expect(app).toBeTruthy();
});

it(`should have as title 'DxAngularApp'`, () => {
it('should have as title \'DxAngularApp\'', () => {
const fixture = TestBed.createComponent(AppComponent);
const app = fixture.componentInstance;
expect(app.title).toEqual('DxAngularApp');
Expand Down
Loading
Loading