Moved to Angular v20 and Tailwind v4 plus all related dependencies

Renamed Docker directory.

Also serving static files from FastAPI.
This commit is contained in:
2025-06-26 06:46:17 +00:00
parent 05b395af00
commit cb2b650375
253 changed files with 8626 additions and 1995 deletions
@@ -1,27 +1,28 @@
import { AsyncPipe, CurrencyPipe } from '@angular/common';
import { AfterViewInit, Component, ElementRef, OnInit, ViewChild } from '@angular/core';
import { AfterViewInit, Component, ElementRef, HostListener, inject, OnInit, ViewChild } from '@angular/core';
import { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';
import { MatAutocompleteSelectedEvent, MatAutocompleteTrigger, MatAutocomplete } from '@angular/material/autocomplete';
import { MatAutocomplete, MatAutocompleteSelectedEvent, MatAutocompleteTrigger } from '@angular/material/autocomplete';
import { MatButton, MatIconButton } from '@angular/material/button';
import { MatCard, MatCardHeader, MatCardTitle, MatCardContent, MatCardActions } from '@angular/material/card';
import { MatCard, MatCardActions, MatCardContent, MatCardHeader, MatCardTitle } from '@angular/material/card';
import { MatOption } from '@angular/material/core';
import { MatDatepickerInput, MatDatepickerToggle, MatDatepicker } from '@angular/material/datepicker';
import { MatDatepicker, MatDatepickerInput, MatDatepickerToggle } from '@angular/material/datepicker';
import { MatDialog } from '@angular/material/dialog';
import { MatFormField, MatLabel, MatSuffix } from '@angular/material/form-field';
import { MatIcon } from '@angular/material/icon';
import { MatInput } from '@angular/material/input';
import { MatSnackBar } from '@angular/material/snack-bar';
import { MatSort } from '@angular/material/sort';
import {
MatTable,
MatColumnDef,
MatHeaderCellDef,
MatHeaderCell,
MatCellDef,
MatCell,
MatHeaderRowDef,
MatCellDef,
MatColumnDef,
MatHeaderCell,
MatHeaderCellDef,
MatHeaderRow,
MatRowDef,
MatHeaderRowDef,
MatRow,
MatRowDef,
MatTable,
} from '@angular/material/table';
import { ActivatedRoute, Router } from '@angular/router';
import moment from 'moment';
@@ -32,22 +33,18 @@ import { Account } from '../../core/account';
import { AccountService } from '../../core/account.service';
import { Product } from '../../core/product';
import { ProductSku } from '../../core/product-sku';
import { MatSnackBar } from '@angular/material/snack-bar';
import { ProductService } from '../../product/product.service';
import { ConfirmDialogComponent } from '../../shared/confirm-dialog/confirm-dialog.component';
import { MathService } from '../../shared/math.service';
import { RateContract } from '../rate-contract';
import { RateContractItem } from '../rate-contract-item';
import { RateContractService } from '../rate-contract.service';
import { RateContractDetailDatasource } from './rate-contract-detail-datasource';
import { HostListener } from '@angular/core';
@Component({
selector: 'app-rate-contract-detail',
templateUrl: './rate-contract-detail.component.html',
styleUrls: ['./rate-contract-detail.component.css'],
standalone: true,
imports: [
MatCard,
MatCardHeader,
@@ -84,6 +81,15 @@ import { HostListener } from '@angular/core';
],
})
export class RateContractDetailComponent implements OnInit, AfterViewInit {
private route = inject(ActivatedRoute);
private router = inject(Router);
private snackBar = inject(MatSnackBar);
private dialog = inject(MatDialog);
private math = inject(MathService);
private ser = inject(RateContractService);
private productSer = inject(ProductService);
private accountSer = inject(AccountService);
@ViewChild('accountElement', { static: true }) accountElement!: ElementRef<HTMLInputElement>;
@ViewChild('productElement', { static: true }) productElement!: ElementRef<HTMLInputElement>;
@ViewChild('dateElement', { static: true }) dateElement!: ElementRef<HTMLInputElement>;
@@ -118,16 +124,7 @@ export class RateContractDetailComponent implements OnInit, AfterViewInit {
this.dateElement.nativeElement.select();
}
constructor(
private route: ActivatedRoute,
private router: Router,
private snackBar: MatSnackBar,
private dialog: MatDialog,
private math: MathService,
private ser: RateContractService,
private productSer: ProductService,
private accountSer: AccountService,
) {
constructor() {
this.form = new FormGroup({
date: new FormControl(new Date(), { nonNullable: true }),
account: new FormControl<string | null>(null),