chore: add Tailwind CSS configuration file. ux writing update

This commit is contained in:
2026-05-05 22:42:06 +03:30
parent d130a83bd4
commit 54d00e19ae
96 changed files with 187 additions and 204 deletions
@@ -44,7 +44,7 @@
<div class="listKeyValue">
<app-key-value label="کسب و کار" [value]="invoice.pos!.complex.business_activity.name" />
<app-key-value label="مجموعه" [value]="invoice.pos!.complex.name" />
<app-key-value label="پایانه‌ی فروش" [value]="invoice.pos!.name" />
<app-key-value label="پایانه فروش" [value]="invoice.pos!.name" />
<app-key-value label="ایجاد کننده" [value]="invoice.consumer_account.account.username" />
</div>
@@ -68,11 +68,6 @@ export class ConsumerSaleInvoiceSharedComponent {
};
columns: IColumn[] = [
{
field: '',
header: '',
type: 'index',
},
{
field: 'name',
header: 'عنوان',
@@ -18,7 +18,7 @@ export const CONSUMER_MENU_ITEMS = [
routerLink: ['/consumer/poses'],
},
{
label: 'لیست فاکتورها',
label: 'فاکتورها',
icon: 'pi pi-fw pi-home',
routerLink: ['/consumer/sale_invoices'],
},
@@ -1,17 +1,13 @@
// import { CatalogRolesComponent } from '@/shared/catalog/roles';
import { AbstractFormDialog } from '@/shared/abstractClasses';
import {
NameComponent,
AddressComponent,
BranchCodeComponent,
} from '@/shared/components';
import { fieldControl } from '@/shared/constants/fields';
import { AddressComponent, BranchCodeComponent, NameComponent } from '@/shared/components';
import { SharedDialogComponent } from '@/shared/components/dialog/dialog.component';
import { FormFooterActionsComponent } from '@/shared/components/formFooterActions/form-footer-actions.component';
import { fieldControl } from '@/shared/constants/fields';
import { Component, inject, Input } from '@angular/core';
import { ReactiveFormsModule } from '@angular/forms';
import { IComplexRequest, IComplexResponse } from '../../models';
import { ConsumerComplexesService } from '../../services/complexes.service';
import { SharedDialogComponent } from '@/shared/components/dialog/dialog.component';
@Component({
selector: 'consumer-complex-form',
@@ -45,7 +41,7 @@ export class ConsumerComplexFormComponent extends AbstractFormDialog<
form = this.initForm();
get preparedTitle() {
return `${this.editMode ? 'ویرایش' : 'ایجاد'} شعبه`;
return `${this.editMode ? 'ویرایش' : 'افزودن'} شعبه`;
}
override ngOnChanges(): void {
@@ -1,11 +1,11 @@
<app-page-data-list
pageTitle="مدیریت شعب"
[addNewCtaLabel]="'افزودن شعبه‌ جدید'"
[addNewCtaLabel]="'افزودن شعبه‌'"
[showAdd]="true"
[columns]="columns"
[showAdd]="true"
emptyPlaceholderTitle="شعبه‌ای یافت نشد."
emptyPlaceholderDescription="برای افزودن شعبه‌ جدید، روی دکمهٔ بالا کلیک کنید."
emptyPlaceholderDescription="برای افزودن شعبه‌، روی دکمهٔ بالا کلیک کنید."
[items]="items()"
[loading]="loading()"
[showDetails]="true"
@@ -46,6 +46,9 @@ export class ConsumerBusinessActivityFormComponent extends AbstractFormDialog<
});
override submitForm(payload: IBusinessActivityRequest) {
return this.service.update(this.businessId, payload);
return this.service.update(this.businessId, {
...payload,
economic_code: payload.economic_code.toString(),
});
}
}
@@ -6,12 +6,12 @@ import { ReactiveFormsModule, Validators } from '@angular/forms';
import { EnumSelectComponent } from '@/shared/apiEnum/select.component';
import { CatalogGuildGoodCategoriesSelectComponent } from '@/shared/catalog/guildGoodCategories';
import { SharedDialogComponent } from '@/shared/components/dialog/dialog.component';
import {
IConsumerBusinessActivityGoodRequest,
IConsumerBusinessActivityGoodResponse,
} from '../../models/goods_io';
import { BusinessActivityGoodsService } from '../../services/goods.service';
import { SharedDialogComponent } from '@/shared/components/dialog/dialog.component';
@Component({
selector: 'consumer-businessActivity-good-form',
@@ -45,7 +45,7 @@ export class ConsumerBusinessActivityGoodFormComponent extends AbstractFormDialo
});
get preparedTitle() {
return `${this.editMode ? 'ویرایش' : 'ایجاد'} کالا`;
return `${this.editMode ? 'ویرایش' : 'افزودن'} کالا`;
}
override submitForm(payload: IConsumerBusinessActivityGoodRequest) {
@@ -1,10 +1,10 @@
<app-page-data-list
pageTitle="مدیریت کالاها"
[addNewCtaLabel]="'افزودن کالای جدید'"
[addNewCtaLabel]="'افزودن کالای'"
[columns]="columns"
[showAdd]="true"
emptyPlaceholderTitle="کالایی یافت نشد"
emptyPlaceholderDescription="برای افزودن کالای جدید، روی دکمهٔ بالا کلیک کنید."
emptyPlaceholderDescription="برای افزودن کالای، روی دکمهٔ بالا کلیک کنید."
[items]="items()"
[loading]="loading()"
[showAdd]="true"
@@ -2,22 +2,22 @@
import { MustMatch } from '@/core/validators';
import { AbstractFormDialog } from '@/shared/abstractClasses';
import {
NameComponent,
SharedPasswordInputComponent,
DeviceIdComponent,
NameComponent,
PosTypeComponent,
ProviderIdComponent,
SerialNumberComponent,
PosTypeComponent,
SharedPasswordInputComponent,
UsernameComponent,
} from '@/shared/components';
import { fieldControl } from '@/shared/constants/fields';
import { SharedDialogComponent } from '@/shared/components/dialog/dialog.component';
import { FormFooterActionsComponent } from '@/shared/components/formFooterActions/form-footer-actions.component';
import { fieldControl } from '@/shared/constants/fields';
import { Component, inject, Input } from '@angular/core';
import { ReactiveFormsModule, Validators } from '@angular/forms';
import { Divider } from 'primeng/divider';
import { IPosRequest, IPosResponse } from '../../models';
import { ConsumerPosesService } from '../../services/poses.service';
import { SharedDialogComponent } from '@/shared/components/dialog/dialog.component';
@Component({
selector: 'consumer-pos-form',
@@ -123,7 +123,7 @@ export class ConsumerPosFormComponent extends AbstractFormDialog<IPosRequest, IP
form = this.initForm();
get preparedTitle() {
return `${this.editMode ? 'ویرایش' : 'ایجاد'} پایانه فروش`;
return `${this.editMode ? 'ویرایش' : 'افزودن'} پایانه فروش`;
}
override ngOnChanges(): void {
@@ -1,9 +1,9 @@
<app-page-data-list
pageTitle="لیست پایانه‌های فروش"
[columns]="columns"
[addNewCtaLabel]="'افزودن پایانه‌ی فروش جدید'"
emptyPlaceholderTitle="پایانه‌ی فروشی یافت نشد."
emptyPlaceholderDescription="برای افزودن پایانه‌ی فروش جدید، روی دکمهٔ بالا کلیک کنید."
[addNewCtaLabel]="'افزودن پایانه فروش'"
emptyPlaceholderTitle="پایانه فروشی یافت نشد."
emptyPlaceholderDescription="برای افزودن پایانه فروش، روی دکمهٔ بالا کلیک کنید."
[items]="items()"
[loading]="loading()"
[showDetails]="true"
@@ -1,5 +1,5 @@
<app-page-data-list
pageTitle="لیست فاکتور‌های صادر شده"
pageTitle="لیست فاکتور‌ها"
[columns]="columns"
emptyPlaceholderTitle="تا به حال فاکتور فروشی توسط این پایانه ایجاد نشده است."
[items]="items()"
@@ -24,7 +24,7 @@ export const consumerBusinessActivityGoodsNamedRoutes: NamedRoutes<TGoodsRouteNa
// import('../../views/goods/single.component').then((m) => m.SuperAdminUserPosComponent),
// // @ts-ignore
// meta: {
// title: 'پایانه‌ی فروش',
// title: 'پایانه فروش',
// pagePath: (businessId: string, complexId: string, goodId: string) =>
// `${baseUrl(businessId)}/${goodId}`,
// },
@@ -23,7 +23,7 @@ export const consumerPosesNamedRoutes: NamedRoutes<TPosesRouteNames> = {
import('../../views/poses/single.component').then((m) => m.ConsumerComplexPosPageComponent),
// @ts-ignore
meta: {
title: 'پایانه‌ی فروش',
title: 'پایانه فروش',
pagePath: (businessId: string, complexId: string, posId: string) =>
`${baseUrl(businessId, complexId)}/${posId}`,
},
@@ -1,7 +1,7 @@
<div class="flex flex-col gap-6">
<app-card-data cardTitle="اطلاعات فعالیت اقتصادی" [editable]="true" [(editMode)]="editMode">
<ng-template #moreActions>
<a routerLink pButton [routerLink]="goodsPageRoute()" outlined>مدیریت کالاها</a>
<a routerLink pButton [routerLink]="goodsPageRoute()" outlined size="small">مدیریت کالاها</a>
</ng-template>
<div class="flex flex-col gap-4">
<div class="listKeyValue">
@@ -1,7 +1,7 @@
<app-page-data-list
[pageTitle]="'لیست مشتری‌ها'"
[columns]="columns"
emptyPlaceholderTitle="مشتری‌ای یافت نشد"
emptyPlaceholderTitle="مشتری یافت نشد"
[items]="items()"
[loading]="loading()"
[showEdit]="true"
@@ -1,5 +1,5 @@
<app-page-data-list
[pageTitle]="'لیست فاکتورهای ایجاد شده'"
[pageTitle]="'لیست فاکتورها'"
[columns]="columns"
emptyPlaceholderTitle="فاکتوری یافت نشد"
[items]="items()"
@@ -29,7 +29,7 @@ export class ConsumerCustomerSaleInvoiceListComponent extends AbstractList<ICust
field: 'pos',
header: 'پایانه',
customDataModel(item: ICustomerSaleInvoicesResponse) {
return `${item.pos.complex.business_activity.name}، شعبه ${item.pos.complex.name}، پایانه‌ی فروش ${item.pos.name}`;
return `${item.pos.complex.business_activity.name}، شعبه ${item.pos.complex.name}، پایانه فروش ${item.pos.name}`;
},
},
{
@@ -1,7 +1,7 @@
<app-page-data-list
pageTitle="لیست پایانه‌های فروش"
[columns]="columns"
emptyPlaceholderTitle="پایانه‌ی فروشی یافت نشد."
emptyPlaceholderTitle="پایانه فروشی یافت نشد."
[items]="items()"
[loading]="loading()"
[showDetails]="true"
@@ -22,7 +22,7 @@ export const ConsumerPosesNamedRoutes: NamedRoutes<TPosesRouteNames> = {
import('../../views/single.component').then((m) => m.ConsumerPosPageComponent),
// @ts-ignore
meta: {
title: 'پایانه‌ی فروش',
title: 'پایانه فروش',
pagePath: (posId: string) => `${baseUrl}/${posId}`,
},
},
@@ -1,5 +1,5 @@
<app-page-data-list
[pageTitle]="'لیست فاکتورهای ایجاد شده'"
[pageTitle]="'لیست فاکتورها'"
[columns]="columns"
emptyPlaceholderTitle="فاکتوری یافت نشد"
[items]="items()"
@@ -1,5 +1,5 @@
<shared-dialog
header="ایجاد فعالیت اقتصادی"
header="افزودن فعالیت اقتصادی"
[(visible)]="visible"
[modal]="true"
[style]="{ width: '520px' }"
@@ -9,8 +9,8 @@
<p-stepper [value]="activeStep()" [linear]="true">
<p-step-list>
<p-step [value]="1">فعالیت اقتصادی</p-step>
<p-step [value]="2" [disabled]="!businessActivity()">فروشگاه</p-step>
<p-step [value]="3" [disabled]="!complex()">پایانه‌ی فروشگاهی</p-step>
<p-step [value]="2" [disabled]="!businessActivity()">شعبه</p-step>
<p-step [value]="3" [disabled]="!complex()">پایانه فروشگاهی</p-step>
</p-step-list>
</p-stepper>
@@ -1,8 +1,8 @@
import { AbstractDialog } from '@/shared/abstractClasses/abstract-dialog';
import { SharedDialogComponent } from '@/shared/components/dialog/dialog.component';
import { Component, EventEmitter, Input, Output } from '@angular/core';
import { IBusinessActivityResponse } from '../../models';
import { ConsumerBusinessActivitiesFormComponent } from './form.component';
import { SharedDialogComponent } from '@/shared/components/dialog/dialog.component';
@Component({
selector: 'partner-consumer-businessActivities-form',
@@ -18,7 +18,7 @@ export class ConsumerBusinessActivitiesFormDialogComponent extends AbstractDialo
@Input() businessActivityId!: string;
get preparedTitle() {
return `${this.editMode ? 'ویرایش' : 'ایجاد'} فعالیت اقتصادی`;
return `${this.editMode ? 'ویرایش' : 'افزودن'} فعالیت اقتصادی`;
}
onFormSubmit(response: IBusinessActivityResponse) {
@@ -1,13 +1,13 @@
<form [formGroup]="form" (submit)="submit()" class="flex flex-col gap-4">
<field-name [control]="$any(form).controls.name" />
<field-economic-code [control]="$any(form).controls.economic_code" />
<field-fiscal-code [control]="$any(form).controls.fiscal_id" />
<field-partner-token [control]="$any(form).controls.partner_token" />
<field-guild-id [control]="$any(form).controls.guild_id" />
<field-name [control]="form.controls.name" />
<field-economic-code [control]="form.controls.economic_code" />
<field-fiscal-code [control]="form.controls.fiscal_id" />
<field-partner-token [control]="form.controls.partner_token" />
<field-guild-id [control]="form.controls.guild_id" />
@if (!editMode) {
<p-divider align="center"> اطلاعات لایسنس </p-divider>
<field-license-starts-at [control]="$any(form).controls.license_starts_at" />
<field-license-starts-at [control]="form.controls.license_starts_at" />
}
<app-form-footer-actions [submitLabel]="'ذخیره'" [loading]="submitLoading()" (onCancel)="close()" />
@@ -73,6 +73,7 @@ export class ConsumerBusinessActivitiesFormComponent extends AbstractForm<
submitForm() {
const formValue = this.form.value as IBusinessActivityRequest;
formValue.economic_code = String(formValue.economic_code);
if (this.editMode) {
return this.service.update(this.consumerId, this.businessActivityId, formValue);
}
@@ -1,10 +1,10 @@
<app-page-data-list
pageTitle="مدیریت فعالیت‌های اقتصادی"
[addNewCtaLabel]="'افزودن فعالیت اقتصادی جدید'"
[addNewCtaLabel]="'افزودن فعالیت اقتصادی'"
[columns]="columns"
[showAdd]="true"
emptyPlaceholderTitle="فعالیت اقتصادی‌ای یافت نشد."
emptyPlaceholderDescription="برای افزودن فعالیت اقتصادی جدید، روی دکمهٔ بالا کلیک کنید."
emptyPlaceholderDescription="برای افزودن فعالیت اقتصادی، روی دکمهٔ بالا کلیک کنید."
[items]="items()"
[loading]="loading()"
[showDetails]="true"
@@ -1,5 +1,5 @@
<shared-dialog
header="ایجاد فروشگاه"
header="افزودن شعبه"
[(visible)]="visible"
[modal]="true"
[style]="{ width: '400px' }"
@@ -8,8 +8,8 @@
>
<p-stepper [value]="activeStep()" [linear]="true">
<p-step-list>
<p-step [value]="1">فروشگاه</p-step>
<p-step [value]="2" [disabled]="!complex()">پایانه‌ی روشگاهی</p-step>
<p-step [value]="1">شعبه</p-step>
<p-step [value]="2" [disabled]="!complex()">پایانه‌ فروشگاهی</p-step>
</p-step-list>
</p-stepper>
@@ -1,8 +1,8 @@
import { AbstractDialog } from '@/shared/abstractClasses/abstract-dialog';
import { SharedDialogComponent } from '@/shared/components/dialog/dialog.component';
import { Component, EventEmitter, Input, Output } from '@angular/core';
import { IComplexResponse } from '../../models';
import { ConsumerComplexFormContentComponent } from './form.component';
import { SharedDialogComponent } from '@/shared/components/dialog/dialog.component';
@Component({
selector: 'partner-consumer-complex-form',
@@ -19,7 +19,7 @@ export class ConsumerComplexFormDialogComponent extends AbstractDialog {
@Input() complexId!: string;
get preparedTitle() {
return `${this.editMode ? 'ویرایش' : 'ایجاد'} شعبه`;
return `${this.editMode ? 'ویرایش' : 'افزودن'} شعبه`;
}
onFormSubmit(response: IComplexResponse) {
@@ -1,12 +1,8 @@
// import { CatalogRolesComponent } from '@/shared/catalog/roles';
import { AbstractForm } from '@/shared/abstractClasses';
import {
NameComponent,
AddressComponent,
BranchCodeComponent,
} from '@/shared/components';
import { fieldControl } from '@/shared/constants/fields';
import { AddressComponent, BranchCodeComponent, NameComponent } from '@/shared/components';
import { FormFooterActionsComponent } from '@/shared/components/formFooterActions/form-footer-actions.component';
import { fieldControl } from '@/shared/constants/fields';
import { Component, inject, Input } from '@angular/core';
import { ReactiveFormsModule } from '@angular/forms';
import { IComplexRequest, IComplexResponse } from '../../models';
@@ -44,7 +40,7 @@ export class ConsumerComplexFormContentComponent extends AbstractForm<
form = this.initForm();
get preparedTitle() {
return `${this.editMode ? 'ویرایش' : 'ایجاد'} شعبه`;
return `${this.editMode ? 'ویرایش' : 'افزودن'} شعبه`;
}
override ngOnChanges(): void {
@@ -1,10 +1,10 @@
<app-page-data-list
pageTitle="مدیریت شعب"
[addNewCtaLabel]="'افزودن شعبه‌ جدید'"
[addNewCtaLabel]="'افزودن شعبه‌'"
[columns]="columns"
[showAdd]="true"
emptyPlaceholderTitle="شعبه‌ای یافت نشد."
emptyPlaceholderDescription="برای افزودن شعبه‌ جدید، روی دکمهٔ بالا کلیک کنید."
emptyPlaceholderDescription="برای افزودن شعبه‌، روی دکمهٔ بالا کلیک کنید."
[items]="items()"
[loading]="loading()"
[showDetails]="true"
@@ -1,5 +1,5 @@
<shared-dialog
header="ایجاد مشتری جدید"
header="افزودن مشتری"
[(visible)]="visible"
[modal]="true"
[style]="{ width: '640px' }"
@@ -10,8 +10,8 @@
<p-step-list>
<p-step [value]="1">اطلاعات اولیه</p-step>
<p-step [value]="2" [disabled]="!consumer()">فعالیت اقتصادی</p-step>
<p-step [value]="3" [disabled]="!businessActivity()">فروشگاه</p-step>
<p-step [value]="4" [disabled]="!complex()">پایانه‌ی فروشگاهی</p-step>
<p-step [value]="3" [disabled]="!businessActivity()">شعبه</p-step>
<p-step [value]="4" [disabled]="!complex()">پایانه فروشگاهی</p-step>
</p-step-list>
</p-stepper>
@@ -1,8 +1,8 @@
import { AbstractDialog } from '@/shared/abstractClasses/abstract-dialog';
import { SharedDialogComponent } from '@/shared/components/dialog/dialog.component';
import { Component, EventEmitter, Input, Output } from '@angular/core';
import { IPartnerConsumerResponse } from '../models';
import { ConsumerUserFormContentComponent } from './form.component';
import { SharedDialogComponent } from '@/shared/components/dialog/dialog.component';
@Component({
selector: 'partner-consumer-form',
@@ -17,7 +17,7 @@ export class ConsumerUserFormDialogComponent extends AbstractDialog {
@Input() consumerId?: string;
get preparedTitle() {
return `${this.editMode ? 'ویرایش' : 'ایجاد'} مشتری`;
return `${this.editMode ? 'ویرایش' : 'افزودن'} مشتری`;
}
onFormSubmit(response: IPartnerConsumerResponse) {
@@ -1,11 +1,11 @@
import { AbstractFormDialog } from '@/shared/abstractClasses';
import { SharedDialogComponent } from '@/shared/components/dialog/dialog.component';
import { FormFooterActionsComponent } from '@/shared/components/formFooterActions/form-footer-actions.component';
import { UikitFlatpickrJalaliComponent } from '@/uikit';
import { Component, computed, inject, Input } from '@angular/core';
import { ReactiveFormsModule } from '@angular/forms';
import { ILicenseRequest, ILicenseResponse } from '../../models';
import { LicensesService } from '../../services/licenses.service';
import { SharedDialogComponent } from '@/shared/components/dialog/dialog.component';
@Component({
selector: 'partner-consumer-license-form',
@@ -25,7 +25,7 @@ export class ConsumerLicenseFormComponent extends AbstractFormDialog<
@Input() licenseId?: string;
private service = inject(LicensesService);
preparedTitle = computed(() => `${this.editMode ? 'ویرایش' : 'ایجاد'} لایسنس`);
preparedTitle = computed(() => `${this.editMode ? 'ویرایش' : 'افزودن'} لایسنس`);
initForm = () => {
const form = this.fb.group({
@@ -1,8 +1,8 @@
import { AbstractDialog } from '@/shared/abstractClasses/abstract-dialog';
import { SharedDialogComponent } from '@/shared/components/dialog/dialog.component';
import { Component, EventEmitter, Input, Output } from '@angular/core';
import { IPosResponse } from '../../models';
import { ConsumerPosFormContentComponent } from './form.component';
import { SharedDialogComponent } from '@/shared/components/dialog/dialog.component';
@Component({
selector: 'partner-consumer-pos-form',
@@ -20,7 +20,7 @@ export class ConsumerPosFormDialogComponent extends AbstractDialog {
@Input() posId!: string;
get preparedTitle() {
return `${this.editMode ? 'ویرایش' : 'ایجاد'} پایانه فروش`;
return `${this.editMode ? 'ویرایش' : 'افزودن'} پایانه فروش`;
}
onFormSubmit(response: IPosResponse) {
@@ -2,16 +2,16 @@
import { MustMatch } from '@/core/validators';
import { AbstractForm } from '@/shared/abstractClasses';
import {
NameComponent,
SharedPasswordInputComponent,
DeviceIdComponent,
NameComponent,
PosTypeComponent,
ProviderIdComponent,
SerialNumberComponent,
PosTypeComponent,
SharedPasswordInputComponent,
UsernameComponent,
} from '@/shared/components';
import { fieldControl } from '@/shared/constants/fields';
import { FormFooterActionsComponent } from '@/shared/components/formFooterActions/form-footer-actions.component';
import { fieldControl } from '@/shared/constants/fields';
import { Component, inject, Input } from '@angular/core';
import { ReactiveFormsModule, Validators } from '@angular/forms';
import { Divider } from 'primeng/divider';
@@ -122,7 +122,7 @@ export class ConsumerPosFormContentComponent extends AbstractForm<IPosRequest, I
form = this.initForm();
get preparedTitle() {
return `${this.editMode ? 'ویرایش' : 'ایجاد'} پایانه فروش`;
return `${this.editMode ? 'ویرایش' : 'افزودن'} پایانه فروش`;
}
override ngOnChanges(): void {
@@ -1,9 +1,9 @@
<app-page-data-list
pageTitle="مدیریت پایانه‌های فروش"
[addNewCtaLabel]="'افزودن پایانه‌ی فروش جدید'"
[addNewCtaLabel]="'افزودن پایانه فروش'"
[columns]="columns"
emptyPlaceholderTitle="پایانه‌ی فروشی یافت نشد."
emptyPlaceholderDescription="برای افزودن پایانه‌ی فروش جدید، روی دکمهٔ بالا کلیک کنید."
emptyPlaceholderTitle="پایانه فروشی یافت نشد."
emptyPlaceholderDescription="برای افزودن پایانه فروش، روی دکمهٔ بالا کلیک کنید."
[items]="items()"
[loading]="loading()"
[showAdd]="true"
@@ -24,7 +24,7 @@ export const partnerConsumerPosesNamedRoutes: NamedRoutes<TPosesRouteNames> = {
import('../../views/poses/single.component').then((m) => m.PartnerUserPosComponent),
// @ts-ignore
meta: {
title: 'پایانه‌ی فروش',
title: 'پایانه فروش',
pagePath: (consumerId: string, businessId: string, complexId: string, posId: string) =>
`${baseUrl(consumerId, businessId, complexId)}/${posId}`,
},
@@ -1,7 +1,7 @@
<div class="flex flex-col gap-6">
<app-card-data cardTitle="اطلاعات فعالیت اقتصادی" [editable]="true" [(editMode)]="editMode">
<ng-template #moreActions>
<button pButton outlined (click)="showAccountsChargeDialog()">شارژ کاربر</button>
<button pButton outlined size="small" (click)="showAccountsChargeDialog()">شارژ کاربر</button>
</ng-template>
<div class="flex flex-col gap-4">
<div class="listKeyValue">
@@ -1,10 +1,10 @@
<app-page-data-list
pageTitle="لیست مشتری‌ها"
[addNewCtaLabel]="'افزودن مشتری جدید'"
[addNewCtaLabel]="'افزودن مشتری'"
[columns]="columns"
[showAdd]="true"
emptyPlaceholderTitle="مشتری‌ای یافت نشد"
emptyPlaceholderDescription="برای افزودن مشتری جدید، روی دکمهٔ بالا کلیک کنید."
emptyPlaceholderTitle="مشتری یافت نشد"
emptyPlaceholderDescription="برای افزودن مشتری، روی دکمهٔ بالا کلیک کنید."
[items]="items()"
[loading]="loading()"
[showDetails]="true"
@@ -1,7 +1,7 @@
<app-page-data-list
[pageTitle]="'لیست مشتری‌ها'"
[columns]="columns"
emptyPlaceholderTitle="مشتری‌ای یافت نشد"
emptyPlaceholderTitle="مشتری یافت نشد"
[items]="items()"
[loading]="loading()"
[showEdit]="true"
@@ -18,7 +18,10 @@
</ng-template>
<ng-template #topbarEnd>
<p-button (click)="toggleMenu()" icon="pi pi-user" outlined size="large" />
<div class="">
<p-menu #menu [model]="profileMenuItems" [popup]="true" />
<p-button (click)="menu.toggle($event)" icon="pi pi-user" text severity="contrast" size="large" />
</div>
</ng-template>
@if (loading()) {
@@ -14,6 +14,7 @@ import { RouterOutlet } from '@angular/router';
import { MenuItem } from 'primeng/api';
import { Button, ButtonDirective } from 'primeng/button';
import { Card } from 'primeng/card';
import { Menu } from 'primeng/menu';
import images from 'src/assets/images';
import { PosInfoStore, PosProfileStore } from '../store';
import { PosChooseCardsComponent } from './choose-pos.component';
@@ -30,6 +31,7 @@ import { PosMainMenuSidebarComponent } from './mainMenuSidebar/main-menu-sidebar
PosChooseCardsComponent,
Button,
PosMainMenuSidebarComponent,
Menu,
],
})
export class PosLayoutComponent implements AfterViewInit {
@@ -1,15 +1,10 @@
<app-page-data-list
pageTitle="مدیریت حساب‌های کاربری"
[addNewCtaLabel]="'افزودن حساب کاربری جدید'"
pageTitle="لیست حساب‌های کاربری"
[columns]="columns"
[showAdd]="true"
emptyPlaceholderTitle="حساب کاربری‌ای یافت نشد."
emptyPlaceholderDescription="برای افزودن حساب کاربری جدید، روی دکمهٔ بالا کلیک کنید."
[items]="items()"
[loading]="loading()"
[showDetails]="true"
[showAdd]="true"
(onAdd)="openAddForm()"
(onRefresh)="refresh()"
>
</app-page-data-list>
@@ -33,7 +33,7 @@ export class ConsumerAccountListComponent extends AbstractList<IConsumerAccountR
},
{
field: 'pos',
header: 'پایانه‌ی مرتبط',
header: 'پایانه مرتبط',
customDataModel: (item) =>
`${item.pos.name} (${item.pos.complex.name} - ${item.pos.complex.business_activity.name})`,
},
@@ -52,7 +52,7 @@ export class ConsumerBusinessActivitiesFormComponent extends AbstractFormDialog<
form = this.initForm();
get preparedTitle() {
return `${this.editMode ? 'ویرایش' : 'ایجاد'} فعالیت اقتصادی`;
return `${this.editMode ? 'ویرایش' : 'افزودن'} فعالیت اقتصادی`;
}
override ngOnChanges(): void {
@@ -1,17 +1,10 @@
<app-page-data-list
pageTitle="مدیریت فعالیت‌های اقتصادی"
[addNewCtaLabel]="'افزودن فعالیت اقتصادی جدید'"
pageTitle="لیست فعالیت‌های اقتصادی"
[columns]="columns"
[showAdd]="true"
emptyPlaceholderTitle="فعالیت اقتصادی‌ای یافت نشد."
emptyPlaceholderDescription="برای افزودن فعالیت اقتصادی جدید، روی دکمهٔ بالا کلیک کنید."
[items]="items()"
[loading]="loading()"
[showDetails]="true"
[showAdd]="true"
[showEdit]="true"
(onAdd)="openAddForm()"
(onEdit)="onEditClick($event)"
(onDetails)="toSinglePage($event)"
(onRefresh)="refresh()"
>
@@ -1,17 +1,13 @@
// import { CatalogRolesComponent } from '@/shared/catalog/roles';
import { AbstractFormDialog } from '@/shared/abstractClasses';
import {
NameComponent,
AddressComponent,
BranchCodeComponent,
} from '@/shared/components';
import { fieldControl } from '@/shared/constants/fields';
import { AddressComponent, BranchCodeComponent, NameComponent } from '@/shared/components';
import { SharedDialogComponent } from '@/shared/components/dialog/dialog.component';
import { FormFooterActionsComponent } from '@/shared/components/formFooterActions/form-footer-actions.component';
import { fieldControl } from '@/shared/constants/fields';
import { Component, inject, Input } from '@angular/core';
import { ReactiveFormsModule } from '@angular/forms';
import { IComplexRequest, IComplexResponse } from '../../models';
import { AdminComplexesService } from '../../services/complexes.service';
import { SharedDialogComponent } from '@/shared/components/dialog/dialog.component';
@Component({
selector: 'superAdmin-consumer-complex-form',
@@ -46,7 +42,7 @@ export class ConsumerComplexFormComponent extends AbstractFormDialog<
form = this.initForm();
get preparedTitle() {
return `${this.editMode ? 'ویرایش' : 'ایجاد'} شعبه`;
return `${this.editMode ? 'ویرایش' : 'افزودن'} شعبه`;
}
override ngOnChanges(): void {
@@ -1,17 +1,10 @@
<app-page-data-list
pageTitle="مدیریت شعب"
[addNewCtaLabel]="'افزودن شعبه‌ جدید'"
[columns]="columns"
[showAdd]="true"
emptyPlaceholderTitle="شعبه‌ای یافت نشد."
emptyPlaceholderDescription="برای افزودن شعبه‌ جدید، روی دکمهٔ بالا کلیک کنید."
[items]="items()"
[loading]="loading()"
[showDetails]="true"
[showAdd]="true"
[showEdit]="true"
(onAdd)="openAddForm()"
(onEdit)="onEditClick($event)"
(onDetails)="toSinglePage($event)"
(onRefresh)="refresh()"
>
@@ -1,9 +1,9 @@
import { MustMatch } from '@/core/validators';
import { AbstractFormDialog } from '@/shared/abstractClasses';
import { SharedPasswordInputComponent, UsernameComponent } from '@/shared/components';
import { fieldControl } from '@/shared/constants/fields';
import { SharedDialogComponent } from '@/shared/components/dialog/dialog.component';
import { FormFooterActionsComponent } from '@/shared/components/formFooterActions/form-footer-actions.component';
import { fieldControl } from '@/shared/constants/fields';
import { Component, computed, inject, Input } from '@angular/core';
import { ReactiveFormsModule, Validators } from '@angular/forms';
import { Divider } from 'primeng/divider';
@@ -29,7 +29,7 @@ export class ConsumerUserFormComponent extends AbstractFormDialog<
@Input() consumerId?: string;
private service = inject(ConsumersService);
preparedTitle = computed(() => `${this.editMode ? 'ویرایش' : 'ایجاد'} مشتری`);
preparedTitle = computed(() => `${this.editMode ? 'ویرایش' : 'افزودن'} مشتری`);
initForm = () => {
const form = this.fb.group({
@@ -1,4 +1,5 @@
import { AbstractFormDialog } from '@/shared/abstractClasses';
import { SharedDialogComponent } from '@/shared/components/dialog/dialog.component';
import { FormFooterActionsComponent } from '@/shared/components/formFooterActions/form-footer-actions.component';
import { UikitFlatpickrJalaliComponent } from '@/uikit';
import { Component, computed, inject, Input } from '@angular/core';
@@ -6,7 +7,6 @@ import { ReactiveFormsModule } from '@angular/forms';
import { PartnerSelectComponent } from '../../../partners/shared/select.component';
import { ILicenseRequest, ILicenseResponse } from '../../models';
import { LicensesService } from '../../services/licenses.service';
import { SharedDialogComponent } from '@/shared/components/dialog/dialog.component';
@Component({
selector: 'superAdmin-consumer-license-form',
@@ -27,7 +27,7 @@ export class ConsumerLicenseFormComponent extends AbstractFormDialog<
@Input() licenseId?: string;
private service = inject(LicensesService);
preparedTitle = computed(() => `${this.editMode ? 'ویرایش' : 'ایجاد'} لایسنس`);
preparedTitle = computed(() => `${this.editMode ? 'ویرایش' : 'افزودن'} لایسنس`);
initForm = () => {
const form = this.fb.group({
@@ -1,19 +1,19 @@
// import { CatalogRolesComponent } from '@/shared/catalog/roles';
import { AbstractFormDialog } from '@/shared/abstractClasses';
import {
NameComponent,
DeviceIdComponent,
NameComponent,
PosTypeComponent,
ProviderIdComponent,
SerialNumberComponent,
PosTypeComponent,
} from '@/shared/components';
import { fieldControl } from '@/shared/constants/fields';
import { SharedDialogComponent } from '@/shared/components/dialog/dialog.component';
import { FormFooterActionsComponent } from '@/shared/components/formFooterActions/form-footer-actions.component';
import { fieldControl } from '@/shared/constants/fields';
import { Component, inject, Input } from '@angular/core';
import { ReactiveFormsModule, Validators } from '@angular/forms';
import { ReactiveFormsModule } from '@angular/forms';
import { IPosRequest, IPosResponse } from '../../models';
import { AdminPosesService } from '../../services/poses.service';
import { SharedDialogComponent } from '@/shared/components/dialog/dialog.component';
@Component({
selector: 'superAdmin-consumer-pos-form',
@@ -77,7 +77,7 @@ export class ConsumerPosFormComponent extends AbstractFormDialog<IPosRequest, IP
form = this.initForm();
get preparedTitle() {
return `${this.editMode ? 'ویرایش' : 'ایجاد'} پایانه فروش`;
return `${this.editMode ? 'ویرایش' : 'افزودن'} پایانه فروش`;
}
override ngOnChanges(): void {
@@ -1,17 +1,10 @@
<app-page-data-list
pageTitle="مدیریت پایانه‌های فروش"
[addNewCtaLabel]="'افزودن پایانه‌ی فروش جدید'"
pageTitle="لیست پایانه‌های فروش"
[columns]="columns"
[showAdd]="true"
emptyPlaceholderTitle="پایانه‌ی فروشی یافت نشد."
emptyPlaceholderDescription="برای افزودن پایانه‌ی فروش جدید، روی دکمهٔ بالا کلیک کنید."
emptyPlaceholderTitle="پایانه فروشی یافت نشد."
[items]="items()"
[loading]="loading()"
[showDetails]="true"
[showAdd]="true"
[showEdit]="true"
(onAdd)="openAddForm()"
(onEdit)="onEditClick($event)"
(onDetails)="toSinglePage($event)"
(onRefresh)="refresh()"
>
@@ -24,7 +24,7 @@ export const superAdminConsumerPosesNamedRoutes: NamedRoutes<TPosesRouteNames> =
import('../../views/poses/single.component').then((m) => m.SuperAdminUserPosComponent),
// @ts-ignore
meta: {
title: 'پایانه‌ی فروش',
title: 'پایانه فروش',
pagePath: (consumerId: string, businessId: string, complexId: string, posId: string) =>
`${baseUrl(consumerId, businessId, complexId)}/${posId}`,
},
@@ -1,5 +1,5 @@
<div class="flex flex-col gap-6">
<app-card-data cardTitle="اطلاعات فعالیت اقتصادی" [editable]="true" [(editMode)]="editMode">
<app-card-data cardTitle="اطلاعات فعالیت اقتصادی" [(editMode)]="editMode">
<div class="flex flex-col gap-4">
<div class="listKeyValue">
<app-key-value label="عنوان" [value]="businessActivity()?.name" />
@@ -1,5 +1,5 @@
<div class="flex flex-col gap-6">
<app-card-data cardTitle="اطلاعات شعبه" [editable]="true" [(editMode)]="editMode">
<app-card-data cardTitle="اطلاعات شعبه" [(editMode)]="editMode">
<div class="flex flex-col gap-4">
<div class="listKeyValue">
<app-key-value label="عنوان" [value]="complex()?.name" />
@@ -1,7 +1,7 @@
<app-page-data-list
pageTitle="مدیریت مشتری‌ها"
[columns]="columns"
emptyPlaceholderTitle="مشتری‌ای یافت نشد"
emptyPlaceholderTitle="مشتری یافت نشد"
[items]="items()"
[loading]="loading()"
[showDetails]="true"
@@ -1,5 +1,5 @@
<div class="flex flex-col gap-6">
<app-card-data cardTitle="اطلاعات پایانه‌ فروش" [editable]="true" [(editMode)]="editMode">
<app-card-data cardTitle="اطلاعات پایانه‌ فروش" [(editMode)]="editMode">
<div class="flex flex-col gap-4">
<div class="listKeyValue">
<app-key-value label="عنوان" [value]="pos()?.name" />
@@ -1,5 +1,5 @@
<div class="flex flex-col gap-6">
<app-card-data cardTitle="اطلاعات مشتری" [editable]="true" [(editMode)]="editMode">
<app-card-data cardTitle="اطلاعات مشتری" [(editMode)]="editMode">
<ng-template #moreActions> </ng-template>
<div class="flex flex-col gap-4">
<div class="listKeyValue">
@@ -1,11 +1,11 @@
import { AbstractFormDialog } from '@/shared/abstractClasses';
import { InputComponent } from '@/shared/components';
import { SharedDialogComponent } from '@/shared/components/dialog/dialog.component';
import { FormFooterActionsComponent } from '@/shared/components/formFooterActions/form-footer-actions.component';
import { Component, computed, inject, Input } from '@angular/core';
import { ReactiveFormsModule, Validators } from '@angular/forms';
import { IDeviceBrandRequest, IDeviceBrandResponse } from '../models';
import { DeviceBrandsService } from '../services/main.service';
import { SharedDialogComponent } from '@/shared/components/dialog/dialog.component';
@Component({
selector: 'deviceBrand-form',
@@ -26,7 +26,7 @@ export class DeviceBrandFormComponent extends AbstractFormDialog<
}),
});
preparedTitle = computed(() => `${this.editMode ? 'ویرایش' : 'ایجاد'} برند دستگاه`);
preparedTitle = computed(() => `${this.editMode ? 'ویرایش' : 'افزودن'} برند دستگاه`);
override ngOnChanges() {
this.form.patchValue(this.initialValues ?? {});
@@ -1,10 +1,10 @@
<app-page-data-list
pageTitle="مدیریت برند دستگاه‌ها"
[addNewCtaLabel]="'افزودن برند دستگاه‍ جدید'"
[addNewCtaLabel]="'افزودن برند دستگاه‍'"
[columns]="columns"
[showAdd]="true"
emptyPlaceholderTitle="برند دستگاه یافت نشد"
emptyPlaceholderDescription="برای افزودن برند دستگاه جدید، روی دکمهٔ بالا کلیک کنید."
emptyPlaceholderDescription="برای افزودن برند دستگاه، روی دکمهٔ بالا کلیک کنید."
[items]="items()"
[loading]="loading()"
[showAdd]="true"
@@ -2,12 +2,12 @@
import { AbstractFormDialog } from '@/shared/abstractClasses';
import { CatalogDeviceBrandSelectComponent } from '@/shared/catalog/deviceBrands';
import { InputComponent } from '@/shared/components';
import { SharedDialogComponent } from '@/shared/components/dialog/dialog.component';
import { FormFooterActionsComponent } from '@/shared/components/formFooterActions/form-footer-actions.component';
import { Component, inject, Input } from '@angular/core';
import { ReactiveFormsModule, Validators } from '@angular/forms';
import { IDeviceRequest, IDeviceResponse } from '../models';
import { SuperAdminDeviceService } from '../services/main.service';
import { SharedDialogComponent } from '@/shared/components/dialog/dialog.component';
@Component({
selector: 'superAdmin-device-form',
@@ -35,7 +35,7 @@ export class UserComplexFormComponent extends AbstractFormDialog<IDeviceRequest,
form = this.initForm();
get preparedTitle() {
return `${this.editMode ? 'ویرایش' : 'ایجاد'} دستگاه`;
return `${this.editMode ? 'ویرایش' : 'افزودن'} دستگاه`;
}
override ngOnChanges(): void {
@@ -1,10 +1,10 @@
<app-page-data-list
pageTitle="مدیریت دستگاه‌ها"
[addNewCtaLabel]="'افزودن دستگاه جدید'"
[addNewCtaLabel]="'افزودن دستگاه'"
[columns]="columns"
[showAdd]="true"
emptyPlaceholderTitle="دستگاه یافت نشد"
emptyPlaceholderDescription="برای افزودن دستگاه جدید، روی دکمهٔ بالا کلیک کنید."
emptyPlaceholderDescription="برای افزودن دستگاه، روی دکمهٔ بالا کلیک کنید."
[items]="items()"
[loading]="loading()"
[showAdd]="true"
@@ -1,10 +1,10 @@
<app-page-data-list
[pageTitle]="'مدیریت دسته‌بندی‌های کالا'"
[addNewCtaLabel]="'افزودن دسته‌بندی جدید'"
[addNewCtaLabel]="'افزودن دسته‌بندی'"
[columns]="columns"
[showAdd]="true"
emptyPlaceholderTitle="دسته‌بندی یافت نشد"
emptyPlaceholderDescription="برای افزودن دسته‌بندی جدید، روی دکمهٔ بالا کلیک کنید."
emptyPlaceholderDescription="برای افزودن دسته‌بندی، روی دکمهٔ بالا کلیک کنید."
[items]="items()"
[loading]="loading()"
[showDetails]="true"
@@ -51,7 +51,7 @@ export class GuildGoodFormComponent extends AbstractFormDialog<
});
get preparedTitle() {
return `${this.editMode ? 'ویرایش' : 'ایجاد'} کالا`;
return `${this.editMode ? 'ویرایش' : 'افزودن'} کالا`;
}
changeFile(payload: onSelectFileArgs) {
@@ -1,10 +1,10 @@
<app-page-data-list
pageTitle="مدیریت کالاها"
[addNewCtaLabel]="'افزودن کالای جدید'"
[addNewCtaLabel]="'افزودن کالای'"
[columns]="columns"
[showAdd]="true"
emptyPlaceholderTitle="کالایی یافت نشد"
emptyPlaceholderDescription="برای افزودن کالای جدید، روی دکمهٔ بالا کلیک کنید."
emptyPlaceholderDescription="برای افزودن کالای، روی دکمهٔ بالا کلیک کنید."
[items]="items()"
[loading]="loading()"
[showAdd]="true"
@@ -1,10 +1,10 @@
<app-page-data-list
[pageTitle]="'مدیریت اصناف'"
[addNewCtaLabel]="'افزودن صنف جدید'"
[addNewCtaLabel]="'افزودن صنف'"
[columns]="columns"
[showAdd]="true"
emptyPlaceholderTitle="صنفی یافت نشد"
emptyPlaceholderDescription="برای افزودن صنف جدید، روی دکمهٔ بالا کلیک کنید."
emptyPlaceholderDescription="برای افزودن صنف، روی دکمهٔ بالا کلیک کنید."
[items]="items()"
[loading]="loading()"
[showDetails]="true"
@@ -1,9 +1,9 @@
<app-page-data-list
pageTitle="مدیریت حساب‌های کاربری"
[addNewCtaLabel]="'افزودن حساب کاربری جدید'"
[addNewCtaLabel]="'افزودن حساب کاربری'"
[columns]="columns"
emptyPlaceholderTitle="حساب کاربری‌ای یافت نشد."
emptyPlaceholderDescription="برای افزودن حساب کاربری جدید، روی دکمهٔ بالا کلیک کنید."
emptyPlaceholderDescription="برای افزودن حساب کاربری، روی دکمهٔ بالا کلیک کنید."
[items]="items()"
[loading]="loading()"
(onAdd)="openAddForm()"
@@ -79,7 +79,7 @@ export class GuildFormComponent extends AbstractFormDialog<IPartnerRequest, IPar
form = this.initForm();
preparedTitle = computed(() => `${this.editMode ? 'ویرایش' : 'ایجاد'} شریک تجاری`);
preparedTitle = computed(() => `${this.editMode ? 'ویرایش' : 'افزودن'} شریک تجاری`);
changeFile(payload: onSelectFileArgs) {
this.logo.set(payload.file);
@@ -1,10 +1,10 @@
<app-page-data-list
pageTitle="مدیریت شرکای تجاری"
[addNewCtaLabel]="'افزودن شریک تجاری جدید'"
[addNewCtaLabel]="'افزودن شریک تجاری'"
[columns]="columns"
[showAdd]="true"
emptyPlaceholderTitle="شریک تجاری‌ای یافت نشد"
emptyPlaceholderDescription="برای افزودن شریک تجاری جدید، روی دکمهٔ بالا کلیک کنید."
emptyPlaceholderDescription="برای افزودن شریک تجاری، روی دکمهٔ بالا کلیک کنید."
[items]="items()"
[loading]="loading()"
[showDetails]="true"
@@ -1,13 +1,13 @@
import { MustMatch } from '@/core/validators';
import { AbstractFormDialog } from '@/shared/abstractClasses';
import { InputComponent, SharedPasswordInputComponent } from '@/shared/components';
import { SharedDialogComponent } from '@/shared/components/dialog/dialog.component';
import { FormFooterActionsComponent } from '@/shared/components/formFooterActions/form-footer-actions.component';
import { Component, computed, inject, Input } from '@angular/core';
import { ReactiveFormsModule, Validators } from '@angular/forms';
import { Divider } from 'primeng/divider';
import { IProviderRequest, IProviderResponse } from '../models';
import { ProvidersService } from '../services/main.service';
import { SharedDialogComponent } from '@/shared/components/dialog/dialog.component';
@Component({
selector: 'provider-form',
@@ -72,7 +72,7 @@ export class ProviderFormComponent extends AbstractFormDialog<IProviderRequest,
form = this.initForm();
preparedTitle = computed(() => `${this.editMode ? 'ویرایش' : 'ایجاد'} ارایه‌دهنده`);
preparedTitle = computed(() => `${this.editMode ? 'ویرایش' : 'افزودن'} ارایه‌دهنده`);
override ngOnChanges() {
this.form.patchValue(this.initialValues ?? {});
@@ -1,10 +1,10 @@
<app-page-data-list
[pageTitle]="'مدیریت ارایه‌دهنده‌گان'"
[addNewCtaLabel]="'افزودن ارایه‌دهنده‌ جدید'"
[addNewCtaLabel]="'افزودن ارایه‌دهنده‌'"
[columns]="columns"
[showAdd]="true"
emptyPlaceholderTitle="ارایه‌دهنده‌ی یافت نشد"
emptyPlaceholderDescription="برای افزودن ارایه‌دهنده‌ی جدید، روی دکمهٔ بالا کلیک کنید."
emptyPlaceholderDescription="برای افزودن ارایه‌دهنده‌ی، روی دکمهٔ بالا کلیک کنید."
[items]="items()"
[loading]="loading()"
[showDetails]="true"
@@ -1,10 +1,10 @@
<app-page-data-list
pageTitle="مدیریت حساب‌های کاربری"
[addNewCtaLabel]="'افزودن حساب کاربری جدید'"
[addNewCtaLabel]="'افزودن حساب کاربری'"
[columns]="columns"
[showAdd]="true"
emptyPlaceholderTitle="حساب کاربری‌ای یافت نشد."
emptyPlaceholderDescription="برای افزودن حساب کاربری جدید، روی دکمهٔ بالا کلیک کنید."
emptyPlaceholderDescription="برای افزودن حساب کاربری، روی دکمهٔ بالا کلیک کنید."
[items]="items()"
[loading]="loading()"
[showDetails]="true"
@@ -1,10 +1,10 @@
<app-page-data-list
[pageTitle]="'مدیریت کاربران'"
[addNewCtaLabel]="'افزودن کاربر جدید'"
[addNewCtaLabel]="'افزودن کاربر'"
[columns]="columns"
[showAdd]="true"
emptyPlaceholderTitle="کاربری یافت نشد"
emptyPlaceholderDescription="برای افزودن کاربر جدید، روی دکمهٔ بالا کلیک کنید."
emptyPlaceholderDescription="برای افزودن کاربر، روی دکمهٔ بالا کلیک کنید."
[items]="items()"
[loading]="loading()"
[showDetails]="true"
@@ -7,11 +7,10 @@
<p-button
text
size="large"
class="layout-menu-button layout-topbar-action me-2"
icon="pi pi-bars"
class="layout-menu-button layout-topbar-action"
(click)="layoutService.onMenuToggle()"
>
<i class="pi pi-bars"></i>
</p-button>
></p-button>
}
<div class="flex items-center gap-2">
<img [src]="logo" width="32" />
@@ -8,7 +8,7 @@ import { Button } from 'primeng/button';
})
export class FormFooterActionsComponent {
@Input() submitLabel = 'تایید';
@Input() cancelLabel = 'لغو';
@Input() cancelLabel = 'انصراف';
@Input() loading = false;
@Input() disabled = false;
@Output() onSubmit = new EventEmitter<void>();
@@ -20,6 +20,9 @@
<ng-template #header let-columns>
<tr>
@if (showIndex) {
<th [style]="{ width: '3rem', minWidth: '3rem' }"></th>
}
@for (col of columns; track col.header) {
<th
[style]="
@@ -40,11 +43,14 @@
<ng-template #body let-item let-i="rowIndex" let-expanded="expanded">
<tr>
<td>
@if (showIndex) {
{{ i * (currentPage || 1) + 1 }}
}
</td>
@for (col of columns; track col.field) {
<td>
@if (col.type === "index") {
{{ i * (currentPage || 1) + 1 }}
} @else if (col.type === "thumbnail") {
@if (col.type === "thumbnail") {
<div
class="w-20 h-20 rounded-2xl overflow-hidden bg-surface-50 cursor-pointer"
(click)="openThumbnailModal(item)"
@@ -97,6 +97,7 @@ export class AppPageDataListTableView<I = any> {
@Input() expandColumns?: Maybe<IColumn[]> = null;
@Input() dataKey?: string = 'items';
@Input() showPaginator?: boolean;
@Input() showIndex?: boolean = true;
@ContentChild('filter', { static: true }) filter!: TemplateRef<any> | null;
@ContentChild('paginator', { static: true }) paginator!: TemplateRef<any> | null;
@@ -6,7 +6,7 @@
variant="outlined"
severity="primary"
(click)="edit.emit()"
title="ویرایش"
pTooltip="ویرایش"
/>
}
@if (showDelete) {
@@ -16,10 +16,10 @@
variant="outlined"
severity="danger"
(click)="delete.emit()"
title="حذف"
pTooltip="ویرایش"
/>
}
@if (showDetails) {
<p-button size="small" icon="pi pi-chevron-left" (click)="details.emit()" [title]="showDetailsText" />
<p-button size="small" icon="pi pi-chevron-left" (click)="details.emit()" [pTooltip]="showDetailsText" />
}
</td>
@@ -1,11 +1,12 @@
import { CommonModule } from '@angular/common';
import { Component, EventEmitter, Input, Output } from '@angular/core';
import { Button } from 'primeng/button';
import { Tooltip } from 'primeng/tooltip';
@Component({
selector: '[table-action-row]',
standalone: true,
imports: [CommonModule, Button],
imports: [CommonModule, Button, Tooltip],
templateUrl: './table-action-row.component.html',
})
export class TableActionRowComponent {
@@ -27,7 +27,7 @@
// @Input() optionLabel: string = 'name';
// @Input() label!: string;
// @Input() placeholder!: string;
// @Input() addCtaLabel: string = 'ایجاد مورد جدید';
// @Input() addCtaLabel: string = 'ایجاد مورد';
// @Output() onChange = new EventEmitter<Maybe<T>>();
// @Output() onSetDefaultDataItem = new EventEmitter<T>();
// }