UNPKG

@nestjs-mod/afat

Version:

Common utilites for AFAT (Angular, Formly, Antd, Transloco)

1 lines 18.4 kB
{"version":3,"file":"nestjs-mod-afat.mjs","sources":["../../../../../libs/feature/afat/src/lib/formly/button-input.component.ts","../../../../../libs/feature/afat/src/lib/services/active-lang.service.ts","../../../../../libs/feature/afat/src/lib/formly/date-input.component.ts","../../../../../libs/feature/afat/src/lib/formly/formly-fields.ts","../../../../../libs/feature/afat/src/lib/grid-utils/get-query-meta-by-params.ts","../../../../../libs/feature/afat/src/lib/grid-utils/nz-table-sort-order-detector.pipe.ts","../../../../../libs/feature/afat/src/lib/services/validation.service.ts","../../../../../libs/feature/afat/src/lib/utils/web-socket.ts","../../../../../libs/feature/afat/src/nestjs-mod-afat.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { FieldType, FieldTypeConfig, FormlyModule } from '@ngx-formly/core';\nimport { NzDatePickerModule } from 'ng-zorro-antd/date-picker';\n\nimport { NzButtonModule } from 'ng-zorro-antd/button';\n@Component({\n selector: 'button-input',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ReactiveFormsModule, FormlyModule, NzDatePickerModule, NzButtonModule],\n template: `\n <button nz-button [type]=\"props['type']\" [nzType]=\"props['btnType']\" (click)=\"onClick($event)\">\n {{ props['text'] }}\n </button>\n `,\n standalone: true,\n})\nexport class ButtonInputComponent extends FieldType<FieldTypeConfig> {\n onClick($event: Event) {\n if (this.props['onClick']) {\n this.props['onClick']($event);\n }\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { toCamelCase, TranslocoService } from '@jsverse/transloco';\nimport {\n LangToLocaleMapping,\n TRANSLOCO_LOCALE_LANG_MAPPING,\n TranslocoLocaleService,\n} from '@jsverse/transloco-locale';\nimport * as dateFnsLocales from 'date-fns/locale';\nimport * as ngZorroLocales from 'ng-zorro-antd/i18n';\nimport { NzI18nService } from 'ng-zorro-antd/i18n';\n\n@Injectable({ providedIn: 'root' })\nexport class ActiveLangService {\n constructor(\n private readonly translocoService: TranslocoService,\n private readonly translocoLocaleService: TranslocoLocaleService,\n private readonly nzI18nService: NzI18nService,\n @Inject(TRANSLOCO_LOCALE_LANG_MAPPING)\n readonly langToLocaleMapping: LangToLocaleMapping\n ) {}\n\n applyActiveLang(lang: string) {\n const { locale, localeInSnakeCase, localeInCamelCase } =\n this.normalizeLangKey(lang);\n\n this.translocoService.setActiveLang(lang);\n this.translocoLocaleService.setLocale(locale);\n\n if (ngZorroLocales[localeInSnakeCase]) {\n this.nzI18nService.setLocale(ngZorroLocales[localeInSnakeCase]);\n }\n\n if (dateFnsLocales[lang]) {\n this.nzI18nService.setDateLocale(dateFnsLocales[lang]);\n }\n if (dateFnsLocales[localeInCamelCase]) {\n this.nzI18nService.setDateLocale(dateFnsLocales[localeInCamelCase]);\n }\n }\n\n normalizeLangKey(lang: string) {\n const locale = this.langToLocaleMapping[lang];\n const localeInCamelCase = toCamelCase(locale);\n const localeInSnakeCase = locale.split('-').join('_');\n return { locale, localeInSnakeCase, localeInCamelCase };\n }\n}\n","import { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { TranslocoService } from '@jsverse/transloco';\nimport { FieldType, FieldTypeConfig, FormlyModule } from '@ngx-formly/core';\nimport { NzDatePickerModule } from 'ng-zorro-antd/date-picker';\nimport { map, Observable } from 'rxjs';\nimport { DATE_INPUT_FORMATS } from '@nestjs-mod/misc';\nimport { ActiveLangService } from '../services/active-lang.service';\n\n@Component({\n selector: 'date-input',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ReactiveFormsModule, FormlyModule, NzDatePickerModule, AsyncPipe],\n template: `\n <nz-date-picker\n [formControl]=\"formControl\"\n [formlyAttributes]=\"field\"\n [nzShowTime]=\"true\"\n [nzFormat]=\"(format$ | async)!\"\n ></nz-date-picker>\n `,\n standalone: true,\n})\nexport class DateInputComponent extends FieldType<FieldTypeConfig> {\n format$: Observable<string>;\n\n constructor(\n private readonly translocoService: TranslocoService,\n private readonly activeLangService: ActiveLangService,\n ) {\n super();\n this.format$ = translocoService.langChanges$.pipe(\n map((lang) => {\n const { locale } = this.activeLangService.normalizeLangKey(lang);\n return DATE_INPUT_FORMATS[locale] ? DATE_INPUT_FORMATS[locale] : DATE_INPUT_FORMATS['en-US'];\n }),\n );\n }\n}\n","import { TypeOption } from '@ngx-formly/core/lib/models';\nimport { DateInputComponent } from './date-input.component';\nimport { ButtonInputComponent } from './button-input.component';\nimport { NzButtonType } from 'ng-zorro-antd/button';\n\nexport const COMMON_FORMLY_FIELDS: TypeOption[] = [\n {\n name: 'date-input',\n component: DateInputComponent,\n extends: 'input',\n },\n {\n name: 'button-input',\n component: ButtonInputComponent,\n wrappers: ['form-field'],\n defaultOptions: {\n props: {\n btnType: 'dashed' as NzButtonType,\n type: 'button',\n },\n },\n },\n];\n","import { NzTableQueryParams } from 'ng-zorro-antd/table';\nimport { RequestMeta } from '@nestjs-mod/misc';\n\nexport function getQueryMetaByParams(params: NzTableQueryParams): RequestMeta {\n return {\n curPage: params.pageIndex,\n perPage: params.pageSize,\n sort: params.sort\n .filter((s) => s.value)\n .reduce((all, cur) => {\n if (cur.value === 'ascend') {\n return { ...all, [cur.key]: 'asc' };\n }\n if (cur.value === 'descend') {\n return { ...all, [cur.key]: 'desc' };\n }\n return all;\n }, {}),\n };\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { NzTableSortOrder } from 'ng-zorro-antd/table';\n\n@Pipe({\n standalone: true,\n name: 'nzTableSortOrderDetector',\n})\nexport class NzTableSortOrderDetectorPipe implements PipeTransform {\n transform(value: string): NzTableSortOrder {\n if (value === 'asc') {\n return 'ascend';\n }\n if (value === 'desc') {\n return 'descend';\n }\n return null;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { TranslocoService } from '@jsverse/transloco';\nimport { UntilDestroy } from '@ngneat/until-destroy';\nimport { FormlyFieldConfig } from '@ngx-formly/core';\nimport { of, throwError } from 'rxjs';\nimport { ValidationErrorInterface, ValidationErrorMetadataInterface } from '../types/validation';\n\n@UntilDestroy()\n@Injectable({ providedIn: 'root' })\nexport class ValidationService {\n constructor(protected readonly translocoService: TranslocoService) {}\n\n catchAndProcessServerError(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n err: any,\n setFormlyFields: (options?: { errors?: ValidationErrorMetadataInterface[] }) => void\n ) {\n const error = err.error as ValidationErrorInterface;\n if (error?.code?.toLowerCase()?.includes('validation')) {\n setFormlyFields({ errors: error.metadata });\n return of(null);\n }\n return throwError(() => err);\n }\n\n appendServerErrorsAsValidatorsToFields(fields: FormlyFieldConfig[], errors: ValidationErrorMetadataInterface[]) {\n return (fields || []).map((f: FormlyFieldConfig) => {\n const error = errors?.find((e) => e.property === f.key);\n if (error) {\n f.validators = Object.fromEntries(\n error.constraints.map((c) => {\n if (typeof f.key === 'string') {\n c.description = c.description.replace(\n f.key,\n this.translocoService.translate('field \"{{label}}\"', {\n label: f.props?.label?.toLowerCase(),\n })\n );\n }\n return [\n c.name === 'isNotEmpty' ? 'required' : c.name,\n {\n expression: () => false,\n message: () => c.description,\n },\n ];\n })\n );\n }\n return f;\n });\n }\n}\n","import { Observable, finalize } from 'rxjs';\n\nexport function webSocket<T>({\n address,\n eventName,\n options,\n}: {\n address: string;\n eventName: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n options?: any;\n}) {\n const wss = new WebSocket(\n address.replace('/api', '').replace('http', 'ws'),\n options\n );\n return new Observable<{ data: T; event: string }>((observer) => {\n wss.addEventListener('open', () => {\n wss.addEventListener('message', ({ data }) => {\n observer.next(JSON.parse(data.toString()));\n });\n wss.addEventListener('error', (err) => {\n observer.error(err);\n if (wss?.readyState == WebSocket.OPEN) {\n wss.close();\n }\n });\n wss.send(\n JSON.stringify({\n event: eventName,\n data: true,\n })\n );\n });\n }).pipe(\n finalize(() => {\n if (wss?.readyState == WebSocket.OPEN) {\n wss.close();\n }\n })\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2.ActiveLangService","i3"],"mappings":"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"}