refactor: remove change password form and related service, update root component to use tabs

This commit is contained in:
2026-06-07 14:33:11 +03:30
parent 2f67801700
commit 788f4023f3
7 changed files with 34 additions and 102 deletions
@@ -1,9 +1,11 @@
import { ToastService } from '@/core/services/toast.service';
import { AbstractDialog } from '@/shared/abstractClasses/abstract-dialog';
import { ChangePasswordFormDialogComponent } from '@/shared/components';
import {
ChangePasswordFormDialogComponent,
IChangePasswordSubmitPayload,
} from '@/shared/components';
import { Component, inject, signal } from '@angular/core';
import { finalize } from 'rxjs';
import { IChangePasswordSubmitPayload } from '../modules/configs/components/changePassword/model';
import { PosChangePasswordService } from '../services/password';
@Component({
@@ -1,11 +0,0 @@
<app-card-data cardTitle="تغییر گذرواژه" class="w-full">
<form [formGroup]="form" (submit)="submit()" class="flex flex-col gap-4">
<shared-password-input
[passwordControl]="form.controls.password"
[confirmPasswordControl]="form.controls.confirmPassword" />
<div class="flex w-full justify-end">
<button pButton label="ذخیره گذرواژه" [loading]="submitLoading()" class="w-full max-w-40"></button>
</div>
</form>
</app-card-data>
@@ -1,51 +0,0 @@
import { MustMatch } from '@/core/validators';
import { AbstractForm } from '@/shared/abstractClasses';
import { AppCardComponent } from '@/shared/components';
import { SharedPasswordInputComponent } from '@/shared/components/passwordInput/password-input.component';
import { fieldControl } from '@/shared/constants';
import { CommonModule } from '@angular/common';
import { Component, inject } from '@angular/core';
import { ReactiveFormsModule } from '@angular/forms';
import { ButtonDirective } from 'primeng/button';
import { tap } from 'rxjs';
import { IChangePasswordSubmitPayload } from './model';
import { PosChangePasswordService } from './services/main.service';
@Component({
selector: 'pos-change-password-form',
templateUrl: './form.component.html',
imports: [
ReactiveFormsModule,
SharedPasswordInputComponent,
CommonModule,
ButtonDirective,
AppCardComponent,
],
})
export class PosChangePasswordFormDialogComponent extends AbstractForm<
IChangePasswordSubmitPayload,
any
> {
private readonly changePasswordService = inject(PosChangePasswordService);
form = this.fb.group(
{
password: fieldControl.password(),
confirmPassword: fieldControl.confirmPassword(),
},
{
validators: [MustMatch('password', 'confirmPassword')],
}
);
override submitForm() {
const payload = this.form.getRawValue().password!;
return this.changePasswordService.changePassword({ password: payload }).pipe(
tap({
next: (res) => {
this.form.reset();
},
})
);
}
}
@@ -1,3 +0,0 @@
export interface IChangePasswordSubmitPayload {
password: string;
}
@@ -1,15 +0,0 @@
import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
import { IChangePasswordSubmitPayload } from '../model';
@Injectable({
providedIn: 'root',
})
export class PosChangePasswordService {
constructor(private readonly http: HttpClient) {}
changePassword(payload: IChangePasswordSubmitPayload): Observable<unknown> {
return this.http.put('/api/v1/pos/update-password', payload);
}
}
@@ -1,19 +1,28 @@
<div class="flex h-full w-full flex-col items-center justify-center gap-6 p-4">
<app-card-data cardTitle="تنظیمات صدور صورت‌حساب" class="w-full">
<div class="flex w-full flex-col gap-4">
@if (info()?.guild!.code.toLocaleLowerCase() === 'gold') {
<pos-config-gold-price-form class="w-full" />
<hr />
}
<pos-config-rapid-invoice-form class="w-full" />
<hr />
<pos-config-send-to-fiscal-activation-form class="w-full" />
</div>
</app-card-data>
<app-card-data cardTitle="تنظیمات پرینت صورت‌حساب" class="w-full">
<p-message variant="text" severity="info" icon="pi pi-info-circle">
هریک از موارد زیر را که می‌خواهید در چاپ صورت‌حساب‌ نمایش داده‌ شوند را انتخاب کنید
</p-message>
<pos-config-print-form class="mt-6 block w-full" (onClose)="returnToMainPage()" />
</app-card-data>
<div class="bg-surface-card flex h-full w-full flex-col gap-4 rounded-b-2xl p-4">
<p-tabs value="0">
<p-tablist>
<p-tab value="0">تنظیمات صدور صورت‌حساب</p-tab>
<p-tab value="1">تنظیمات پرینت</p-tab>
</p-tablist>
<p-tabpanels class="mt-4">
<p-tabpanel value="0">
<div class="flex w-full flex-col gap-4">
@if (info()?.guild!.code.toLocaleLowerCase() === 'gold') {
<pos-config-gold-price-form class="w-full" />
<hr />
}
<pos-config-rapid-invoice-form class="w-full" />
<hr />
<pos-config-send-to-fiscal-activation-form class="w-full" />
</div>
</p-tabpanel>
<p-tabpanel value="1">
<p-message variant="text" severity="info" icon="pi pi-info-circle">
هریک از موارد زیر را که می‌خواهید در چاپ صورت‌حساب‌ نمایش داده‌ شوند را انتخاب کنید
</p-message>
<pos-config-print-form class="mt-6 block w-full" (onClose)="returnToMainPage()" />
</p-tabpanel>
</p-tabpanels>
</p-tabs>
</div>
@@ -1,8 +1,8 @@
import { PosInfoStore } from '@/domains/pos/store';
import { AppCardComponent } from '@/shared/components';
import { Component, computed, inject } from '@angular/core';
import { Router } from '@angular/router';
import { Message } from 'primeng/message';
import { TabsModule } from 'primeng/tabs';
import { PosConfigGoldPriceFormComponent } from '../components/goldPrice/form.component';
import { PosConfigPrintFormComponent } from '../components/print/form.component';
import { PosConfigRapidInvoiceFormComponent } from '../components/rapidInvoice/form.component';
@@ -13,8 +13,8 @@ import { PosConfigSendToFiscalActivationFormComponent } from '../components/send
templateUrl: './root.component.html',
imports: [
PosConfigPrintFormComponent,
AppCardComponent,
Message,
TabsModule,
PosConfigGoldPriceFormComponent,
PosConfigRapidInvoiceFormComponent,
PosConfigSendToFiscalActivationFormComponent,
@@ -25,6 +25,7 @@ export class PosConfigPageComponent {
private readonly posInfoStore = inject(PosInfoStore);
readonly info = computed(() => this.posInfoStore.entity());
activeTabIndex = 0;
returnToMainPage() {
this.router.navigateByUrl('/');