@snabcentr/client-ui 2.2.1 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of @snabcentr/client-ui might be problematic. Click here for more details.

@@ -1 +1 @@
1
- {"version":3,"file":"snabcentr-client-ui.mjs","sources":["../../../projects/client-ui/auth/enums/auth-method.ts","../../../projects/client-ui/masks/sc-account-number-mask.ts","../../../projects/client-ui/masks/sc-bic-mask.ts","../../../projects/client-ui/masks/sc-correspondent-account-mask.ts","../../../projects/client-ui/masks/sc-inn-mask.ts","../../../projects/client-ui/masks/sc-kpp-mask.ts","../../../projects/client-ui/masks/sc-okpo-mask.ts","../../../projects/client-ui/masks/sc-phone-verification-code-mask.ts","../../../projects/client-ui/verification/verification-phone-check-form/sc-verification-phone-check-form.component.ts","../../../projects/client-ui/verification/verification-phone-check-form/sc-verification-phone-check-form.component.html","../../../projects/client-ui/auth/sc-sign-in-form/sc-sign-in-form-by-phone/sc-sign-in-form-by-phone.component.ts","../../../projects/client-ui/auth/sc-sign-in-form/sc-sign-in-form-by-phone/sc-sign-in-form-by-phone.component.html","../../../projects/client-ui/auth/sc-sign-in-form/sc-sign-in-form-by-email/sc-sign-in-form-by-email.component.ts","../../../projects/client-ui/auth/sc-sign-in-form/sc-sign-in-form-by-email/sc-sign-in-form-by-email.component.html","../../../projects/client-ui/auth/sc-sign-in-form/sc-sign-in-form.component.ts","../../../projects/client-ui/auth/sc-sign-in-form/sc-sign-in-form.component.html","../../../projects/client-ui/validators/scBicValidator.ts","../../../projects/client-ui/validators/scCorrespondentAccountValidator.ts","../../../projects/client-ui/validators/sc-password-confirm-matching-validator.ts","../../../projects/client-ui/validators/stepValidator.ts","../../../projects/client-ui/form-fields/addresses-selection-field/sc-addresses-selection-field.component.ts","../../../projects/client-ui/form-fields/addresses-selection-field/sc-addresses-selection-field.component.html","../../../projects/client-ui/form-fields/suggestion-field/sc-suggestion-field.component.ts","../../../projects/client-ui/form-fields/suggestion-field/sc-suggestion-field.component.html","../../../projects/client-ui/contragents/new-contragent-bank-account-form/sc-new-contragent-bank-account-form.component.ts","../../../projects/client-ui/contragents/new-contragent-bank-account-form/sc-new-contragent-bank-account-form.component.html","../../../projects/client-ui/contragents/new-contragent-form/sc-new-contragent-form.component.ts","../../../projects/client-ui/contragents/new-contragent-form/sc-new-contragent-form.component.html","../../../projects/client-ui/contacts/new-contact-form/sc-new-contact-form.component.ts","../../../projects/client-ui/contacts/new-contact-form/sc-new-contact-form.component.html","../../../projects/client-ui/auth/sign-up-form/sc-sign-up-form.component.ts","../../../projects/client-ui/auth/sign-up-form/sc-sign-up-form.component.html","../../../projects/client-ui/accordion/sc-accordion-content.directive.ts","../../../projects/client-ui/accordion/sc-accordion.component.ts","../../../projects/client-ui/accordion/sc-accordion.component.html","../../../projects/client-ui/accordion/sc-accordion.module.ts","../../../projects/client-ui/directives/next-input-focus/sc-next-input-focus.directive.ts","../../../projects/client-ui/directives/next-input-focus/sc-next-input-focus.module.ts","../../../projects/client-ui/directives/abstract-price-card/abstract-sc-price-card.directive.ts","../../../projects/client-ui/directives/tel-link/sc-tel-link.directive.ts","../../../projects/client-ui/pipes/sc-formatted-phone.ts","../../../projects/client-ui/directives/tel-link/sc-tel-link.module.ts","../../../projects/client-ui/qrcode/qrcode-dialog/sc-qrcode-dialog.component.ts","../../../projects/client-ui/qrcode/qrcode-dialog/sc-qrcode-dialog.component.html","../../../projects/client-ui/qrcode/sc-qrcode.module.ts","../../../projects/client-ui/directives/terminal-link/sc-terminal-link.directive.ts","../../../projects/client-ui/form-fields/form-fields.module.ts","../../../projects/client-ui/contacts/add-contact-dialog/sc-add-contact-dialog.component.ts","../../../projects/client-ui/contacts/add-contact-dialog/sc-add-contact-dialog.component.html","../../../projects/client-ui/contacts/contacts-accordion/sc-contacts-accordion.component.ts","../../../projects/client-ui/contacts/contacts-accordion/sc-contacts-accordion.component.html","../../../projects/client-ui/contacts/sc-contacts.module.ts","../../../projects/client-ui/contragents/add-contragent-bank-account-dialog/sc-add-contragent-bank-account-dialog.component.ts","../../../projects/client-ui/contragents/add-contragent-bank-account-dialog/sc-add-contragent-bank-account-dialog.component.html","../../../projects/client-ui/contragents/add-contragent-dialog/sc-add-contragent-dialog.component.ts","../../../projects/client-ui/contragents/add-contragent-dialog/sc-add-contragent-dialog.component.html","../../../projects/client-ui/contragents/contragents-accordion/contragents-accordion-item/sc-contragents-accordion-item.component.ts","../../../projects/client-ui/contragents/contragents-accordion/contragents-accordion-item/sc-contragents-accordion-item.component.html","../../../projects/client-ui/contragents/contragents-accordion/sc-contragents-accordion.component.ts","../../../projects/client-ui/contragents/contragents-accordion/sc-contragents-accordion.component.html","../../../projects/client-ui/contragents/sc-contragents.module.ts","../../../projects/client-ui/verification/sc-verification.module.ts","../../../projects/client-ui/auth/sc-auth.module.ts","../../../projects/client-ui/helpers/sc-px-converter.ts","../../../projects/client-ui/banner/sc-banner.component.ts","../../../projects/client-ui/banner/sc-banner.component.html","../../../projects/client-ui/banner/sc-banner.module.ts","../../../projects/client-ui/catalog/categories-list/sc-categories-list.component.ts","../../../projects/client-ui/catalog/categories-list/sc-categories-list.component.html","../../../projects/client-ui/catalog/sc-favorite-btn/sc-favorite-btn.component.ts","../../../projects/client-ui/catalog/sc-favorite-btn/sc-favorite-btn.component.html","../../../projects/client-ui/catalog/category-card/sc-category-card.component.ts","../../../projects/client-ui/catalog/category-card/sc-category-card.component.html","../../../projects/client-ui/catalog/input-quantity/sc-input-quantity.component.ts","../../../projects/client-ui/catalog/input-quantity/sc-input-quantity.component.html","../../../projects/client-ui/catalog/price-warehouse-stock/sc-price-warehouse-stock.component.ts","../../../projects/client-ui/catalog/price-warehouse-stock/sc-price-warehouse-stock.component.html","../../../projects/client-ui/catalog/price-card/sc-price-card.component.ts","../../../projects/client-ui/catalog/price-card/sc-price-card.component.html","../../../projects/client-ui/catalog/price-history/sc-price-history.component.ts","../../../projects/client-ui/catalog/price-history/sc-price-history.component.html","../../../projects/client-ui/catalog/price-list-pagination/sc-price-list-pagination.component.ts","../../../projects/client-ui/catalog/price-list-pagination/sc-price-list-pagination.component.html","../../../projects/client-ui/catalog/sc-catalog.module.ts","../../../projects/client-ui/cart/cart-item-mobile/sc-cart-item-mobile.component.ts","../../../projects/client-ui/cart/cart-item-mobile/sc-cart-item-mobile.component.html","../../../projects/client-ui/cart/sc-cart.module.ts","../../../projects/client-ui/delivery-address/add-delivery-address-dialog/sc-add-delivery-address-dialog.component.ts","../../../projects/client-ui/delivery-address/add-delivery-address-dialog/sc-add-delivery-address-dialog.component.html","../../../projects/client-ui/delivery-address/delivery-address-accordion/delivery-address-accordion-item/sc-delivery-address-accordion-item.component.ts","../../../projects/client-ui/delivery-address/delivery-address-accordion/delivery-address-accordion-item/sc-delivery-address-accordion-item.component.html","../../../projects/client-ui/delivery-address/delivery-address-accordion/sc-delivery-address-accordion.component.ts","../../../projects/client-ui/delivery-address/delivery-address-accordion/sc-delivery-address-accordion.component.html","../../../projects/client-ui/delivery-address/sc-delivery-address.module.ts","../../../projects/client-ui/files/services/tree-icon.service.ts","../../../projects/client-ui/files/services/tree-loader.service.ts","../../../projects/client-ui/files/directives/tree.directive.ts","../../../projects/client-ui/files/file-tree-item/file-tree-item.component.ts","../../../projects/client-ui/files/file-tree-item/file-tree-item.component.html","../../../projects/client-ui/files/directives/tree-top.directive.ts","../../../projects/client-ui/files/files-and-documents/files-and-documents.component.ts","../../../projects/client-ui/files/files-and-documents/files-and-documents.component.html","../../../projects/client-ui/files/files-and-documents.module.ts","../../../projects/client-ui/icons/sc-client-ui-icons-name.ts","../../../projects/client-ui/brands-list/sc-brands-list.component.ts","../../../projects/client-ui/brands-list/sc-brands-list.component.html","../../../projects/client-ui/brands-list/sc-brands-list.module.ts","../../../projects/client-ui/share-button/sc-share-button.component.ts","../../../projects/client-ui/share-button/sc-share-button.component.html","../../../projects/client-ui/news/news-card/sc-news-card.component.ts","../../../projects/client-ui/news/news-card/sc-news-card.component.html","../../../projects/client-ui/news/news-card-skeleton/sc-news-card-skeleton.component.ts","../../../projects/client-ui/news/news-card-skeleton/sc-news-card-skeleton.component.html","../../../projects/client-ui/share-button/sc-share-button.module.ts","../../../projects/client-ui/news/sc-news.module.ts","../../../projects/client-ui/order/order-item-mobile/sc-order-item-mobile.component.ts","../../../projects/client-ui/order/order-item-mobile/sc-order-item-mobile.component.html","../../../projects/client-ui/order/sc-payment-status/sc-payment-status.component.ts","../../../projects/client-ui/order/sc-payment-status/sc-payment-status.component.html","../../../projects/client-ui/order/sc-order.module.ts","../../../projects/client-ui/samples/ask-to-sample-form/sc-ask-to-sample-form.component.ts","../../../projects/client-ui/samples/ask-to-sample-form/sc-ask-to-sample-form.component.html","../../../projects/client-ui/samples/preview-sample/sc-preview-sample.component.ts","../../../projects/client-ui/samples/preview-sample/sc-preview-sample.component.html","../../../projects/client-ui/samples/sc-sample.module.ts","../../../projects/client-ui/providers/scUserProviders.ts","../../../projects/client-ui/user/reset-user-password/sc-reset-user-password.component.ts","../../../projects/client-ui/user/reset-user-password/sc-reset-user-password.component.html","../../../projects/client-ui/user/update-user-info-dialog/sc-update-user-info-dialog.component.ts","../../../projects/client-ui/user/update-user-info-dialog/sc-update-user-info-dialog.component.html","../../../projects/client-ui/user/user-managers/sc-user-managers.component.ts","../../../projects/client-ui/user/user-managers/sc-user-managers.component.html","../../../projects/client-ui/user/user-phone-approve-dialog/sc-user-phone-approve-dialog.component.ts","../../../projects/client-ui/user/user-phone-approve-dialog/sc-user-phone-approve-dialog.component.html","../../../projects/client-ui/user/sc-user.module.ts","../../../projects/client-ui/profile/sc-profile-accordions-content/sc-profile-accordions-content.component.ts","../../../projects/client-ui/profile/sc-profile-accordions-content/sc-profile-accordions-content.component.html","../../../projects/client-ui/profile/sc-profile.module.ts","../../../projects/client-ui/public-api.ts","../../../projects/client-ui/snabcentr-client-ui.ts"],"sourcesContent":["/**\n * Перечисление типов аутентификации.\n */\nexport enum AuthMethod {\n /**\n * Аутентификация по номеру телефона и коду подтверждения.\n */\n byPhone = 'by_phone',\n\n /**\n * Аутентификация по логину и паролю.\n */\n byEmail = 'by_email',\n}\n","import { MaskitoOptions } from '@maskito/core';\n\n/**\n * Маска поля ввода номера счета.\n */\nexport const scAccountNumberMask = {\n mask: /^\\d{0,20}$/\n} as MaskitoOptions;\n","import { MaskitoOptions } from '@maskito/core';\n\n/**\n * Маска поля ввода БИК.\n */\nexport const scBicMask = {\n mask: /^\\d{0,9}$/\n} as MaskitoOptions;\n","import { MaskitoOptions } from '@maskito/core';\n\n/**\n * Маска поля ввода номера корреспондентского счета.\n */\nexport const scCorrespondentAccount = {\n mask: /^\\d{0,20}$/\n} as MaskitoOptions;\n","import { MaskitoOptions } from '@maskito/core';\n\n/**\n * Маска поля ввода ИНН индивидуального предпринимателя.\n */\nexport const scEntrepreneurInnMask = {\n mask: /^\\d{0,12}$/\n} as MaskitoOptions;\n\n/**\n * Маска поля ввода ИНН юридического лица.\n */\nexport const scLegalInnMask = {\n mask: /^\\d{0,10}$/\n} as MaskitoOptions;\n","import { MaskitoOptions } from '@maskito/core';\n\n/**\n * Маска поля ввода КПП.\n */\nexport const scKppMask = {\n mask: /^\\d{0,9}$/\n} as MaskitoOptions;\n","import { MaskitoOptions } from '@maskito/core';\n\n/**\n * Маска поля ввода ОКПО индивидуального предпринимателя.\n */\nexport const scEntrepreneurOkpoMask = {\n mask: /^\\d{0,10}$/\n} as MaskitoOptions;\n\n/**\n * Маска поля ввода ОКПО юридического лица.\n */\nexport const scLegalOkpoMask = {\n mask: /^\\d{0,8}$/\n} as MaskitoOptions;\n","import { MaskitoOptions } from '@maskito/core';\n\n/**\n * Маска поля ввода кода подтверждения телефона.\n */\nexport const scPhoneVerificationCodeMask: MaskitoOptions = {\n mask: /^\\d{0,6}$/\n} as MaskitoOptions;\n","/* eslint-disable no-underscore-dangle,lodash/prefer-constant */\n\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Inject, Input, OnInit, Output } from '@angular/core';\nimport { FormControl, FormGroup, FormGroupDirective } from '@angular/forms';\nimport { MaskitoOptions } from '@maskito/core';\nimport { ScVerificationService } from '@snabcentr/client-core';\nimport { tuiControlValue } from '@taiga-ui/cdk';\nimport { catchError, distinctUntilChanged, endWith, filter, finalize, map, Observable, of, scan, share, startWith, Subject, switchMap, takeWhile, tap, timer } from 'rxjs';\n\nimport { ApiErrorResponse } from '../../auth/interfaces/api-error-response';\nimport { scPhoneVerificationCodeMask } from '../../masks';\n\n/**\n * Компонент формы проверки телефона и получения кода подтверждения.\n */\n@Component({\n selector: 'sc-verification-phone-check-form',\n templateUrl: './sc-verification-phone-check-form.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScVerificationPhoneCheckFormComponent implements OnInit {\n /**\n * Признак, следует ли отображать функционал кода подтверждения.\n */\n @Input()\n public set showCodeFields(showCodeFields: boolean) {\n this._showCodeFields = showCodeFields;\n this.form.controls.verificationCode[showCodeFields ? 'enable' : 'disable']();\n }\n\n /**\n * Признак, следует ли отображать функционал кода подтверждения.\n */\n public get showCodeFields(): boolean {\n return this._showCodeFields;\n }\n\n /**\n * Признак, что поле ввода телефона только для чтения.\n */\n @Input()\n public readOnly: boolean = false;\n\n /**\n * Признак, следует ли телефону быть в системе. От этого признака зависит в каких случаях выдавать ошибку при проверки занятости телефона.\n */\n @Input()\n public shouldBeBusy: boolean = true;\n\n /**\n * Признак, следует ли проверять подтверждён ли телефона в системе. При `true` будет вызывать ошибку при наличие телефона в системе без подтверждения.\n */\n @Input()\n public shouldBeConfirmed?: boolean = undefined;\n\n /**\n * Наличие кода подтверждения у пользователя.\n */\n @Input()\n public haveCode: boolean = false;\n\n /**\n * Событие для обратной привязки наличия кода подтверждения\n */\n @Output()\n public haveCodeChange = new EventEmitter<boolean>();\n\n /**\n * {@link Observable} запроса проверки номера телефона.\n */\n public phoneCheck$?: Observable<boolean | null>;\n\n /**\n * {@link Subject} события отправки кода подтверждения.\n */\n public readonly onSendCode: Subject<void> = new Subject<void>();\n\n /**\n * {@link Observable} запроса данных получения кода подтверждения.\n */\n public readonly loadingApproveCode$: Observable<boolean> = this.onSendCode.pipe(\n map(() => this.phoneControl.value),\n filter((value): value is string => this.phoneControl.valid),\n switchMap((value) =>\n this.verificationService.sendPhoneApproveCode(value).pipe(\n tap(() => {\n this.reloadTimer$.next(60);\n }),\n map(() => false),\n catchError((error: unknown) => {\n if (error instanceof HttpErrorResponse) {\n const errorResponse = error.error as ApiErrorResponse;\n\n const regex = /(\\d{2}):\\d{2}/;\n const match = errorResponse.message.match(regex);\n\n if (match && match.length > 1) {\n const timeParts = match[0].split(':');\n const seconds = Number.parseInt(timeParts[1], 10);\n\n this.reloadTimer$.next(seconds);\n } else {\n this.phoneControl.setErrors({ serverResponse: errorResponse.errors?.['phone'] ?? [errorResponse.message] });\n }\n }\n\n return of(false);\n }),\n finalize(() => {\n this.setHaveCode(true);\n }),\n startWith(true)\n )\n ),\n startWith(false),\n share()\n );\n\n /**\n * Маска поля ввода кода для подтверждения.\n */\n public readonly verificationCodeMask: MaskitoOptions = scPhoneVerificationCodeMask;\n\n /**\n * {@link Subject} события запуска/остановки таймера.\n */\n public readonly reloadTimer$: Subject<number> = new Subject<number>();\n\n /**\n * {@link Observable} Таймера.\n *\n * TODO: Вынести таймер в отдельную директиву TASK:[#9260].\n */\n public readonly timer$: Observable<string | null> = this.reloadTimer$.pipe(\n switchMap((sec) =>\n timer(0, 1000).pipe(\n scan((total) => -1 + total, sec),\n takeWhile((total) => total >= 0),\n map((total) => {\n const minutes = Math.floor(total / 60);\n const seconds = total % 60;\n\n return `${Math.round(minutes).toString().padStart(2, '0')}:${Math.round(seconds).toString().padStart(2, '0')}`;\n }),\n endWith(null),\n startWith(null),\n distinctUntilChanged()\n )\n )\n );\n\n /**\n * Признак, следует ли отображать функционал кода подтверждения.\n */\n private _showCodeFields: boolean = true;\n\n /**\n * Инициализирует экземпляр класса {@link ScVerificationPhoneCheckFormComponent}.\n *\n * @param verificationService Сервис верификации.\n * @param formGroupDirective Директива c `FormGroup` из DOM.\n */\n public constructor(\n private readonly verificationService: ScVerificationService,\n @Inject(FormGroupDirective)\n private readonly formGroupDirective?: FormGroupDirective\n ) {}\n\n /**\n * Группа полей ввода для формы «Вход на сайт».\n */\n public get form(): FormGroup<{\n phone: FormControl<string | null>;\n verificationCode: FormControl<string | null>;\n }> {\n return this.formGroupDirective?.form as FormGroup<{\n phone: FormControl<string | null>;\n verificationCode: FormControl<string | null>;\n }>;\n }\n\n /**\n * Поле ввода 'Номер телефона'.\n */\n public get phoneControl(): FormControl<string | null> {\n return this.form.controls.phone;\n }\n\n /** @inheritDoc */\n public ngOnInit(): void {\n this.phoneCheck$ = tuiControlValue<string | null>(this.phoneControl).pipe(\n tap(() => {\n this.reloadTimer$.next(0);\n }),\n switchMap((value) => {\n if (this.phoneControl.valid && !!value) {\n return this.verificationService.getPhoneCheck$(value).pipe(\n map((result) => {\n if (this.shouldBeBusy !== result.isBusy) {\n this.phoneControl.setErrors({\n serverResponse: [\n result.isBusy ? 'Пользователь с таким номером телефона уже существует' : 'Пользователя с таким номером телефона не существует',\n ],\n });\n this.phoneControl.markAsTouched();\n\n return false;\n }\n\n if (this.shouldBeConfirmed !== undefined && this.shouldBeConfirmed !== result.isConfirmed) {\n this.phoneControl.setErrors({\n serverResponse: [\n result.isConfirmed\n ? 'Телефон уже подтверждён'\n : 'Номер телефона не подтверждён или вход по нему невозможен. Обратитесь к вашему персональному менеджеру или войдите с использованием e-mail и пароля.',\n ],\n });\n this.phoneControl.markAsTouched();\n\n return false;\n }\n\n return true;\n }),\n catchError((error: unknown) => {\n if (error instanceof HttpErrorResponse) {\n const errorResponse = error.error as ApiErrorResponse;\n this.phoneControl.setErrors({ serverResponse: errorResponse.errors?.['phone'] ?? [errorResponse.message] });\n }\n\n return of(false);\n }),\n startWith(null)\n );\n }\n\n this.setHaveCode(false);\n\n return of(false);\n }),\n share()\n );\n\n this.setHaveCode(false);\n }\n\n /**\n * Устанавливает состояние наличия кода подтверждения у пользователя.\n *\n * @param haveCode Признак того есть ли код подтверждения или нет.\n */\n public setHaveCode(haveCode: boolean): void {\n this.haveCode = haveCode;\n this.haveCodeChange.emit(haveCode);\n }\n}\n","<form\n [formGroup]=\"form\"\n *tuiLet=\"loadingApproveCode$ | async as loadingApproveCode\"\n class=\"flex flex-col gap-3\"\n>\n <label tuiLabel\n >Номер телефона\n <tui-input-phone\n formControlName=\"phone\"\n [readOnly]=\"readOnly\"\n [tuiTextfieldCustomContent]=\"checkingPhone\"\n >\n Номер телефона\n <input\n tuiTextfieldLegacy\n autocomplete=\"phone\"\n />\n </tui-input-phone>\n <tui-error\n formControlName=\"phone\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <ng-container *ngIf=\"showCodeFields && form.enabled\">\n <label\n *ngIf=\"loadingApproveCode === false && haveCode\"\n tuiLabel\n >Код из СМС\n <tui-input formControlName=\"verificationCode\">\n Код из СМС\n <input\n tuiTextfieldLegacy\n [maskito]=\"verificationCodeMask\"\n autocomplete=\"new-password\"\n />\n </tui-input>\n <tui-error\n formControlName=\"verificationCode\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n\n <div\n *tuiLet=\"!!loadingApproveCode as loadingApproveCode\"\n class=\"flex justify-center gap-4\"\n >\n <button\n *ngIf=\"!haveCode\"\n tuiButton\n (click)=\"onSendCode.next()\"\n [disabled]=\"loadingApproveCode || !!!(phoneCheck$ | async) || phoneControl.invalid\"\n [loading]=\"loadingApproveCode\"\n iconStart=\"@tui.sc.send\"\n >\n Получить код\n </button>\n <button\n *ngIf=\"!loadingApproveCode && !haveCode\"\n tuiLink\n [pseudo]=\"true\"\n [disabled]=\"!!!(phoneCheck$ | async) || phoneControl.invalid\"\n (click)=\"setHaveCode(true)\"\n >\n У меня есть код\n </button>\n\n <ng-container *tuiLet=\"timer$ | async as timer\">\n <tui-loader\n *ngIf=\"haveCode\"\n [showLoader]=\"loadingApproveCode\"\n >\n <button\n tuiLink\n [pseudo]=\"true\"\n [disabled]=\"loadingApproveCode || timer\"\n (click)=\"onSendCode.next()\"\n >\n Повторно отправить код\n <ng-container\n *ngIf=\"timer\"\n class=\"!text-tui-base-08\"\n >(через {{ timer }})</ng-container\n >\n </button>\n </tui-loader>\n </ng-container>\n </div>\n </ng-container>\n</form>\n\n<ng-template #checkingPhone>\n <tui-loader\n *ngIf=\"!!!(phoneCheck$ | async) && phoneControl.valid\"\n class=\"size-4\"\n >\n </tui-loader>\n</ng-template>\n","/* eslint-disable no-restricted-syntax,@typescript-eslint/unbound-method */\n\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport { IAuthToken, IPhoneLogin, ScAuthService } from '@snabcentr/client-core';\nimport { tuiIsFalsy } from '@taiga-ui/cdk';\nimport { catchError, filter, map, Observable, of, share, startWith, Subject, switchMap } from 'rxjs';\n\nimport { ApiErrorResponse } from '../../interfaces/api-error-response';\n\n/**\n * Компонент аутентификации по номеру телефона и коду подтверждения.\n */\n@Component({\n selector: 'sc-sign-in-form-by-phone',\n templateUrl: './sc-sign-in-form-by-phone.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScSignInFormByPhoneComponent {\n /**\n * Наличие кода подтверждения у пользователя.\n */\n public haveCode: boolean = false;\n\n /**\n * Группа полей ввода для формы «Вход на сайт».\n */\n public readonly form = new FormGroup({\n phone: new FormControl<string | null>(null, [Validators.required, Validators.minLength(12)]),\n verificationCode: new FormControl<string | null>(null, [Validators.required, Validators.minLength(6)]),\n });\n\n /**\n * {@link Subject} события отправки формы.\n */\n public readonly onSubmit: Subject<void> = new Subject<void>();\n\n /**\n * {@link Observable} запроса данных аутентификации.\n */\n private readonly request$: Observable<IAuthToken | null> = this.onSubmit.pipe(\n map(() => this.form.value),\n filter((value): value is IPhoneLogin => this.form.valid),\n switchMap((value) =>\n this.authService.getSignIn$(value).pipe(\n catchError((error: unknown) => {\n if (error instanceof HttpErrorResponse) {\n const { errors, message } = error.error as ApiErrorResponse;\n\n for (const key in errors) {\n if (Object.hasOwn(errors, key)) {\n this.form.get(key)?.setErrors({ serverResponse: errors[key] });\n }\n }\n\n if (!errors && message) {\n this.form.setErrors({ serverResponse: [message] });\n }\n }\n\n return of({} as IAuthToken);\n }),\n startWith(null)\n )\n ),\n share()\n );\n\n /**\n * {@link Observable} изменения состояния загрузки данных аутентификации по номеру телефона.\n */\n public readonly loading$: Observable<boolean> = this.request$.pipe(map(tuiIsFalsy));\n\n /**\n * Инициализирует экземпляр класса {@link ScSignInFormByPhoneComponent}.\n *\n * @param authService Сервис аутентификации.\n */\n public constructor(private readonly authService: ScAuthService) {}\n}\n","<form\n [formGroup]=\"form\"\n *tuiLet=\"!!(loading$ | async) as loading\"\n (ngSubmit)=\"onSubmit.next()\"\n class=\"mb-4 flex flex-col items-center gap-4\"\n>\n <sc-verification-phone-check-form\n [(haveCode)]=\"haveCode\"\n [shouldBeBusy]=\"true\"\n [shouldBeConfirmed]=\"true\"\n class=\"w-full\"\n ></sc-verification-phone-check-form>\n <button\n *ngIf=\"haveCode\"\n tuiButton\n type=\"submit\"\n [loading]=\"loading\"\n [disabled]=\"form.invalid || loading\"\n iconStart=\"@tui.sc.circle-arrow-in-right\"\n >\n Войти\n </button>\n</form>\n","/* eslint-disable no-restricted-syntax,@typescript-eslint/unbound-method */\n\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Output } from '@angular/core';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport { IAuthToken, ILogin, ScAuthService } from '@snabcentr/client-core';\nimport { tuiIsFalsy } from '@taiga-ui/cdk';\nimport { catchError, filter, map, Observable, of, share, startWith, Subject, switchMap } from 'rxjs';\n\nimport { ApiErrorResponse } from '../../interfaces/api-error-response';\n\n/**\n * Компонент аутентификации по адресу электронной почты и паролю.\n */\n@Component({\n selector: 'sc-sign-in-form-by-email',\n templateUrl: './sc-sign-in-form-by-email.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScSignInFormByEmailComponent {\n /**\n * Группа полей ввода для формы «Вход на сайт».\n */\n public readonly formByEmail: FormGroup = new FormGroup({\n login: new FormControl<string | null>(null, [Validators.required, Validators.email]),\n password: new FormControl<string | null>(null, Validators.required),\n });\n\n /**\n * {@link Subject} события отправки формы.\n */\n public readonly onSubmit: Subject<void> = new Subject<void>();\n\n /**\n * {@link Observable} запроса данных аутентификации.\n */\n private readonly emailRequest$: Observable<IAuthToken | null> = this.onSubmit.pipe(\n filter(() => this.formByEmail.valid),\n map(() => this.formByEmail.value as ILogin),\n switchMap((value) =>\n this.authService.getSignIn$(value).pipe(\n catchError((error: unknown) => {\n if (error instanceof HttpErrorResponse) {\n const { errors, message } = error.error as ApiErrorResponse;\n\n for (const key in errors) {\n if (Object.hasOwn(errors, key)) {\n this.formByEmail.get(key)?.setErrors({ serverResponse: errors[key] });\n }\n }\n\n if (!errors && message) {\n this.formByEmail.setErrors({ serverResponse: [message] });\n }\n }\n\n return of({} as IAuthToken);\n }),\n startWith(null)\n )\n ),\n share()\n );\n\n /**\n * {@link Observable} изменения состояния загрузки данных аутентификации по email.\n */\n public readonly loadingEmailAuth$: Observable<boolean> = this.emailRequest$.pipe(map(tuiIsFalsy));\n\n /**\n * Сигнал нажатия на кнопку \"Забыли пароль\".\n */\n @Output() public readonly forgotPassword: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Инициализирует экземпляр класса {@link ScSignInFormByEmailComponent}.\n *\n * @param authService Сервис аутентификации.\n */\n public constructor(private readonly authService: ScAuthService) {}\n}\n","<form\n [formGroup]=\"formByEmail\"\n (ngSubmit)=\"onSubmit.next()\"\n>\n <div class=\"mb-8 flex flex-col gap-4\">\n <label tuiLabel\n >Адрес электронной почты\n <tui-input formControlName=\"login\">\n Адрес электронной почты\n <input\n tuiTextfieldLegacy\n autocomplete=\"email\"\n />\n </tui-input>\n <tui-error\n formControlName=\"login\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <label tuiLabel\n >Пароль\n <tui-input-password formControlName=\"password\">\n Пароль\n <input\n tuiTextfieldLegacy\n autocomplete=\"current-password\"\n />\n </tui-input-password>\n <tui-error\n formControlName=\"password\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <tui-error [error]=\"[] | tuiFieldError | async\"></tui-error>\n </div>\n <div class=\"mb-4 flex flex-col items-center gap-4\">\n <a\n tuiLink\n [pseudo]=\"true\"\n (click)=\"forgotPassword.emit()\"\n class=\"text-base\"\n >Забыли пароль?</a\n >\n <button\n tuiButton\n type=\"submit\"\n [loading]=\"!!(loadingEmailAuth$ | async)\"\n [disabled]=\"formByEmail.invalid || !!(loadingEmailAuth$ | async)\"\n iconStart=\"@tui.sc.circle-arrow-in-right\"\n >\n Войти\n </button>\n </div>\n</form>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { ScAuthService, ScUserMetrikaGoalsEnum, ScUserMetrikaService } from '@snabcentr/client-core';\nimport { filter, Observable } from 'rxjs';\n\nimport { AuthMethod } from '../enums/auth-method';\n\n/**\n * Компонент аутентификации пользователя.\n */\n@Component({\n selector: 'sc-sign-in-form',\n templateUrl: './sc-sign-in-form.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScSignInFormComponent implements OnInit {\n /**\n * Выбранный способ аутентификации.\n */\n @Input() public authMethod: AuthMethod = AuthMethod.byEmail;\n\n /**\n * Перечисление способов аутентификации.\n */\n public method: typeof AuthMethod = AuthMethod;\n\n /**\n * Сигнал нажатия на кнопку \"Забыли пароль\".\n */\n @Output() public readonly forgotPassword: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Сигнал нажатия на кнопку \"Зарегистрироваться\".\n */\n @Output() public readonly signUp: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Сигнал события аутентификации.\n */\n @Output() public readonly successAuth: Observable<boolean> = this.authService.getAuthChange().pipe(filter((state) => state));\n\n /**\n * Инициализирует экземпляр класса {@link ScSignInFormComponent}.\n *\n * @param authService Сервис аутентификации.\n * @param userMetrikaService Сервис для сбора метрик о действиях пользователей.\n */\n public constructor(\n private readonly authService: ScAuthService,\n private readonly userMetrikaService: ScUserMetrikaService\n ) {}\n\n /** @inheritDoc */\n public ngOnInit(): void {\n this.userMetrikaService.emitUserMetrikaEvent({\n target: ScUserMetrikaGoalsEnum.signInShow,\n params: {\n type: this.authMethod,\n },\n });\n }\n\n /**\n * Осуществляет переключение способов аутентификации.\n *\n * @param authMethod Выбранный способ аутентификации.\n */\n public switchAuth(authMethod: AuthMethod): void {\n this.authMethod = authMethod;\n\n this.userMetrikaService.emitUserMetrikaEvent({\n target: ScUserMetrikaGoalsEnum.signInShow,\n params: {\n type: authMethod,\n },\n });\n }\n\n /**\n * Обрабатывает нажатие на кнопку \"Забыли пароль\" и выдает сигнал об этом.\n */\n public onForgotPassword(): void {\n this.forgotPassword.emit();\n }\n}\n","<div class=\"mb-4 flex justify-center\">\n <button\n tuiButton\n [appearance]=\"authMethod === 'by_phone' ? 'primary' : 'secondary'\"\n (click)=\"switchAuth(method.byPhone)\"\n class=\"tui-space_right-3 tui-space_bottom-3 !font-bold\"\n >\n По телефону\n </button>\n\n <button\n tuiButton\n [appearance]=\"authMethod === 'by_email' ? 'primary' : 'secondary'\"\n (click)=\"switchAuth(method.byEmail)\"\n class=\"tui-space_left-3 tui-space_bottom-3 !font-bold\"\n >\n По e-mail\n </button>\n</div>\n\n<sc-sign-in-form-by-email\n *ngIf=\"authMethod === 'by_email'\"\n (forgotPassword)=\"onForgotPassword()\"\n></sc-sign-in-form-by-email>\n\n<sc-sign-in-form-by-phone [class.hidden]=\"authMethod !== 'by_phone'\"></sc-sign-in-form-by-phone>\n\n<div class=\"flex flex-col items-center gap-4\">\n <span class=\"font-medium text-tui-text-02\">Еще не зарегистрированы?</span>\n <button\n tuiButton\n (click)=\"signUp.emit()\"\n type=\"button\"\n iconStart=\"@tui.user-plus\"\n appearance=\"secondary\"\n >\n Зарегистрироваться\n </button>\n</div>\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\n/**\n * Проверяет БИК.\n */\nexport const scBicValidator: ValidatorFn = ({ value }: AbstractControl<string | null>): ValidationErrors | null => {\n return !value || /^0[1,4]\\d{7}$/.test(value) ? null : { bic: true };\n};\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\n/**\n * Проверяет корреспондентский счет.\n */\nexport const scCorrespondentAccountValidator: ValidatorFn = ({ value }: AbstractControl<string | null>): ValidationErrors | null => {\n return !value || /^[3,4]01\\d{17}$|^03\\d{18}$/.test(value) ? null : { correspondentAccount: true };\n};\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\n/**\n * Проверяет повторный ввод пароля на эквивалентность паролю.\n *\n * @param passwordKey Ключ поля ввода пароля.\n * @param passwordConfirmKey Ключ поля повторного ввода пароля.\n */\nexport function scPasswordConfirmMatchingValidator(passwordKey: string, passwordConfirmKey: string): ValidatorFn | null {\n return (control: AbstractControl): ValidationErrors | null => {\n const passwordInput: AbstractControl<string | null> | null = control.get(passwordKey);\n const passwordConfirmInput: AbstractControl<string | null> | null = control.get(passwordConfirmKey);\n\n if (!passwordInput || !passwordConfirmInput || passwordInput.invalid || passwordConfirmInput.invalid || !passwordInput.value || !passwordConfirmInput.value) {\n return null;\n }\n\n return passwordInput.value === passwordConfirmInput.value ? null : { passwordNotEquivalent: true };\n };\n}\n","import { AbstractControl, ValidatorFn, ValidationErrors } from '@angular/forms';\n\n/**\n * Проверяет кратность значения.\n *\n * @param step Шаг кратности.\n * @param precision Точность, количество чисел после запятой.\n */\nexport function stepValidator(step: number, precision: number = 3): ValidatorFn {\n return ({ value }: AbstractControl<number | null>): ValidationErrors | null => {\n if (!step) {\n return null;\n }\n\n if (value) {\n return Number((value / step).toFixed(precision)) % 1 !== 0 ? { error: `Число не кратно ${step}` } : null;\n }\n\n return null;\n };\n}\n","/* eslint-disable no-unused-expressions,class-methods-use-this,@typescript-eslint/unbound-method */\n\nimport { ChangeDetectionStrategy, Component, DestroyRef, Inject, inject, OnInit, SkipSelf } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControl, FormGroupDirective, Validators } from '@angular/forms';\nimport { ScICity, ScICountry, ScIRegion, ScLocationsService } from '@snabcentr/client-core';\nimport { tuiControlValue, tuiIsPresent, tuiMarkControlAsTouchedAndValidate } from '@taiga-ui/cdk';\nimport { combineLatest, debounceTime, filter, Observable, of, share, startWith, switchMap } from 'rxjs';\n\n/**\n * Компонент поля ввода страны/региона/города.\n */\n@Component({\n selector: 'sc-addresses-selection-field',\n templateUrl: './sc-addresses-selection-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScAddressesSelectionFieldComponent implements OnInit {\n /**\n * FormControl для поля страны.\n */\n public countryControl: FormControl<ScICountry | null> = new FormControl<ScICountry | null>(\n {\n id: 3159,\n name: 'Россия',\n },\n Validators.required\n );\n\n /**\n * FormControl для поля региона.\n */\n public regionControl: FormControl<ScIRegion | null> = new FormControl<ScIRegion | null>(null, Validators.required);\n\n /**\n * FormControl для поля города.\n */\n public cityControl: FormControl<ScICity | null> = new FormControl<ScICountry | null>(null, Validators.required);\n\n /**\n * {@link Observable} изменения списка стран.\n */\n public countries$: Observable<ScICountry[] | null> = this.locationsService.getCountries$().pipe(share(), startWith(null));\n\n /**\n * {@link Observable} изменения списка регионов.\n */\n public regions$: Observable<ScIRegion[] | null> = tuiControlValue<ScIRegion | null>(this.countryControl).pipe(\n filter(tuiIsPresent),\n switchMap((country: ScICountry) => this.locationsService.getRegions$(country.id).pipe(startWith(null))),\n share()\n );\n\n /**\n * {@link Observable} изменения списка городов.\n */\n public cities$: Observable<ScICity[] | null> = combineLatest({\n country: tuiControlValue<ScIRegion | null>(this.countryControl),\n region: tuiControlValue<ScICity | null>(this.regionControl),\n }).pipe(\n debounceTime(0),\n switchMap(({ country, region }: { country: ScIRegion | null; region: ScICity | null }) =>\n country && region ? this.locationsService.getCities$(country.id, region.id).pipe(startWith(null)) : of([])\n ),\n share()\n );\n\n /**\n * Ссылка для автоматического управления уничтожением зависимостей.\n */\n private destroyRef: DestroyRef = inject(DestroyRef);\n\n /**\n * Функция преобразования объекта сортировки в значение, отображаемое в поле ввода.\n *\n * @param item Выбранный объект выпадающего списка.\n * @param item.name Название страны/региона/города, которое будет отображено в поле.\n */\n public readonly stringify = (item: { name: string }): string => item.name;\n\n /**\n * Инициализирует экземпляр класса {@link ScAddressesSelectionFieldComponent}.\n *\n * @param formGroupDirective Директива c `FormGroup` из DOM.\n * @param locationsService Сервис для получения списков стран, регионов, городов.\n */\n public constructor(\n @SkipSelf() @Inject(FormGroupDirective) private readonly formGroupDirective: FormGroupDirective,\n private readonly locationsService: ScLocationsService\n ) {}\n\n /**\n * `FormControl` поля идентификатора города.\n */\n public get cityIdControl(): FormControl<string | null> {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this.formGroupDirective.form.get('cityId')! as FormControl<string | null>;\n }\n\n /** @inheritDoc */\n public ngOnInit(): void {\n if (this.cityIdControl.valid) {\n this.locationsService\n .getUserCity$(Number(this.cityIdControl.value))\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((city: ScICity) => {\n this.countryControl.patchValue(city.region?.country ?? null);\n this.regionControl.patchValue(city.region ?? null);\n this.cityControl.patchValue(city);\n });\n }\n\n this.countryControl.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((country) => {\n this.regionControl.reset(null);\n this.cityControl.reset(null);\n country ? this.regionControl.enable() : this.regionControl.disable();\n this.cityControl.disable();\n });\n\n this.regionControl.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((region) => {\n this.cityControl.reset(null);\n this.cityIdControl.reset(null);\n region ? this.cityControl.enable() : this.cityControl.disable();\n });\n }\n\n /**\n * Заполнение полей банковских реквизитов на основе выбранной подсказки.\n *\n * @param suggestion Объект подсказки по банку.\n * @param city Идентификатор записи города.\n */\n public onSelectedCity(city: ScICity | null): void {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (this.cityIdControl) {\n this.cityIdControl.setValue(city?.id.toString() ?? null);\n tuiMarkControlAsTouchedAndValidate(this.cityIdControl);\n }\n }\n}\n","<div class=\"flex flex-col items-start gap-4 sm:flex-row\">\n <!-- TODO: Открыть поле выбора страны при добавлении возможности выбора страны для клиента. -->\n <!-- <label tuiLabel=\"Страна\" class=\"w-full\">\n <tui-combo-box *tuiLet=\"countries$ | async as countries\" [formControl]=\"countryControl\" [stringify]=\"stringify\">\n Страна\n <input tuiTextfield autocomplete=\"new-password\" />\n <tui-data-list-wrapper *tuiDataList [itemContent]=\"stringify | tuiStringifyContent\" [items]=\"countries | tuiFilterByInputWith: stringify\"></tui-data-list-wrapper>\n </tui-combo-box>\n <tui-error [formControl]=\"countryControl\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label> -->\n <!-- TODO: [TASK:9383]: Доработать компонент выбора города, как на портале -->\n <label\n tuiLabel\n class=\"w-full\"\n >Регион\n <tui-combo-box\n *tuiLet=\"(regions$ | async) ?? [] as regions\"\n [formControl]=\"regionControl\"\n [stringify]=\"stringify\"\n >\n Регион\n <input\n tuiTextfieldLegacy\n autocapitalize=\"off\"\n autocomplete=\"off\"\n autocorrect=\"off\"\n />\n <tui-data-list-wrapper\n *tuiDataList\n [itemContent]=\"stringify | tuiStringifyContent\"\n [items]=\"regions | tuiFilterByInput\"\n ></tui-data-list-wrapper>\n </tui-combo-box>\n <tui-error\n [formControl]=\"regionControl\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <label\n tuiLabel\n class=\"w-full\"\n >Город\n <tui-combo-box\n *tuiLet=\"(cities$ | async) ?? [] as cities\"\n [formControl]=\"cityControl\"\n [stringify]=\"stringify\"\n (ngModelChange)=\"onSelectedCity($event)\"\n >\n Город\n <input\n tuiTextfieldLegacy\n autocapitalize=\"off\"\n autocomplete=\"off\"\n autocorrect=\"off\"\n />\n <tui-data-list-wrapper\n *tuiDataList\n [itemContent]=\"stringify | tuiStringifyContent\"\n [items]=\"cities | tuiFilterByInput\"\n ></tui-data-list-wrapper>\n </tui-combo-box>\n <tui-error\n [formControl]=\"cityIdControl\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n <tui-error\n *ngIf=\"cityIdControl.untouched\"\n [formControl]=\"cityControl\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n</div>\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Inject, inject, Input, OnInit, Output, SkipSelf } from '@angular/core';\nimport { FormGroup, NgControl } from '@angular/forms';\nimport { SC_MIN_LENGTH_SEARCH_TERM, ScISuggestionType, ScSuggestion, ScSuggestionService } from '@snabcentr/client-core';\nimport { tuiControlValue, tuiIsFalsy, tuiIsPresent, tuiMarkControlAsTouchedAndValidate } from '@taiga-ui/cdk';\nimport { TUI_DATA_LIST_HOST, TuiDataListHost } from '@taiga-ui/core';\nimport { catchError, debounceTime, filter, map, Observable, of, share, startWith, switchMap, throwError } from 'rxjs';\n\nimport { ApiErrorResponse } from '../../auth/interfaces/api-error-response';\n\n/**\n * Компонент подсказок для поля ввода.\n */\n@Component({\n selector: 'sc-suggestion-field',\n templateUrl: './sc-suggestion-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScSuggestionFieldComponent implements OnInit {\n /**\n * Тип подсказок.\n */\n @Input()\n public type: ScISuggestionType = ScISuggestionType.fio;\n\n /**\n * Событие выбора результата подсказки.\n */\n @Output()\n public selectedClick: EventEmitter<ScSuggestion> = new EventEmitter<ScSuggestion>();\n\n /**\n * {@link Observable} подсказок.\n */\n public suggestions$?: Observable<ScSuggestion[] | null>;\n\n /**\n * {@link Observable} состояние запроса подсказок.\n */\n public loading$?: Observable<boolean>;\n\n /**\n * Перечисление типов подсказок.\n */\n public readonly suggestionType: typeof ScISuggestionType = ScISuggestionType;\n\n /**\n * Компонент обёртка выпадающего списка.\n */\n private readonly host: TuiDataListHost<unknown> | null = inject<TuiDataListHost<unknown>>(TUI_DATA_LIST_HOST, {\n optional: true,\n });\n\n /**\n * Минимальная длина поискового запроса для получения данных.\n */\n private readonly minLengthSearchTerm: number = inject(SC_MIN_LENGTH_SEARCH_TERM);\n\n /**\n * Инициализирует экземпляр класса {@link ScSuggestionFieldComponent}.\n *\n * @param control Контрол поля ввода.\n * @param suggestionService Сервис работы с API подсказок.\n */\n public constructor(\n @SkipSelf()\n @Inject(NgControl)\n public readonly control: NgControl,\n private readonly suggestionService: ScSuggestionService\n ) {}\n\n /** @inheritDoc */\n public ngOnInit(): void {\n const request$ = tuiControlValue<string | null>(this.control).pipe(\n debounceTime(500),\n filter(tuiIsPresent),\n map((term) => term.trim()),\n filter((term) => term.length >= this.minLengthSearchTerm),\n switchMap((term: string) => this.suggestionService.getData<ScSuggestion>(term, this.type).pipe(startWith(null))),\n catchError((error: unknown) => {\n if (error instanceof HttpErrorResponse) {\n const errorResponse = error.error as ApiErrorResponse;\n\n if (this.control.control) {\n tuiMarkControlAsTouchedAndValidate(this.control.control);\n\n this.control.control.setErrors({\n serverResponse: [errorResponse.message || 'Ошибка сервера: пожалуйста, перезагрузите страницу и/или выполните запрос позже.'],\n });\n }\n }\n\n return throwError(() => of([]));\n }),\n share()\n );\n\n this.suggestions$ = request$.pipe(filter(tuiIsPresent), startWith(null));\n this.loading$ = request$.pipe(map(tuiIsFalsy));\n }\n\n /**\n * Заполнение полей основе выбранной подсказки.\n *\n * @param suggestion Объект подсказки.\n */\n public onSelected(suggestion: ScSuggestion): void {\n switch (this.type) {\n case ScISuggestionType.fio:\n if ('fio' in suggestion) {\n this.control.control?.patchValue(suggestion.fio, { emitEvent: false });\n }\n break;\n case ScISuggestionType.address:\n if ('addressString' in suggestion) {\n this.control.control?.patchValue(suggestion.addressString, { emitEvent: false });\n }\n break;\n case ScISuggestionType.bank:\n if ('inn' in suggestion && 'bic' in suggestion) {\n (this.control.control?.parent as FormGroup).patchValue(\n {\n bankName: suggestion.name,\n bic: suggestion.bic,\n correspondentAccount: suggestion.correspondentAccount,\n },\n { emitEvent: false }\n );\n }\n break;\n case ScISuggestionType.organization:\n if ('inn' in suggestion && !('bic' in suggestion)) {\n (this.control.control?.parent as FormGroup).patchValue(\n {\n name: suggestion.name,\n inn: suggestion.inn,\n kpp: suggestion.kpp,\n okpo: suggestion.okpo,\n directorName: suggestion.directorName,\n directorPosition: suggestion.directorPosition,\n legalAddress: suggestion.legalAddress,\n postalAddress: suggestion.postalAddress,\n actualAddress: suggestion.actualAddress,\n },\n { emitEvent: false }\n );\n }\n break;\n case ScISuggestionType.email:\n if ('email' in suggestion) {\n this.control.control?.patchValue(suggestion.email, { emitEvent: false });\n }\n break;\n default:\n break;\n }\n\n if (this.host?.handleOption) {\n // Дёргаем внутренний обработчик выбора элемента выпадающего списка для решения проблемы закрытия выпадающего списка подсказки.\n this.host.handleOption(this.control.value);\n }\n this.selectedClick.emit(suggestion);\n }\n}\n","<tui-loader\n size=\"m\"\n [overlay]=\"true\"\n [showLoader]=\"!!(loading$ | async)\"\n>\n <tui-data-list *tuiLet=\"suggestions$ | async as options\">\n <button\n *ngFor=\"let option of options\"\n tuiOption\n (click)=\"onSelected(option)\"\n class=\"flex-col !items-start\"\n >\n <ng-container *tuiLet=\"$any(option) as option\">\n <ng-container [ngSwitch]=\"type\">\n <ng-container *ngSwitchCase=\"suggestionType.fio\">\n <span class=\"text-tui-link\">{{ option.fio }}</span>\n </ng-container>\n <ng-container *ngSwitchCase=\"suggestionType.organization\">\n <span class=\"text-tui-link\">\n {{ option.name }}\n <span class=\"ml-2 text-tui-text-02\">инн: {{ option.inn }}</span>\n </span>\n <span class=\"text-tui-text-02\">{{ option?.legalAddress }}</span>\n </ng-container>\n <ng-container *ngSwitchCase=\"suggestionType.bank\">\n <span class=\"text-tui-link\">{{ option.name }}</span>\n <span class=\"text-tui-text-02\">{{ option.bic }}</span>\n </ng-container>\n <ng-container *ngSwitchCase=\"suggestionType.email\">\n <span class=\"text-tui-link\">{{ option.email }}</span>\n </ng-container>\n <ng-container *ngSwitchCase=\"suggestionType.address\">\n <span class=\"text-tui-link\">{{ option.addressString }}</span>\n </ng-container>\n </ng-container>\n </ng-container>\n </button>\n </tui-data-list>\n</tui-loader>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { FormGroup, FormControl } from '@angular/forms';\nimport { ScICurrency, ScISuggestionType, ScReferencesService } from '@snabcentr/client-core';\nimport { Observable } from 'rxjs';\nimport { scAccountNumberMask, scBicMask, scCorrespondentAccount } from '../../masks';\nimport { MaskitoOptions } from '@maskito/core';\n\n/**\n * Компонент формы банковских реквизитов.\n */\n@Component({\n selector: 'sc-new-contragent-bank-account-form',\n templateUrl: './sc-new-contragent-bank-account-form.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScNewContragentBankAccountsFormComponent {\n /**\n * Перечисление типов подсказок.\n */\n public readonly suggestionType: typeof ScISuggestionType = ScISuggestionType;\n\n /**\n * Маска поля ввода БИК.\n */\n public readonly bicMask: MaskitoOptions = scBicMask;\n\n /**\n * Маска поля ввода номера счета.\n */\n public readonly accountNumberMask: MaskitoOptions = scAccountNumberMask;\n\n /**\n * Маска поля ввода номера корреспондентского счета.\n */\n public readonly correspondentAccount: MaskitoOptions = scCorrespondentAccount;\n\n /**\n * {@link Observable} списка валют.\n */\n public readonly currencies$: Observable<ScICurrency[]> = this.referencesService.currencies$;\n\n /**\n * Группа с полем банковских реквизитов.\n */\n @Input()\n public form: FormGroup<{\n bankName: FormControl<string | null>;\n bic: FormControl<string | null>;\n accountNumber: FormControl<string | null>;\n correspondentAccount: FormControl<string | null>;\n currencyId: FormControl<number | null>;\n }>;\n\n /**\n * Инициализирует экземпляр класса {@link ScContragentBankAccountsFormComponent}.\n *\n * @param referencesService Сервис справочников.\n */\n public constructor(private readonly referencesService: ScReferencesService) {}\n\n /**\n * Возвращает {@link Observable} валюты по идентификатору.\n *\n * @param currencyId Идентификатор валюты.\n */\n public getCurrencyById$(currencyId: number): Observable<ScICurrency | undefined> {\n return this.referencesService.getCurrencyById$(currencyId);\n }\n}\n","<div [formGroup]=\"form\" class=\"flex flex-col gap-3\">\n <label tuiLabel>Наименование банка\n <tui-input formControlName=\"bankName\">\n Наименование банка\n <sc-suggestion-field *tuiDataList [type]=\"suggestionType.bank\"></sc-suggestion-field>\n </tui-input>\n <tui-error formControlName=\"bankName\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel>БИК\n <tui-input formControlName=\"bic\">\n БИК\n <input tuiTextfieldLegacy [maskito]=\"bicMask\" autocomplete=\"bic\" />\n <sc-suggestion-field *tuiDataList [type]=\"suggestionType.bank\"></sc-suggestion-field>\n </tui-input>\n <tui-error formControlName=\"bic\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel>Номер счета\n <tui-input formControlName=\"accountNumber\">\n Номер счета\n <input tuiTextfieldLegacy [maskito]=\"accountNumberMask\" autocomplete=\"accountNumber\" />\n </tui-input>\n <tui-error formControlName=\"accountNumber\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel>Корреспондентский счет\n <tui-input formControlName=\"correspondentAccount\">\n Корреспондентский счет\n <input tuiTextfieldLegacy [maskito]=\"correspondentAccount\" autocomplete=\"correspondentAccount\" />\n </tui-input>\n <tui-error formControlName=\"correspondentAccount\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel>Валюта расчётов\n <tui-select formControlName=\"currencyId\" [valueContent]=\"currencyContent\">\n Валюта расчётов\n <tui-data-list *tuiDataList>\n <button *ngFor=\"let item of currencies$ | async; let index = index\" tuiOption [value]=\"item.id\">{{ item.name }} ({{ item.symbol }})</button>\n </tui-data-list>\n </tui-select>\n <ng-template #currencyContent let-data>\n <div>{{ (getCurrencyById$(data) | async)?.name }}</div>\n </ng-template>\n <tui-error formControlName=\"currencyId\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n</div>\n","/* eslint-disable class-methods-use-this,@typescript-eslint/unbound-method */\n\nimport { ChangeDetectionStrategy, Component, DestroyRef, Inject, inject, Input, OnDestroy, OnInit, SkipSelf } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormArray, FormControl, FormGroup, FormGroupDirective, Validators } from '@angular/forms';\nimport { ScICountry, ScIReferencesTypes, ScISalesDirection, ScISuggestionType, ScLocationsService, ScOpfList, ScReferencesService } from '@snabcentr/client-core';\nimport { tuiControlValue, tuiIsPresent } from '@taiga-ui/cdk';\nimport { distinctUntilChanged, filter, map, Observable, tap } from 'rxjs';\n\nimport { ScBankAccountFormGroup, ScContactFormGroup } from '../../auth/interfaces';\nimport { scEntrepreneurInnMask, scEntrepreneurOkpoMask, scKppMask, scLegalInnMask, scLegalOkpoMask } from '../../masks';\nimport { scBicValidator, scCorrespondentAccountValidator } from '../../validators';\n\n/**\n * Форма создания нового контрагента.\n */\n@Component({\n selector: 'sc-new-contragent-form',\n templateUrl: './sc-new-contragent-form.component.html',\n styleUrls: ['./sc-new-contragent-form.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScNewContragentFormComponent implements OnInit, OnDestroy {\n /**\n * Поле выбора организационно-правовой формы.\n */\n @Input()\n public opfControl?: FormControl<keyof typeof ScOpfList | null>;\n\n /**\n * Группа полей информации о контрагенте индивидуальном предпринимателе.\n */\n private readonly entrepreneurGroup = new FormGroup({\n inn: new FormControl<string | null>(null, Validators.required),\n okpo: new FormControl<string | null>(null, Validators.required),\n directorName: new FormControl<string | null>(null, Validators.required),\n directorPosition: new FormControl<string | null>(null, Validators.required),\n directorActsOn: new FormControl<string | null>(null, Validators.required),\n legalAddress: new FormControl<string | null>(null, Validators.required),\n postalAddress: new FormControl<string | null>(null, Validators.required),\n actualAddress: new FormControl<string | null>(null, Validators.required),\n bankAccounts: new FormArray<ScBankAccountFormGroup>(\n [\n new FormGroup({\n bankName: new FormControl<string | null>(null, Validators.required),\n bic: new FormControl<string | null>(null, [Validators.required, Validators.minLength(9), scBicValidator]),\n accountNumber: new FormControl<string | null>(null, [Validators.required, Validators.minLength(20)]),\n correspondentAccount: new FormControl<string | null>(null, [Validators.required, Validators.minLength(20), scCorrespondentAccountValidator]),\n currencyId: new FormControl<number | null>(null, Validators.required),\n }),\n ],\n [Validators.minLength(1), Validators.required]\n ),\n });\n\n /**\n * Группа полей информации о контрагенте юридическом лице.\n */\n private readonly legalGroup = new FormGroup({\n kpp: new FormControl<string | null>(null, [Validators.required, Validators.minLength(9)]),\n });\n\n /**\n * Группа полей информации о контрагенте юридическом лице нерезиденте.\n */\n private readonly nonResidentLegalGroup = new FormGroup({\n registrationCountryId: new FormControl<number | null>(null, Validators.required),\n registrationNumber: new FormControl<string | null>(null, Validators.required),\n taxNumber: new FormControl<string | null>(null, Validators.required),\n });\n\n /**\n * Форма для создания нового контрагента физического лица.\n */\n public readonly form = new FormGroup({\n name: new FormControl<string | null>(null, Validators.required),\n opf: new FormControl<keyof typeof ScOpfList>('individual', Validators.required),\n salesDirectionId: new FormControl<number | null>(null, Validators.required),\n contacts: new FormArray<ScContactFormGroup>(\n [\n new FormGroup({\n name: new FormControl<string | null>(null, Validators.required),\n phone: new FormControl<string | null>(null, [Validators.required, Validators.minLength(12)]),\n email: new FormControl<string | null>(null, Validators.email),\n position: new FormControl<string | null>(null, Validators.required),\n }),\n ],\n [Validators.minLength(1), Validators.required]\n ),\n });\n\n /**\n * Перечисление типов подсказок.\n */\n public readonly suggestionType: typeof ScISuggestionType = ScISuggestionType;\n\n /**\n * {@link Observable} выбора ОПФ.\n */\n public readonly selectOpf$: Observable<keyof typeof ScOpfList> = tuiControlValue<keyof typeof ScOpfList>(this.form.controls.opf).pipe(\n distinctUntilChanged(),\n tap((opf) => {\n Object.keys({ ...this.entrepreneurGroup.controls, ...this.legalGroup.controls, ...this.nonResidentLegalGroup.controls }).forEach((key) => {\n this.form.get(key)?.disable();\n });\n\n const addControls = (formGroup: FormGroup) => {\n Object.keys({ ...formGroup.controls }).forEach((key) => {\n formGroup.get(key)?.enable();\n (this.form as FormGroup).setControl<typeof key>(key, formGroup.get(key));\n });\n };\n\n if (ScOpfList[opf] > ScOpfList.individual) {\n addControls(this.entrepreneurGroup);\n this.entrepreneurGroup.controls.inn.setValidators([Validators.required, Validators.minLength(12)]);\n this.entrepreneurGroup.controls.okpo.setValidators([Validators.required, Validators.minLength(10)]);\n }\n\n if (ScOpfList[opf] > ScOpfList.entrepreneur) {\n addControls(this.legalGroup);\n this.entrepreneurGroup.controls.inn.setValidators([Validators.required, Validators.minLength(10)]);\n this.entrepreneurGroup.controls.okpo.setValidators([Validators.required, Validators.minLength(8)]);\n }\n\n if (ScOpfList[opf] > ScOpfList.legal) {\n addControls(this.nonResidentLegalGroup);\n }\n })\n );\n\n /**\n * Маска поля ввода КПП.\n */\n public readonly kppMask = scKppMask;\n\n /**\n * Перечисление организационно-правовых форм.\n */\n public readonly opfListEnum: typeof ScOpfList = ScOpfList;\n\n /**\n * Ссылка для автоматического управления уничтожением зависимостей.\n */\n private destroyRef: DestroyRef = inject(DestroyRef);\n\n /**\n * Маска поля ввода ИНН.\n *\n * @param opf Организационно-правовая форма.\n */\n public readonly innMask = (opf: keyof typeof ScOpfList) => (ScOpfList[opf] > ScOpfList.entrepreneur ? scLegalInnMask : scEntrepreneurInnMask);\n\n /**\n * Маска поля ввода ОКПО.\n *\n * @param opf Организационно-правовая форма.\n */\n public readonly okpoMask = (opf: keyof typeof ScOpfList) => (ScOpfList[opf] > ScOpfList.entrepreneur ? scLegalOkpoMask : scEntrepreneurOkpoMask);\n\n /**\n * Инициализирует экземпляр класса {@link ScNewContragentFormComponent}.\n *\n * @param referencesService Сервис справочников.\n * @param locationsService Сервис для получения списков стран, регионов, городов.\n * @param formGroupDirective Директива c `FormGroup` из DOM.\n */\n public constructor(\n private readonly referencesService: ScReferencesService,\n private readonly locationsService: ScLocationsService,\n @SkipSelf()\n @Inject(FormGroupDirective)\n private readonly formGroupDirective: FormGroupDirective | null\n ) {\n this.referencesService.directions$\n .pipe(\n filter(tuiIsPresent),\n filter((directions) => directions.length > 0),\n takeUntilDestroyed()\n )\n .subscribe((directions) => {\n this.form.patchValue({ salesDirectionId: directions[0].id });\n });\n }\n\n /**\n * Родительская `FormGroup`.\n */\n public get parentForm(): FormGroup | undefined {\n return this.formGroupDirective?.form;\n }\n\n /** @inheritDoc */\n public ngOnInit(): void {\n this.parentForm?.setControl('contragent', this.form);\n if (this.parentForm && this.opfControl) {\n tuiControlValue<keyof typeof ScOpfList | null>(this.opfControl)\n .pipe(filter(tuiIsPresent), takeUntilDestroyed(this.destroyRef))\n .subscribe((opf) => {\n this.form.controls.opf.patchValue(opf);\n });\n }\n }\n\n /** @inheritDoc */\n public ngOnDestroy(): void {\n this.parentForm?.removeControl('contragent');\n }\n\n /**\n * Возвращает {@link Observable} списка направлений продаж.\n *\n * @param directionId Идентификатор направления продаж.\n */\n public getDirectionById$(directionId: number): Observable<ScISalesDirection | undefined> {\n return this.referencesService.getDirectionById$(directionId);\n }\n\n /**\n * Возвращает {@link Observable} список организационно-правовых форм..\n */\n public getOpf$(): Observable<Array<ScIReferencesTypes<ScOpfList, typeof ScOpfList>>> {\n return this.referencesService.opf$;\n }\n\n /**\n * Возвращает {@link Observable} организационно-правовой формы, соответствующий символьному обозначению (slug) на входе.\n *\n * @param slug Символьное обозначение (slug).\n */\n public getOpfBySlug$(slug: keyof typeof ScOpfList): Observable<ScIReferencesTypes<ScOpfList, typeof ScOpfList> | undefined> {\n return this.referencesService.getOpfBySlug$(slug);\n }\n\n /**\n * Возвращает {@link Observable} списка стран\n */\n public getCountries$(): Observable<ScICountry[]> {\n return this.locationsService.getCountries$();\n }\n\n /**\n * Возвращает {@link Observable} страны по идентификатору.\n *\n * @param countryId — Идентификатор страны.\n */\n public getCountriesById$(countryId: number): Observable<ScICountry | undefined> {\n return this.locationsService.getCountries$().pipe(map((countries) => countries.find((country) => country.id === countryId)));\n }\n}\n","<div\n [formGroup]=\"form\"\n *ngIf=\"selectOpf$ | async as selectOpf\"\n class=\"flex flex-col gap-3 pb-1\"\n>\n <p class=\"text-lg font-bold\">Общая информация контрагента</p>\n <label tuiLabel>Тип контрагента (организационно-правовая форма)\n <tui-select\n formControlName=\"opf\"\n [valueContent]=\"opfContent\"\n [readOnly]=\"!!opfControl\"\n >\n Тип контрагента (организационно-правовая форма)\n <tui-data-list *tuiDataList>\n <button\n *ngFor=\"let item of getOpf$() | async; let index = index\"\n tuiOption\n [value]=\"item.slug\"\n >\n {{ item.name }}\n </button>\n </tui-data-list>\n </tui-select>\n <ng-template\n #opfContent\n let-data\n >\n <div>{{ (getOpfBySlug$(data) | async)?.name }}</div>\n </ng-template>\n <tui-error\n formControlName=\"opf\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <label tuiLabel>{{ opfListEnum[selectOpf] > opfListEnum.individual ? 'Название организации' : 'Ф.И.О.' }}\n <tui-input formControlName=\"name\">\n <ng-template #fio>\n Ф.И.О.\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.fio\"\n ></sc-suggestion-field>\n </ng-template>\n <ng-container *ngIf=\"opfListEnum[selectOpf] > opfListEnum.individual; else fio\">\n Название организации\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.organization\"\n ></sc-suggestion-field>\n </ng-container>\n </tui-input>\n <tui-error\n formControlName=\"name\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n\n <ng-container>\n <ng-container *ngIf=\"opfListEnum[selectOpf] > opfListEnum.individual\">\n <label tuiLabel>ИНН организации или ИП\n <tui-input formControlName=\"inn\">\n ИНН организации или ИП\n <input\n tuiTextfieldLegacy\n [maskito]=\"innMask(selectOpf)\"\n autocomplete=\"inn\"\n />\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.organization\"\n ></sc-suggestion-field>\n </tui-input>\n <tui-error\n formControlName=\"inn\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <label tuiLabel>Код ОКПО\n <tui-input formControlName=\"okpo\">\n Код ОКПО\n <input\n tuiTextfieldLegacy\n [maskito]=\"okpoMask(selectOpf)\"\n autocomplete=\"okpo\"\n />\n </tui-input>\n <tui-error\n formControlName=\"okpo\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <label tuiLabel>Ф.И.О. руководителя\n <tui-input formControlName=\"directorName\">\n Ф.И.О. руководителя\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.fio\"\n ></sc-suggestion-field>\n </tui-input>\n <tui-error\n formControlName=\"directorName\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <label tuiLabel>Должность руководителя\n <tui-input formControlName=\"directorPosition\"> Должность руководителя </tui-input>\n <tui-error\n formControlName=\"directorPosition\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <label tuiLabel>Основания полномочий руководителя\n <tui-input formControlName=\"directorActsOn\"> Основания полномочий руководителя </tui-input>\n <tui-error\n formControlName=\"directorActsOn\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <label tuiLabel>Юридический адрес\n <tui-input formControlName=\"legalAddress\">\n Юридический адрес\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.address\"\n ></sc-suggestion-field>\n </tui-input>\n <tui-error\n formControlName=\"legalAddress\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <label tuiLabel>Почтовый адрес\n <tui-input formControlName=\"postalAddress\">\n Почтовый адрес\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.address\"\n ></sc-suggestion-field>\n </tui-input>\n <tui-error\n formControlName=\"postalAddress\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <label tuiLabel>Фактический адрес\n <tui-input formControlName=\"actualAddress\">\n Фактический адрес\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.address\"\n ></sc-suggestion-field>\n </tui-input>\n <tui-error\n formControlName=\"actualAddress\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n </ng-container>\n <ng-container *ngIf=\"opfListEnum[selectOpf] > opfListEnum.entrepreneur\">\n <label tuiLabel>КПП организации\n <tui-input formControlName=\"kpp\">\n КПП организации\n <input\n tuiTextfieldLegacy\n [maskito]=\"kppMask\"\n autocomplete=\"kpp\"\n />\n </tui-input>\n <tui-error\n formControlName=\"kpp\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n </ng-container>\n <ng-container *ngIf=\"opfListEnum[selectOpf] > opfListEnum.legal\">\n <label tuiLabel> Страна регистрации юридического лица\n <tui-select\n formControlName=\"registrationCountryId\"\n [valueContent]=\"CountryContent\"\n >\n Страна регистрации юридического лица\n <tui-data-list *tuiDataList>\n <button\n *ngFor=\"let item of getCountries$() | async; let index = index\"\n tuiOption\n [value]=\"item.id\"\n >\n {{ item.name }}\n </button>\n </tui-data-list>\n </tui-select>\n <ng-template\n #CountryContent\n let-data\n >\n <div>{{ (getCountriesById$(data) | async)?.name }}</div>\n </ng-template>\n <tui-error\n formControlName=\"registrationCountryId\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <label tuiLabel>Регистрационный номер юридического лица\n <tui-input formControlName=\"registrationNumber\"> Регистрационный номер юридического лица </tui-input>\n <tui-error\n formControlName=\"registrationNumber\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <label tuiLabel>Налоговый номер юридического лица\n <tui-input formControlName=\"taxNumber\"> Налоговый номер юридического лица </tui-input>\n <tui-error\n formControlName=\"taxNumber\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n </ng-container>\n </ng-container>\n</div>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { FormGroup, FormControl } from '@angular/forms';\nimport { ScISuggestionType } from '@snabcentr/client-core';\n\n/**\n * Компонент формы контактного лица.\n */\n@Component({\n selector: 'sc-new-contact-form',\n templateUrl: './sc-new-contact-form.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScNewContactFormComponent {\n /**\n * Перечисление типов подсказок.\n */\n public readonly suggestionType: typeof ScISuggestionType = ScISuggestionType;\n\n /**\n * Группа с полями контактного лица.\n */\n @Input()\n public form: FormGroup<{\n name: FormControl<string | null>;\n phone: FormControl<string | null>;\n email: FormControl<string | null>;\n position: FormControl<string | null>;\n }>;\n}\n","<div [formGroup]=\"form\" class=\"flex flex-col gap-3\">\n <label tuiLabel>Ф.И.О.\n <tui-input formControlName=\"name\">\n Ф.И.О.\n <sc-suggestion-field *tuiDataList [type]=\"suggestionType.fio\"></sc-suggestion-field>\n </tui-input>\n <tui-error formControlName=\"name\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel>Телефон\n <tui-input-phone formControlName=\"phone\"> Телефон </tui-input-phone>\n <tui-error formControlName=\"phone\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel>Адрес электронной почты\n <tui-input formControlName=\"email\">\n Адрес электронной почты\n <sc-suggestion-field *tuiDataList [type]=\"suggestionType.email\"></sc-suggestion-field>\n </tui-input>\n <tui-error formControlName=\"email\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n\n <label tuiLabel>Должность контактного лица\n <tui-input formControlName=\"position\"> Должность контактного лица </tui-input>\n <tui-error formControlName=\"position\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n</div>\n","/* eslint-disable lodash/prefer-lodash-method,@typescript-eslint/no-unnecessary-condition,class-methods-use-this,@typescript-eslint/no-explicit-any,@typescript-eslint/unbound-method,no-restricted-syntax */\n\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { ChangeDetectionStrategy, Component, OnInit, Output } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormArray, FormControl, FormGroup, Validators } from '@angular/forms';\nimport {\n IAuthToken,\n ScAuthService,\n ScConvertersService,\n ScIReferencesTypes,\n ScISuggestionType,\n ScIUserOnDataCreate,\n ScOpfList,\n ScReferencesService,\n ScSuggestion,\n ScUserMetrikaGoalsEnum,\n ScUserMetrikaService,\n ScUserService,\n} from '@snabcentr/client-core';\nimport { tuiIsFalsy, tuiMarkControlAsTouchedAndValidate } from '@taiga-ui/cdk';\nimport { catchError, distinctUntilChanged, filter, map, Observable, of, share, startWith, Subject, switchMap, tap } from 'rxjs';\n\nimport { scBicValidator, scCorrespondentAccountValidator, scPasswordConfirmMatchingValidator } from '../../validators';\nimport { ApiErrorResponse, ScBankAccountFormGroup, ScContactFormGroup } from '../interfaces';\n\n/**\n * Компонент формы регистрация пользователя.\n */\n@Component({\n selector: 'sc-sign-up-form',\n templateUrl: './sc-sign-up-form.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScSignUpFormComponent implements OnInit {\n /**\n * Поле ввода организационно-правовых форм.\n */\n public opfControl: FormControl<keyof typeof ScOpfList | null> = new FormControl<keyof typeof ScOpfList>('individual', Validators.required);\n\n /**\n * Группа полей ввода для формы регистрации.\n */\n public form = new FormGroup(\n {\n name: new FormControl<string | null>(null, [Validators.required, Validators.minLength(3)]),\n email: new FormControl<string | null>(null, [Validators.required, Validators.email]),\n phone: new FormControl<string | null>(null, [Validators.required, Validators.minLength(12)]),\n verificationCode: new FormControl<string | null>(null, [Validators.required, Validators.minLength(6)]),\n cityId: new FormControl<number | null>(null, Validators.required),\n password: new FormControl<string | null>(null, [Validators.required, Validators.minLength(8)]),\n passwordConfirm: new FormControl<string | null>(null, [Validators.required, Validators.minLength(8)]),\n getNews: new FormControl<boolean>(false),\n acceptRules: new FormControl<boolean>(false, Validators.requiredTrue),\n contragent: new FormGroup<any>({}),\n },\n {\n validators: scPasswordConfirmMatchingValidator('password', 'passwordConfirm'),\n }\n );\n\n /**\n * Перечисление типов подсказок.\n */\n public readonly suggestionType: typeof ScISuggestionType = ScISuggestionType;\n\n /**\n * Перечисление организационно-правовых форм.\n */\n public readonly opfListEnum: typeof ScOpfList = ScOpfList;\n\n /**\n * {@link Subject} события отправки формы.\n */\n public readonly onSubmit: Subject<void> = new Subject<void>();\n\n /**\n * {@link Observable} запроса данных регистрации.\n */\n private readonly request$ = this.onSubmit.pipe(\n tap(() => {\n tuiMarkControlAsTouchedAndValidate(this.form);\n }),\n filter(() => this.form.valid),\n map(() => this.form.value as ScIUserOnDataCreate),\n tap((value) => {\n this.createBaseContragent(value);\n }),\n switchMap((value) =>\n this.userService.signUp$(this.convertersService.removeNullRecursive(value)).pipe(\n switchMap(() => this.authService.getSignIn$({ login: value.email, password: value.password })),\n catchError((error: unknown) => {\n if (error instanceof HttpErrorResponse) {\n const { errors, message } = error.error as ApiErrorResponse;\n\n for (const key in errors) {\n if (Object.hasOwn(errors, key)) {\n this.form.get(key)?.setErrors({ serverResponse: errors[key] });\n }\n }\n\n if (!errors && message) {\n this.form.setErrors({ serverResponse: [message] });\n }\n\n this.stepIndex = this.steps.findIndex((_, index) => !this.canNextStep(index));\n }\n\n return of({} as IAuthToken);\n }),\n startWith(null)\n )\n ),\n share()\n );\n\n /**\n * Индекс этапа.\n */\n public stepIndex: number = 0;\n\n /**\n * {@link Observable} изменения состояния загрузки данных.\n */\n public readonly loading$: Observable<boolean> = this.request$.pipe(map(tuiIsFalsy));\n\n /**\n * Сигнал события аутентификации после успешной регистрации.\n */\n @Output()\n public readonly successAuth: Observable<boolean> = this.authService.getAuthChange().pipe(filter((state) => state));\n\n /**\n * Список этапов регистрации.\n */\n readonly steps: string[] = ['Информация о клиенте', 'Общая информация контрагента', 'Контакты пользователя', 'Банковские реквизиты пользователя'];\n\n /**\n * Инициализирует экземпляр класса {@link ScSignUpFormComponent}.\n *\n * @param userService Сервис данных о пользователе.\n * @param authService Сервис аутентификации.\n * @param referencesService Сервис справочников.\n * @param convertersService Сервис конвертации данных.\n * @param userMetrikaService Сервис для сбора метрик о действиях пользователей.\n */\n public constructor(\n private readonly userService: ScUserService,\n private readonly authService: ScAuthService,\n private readonly referencesService: ScReferencesService,\n private readonly convertersService: ScConvertersService,\n private readonly userMetrikaService: ScUserMetrikaService\n ) {\n this.opfControl.valueChanges.pipe(distinctUntilChanged(), takeUntilDestroyed()).subscribe(() => {\n this.form.patchValue({ name: null });\n this.form.get('contragent')?.reset();\n });\n }\n\n /**\n * Список групп полей банковских реквизитов.\n */\n public get bankAccounts(): FormArray<ReturnType<ScSignUpFormComponent['createBankAccountGroup']>> {\n return this.form.controls.contragent.get('bankAccounts') as FormArray;\n }\n\n /**\n * Список групп полей контактных лиц.\n */\n public get contacts(): FormArray<ReturnType<ScSignUpFormComponent['createContactGroup']>> {\n return this.form.controls.contragent.get('contacts') as FormArray;\n }\n\n /** @inheritDoc */\n public ngOnInit(): void {\n (this.form as FormGroup).removeControl('contragent');\n this.userMetrikaService.emitUserMetrikaEvent({\n target: ScUserMetrikaGoalsEnum.signUpShow,\n });\n }\n\n /**\n * Проверяет, может ли пользователь перейти к следующему шагу регистрации.\n * При проверке каждого этапа регистрации последовательно проверяется корректность заполнения данных на предыдущих этапах.\n *\n * @param index Индекс этапа для которого нужно проверить валидность.\n * @returns Выводит значение `boolean` на основании {@link index}.\n */\n public canNextStep(index: number): boolean {\n const { controls } = this.form;\n\n // Проверяем валидность данных пользователя.\n for (const key in controls) {\n if (Object.prototype.hasOwnProperty.call(controls, key) && key !== 'contragent' && controls[key as keyof typeof this.form.controls].invalid) {\n return false;\n }\n }\n\n // Для этапа 0 просто возвращаем true, так как данные пользователя проверены.\n if (index === 0) {\n return true;\n }\n\n // Проверяем валидность полей контрагента.\n const contragentControls = controls.contragent.controls;\n\n if (contragentControls) {\n for (const key in contragentControls) {\n if (Object.prototype.hasOwnProperty.call(contragentControls, key)) {\n const control = contragentControls[key];\n if (!Array.isArray(control.value) && control.invalid) {\n return false;\n }\n }\n }\n }\n\n // Для этапа 1 возвращаем true, если все поля контрагента валидны.\n if (index === 1) {\n return true;\n }\n\n // Проверяем список контактов внутри контрагента.\n if (contragentControls['contacts'].invalid) {\n return false;\n }\n\n // Для этапа 2 возвращаем true, если список контактов внутри контрагента валидный.\n if (index === 2) {\n return true;\n }\n\n // Проверяем список банковских реквизитов внутри контрагента.\n return contragentControls['bankAccounts'].valid ?? false;\n }\n\n /**\n * Выполняет навигацию по форме регистрации.\n *\n * @param delta Значение, на которое необходимо выполнить навигацию.\n */\n public navigate(delta: number): void {\n this.stepIndex = (this.stepIndex + delta) % 4;\n }\n\n /**\n * Создаёт базового контрагента для клиента физического лица.\n *\n * @param formValue Значение формы при регистрации\n */\n private createBaseContragent(formValue: ScSignUpFormComponent['form']['value']): void {\n if (this.form.invalid || this.opfControl.value !== 'individual') {\n return;\n }\n\n // eslint-disable-next-line no-param-reassign\n formValue.contragent = {\n name: this.form.controls.name.value,\n opf: 'individual',\n salesDirectionId: 1,\n contacts: [\n {\n name: this.form.controls.name.value,\n phone: this.form.controls.phone.value,\n email: this.form.controls.email.value,\n },\n ],\n };\n }\n\n /**\n * Возвращает {@link Observable} список организационно-правовых форм.\n */\n public getOpf$(): Observable<Array<ScIReferencesTypes<ScOpfList, typeof ScOpfList>>> {\n return this.referencesService.opf$;\n }\n\n /**\n * Возвращает {@link Observable} организационно-правовой формы, соответствующий символьному обозначению (slug) на входе.\n *\n * @param slug Символьное обозначение (slug).\n */\n public getOpfBySlug$(slug: keyof typeof ScOpfList): Observable<ScIReferencesTypes<ScOpfList, typeof ScOpfList> | undefined> {\n return this.referencesService.getOpfBySlug$(slug);\n }\n\n /**\n * Создаёт группу полей банковских реквизитов.\n */\n private createBankAccountGroup(): ScBankAccountFormGroup {\n return new FormGroup({\n bankName: new FormControl<string | null>(null, Validators.required),\n bic: new FormControl<string | null>(null, [Validators.required, Validators.minLength(9), scBicValidator]),\n accountNumber: new FormControl<string | null>(null, [Validators.required, Validators.minLength(20)]),\n correspondentAccount: new FormControl<string | null>(null, [Validators.required, Validators.minLength(20), scCorrespondentAccountValidator]),\n currencyId: new FormControl<number | null>(null, Validators.required),\n });\n }\n\n /**\n * Добавляет Банковские реквизиты.\n */\n public addBankAccountGroup(): void {\n this.bankAccounts.push(this.createBankAccountGroup());\n }\n\n /**\n * Удаляет банковские реквизиты.\n *\n * @param index Индекс банковских реквизитов.\n */\n public removeBankAccountGroup(index: number): void {\n this.bankAccounts.removeAt(index);\n }\n\n /**\n * Создаёт группу полей контактного лица.\n */\n public createContactGroup(): ScContactFormGroup {\n return new FormGroup({\n name: new FormControl<string | null>(null, Validators.required),\n phone: new FormControl<string | null>(null, [Validators.required, Validators.minLength(12)]),\n email: new FormControl<string | null>(null, Validators.email),\n position: new FormControl<string | null>(null, Validators.required),\n });\n }\n\n /**\n * Обработчик выбора адреса доставки.\n *\n * @param suggestion Объект подсказки ареса.\n */\n public onSelectedOrganization(suggestion: ScSuggestion): void {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (this.form.controls.contragent && 'inn' in suggestion && !('bic' in suggestion)) {\n if (suggestion.opf && suggestion.opf.slug !== this.opfControl.value) {\n this.opfControl.patchValue(suggestion.opf.slug as keyof typeof ScOpfList, { emitEvent: false });\n this.form.controls.contragent.patchValue({\n opf: suggestion.opf.slug as keyof typeof ScOpfList,\n });\n }\n\n this.form.controls.contragent.patchValue({\n name: suggestion.name,\n inn: suggestion.inn,\n kpp: suggestion.kpp ?? null,\n okpo: suggestion.okpo ?? null,\n directorName: suggestion.directorName ?? null,\n directorPosition: suggestion.directorPosition ?? null,\n legalAddress: suggestion.legalAddress ?? null,\n postalAddress: suggestion.postalAddress ?? null,\n actualAddress: suggestion.actualAddress ?? null,\n });\n\n this.form.controls.contragent.markAllAsTouched();\n this.form.get(['contragent', 'contacts'])?.markAsUntouched();\n this.form.get(['contragent', 'bankAccounts'])?.markAsUntouched();\n }\n }\n\n /**\n * Добавляет контактное лицо контрагента.\n */\n public addContactGroup(): void {\n this.contacts.push(this.createContactGroup());\n }\n\n /**\n * Удаляет контактное лицо контрагента.\n *\n * @param index Индекс контактного лица.\n */\n public removeContactGroup(index: number): void {\n this.contacts.removeAt(index);\n }\n}\n","<form\n *tuiLet=\"opfControl.value as selectOpf\"\n [formGroup]=\"form\"\n (ngSubmit)=\"onSubmit.next()\"\n class=\"flex flex-col gap-5\"\n>\n <ng-container *tuiLet=\"!!selectOpf && opfListEnum[selectOpf] === opfListEnum.individual as isIndividual\">\n <tui-stepper\n *ngIf=\"!isIndividual && form.controls.contragent\"\n [(activeItemIndex)]=\"stepIndex\"\n >\n <button\n *tuiRepeatTimes=\"let index of 4\"\n [stepState]=\"index && !canNextStep(index) ? 'error' : 'pass'\"\n [attr.disabled]=\"index && !canNextStep(index - 1) ? '' : null\"\n tuiStep\n >\n {{ steps[index] }}\n </button>\n </tui-stepper>\n <tui-elastic-container>\n <div\n [class.!hidden]=\"stepIndex !== 0\"\n class=\"flex flex-col gap-3\"\n >\n <label tuiLabel>Тип клиента\n <tui-select\n [formControl]=\"opfControl\"\n [valueContent]=\"opfContent\"\n >\n Тип клиента\n <tui-data-list *tuiDataList>\n <button\n *ngFor=\"let item of getOpf$() | async; let index = index\"\n tuiOption\n [value]=\"item.slug\"\n >\n {{ item.name }}\n </button>\n </tui-data-list>\n </tui-select>\n <ng-template\n #opfContent\n let-data\n >\n <div>{{ (getOpfBySlug$(data) | async)?.name }}</div>\n </ng-template>\n </label>\n <label tuiLabel>{{ isIndividual ? 'Ф.И.О.' : 'Название организации или ИП' }}\n <tui-input formControlName=\"name\">\n {{ isIndividual ? 'Ф.И.О.' : 'Название организации или ИП' }}\n <ng-container *ngIf=\"!isIndividual\">\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.organization\"\n (selectedClick)=\"onSelectedOrganization($event)\"\n ></sc-suggestion-field>\n </ng-container>\n <input\n tuiTextfieldLegacy\n autocomplete=\"new-password\"\n />\n </tui-input>\n <tui-error\n formControlName=\"name\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n\n <div class=\"flex flex-col items-start gap-5 sm:flex-row\">\n <sc-verification-phone-check-form\n [shouldBeBusy]=\"false\"\n class=\"w-full\"\n ></sc-verification-phone-check-form>\n <label\n tuiLabel\n class=\"w-full\"\n >Адрес электронной почты\n <tui-input formControlName=\"email\">\n Адрес электронной почты\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.email\"\n ></sc-suggestion-field>\n </tui-input>\n <tui-error\n formControlName=\"email\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n </div>\n\n <sc-addresses-selection-field></sc-addresses-selection-field>\n\n <div class=\"flex flex-col items-start gap-5 sm:flex-row\">\n <label\n tuiLabel\n class=\"w-full\"\n >Пароль\n <tui-input-password formControlName=\"password\">\n Пароль\n <input\n tuiTextfieldLegacy\n autocomplete=\"new-password\"\n />\n </tui-input-password>\n <tui-error\n formControlName=\"password\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <label\n tuiLabel\n class=\"w-full\"\n >Повтор пароля\n <tui-input-password formControlName=\"passwordConfirm\">\n Повтор пароля\n <input\n tuiTextfieldLegacy\n autocomplete=\"new-password\"\n />\n </tui-input-password>\n <tui-error\n formControlName=\"passwordConfirm\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n </div>\n <tui-error\n [error]=\"[] | tuiFieldError | async\"\n class=\"self-center\"\n ></tui-error>\n\n <div class=\"flex flex-col items-start gap-5 sm:flex-row\">\n <label tuiLabel> <input tuiCheckbox type=\"checkbox\"\n formControlName=\"getNews\"\n class=\"w-full\"\n >\n Я хочу получать рассылку Снабцентр о скидках и новостях по электронной почте.\n </label>\n <label tuiLabel> <input tuiCheckbox type=\"checkbox\"\n required=\"true\"\n formControlName=\"acceptRules\"\n class=\"w-full\"\n >\n Регистрируясь на сайте, я соглашаюсь с\n <a\n tuiLink\n [pseudo]=\"true\"\n >Договором оферты</a\n >.\n <tui-error\n formControlName=\"acceptRules\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n </div>\n </div>\n <ng-container *ngIf=\"!isIndividual\">\n <sc-new-contragent-form\n [opfControl]=\"opfControl\"\n [class.!hidden]=\"stepIndex !== 1\"\n ></sc-new-contragent-form>\n\n <div [class.!hidden]=\"stepIndex !== 2\">\n <div\n *ngIf=\"contacts\"\n class=\"flex flex-col gap-5 pb-1\"\n >\n <p class=\"text-lg font-bold\">Контакты</p>\n <div\n *ngFor=\"let contact of contacts.controls; let index = index; let count = count; let last = last\"\n class=\"flex flex-col gap-3\"\n >\n <div class=\"flex h-10 items-center justify-between\">\n <p class=\"font-bold\">Контактное лицо №{{ index + 1 }}:</p>\n <button\n *ngIf=\"count - 1\"\n tuiIconButton\n appearance=\"secondary\"\n (click)=\"removeContactGroup(index)\"\n iconStart=\"@tui.trash-2\"\n ></button>\n </div>\n <sc-new-contact-form [form]=\"contact\"></sc-new-contact-form>\n <hr\n *ngIf=\"!last\"\n class=\"h-px w-full bg-tui-base-04\"\n />\n </div>\n <button\n tuiButton\n iconStart=\"@tui.plus\"\n appearance=\"secondary\"\n (click)=\"addContactGroup()\"\n type=\"button\"\n class=\"self-center\"\n >\n Добавить контакт\n </button>\n </div>\n </div>\n\n <div [class.!hidden]=\"stepIndex !== 3\">\n <div\n *ngIf=\"bankAccounts\"\n class=\"flex flex-col gap-5 pb-1\"\n >\n <p class=\"text-lg font-bold\">Банковские реквизиты</p>\n <div\n *ngFor=\"let bankAccount of bankAccounts.controls; let index = index; let count = count; let last = last\"\n class=\"flex flex-col gap-3\"\n >\n <div class=\"flex h-12 items-center justify-between\">\n <p class=\"font-bold\">Банковские реквизиты №{{ index + 1 }}:</p>\n <button\n *ngIf=\"count - 1\"\n tuiIconButton\n appearance=\"secondary\"\n (click)=\"removeBankAccountGroup(index)\"\n iconStart=\"@tui.trash-2\"\n ></button>\n </div>\n <sc-new-contragent-bank-account-form [form]=\"bankAccount\"></sc-new-contragent-bank-account-form>\n <hr\n *ngIf=\"!last\"\n class=\"h-px w-full bg-tui-base-04\"\n />\n </div>\n <button\n tuiButton\n iconStart=\"@tui.plus\"\n appearance=\"secondary\"\n (click)=\"addBankAccountGroup()\"\n type=\"button\"\n class=\"self-center\"\n >\n Добавить банковские реквизиты\n </button>\n </div>\n </div>\n </ng-container>\n </tui-elastic-container>\n <div class=\"flex justify-center gap-2\">\n <button\n *ngIf=\"stepIndex > 0\"\n tuiButton\n appearance=\"secondary\"\n type=\"button\"\n (click)=\"navigate(-1)\"\n >\n Назад\n </button>\n <button\n *ngIf=\"isIndividual || (stepIndex === 2 && !form.controls.contragent.controls['bankAccounts']) || stepIndex === 3; else nextIndexBtn\"\n tuiButton\n [disabled]=\"form.invalid\"\n [loading]=\"!!(loading$ | async)\"\n class=\"self-center\"\n >\n Зарегистрироваться\n </button>\n <ng-template #nextIndexBtn>\n <button\n tuiButton\n type=\"button\"\n [disabled]=\"!canNextStep(stepIndex)\"\n (click)=\"navigate(1)\"\n >\n Далее\n </button>\n </ng-template>\n </div>\n </ng-container>\n</form>\n","import { Directive } from '@angular/core';\nimport { PolymorpheusTemplate } from '@taiga-ui/polymorpheus';\n\n/**\n * Директива содержимого компонента, позволяющего отображать и скрывать содержимое в разделах.\n */\n@Directive({\n selector: 'ng-template[scAccordionContent]',\n})\nexport class ScAccordionContentDirective extends PolymorpheusTemplate<Record<string, unknown>> {}\n","import { ChangeDetectionStrategy, Component, ContentChild, EventEmitter, HostBinding, Input, Output, ViewChild } from '@angular/core';\nimport { TuiSizeS } from '@taiga-ui/core';\nimport { TuiAccordionItem } from '@taiga-ui/kit';\n\nimport { ScAccordionContentDirective } from './sc-accordion-content.directive';\n\n/**\n * Компонент, позволяющий отображать и скрывать содержимое в разделах.\n */\n@Component({\n selector: 'sc-accordion',\n templateUrl: './sc-accordion.component.html',\n styleUrls: ['./sc-accordion.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScAccordionComponent {\n /**\n * Состояние отображения кнопки добавления.\n */\n @Input()\n @HostBinding('class._has-add-button')\n public showAddButton = true;\n\n /**\n * Состояние отображения кнопки удаления.\n */\n @Input()\n @HostBinding('class._has-delete-button')\n public showDeleteButton: boolean = false;\n\n /**\n * Состояние отображения стрелки.\n */\n @Input()\n @HostBinding('class._has-arrow')\n public showArrow: boolean = true;\n\n /**\n * Состояние открытия содержимого компонента.\n */\n @Input()\n public open: boolean = false;\n\n /**\n * Размер элементов {@link TuiAccordionItemComponent}.\n */\n @Input()\n @HostBinding('attr.data-size')\n public size: TuiSizeS = 's';\n\n /**\n * Дочерний элемент контента.\n */\n @ContentChild(ScAccordionContentDirective)\n protected readonly content?: ScAccordionContentDirective;\n\n /**\n * Ссылка на шаблон превью-просмотра в разметке.\n */\n @ViewChild(TuiAccordionItem)\n public readonly accordion?: TuiAccordionItem;\n\n /**\n * Событие нажатия на кнопку добавления.\n */\n @Output()\n public addButtonClick: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на кнопку удаления.\n */\n @Output()\n public deleteButtonClick: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Закрывает акордион.\n */\n public close(): void {\n this.accordion?.close();\n }\n}\n","<tui-accordion [rounded]=\"false\">\n <tui-accordion-item\n #accordion\n [size]=\"size\"\n [borders]=\"null\"\n [showArrow]=\"showArrow\"\n [open]=\"open\"\n >\n <div class=\"flex grow justify-between\">\n <div class=\"self-center font-bold\">\n <ng-content></ng-content>\n </div>\n <div\n *ngIf=\"showAddButton || showDeleteButton\"\n class=\"flex\"\n >\n <ng-container *ngIf=\"showDeleteButton\">\n <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n iconStart=\"@tui.trash-2\"\n appearance=\"secondary\"\n (click)=\"$event.stopPropagation(); deleteButtonClick.emit()\"\n ></button>\n </ng-container>\n <ng-container *ngIf=\"showAddButton\">\n <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n iconStart=\"@tui.plus\"\n appearance=\"secondary\"\n (click)=\"$event.stopPropagation(); addButtonClick.emit()\"\n ></button>\n </ng-container>\n </div>\n </div>\n <ng-template tuiAccordionItemContent>\n <tui-elastic-container *ngIf=\"content\">\n <ng-container *polymorpheusOutlet=\"content as text\">\n {{ text }}\n </ng-container>\n </tui-elastic-container>\n </ng-template>\n </tui-accordion-item>\n</tui-accordion>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TuiButton } from '@taiga-ui/core';\nimport { TuiAccordion, TuiElasticContainer } from '@taiga-ui/kit';\nimport { PolymorpheusOutlet, PolymorpheusTemplate } from '@taiga-ui/polymorpheus';\n\nimport { ScAccordionComponent } from './sc-accordion.component';\nimport { ScAccordionContentDirective } from './sc-accordion-content.directive';\n\n/**\n * Модуль для отображение контента разделами, с возможностью скрывать и отображать содержимое.\n */\n@NgModule({\n declarations: [ScAccordionComponent, ScAccordionContentDirective],\n imports: [CommonModule, PolymorpheusTemplate, PolymorpheusOutlet, TuiButton, ...TuiAccordion, TuiElasticContainer],\n exports: [ScAccordionComponent, ScAccordionContentDirective],\n})\nexport class ScAccordionModule {}\n","/* eslint-disable lodash/prefer-lodash-method */\n\nimport { ContentChildren, Directive, HostListener, QueryList } from '@angular/core';\nimport { AbstractTuiControl, TuiFocusableElementAccessor } from '@taiga-ui/legacy';\n\n/**\n * Директива для перехода по нажатию клавиши enter на следующее поле ввода формы.\n */\n@Directive({\n selector: 'form[ScNextInputFocus]',\n})\nexport class ScNextInputFocusDirective {\n /**\n * Все поля ввода внутри формы, на которой применяется данная директива.\n */\n @ContentChildren(AbstractTuiControl, { descendants: true })\n private focusableElements: QueryList<TuiFocusableElementAccessor>;\n\n /**\n * Слушатель нажатия на клавишу enter. Предотвращает событие submit, выполняет смену фокуса на следующее поле ввода TuiFocusableElementAccessor.\n *\n * @param event Объект события нажатия на клавишу.\n */\n @HostListener('keydown', ['$event'])\n public onFormKeyDownEnter(event: KeyboardEvent): void {\n if (event.code !== 'Enter' && event.key !== 'Enter') {\n return;\n }\n\n event.preventDefault();\n\n const elements: TuiFocusableElementAccessor[] = this.focusableElements.toArray();\n\n const focusedIndex = elements.findIndex((control) => control.focused);\n\n if (focusedIndex !== -1) {\n const nextElement = elements[focusedIndex + 1]?.nativeFocusableElement;\n\n if (nextElement) {\n nextElement.focus();\n }\n }\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { ScNextInputFocusDirective } from './sc-next-input-focus.directive';\n\n/**\n * Модуль директивы для перехода по нажатию клавиши enter на следующее поле ввода формы.\n */\n@NgModule({\n declarations: [ScNextInputFocusDirective],\n exports: [ScNextInputFocusDirective],\n})\nexport class ScNextInputFocusModule {}\n","/* eslint-disable no-underscore-dangle */\n\nimport { Directive, EventEmitter, inject, Input, Output } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { SC_PATH_IMAGE_NOT_FOUND, ScAuthService, ScCartItem, ScImageHelper, ScIWarehouse, ScProduct, ScUnitsHelper, ScWarehouseService, SEARCH_TERM } from '@snabcentr/client-core';\nimport { Observable } from 'rxjs';\n\n/**\n * Директива абстрактной карточки товара.\n */\n@Directive() // Абстрактный класс имеет декоратор @Directive() для внедрения его в DI, с целью получения функционала inject внутри абстракции, и возможности получать потомков через DI или через декоратор @ViewChild.\nexport class AbstractScPriceCard {\n /**\n * Позиция товара в корзине.\n *\n * TODO: Сделать товар в корзине наблюдаемой переменной после реализации TASK:[#7144].\n */\n public get cartItem(): ScCartItem | undefined {\n return this._cartItem;\n }\n\n /**\n * Позиция товара в корзине\n *\n * TODO: Сделать товар в корзине наблюдаемой переменной после реализации TASK:[#7144].\n */\n @Input()\n public set cartItem(value: ScCartItem | undefined) {\n this._cartItem = value;\n\n this.quantityControl.patchValue(this._cartItem?.quantity ?? null, { emitEvent: false });\n this.quantityShowLoader = false;\n }\n\n /**\n * {@link FormControl} поля ввода количества товара в корзине.\n */\n public quantityControl: FormControl<number | null> = new FormControl<number | null>(3, { updateOn: 'blur' });\n\n /**\n * Признак, что необходимо отобразить лоадер для поля ввода количества товара.\n */\n public quantityShowLoader: boolean = false;\n\n /**\n * Признак, что необходимо отобразить лоадер для кнопки избранных товаров и категорий.\n */\n public favoriteShowLoader: boolean = false;\n\n /**\n * {@link Observable} изменения выбранного склада.\n */\n public readonly warehouseSelect$: Observable<ScIWarehouse | null> = inject(ScWarehouseService).getWarehouseSelectChange$();\n\n /**\n * {@link Observable} изменения статуса авторизации.\n */\n public readonly authStatus$: Observable<boolean> = inject(ScAuthService).getAuthChange();\n\n /**\n * {@link Observable} поиска терма.\n */\n public readonly search$ = inject(SEARCH_TERM);\n\n /**\n * Объект товара.\n */\n @Input()\n public product?: ScProduct;\n\n /**\n * Признак, что необходимо отобразить поле ввода количества товара.\n */\n @Input()\n public showQuantityControl: boolean = false;\n\n /**\n * Событие нажатия на кнопку \"В избранное\".\n */\n @Output()\n public readonly clickFavoriteEvent: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на кнопку \"В корзину\".\n */\n @Output()\n public readonly clickAddToCartEvent: EventEmitter<ScProduct> = new EventEmitter<ScProduct>();\n\n /**\n * Событие нажатия на кнопку очистки количества товара.\n */\n @Output()\n public readonly clickClearEvent: EventEmitter<ScCartItem> = new EventEmitter<ScCartItem>();\n\n /**\n * Событие нажатия на карточку товара.\n */\n @Output()\n public readonly clickCardEvent: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на историю цен.\n */\n @Output()\n public readonly clickPriceHistoryEvent: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * {@link Observable} изменения количества товара в корзине.\n */\n @Output()\n public readonly quantityValueChanges: Observable<number | null> = this.quantityControl.valueChanges;\n\n /**\n * Экземпляр класса-помощника для работы со значениями единиц измерения товара.\n */\n protected readonly unitsHelper: ScUnitsHelper = inject(ScUnitsHelper);\n\n /**\n * Хелпер для работы с изображениями товара.\n */\n private readonly imageHelper = inject(ScImageHelper);\n\n /**\n * Путь до изображения 'Товар не найден'.\n */\n private readonly pathImageNotFound = inject(SC_PATH_IMAGE_NOT_FOUND);\n\n /**\n * Позиция товара в корзине.\n *\n * TODO: Сделать товар в корзине наблюдаемой переменной после реализации TASK:[#7144].\n */\n private _cartItem?: ScCartItem | undefined;\n\n /**\n * Признак, что нужно показать скелетон.\n */\n public get skeletonVisible(): boolean {\n return !this.product;\n }\n\n /**\n * Возвращает ссылку на preview-изображение карточки товара.\n */\n public getCardImagePreview(): string {\n return this.product ? this.imageHelper.getImagePreview(this.product) : this.pathImageNotFound;\n }\n}\n","import { Directive, ElementRef, inject, Input, OnChanges, Renderer2, SimpleChanges } from '@angular/core';\nimport { ScPhoneService } from '@snabcentr/client-core';\n\n/**\n * Директива, которая управляет свойствами ссылки номера телефона для валидации значения номера телефона.\n */\n@Directive({\n standalone: true,\n selector: '[scTelLink]',\n})\nexport class ScTelLinkDirective implements OnChanges {\n /**\n * Экземпляр базового класса для реализации пользовательского рендеринга.\n */\n private readonly renderer: Renderer2 = inject(Renderer2);\n\n /**\n * Ссылка на HTML элемент тега `<a>`.\n */\n private elementReference: ElementRef<HTMLAnchorElement> = inject<ElementRef<HTMLAnchorElement>>(ElementRef);\n\n /**\n * Номер телефона, который будет проверен на валидность.\n */\n @Input() scTelLink: string = '';\n\n /** @inheritDoc */\n public ngOnChanges(changes: SimpleChanges): void {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (changes['scTelLink']) {\n this.updateLinkState();\n }\n }\n\n /**\n * Обновляет состояние ссылки на основе валидности номера телефона.\n */\n private updateLinkState(): void {\n if (ScPhoneService.isValidPhoneNumber(this.scTelLink)) {\n // Если номер валиден, активируем ссылку\n this.renderer.removeAttribute(this.elementReference.nativeElement, 'aria-disabled');\n this.renderer.removeClass(this.elementReference.nativeElement, 'disabled');\n this.renderer.setAttribute(this.elementReference.nativeElement, 'href', `tel:${ScPhoneService.formatPhoneNumber(this.scTelLink)}`);\n } else {\n // Если номер невалиден, отключаем ссылку\n this.renderer.setAttribute(this.elementReference.nativeElement, 'aria-disabled', 'true');\n this.renderer.addClass(this.elementReference.nativeElement, 'disabled');\n this.renderer.removeAttribute(this.elementReference.nativeElement, 'href');\n }\n }\n}\n","/* eslint-disable class-methods-use-this */\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { ScPhoneService } from '@snabcentr/client-core';\n\n/**\n * Пайп для форматирования номера телефона.\n *\n * Если переданный номер телефона валиден, он будет отформатирован с использованием метода `formatPhoneNumber` сервиса `ScPhoneService`.\n * Если номер невалиден, возвращается исходное значение.\n */\n@Pipe({\n standalone: true,\n name: 'scFormatePhone',\n})\nexport class ScFormatePhonePipe implements PipeTransform {\n /**\n * Преобразует строковое значение номера телефона.\n *\n * @param value Строка, содержащая номер телефона.\n * @returns Отформатированный номер телефона, если он валиден, или исходное значение, если он невалиден.\n */\n public transform(value: string): string {\n if (ScPhoneService.isValidPhoneNumber(value)) {\n return ScPhoneService.formatPhoneNumber(value);\n }\n return value; // Возвращаем оригинальный номер, если он невалиден\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { ScFormatePhonePipe } from '../../pipes';\nimport { ScTelLinkDirective } from './sc-tel-link.directive';\n\n/**\n * Модуль валидации значения номера телефона.\n */\n@NgModule({\n imports: [ScFormatePhonePipe, ScTelLinkDirective],\n exports: [ScFormatePhonePipe, ScTelLinkDirective],\n})\nexport class ScTelLinkModule {}\n","import { ChangeDetectionStrategy, Component, HostBinding, Inject } from '@angular/core';\nimport { IS_RUNNING_ON_TERMINAL, ScITerminalProvider, ScVCardService } from '@snabcentr/client-core';\nimport { TuiDialogContext } from '@taiga-ui/core';\nimport { POLYMORPHEUS_CONTEXT } from '@taiga-ui/polymorpheus';\n\n/**\n * Компонент QR кода.\n */\n@Component({\n selector: 'sc-qrcode-dialog',\n templateUrl: './sc-qrcode-dialog.component.html',\n styleUrls: ['./sc-qrcode-dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScQRCodeDialogComponent {\n /**\n * Свойство, от которого зависит наличие атрибута `data-terminal-view` у `:host` компонента.\n */\n @HostBinding('attr.data-terminal-view')\n private terminalView = this.terminal.isRunningOnTerminal;\n\n /**\n * Инициализирует экземпляр класса {@link ScQRCodeDialogComponent}.\n *\n * @param vCardService Сервис для работы с vCard.\n * @param context Контекст диалогового окна, в котором открыт компонент.\n * @param terminal Провайдер данных о терминале.\n */\n public constructor(\n private readonly vCardService: ScVCardService,\n @Inject(POLYMORPHEUS_CONTEXT)\n public readonly context: TuiDialogContext<void, { qrdata: string }>,\n @Inject(IS_RUNNING_ON_TERMINAL)\n public readonly terminal: ScITerminalProvider\n ) {}\n\n /**\n * Выполняет скачивание генерируемого vCard файла контакта.\n */\n public downloadVCard(): void {\n if (!this.terminal.isRunningOnTerminal && this.isVCardData()) {\n this.vCardService.downloadVCard(this.context.data.qrdata);\n }\n }\n\n /**\n * Проверяет что в диалоговое окно были переданы данные в формате `vCard`.\n */\n public isVCardData(): boolean {\n // eslint-disable-next-line unicorn/better-regex\n return /BEGIN:VCARD[\\s\\S]*END:VCARD/i.test(this.context.data.qrdata);\n }\n}\n","<p class=\"-mt-2 mb-3 text-tui-text-02\">{{ !terminal.isRunningOnTerminal && this.isVCardData() ? 'Нажмите или о' : 'О' }}тсканируйте QR-код вашим мобильным устройством.</p>\n<qrcode\n (click)=\"downloadVCard()\"\n [margin]=\"0\"\n [qrdata]=\"this.context.data.qrdata\"\n [width]=\"800\"\n elementType=\"img\"\n class=\"cursor-pointer\"\n></qrcode>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TuiButton, TuiDialog } from '@taiga-ui/core';\nimport { TuiPreview } from '@taiga-ui/kit';\nimport { QRCodeModule as AngularxQRCodeModule } from 'angularx-qrcode';\n\nimport { ScQRCodeDialogComponent } from './qrcode-dialog/sc-qrcode-dialog.component';\n\n/**\n * Модуль QR кода.\n */\n@NgModule({\n declarations: [ScQRCodeDialogComponent],\n imports: [CommonModule, AngularxQRCodeModule, TuiButton, TuiDialog, ...TuiPreview],\n exports: [ScQRCodeDialogComponent],\n})\nexport class ScQRCodeModule {}\n","/* eslint-disable lodash/prefer-lodash-method */\n\nimport { Directive, ElementRef, HostListener, inject } from '@angular/core';\nimport { IS_RUNNING_ON_TERMINAL, ScITerminalProvider } from '@snabcentr/client-core';\nimport { TuiDialogService } from '@taiga-ui/core';\nimport { PolymorpheusComponent } from '@taiga-ui/polymorpheus';\n\nimport { ScQRCodeDialogComponent } from '../../qrcode';\n\n/**\n * Директива открытия диалогового окна с QRCode для ссылок `tel:` и `mailto:` на терминале.\n */\n@Directive({\n standalone: true,\n selector: 'a[href]',\n})\nexport class ScTerminalLinkDirective {\n /**\n * Ссылка на HTML элемент тега `<a>`.\n */\n private elementReference: ElementRef<HTMLAnchorElement> = inject<ElementRef<HTMLAnchorElement>>(ElementRef);\n\n /**\n * Сервис для работы с диалоговыми окнами TuiDialog.\n */\n private dialog: TuiDialogService = inject<TuiDialogService>(TuiDialogService);\n\n /**\n * Провайдер данных о терминале.\n */\n private terminal: ScITerminalProvider = inject<ScITerminalProvider>(IS_RUNNING_ON_TERMINAL);\n\n /**\n * Обработчик клика по ссылке.\n *\n * @param event Событие клика.\n */\n @HostListener('click', ['$event'])\n public onClick(event: Event): void {\n if (this.terminal.isRunningOnTerminal && this.isLinkTelOrMail()) {\n // Отключение базового события для терминала.\n event.preventDefault();\n this.openQRCodeDialog();\n }\n }\n\n /**\n * Открывает диалоговое окно с QR-кодом.\n */\n public openQRCodeDialog(): void {\n this.dialog\n .open(new PolymorpheusComponent(ScQRCodeDialogComponent), {\n size: 's',\n // Передаём ссылку формата `mailto:example@example.com` `tel:+70000000000` вместо vCard, так как для vCard данных недостаточно.\n data: { qrdata: this.elementReference.nativeElement.href },\n })\n .subscribe();\n }\n\n /**\n * Проверяет ведёт ли ссылка на телефон или адрес электронной почты.\n */\n private isLinkTelOrMail(): boolean {\n return this.elementReference.nativeElement.href.startsWith('tel:') || this.elementReference.nativeElement.href.startsWith('mailto:');\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MaskitoDirective } from '@maskito/angular';\nimport { TuiLet } from '@taiga-ui/cdk';\nimport { TuiButton, TuiDataList, TuiError, TuiLabel, TuiLoader } from '@taiga-ui/core';\nimport { TuiDataListWrapper, TuiFieldErrorPipe, TuiFilterByInputPipe, TuiStringifyContentPipe } from '@taiga-ui/kit';\nimport { TuiComboBoxModule, TuiInputModule, TuiInputPhoneModule, TuiTextfieldControllerModule } from '@taiga-ui/legacy';\n\nimport { ScAddressesSelectionFieldComponent } from './addresses-selection-field/sc-addresses-selection-field.component';\nimport { ScSuggestionFieldComponent } from './suggestion-field/sc-suggestion-field.component';\n\n/**\n * Модуль полей ввода.\n */\n@NgModule({\n declarations: [ScAddressesSelectionFieldComponent, ScSuggestionFieldComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n TuiInputModule,\n TuiTextfieldControllerModule,\n TuiLabel,\n TuiLet,\n TuiFieldErrorPipe,\n TuiError,\n ...TuiDataList,\n TuiLoader,\n TuiComboBoxModule,\n ...TuiDataListWrapper,\n TuiFilterByInputPipe,\n TuiStringifyContentPipe,\n TuiInputPhoneModule,\n TuiButton,\n MaskitoDirective,\n ],\n exports: [ScAddressesSelectionFieldComponent, ScSuggestionFieldComponent],\n})\nexport class ScFormFieldsModule {}\n","/* eslint-disable no-restricted-syntax,@typescript-eslint/unbound-method */\n\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { AfterViewInit, ChangeDetectionStrategy, Component, Inject } from '@angular/core';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport {\n ScContactsService,\n ScConvertersService,\n ScIBankAccount,\n ScIContactBase,\n ScIContactOnDataCreate,\n ScIContactWithRelations,\n ScUserMetrikaGoalsEnum,\n ScUserMetrikaService,\n} from '@snabcentr/client-core';\nimport { tuiIsFalsy, tuiMarkControlAsTouchedAndValidate } from '@taiga-ui/cdk';\nimport { TuiDialogContext } from '@taiga-ui/core';\nimport { POLYMORPHEUS_CONTEXT } from '@taiga-ui/polymorpheus';\nimport { catchError, filter, map, Observable, of, share, startWith, Subject, switchMap, tap } from 'rxjs';\n\nimport { ApiErrorResponse } from '../../auth/interfaces/api-error-response';\n\n/**\n * Компонент формы создания нового контактного лица.\n */\n@Component({\n selector: 'sc-add-contact-dialog',\n templateUrl: './sc-add-contact-dialog.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScAddContactDialogComponent implements AfterViewInit {\n /**\n * Группа с полями контактного лица.\n */\n public form = new FormGroup<{\n name: FormControl<string | null>;\n phone: FormControl<string | null>;\n email: FormControl<string | null>;\n position: FormControl<string | null>;\n }>({\n name: new FormControl<string | null>(null, Validators.required),\n phone: new FormControl<string | null>(null, [Validators.required, Validators.minLength(12)]),\n email: new FormControl<string | null>(null, Validators.email),\n position: new FormControl<string | null>(null, Validators.required),\n });\n\n /**\n * {@link Subject} события отправки формы.\n */\n public readonly onSubmit: Subject<void> = new Subject<void>();\n\n /**\n * {@link Observable} запроса добавления контактного лица.\n */\n private readonly request$ = this.onSubmit.pipe(\n map(() => this.form.value),\n filter((value): value is ScIContactOnDataCreate => this.form.valid),\n map((value) => this.convertersService.removeNull<ScIContactOnDataCreate>({ ...value, ...this.context.data })),\n switchMap((data) => {\n return this.contactsService.createContact$(data).pipe(\n tap((contact) => {\n this.context.completeWith(contact);\n }),\n catchError((error: unknown) => {\n tuiMarkControlAsTouchedAndValidate(this.form);\n\n if (error instanceof HttpErrorResponse) {\n const { errors, message } = error.error as ApiErrorResponse;\n\n for (const key in errors) {\n if (Object.hasOwn(errors, key)) {\n this.form.get(key)?.setErrors({ serverResponse: errors[key] });\n }\n }\n\n if (!errors && message) {\n this.form.setErrors({ serverResponse: [message] });\n }\n }\n return of({} as ScIBankAccount);\n }),\n startWith(null)\n );\n }),\n share()\n );\n\n /**\n * {@link Observable} изменения состояния загрузки данных аутентификации по номеру телефона.\n */\n public readonly loading$: Observable<boolean> = this.request$.pipe(map(tuiIsFalsy));\n\n /**\n * Инициализирует экземпляр класса {@link ScAddContactDialogComponent}.\n *\n * @param contactsService Сервис для работы с контактными лицами.\n * @param convertersService Сервис конвертации данных.\n * @param userMetrikaService Сервис для сбора метрик о действиях пользователей.\n * @param context Контекст диалогового окна, в котором открыт компонент.\n */\n public constructor(\n private readonly contactsService: ScContactsService,\n public readonly convertersService: ScConvertersService,\n private readonly userMetrikaService: ScUserMetrikaService,\n @Inject(POLYMORPHEUS_CONTEXT)\n public readonly context: TuiDialogContext<ScIContactWithRelations, Omit<ScIContactOnDataCreate, keyof ScIContactBase>>\n ) {}\n\n /** @inheritdoc */\n public ngAfterViewInit(): void {\n this.userMetrikaService.emitUserMetrikaEvent({\n target: ScUserMetrikaGoalsEnum.userProfileContactAddShow,\n });\n }\n}\n","<form\n [formGroup]=\"form\"\n (ngSubmit)=\"onSubmit.next()\"\n class=\"flex flex-col gap-3\"\n>\n <sc-new-contact-form [form]=\"form\"></sc-new-contact-form>\n <div class=\"flex justify-center gap-4\">\n <button\n tuiButton\n (click)=\"context.$implicit.complete()\"\n type=\"button\"\n iconStart=\"@tui.x\"\n appearance=\"secondary\"\n >\n Отмена\n </button>\n <button\n tuiButton\n [disabled]=\"form.invalid\"\n [loading]=\"!!(loading$ | async)\"\n type=\"submit\"\n iconStart=\"@tui.save\"\n >\n Сохранить\n </button>\n </div>\n</form>\n","import { Component, ChangeDetectionStrategy, Output, EventEmitter, Input } from '@angular/core';\nimport { ScIContact } from '@snabcentr/client-core';\nimport { Observable } from 'rxjs';\n\n/**\n * Компонент контактного лица в списке.\n */\n@Component({\n selector: 'sc-contacts-accordion',\n templateUrl: './sc-contacts-accordion.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScContactsAccordionComponent {\n /**\n * Контактные лица.\n */\n @Input()\n public contacts$: Observable<ScIContact[] | null>;\n\n /**\n * Событие нажатия на кнопку добавления контактного лица.\n */\n @Output()\n public addContactClick: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на кнопку удаления контактного лица.\n */\n @Output()\n public deleteButtonClick: EventEmitter<ScIContact> = new EventEmitter<ScIContact>();\n}\n","<sc-accordion (addButtonClick)=\"addContactClick.emit()\">\n Контакты\n <ng-template scAccordionContent>\n <tui-loader\n *tuiLet=\"contacts$ | async as contacts\"\n [overlay]=\"true\"\n [showLoader]=\"contacts === null\"\n >\n <div class=\"flex flex-col gap-2\">\n <ng-container *ngIf=\"!contacts || contacts.length; else contactsNotExist\">\n <div\n *ngFor=\"let contact of contacts\"\n class=\"flex gap-2 border-b border-tui-base-03\"\n >\n <div class=\"flex grow flex-col gap-2\">\n {{ contact.name }}\n <a\n tuiLink\n [scTelLink]=\"contact.phone\"\n iconStart=\"@tui.phone\"\n \n [pseudo]=\"true\"\n href=\"tel:{{ contact.phone | scFormatePhone }}\"\n >{{ contact.phone | scFormatePhone }}</a\n >\n <a\n tuiLink\n iconStart=\"@tui.mail\"\n \n [pseudo]=\"true\"\n href=\"mailto:{{ contact.email }}\"\n >\n {{ contact.email }}\n </a>\n </div>\n <!-- Функционал удаления временно не доступен пользователю. -->\n <!-- <div class=\"flex flex-col md:flex-row gap-1\">\n <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n icon=\"@tui.trash-2\"\n appearance=\"flat\"\n (click)=\"$event.stopPropagation(); deleteButtonClick.emit(contact)\"\n ></button>\n </div> -->\n </div>\n </ng-container>\n\n <ng-template #contactsNotExist>\n <tui-notification size=\"l\"><div>\n <div class=\"flex flex-wrap gap-2 font-medium\">Контакты не указаны.</div>\n </div></tui-notification>\n </ng-template>\n </div>\n </tui-loader>\n </ng-template>\n</sc-accordion>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MaskitoDirective } from '@maskito/angular';\nimport { TuiLet } from '@taiga-ui/cdk';\nimport { TuiButton, TuiDataList, TuiError, TuiLabel, TuiLink, TuiLoader, TuiNotification } from '@taiga-ui/core';\nimport { TuiButtonLoading, TuiDataListWrapper, TuiFieldErrorPipe } from '@taiga-ui/kit';\nimport { TuiInputModule, TuiInputPhoneModule, TuiSelectModule } from '@taiga-ui/legacy';\n\nimport { ScAccordionModule } from '../accordion';\nimport { ScTelLinkDirective, ScTerminalLinkDirective } from '../directives';\nimport { ScFormFieldsModule } from '../form-fields/form-fields.module';\nimport { ScFormatePhonePipe } from '../pipes';\nimport { ScAddContactDialogComponent } from './add-contact-dialog/sc-add-contact-dialog.component';\nimport { ScContactsAccordionComponent } from './contacts-accordion/sc-contacts-accordion.component';\nimport { ScNewContactFormComponent } from './new-contact-form/sc-new-contact-form.component';\n\n/**\n * Модуль контактных лиц.\n */\n@NgModule({\n declarations: [ScContactsAccordionComponent, ScNewContactFormComponent, ScAddContactDialogComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n ScAccordionModule,\n TuiButton,\n TuiLoader,\n TuiLet,\n TuiNotification,\n TuiLink,\n ScFormFieldsModule,\n MaskitoDirective,\n TuiFieldErrorPipe,\n TuiSelectModule,\n ...TuiDataList,\n ...TuiDataListWrapper,\n TuiLabel,\n TuiInputModule,\n TuiInputPhoneModule,\n TuiError,\n ScTerminalLinkDirective,\n ScFormatePhonePipe,\n ScTelLinkDirective,\n TuiButtonLoading,\n ],\n exports: [ScContactsAccordionComponent, ScNewContactFormComponent, ScAddContactDialogComponent],\n})\nexport class ScContactsModule {}\n","/* eslint-disable no-restricted-syntax,@typescript-eslint/unbound-method */\n\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { ChangeDetectionStrategy, Component, Inject } from '@angular/core';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport { ScContragentService, ScIBankAccount, ScIBankAccountOnDataCreate } from '@snabcentr/client-core';\nimport { tuiIsFalsy, tuiMarkControlAsTouchedAndValidate } from '@taiga-ui/cdk';\nimport { TuiDialogContext } from '@taiga-ui/core';\nimport { POLYMORPHEUS_CONTEXT } from '@taiga-ui/polymorpheus';\nimport { catchError, filter, map, Observable, of, share, startWith, Subject, switchMap, tap } from 'rxjs';\n\nimport { ApiErrorResponse } from '../../auth/interfaces/api-error-response';\nimport { scBicValidator, scCorrespondentAccountValidator } from '../../validators';\n\n/**\n * Компонент формы создания нового банковского счета контрагента.\n */\n@Component({\n selector: 'sc-add-contragent-bank-account-dialog',\n templateUrl: './sc-add-contragent-bank-account-dialog.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScAddContragentBankAccountsDialogComponent {\n /**\n * Группа с полем банковских реквизитов.\n */\n public form = new FormGroup<{\n bankName: FormControl<string | null>;\n bic: FormControl<string | null>;\n accountNumber: FormControl<string | null>;\n correspondentAccount: FormControl<string | null>;\n currencyId: FormControl<number | null>;\n }>({\n bankName: new FormControl<string | null>(null, Validators.required),\n bic: new FormControl<string | null>(null, [Validators.required, Validators.minLength(9), scBicValidator]),\n accountNumber: new FormControl<string | null>(null, [Validators.required, Validators.minLength(20)]),\n correspondentAccount: new FormControl<string | null>(null, [Validators.required, Validators.minLength(20), scCorrespondentAccountValidator]),\n currencyId: new FormControl<number | null>(null, Validators.required),\n });\n\n /**\n * {@link Subject} события отправки формы.\n */\n public readonly onSubmit: Subject<void> = new Subject<void>();\n\n /**\n * {@link Observable} запроса создания банковского счёта контрагента.\n */\n private readonly request$ = this.onSubmit.pipe(\n map(() => this.form.value),\n filter((value): value is ScIBankAccountOnDataCreate => this.form.valid),\n switchMap((value) => {\n return this.contragentService.createContragentBankAccount$(this.context.data.contragentId, value).pipe(\n tap((bankAccount) => {\n this.context.completeWith(bankAccount);\n }),\n catchError((error: unknown) => {\n tuiMarkControlAsTouchedAndValidate(this.form);\n if (error instanceof HttpErrorResponse) {\n const { errors, message } = error.error as ApiErrorResponse;\n\n for (const key in errors) {\n if (Object.hasOwn(errors, key)) {\n this.form.get(key)?.setErrors({ serverResponse: errors[key] });\n }\n }\n\n if (!errors && message) {\n this.form.setErrors({ serverResponse: [message] });\n }\n }\n\n return of({} as ScIBankAccount);\n }),\n startWith(null)\n );\n }),\n share()\n );\n\n /**\n * {@link Observable} изменения состояния загрузки данных аутентификации по номеру телефона.\n */\n public readonly loading$: Observable<boolean> = this.request$.pipe(map(tuiIsFalsy));\n\n /**\n * Инициализирует экземпляр класса {@link ScAddContragentBankAccountsFormComponent}.\n *\n * @param contragentService Сервис работы с контрагентами.\n * @param context Контекст диалогового окна, в котором открыт компонент.\n */\n public constructor(\n private readonly contragentService: ScContragentService,\n @Inject(POLYMORPHEUS_CONTEXT)\n public readonly context: TuiDialogContext<ScIBankAccount, { contragentId: number }>\n ) {}\n}\n","<form\n [formGroup]=\"form\"\n (ngSubmit)=\"onSubmit.next()\"\n class=\"flex flex-col gap-3\"\n>\n <sc-new-contragent-bank-account-form [form]=\"form\"></sc-new-contragent-bank-account-form>\n <div class=\"flex justify-center gap-4\">\n <button\n tuiButton\n (click)=\"context.$implicit.complete()\"\n type=\"button\"\n iconStart=\"@tui.x\"\n appearance=\"secondary\"\n >\n Отмена\n </button>\n <button\n tuiButton\n [disabled]=\"form.invalid\"\n [loading]=\"!!(loading$ | async)\"\n type=\"submit\"\n iconStart=\"@tui.save\"\n >\n Сохранить\n </button>\n </div>\n</form>\n","/* eslint-disable class-methods-use-this,@typescript-eslint/unbound-method,no-restricted-syntax */\n\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { AfterViewInit, ChangeDetectionStrategy, Component, Inject, Optional } from '@angular/core';\nimport { FormArray, FormControl, FormGroup, Validators } from '@angular/forms';\nimport {\n ScContragent,\n ScContragentOnDataCreate,\n ScContragentService,\n ScConvertersService,\n ScIBankAccount,\n ScICountry,\n ScICurrency,\n ScIReferencesTypes,\n ScISalesDirection,\n ScLocationsService,\n ScOpfList,\n ScReferencesService,\n ScUserMetrikaGoalsEnum,\n ScUserMetrikaService,\n} from '@snabcentr/client-core';\nimport { tuiIsFalsy, tuiMarkControlAsTouchedAndValidate } from '@taiga-ui/cdk';\nimport { TuiDialogContext } from '@taiga-ui/core';\nimport { POLYMORPHEUS_CONTEXT } from '@taiga-ui/polymorpheus';\nimport { catchError, filter, map, Observable, of, share, startWith, Subject, switchMap, tap } from 'rxjs';\n\nimport { ApiErrorResponse } from '../../auth/interfaces/api-error-response';\nimport { scBicValidator, scCorrespondentAccountValidator } from '../../validators';\n\n/**\n * Компотен добавления контрагента.\n */\n@Component({\n selector: 'sc-add-contragent-dialog',\n templateUrl: './sc-add-contragent-dialog.component.html',\n styleUrls: ['./sc-add-contragent-dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScAddContragentDialogComponent implements AfterViewInit {\n /**\n * Перечисление организационно-правовых форм.\n */\n public readonly opfListEnum: typeof ScOpfList = ScOpfList;\n\n /**\n * Расположение баннера.\n */\n public stepIndex = 0;\n\n /**\n * Родительская `FormGroup`.\n */\n public form = new FormGroup({\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n contragent: new FormGroup<any>({}),\n });\n\n /**\n * {@link Subject} события отправки формы.\n */\n public readonly onSubmit: Subject<void> = new Subject<void>();\n\n /**\n * {@link Observable} запроса добавления контрагента.\n */\n private readonly request$ = this.onSubmit.pipe(\n map(() => this.form.value.contragent as ScContragentOnDataCreate),\n filter((value): value is ScContragentOnDataCreate => this.form.valid),\n switchMap((value) => {\n return this.contragentService.createContragent$(this.convertersService.removeNullRecursive(value)).pipe(\n tap((contragent) => {\n this.context.completeWith(contragent);\n }),\n catchError((error: unknown) => {\n tuiMarkControlAsTouchedAndValidate(this.form);\n if (error instanceof HttpErrorResponse) {\n const { errors, message } = error.error as ApiErrorResponse;\n\n for (const key in errors) {\n if (Object.hasOwn(errors, key)) {\n this.form.get(key)?.setErrors({ serverResponse: errors[key] });\n }\n }\n\n if (!errors && message) {\n this.form.setErrors({ serverResponse: [message] });\n }\n\n this.stepIndex = 0;\n }\n\n return of({} as ScIBankAccount);\n }),\n startWith(null)\n );\n }),\n share()\n );\n\n /**\n * {@link Observable} изменения состояния загрузки данных аутентификации по номеру телефона.\n */\n public readonly loading$: Observable<boolean> = this.request$.pipe(map(tuiIsFalsy));\n\n /**\n * Инициализирует экземпляр класса {@link ScAddContragentDialogComponent}.\n *\n * @param referencesService Сервис справочников.\n * @param contragentService Сервис работы с контрагентами.\n * @param convertersService Сервис конвертации данных.\n * @param userMetrikaService Сервис для сбора метрик о действиях пользователей.\n * @param locationsService\n * @param context Контекст диалогового окна, в котором открыт компонент.\n */\n public constructor(\n private readonly referencesService: ScReferencesService,\n private readonly contragentService: ScContragentService,\n private readonly convertersService: ScConvertersService,\n private readonly userMetrikaService: ScUserMetrikaService,\n private readonly locationsService: ScLocationsService,\n @Optional()\n @Inject(POLYMORPHEUS_CONTEXT)\n public readonly context: TuiDialogContext<ScContragent, void>\n ) {}\n\n /** @inheritdoc */\n public ngAfterViewInit(): void {\n this.userMetrikaService.emitUserMetrikaEvent({\n target: ScUserMetrikaGoalsEnum.userProfileContragentAddShow,\n });\n }\n\n /**\n * Текущий выбранный ОПФ.\n */\n public get selectOpf(): ScOpfList {\n return this.opfListEnum[this.form.controls.contragent.controls['opf'].value as keyof typeof ScOpfList];\n }\n\n /**\n * Список групп полей банковских реквизитов.\n */\n public get bankAccounts(): FormArray<ReturnType<ScAddContragentDialogComponent['createBankAccountGroup']>> {\n return this.form.controls.contragent.get('bankAccounts') as FormArray<ReturnType<ScAddContragentDialogComponent['createBankAccountGroup']>>;\n }\n\n /**\n * Список групп полей контактных лиц.\n */\n public get contacts(): FormArray<ReturnType<ScAddContragentDialogComponent['createContactGroup']>> {\n return this.form.controls.contragent.get('contacts') as FormArray<ReturnType<ScAddContragentDialogComponent['createContactGroup']>>;\n }\n\n /**\n * Выполняет навигацию по форме создания контрагента.\n *\n * @param delta Значение, на которое необходимо выполнить навигацию.\n */\n public navigate(delta: number): void {\n this.stepIndex = (this.stepIndex + delta) % 3;\n }\n\n /**\n * Проверяет, может ли пользователь перейти к следующему шагу создания контрагента.\n *\n * @returns Выводит значение `boolean` на основании {@link stepIndex}.\n */\n public canNextStep(): boolean {\n switch (this.stepIndex) {\n case 0:\n for (const key in this.form.controls.contragent.controls) {\n if (\n Object.prototype.hasOwnProperty.call(this.form.controls.contragent.controls, key) &&\n !Array.isArray(this.form.controls.contragent.controls[key].value) &&\n this.form.controls.contragent.controls[key].invalid\n ) {\n return false;\n }\n }\n\n return true;\n case 1:\n return this.form.controls.contragent.controls['contacts'].valid;\n case 2:\n return this.form.controls.contragent.controls['bankAccounts'].valid;\n default:\n return true;\n }\n }\n\n /**\n * Возвращает {@link Observable} списка направлений продаж.\n */\n public getSalesDirections$(): Observable<ScISalesDirection[]> {\n return this.referencesService.directions$;\n }\n\n /**\n * Возвращает {@link Observable} списка направлений продаж.\n *\n * @param directionId\n */\n public getDirectionById$(directionId: number): Observable<ScISalesDirection | undefined> {\n return this.referencesService.getDirectionById$(directionId);\n }\n\n /**\n * Возвращает {@link Observable} список организационно-правовых форм.\n */\n public getOpf$(): Observable<Array<ScIReferencesTypes<ScOpfList, typeof ScOpfList>>> {\n return this.referencesService.opf$;\n }\n\n /**\n * Возвращает {@link Observable} организационно-правовой формы, соответствующий символьному обозначению (slug) на входе.\n *\n * @param slug Символьное обозначение (slug).\n */\n public getOpfBySlug$(slug: keyof typeof ScOpfList): Observable<ScIReferencesTypes<ScOpfList, typeof ScOpfList> | undefined> {\n return this.referencesService.getOpfBySlug$(slug);\n }\n\n /**\n * Возвращает {@link Observable} списка валют.\n */\n public getCurrencies$(): Observable<ScICurrency[]> {\n return this.referencesService.currencies$;\n }\n\n /**\n * Возвращает {@link Observable} валюты, соответствующий идентификатору на входе.\n *\n * @param currencyId — Идентификатор валюты.\n */\n public getCurrencyById$(currencyId: number): Observable<ScICurrency | undefined> {\n return this.referencesService.getCurrencyById$(currencyId);\n }\n\n /**\n * Возвращает {@link Observable} списка стран.\n */\n public getCountries$(): Observable<ScICountry[]> {\n return this.locationsService.getCountries$();\n }\n\n /**\n * Возвращает {@link Observable} страны, соответствующий идентификатору на входе.\n *\n * @param countryId — Идентификатор страны.\n */\n public getCountriesById$(countryId: number): Observable<ScICountry | undefined> {\n return this.locationsService.getCountries$().pipe(map((countries) => countries.find((country) => country.id === countryId)));\n }\n\n /**\n * Создаёт группу полей банковских реквизитов.\n */\n private createBankAccountGroup(): FormGroup<{\n bankName: FormControl<string | null>;\n bic: FormControl<string | null>;\n accountNumber: FormControl<string | null>;\n correspondentAccount: FormControl<string | null>;\n currencyId: FormControl<number | null>;\n }> {\n return new FormGroup({\n bankName: new FormControl<string | null>(null, Validators.required),\n bic: new FormControl<string | null>(null, [Validators.required, Validators.minLength(9), scBicValidator]),\n accountNumber: new FormControl<string | null>(null, [Validators.required, Validators.minLength(20)]),\n correspondentAccount: new FormControl<string | null>(null, [Validators.required, Validators.minLength(20), scCorrespondentAccountValidator]),\n currencyId: new FormControl<number | null>(null, Validators.required),\n });\n }\n\n /**\n * Добавляет Банковские реквизиты.\n */\n public addBankAccountGroup(): void {\n this.bankAccounts.push(this.createBankAccountGroup());\n }\n\n /**\n * Удаляет банковские реквизиты.\n *\n * @param index Индекс банковских реквизитов.\n */\n public removeBankAccountGroup(index: number): void {\n this.bankAccounts.removeAt(index);\n }\n\n /**\n * Создаёт группу полей контактного лица.\n */\n public createContactGroup(): FormGroup<{\n name: FormControl<string | null>;\n phone: FormControl<string | null>;\n email: FormControl<string | null>;\n position: FormControl<string | null>;\n }> {\n return new FormGroup({\n name: new FormControl<string | null>(null, Validators.required),\n phone: new FormControl<string | null>(null, [Validators.required, Validators.minLength(12)]),\n email: new FormControl<string | null>(null, Validators.email),\n position: new FormControl<string | null>(null, Validators.required),\n });\n }\n\n /**\n * Добавляет контактное лицо контрагента.\n */\n public addContactGroup(): void {\n this.contacts.push(this.createContactGroup());\n }\n\n /**\n * Удаляет контактное лицо контрагента.\n *\n * @param index Индекс контактного лица.\n */\n public removeContactGroup(index: number): void {\n this.contacts.removeAt(index);\n }\n}\n","<form\n [formGroup]=\"form\"\n (ngSubmit)=\"onSubmit.next()\"\n class=\"flex flex-col gap-4\"\n>\n <tui-elastic-container>\n <sc-new-contragent-form [class.!hidden]=\"stepIndex !== 0\"></sc-new-contragent-form>\n\n <div [class.!hidden]=\"stepIndex !== 1\">\n <div\n *ngIf=\"contacts\"\n class=\"flex flex-col gap-5 pb-1\"\n >\n <p class=\"text-lg font-bold\">Контакты</p>\n <div\n *ngFor=\"let contact of contacts.controls; let index = index; let count = count; let last = last\"\n class=\"flex flex-col gap-3\"\n >\n <div class=\"flex h-10 items-center justify-between\">\n <p class=\"font-bold\">Контакт №{{ index + 1 }}:</p>\n <button\n *ngIf=\"count - 1\"\n tuiIconButton\n appearance=\"secondary\"\n (click)=\"removeContactGroup(index)\"\n iconStart=\"@tui.trash-2\"\n ></button>\n </div>\n <sc-new-contact-form [form]=\"contact\"></sc-new-contact-form>\n <hr\n *ngIf=\"!last\"\n class=\"h-px w-full bg-tui-base-04\"\n />\n </div>\n <button\n tuiButton\n iconStart=\"@tui.plus\"\n appearance=\"secondary\"\n (click)=\"addContactGroup()\"\n type=\"button\"\n class=\"self-center\"\n >\n Добавить контакт\n </button>\n </div>\n </div>\n\n <div [class.!hidden]=\"stepIndex !== 2\">\n <div\n *ngIf=\"bankAccounts\"\n class=\"flex flex-col gap-5 pb-1\"\n >\n <p class=\"text-lg font-bold\">Банковские реквизиты</p>\n <div\n *ngFor=\"let bankAccount of bankAccounts.controls; let index = index; let count = count; let last = last\"\n class=\"flex flex-col gap-3\"\n >\n <div class=\"flex h-12 items-center justify-between\">\n <p class=\"font-bold\">Банковские реквизиты №{{ index + 1 }}:</p>\n <button\n *ngIf=\"count - 1\"\n tuiIconButton\n appearance=\"secondary\"\n (click)=\"removeBankAccountGroup(index)\"\n iconStart=\"@tui.trash-2\"\n ></button>\n </div>\n <sc-new-contragent-bank-account-form [form]=\"bankAccount\"></sc-new-contragent-bank-account-form>\n <hr\n *ngIf=\"!last\"\n class=\"h-px w-full bg-tui-base-04\"\n />\n </div>\n <button\n tuiButton\n iconStart=\"@tui.plus\"\n appearance=\"secondary\"\n (click)=\"addBankAccountGroup()\"\n type=\"button\"\n class=\"self-center\"\n >\n Добавить банковские реквизиты\n </button>\n </div>\n </div>\n </tui-elastic-container>\n <div class=\"flex justify-center gap-2\">\n <button\n *ngIf=\"stepIndex > 0\"\n tuiButton\n appearance=\"secondary\"\n type=\"button\"\n (click)=\"stepIndex = (stepIndex - 1) % 3\"\n >\n Назад\n </button>\n <button\n *ngIf=\"stepIndex === 0\"\n tuiButton\n (click)=\"context.$implicit.complete()\"\n type=\"button\"\n appearance=\"secondary\"\n >\n Отмена\n </button>\n <button\n *ngIf=\"stepIndex === 2 || (stepIndex === 1 && !form.controls.contragent.controls['bankAccounts']); else nextIndexBtn\"\n tuiButton\n [disabled]=\"form.invalid\"\n [loading]=\"!!(loading$ | async)\"\n type=\"submit\"\n class=\"self-center\"\n >\n Создать\n </button>\n <ng-template #nextIndexBtn>\n <button\n tuiButton\n [disabled]=\"!canNextStep()\"\n type=\"button\"\n (click)=\"stepIndex = (stepIndex + 1) % 3\"\n >\n Далее\n </button>\n </ng-template>\n </div>\n</form>\n","import { Component, ChangeDetectionStrategy, Output, EventEmitter, Input, OnInit } from '@angular/core';\nimport { ScContragent, ScContragentService, ScIBankAccount, ScIContact } from '@snabcentr/client-core';\nimport { Observable } from 'rxjs';\n\n/**\n * Компонент контрагента пользователя.\n */\n@Component({\n selector: 'sc-contragents-accordion-item',\n templateUrl: './sc-contragents-accordion-item.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScContragentsAccordionItemComponent implements OnInit {\n /**\n * Контрагент пользователя.\n */\n @Input()\n public contragent: ScContragent;\n\n /**\n * Событие нажатия на кнопку удаления контрагента.\n */\n @Output()\n public deleteContragentClick: EventEmitter<ScContragent> = new EventEmitter<ScContragent>();\n\n /**\n * Событие нажатия на кнопку добавления банковского счёта контрагенту.\n */\n @Output()\n public addContragentBankAccountClick: EventEmitter<ScContragent> = new EventEmitter<ScContragent>();\n\n /**\n * Событие нажатия на кнопку удаления банковского счёта контрагента.\n */\n @Output()\n public deleteContragentBankAccountClick: EventEmitter<ScIBankAccount> = new EventEmitter<ScIBankAccount>();\n\n /**\n * Событие нажатия на кнопку добавления контактного лица контрагенту.\n */\n @Output()\n public addContragentContactClick: EventEmitter<ScContragent> = new EventEmitter<ScContragent>();\n\n /**\n * Событие нажатия на кнопку удаления контактного лица у контрагента.\n */\n @Output()\n public deleteContragentContactClick: EventEmitter<{ contact: ScIContact; contragent: ScContragent }> = new EventEmitter<{ contact: ScIContact; contragent: ScContragent }>();\n\n /**\n * Список банковских счетов контрагента.\n */\n public bankAccounts$?: Observable<ScIBankAccount[] | null>;\n\n /**\n * Список банковских счетов контрагента.\n */\n public contacts$?: Observable<ScIContact[] | null>;\n\n /**\n * Инициализирует экземпляр класса {@link ScContragentsAccordionItemComponent}.\n *\n * @param contragentService Сервис работы с контрагентами.\n */\n public constructor(private readonly contragentService: ScContragentService) {}\n\n /** @inheritDoc */\n public ngOnInit(): void {\n this.bankAccounts$ = this.contragentService.getContragentBankAccounts$(this.contragent.id);\n this.contacts$ = this.contragentService.getContragentContacts$(this.contragent.id);\n }\n\n /**\n * Обработчик нажатия на кнопку удаления контактного лица у контрагента.\n *\n * @param contact Контактное лицо.\n * @param contragent Контрагент.\n */\n public onDeleteContragentContactClick(contact: ScIContact, contragent: ScContragent): void {\n this.deleteContragentContactClick.emit({ contact: contact, contragent: contragent });\n }\n}\n","<sc-accordion [showAddButton]=\"false\">\n {{ contragent.name }}\n <span *ngIf=\"$any(contragent).inn as inn\">ИНН: {{ inn }}</span>\n\n <ng-template scAccordionContent>\n <div class=\"flex flex-col gap-2\">\n <div class=\"flex gap-2\">\n <div class=\"flex grow flex-col gap-2\">\n {{ contragent.name }}\n <span *ngIf=\"$any(contragent).inn as inn\">ИНН: {{ inn }}</span>\n <span *ngIf=\"$any(contragent).kpp as kpp\">КПП: {{ kpp }}</span>\n </div>\n <!-- Функционал удаления и редактирования временно не доступен пользователю. -->\n <!-- <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n icon=\"@tui.pencil\"\n appearance=\"flat\"\n (click)=\"$event.stopPropagation(); editContragentClick.emit(contragent.id)\"\n ></button>\n <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n icon=\"@tui.trash-2\"\n appearance=\"flat\"\n (click)=\"$event.stopPropagation(); deleteContragentClick.emit(contragent)\"\n ></button> -->\n </div>\n\n <sc-accordion (addButtonClick)=\"addContragentBankAccountClick.emit(contragent)\">\n Банковские реквизиты\n <ng-template scAccordionContent>\n <tui-loader\n *tuiLet=\"bankAccounts$ | async as bankAccounts\"\n [overlay]=\"true\"\n [showLoader]=\"bankAccounts === null\"\n >\n <div class=\"flex flex-col gap-2\">\n <ng-container *ngIf=\"!bankAccounts || bankAccounts.length; else bankAccountsNotExist\">\n <div\n *ngFor=\"let bankAccount of bankAccounts\"\n class=\"flex gap-2 border-b border-tui-base-03\"\n >\n <div class=\"flex grow flex-col gap-2\">\n <span>Банк: {{ bankAccount.bankName }}</span>\n <span>БИК: {{ bankAccount.bic }}</span>\n <span>Р/счёт: {{ bankAccount.accountNumber }}</span>\n <span>Кор/счёт: {{ bankAccount.correspondentAccount }}</span>\n <span>Валюта: {{ bankAccount.currency.name }}</span>\n </div>\n <!-- <div class=\"flex flex-col md:flex-row gap-4\">\n <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n icon=\"@tui.pencil\"\n appearance=\"flat\"\n (click)=\"$event.stopPropagation(); editBankAccountsContragentClick.emit(bankAccount.id)\"\n ></button>\n <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n icon=\"@tui.trash-2\"\n appearance=\"flat\"\n (click)=\"$event.stopPropagation(); deleteContragentBankAccountClick.emit(bankAccount)\"\n ></button>\n </div> -->\n </div>\n </ng-container>\n\n <ng-template #bankAccountsNotExist>\n <tui-notification size=\"l\"\n ><div>\n <div class=\"flex flex-wrap gap-2 font-medium\">\n У контрагента <span class=\"font-bold\">{{ contragent.name }}</span> не указаны банковские реквизиты.\n </div>\n </div></tui-notification\n >\n </ng-template>\n </div>\n </tui-loader>\n </ng-template>\n </sc-accordion>\n <sc-contacts-accordion\n *ngIf=\"contacts$\"\n [contacts$]=\"contacts$\"\n (addContactClick)=\"addContragentContactClick.emit(contragent)\"\n (deleteButtonClick)=\"onDeleteContragentContactClick($event, contragent)\"\n ></sc-contacts-accordion>\n </div>\n </ng-template>\n</sc-accordion>\n","import { Component, ChangeDetectionStrategy, Output, EventEmitter } from '@angular/core';\nimport { ScContragent, ScContragentService, ScIBankAccount, ScIContact } from '@snabcentr/client-core';\nimport { Observable } from 'rxjs';\n\n/**\n * Компонент контрагента пользователя.\n */\n@Component({\n selector: 'sc-contragents-accordion',\n templateUrl: './sc-contragents-accordion.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScContragentsAccordionComponent {\n /**\n * {@link Observable} данных о контрагентах пользователя.\n */\n public contragents$: Observable<ScContragent[] | null> = this.contragentService.contragents$;\n\n /**\n * Событие нажатия на кнопку удаления контрагента.\n */\n @Output()\n public addContragentClick: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на кнопку удаления контрагента.\n */\n @Output()\n public deleteContragentClick: EventEmitter<ScContragent> = new EventEmitter<ScContragent>();\n\n /**\n * Событие нажатия на кнопку добавления банковского счёта контрагенту.\n */\n @Output()\n public addContragentBankAccountClick: EventEmitter<ScContragent> = new EventEmitter<ScContragent>();\n\n /**\n * Событие нажатия на кнопку удаления банковского счёта контрагента.\n */\n @Output()\n public deleteContragentBankAccountClick: EventEmitter<ScIBankAccount> = new EventEmitter<ScIBankAccount>();\n\n /**\n * Событие нажатия на кнопку добавления контактного лица контрагенту.\n */\n @Output()\n public addContragentContactClick: EventEmitter<ScContragent> = new EventEmitter<ScContragent>();\n\n /**\n * Событие нажатия на кнопку удаления контактного лица у контрагента.\n */\n @Output()\n public deleteContragentContactClick: EventEmitter<{ contact: ScIContact; contragent: ScContragent }> = new EventEmitter<{ contact: ScIContact; contragent: ScContragent }>();\n\n /**\n * Инициализирует экземпляр класса {@link ScContragentsAccordionComponent}.\n *\n * @param contragentService Сервис работы с контрагентами.\n */\n public constructor(private readonly contragentService: ScContragentService) {}\n}\n","<sc-accordion (addButtonClick)=\"addContragentClick.emit()\">\n Контрагенты\n <ng-template scAccordionContent>\n <tui-loader *tuiLet=\"contragents$ | async as contragents\" [overlay]=\"true\" [showLoader]=\"contragents === null\">\n <div class=\"flex flex-col gap-2\">\n <ng-container *ngIf=\"!contragents || contragents.length; else contragentsNotExist\">\n <sc-contragents-accordion-item\n *ngFor=\"let contragent of contragents\"\n [contragent]=\"contragent\"\n (deleteContragentClick)=\"deleteContragentClick.emit($event)\"\n (addContragentBankAccountClick)=\"addContragentBankAccountClick.emit($event)\"\n (deleteContragentBankAccountClick)=\"deleteContragentBankAccountClick.emit($event)\"\n (addContragentContactClick)=\"addContragentContactClick.emit($event)\"\n (deleteContragentContactClick)=\"deleteContragentContactClick.emit($event)\"\n ></sc-contragents-accordion-item>\n </ng-container>\n\n <ng-template #contragentsNotExist>\n <tui-notification size=\"l\"><div>\n <div class=\"flex flex-wrap gap-2 font-medium\">Контрагенты не указаны.</div>\n </div></tui-notification>\n </ng-template>\n </div>\n </tui-loader>\n </ng-template>\n</sc-accordion>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MaskitoDirective } from '@maskito/angular';\nimport { TuiLet } from '@taiga-ui/cdk';\nimport { TuiButton, TuiDataList, TuiError, TuiLabel, TuiLoader, TuiNotification } from '@taiga-ui/core';\nimport { TuiButtonLoading, TuiCarousel, TuiDataListWrapper, TuiElasticContainer, TuiFieldErrorPipe } from '@taiga-ui/kit';\nimport { TuiInputModule, TuiInputPhoneModule, TuiSelectModule } from '@taiga-ui/legacy';\n\nimport { ScAccordionModule } from '../accordion';\nimport { ScContactsModule } from '../contacts/sc-contacts.module';\nimport { ScFormFieldsModule } from '../form-fields/form-fields.module';\nimport { ScAddContragentBankAccountsDialogComponent } from './add-contragent-bank-account-dialog/sc-add-contragent-bank-account-dialog.component';\nimport { ScAddContragentDialogComponent } from './add-contragent-dialog/sc-add-contragent-dialog.component';\nimport { ScContragentsAccordionItemComponent } from './contragents-accordion/contragents-accordion-item/sc-contragents-accordion-item.component';\nimport { ScContragentsAccordionComponent } from './contragents-accordion/sc-contragents-accordion.component';\nimport { ScNewContragentBankAccountsFormComponent } from './new-contragent-bank-account-form/sc-new-contragent-bank-account-form.component';\nimport { ScNewContragentFormComponent } from './new-contragent-form/sc-new-contragent-form.component';\n\n/**\n * Модуль для отображение контента разделами, с возможностью скрывать и отображать содержимое.\n */\n@NgModule({\n declarations: [\n ScContragentsAccordionComponent,\n ScContragentsAccordionItemComponent,\n ScNewContragentBankAccountsFormComponent,\n ScAddContragentBankAccountsDialogComponent,\n ScAddContragentDialogComponent,\n ScNewContragentFormComponent,\n ],\n imports: [\n FormsModule,\n ReactiveFormsModule,\n CommonModule,\n ScAccordionModule,\n TuiButton,\n TuiLoader,\n TuiLet,\n TuiNotification,\n ScContactsModule,\n TuiFieldErrorPipe,\n TuiError,\n TuiSelectModule,\n ...TuiDataList,\n ...TuiDataListWrapper,\n TuiLabel,\n TuiInputModule,\n TuiInputPhoneModule,\n MaskitoDirective,\n ScFormFieldsModule,\n TuiElasticContainer,\n ...TuiCarousel,\n TuiButtonLoading,\n ],\n exports: [\n ScContragentsAccordionComponent,\n ScNewContragentBankAccountsFormComponent,\n ScAddContragentBankAccountsDialogComponent,\n ScAddContragentDialogComponent,\n ScNewContragentFormComponent,\n ],\n})\nexport class ScContragentsModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MaskitoDirective } from '@maskito/angular';\nimport { TuiLet } from '@taiga-ui/cdk';\nimport { TuiButton, TuiError, TuiLabel, TuiLink, TuiLoader } from '@taiga-ui/core';\nimport { TuiButtonLoading, TuiFieldErrorPipe } from '@taiga-ui/kit';\nimport { TuiInputModule, TuiInputPasswordModule, TuiInputPhoneModule, TuiTextfieldControllerModule } from '@taiga-ui/legacy';\n\nimport { ScVerificationPhoneCheckFormComponent } from './verification-phone-check-form/sc-verification-phone-check-form.component';\n\n/**\n * Модуль отправки кодов подтверждения (номера телефона, адреса эл. почты и т.д.).\n */\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n TuiInputPasswordModule,\n TuiInputModule,\n TuiTextfieldControllerModule,\n TuiLink,\n TuiButton,\n TuiLabel,\n TuiFieldErrorPipe,\n TuiError,\n TuiLet,\n TuiLoader,\n TuiInputPhoneModule,\n MaskitoDirective,\n TuiButtonLoading,\n ],\n exports: [ScVerificationPhoneCheckFormComponent],\n declarations: [ScVerificationPhoneCheckFormComponent],\n})\nexport class ScVerificationModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MaskitoDirective } from '@maskito/angular';\nimport { TuiLet, TuiRepeatTimes } from '@taiga-ui/cdk';\nimport { TuiButton, TuiDataList, TuiError, TuiLabel, TuiLink, TuiLoader } from '@taiga-ui/core';\nimport { TuiButtonLoading, TuiCheckbox, TuiDataListWrapper, TuiElasticContainer, TuiFieldErrorPipe, TuiStepper } from '@taiga-ui/kit';\nimport { TuiInputModule, TuiInputPasswordModule, TuiInputPhoneModule, TuiSelectModule, TuiTextfieldControllerModule } from '@taiga-ui/legacy';\n\nimport { ScContactsModule } from '../contacts/sc-contacts.module';\nimport { ScContragentsModule } from '../contragents/sc-contragents.module';\nimport { ScFormFieldsModule } from '../form-fields/form-fields.module';\nimport { ScVerificationModule } from '../verification';\nimport { ScSignInFormComponent } from './sc-sign-in-form/sc-sign-in-form.component';\nimport { ScSignInFormByEmailComponent } from './sc-sign-in-form/sc-sign-in-form-by-email/sc-sign-in-form-by-email.component';\nimport { ScSignInFormByPhoneComponent } from './sc-sign-in-form/sc-sign-in-form-by-phone/sc-sign-in-form-by-phone.component';\nimport { ScSignUpFormComponent } from './sign-up-form/sc-sign-up-form.component';\n\n/**\n * Модуль аутентификации.\n */\n@NgModule({\n declarations: [ScSignInFormComponent, ScSignInFormByPhoneComponent, ScSignInFormByEmailComponent, ScSignUpFormComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n TuiInputPasswordModule,\n TuiInputModule,\n TuiTextfieldControllerModule,\n TuiLink,\n TuiButton,\n TuiLabel,\n TuiFieldErrorPipe,\n TuiError,\n TuiLet,\n TuiLoader,\n TuiInputPhoneModule,\n MaskitoDirective,\n ScVerificationModule,\n ScFormFieldsModule,\n ...TuiDataList,\n TuiCheckbox,\n TuiElasticContainer,\n ...TuiDataListWrapper,\n TuiSelectModule,\n ScContragentsModule,\n ScContactsModule,\n ...TuiStepper,\n TuiRepeatTimes,\n TuiButtonLoading,\n ],\n exports: [ScSignInFormComponent, ScSignInFormByPhoneComponent, ScSignInFormByEmailComponent, ScSignUpFormComponent],\n})\nexport class ScAuthModule {}\n","import { Injectable } from '@angular/core';\n\n/**\n * Класс-помощник для конвертации пикселей.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class ScPxConverter {\n private rootFontSize = 16;\n\n /**\n * Конвертирует пиксели в rem.\n *\n * @param px Значение которое необходимо конвертировать.\n */\n public pxToRem(px: number): number {\n return px / this.rootFontSize;\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n DestroyRef,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Inject,\n inject,\n Input,\n Output,\n QueryList,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { IntersectionObserverService } from '@ng-web-apis/intersection-observer';\nimport { ScBanner, ScBannerService, ScUserMetrikaGoalsEnum, ScUserMetrikaService } from '@snabcentr/client-core';\nimport { tuiFadeIn } from '@taiga-ui/core';\nimport { filter, interval, map, Observable, shareReplay, Subject, switchMap, takeUntil, tap } from 'rxjs';\n\nimport { ScPxConverter } from '../helpers';\n\n/**\n * Баннер с прокруткой переданных {@link TemplateRef} элементов, и баннеров локации.\n */\n@Component({\n selector: 'sc-banner',\n templateUrl: './sc-banner.component.html',\n styleUrls: ['./sc-banner.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [IntersectionObserverService],\n animations: [tuiFadeIn],\n})\nexport class ScBannerComponent implements AfterViewInit {\n /**\n * Признак, что необходимо показывать кнопки навигации.\n */\n @Input()\n public navigateButton: boolean = true;\n\n /**\n * Интервал показа слайдов в миллисекундах.\n */\n @Input()\n public playerInterval: number = 5000;\n\n /**\n * Признак, что прокрутка выключена.\n */\n @Input()\n public disabled: boolean = false;\n\n /**\n * Местоположение баннера.\n */\n @Input()\n public bannerLocation?: string;\n\n /**\n * Признак, что компонент должен растягиваться.\n */\n @Input()\n public resizable: boolean = true;\n\n /**\n * Событие загрузки баннеров с количеством полученных баннеров.\n */\n @Output()\n public loadBannersEvent: EventEmitter<number> = new EventEmitter<number>();\n\n /**\n * Событие нажатия на изображение баннера.\n */\n @Output()\n public clickBannerEvent: EventEmitter<ScBanner> = new EventEmitter<ScBanner>();\n\n /**\n * Список ссылок на элемент представлений шаблонов.\n */\n @ContentChildren('banner')\n public bannersListRef: QueryList<TemplateRef<any>>;\n\n /**\n * Ссылка на {@link HTMLVideoElement} элемента отображения видео.\n */\n @ViewChild('videoPlayer')\n private videoRef: ElementRef<HTMLVideoElement>;\n\n /**\n * Ссылка для автоматического управления уничтожением зависимостей.\n */\n private destroyRef: DestroyRef = inject(DestroyRef);\n\n /**\n * Идентификатор текущего баннера.\n */\n public currentBannerId: number = 0;\n\n /**\n * {@link Subject} изменения состояния таймера.\n */\n public readonly toggleTimer$: Subject<boolean> = new Subject<boolean>();\n\n /**\n * Признак, что необходимо показывать кнопки старта видео баннера.\n */\n public showPlayBtn: boolean = false;\n\n /**\n * {@link Observable} обновления списка баннеров.\n */\n public readonly banners$: Observable<ScBanner[]> = this.bannerService.banners$.pipe(\n map((banners) => banners.filter((banner) => banner.location === this.bannerLocation).reverse()),\n tap((banners) => {\n if (banners.length > 0) {\n if (this.resizable) {\n this.width = '100%';\n } else {\n this.height = `${this.pxConverter.pxToRem(banners[0].height)}rem`;\n this.width = `${this.pxConverter.pxToRem(banners[0].width)}rem`;\n }\n\n this.aspectRatio = `${banners[0].width} / ${banners[0].height}`;\n this.banners = banners;\n this.toggleTimer$.next(true);\n }\n\n this.loadBannersEvent.emit(banners.length);\n }),\n shareReplay(1)\n );\n\n /**\n * Список баннеров.\n */\n public banners?: ScBanner[] = [];\n\n /**\n * Свойство, от которого зависит высота `:host` компонента.\n */\n @HostBinding('style.height')\n public height: string = 'auto';\n\n /**\n * Свойство, от которого зависит ширина `:host` компонента.\n */\n @HostBinding('style.width')\n public width: string = '';\n\n /**\n * Свойство, от которого зависит соотношение `:host` компонента.\n */\n @HostBinding('style.aspect-ratio')\n public aspectRatio: string = '';\n\n /**\n * Обработчик события mouseenter.\n */\n @HostListener('mouseenter')\n private mouseEnterHandler: () => void = () => {\n this.toggleTimer$.next(false);\n };\n\n /**\n * Обработчик события mouseleave.\n */\n @HostListener('mouseleave')\n private mouseLeaveHandler: () => void = () => {\n this.toggleTimer$.next(true);\n };\n\n /**\n * Инициализирует экземпляр класса {@link ScBannerComponent}.\n *\n * @param cdr Объект для работы с обнаружением изменений.\n * @param bannerService Сервис для работы с баннерами.\n * @param entries$\n * @param element Элемент баннера.\n * @param pxConverter Экземпляр класса-помощника для конвертации пикселей.\n * @param userMetrikaService Сервис для сбора метрик о действиях пользователей.\n */\n public constructor(\n private readonly cdr: ChangeDetectorRef,\n private readonly bannerService: ScBannerService,\n @Inject(IntersectionObserverService) private readonly entries$: IntersectionObserverService,\n @Inject(ElementRef) private readonly element: ElementRef<Element>,\n private pxConverter: ScPxConverter,\n private readonly userMetrikaService: ScUserMetrikaService\n ) {}\n\n /**\n * Свойство, от которого зависит наличие класса `!hidden` у `:host` компонента.\n */\n @HostBinding('class.!hidden')\n private get isHidden(): boolean {\n return !this.banners || this.bannersListRef.length + this.banners.length === 0;\n }\n\n /** @inheritDoc */\n public ngAfterViewInit(): void {\n this.toggleTimer$\n .pipe(\n filter((toggle) => toggle),\n switchMap(() => interval(this.playerInterval).pipe(takeUntil(this.toggleTimer$))),\n filter(() => !this.disabled && (this.banners?.[this.currentBannerId]?.mediaType === 'image' || this.showPlayBtn)),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(() => {\n this.onNextBanner();\n });\n\n // Отслеживание пересечения компонента с экраном пользователя.\n // Если баннера не находится в поле видимости пользователя, то он перестаёт переключаться, а видео останавливается.\n this.entries$.pipe(map((entries) => entries.find((item) => item.target === this.element.nativeElement))).subscribe((entry) => {\n this.toggleTimer$.next(!!entry?.isIntersecting);\n });\n }\n\n /**\n * Переключает на предыдущий баннер.\n */\n public onPreviousBanner(): void {\n const previous: number = this.currentBannerId - 1;\n this.currentBannerId = previous < 0 ? this.bannersListRef.length + (this.banners?.length ?? 0) - 1 : previous;\n\n this.cdr.markForCheck();\n }\n\n /**\n * Переключает на следующий баннер.\n */\n public onNextBanner(): void {\n const next: number = this.currentBannerId + 1;\n this.currentBannerId = next === this.bannersListRef.length + (this.banners?.length ?? 0) ? 0 : next;\n\n this.cdr.markForCheck();\n }\n\n /**\n * Переключает на следующий баннер.\n */\n public onEndedVideo(): void {\n this.onNextBanner();\n this.toggleTimer$.next(true);\n this.showPlayBtn = true;\n }\n\n /**\n * Обработчик нажатия на баннер, генерирующий событие {@link clickBannerImgEvent}.\n *\n * @param banner Баннер, по ссылке которого совершён переход.\n */\n public onClick(banner: ScBanner): void {\n this.userMetrikaService.emitUserMetrikaEvent({\n target: ScUserMetrikaGoalsEnum.bannerClick,\n params: {\n banner_id: banner.id,\n },\n });\n\n if (banner.url) {\n this.clickBannerEvent.emit(banner);\n }\n }\n}\n","<ng-container *tuiLet=\"banners$ | async\">\n <tui-carousel\n class=\"size-full overflow-hidden rounded-xl bg-white shadow-sc-2\"\n [(index)]=\"currentBannerId\"\n >\n <ng-container *ngFor=\"let banner of banners; let index = index\">\n <a\n *tuiItem\n (click)=\"onClick(banner)\"\n [style.aspect-ratio]=\"aspectRatio\"\n [attr.href]=\"banner.url ? banner.url : null\"\n target=\"_blank\"\n [title]=\"banner.title\"\n class=\"relative\"\n >\n <ng-container [ngSwitch]=\"banner.mediaType\">\n <ng-container *ngSwitchCase=\"'video'\">\n <video\n #videoPlayer\n (suspend)=\"showPlayBtn = true\"\n (play)=\"showPlayBtn = false\"\n [src]=\"banner.mediaFile\"\n (ended)=\"onEndedVideo()\"\n (mouseover)=\"videoPlayer.pause()\"\n (mouseout)=\"videoPlayer.play()\"\n class=\"h-full object-cover\"\n muted\n autoplay\n ></video>\n <button\n *ngIf=\"showPlayBtn\"\n tuiIconButton\n [@tuiFadeIn]=\"200\"\n matRipple\n (click)=\"$event.preventDefault(); videoPlayer.play()\"\n size=\"s\"\n appearance=\"secondary\"\n class=\"!absolute bottom-4 left-8\"\n >\n <i class=\"icon-refresh text-black\"></i>\n </button>\n </ng-container>\n\n <img\n *ngSwitchCase=\"'image'\"\n [src]=\"banner.mediaFile\"\n alt=\"Баннер\"\n class=\"h-full object-cover\"\n />\n </ng-container>\n </a>\n </ng-container>\n <ng-container *ngFor=\"let item of bannersListRef\">\n <div\n *tuiItem\n [style.height]=\"height\"\n [style.width]=\"width\"\n [style.aspect-ratio]=\"aspectRatio\"\n class=\"overflow-hidden\"\n >\n <ng-container [ngTemplateOutlet]=\"item\"></ng-container>\n </div>\n </ng-container>\n </tui-carousel>\n</ng-container>\n<div\n *ngIf=\"navigateButton && !disabled && this.banners && this.bannersListRef.length + this.banners.length > 1\"\n tuiTheme=\"light\"\n class=\"flex items-center\"\n>\n <button\n tuiIconButton\n iconStart=\"@tui.chevron-left\"\n size=\"m\"\n [style.border-radius.%]=\"100\"\n appearance=\"flat\"\n (click)=\"onPreviousBanner()\"\n class=\"!absolute left-2\"\n ></button>\n <button\n tuiIconButton\n iconStart=\"@tui.chevron-right\"\n size=\"m\"\n [style.border-radius.%]=\"100\"\n appearance=\"flat\"\n (click)=\"onNextBanner()\"\n class=\"!absolute right-2\"\n ></button>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { WaIntersectionObserver } from '@ng-web-apis/intersection-observer';\nimport { TuiLet } from '@taiga-ui/cdk';\nimport { TuiButton, TuiLoader } from '@taiga-ui/core';\nimport { TuiCarousel } from '@taiga-ui/kit';\n\nimport { ScBannerComponent } from './sc-banner.component';\n\n/**\n * Модуль баннеров.\n */\n@NgModule({\n declarations: [ScBannerComponent],\n imports: [CommonModule, RouterModule, TuiButton, ...TuiCarousel, TuiLoader, ...WaIntersectionObserver, TuiLet],\n exports: [ScBannerComponent],\n})\nexport class ScBannerModule {}\n","/* eslint-disable @typescript-eslint/no-explicit-any,class-methods-use-this,lodash/prefer-some,lodash/prefer-lodash-method,no-param-reassign */\n\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, EventEmitter, Inject, inject, Input, OnInit, Output } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { IS_RUNNING_ON_TERMINAL, SC_URLS, ScCategory, ScFavoriteService, ScITerminalProvider, ScIUrls, TERMINAL_PROVIDERS } from '@snabcentr/client-core';\nimport { TUI_IS_MOBILE, tuiPure } from '@taiga-ui/cdk';\nimport { filter, tap } from 'rxjs';\n\n/**\n * Компонент списка категорий.\n */\n@Component({\n selector: 'sc-categories-list',\n templateUrl: './sc-categories-list.component.html',\n providers: [TERMINAL_PROVIDERS],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScCategoriesListComponent<T extends object> implements OnInit {\n /**\n * Список категорий.\n */\n @Input()\n public categories: T[] | undefined | null;\n\n /**\n * Признак того, отображается этот компонент на мобильном устройстве или нет.\n */\n public readonly isMobile: boolean = inject(TUI_IS_MOBILE);\n\n /**\n * Событие нажатия на категорию.\n */\n @Output()\n public clickCategoryEvent: EventEmitter<T> = new EventEmitter<T>();\n\n /**\n * Ссылка для автоматического управления уничтожением зависимостей.\n */\n private destroyRef: DestroyRef = inject(DestroyRef);\n\n /**\n * Инициализирует экземпляр класса {@link ScCategoriesListComponent}.\n *\n * @param urls объект информации о базовом списке ссылок приложения.\n * @param terminal Данные о запуске приложения на терминале.\n * @param favoriteService Сервис для работы с корзиной.\n * @param cdr Объект для работы с обнаружением изменений.\n */\n public constructor(\n @Inject(SC_URLS)\n private readonly urls: ScIUrls,\n @Inject(IS_RUNNING_ON_TERMINAL)\n public readonly terminal: ScITerminalProvider,\n private readonly favoriteService: ScFavoriteService,\n private readonly cdr: ChangeDetectorRef\n ) {}\n\n /** @inheritDoc */\n public ngOnInit(): void {\n this.favoriteService.categories$\n .pipe(\n filter(() => !!this.categories && this.categories.length > 0 && 'id' in this.categories[0]),\n tap((categories) => {\n (this.categories as ScCategory[]).forEach((category) => {\n category.isFavorite = categories.findIndex((item) => category.id === item.id) !== -1;\n });\n }),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(() => {\n this.cdr.markForCheck();\n });\n }\n\n /**\n * Возвращает путь до изображения на сервере.\n *\n * @param imgPath путь, где хранится изображение.\n */\n public getCategoryImage(imgPath: string): string {\n return `${this.urls.imgServerUrl}/${imgPath}`;\n }\n\n /**\n * Проверяет наличие хотя бы одного изображения.\n *\n * @param categories Список категорий.\n */\n @tuiPure\n public checkImagesExists(categories: any[]): boolean {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return categories.some((item) => item.properties?.image);\n }\n}\n","<div\n [ngClass]=\"{ '!flex !flex-col': terminal.isRunningOnTerminal }\"\n class=\"grid grid-cols-[repeat(auto-fill,minmax(21rem,1fr))] gap-x-8 gap-y-2\"\n>\n <ng-container *ngIf=\"categories; else categoriesSkeleton\">\n <button\n *ngFor=\"let item of $any(categories)\"\n class=\"group flex h-11 items-center gap-2 rounded-xl bg-tui-base-02 px-3 py-1.5 text-left ring-tui-primary duration-150 hover-hover:hover:ring-2 hover-none:active:ring-2\"\n (click)=\"clickCategoryEvent.emit(item)\"\n >\n <img\n *ngIf=\"item.properties?.image as image\"\n [src]=\"getCategoryImage(image)\"\n [alt]=\"item.name\"\n class=\"size-8 rounded bg-tui-base-03 object-cover\"\n />\n\n <tui-icon\n *ngIf=\"!item.properties?.image && checkImagesExists(categories)\"\n icon=\"@tui.camera-off\"\n class=\"!h-8 !w-8 rounded bg-tui-base-03 text-tui-base-05\"\n ></tui-icon>\n <div class=\"flex grow flex-col truncate\">\n <div class=\"flex grow truncate\">\n <p class=\"truncate text-base font-bold\">{{ item.name }}</p>\n <tui-icon\n *ngIf=\"item.isFavorite\"\n background=\"@tui.bookmark-filled\"\n icon=\"@tui.bookmark\"\n class=\"mr-auto bg-tui-primary !text-sm text-tui-primary\"\n ></tui-icon>\n </div>\n <p\n *ngIf=\"item.m2Price as m2Price\"\n class=\"text-xs font-medium text-tui-text-02\"\n >\n Средняя стоимость <span [innerHTML]=\"m2Price\"></span>\n </p>\n </div>\n\n <tui-icon\n icon=\"@tui.chevron-right\"\n class=\"duration-150 hover-hover:group-hover:text-tui-primary hover-none:group-active:text-tui-primary\"\n ></tui-icon>\n </button>\n </ng-container>\n</div>\n\n<ng-template #categoriesSkeleton>\n <button\n *tuiRepeatTimes=\"let index of isMobile ? 3 : 6\"\n class=\"group flex h-11 items-center gap-2 rounded-xl bg-tui-base-02 px-3 py-1.5 text-left ring-tui-base-05 duration-150 hover-hover:hover:ring-2 hover-none:active:ring-2\"\n >\n <div class=\"tui-skeleton size-8\"></div>\n <div class=\"tui-skeleton h-4 grow\"></div>\n <tui-icon\n icon=\"@tui.chevron-right\"\n class=\"tui-skeleton duration-150 hover-hover:group-hover:text-tui-primary hover-none:group-active:text-tui-primary\"\n ></tui-icon>\n </button>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\n/**\n * Компонент кнопки избранных товаров и категорий.\n */\n@Component({\n selector: 'sc-favorite-btn',\n templateUrl: './sc-favorite-btn.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScFavoriteBtnComponent {\n /**\n * Событие нажатия на кнопку.\n */\n @Output()\n public clickEvent: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Признак наличия товара или категории в избранных.\n */\n @Input()\n public isFavorite: boolean = false;\n\n /**\n * Признак, что необходимо отобразить загрузку на кнопке.\n */\n @Input()\n public showLoader: boolean = false;\n\n /**\n * Признак, что кнопка деактивирована.\n */\n @Input()\n public disabled: boolean = false;\n}\n","<button\n tuiIconButton\n (click)=\"clickEvent.emit()\"\n [disabled]=\"disabled\"\n [loading]=\"showLoader\"\n appearance=\"flat\"\n size=\"s\"\n>\n <tui-icon\n class=\"text-tui-primary\"\n [icon]=\"isFavorite ? '@tui.bookmark-filled' : '@tui.bookmark'\"\n ></tui-icon>\n</button>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Inject,\n Input,\n Output,\n Renderer2,\n ViewChild\n} from '@angular/core';\nimport { SC_PATH_IMAGE_NOT_FOUND, SC_URLS, ScAuthService, ScCategory, ScIUrls } from '@snabcentr/client-core';\nimport { TuiSizeS } from '@taiga-ui/core';\nimport { Observable } from 'rxjs';\n\n/**\n * Карточка категории.\n */\n@Component({\n selector: 'sc-category-card',\n templateUrl: './sc-category-card.component.html',\n styleUrls: ['./sc-category-card.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScCategoryCardComponent {\n /**\n * Информация о категории.\n */\n @Input()\n public category?: ScCategory;\n\n /**\n * Ссылка на {@link HTMLElement} блока названия.\n */\n @ViewChild('name')\n private name: ElementRef<HTMLElement>;\n\n /**\n * Размер карточки категории.\n */\n @Input()\n @HostBinding('attr.data-size')\n public size: TuiSizeS = 'm';\n\n /**\n * Признак, что карточка является скелетоном.\n */\n @Input()\n public isSkeleton: boolean = false;\n\n /**\n * Признак, что необходимо отобразить лоадер для кнопки избранных товаров и категорий.\n */\n public favoriteShowLoader: boolean = false;\n\n /**\n * {@link Observable} изменения статуса авторизации.\n */\n public readonly authStatus$: Observable<boolean> = this.authService.getAuthChange();\n\n /**\n * Признак что категория имеет поведение наведения и скрытия названия.\n */\n @Input()\n public isHovered: boolean = false;\n\n /**\n * Событие нажатия на карточку категории.\n */\n @Output()\n public clickOnCardEvent: EventEmitter<ScCategory> = new EventEmitter<ScCategory>();\n\n /**\n * Событие нажатия на кнопку избранной категории.\n */\n @Output()\n public clickOnFavoriteEvent: EventEmitter<ScCategory> = new EventEmitter<ScCategory>();\n\n /**\n * Инициализирует экземпляр класса {@link CategoryCardComponent}.\n *\n * @param urls Список ссылок на разделы backend'a.\n * @param renderer Экземпляр базового класса для реализации пользовательского рендеринга.\n * @param pathImageNotFound Путь до изображения 'Товар не найден'.\n */\n public constructor(\n @Inject(SC_URLS) private readonly urls: ScIUrls,\n private renderer: Renderer2,\n @Inject(SC_PATH_IMAGE_NOT_FOUND) private readonly pathImageNotFound: string,\n private readonly authService: ScAuthService,\n private readonly cdr: ChangeDetectorRef\n ) {}\n\n /**\n * Возвращает путь к изображению категории. Если путь отсутствует, то вернёт изображение по-умолчанию (\"product_not_found\").\n *\n * @param category Информация о категории.\n */\n public getCategoryImgURL(category: ScCategory): string {\n return category.properties?.image ? this.urls.imgServerUrl + '/' + category.properties?.image : this.pathImageNotFound;\n }\n\n /**\n * Обработчик события mousemove.\n */\n @HostListener('mousemove')\n private moveEnterHandler(): void {\n if (this.isHovered) {\n this.name.nativeElement.style.maxHeight = `${this.name.nativeElement.scrollHeight / 16}rem`;\n }\n }\n\n /**\n * Обработчик события mouseleave.\n */\n @HostListener('mouseleave')\n private mouseLeaveHandler(): void {\n if (this.isHovered) {\n this.renderer.setStyle(this.name.nativeElement, 'maxHeight', null);\n }\n }\n\n /**\n * Устанавливает компонент в очередь на обновление.\n */\n public markForCheck(): void {\n this.cdr.markForCheck();\n }\n}\n","<div class=\"relative group\">\n <button\n (click)=\"clickOnCardEvent.emit(category)\"\n [class.pointer-events-none]=\"!category || isSkeleton\"\n class=\"category-btn flex flex-col relative rounded-tui-radius-m overflow-hidden shadow-sc-2\"\n >\n <div class=\"img-wrapper w-full grow bg-tui-base-02 overflow-hidden\">\n <img *ngIf=\"category && !isSkeleton\" [src]=\"getCategoryImgURL(category)\" [alt]=\"category.name\" class=\"w-full\" />\n </div>\n <div #name [attr.data-is-hovered]=\"!isHovered\" class=\"name grid items-center justify-center font-bold bg-white w-full overflow-hidden shrink-0 duration-300\">\n <span *ngIf=\"category && !isSkeleton; else skeletonName\">{{ category.name }}</span>\n <ng-template #skeletonName>\n <div class=\"skeleton-name bg-tui-base-02 rounded-tui-radius-s\"></div>\n </ng-template>\n </div>\n </button>\n <sc-favorite-btn\n *ngIf=\"category && !isSkeleton && (authStatus$ | async)\"\n [showLoader]=\"favoriteShowLoader\"\n [isFavorite]=\"category.isFavorite\"\n (clickEvent)=\"clickOnFavoriteEvent.emit()\"\n class=\"absolute left-1 top-1\"\n ></sc-favorite-btn>\n</div>\n","/* eslint-disable @typescript-eslint/dot-notation */\n\nimport { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, HostListener, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { TuiSizeL, TuiSizeM, TuiSizeS } from '@taiga-ui/core';\nimport { AbstractTuiNullableControl, TuiInputNumberComponent } from '@taiga-ui/legacy';\n\nimport { stepValidator } from '../../validators';\n\n/**\n * Компонент поля ввода количества.\n */\n@Component({\n selector: 'sc-input-quantity',\n templateUrl: './sc-input-quantity.component.html',\n styleUrls: ['./sc-input-quantity.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScInputQuantityComponent extends AbstractTuiNullableControl<number> implements OnInit {\n /**\n * Компонент поля ввода.\n */\n @ViewChild(TuiInputNumberComponent)\n private readonly numberInput?: TuiInputNumberComponent;\n\n /**\n * Шаг увеличения количества. Отвечает за проверку кратности ввода.\n */\n @Input()\n public step: number = 1;\n\n /**\n * Признак, что необходимо отобразить {@link TuiLoaderComponent} над компонентом.\n */\n @Input()\n public showLoader: boolean = false;\n\n /**\n * Признак, что необходимо отобразить кнопку очистки поля ввода.\n */\n @Input()\n public showCross: boolean = true;\n\n /**\n * Признак, что необходимо игнорировать валидацию кратности и минимального количества.\n */\n @Input()\n public ignoreStepValidators: boolean = false;\n\n /**\n * Формат внешнего вида компонента.\n */\n @Input()\n @HostBinding('attr.data-appearance')\n public appearance: 'primary' | 'secondary' = 'primary';\n\n /**\n * Признак, что компонент деактивирован.\n */\n @Input()\n @HostBinding('attr.data-disabled')\n public isDisabled: boolean = false;\n\n /**\n * Размер компонента.\n */\n @Input()\n @HostBinding('attr.data-size')\n public size: TuiSizeL | TuiSizeM | TuiSizeS = 'm';\n\n /**\n * Событие нажатия на кнопку \"Очистить\".\n */\n @Output()\n public clickClearEvent: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Возвращает элемент, который может быть сфокусирован.\n */\n public get nativeFocusableElement(): HTMLInputElement | null | undefined {\n return this.numberInput?.nativeFocusableElement;\n }\n\n /** @inheritDoc */\n public get focused(): boolean {\n return !!this.numberInput?.focused;\n }\n\n /**\n * Элемент формы ввода количества.\n */\n public get formControl(): FormControl | null {\n return this.control as FormControl | null;\n }\n\n /** @inheritDoc */\n public override ngOnInit(): void {\n if (this.control) {\n this.control.setValidators(stepValidator(this.ignoreStepValidators ? 1 : this.step));\n }\n }\n\n /**\n * Обработчик события нажатия стрелок клавиатуры.\n *\n * @param step Шаг изменения количества.\n */\n @HostListener('keydown.arrowDown', ['-step'])\n @HostListener('keydown.arrowUp', ['step'])\n public onArrow(step: number | null): void {\n if (!step) {\n return;\n }\n\n if (step > 0) {\n this.incident();\n } else {\n this.decrement();\n }\n }\n\n /**\n * Увеличивает значение в поле ввода на 1 шаг. Если число в поле ввода не кратно шагу, то увеличит до ближайшего кратного значения.\n *\n * @param checkUpdateOn Признак, что нужно проверить `updateOn` свойство `formControl`.\n */\n public incident(checkUpdateOn = false): void {\n this.numberInput?.['onArrow'](this.step - ((this.numberInput.value ?? 0) % this.step));\n\n // eslint-disable-next-line no-underscore-dangle, @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n if (checkUpdateOn && (this.formControl as any)?._updateOn === 'blur') {\n this.control?.setValue(this.numberInput?.value);\n }\n }\n\n /**\n * Уменьшает значение в поле ввода на 1 шаг. Если число в поле ввода не кратно шагу, то уменьшит до ближайшего кратного значения.\n *\n * @param checkUpdateOn Признак, что нужно проверить `updateOn` свойство `formControl`.\n */\n public decrement(checkUpdateOn = false): void {\n this.numberInput?.['onArrow'](-((this.numberInput.value ?? 0) % this.step) || -this.step);\n\n // eslint-disable-next-line no-underscore-dangle, @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n if (checkUpdateOn && (this.formControl as any)?._updateOn === 'blur') {\n this.control?.setValue(this.numberInput?.value);\n }\n }\n\n /**\n * Очищает поля ввода.\n */\n public clear(): void {\n this.control?.patchValue(null);\n this.clickClearEvent.emit();\n }\n}\n","<tui-loader\n *ngIf=\"formControl\"\n class=\"w-full\"\n [overlay]=\"true\"\n [showLoader]=\"showLoader\"\n [size]=\"size\"\n>\n <div class=\"flex items-center gap-1 text-center\">\n <div class=\"field-with-button flex grow rounded-xl\">\n <button\n tuiIconButton\n [appearance]=\"appearance\"\n [disabled]=\"!numberInput['canDecrement']\"\n [size]=\"size\"\n (click.prevent)=\"decrement(true)\"\n >\n <tui-icon icon=\"@tui.minus\"></tui-icon>\n </button>\n <tui-input-number\n #numberInput\n [formControl]=\"formControl\"\n [tuiHint]=\"([] | tuiFieldError | async)?.message\"\n [tuiTextfieldLabelOutside]=\"true\"\n [min]=\"ignoreStepValidators ? 1 : step\"\n [tuiTextfieldSize]=\"size\"\n [required]=\"true\"\n [style.text-align]=\"'center'\"\n [style.font-weight]=\"700\"\n (focusin)=\"$any($event.target).select()\"\n oncontextmenu=\"return false;\"\n class=\"grow\"\n >\n </tui-input-number>\n <button\n tuiIconButton\n [appearance]=\"appearance\"\n [size]=\"size\"\n [disabled]=\"!numberInput['canIncrement']\"\n (click.prevent)=\"incident(true)\"\n (mousedown.prevent)=\"numberInput.nativeFocusableElement?.focus()\"\n >\n <tui-icon icon=\"@tui.plus\"></tui-icon>\n </button>\n </div>\n <button\n *ngIf=\"showCross\"\n tuiIconButton\n [appearance]=\"appearance\"\n [size]=\"size\"\n [disabled]=\"!numberInput['canIncrement']\"\n (click.prevent)=\"clear()\"\n >\n <tui-icon icon=\"@tui.x\"></tui-icon>\n </button>\n </div>\n</tui-loader>\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { ScIWarehouseStockCount, ScProduct, ScIWarehouse, ScWarehouseService } from '@snabcentr/client-core';\nimport { Observable, map, switchMap } from 'rxjs';\n\n/**\n * Компонент информации о наличии товара на складе.\n */\n@Component({\n selector: 'sc-price-warehouse-stock',\n templateUrl: './sc-price-warehouse-stock.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrls: ['sc-price-warehouse-stock.component.scss']\n})\nexport class ScPriceWarehouseStockComponent implements OnInit {\n /**\n * Строка классов для свойств статусов.\n */\n @Input() public classList: string;\n\n /**\n * Информация о товаре/услуге.\n */\n @Input() public product: ScProduct;\n\n /**\n * Признак, что необходимо отобразить подсказку по складам.\n */\n @Input() public withStockHint: boolean = true;\n\n /**\n * Признак, что необходимо отобразить список остатков по складам при выбранном основном складе.\n */\n @Input() public fromMain: boolean = true;\n\n /**\n * {@link Observable} изменения выбранного склада.\n */\n public selectedWarehouse$: Observable<ScIWarehouse | null>;\n\n /**\n * {@link Observable} изменения списка складов.\n */\n public warehousesList$?: Observable<{ sc: ScIWarehouseStockCount; w: ScIWarehouse | undefined }[] | undefined>;\n\n /**\n * Инициализирует экземпляр класса {@link ScPriceWarehouseStockComponent}.\n *\n * @param warehouseService Сервис для работы со складами.\n */\n public constructor(private readonly warehouseService: ScWarehouseService) {}\n\n /** @inheritDoc */\n public ngOnInit(): void {\n this.selectedWarehouse$ = this.fromMain ? this.warehouseService.getCatalogWarehouseChange$() : this.warehouseService.getWarehouseSelectChange$();\n\n this.warehousesList$ = this.selectedWarehouse$.pipe(\n switchMap((warehouse) =>\n this.warehouseService.getWarehouses$().pipe(\n map((warehouses: ScIWarehouse[]) => this.product.stockCount?.map((sc) => ({ w: warehouses.find((w) => w.id === sc.warehouseId), sc: sc }))),\n map((items) => items?.sort((item) => (item.w?.id === warehouse?.id ? -1 : 1)))\n )\n )\n );\n }\n}\n","<ng-container *ngIf=\"product\">\n <ng-container>\n <div *ngIf=\"selectedWarehouse$ | async as warehouseSelect\" class=\"flex items-center gap-1\">\n <span *ngIf=\"product.getNotStockMessage(warehouseSelect) as message\" class=\"text-xs min-w-2/5 text-tui-error-fill\" [ngClass]=\"classList\"> {{ message }} </span>\n <span *ngIf=\"product.isWarehouseStockExist(warehouseSelect.id)\" class=\"text-xs min-w-2/5 text-tui-success-fill\" [ngClass]=\"classList\">\n В наличии<ng-container *ngIf=\"product.getWarehouseStockCount(warehouseSelect.id) as count\"\n >:\n <span class=\"whitespace-nowrap\">{{ count }} {{ product.quantityUnit }}</span>\n </ng-container>\n </span>\n <span *ngIf=\"product.onOrder\" class=\"text-xs min-w-2/5 text-sc-yellow\" [ngClass]=\"classList\">Под заказ</span>\n\n <tui-icon \n *ngIf=\"withStockHint && (warehousesList$ | async)?.length\"\n icon=\"@tui.info\"\n [tuiHint]=\"stockHint\"\n [tuiHintShowDelay]=\"100\"\n tuiHintDirection=\"top\"\n class=\"!text-xs !h-3\"\n ></tui-icon>\n </div>\n </ng-container>\n</ng-container>\n\n<ng-template #stockHint>\n <table *ngIf=\"selectedWarehouse$ | async as warehouseSelect\" class=\"text-xs table-auto\" [ngClass]=\"classList\">\n <tbody>\n <tr *ngFor=\"let item of warehousesList$ | async\" class=\"border-b\">\n <ng-container>\n <td class=\"px-1\">{{ item.w?.name }}:</td>\n <td class=\"px-1\">{{ item.sc.count ? item.sc.count + ' ' + product.quantityUnit : 'В наличии' }}</td>\n </ng-container>\n </tr>\n </tbody>\n </table>\n</ng-template>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, HostBinding, inject, Input } from '@angular/core';\nimport { SEARCH_TERM_PROVIDERS } from '@snabcentr/client-core';\nimport { TUI_IS_MOBILE } from '@taiga-ui/cdk';\nimport { TuiSizeS } from '@taiga-ui/core';\n\nimport { AbstractScPriceCard } from '../../directives';\n\n/**\n * Компонент карточки товара.\n */\n@Component({\n selector: 'sc-price-card',\n templateUrl: './sc-price-card.component.html',\n styleUrls: ['./sc-price-card.component.scss'],\n providers: [SEARCH_TERM_PROVIDERS],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScPriceCardComponent extends AbstractScPriceCard {\n /**\n * Размер компонента.\n */\n @Input()\n @HostBinding('attr.data-size')\n public size: TuiSizeS = 'm';\n\n /**\n * Признак того, что этот компонент отображается на мобильном устройстве.\n */\n @HostBinding('attr.is_mobile')\n protected readonly isMobile: boolean = inject(TUI_IS_MOBILE);\n\n /**\n * Инициирует экземпляр класса {@link ScPriceCardComponent}.\n *\n * @param cdr Объект для работы с обнаружением изменений.\n */\n public constructor(private readonly cdr: ChangeDetectorRef) {\n super();\n }\n\n /**\n * Признак того, что компонент находится в корзине.\n */\n @HostBinding('attr.is_in_cart')\n get isInCart() {\n return Boolean(this.cartItem);\n }\n\n /**\n * Устанавливает компонент в очередь на обновление.\n */\n public markForCheck(): void {\n this.cdr.markForCheck();\n }\n}\n","<div\n *ngIf=\"product; else skeleton\"\n class=\"card-wrapper relative flex w-auto min-w-40 flex-col rounded-xl shadow-md\"\n>\n <div class=\"flex grow flex-col justify-center overflow-hidden rounded-xl p-2\">\n <img\n (click)=\"clickCardEvent.emit()\"\n [src]=\"getCardImagePreview()\"\n [alt]=\"product.name\"\n class=\"max-h-full w-full rounded-xl object-cover\"\n />\n <sc-favorite-btn\n *ngIf=\"authStatus$ | async\"\n class=\"absolute left-2 top-2\"\n (clickEvent)=\"clickFavoriteEvent.emit()\"\n [showLoader]=\"favoriteShowLoader\"\n [isFavorite]=\"product.isFavorite\"\n [disabled]=\"!!product.primaryCategory?.isFavorite\"\n ></sc-favorite-btn>\n <div class=\"absolute right-2 top-2 m-1 flex gap-2\">\n <tui-icon \n *ngIf=\"product.isPreviouslyOrdered\"\n icon=\"@tui.star\"\n class=\"!size-6 rounded-lg !fill-white text-tui-negative\"\n ></tui-icon>\n <tui-icon \n *ngIf=\"product.cartItem\"\n icon=\"@tui.check\"\n class=\"!size-6 rounded-lg bg-tui-primary text-white\"\n ></tui-icon>\n </div>\n </div>\n <div class=\"p-2\">\n <tui-elastic-container class=\"shrink-0\">\n <a\n tuiLink\n class=\"name\"\n \n [tuiHighlight]=\"(search$ | async) ?? ''\"\n (click)=\"clickCardEvent.emit()\"\n >\n {{ product.name }}\n </a>\n </tui-elastic-container>\n <tui-elastic-container class=\"shrink-0\">\n <p\n *ngIf=\"product?.pack\"\n class=\"text-tui-text-02\"\n >\n Норма упаковки: {{ product.pack }}\n <tui-svg\n *ngIf=\"product.ignoreMinCountCheck\"\n src=\"tuiIconPackage\"\n [tuiHint]=\"minCountHint\"\n [tuiHintShowDelay]=\"100\"\n tuiHintDirection=\"top\"\n ></tui-svg>\n <ng-template #minCountHint>\n Доступен заказ <br />\n произвольного <br />\n количества\n </ng-template>\n </p>\n <p\n [tuiHighlight]=\"(search$ | async) ?? ''\"\n class=\"code text-tui-text-02\"\n >\n Артикул: {{ product.code }}\n </p>\n\n <a\n tuiLink\n *ngIf=\"!isMobile && (authStatus$ | async) && product?.costDate\"\n \n aria-disabled=\"true\"\n class=\"history\"\n (click)=\"clickPriceHistoryEvent.emit()\"\n >\n Дата: {{ product.costDate }}\n </a>\n </tui-elastic-container>\n <div\n *ngIf=\"warehouseSelect$ | async as warehouseSelect\"\n class=\"flex flex-col\"\n >\n <span\n *ngIf=\"product.discount && !isMobile\"\n class=\"flex items-center text-tui-text-02\"\n >\n <span class=\"line-through\">{{ product.discountCostString }}</span> &nbsp;\n <span class=\"font-bold text-tui-success-fill\"> -{{ product.discount.percent }}% </span>\n <tui-icon \n icon=\"@tui.info\"\n [tuiHint]=\"discountHint\"\n [tuiHintShowDelay]=\"100\"\n tuiHintDirection=\"top\"\n class=\"!h-4 text-black\"\n ></tui-icon>\n <ng-template #discountHint>\n <div class=\"font-bold\">{{ product.discount.name }}</div>\n <div *ngIf=\"product.discount.expiredAt as expiredAt\">Дата окончания: {{ expiredAt }}</div>\n </ng-template>\n </span>\n <span\n [class.text-tui-text-02]=\"!product.isWarehouseStockExist(warehouseSelect.id)\"\n class=\"cost font-bold\"\n >{{ product.costRubString }}</span\n >\n <span\n *ngIf=\"!product.priceInRub\"\n class=\"hidden font-bold text-tui-text-02 group-hover:block\"\n >{{ product.costString }}</span\n >\n <sc-price-warehouse-stock [product]=\"product\"></sc-price-warehouse-stock>\n </div>\n <div class=\"cart-actions flex shrink-0 overflow-hidden\">\n <button\n *ngIf=\"!showQuantityControl\"\n tuiButton\n (click)=\"clickAddToCartEvent.emit(product)\"\n [loading]=\"quantityShowLoader\"\n [size]=\"size === 's' ? 'xs' : 's'\"\n class=\"mt-2 grow\"\n iconStart=\"@tui.shopping-cart\"\n >\n В корзину\n </button>\n <sc-input-quantity\n #inputQuantity\n *ngIf=\"showQuantityControl\"\n [formControl]=\"quantityControl\"\n [size]=\"size\"\n [step]=\"unitsHelper.productMultiplicity(product)\"\n [ignoreStepValidators]=\"product.ignoreMinCountCheck\"\n [showLoader]=\"quantityShowLoader\"\n (clickClearEvent)=\"clickClearEvent.emit(cartItem)\"\n class=\"mt-2 w-full\"\n (keydown.enter)=\"inputQuantity.nativeFocusableElement?.blur()\"\n ></sc-input-quantity>\n </div>\n </div>\n</div>\n\n<ng-template #skeleton>\n <div class=\"card-wrapper flex flex-col overflow-hidden rounded-xl bg-white shadow-sc-1\">\n <!-- Изображение товара -->\n <div class=\"h-3/5 w-full rounded-t bg-tui-base-02\"></div>\n <!-- Краткая информация о товаре -->\n <div class=\"flex grow flex-col gap-2.5 rounded-b bg-white p-5\">\n <div class=\"h-4 w-full rounded bg-tui-base-02\"></div>\n <div class=\"h-4 w-3/5 rounded bg-tui-base-02\"></div>\n <div class=\"h-4 w-full rounded bg-tui-base-02\"></div>\n </div>\n </div>\n</ng-template>\n","/* eslint-disable class-methods-use-this,lodash/prefer-lodash-method */\n\nimport { ChangeDetectionStrategy, Component, Inject, inject, Input, OnInit, Optional } from '@angular/core';\nimport { ScCatalogService, ScProduct, ScUserMetrikaGoalsEnum, ScUserMetrikaService } from '@snabcentr/client-core';\nimport { TUI_IS_MOBILE, TuiDay, TuiDayRange, tuiIsFalsy, tuiIsPresent, TuiMonth, tuiPure, TuiStringHandler } from '@taiga-ui/cdk';\nimport { TUI_MONTHS, TuiDialogContext } from '@taiga-ui/core';\nimport { POLYMORPHEUS_CONTEXT } from '@taiga-ui/polymorpheus';\nimport { filter, map, Observable, shareReplay, startWith, tap } from 'rxjs';\n\n/**\n * График истории цен товара или услуги.\n */\n@Component({\n selector: 'sc-price-history',\n templateUrl: './sc-price-history.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScPriceHistoryComponent implements OnInit {\n /**\n * {@link Observable} временного промежутка истории цен.\n */\n public range$: Observable<TuiDayRange>;\n\n /**\n * Товар или услуга, для которого необходимо отобразить историю цен.\n */\n @Input() public product: ScProduct;\n\n /**\n * {@link Observable} истории цен.\n */\n public history$?: Observable<ReadonlyArray<[TuiDay, number]> | null>;\n\n /**\n * {@link Observable} изменения состояния загрузки данных истории цен.\n */\n public loadingHistory$?: Observable<boolean>;\n\n /**\n * Максимальная цена товара.\n */\n public priceInfo$?: Observable<{\n min: number;\n max: number;\n }>;\n\n /**\n * Признак того, отображается этот компонент на мобильном устройстве или нет.\n */\n public readonly isMobile: boolean = inject(TUI_IS_MOBILE);\n\n /**\n * {@link Observable} функция для преобразования значения number в строку в подсказке по оси X.\n */\n public readonly xStringify$: Observable<TuiStringHandler<TuiDay>> = this.months$.pipe(\n map(\n (months) =>\n ({ month, day }) =>\n // eslint-disable-next-line security/detect-object-injection\n `${months[month]}, ${day}`\n )\n );\n\n /**\n * Относительные отступы от верхнего и нижнего края в процентах.\n */\n public readonly paddingPercent: number = 10;\n\n /**\n * Функция для преобразования значения number в строку в подсказке по оси Y.\n *\n * @param value Значение оси Y.\n */\n public readonly yStringify: TuiStringHandler<number> = (value) => `${value.toLocaleString('ru-RU')} ₽`;\n\n /**\n * Инициализирует экземпляр класса {@link ScPriceHistoryComponent}.\n *\n * @param catalogService Сервис для работы с каталогом.\n * @param months$ Перечисление месяцев.\n * @param userMetrikaService Сервис для сбора метрик о действиях пользователей.\n * @param context Контекст диалогового окна, в котором открыт компонент.\n */\n public constructor(\n private readonly catalogService: ScCatalogService,\n @Inject(TUI_MONTHS) private readonly months$: Observable<readonly string[]>,\n private readonly userMetrikaService: ScUserMetrikaService,\n @Optional()\n @Inject(POLYMORPHEUS_CONTEXT)\n private readonly context?: TuiDialogContext<void, { product: ScProduct }>\n ) {\n if (context) {\n this.product = context.data.product;\n }\n }\n\n /** @inheritDoc */\n public ngOnInit(): void {\n this.history$ = this.catalogService.getPriceHistory$(this.product).pipe(\n filter(tuiIsPresent),\n map((history) =>\n Object.keys(history)\n .map((item): [TuiDay, number] => [TuiDay.normalizeParse(item, 'DMY'), history[String(item)].cost])\n .sort((a, b) => (a[0] > b[0] ? 1 : -1))\n ),\n startWith(null),\n shareReplay({ bufferSize: 1, refCount: true })\n );\n\n this.loadingHistory$ = this.history$.pipe(map(tuiIsFalsy));\n\n this.priceInfo$ = this.history$.pipe(\n filter(tuiIsPresent),\n tap(() => {\n this.userMetrikaService.emitUserMetrikaEvent({\n target: ScUserMetrikaGoalsEnum.productPriceHistoryShow,\n params: {\n product_id: this.product.id,\n },\n });\n }),\n filter((history) => history.length > 1),\n map((history) => history.map((item) => item[1])),\n map((values) => ({\n min: Math.min(...values),\n max: Math.max(...values),\n }))\n );\n\n this.range$ = this.history$.pipe(\n filter(tuiIsPresent),\n filter((history) => history.length > 1),\n map((value: ReadonlyArray<[TuiDay, number]>) => ({ from: value.at(0)?.[0], to: value.at(-1)?.[0] })),\n filter((range): range is { from: TuiDay; to: TuiDay } => !!range.from && !!range.to),\n map((range) => new TuiDayRange(range.from, range.to))\n );\n }\n\n /**\n * Вычисляет подписи даты к оси X.\n *\n * @param param0 {@link TuiDayRange} Временной промежуток истории цен.\n * @param param0.from {@link TuiDay} Дата начала истории цен.\n * @param param0.to {@link TuiDay} Дата конца истории цен.\n */\n @tuiPure\n public computeLabels$({ from, to }: TuiDayRange): Observable<readonly string[]> {\n return this.months$.pipe(\n map((months) => [\n ...Array.from({ length: TuiMonth.lengthBetween(from, to) + 1 }, (_, index) => {\n const previousYear = from.append({ month: index - 1 }).year; // Начальный год\n const currentYear = from.append({ month: index }).year;\n\n return `${this.isMobile || previousYear === currentYear ? '' : currentYear} ${months[from.append({ month: index }).month]}`;\n }),\n '',\n ])\n );\n }\n\n /**\n * Вычисляет данные для отображения на графике.\n *\n * @param param0 {@link TuiDayRange} Временной промежуток истории цен.\n * @param param0.from {@link TuiDay} Дата начала истории цен.\n * @param param0.to {@link TuiDay} Дата конца истории цен.\n * @param history История цен.\n */\n @tuiPure\n public computeValue({ from, to }: TuiDayRange, history: ReadonlyArray<[TuiDay, number]>): ReadonlyArray<[TuiDay, number]> {\n return (\n Array.from({ length: TuiDay.lengthBetween(from, to) + 1 })\n .fill(0)\n // eslint-disable-next-line unicorn/no-array-reduce\n .reduce<ReadonlyArray<[TuiDay, number]>>((array, _, index) => {\n const data = from.append({ day: index });\n return [\n ...array,\n [\n data,\n (history.find((valueHistory, indexHistory, arrayHistory) => data.daySame(valueHistory[0]) || data.dayBefore(arrayHistory[indexHistory + 1][0])) ??\n history[0])[1],\n ],\n ];\n }, [])\n );\n }\n}\n","<tui-loader [showLoader]=\"!!(loadingHistory$ | async)\"> </tui-loader>\n\n<div\n *ngIf=\"(loadingHistory$ | async) === false\"\n class=\"flex flex-col items-center\"\n>\n <ng-container *ngIf=\"priceInfo$ | async as priceInfo; else isNotExist\">\n <div class=\"w-174 mb-1 text-end text-lg font-bold\">от {{ priceInfo.min.toLocaleString() }} ₽ до {{ priceInfo.max.toLocaleString() }} ₽</div>\n\n <ng-container *ngIf=\"history$ | async as history\">\n <div\n *ngIf=\"range$ | async as range\"\n class=\"relative h-56 w-full p-5 text-tui-primary\"\n >\n <tui-axes\n *ngIf=\"computeLabels$(range) | async as labels\"\n class=\"h-full\"\n [axisXLabels]=\"labels\"\n [horizontalLines]=\"4\"\n [verticalLines]=\"labels.length\"\n >\n <ng-container *tuiLet=\"priceInfo.max - priceInfo.min as height\">\n <tui-line-days-chart\n *ngIf=\"(height / 100) * paddingPercent as padding\"\n [height]=\"height + (height / 100) * paddingPercent * 2\"\n [smoothingFactor]=\"10\"\n [y]=\"priceInfo.min - (height / 100) * paddingPercent\"\n [value]=\"computeValue(range, history)\"\n [xStringify]=\"xStringify$ | async\"\n [yStringify]=\"yStringify\"\n [hintContent]=\"hint\"\n class=\"chart\"\n ></tui-line-days-chart>\n </ng-container>\n </tui-axes>\n </div>\n </ng-container>\n </ng-container>\n <ng-template #isNotExist>\n <p class=\"text-base font-bold\">Цена на товар не изменялась</p>\n </ng-template>\n <ng-template\n #hint\n let-data\n >\n <div class=\"font-bold\">{{ data[1].toLocaleString() }} ₽</div>\n <div>{{ data[0] }}</div>\n </ng-template>\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Inject, inject } from '@angular/core';\nimport { SC_NEXT_PAGE_PAGINATION_CLICK, SC_PRODUCT_PAGINATION_OPTIONS, ScICategoryProductPaginationParams, ScIPaginationMeta, ScPaginationService } from '@snabcentr/client-core';\nimport { tuiIsFalsy, tuiIsPresent } from '@taiga-ui/cdk';\nimport { filter, map, Observable } from 'rxjs';\n\n/**\n * Компонент элементов управления пагинацией списка товаров.\n */\n@Component({\n selector: 'sc-price-list-pagination',\n templateUrl: './sc-price-list-pagination.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScPriceListPaginationComponent {\n /**\n * Сервис пагинации.\n */\n private readonly paginationService = inject<ScPaginationService<ScICategoryProductPaginationParams>>(ScPaginationService<ScICategoryProductPaginationParams>, {\n skipSelf: true,\n });\n\n /**\n * Дополнительные данные пагинации.\n */\n public meta$: Observable<ScIPaginationMeta> = this.paginationService.dataAccumulated$.pipe(\n filter(tuiIsPresent),\n map((pagination) => pagination.meta)\n );\n\n /**\n * Признак, что кнопка неактивна.\n */\n public disabled$: Observable<boolean> = this.paginationService.dataAccumulated$.pipe(map(tuiIsFalsy));\n\n /**\n * Инициализирует экземпляр класса {@link ScPriceListPaginationComponent}.\n *\n * @param nextPageClickEvent Событие нажатия на кнопку \"Показать следующие N позиций\".\n * @param options Значения пагинации списка товаров категории по умолчанию.\n */\n public constructor(\n @Inject(SC_NEXT_PAGE_PAGINATION_CLICK) public readonly nextPageClickEvent: EventEmitter<void>,\n @Inject(SC_PRODUCT_PAGINATION_OPTIONS) public readonly options: ScICategoryProductPaginationParams\n ) {}\n}\n","<ng-container *ngIf=\"meta$ | async as meta\">\n <button\n *ngIf=\"meta?.currentPage !== meta?.lastPage\"\n tuiButton\n (click)=\"nextPageClickEvent.emit()\"\n [disabled]=\"!!(disabled$ | async)\"\n appearance=\"secondary\"\n class=\"!font-bold\"\n >\n Показать ещё {{ options.perPage }} товаров\n </button>\n</ng-container>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\nimport { TuiAxes, TuiLineDaysChart, TuiLineDaysChartHint } from '@taiga-ui/addon-charts';\nimport { TuiLet, TuiRepeatTimes } from '@taiga-ui/cdk';\nimport { TuiButton, TuiHint, TuiIcon, TuiLabel, TuiLink, TuiLoader } from '@taiga-ui/core';\nimport { TuiButtonLoading, TuiElasticContainer, TuiFieldErrorPipe, TuiHighlight } from '@taiga-ui/kit';\nimport { TuiInputNumberModule, TuiIslandDirective, TuiTextfieldControllerModule } from '@taiga-ui/legacy';\n\nimport { ScCategoriesListComponent } from './categories-list/sc-categories-list.component';\nimport { ScCategoryCardComponent } from './category-card/sc-category-card.component';\nimport { ScInputQuantityComponent } from './input-quantity/sc-input-quantity.component';\nimport { ScPriceCardComponent } from './price-card/sc-price-card.component';\nimport { ScPriceHistoryComponent } from './price-history/sc-price-history.component';\nimport { ScPriceListPaginationComponent } from './price-list-pagination/sc-price-list-pagination.component';\nimport { ScPriceWarehouseStockComponent } from './price-warehouse-stock/sc-price-warehouse-stock.component';\nimport { ScFavoriteBtnComponent as ScFavoriteButtonComponent } from './sc-favorite-btn/sc-favorite-btn.component';\n\n/**\n * Модуль каталога.\n */\n@NgModule({\n declarations: [\n ScPriceListPaginationComponent,\n ScCategoryCardComponent,\n ScFavoriteButtonComponent,\n ScInputQuantityComponent,\n ScPriceCardComponent,\n ScPriceWarehouseStockComponent,\n ScPriceHistoryComponent,\n ScCategoriesListComponent,\n ],\n exports: [\n ScPriceListPaginationComponent,\n ScCategoryCardComponent,\n ScFavoriteButtonComponent,\n ScInputQuantityComponent,\n ScPriceCardComponent,\n ScPriceWarehouseStockComponent,\n ScPriceHistoryComponent,\n ScCategoriesListComponent,\n ],\n imports: [\n CommonModule,\n RouterModule,\n TuiButton,\n TuiIcon,\n TuiIslandDirective,\n TuiInputNumberModule,\n TuiLabel,\n TuiTextfieldControllerModule,\n FormsModule,\n ReactiveFormsModule,\n ...TuiHint,\n TuiFieldErrorPipe,\n TuiLoader,\n TuiLink,\n TuiElasticContainer,\n TuiLet,\n TuiRepeatTimes,\n TuiHighlight,\n TuiLineDaysChart,\n TuiLineDaysChartHint,\n TuiAxes,\n TuiButtonLoading,\n ],\n})\nexport class ScCatalogModule {}\n","/* eslint-disable no-underscore-dangle */\n\nimport { ChangeDetectionStrategy, Component, EventEmitter, Inject, Input, OnInit, Output, TemplateRef, ViewChild } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { SC_PATH_IMAGE_NOT_FOUND, SC_URLS, ScCartItem, ScIUrls, ScProduct, ScUnitsHelper } from '@snabcentr/client-core';\nimport { TuiDialogContext } from '@taiga-ui/core';\nimport { TuiPreviewDialogService } from '@taiga-ui/kit';\nimport { Observable, skip } from 'rxjs';\n\n/**\n * Компонент карточки элемента корзины.\n */\n@Component({\n selector: 'sc-cart-item-mobile',\n templateUrl: './sc-cart-item-mobile.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScCartItemMobileComponent implements OnInit {\n /**\n * Элемент корзины.\n */\n @Input()\n public set cartItem(data: ScCartItem | undefined) {\n this._cartItem = data;\n\n if (data) {\n this.quantityControl.patchValue(data.quantity);\n }\n }\n\n /**\n * Элемент корзины.\n */\n public get cartItem(): ScCartItem | undefined {\n return this._cartItem;\n }\n\n /**\n * Ссылка на представление спецификации.\n */\n @ViewChild('specificationPreview')\n private readonly specificationPreviewRef?: TemplateRef<TuiDialogContext>;\n\n /**\n * {@link FormControl} поля ввода количества товара в корзине.\n */\n public quantityControl: FormControl<number | null> = new FormControl<number | null>(0, { updateOn: 'blur' });\n\n /**\n * {@link Observable} изменения количества товара в корзине.\n */\n @Output()\n public quantityValueChanges: Observable<number | null> = this.quantityControl.valueChanges.pipe(skip(1));\n\n /**\n * Событие нажатия на кнопку \"Удалить из корзины\".\n */\n @Output()\n public clickDeleteEvent: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на кнопку \"Удалить из корзины\".\n */\n @Output()\n public clickSettingsEvent: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на карточку.\n */\n @Output()\n public clickCardEvent: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Элемент корзины.\n */\n private _cartItem?: ScCartItem;\n\n /**\n * Инициирует экземпляр класса {@link ScCartItemMobileComponent}.\n *\n * @param unitsHelper Экземпляр класса-помощника для работы со значениями единиц измерения товара.\n * @param previewDialogService Сервис диалогового окна предварительного просмотра.\n * @param urls Список ссылок на разделы backend'a.\n * @param pathImageNotFound Путь до изображения 'Товар не найден'.\n */\n public constructor(\n public readonly unitsHelper: ScUnitsHelper,\n @Inject(TuiPreviewDialogService)\n private readonly previewDialogService: TuiPreviewDialogService,\n @Inject(SC_URLS) private readonly urls: ScIUrls,\n @Inject(SC_PATH_IMAGE_NOT_FOUND) private readonly pathImageNotFound: string\n ) {}\n\n /**\n * Продукт элемента корзины.\n */\n public get product(): ScProduct | undefined {\n return this.cartItem?.product;\n }\n\n /** @inheritDoc */\n public ngOnInit(): void {\n this.quantityValueChanges = this.quantityControl.valueChanges;\n }\n\n /**\n * Отобразить спецификацию.\n */\n public showSpecification(): void {\n this.previewDialogService.open(this.specificationPreviewRef ?? '').subscribe();\n }\n\n /**\n * Возвращает ссылку на изображение карточки товара.\n */\n public getCardImage(): string {\n return this.product?.getImagePreview(this.urls.imgServerUrl) ?? this.urls.imgServerUrl + this.pathImageNotFound;\n }\n}\n","<ng-container *ngIf=\"cartItem && product; else skeleton\">\n <div class=\"flex min-w-72 gap-2 rounded-xl border border-tui-base-04 bg-white p-2 shadow-sc-2\">\n <div class=\"flex w-40 items-center\">\n <img\n (click)=\"clickCardEvent.emit()\"\n [src]=\"getCardImage()\"\n [alt]=\"product.name\"\n class=\"max-h-full w-full rounded-xl object-cover\"\n />\n </div>\n <div class=\"flex w-full flex-col items-center justify-between gap-2 sm:flex-row sm:gap-5\">\n <div class=\"flex max-w-full flex-col gap-1 self-start\">\n <a\n tuiLink\n (click)=\"clickCardEvent.emit()\"\n >\n <span class=\"font-bold\">{{ product.name }}</span>\n </a>\n\n <div class=\"flex w-full flex-wrap gap-x-2 gap-y-1 text-xs text-tui-base-05\">\n <p *ngIf=\"product.pack\">\n Норма упаковки: {{ product.pack }}\n <tui-svg\n *ngIf=\"product.ignoreMinCountCheck\"\n src=\"tuiIconPackage\"\n [tuiHint]=\"minCountHint\"\n [tuiHintShowDelay]=\"100\"\n tuiHintDirection=\"top\"\n ></tui-svg>\n <ng-template #minCountHint>\n Доступен заказ <br />\n произвольного <br />\n количества\n </ng-template>\n </p>\n <p>Артикул: {{ product.code }}</p>\n </div>\n\n <div class=\"flex w-full flex-wrap items-center gap-x-2 gap-y-1\">\n <p\n *ngIf=\"!product.priceInRub\"\n class=\"font-bold\"\n >\n {{ product.costString }}\n </p>\n <p class=\"text-xs font-bold text-tui-base-05\">{{ product.costRubString }}</p>\n <span\n *ngIf=\"product.discount\"\n class=\"flex items-center\"\n >\n <span class=\"line-through\">{{ product.discountCostString }}</span> &nbsp;\n <span class=\"font-bold text-tui-success-fill\"> -{{ product.discount.percent }}% </span>\n <tui-icon\n icon=\"@tui.info\"\n [tuiHint]=\"discountHint\"\n [tuiHintShowDelay]=\"100\"\n tuiHintDirection=\"top\"\n class=\"!h-4 !text-xs\"\n ></tui-icon>\n <ng-template #discountHint>\n <div class=\"font-bold\">{{ product.discount.name }}</div>\n <div *ngIf=\"product.discount.expiredAt as expiredAt\">Дата окончания: {{ expiredAt }}</div>\n </ng-template>\n </span>\n </div>\n\n <sc-price-warehouse-stock [product]=\"product\"></sc-price-warehouse-stock>\n\n <div\n *ngIf=\"cartItem.height || cartItem.length || cartItem.width\"\n class=\"flex items-center gap-1\"\n >\n <button\n tuiIconButton\n iconStart=\"@tui.settings\"\n (click)=\"clickSettingsEvent.emit()\"\n size=\"s\"\n appearance=\"secondary\"\n class=\"mr-2 !self-center\"\n ></button>\n <div class=\"flex flex-wrap gap-x-2 text-xs font-thin text-tui-base-04\">\n <p *ngIf=\"cartItem.marker\">Маркировка: {{ cartItem.marker }}</p>\n <p *ngIf=\"cartItem.width\">Ширина: {{ cartItem.width }} м.</p>\n <ng-container *ngIf=\"cartItem.height; else length\">\n <p>Высота: {{ cartItem.height }} м.</p>\n </ng-container>\n <ng-template #length>\n <p *ngIf=\"cartItem.length\">Длина: {{ cartItem.length }} м.</p>\n </ng-template>\n </div>\n </div>\n\n <a\n tuiLink\n *ngIf=\"cartItem.specificationImgUrl\"\n (click)=\"showSpecification()\"\n >Спецификация</a\n >\n <ng-template\n #specificationPreview\n let-preview\n >\n <tui-preview\n [rotatable]=\"false\"\n [zoomable]=\"false\"\n >\n <img\n *polymorpheusOutlet=\"cartItem.specificationImgUrl as src\"\n alt=\"preview\"\n [src]=\"cartItem.specificationImgUrl\"\n />\n <button\n iconStart=\"@tui.x\"\n title=\"Close\"\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n (click)=\"preview.complete()\"\n ></button>\n </tui-preview>\n </ng-template>\n </div>\n <div class=\"flex flex-col gap-1 self-start sm:mr-9 sm:self-center\">\n <div class=\"flex gap-2\">\n <sc-input-quantity\n #inputQuantity\n *ngIf=\"quantityControl\"\n [formControl]=\"quantityControl\"\n [showCross]=\"false\"\n size=\"s\"\n [step]=\"unitsHelper.productMultiplicity(product)\"\n [ignoreStepValidators]=\"product.ignoreMinCountCheck\"\n (keydown.enter)=\"inputQuantity.nativeFocusableElement?.blur()\"\n class=\"w-28\"\n ></sc-input-quantity>\n <button\n tuiIconButton\n iconStart=\"@tui.trash-2\"\n [style.border-radius.%]=\"100\"\n size=\"xs\"\n (click)=\"clickDeleteEvent.emit()\"\n ></button>\n </div>\n <p class=\"text-sm font-bold text-tui-text-01\">Итого: {{ cartItem.costRub | tuiFormatNumber }} {{ 'RUB' | tuiCurrency }}</p>\n </div>\n </div>\n </div>\n</ng-container>\n\n<ng-template #skeleton>\n <div class=\"flex w-full gap-2\">\n <div class=\"size-20 rounded-xl bg-tui-base-02\"></div>\n <div class=\"flex grow flex-col gap-2.5 bg-white\">\n <div class=\"h-4 w-full rounded-xl bg-tui-base-02\"></div>\n <div class=\"h-4 w-3/5 rounded-xl bg-tui-base-02\"></div>\n <div class=\"h-4 w-4/5 rounded-xl bg-tui-base-02\"></div>\n </div>\n </div>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TuiCurrencyPipe } from '@taiga-ui/addon-commerce';\nimport { TuiButton, TuiFormatNumberPipe, TuiHint, TuiIcon, TuiLink } from '@taiga-ui/core';\nimport { TuiPreview } from '@taiga-ui/kit';\nimport { PolymorpheusOutlet, PolymorpheusTemplate } from '@taiga-ui/polymorpheus';\n\nimport { ScCatalogModule } from '../catalog';\nimport { ScCartItemMobileComponent } from './cart-item-mobile/sc-cart-item-mobile.component';\n\n/**\n * Модуль корзины.\n */\n@NgModule({\n declarations: [ScCartItemMobileComponent],\n exports: [ScCartItemMobileComponent],\n imports: [\n CommonModule,\n TuiLink,\n ScCatalogModule,\n TuiButton,\n TuiCurrencyPipe,\n TuiFormatNumberPipe,\n TuiIcon,\n ...TuiHint,\n FormsModule,\n ReactiveFormsModule,\n ...TuiPreview,\n PolymorpheusTemplate,\n PolymorpheusOutlet,\n ],\n})\nexport class ScCartModule {}\n","/* eslint-disable @typescript-eslint/unbound-method,lodash/prefer-lodash-method */\n\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { AfterViewInit, ChangeDetectionStrategy, Component, DestroyRef, Inject, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport {\n ScConvertersService,\n ScDeliveryAddressService,\n ScIDeliveryAddress,\n ScIDeliveryAddressOnDataCreate,\n ScISuggestionAddress,\n ScISuggestionType,\n ScSuggestion,\n ScUserMetrikaGoalsEnum,\n ScUserMetrikaService,\n} from '@snabcentr/client-core';\nimport { TUI_IS_MOBILE } from '@taiga-ui/cdk';\nimport { TuiDialogContext } from '@taiga-ui/core';\nimport { POLYMORPHEUS_CONTEXT } from '@taiga-ui/polymorpheus';\nimport { YaReadyEvent } from 'angular8-yandex-maps';\nimport { ApiErrorResponse } from 'projects/client-ui/auth';\nimport { catchError, filter, map, Observable, of, share, startWith, Subject, switchMap, tap } from 'rxjs';\n\n/**\n * Компонент добавления адреса доставки.\n */\n@Component({\n selector: 'sc-add-delivery-address-dialog',\n templateUrl: './sc-add-delivery-address-dialog.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScAddDeliveryAddressDialogComponent implements AfterViewInit {\n /**\n * Округляет координаты до 6 цифр после запятой.\n *\n * @param coords Координаты точки.\n */\n private static roundCoordinate(coords: number[]): number[] {\n return coords.map((coord) => Math.round(coord * 1e6) / 1e6);\n }\n\n /**\n * Ссылка для автоматического управления уничтожением зависимостей.\n */\n private destroyRef: DestroyRef = inject(DestroyRef);\n\n /**\n * Признак того, отображается этот компонент на мобильном устройстве или нет.\n */\n public readonly isMobile: boolean = inject(TUI_IS_MOBILE);\n\n /**\n * Перечисление типов подсказок.\n */\n public readonly suggestionType: typeof ScISuggestionType = ScISuggestionType;\n\n /**\n * {@link Subject} события отправки формы.\n */\n public readonly onSubmit$: Subject<void> = new Subject<void>();\n\n /**\n * Координаты центра карты по умолчанию.\n */\n public readonly defaultCenterMap: number[] = [57.000353, 40.97393];\n\n /**\n * Масштаб карты по умолчанию.\n */\n public readonly defaultZoomMap: number = 11;\n\n /**\n * {@link Observable} запроса данных добавления адрес доставки.\n */\n private readonly request$: Observable<ScIDeliveryAddress | null> = this.onSubmit$.pipe(\n filter(() => this.form.valid),\n map(() => this.form.value as ScIDeliveryAddressOnDataCreate),\n switchMap((value) =>\n this.deliveryAddressService.createDeliveryAddress$(this.convertersService.removeNullRecursive<ScIDeliveryAddressOnDataCreate>(value)).pipe(\n tap(() => {\n this.context.completeWith();\n }),\n catchError((error: unknown) => {\n if (error instanceof HttpErrorResponse) {\n const { errors, message } = error.error as ApiErrorResponse;\n\n if (errors) {\n Object.keys(errors).forEach((key) => {\n this.form.get(key)?.setErrors({ serverResponse: errors[key] });\n });\n } else if (message) {\n this.form.setErrors({ serverResponse: [message] });\n }\n }\n\n return of({} as ScIDeliveryAddress);\n }),\n startWith(null)\n )\n ),\n share()\n );\n\n /**\n * {@link Observable} изменения состояния загрузки данных.\n */\n public readonly loading$: Observable<boolean> = this.request$.pipe(map((data) => data === null));\n\n /**\n * Группа с полями адресов.\n */\n public addressControl: FormControl<ScISuggestionAddress | string | null> = new FormControl<ScISuggestionAddress | string | null>(null, Validators.required);\n\n /**\n * Настройки карты.\n */\n public options: ymaps.IMapOptions = {\n autoFitToViewport: 'always',\n yandexMapDisablePoiInteractivity: false,\n maxZoom: 19,\n };\n\n /**\n * Форма для создания адреса доставки.\n */\n public readonly form = new FormGroup({\n address: this.addressControl,\n coordinates: new FormGroup({\n lat: new FormControl<number | null>(null, Validators.required),\n long: new FormControl<number | null>(null, Validators.required),\n }),\n contact: new FormGroup({\n name: new FormControl<string | null>(null, Validators.required),\n phone: new FormControl<string | null>(null, [Validators.required, Validators.minLength(12)]),\n email: new FormControl<string | null>(null, Validators.email),\n position: new FormControl<string | null>(null, Validators.required),\n }),\n });\n\n /**\n * Точка адреса на карте.\n */\n public addressPlacemark?: ymaps.Placemark;\n\n /**\n * Яндекс карта.\n */\n public yaMap?: ymaps.Map;\n\n /**\n * Инициализирует экземпляр класса {@link ScAddDeliveryAddressDialogComponent}.\n *\n * @param deliveryAddressService Сервис работы с адресами доставки.\n * @param userMetrikaService Сервис для сбора метрик о действиях пользователей.\n * @param context Контекст диалогового окна, в котором открыт компонент.\n * @param convertersService Сервис конвертации данных.\n */\n public constructor(\n private readonly deliveryAddressService: ScDeliveryAddressService,\n private readonly userMetrikaService: ScUserMetrikaService,\n @Inject(POLYMORPHEUS_CONTEXT) public readonly context: TuiDialogContext<void, void>,\n private readonly convertersService: ScConvertersService\n ) {}\n\n /** @inheritdoc */\n public ngAfterViewInit(): void {\n this.userMetrikaService.emitUserMetrikaEvent({\n target: ScUserMetrikaGoalsEnum.userProfileDeliveryAddressAddShow,\n });\n\n this.addressControl.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.removeGeoCoordinates();\n });\n }\n\n /**\n * Обработчик загрузки карты на странице.\n *\n * @param target Экземпляр целевого объекта.\n * @param target.target\n */\n public onMapReadyHandle({ target }: YaReadyEvent<ymaps.Map>): void {\n this.yaMap = target;\n\n if (this.addressPlacemark) {\n target.geoObjects.add(this.addressPlacemark);\n\n const bounds = this.addressPlacemark.geometry?.getBounds();\n\n if (bounds) {\n target.setBounds(bounds);\n }\n }\n }\n\n /**\n * Обработчик выбора адреса доставки.\n *\n * @param suggestion Объект подсказки ареса.\n */\n public onSelectedAddress(suggestion: ScSuggestion): void {\n if ('addressString' in suggestion && suggestion.geoCoordinates) {\n const coords = ScAddDeliveryAddressDialogComponent.roundCoordinate([suggestion.geoCoordinates.lat, suggestion.geoCoordinates.long]);\n\n if (!this.addressPlacemark) {\n this.addressPlacemark = this.createPlacemark(coords);\n }\n\n this.setGeoCoordinates(coords);\n\n if (!this.yaMap?.geoObjects.getLength()) {\n this.yaMap?.geoObjects.add(this.addressPlacemark);\n }\n\n const bounds = this.addressPlacemark.geometry?.getBounds();\n\n if (bounds) {\n this.yaMap?.setBounds(bounds);\n this.yaMap?.setZoom(17);\n }\n }\n }\n\n /**\n * Устанавливает {@link addressPlacemark} точку на определённые координаты.\n *\n * @param coords Координаты точки.\n */\n private setGeoCoordinates(coords: number[]): void {\n if (this.addressPlacemark) {\n this.addressPlacemark.geometry?.setCoordinates(coords);\n\n this.form.patchValue({\n coordinates: {\n lat: Number(coords[0].toFixed(6)),\n long: Number(coords[1].toFixed(6)),\n },\n });\n }\n }\n\n /**\n * Устанавливает {@link addressPlacemark} точку на определённые координаты.\n */\n private removeGeoCoordinates(): void {\n if (this.addressPlacemark) {\n this.yaMap?.geoObjects.remove(this.addressPlacemark);\n\n this.form.patchValue({\n coordinates: {\n lat: null,\n long: null,\n },\n });\n\n this.yaMap?.setCenter(this.defaultCenterMap);\n this.yaMap?.setZoom(this.defaultZoomMap);\n }\n }\n\n /**\n * Создаёт объект точки и устанавливает события для него.\n *\n * @param coords Координаты точки.\n */\n private createPlacemark(coords: number[]): ymaps.Placemark {\n const placemark = new ymaps.Placemark(\n coords,\n {\n iconCaption: '',\n },\n {\n preset: 'islands',\n draggable: true,\n }\n );\n\n placemark.events.add('dragend', () => {\n const coord = this.addressPlacemark?.geometry?.getCoordinates();\n\n if (coord) {\n this.setGeoCoordinates(ScAddDeliveryAddressDialogComponent.roundCoordinate(coord));\n }\n });\n\n return placemark;\n }\n}\n","<div class=\"relative flex flex-col gap-3 md:flex-row\">\n <form\n [formGroup]=\"form\"\n (ngSubmit)=\"onSubmit$.next()\"\n class=\"flex w-full flex-col gap-3\"\n >\n <label tuiLabel>Адрес доставки\n <tui-input\n [pseudoInvalid]=\"(addressControl.valid && form.controls.coordinates.invalid) || null\"\n formControlName=\"address\"\n >\n Адрес доставки\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.address\"\n (selectedClick)=\"onSelectedAddress($event)\"\n ></sc-suggestion-field>\n <input\n tuiTextfieldLegacy\n autocomplete=\"new-password\"\n />\n </tui-input>\n <tui-error\n formControlName=\"address\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n <tui-error\n *ngIf=\"addressControl.valid && form.controls.coordinates.invalid\"\n error=\"Выберите вариант из списка\"\n ></tui-error>\n </label>\n <div\n formGroupName=\"contact\"\n class=\"flex grow flex-col gap-2\"\n >\n <p class=\"w-full font-bold\">Контактное лицо:</p>\n <label tuiLabel>Ф.И.О.\n <tui-input formControlName=\"name\">\n Ф.И.О.\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.fio\"\n ></sc-suggestion-field>\n </tui-input>\n <tui-error\n formControlName=\"name\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <label tuiLabel>Телефон\n <tui-input-phone formControlName=\"phone\"> Телефон </tui-input-phone>\n <tui-error\n formControlName=\"phone\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <label tuiLabel>Адрес электронной почты\n <tui-input formControlName=\"email\">\n <input\n tuiTextfieldLegacy\n type=\"email\"\n />\n Адрес электронной почты\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.email\"\n ></sc-suggestion-field>\n </tui-input>\n <tui-error\n formControlName=\"email\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <label tuiLabel>Должность\n <tui-input formControlName=\"position\"> Должность </tui-input>\n <tui-error\n formControlName=\"position\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n </div>\n <div class=\"flex justify-center gap-8\">\n <button\n tuiButton\n (click)=\"context.$implicit.complete()\"\n type=\"button\"\n [iconStart]=\"isMobile ? '@tui.x' : '@tui.x'\"\n appearance=\"secondary\"\n >\n Отмена\n </button>\n <button\n tuiButton\n [iconStart]=\"isMobile ? '@tui.save' : '@tui.save'\"\n [disabled]=\"form.invalid\"\n [loading]=\"!!(loading$ | async)\"\n type=\"submit\"\n >\n Добавить\n </button>\n </div>\n </form>\n\n <div\n class=\"absolute -z-10 flex size-full md:w-1/2\"\n [ngClass]=\"{ 'z-0 relative': addressPlacemark }\"\n >\n <div\n class=\"flex-auto\"\n [ngClass]=\"{ 'pointer-events-none opacity-50': form.controls.coordinates.invalid }\"\n >\n <ya-map\n [zoom]=\"11\"\n [state]=\"{ controls: [] }\"\n (ready)=\"onMapReadyHandle($event)\"\n [options]=\"options\"\n ></ya-map>\n </div>\n </div>\n</div>\n","import { Component, ChangeDetectionStrategy, Output, EventEmitter, Input, OnInit } from '@angular/core';\nimport { ScDeliveryAddressService, ScIContact, ScIDeliveryAddress } from '@snabcentr/client-core';\nimport { Observable } from 'rxjs';\n\n/**\n * Компонент адреса доставки.\n */\n@Component({\n selector: 'sc-delivery-address-accordion-item',\n templateUrl: './sc-delivery-address-accordion-item.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScDeliveryAddressAccordionItemComponent implements OnInit {\n /**\n * Адрес доставки.\n */\n @Input()\n public deliveryAddress: ScIDeliveryAddress;\n\n /**\n * Список банковских счетов контрагента.\n */\n public contacts$?: Observable<ScIContact[] | null>;\n\n /**\n * Событие нажатия на кнопку удаления адреса доставки.\n */\n @Output()\n public deleteDeliveryAddressClick: EventEmitter<ScIDeliveryAddress> = new EventEmitter<ScIDeliveryAddress>();\n\n /**\n * Событие нажатия на кнопку добавления контактного лица адресу доставки.\n */\n @Output()\n public addDeliveryAddressContactClick: EventEmitter<ScIDeliveryAddress> = new EventEmitter<ScIDeliveryAddress>();\n\n /**\n * Событие нажатия на кнопку удаления контактного лица адреса доставки.\n */\n @Output()\n public deleteDeliveryAddressContactClick: EventEmitter<{ contact: ScIContact; address: ScIDeliveryAddress }> = new EventEmitter<{ contact: ScIContact; address: ScIDeliveryAddress }>();\n\n /**\n * Инициализирует экземпляр класса {@link ScDeliveryAddressAccordionItemComponent}.\n *\n * @param deliveryAddressService Сервис работы с адресами доставки.\n */\n public constructor(private readonly deliveryAddressService: ScDeliveryAddressService) {}\n\n /** @inheritDoc */\n public ngOnInit(): void {\n this.contacts$ = this.deliveryAddressService.getDeliveryAddressContacts$(this.deliveryAddress.id);\n }\n\n /**\n * Обработчик нажатия на кнопку удаления контактного лица у адреса доставки.\n *\n * @param contact Контактное лицо.\n * @param address Адрес доставки клиента.\n */\n public onDeleteContragentContactClick(contact: ScIContact, address: ScIDeliveryAddress): void {\n this.deleteDeliveryAddressContactClick.emit({ contact: contact, address: address });\n }\n}\n","<sc-accordion [showAddButton]=\"false\">\n {{ deliveryAddress.address }}\n\n <ng-template scAccordionContent>\n <div class=\"flex flex-col gap-2\">\n <div class=\"flex gap-2\">\n <div class=\"flex flex-col gap-2 grow\">\n <span> Адрес: {{ deliveryAddress.address }} </span>\n <span *ngIf=\"deliveryAddress.comment\"> Комментарий: {{ deliveryAddress.comment }} </span>\n </div>\n <!-- Функционал удаления временно не доступен пользователю. -->\n <!-- <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n icon=\"@tui.trash-2\"\n appearance=\"flat\"\n (click)=\"$event.stopPropagation(); deleteDeliveryAddressClick.emit(deliveryAddress)\"\n ></button> -->\n </div>\n\n <sc-contacts-accordion\n *ngIf=\"contacts$\"\n [contacts$]=\"contacts$\"\n (addContactClick)=\"addDeliveryAddressContactClick.next(deliveryAddress)\"\n (deleteButtonClick)=\"onDeleteContragentContactClick($event, deliveryAddress)\"\n ></sc-contacts-accordion>\n </div>\n </ng-template>\n</sc-accordion>\n","import { Component, ChangeDetectionStrategy, Output, EventEmitter } from '@angular/core';\nimport { ScDeliveryAddressService, ScIContact, ScIDeliveryAddress } from '@snabcentr/client-core';\nimport { Observable } from 'rxjs';\n\n/**\n * Компонент адресов доставки.\n */\n@Component({\n selector: 'sc-delivery-address-accordion',\n templateUrl: './sc-delivery-address-accordion.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScDeliveryAddressAccordionComponent {\n /**\n * {@link Observable} данных адресов доставки.\n */\n public deliveryAddress$: Observable<ScIDeliveryAddress[] | null> = this.deliveryAddressService.deliveryAddresses$;\n\n /**\n * Событие нажатия на кнопку добавления адреса доставки клиента.\n */\n @Output()\n public addDeliveryAddressClick: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на кнопку удаления адреса доставки клиента.\n */\n @Output()\n public deleteDeliveryAddressClick: EventEmitter<ScIDeliveryAddress> = new EventEmitter<ScIDeliveryAddress>();\n\n /**\n * Событие нажатия на кнопку добавления контактного лица для адреса доставки.\n */\n @Output()\n public addDeliveryAddressContactClick: EventEmitter<ScIDeliveryAddress> = new EventEmitter<ScIDeliveryAddress>();\n\n /**\n * Событие нажатия на кнопку удаления контактного лица у адреса доставки.\n */\n @Output()\n public deleteDeliveryAddressContactClick: EventEmitter<{ contact: ScIContact; address: ScIDeliveryAddress }> = new EventEmitter<{ contact: ScIContact; address: ScIDeliveryAddress }>();\n\n /**\n * Инициализирует экземпляр класса {@link ScDeliveryAddressAccordionComponent}.\n *\n * @param deliveryAddressService Сервис работы с адресами доставки.\n */\n public constructor(private readonly deliveryAddressService: ScDeliveryAddressService) {}\n}\n","<sc-accordion (addButtonClick)=\"addDeliveryAddressClick.emit()\">\n Адреса доставки\n <ng-template scAccordionContent>\n <tui-loader *tuiLet=\"deliveryAddress$ | async as deliveryAddress\" [overlay]=\"true\" [showLoader]=\"deliveryAddress === null\">\n <div class=\"flex flex-col gap-2\">\n <ng-container *ngIf=\"!deliveryAddress || deliveryAddress.length; else contragentsNotExist\">\n <sc-delivery-address-accordion-item\n *ngFor=\"let address of deliveryAddress\"\n [deliveryAddress]=\"address\"\n (deleteDeliveryAddressClick)=\"deleteDeliveryAddressClick.emit($event)\"\n (addDeliveryAddressContactClick)=\"addDeliveryAddressContactClick.emit($event)\"\n (deleteDeliveryAddressContactClick)=\"deleteDeliveryAddressContactClick.emit($event)\"\n ></sc-delivery-address-accordion-item>\n </ng-container>\n\n <ng-template #contragentsNotExist>\n <tui-notification size=\"l\"><div>\n <div class=\"flex flex-wrap gap-2 font-medium\">Адреса доставки не указаны.</div>\n </div></tui-notification>\n </ng-template>\n </div>\n </tui-loader>\n </ng-template>\n</sc-accordion>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TuiLet } from '@taiga-ui/cdk';\nimport { TuiButton, TuiDataList, TuiError, TuiLabel, TuiLoader, TuiNotification } from '@taiga-ui/core';\nimport { TuiButtonLoading, TuiElasticContainer, TuiFieldErrorPipe } from '@taiga-ui/kit';\nimport { TuiInputModule, TuiInputPhoneModule } from '@taiga-ui/legacy';\nimport { AngularYandexMapsModule } from 'angular8-yandex-maps';\n\nimport { ScAccordionModule } from '../accordion';\nimport { ScContactsModule } from '../contacts/sc-contacts.module';\nimport { ScFormFieldsModule } from '../form-fields/form-fields.module';\nimport { ScAddDeliveryAddressDialogComponent } from './add-delivery-address-dialog/sc-add-delivery-address-dialog.component';\nimport { ScDeliveryAddressAccordionItemComponent } from './delivery-address-accordion/delivery-address-accordion-item/sc-delivery-address-accordion-item.component';\nimport { ScDeliveryAddressAccordionComponent } from './delivery-address-accordion/sc-delivery-address-accordion.component';\n\n/**\n * Модуль для отображение адресов доставки разделами, с возможностью скрывать и отображать содержимое.\n */\n@NgModule({\n declarations: [ScDeliveryAddressAccordionComponent, ScDeliveryAddressAccordionItemComponent, ScAddDeliveryAddressDialogComponent],\n imports: [\n CommonModule,\n ScAccordionModule,\n TuiButton,\n TuiLoader,\n TuiLet,\n TuiNotification,\n ScContactsModule,\n FormsModule,\n ReactiveFormsModule,\n TuiLabel,\n TuiFieldErrorPipe,\n TuiError,\n TuiInputModule,\n TuiInputPhoneModule,\n ScFormFieldsModule,\n ...TuiDataList,\n AngularYandexMapsModule.forRoot({\n lang: 'ru_RU',\n }),\n TuiElasticContainer,\n TuiButtonLoading,\n ],\n exports: [ScDeliveryAddressAccordionComponent, ScAddDeliveryAddressDialogComponent],\n})\nexport class ScDeliveryAddressModule {}\n","/* eslint-disable class-methods-use-this */\n\nimport { Injectable } from '@angular/core';\nimport { ScDocumentInfo, ScDocumentInfoTypesEnum, ScIconTypesEnum } from '@snabcentr/client-core';\n\n/**\n * Сервис работающий с значками элементов дерева.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class TreeIconService {\n /**\n * Назначает значок элементу дерева в зависимости от типа файла.\n *\n * @param info Объект пришедших данных о файле.\n * @returns Возвращает название значка в виде строки.\n */\n public getIconName(info: ScDocumentInfo): string {\n switch (info.icon) {\n case ScIconTypesEnum.iconImage:\n return '@tui.image';\n case ScIconTypesEnum.iconPdfFile:\n return '@tui.sc.file-p';\n case ScIconTypesEnum.iconWordFile:\n return '@tui.sc.file-w';\n case ScIconTypesEnum.iconExcelFile:\n return '@tui.sc.file-x';\n case ScIconTypesEnum.iconFolder:\n return '@tui.folder';\n default:\n return '@tui.file';\n }\n }\n\n /**\n * Проверяет на признак наличия дочерних элементов.\n *\n * @param info Объект пришедших данных о файле.\n * @returns Возвращает true при наличии дочерних элементов и false при их отсутствии.\n */\n public hasChildren(info: ScDocumentInfo): boolean {\n return info.type === ScDocumentInfoTypesEnum.dir;\n }\n}\n","import { ScDocumentInfo, ScFilesService } from '@snabcentr/client-core';\nimport { Injectable } from '@angular/core';\nimport { TuiTreeLoader } from '@taiga-ui/kit';\nimport { Observable, map } from 'rxjs';\nimport { TreeIconService } from './tree-icon.service';\nimport { TreeNode } from '../interfaces/tree-node';\n\n/**\n * Сервис для асинхронного раскрытия вложенности.\n */\n@Injectable()\nexport class TreeLoaderService implements TuiTreeLoader<TreeNode> {\n /**\n * Инициализирует экземпляр класса {@link TreeLoaderService}\n *\n * @param filesService Сервис для получения файлов директории.\n * @param iconService Сервис для определения и назначения значка элементу дерева.\n */\n public constructor(private readonly filesService: ScFilesService, private readonly iconService: TreeIconService) {}\n\n /**\n * Загружает дочерние элементы дерева.\n *\n * @param item Элемент дерева.\n * @returns Массив дочерних элементов.\n */\n public loadChildren(item: TreeNode): Observable<TreeNode[]> {\n return item.id ? this.initData(item.id) : this.initData(undefined);\n }\n\n /**\n * Проверяет указанный элемент дерева на наличие дочерних элементов и возвращает массив дочерних элементов, если они есть, либо пустой массив.\n *\n * @param node Элемент дерева.\n * @returns Возвращает массив типа TreeNode[].\n */\n public hasChildren(node: TreeNode): boolean {\n return node.hasChildren && !!node.id;\n }\n\n /**\n * Загружает и заполняет массив дочерних элементов.\n *\n * @param id Идентификатор директории, чьи дочернии элементы загружаются.\n * @returns Возвращает массив дочерних элементов.\n */\n private initData(id: number | undefined): Observable<TreeNode[]> {\n return this.filesService.getFiles(id).pipe(\n map((data: ScDocumentInfo[]) =>\n data.map((item) => ({\n text: item.name,\n icon: this.iconService.getIconName(item),\n hasChildren: this.iconService.hasChildren(item),\n createdAt: item.createdAt,\n id: item.id,\n link: item.link\n }))\n )\n );\n }\n}\n","import { Directive } from '@angular/core';\nimport { TuiHandler } from '@taiga-ui/cdk';\nimport { TuiTreeService } from '@taiga-ui/kit';\nimport { TreeNode } from '../interfaces/tree-node';\n\n/**\n * Директива отвечающая за обработку действий над элементами дерева.\n */\n@Directive({\n selector: '[scTree]',\n exportAs: 'scTree',\n providers: [TuiTreeService]\n})\nexport class TreeDirective {\n /**\n * Карта данных дерева.\n */\n public map = new Map<TreeNode, boolean>();\n\n /**\n * Инициализирует экземпляр класса {@link TreeDirective}.\n *\n * @param service Сервис для работы с деревом.\n */\n public constructor(public readonly service: TuiTreeService<TreeNode>) {}\n\n /**\n * Проверяет указанный элемент дерева на наличие дочерних элементов и возвращает массив дочерних элементов, если они есть, либо пустой массив.\n *\n * @param node Элемент дерева.\n * @returns Возвращает массив типа TreeNode[].\n */\n public childrenHandler: TuiHandler<TreeNode, readonly TreeNode[]> = (node) => (node.hasChildren ? this.service.getChildren(node) : []);\n\n /**\n * Обрабатывает нажатие на указанный элемент дерева.\n *\n * @param node Элемент дерева.\n */\n public onToggled(node: TreeNode): void {\n this.service.loadChildren(node);\n }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { TuiTreeItemContent } from '@taiga-ui/kit';\n\n/**\n * Компонент для удаления стандартного значка элемента дерева.\n */\n@Component({\n selector: 'sc-file-tree-item',\n templateUrl: './file-tree-item.component.html',\n styleUrls: ['./file-tree-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n '(click)': 'onClick()',\n },\n})\nexport class FileTreeItemComponent extends TuiTreeItemContent {}\n","<ng-container [ngTemplateOutlet]=\"context.template\"></ng-container>\n","/* eslint-disable no-use-before-define,@angular-eslint/no-input-rename */\n\nimport { Directive, forwardRef, Input } from '@angular/core';\nimport { TUI_TREE_CONTENT, TUI_TREE_START } from '@taiga-ui/kit';\nimport { PolymorpheusComponent } from '@taiga-ui/polymorpheus';\n\nimport { FileTreeItemComponent } from '../file-tree-item/file-tree-item.component';\nimport { TreeNode } from '../interfaces/tree-node';\n\n/**\n * Директива отвечающая за корневые элементы дерева.\n */\n@Directive({\n selector: '[scTopNodeText]',\n providers: [\n {\n provide: TUI_TREE_START,\n useExisting: forwardRef(() => TreeTopDirective),\n },\n {\n provide: TUI_TREE_CONTENT,\n useValue: new PolymorpheusComponent(FileTreeItemComponent),\n },\n ],\n})\nexport class TreeTopDirective implements TreeNode {\n /**\n * Отображаемое имя корневого элемента дерева.\n */\n @Input('scTopNodeText')\n public text = '';\n\n /**\n * Значок корневого элемента дерева.\n */\n @Input('scTopNodeIcon')\n public icon: string;\n\n /**\n * Ссылка корневого элемента дерева.\n */\n @Input('scTopNodeLink')\n public link?: string;\n\n /**\n * Признак наличия дочерних элементов.\n */\n @Input('scTopNodeChilds')\n public hasChildren: boolean;\n\n /**\n * Идентификатор корневого элемента дерева.\n */\n @Input('scTopNodeParent')\n public id?: number;\n\n /**\n * Дата создания корневого элемента дерева.\n */\n @Input('scTopNodeDate')\n public createdAt?: string;\n}\n","import { ChangeDetectionStrategy, Component, Inject } from '@angular/core';\nimport { ScDocumentInfo, ScFilesService } from '@snabcentr/client-core';\nimport { TUI_TREE_LOADER, TUI_TREE_LOADING } from '@taiga-ui/kit';\nimport { map, Observable } from 'rxjs';\n\nimport { TreeNode } from '../interfaces/tree-node';\nimport { TreeIconService } from '../services/tree-icon.service';\nimport { TreeLoaderService } from '../services/tree-loader.service';\n\n/**\n * Компонент файлов и документов.\n */\n@Component({\n selector: 'sc-files-and-documents',\n templateUrl: './files-and-documents.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: TUI_TREE_LOADER,\n useClass: TreeLoaderService,\n },\n ],\n})\nexport class FilesAndDocumentsComponent {\n /**\n * Данные визуализации и их начальное получение.\n */\n public data$: Observable<TreeNode[]> = this.filesService.getFiles().pipe(\n map((data: ScDocumentInfo[]) =>\n data.map((item) => ({\n text: item.name,\n icon: this.iconService.getIconName(item),\n hasChildren: this.iconService.hasChildren(item),\n createdAt: item.createdAt,\n id: item.id,\n link: item.link,\n }))\n )\n );\n\n /**\n * Инициализирует экземпляр класса {@link FilesAndDocumentsComponent}.\n *\n * @param loading Объект отвечающий за значок загрузки, в момент раскрытия элемента дерева.\n * @param iconService Сервис для определения и назначения значка элементу дерева.\n * @param filesService Сервис для загрузки файлов.\n */\n public constructor(\n @Inject(TUI_TREE_LOADING) public readonly loading: unknown,\n public readonly iconService: TreeIconService,\n private readonly filesService: ScFilesService\n ) {}\n}\n","<ng-container *ngIf=\"data$ | async as data; else skeleton\">\n <tui-tree\n *ngFor=\"let node of data\"\n #tree=\"scTree\"\n scTree\n [scTopNodeText]=\"node.text\"\n [scTopNodeIcon]=\"node.icon\"\n [scTopNodeLink]=\"node.link\"\n [scTopNodeChilds]=\"node.hasChildren\"\n [scTopNodeParent]=\"node.id\"\n [scTopNodeDate]=\"node.createdAt\"\n [childrenHandler]=\"tree.childrenHandler\"\n [content]=\"content\"\n [map]=\"tree.map\"\n [tuiTreeController]=\"false\"\n [value]=\"tree.service.data$ | async\"\n (toggled)=\"tree.onToggled($event)\"\n class=\"overflow-hidden\"\n ></tui-tree>\n</ng-container>\n\n<ng-template\n #content\n let-item\n>\n <tui-loader\n *ngIf=\"item === loading; else text\"\n class=\"my-4 w-8\"\n ></tui-loader>\n <ng-template #text>\n <tui-icon \n [icon]=\"item.icon\"\n class=\"tui-space_right-2\"\n ></tui-icon>\n <a\n tuiLink\n [pseudo]=\"true\"\n *ngIf=\"item.link\"\n href=\"{{ item.link }}\"\n class=\"grow\"\n >{{ item.text }}</a\n >\n <p\n *ngIf=\"!item.link\"\n class=\"grow\"\n >\n {{ item.text }}\n </p>\n <p>{{ item.createdAt }}</p>\n </ng-template>\n</ng-template>\n\n<ng-template #skeleton>\n <div class=\"flex flex-col gap-2\">\n <div\n *ngFor=\"let _ of [].constructor(7)\"\n class=\"flex items-center gap-2\"\n >\n <div class=\"tui-skeleton size-6\"></div>\n <div class=\"tui-skeleton h-4 w-40\"></div>\n </div>\n </div>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TuiIcon, TuiLink, TuiLoader } from '@taiga-ui/core';\nimport { TuiTree } from '@taiga-ui/kit';\n\nimport { TreeTopDirective } from './directives';\nimport { TreeDirective } from './directives/tree.directive';\nimport { FileTreeItemComponent } from './file-tree-item/file-tree-item.component';\nimport { FilesAndDocumentsComponent } from './files-and-documents/files-and-documents.component';\n\n/**\n * Модуль файлов и документов.\n */\n@NgModule({\n imports: [CommonModule, ...TuiTree, TuiIcon, TuiLoader, TuiLink],\n declarations: [FilesAndDocumentsComponent, TreeDirective, TreeTopDirective, FileTreeItemComponent],\n exports: [FilesAndDocumentsComponent],\n})\nexport class FilesAndDocumentsModule {}\n","/**\n * Список иконок.\n */\nexport const scClientUiIconsName = [\n 'application',\n 'back',\n 'bag',\n 'banknote-arrow-in-top',\n 'chart-column-plus',\n 'circle-arrow-in-right',\n 'contacts',\n 'file-p',\n 'file-search',\n 'file-w',\n 'file-x',\n 'instagram',\n 'layout-list-tree',\n 'list',\n 'reclamation',\n 'send',\n 'telegram',\n 'vk',\n 'whatsapp',\n 'catalog.aluminum-systems',\n 'catalog.arm-profile',\n 'catalog.batten',\n 'catalog.brusbox',\n 'catalog.canopy',\n 'catalog.configurator',\n 'catalog.door-accessorie',\n 'catalog.drainage-system',\n 'catalog.fastener',\n 'catalog.fixing-impost',\n 'catalog.flask',\n 'catalog.foam-balloon',\n 'catalog.foam',\n 'catalog.glue',\n 'catalog.handle',\n 'catalog.instrument',\n 'catalog.kve-profile',\n 'catalog.mosquito-net',\n 'catalog.mounting-accessories',\n 'catalog.net-order',\n 'catalog.panel-1',\n 'catalog.panel',\n 'catalog.profile-plastic',\n 'catalog.promo-materials',\n 'catalog.psul',\n 'catalog.rehau-profile',\n 'catalog.sandwich-plastic',\n 'catalog.sealer',\n 'catalog.siding',\n 'catalog.start-finish-profile',\n 'catalog.steam-waterproofing',\n 'catalog.stiz',\n 'catalog.thermometer',\n 'catalog.windowsill',\n 'img.email',\n 'img.facebook',\n 'img.instagram',\n 'img.qr-code',\n 'img.telegram',\n 'img.viber',\n 'img.vk',\n 'img.whatsapp',\n 'img.copy',\n 'solid.facebook',\n 'solid.instagram',\n 'solid.telegram',\n 'solid.vk-rounded',\n 'solid.vk',\n 'solid.whatsapp',\n];\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n/**\n * Компонент списка брэндов.\n */\n@Component({\n selector: 'sc-brands-list',\n templateUrl: './sc-brands-list.component.html',\n styleUrls: ['./sc-brands-list.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScBrandsListComponent {\n /**\n * Список элементов брендов.\n */\n @Input()\n public items: Array<{\n src: string;\n alt: string;\n }> = [];\n}\n","<!-- TODO: TASK:[#9893] Добавить разделение на несколько строк изображений, при увеличении количества брендов. -->\n<div class=\"flex flex-col gap-4\">\n <div class=\"relative\">\n <div class=\"absolute -left-1 top-0 z-10 block h-full w-12 bg-gradient-to-r from-tui-base-01 to-transparent\"></div>\n <div class=\"flex select-none items-center justify-center gap-12 overflow-hidden contrast-150 saturate-0\">\n <div\n *ngFor=\"let _ of [].constructor(3)\"\n class=\"animate-scroll-slow scroll-slow-revert flex shrink-0 items-center gap-16\"\n >\n <div\n *tuiRepeatTimes=\"let index of items.length - (items.length - (items.length % 2)) / 2\"\n class=\"flex items-center justify-center\"\n >\n <img\n [src]=\"items[index + (items.length - (items.length % 2)) / 2].src\"\n [alt]=\"items[index].alt\"\n />\n </div>\n </div>\n </div>\n <div class=\"absolute -right-1 top-0 z-10 block h-full w-12 bg-gradient-to-r from-transparent to-tui-base-01\"></div>\n </div>\n <div class=\"relative\">\n <div class=\"absolute -left-1 top-0 z-10 block h-full w-12 bg-gradient-to-r from-tui-base-01 to-transparent\"></div>\n <div class=\"flex select-none items-center justify-center gap-12 overflow-hidden contrast-150 saturate-0\">\n <div\n *ngFor=\"let _ of [].constructor(3)\"\n class=\"animate-scroll-slow flex shrink-0 items-center gap-16\"\n >\n <div\n *tuiRepeatTimes=\"let index of (items.length - (items.length % 2)) / 2\"\n class=\"flex items-center justify-center\"\n >\n <img\n [src]=\"items[index].src\"\n [alt]=\"items[index].alt\"\n />\n </div>\n </div>\n </div>\n <div class=\"absolute -right-1 top-0 z-10 block h-full w-12 bg-gradient-to-r from-transparent to-tui-base-01\"></div>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TuiRepeatTimes } from '@taiga-ui/cdk';\n\nimport { ScBrandsListComponent } from './sc-brands-list.component';\n\n/**\n * Модуль списка брэндов.\n */\n@NgModule({\n imports: [CommonModule, TuiRepeatTimes],\n declarations: [ScBrandsListComponent],\n exports: [ScBrandsListComponent],\n})\nexport class ScBrandsListModule {}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { TuiSizeL, TuiSizeM, TuiSizeS } from '@taiga-ui/core';\n\n/**\n * Компонент кнопки \"Поделиться\".\n */\n@Component({\n selector: 'sc-share-button',\n templateUrl: './sc-share-button.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScShareButtonComponent {\n /**\n * Формат внешнего вида кнопки.\n */\n @Input()\n public appearance: 'primary' | 'secondary' | 'outline' | 'flat' = 'secondary';\n\n /**\n * Размер кнопки.\n */\n @Input()\n public size: TuiSizeL | TuiSizeM | TuiSizeS = 'm';\n\n /**\n * Событие клика по кнопке \"Поделиться\".\n */\n @Output()\n public clickShareEvent: EventEmitter<void> = new EventEmitter<void>();\n}\n","<button\n tuiIconButton\n iconStart=\"@tui.share-2\"\n [appearance]=\"appearance\"\n [size]=\"size\"\n (click)=\"$event.stopPropagation(); clickShareEvent.emit()\"\n></button>\n","import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, inject, Input, Output } from '@angular/core';\nimport { ScNewsTile } from '@snabcentr/client-core';\nimport { TUI_IS_MOBILE } from '@taiga-ui/cdk';\n\n/**\n * Компонент карточки новости.\n */\n@Component({\n selector: 'sc-news-card',\n templateUrl: './sc-news-card.component.html',\n styleUrls: ['./sc-news-card.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScNewsCardComponent {\n /**\n * Информация о новости.\n */\n @Input()\n public news: ScNewsTile;\n\n /**\n * Событие клика по карточке новости.\n */\n @Output()\n public clickCardEvent: EventEmitter<ScNewsTile> = new EventEmitter<ScNewsTile>();\n\n /**\n * Событие клика по кнопке \"Поделиться\" карточки новости.\n */\n @Output()\n public clickShareEvent: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Признак того, что этот компонент отображается на мобильном устройстве.\n */\n @HostBinding('class.is_mobile')\n public readonly isMobile: boolean = inject(TUI_IS_MOBILE);\n}\n","<div\n (click)=\"clickCardEvent.emit(news)\"\n class=\"relative flex h-full cursor-pointer flex-col gap-2 overflow-hidden rounded-xl bg-white px-2 pb-4 pt-2 shadow-sc-2\"\n>\n <div\n [style.background-image]=\"'url(' + news.image + ')'\"\n class=\"w-full grow rounded-xl bg-tui-base-02 bg-cover bg-center bg-no-repeat\"\n ></div>\n <div class=\"flex w-full flex-col justify-between gap-2 overflow-hidden bg-white align-baseline\">\n <div class=\"flex items-center justify-between\">\n <p class=\"text-sm font-medium text-tui-text-02\">{{ news.createdAt }}</p>\n <sc-share-button\n (clickShareEvent)=\"clickShareEvent.emit()\"\n appearance=\"flat\"\n ></sc-share-button>\n </div>\n <div class=\"line-clamp-3 font-extrabold\">{{ news.subject }}</div>\n </div>\n</div>\n\n<!-- <div\n[style.background-image]=\"'url(' + news.image + ')'\"\nclass=\"h-50 w-full bg-tui-base-02 bg-cover bg-center bg-no-repeat\"\n></div> -->\n","import { ChangeDetectionStrategy, Component, HostBinding, inject, Input } from '@angular/core';\nimport { TUI_IS_MOBILE } from '@taiga-ui/cdk';\n\n/**\n * Компонент скелетона карточки новости.\n */\n@Component({\n selector: 'sc-news-card-skeleton',\n templateUrl: './sc-news-card-skeleton.component.html',\n styleUrls: ['./sc-news-card-skeleton.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScNewsCardSkeletonComponent {\n /**\n * Признак, что необходимо отобразить скелетон изображения новости.\n */\n @Input() public hasImg: boolean = true;\n\n /**\n * Признак того, что этот компонент отображается на мобильном устройстве.\n */\n @HostBinding('class.is_mobile')\n public readonly isMobile: boolean = inject(TUI_IS_MOBILE);\n}\n","<div class=\"relative flex h-full cursor-pointer flex-col gap-2 overflow-hidden rounded-xl bg-white px-2 pb-4 pt-2 shadow-sc-2\">\n <div\n *ngIf=\"hasImg; else textBlock\"\n class=\"w-full grow rounded-xl bg-tui-base-02\"\n ></div>\n <ng-template #textBlock>\n <div class=\"py-4.5 flex w-full flex-col gap-2 px-6\">\n <div class=\"h-3 w-full rounded bg-tui-base-02\"></div>\n <div class=\"h-3 w-3/4 rounded bg-tui-base-02\"></div>\n <div class=\"h-3 w-full rounded bg-tui-base-02\"></div>\n <div class=\"h-3 w-3/4 rounded bg-tui-base-02\"></div>\n <div class=\"h-3 w-full rounded bg-tui-base-02\"></div>\n </div>\n </ng-template>\n\n <div class=\"w-3/4\">\n <ng-container *ngTemplateOutlet=\"textBlock\"></ng-container>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TuiButton } from '@taiga-ui/core';\n\nimport { ScShareButtonComponent } from './sc-share-button.component';\n\n/**\n * Модуль работы кнопки \"Поделиться\".\n */\n@NgModule({\n declarations: [ScShareButtonComponent],\n imports: [CommonModule, TuiButton],\n exports: [ScShareButtonComponent],\n})\nexport class ScShareButtonModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\n\nimport { ScShareButtonModule } from '../share-button';\nimport { ScNewsCardComponent } from './news-card/sc-news-card.component';\nimport { ScNewsCardSkeletonComponent } from './news-card-skeleton/sc-news-card-skeleton.component';\n\n/**\n * Модуль работы с новостями.\n */\n@NgModule({\n declarations: [ScNewsCardComponent, ScNewsCardSkeletonComponent],\n imports: [CommonModule, RouterModule, ScShareButtonModule],\n exports: [ScNewsCardComponent, ScNewsCardSkeletonComponent],\n})\nexport class ScNewsModule {}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Inject, Input, Output, TemplateRef, ViewChild } from '@angular/core';\nimport { SC_PATH_IMAGE_NOT_FOUND, SC_URLS, ScCartItem, ScIUrls, ScProduct, ScUnitsHelper } from '@snabcentr/client-core';\nimport { TuiDialogContext } from '@taiga-ui/core';\nimport { TuiPreviewDialogService } from '@taiga-ui/kit';\n\n/**\n * Компонент карточки элемента заказа.\n */\n@Component({\n selector: 'sc-order-item-mobile',\n templateUrl: './sc-order-item-mobile.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScOrderItemMobileComponent {\n /**\n * Ссылка на представление спецификации.\n */\n @ViewChild('specificationPreview')\n private readonly specificationPreviewRef?: TemplateRef<TuiDialogContext>;\n\n /**\n * Элемент заказа.\n */\n @Input()\n public orderItem?: ScCartItem;\n\n /**\n * Событие нажатия на карточку.\n */\n @Output()\n public clickCardEvent: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на дополнительные действия.\n */\n @Output()\n public clickActionsEvent: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Инициирует экземпляр класса {@link ScOrderItemMobileComponent}.\n *\n * @param unitsHelper Объект-хэлпер для работы со значениями единиц измерения товара.\n * @param previewDialogService Сервис диалогового окна предварительного просмотра.\n * @param urls Список ссылок на разделы backend'a.\n * @param pathImageNotFound Путь до изображения 'Товар не найден'.\n */\n public constructor(\n public readonly unitsHelper: ScUnitsHelper,\n @Inject(TuiPreviewDialogService)\n private readonly previewDialogService: TuiPreviewDialogService,\n @Inject(SC_URLS) private readonly urls: ScIUrls,\n @Inject(SC_PATH_IMAGE_NOT_FOUND) private readonly pathImageNotFound: string\n ) {}\n\n /**\n * Продукт элемента заказа.\n */\n public get product(): ScProduct | undefined {\n return this.orderItem?.product;\n }\n\n /**\n * Отобразить спецификацию.\n */\n public showSpecification(): void {\n this.previewDialogService.open(this.specificationPreviewRef ?? '').subscribe();\n }\n\n /**\n * Возвращает ссылку на изображение карточки товара.\n */\n public getCardImage(): string {\n return this.product?.getImage(this.urls.imgServerUrl) ?? this.urls.imgServerUrl + this.pathImageNotFound;\n }\n}\n","<div class=\"relative flex flex-wrap gap-x-4 gap-y-2 rounded-xl border border-tui-base-04 bg-white p-4 shadow-sc-2\">\n <ng-container *ngIf=\"orderItem && product; else skeleton\">\n <button\n tuiIconButton\n (click)=\"clickActionsEvent.emit()\"\n size=\"m\"\n iconStart=\"@tui.ellipsis-vertical\"\n appearance=\"float\"\n class=\"!absolute right-0 top-0 !hidden\"\n ></button>\n <div class=\"flex grow gap-2\">\n <div class=\"flex size-20 shrink-0 items-center justify-center overflow-hidden\">\n <img\n (click)=\"clickCardEvent.emit()\"\n [src]=\"getCardImage()\"\n [alt]=\"product.name\"\n [class.p-5]=\"!product.images?.length\"\n class=\"cursor-pointer\"\n />\n </div>\n\n <div class=\"flex grow flex-wrap gap-x-8 self-center\">\n <div class=\"flex grow basis-min-content flex-col\">\n <a\n tuiLink\n (click)=\"clickCardEvent.emit()\"\n >\n <span class=\"font-bold\">{{ product.name }}</span>\n </a>\n <div class=\"flex flex-col gap-y-0.5 text-tui-text-02\">\n <div class=\"flex flex-wrap\">\n <p class=\"w-40\">Артикул: {{ product.code }}</p>\n <p\n class=\"w-40\"\n *ngIf=\"product.pack\"\n >\n Норма упаковки: {{ product.pack }}\n </p>\n </div>\n <a\n tuiLink\n *ngIf=\"orderItem.specificationImgUrl\"\n (click)=\"showSpecification()\"\n >Спецификация</a\n >\n <ng-template\n #specificationPreview\n let-preview\n >\n <tui-preview\n [rotatable]=\"false\"\n [zoomable]=\"false\"\n >\n <img\n *polymorpheusOutlet=\"orderItem.specificationImgUrl as src\"\n alt=\"preview\"\n [src]=\"orderItem.specificationImgUrl\"\n />\n <button\n iconStart=\"@tui.x\"\n title=\"Close\"\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n (click)=\"preview.complete()\"\n ></button>\n </tui-preview>\n </ng-template>\n </div>\n\n <div class=\"flex flex-wrap gap-y-0.5\">\n <span\n *ngIf=\"product.discount\"\n class=\"w-50 items-center gap-x-2 gap-y-0.5 text-xs text-tui-text-02\"\n >\n <span class=\"line-through\">{{ product.discountCostString }}</span> &nbsp;\n <span class=\"font-bold text-tui-success-fill\"> -{{ product.discount.percent }}% </span>\n <ng-template #discountHint>\n <div class=\"font-bold\">{{ product.discount.name }}</div>\n <div *ngIf=\"product.discount.expiredAt as expiredAt\">Дата окончания: {{ expiredAt }}</div>\n </ng-template>\n </span>\n <p class=\"w-50 flex items-baseline gap-x-2 gap-y-0.5 font-bold\">\n <span>{{ product.costRubString }}</span>\n <span\n *ngIf=\"!product.priceInRub\"\n class=\"text-xs text-tui-text-02\"\n >{{ product.costString }}</span\n >\n </p>\n </div>\n </div>\n <div class=\"flex flex-wrap content-center\">\n <div class=\"w-50 flex flex-col gap-x-8 gap-y-0.5\">\n <ng-container *ngIf=\"orderItem.height; else length\">\n <p>Высота: {{ orderItem.height }} м.</p>\n </ng-container>\n <ng-template #length>\n <p *ngIf=\"orderItem.length\">Длина: {{ orderItem.length }} м.</p>\n </ng-template>\n <p *ngIf=\"orderItem.width\">Ширина: {{ orderItem.width }} м.</p>\n <p class=\"flex flex-col items-baseline gap-x-2\">\n <span class=\"whitespace-nowrap text-body-m-bold\">\n Количество: <span class=\"whitespace-nowrap\">{{ orderItem.quantity }}</span>\n </span>\n </p>\n </div>\n\n <div class=\"w-50 flex flex-col gap-y-0.5\">\n <p class=\"whitespace-nowrap text-body-m-bold\">\n Сумма: <span class=\"whitespace-nowrap\"> {{ orderItem.getCostRubStr() }} </span>\n </p>\n <sc-price-warehouse-stock\n [product]=\"product\"\n [fromMain]=\"false\"\n ></sc-price-warehouse-stock>\n </div>\n </div>\n </div>\n </div>\n </ng-container>\n\n <ng-template #skeleton>\n <div class=\"flex w-full gap-2\">\n <div class=\"size-20 rounded-xl bg-tui-base-02\"></div>\n <div class=\"flex grow flex-col gap-2.5 bg-white\">\n <div class=\"h-4 w-full rounded-xl bg-tui-base-02\"></div>\n <div class=\"h-4 w-3/5 rounded-xl bg-tui-base-02\"></div>\n <div class=\"h-4 w-4/5 rounded-xl bg-tui-base-02\"></div>\n </div>\n </div>\n </ng-template>\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\n/**\n * Компонент статуса оплаты заказа.\n */\n@Component({\n selector: 'sc-payment-status',\n templateUrl: './sc-payment-status.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScPaymentStatusComponent {\n /**\n * Признак того, успешна ли прошла оплата, или нет.\n */\n @Input()\n public status: 'success' | 'error' | null;\n\n /**\n * Номер оплаченного заказа.\n */\n @Input()\n public orderId: string | null;\n\n /**\n * Событие нажатия на кнопку \"Вернуться к списку заказов\".\n */\n @Output()\n public backToOrdersClick: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на кнопку \"На главную\".\n */\n @Output()\n public backToOrderClick: EventEmitter<void> = new EventEmitter<void>();\n}\n","<ng-container *ngIf=\"status && orderId; else failed\">\n <ng-container [ngSwitch]=\"status\">\n <tui-block-status *ngSwitchCase=\"'success'\">\n <tui-icon icon=\"@tui.circle-check\" tuiSlot=\"top\" class=\"scale-[3] !h-20 !text-green-500\"></tui-icon>\n <h4>Спасибо!</h4>\n <br />\n <div class=\"font-bold\">Ваш заказ успешно оплачен. Мы свяжемся с вами в ближайшее время.</div>\n <br />\n <div class=\"font-bold\">\n Номер вашего заказа: <a tuiLink [pseudo]=\"true\" (click)=\"backToOrderClick.emit()\">{{orderId}}</a>\n </div>\n\n <button tuiButton (click)=\"backToOrdersClick.emit()\">Вернуться к заказам</button>\n </tui-block-status>\n <tui-block-status *ngSwitchCase=\"'error'\">\n <tui-icon icon=\"@tui.circle-x\" class=\"scale-[3] !h-20 !text-red-500\" tuiSlot=\"top\"></tui-icon>\n <h4>Оплата не прошла!</h4>\n <br />\n <div class=\"font-bold\">При обработке платежа произошла ошибка.</div>\n <button tuiButton tuiItem (click)=\"backToOrderClick.emit()\">Вернуться к заказу</button>\n </tui-block-status>\n </ng-container>\n</ng-container>\n\n<ng-template #failed>\n <tui-block-status>\n <tui-icon icon=\"@tui.info\" class=\"scale-[3] !h-20 !text-yellow-500\" tuiSlot=\"top\"></tui-icon>\n <h4>Что-то пошло не так!</h4>\n <button tuiButton tuiItem (click)=\"backToOrdersClick.emit()\">Вернуться к заказам</button>\n </tui-block-status>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TuiButton, TuiIcon, TuiLink } from '@taiga-ui/core';\nimport { TuiPreview } from '@taiga-ui/kit';\nimport { TuiBlockStatus } from '@taiga-ui/layout';\nimport { PolymorpheusOutlet, PolymorpheusTemplate } from '@taiga-ui/polymorpheus';\n\nimport { ScCatalogModule } from '../catalog';\nimport { ScOrderItemMobileComponent } from './order-item-mobile/sc-order-item-mobile.component';\nimport { ScPaymentStatusComponent } from './sc-payment-status/sc-payment-status.component';\n\n/**\n * Модуль заказов.\n */\n@NgModule({\n declarations: [ScOrderItemMobileComponent, ScPaymentStatusComponent],\n exports: [ScOrderItemMobileComponent, ScPaymentStatusComponent],\n imports: [CommonModule, TuiLink, TuiButton, TuiIcon, ...TuiBlockStatus, ...TuiPreview, ScCatalogModule, PolymorpheusTemplate, PolymorpheusOutlet],\n})\nexport class ScOrderModule {}\n","/* eslint-disable @typescript-eslint/unbound-method,lodash/prefer-lodash-method */\n\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { ChangeDetectionStrategy, Component, inject, Input, OnInit } from '@angular/core';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport { ScIGetSamplesData, ScISuggestionType, ScSamplesService, ScUserService } from '@snabcentr/client-core';\nimport { TuiDialogContext } from '@taiga-ui/core';\nimport { POLYMORPHEUS_CONTEXT } from '@taiga-ui/polymorpheus';\nimport { catchError, filter, map, Observable, of, share, startWith, Subject, switchMap, tap } from 'rxjs';\n\nimport { ApiErrorResponse } from '../../auth';\n\n/**\n * Компонент формы запроса бесплатного образца.\n */\n@Component({\n selector: 'sc-ask-to-sample-form',\n templateUrl: './sc-ask-to-sample-form.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScAskToSampleFormComponent implements OnInit {\n /**\n * Сервис работы с образцами.\n */\n private readonly samplesService = inject(ScSamplesService);\n\n /**\n * Сервис информации о пользователе.\n */\n public readonly user$ = inject(ScUserService)\n .getUserChange$()\n .pipe(\n tap((user) => {\n if (user.isGuest) {\n this.form.controls.email.reset();\n this.form.controls.name.reset();\n this.form.controls.phone.reset();\n } else {\n this.form.patchValue({\n name: user.name,\n phone: user.contacts.phone.value,\n email: user.contacts.email.value,\n });\n }\n }),\n );\n\n private readonly context = inject<TuiDialogContext<void, { formName: 'order-sample' | 'buy-products' }>>(POLYMORPHEUS_CONTEXT, {\n optional: true,\n });\n\n /**\n * Наименование формы, с которой отправляется запрос.\n */\n @Input()\n public formName?: 'order-sample' | 'buy-products';\n\n /**\n * Группа полей ввода для формы «Пожелания и предложения по улучшению сайта».\n */\n public form = new FormGroup({\n name: new FormControl<string | null>(null, [Validators.required, Validators.minLength(3)]),\n phone: new FormControl<string | null>(null, [Validators.required, Validators.minLength(12)]),\n email: new FormControl<string | null>(null, [Validators.required, Validators.email]),\n description: new FormControl<string | null>('Неизвестная форма', [Validators.required, Validators.minLength(3)]),\n });\n\n /**\n * Перечисление типов подсказок.\n */\n public readonly suggestionType: typeof ScISuggestionType = ScISuggestionType;\n\n /**\n * {@link Subject} события отправки формы.\n */\n public readonly onSubmit: Subject<void> = new Subject<void>();\n\n /**\n * {@link Observable} запроса на отправку данных.\n */\n public readonly request$: Observable<undefined | null> = this.onSubmit.pipe(\n filter(() => this.form.valid),\n map(() => this.form.value as ScIGetSamplesData),\n switchMap((value) =>\n this.samplesService.getSamples(value).pipe(\n tap(() => {\n if (this.context) {\n this.context.completeWith();\n } else {\n this.form.controls.email.reset();\n this.form.controls.name.reset();\n this.form.controls.phone.reset();\n }\n }),\n // eslint-disable-next-line rxjs/no-implicit-any-catch\n catchError((error: HttpErrorResponse) => {\n this.form.markAllAsTouched();\n\n const { errors, message } = error.error as ApiErrorResponse;\n\n if (errors) {\n Object.keys(errors).forEach((key) => {\n const control = this.form.get(key);\n\n if (control) {\n // eslint-disable-next-line security/detect-object-injection\n control.setErrors({ serverResponse: errors[key] });\n }\n });\n } else if (message) {\n this.form.setErrors({ serverResponse: [message] });\n }\n\n return of(null);\n }),\n // eslint-disable-next-line unicorn/no-useless-undefined\n startWith(undefined)\n )\n ),\n share()\n );\n\n /**\n * {@link Observable} изменения состояния загрузки данных.\n */\n public readonly loading$: Observable<boolean> = this.request$.pipe(map((value) => value === undefined));\n\n /** @inheritdoc */\n public ngOnInit(): void {\n switch (this.formName ?? this.context?.data.formName) {\n case 'order-sample':\n this.form.controls.description.patchValue('Форма \"Получите бесплатный образец\"');\n break;\n case 'buy-products':\n this.form.controls.description.patchValue('Форма \"Оставить заявку на покупку\"');\n break;\n default:\n this.form.controls.description.patchValue('Неизвестная форма');\n break;\n }\n }\n}\n","<form\n *tuiLet=\"user$ | async\"\n [formGroup]=\"form\"\n (ngSubmit)=\"onSubmit.next()\"\n class=\"flex flex-col justify-between gap-4\"\n>\n <label tuiLabel\n >ФИО\n <tui-input formControlName=\"name\"> Иванов Иван Иванович </tui-input>\n <tui-error\n formControlName=\"name\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <label tuiLabel\n >Телефон\n <tui-input-phone formControlName=\"phone\"> Телефон </tui-input-phone>\n <tui-error\n formControlName=\"phone\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <label\n tuiLabel\n class=\"w-full\"\n >Адрес электронной почты\n <tui-input formControlName=\"email\">\n Адрес электронной почты\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.email\"\n ></sc-suggestion-field>\n </tui-input>\n <tui-error\n formControlName=\"email\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <button\n tuiButton\n [disabled]=\"form.invalid\"\n [loading]=\"!!(loading$ | async)\"\n type=\"submit\"\n iconStart=\"@tui.sc.send\"\n class=\"self-center\"\n >\n Оставить\n </button>\n</form>\n","import { ChangeDetectionStrategy, Component, EventEmitter, inject, Input, Output } from '@angular/core';\nimport { TUI_IS_MOBILE, tuiIsPresent } from '@taiga-ui/cdk';\nimport { filter, interval, map, startWith, switchMap, tap } from 'rxjs';\n\nimport { ScIPreviewSample } from '../interfaces/sc-i-preview-sample';\n\n/**\n * Компонент представления образцов товара.\n */\n@Component({\n selector: 'sc-preview-sample',\n templateUrl: './sc-preview-sample.component.html',\n styleUrls: ['./sc-preview-sample.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScPreviewSampleComponent {\n /**\n * Индекс элемента в галерее.\n */\n @Input()\n public index: number = 0;\n\n /**\n * {@link EventEmitter} изменения индекса элемента в галерее.\n */\n @Output()\n public readonly indexChange: EventEmitter<number> = new EventEmitter<number>();\n\n /**\n * Объект данных товара.\n */\n @Input()\n public sample: ScIPreviewSample;\n\n /**\n * Признак, что необходимо отображать переключатели на карусели.\n */\n @Input()\n public isShowCarouselSwitches: boolean = !inject(TUI_IS_MOBILE);\n\n /**\n * Признак, что при горизонтальном отображении компонент должен быть развёрнут.\n */\n @Input()\n public isReverse: boolean = false;\n\n /**\n * {@link Observable} изменения индекса элемента в галерее для автоматического переключения по таймеру.\n */\n public indexChangeInterval = this.indexChange.pipe(\n startWith(0),\n filter(() => Boolean(this.sample.items && this.sample.items.length > 1)),\n switchMap(() => interval(5000).pipe()),\n map(() => this.sample.items?.length),\n filter(tuiIsPresent),\n tap((itemsLength) => {\n this.onChangeIndex((this.index + 1) % itemsLength);\n })\n );\n\n /**\n * Переключает на предыдущее изображение в галерее.\n */\n public onPrevious(): void {\n if (this.sample.items?.length) {\n // eslint-disable-next-line unicorn/explicit-length-check\n this.onChangeIndex((this.index || this.sample.items.length) - 1);\n }\n }\n\n /**\n * Переключает на следующее изображение в галерее.\n */\n public onNext(): void {\n if (this.sample.items?.length) {\n this.onChangeIndex((this.index + 1) % this.sample.items.length);\n }\n }\n\n /**\n * Обработчик изменения индекса элемента в галерее.\n *\n * @param index Индекс элемента в галерее.\n */\n public onChangeIndex(index: number): void {\n if (index !== this.index) {\n this.index = index;\n this.indexChange.emit(index);\n }\n }\n}\n","<div\n *tuiLet=\"sample.items && sample.items.length > 1 as isShownSwitches\"\n class=\"mb-4 flex flex-col-reverse gap-4 md:mb-0 md:flex-row md:gap-8\"\n [class.md:!flex-row-reverse]=\"isReverse\"\n>\n <div class=\"flex max-w-96 flex-1 flex-col justify-center self-center md:max-w-none md:gap-4\">\n <div class=\"flex w-full flex-col gap-3 md:gap-4 md:px-8\">\n <div class=\"text-body-l-bold\">{{ sample.title }}</div>\n <div>{{ sample.description }}</div>\n <div\n *ngIf=\"isShownSwitches\"\n class=\"flex gap-4\"\n >\n <tui-avatar [src]=\"item.buttonImageUrl\" [round]=\"false\"\n *ngFor=\"let item of sample.items; let itemIndex = index\"\n (tuiHoveredChange)=\"onChangeIndex(itemIndex)\"\n \n [class.active]=\"index === itemIndex\"\n ></tui-avatar>\n </div>\n <img\n *ngIf=\"sample.descriptionImageUrl\"\n [src]=\"sample.descriptionImageUrl\"\n alt=\"Конструкция образца {{ sample.title }}\"\n class=\"w-fit\"\n />\n <div\n *ngIf=\"sample.actions && sample.actions.length\"\n class=\"flex flex-wrap gap-3 md:gap-4\"\n >\n <button\n *ngFor=\"let action of sample.actions\"\n tuiButton\n (click)=\"action.handler()\"\n [iconStart]=\"action.icon\"\n appearance=\"secondary\"\n >\n {{ action.label }}\n </button>\n </div>\n </div>\n </div>\n\n <div class=\"relative h-[19em] flex-1 overflow-hidden rounded-xl shadow-tui-shadow md:h-96 lg:h-[28rem]\">\n <button\n *ngIf=\"isShownSwitches && isShowCarouselSwitches\"\n tuiIconButton\n (click)=\"onPrevious()\"\n iconStart=\"@tui.chevron-left\"\n appearance=\"icon\"\n class=\"!absolute left-0 top-1/2 z-10 ml-2 -translate-y-1/2\"\n ></button>\n\n <tui-carousel\n *tuiLet=\"indexChangeInterval | async\"\n [(index)]=\"index\"\n class=\"h-[19em] w-full md:h-96 lg:h-[28rem]\"\n >\n <ng-container *ngFor=\"let item of sample.items\">\n <div\n *tuiItem\n [style.backgroundImage]=\"'url(' + item.carouselItemImage + ')'\"\n class=\"h-[19em] w-full bg-cover bg-right md:h-96 lg:h-[28rem]\"\n ></div>\n </ng-container>\n </tui-carousel>\n <button\n *ngIf=\"isShownSwitches && isShowCarouselSwitches\"\n tuiIconButton\n (click)=\"onNext()\"\n iconStart=\"@tui.chevron-right\"\n appearance=\"icon\"\n class=\"!absolute right-0 top-1/2 z-10 mr-2 -translate-y-1/2\"\n ></button>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { TuiHovered, TuiLet } from '@taiga-ui/cdk';\nimport { TuiButton, TuiError, TuiLabel } from '@taiga-ui/core';\nimport { TuiAvatar, TuiButtonLoading, TuiCarousel, TuiFieldErrorPipe } from '@taiga-ui/kit';\nimport { TuiInputModule, TuiInputPhoneModule } from '@taiga-ui/legacy';\n\nimport { ScFormFieldsModule } from '../form-fields';\nimport { ScAskToSampleFormComponent } from './ask-to-sample-form/sc-ask-to-sample-form.component';\nimport { ScPreviewSampleComponent } from './preview-sample/sc-preview-sample.component';\n\n/**\n * Модуль представления образцов товара.\n */\n@NgModule({\n declarations: [ScPreviewSampleComponent, ScAskToSampleFormComponent],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n TuiError,\n TuiFieldErrorPipe,\n ScFormFieldsModule,\n TuiInputModule,\n TuiInputPhoneModule,\n ...TuiCarousel,\n TuiAvatar,\n TuiHovered,\n TuiLet,\n TuiButton,\n TuiButtonLoading,\n TuiLabel,\n ],\n exports: [ScPreviewSampleComponent, ScAskToSampleFormComponent],\n})\nexport class ScPreviewSampleModule {}\n","import { InjectionToken, Provider } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ScUser, ScUserService } from '@snabcentr/client-core';\nimport { Observable } from 'rxjs';\n\n/**\n * Токен потока данных о текущем пользователе.\n */\nexport const SC_USER_INFO = new InjectionToken<Observable<ScUser | undefined>>('A stream with current user information');\n\n/**\n * Фабрика создания потока данных о текущем пользователе.\n *\n * @param userService Сервис данных о пользователе.\n */\nexport function scUserFactory(userService: ScUserService): Observable<ScUser | undefined> {\n // TODO: TASK[#7615] Отслеживать выполнение запроса изменения информации о пользователе после доработки snabcentr-core-lib.\n return userService.getUserChange$().pipe(takeUntilDestroyed());\n}\n\n/**\n * Провайдер потока данных о текущем пользователе.\n */\nexport const SC_USER_PROVIDERS: Provider[] = [\n {\n provide: SC_USER_INFO,\n deps: [ScUserService],\n useFactory: scUserFactory,\n },\n];\n","/* eslint-disable @typescript-eslint/unbound-method */\n\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { ChangeDetectionStrategy, Component, Output } from '@angular/core';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport { ScIChangePassword, ScUserService } from '@snabcentr/client-core';\nimport { tuiIsFalsy, tuiIsPresent } from '@taiga-ui/cdk';\nimport { catchError, filter, map, Observable, of, share, startWith, Subject, switchMap, tap } from 'rxjs';\n\nimport { ApiErrorResponse } from '../../auth';\nimport { scPasswordConfirmMatchingValidator } from '../../validators';\n\n/**\n * Компонент смены пароля пользователя.\n */\n@Component({\n selector: 'sc-reset-user-password',\n templateUrl: './sc-reset-user-password.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScResetUserPasswordComponent {\n /**\n * Форма для изменения пароля пользователя.\n */\n public form = new FormGroup(\n {\n currentPassword: new FormControl(null, [Validators.required, Validators.minLength(8)]),\n password: new FormControl(null, [Validators.required, Validators.minLength(8)]),\n passwordConfirm: new FormControl(null, [Validators.required, Validators.minLength(8)]),\n },\n { validators: scPasswordConfirmMatchingValidator('password', 'passwordConfirm') }\n );\n\n /**\n * {@link Subject} события отправки формы.\n */\n public readonly onSubmit: Subject<void> = new Subject<void>();\n\n /**\n * {@link Observable} запроса данных аутентификации.\n */\n private readonly request$ = this.onSubmit.pipe(\n filter(() => this.form.valid),\n map(() => this.form.value as ScIChangePassword),\n switchMap((value) =>\n this.userService.updateUserInfo$(value).pipe(\n map(() => ({ success: true })),\n tap(() => {\n this.form.reset();\n }),\n catchError((error: HttpErrorResponse) => {\n const errorResponse = error.error as ApiErrorResponse;\n\n for (const key in errorResponse.errors) {\n this.form.get(key)?.setErrors({ serverResponse: errorResponse.errors[key] });\n }\n\n if (!errorResponse.errors && errorResponse.message) {\n this.form.setErrors({ serverResponse: [errorResponse.message] });\n }\n\n return of({ success: false });\n }),\n startWith(null)\n )\n ),\n share()\n );\n\n /**\n * {@link Observable} изменения состояния загрузки данных аутентификации по email.\n */\n public readonly loading$: Observable<boolean> = this.request$.pipe(map(tuiIsFalsy));\n\n /**\n * Сигнал события события смены пароля.\n */\n @Output()\n public readonly successResetPassword = this.request$.pipe(\n filter(tuiIsPresent),\n filter(({ success }) => success)\n );\n\n /**\n * Инициализирует экземпляр класса {@link ScResetUserPasswordComponent}.\n *\n * @param userService Сервис данных о пользователе.\n */\n public constructor(private readonly userService: ScUserService) {}\n}\n","<form\n [formGroup]=\"form\"\n (ngSubmit)=\"onSubmit.next()\"\n class=\"flex flex-col gap-4 p-1 lg:flex-row\"\n>\n <div class=\"grid items-start gap-2 lg:grow lg:grid-cols-3 lg:grid-rows-1 lg:gap-4\">\n <label tuiLabel\n >Старый пароль\n <tui-input-password formControlName=\"currentPassword\">\n Старый пароль\n <input\n tuiTextfieldLegacy\n autocomplete=\"new-password\"\n />\n </tui-input-password>\n <tui-error\n formControlName=\"currentPassword\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <label tuiLabel\n >Придумайте новый пароль\n <tui-input-password\n [pseudoInvalid]=\"form.hasError('passwordNotEquivalent')\"\n formControlName=\"password\"\n >\n Придумайте новый пароль\n <input\n tuiTextfieldLegacy\n autocomplete=\"new-password\"\n />\n </tui-input-password>\n <tui-error\n formControlName=\"password\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <label tuiLabel\n >Повторите новый пароль\n <tui-input-password\n [pseudoInvalid]=\"form.hasError('passwordNotEquivalent')\"\n formControlName=\"passwordConfirm\"\n >\n Повторите новый пароль\n <input\n tuiTextfieldLegacy\n autocomplete=\"new-password\"\n />\n </tui-input-password>\n <tui-error\n formControlName=\"passwordConfirm\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <tui-error\n *ngIf=\"form.invalid\"\n class=\"lg:!hidden\"\n [formGroup]=\"form\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </div>\n <div class=\"flex flex-col justify-center lg:mt-5 lg:h-11\">\n <button\n *tuiLet=\"!!(loading$ | async) as loading\"\n tuiButton\n [loading]=\"loading\"\n type=\"submit\"\n [disabled]=\"form.invalid || loading\"\n iconStart=\"@tui.save\"\n class=\"font-medium\"\n >\n Сохранить\n </button>\n </div>\n</form>\n<tui-error\n class=\"!hidden lg:!block\"\n [formGroup]=\"form\"\n [error]=\"[] | tuiFieldError | async\"\n></tui-error>\n","/* eslint-disable guard-for-in,@typescript-eslint/unbound-method,rxjs/no-implicit-any-catch,no-restricted-syntax */\n\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { AfterViewInit, ChangeDetectionStrategy, Component, EventEmitter, Inject, Optional, Output } from '@angular/core';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport { ScIPhoneOnDataApprove, ScISuggestionType, ScIUserOnDataUpdate, ScUser, ScUserMetrikaGoalsEnum, ScUserMetrikaService, ScUserService } from '@snabcentr/client-core';\nimport { tuiIsFalsy } from '@taiga-ui/cdk';\nimport { TuiDialogContext } from '@taiga-ui/core';\nimport { POLYMORPHEUS_CONTEXT } from '@taiga-ui/polymorpheus';\nimport { catchError, filter, map, Observable, of, skip, startWith, Subject, switchMap, tap } from 'rxjs';\n\nimport { ApiErrorResponse } from '../../auth';\nimport { SC_USER_INFO, SC_USER_PROVIDERS } from '../../providers';\n\n/**\n * Диалоговое окно изменения данных пользователя.\n */\n@Component({\n selector: 'sc-update-user-info-dialog',\n templateUrl: './sc-update-user-info-dialog.component.html',\n providers: [SC_USER_PROVIDERS],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScUpdateUserInfoDialogComponent implements AfterViewInit {\n /**\n * Перечисление типов подсказок.\n */\n public readonly suggestionType: typeof ScISuggestionType = ScISuggestionType;\n\n /**\n * Группа полей ввода формы общих данных пользователя для их редактирования.\n */\n public readonly form = new FormGroup({\n name: new FormControl<string | null>(null, [Validators.required, Validators.minLength(3)]),\n email: new FormControl<string | null>(null, [Validators.required, Validators.email]),\n phone: new FormControl<string | null>(null, [Validators.required, Validators.minLength(12)]),\n verificationCode: new FormControl<string | null>(null, [Validators.required, Validators.minLength(6)]),\n cityId: new FormControl<number | null>(null, Validators.required),\n getNews: new FormControl<boolean>(false),\n });\n\n /**\n * Сигнал нажатия на кнопку \"Отмена\".\n */\n @Output()\n public readonly cancelButtonClick: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Сигнал события успешного обновления данных пользователя.\n */\n @Output()\n public readonly successUpdateDate: Observable<ScUser> = this.user$.pipe(skip(1));\n\n /**\n * {@link Subject} события отправки формы.\n */\n public readonly onSubmit: Subject<void> = new Subject<void>();\n\n /**\n * {@link Observable} запроса обновления данных пользователя.\n */\n private readonly request$ = this.onSubmit.pipe(\n filter(() => this.form.valid),\n map(() => this.form.value as ScIUserOnDataUpdate | ScIPhoneOnDataApprove),\n switchMap((value) =>\n this.userService.updateUserInfo$(value).pipe(\n switchMap(() => this.userService.updateUserChange$()),\n tap((user) => this.context?.completeWith(user)),\n catchError((error: HttpErrorResponse) => {\n const errorResponse = error.error as ApiErrorResponse;\n\n for (const key in errorResponse.errors) {\n this.form.get(key)?.setErrors({ serverResponse: errorResponse.errors[key] });\n }\n\n if (!errorResponse.errors && errorResponse.message) {\n this.form.setErrors({ serverResponse: [errorResponse.message] });\n }\n return of({} as ScUser);\n }),\n startWith(null)\n )\n )\n );\n\n /**\n * {@link Observable} изменения состояния загрузки данных аутентификации по email.\n */\n public readonly loading$: Observable<boolean> = this.request$.pipe(map(tuiIsFalsy));\n\n /**\n * Инициализирует экземпляр класса {@link ScUpdateUserInfoDialogComponent}.\n *\n * @param user$ Поток информации о текущем пользователе.\n * @param userService Сервис данных о пользователе.\n * @param userMetrikaService Сервис для сбора метрик о действиях пользователей.\n * @param context Контекст диалогового окна, в котором открыт компонент.\n */\n public constructor(\n @Inject(SC_USER_INFO) public readonly user$: Observable<ScUser>,\n private readonly userService: ScUserService,\n private readonly userMetrikaService: ScUserMetrikaService,\n @Optional()\n @Inject(POLYMORPHEUS_CONTEXT)\n public readonly context?: TuiDialogContext<ScUser, ScUpdateUserInfoDialogComponent>\n ) {\n this.user$.subscribe((user) => {\n this.form.patchValue(\n {\n name: user.name,\n email: user.contacts.email.value,\n phone: user.contacts.phone.value,\n cityId: user.city,\n getNews: user.getNews,\n },\n { emitEvent: false }\n );\n });\n }\n\n /** @inheritdoc */\n public ngAfterViewInit(): void {\n this.userMetrikaService.emitUserMetrikaEvent({\n target: ScUserMetrikaGoalsEnum.userProfileEditShow,\n });\n }\n}\n","<form\n [formGroup]=\"form\"\n *ngIf=\"user$ | async as user\"\n (ngSubmit)=\"onSubmit.next()\"\n class=\"flex flex-col gap-4\"\n>\n <label tuiLabel\n >{{ user.isOrg ? 'Название организации или ИП' : 'Ф.И.О.' }}\n <tui-input formControlName=\"name\">\n {{ user.isOrg ? 'Название организации или ИП' : 'Ф.И.О.' }}\n <ng-container *ngIf=\"user.isOrg\">\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.organization\"\n ></sc-suggestion-field>\n </ng-container>\n </tui-input>\n <tui-error\n formControlName=\"name\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <sc-verification-phone-check-form\n *tuiLet=\"user.contacts.phone.value === form.value.phone as phoneIsChange\"\n [showCodeFields]=\"!phoneIsChange\"\n [shouldBeBusy]=\"phoneIsChange\"\n class=\"w-full\"\n ></sc-verification-phone-check-form>\n <label\n tuiLabel\n class=\"w-full\"\n >Адрес электронной почты\n <tui-input formControlName=\"email\">\n Адрес электронной почты\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.email\"\n ></sc-suggestion-field>\n </tui-input>\n <tui-error\n formControlName=\"email\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <sc-addresses-selection-field></sc-addresses-selection-field>\n <label tuiLabel>\n <input\n tuiCheckbox\n type=\"checkbox\"\n formControlName=\"getNews\"\n class=\"w-full\"\n />\n Я хочу получать рассылку Снабцентр о скидках и новостях по электронной почте.\n </label>\n <div class=\"flex justify-center gap-4\">\n <button\n tuiButton\n (click)=\"context ? context.$implicit.complete() : cancelButtonClick.emit()\"\n type=\"button\"\n iconStart=\"@tui.x\"\n appearance=\"secondary\"\n >\n Отмена\n </button>\n <button\n tuiButton\n [disabled]=\"form.invalid\"\n [loading]=\"!!(loading$ | async)\"\n type=\"submit\"\n iconStart=\"@tui.save\"\n >\n Сохранить\n </button>\n </div>\n</form>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Output } from '@angular/core';\nimport { ScIManager, ScUserService } from '@snabcentr/client-core';\nimport { map, Observable } from 'rxjs';\n\n/**\n * Компонент персональных менеджеров пользователя.\n */\n@Component({\n selector: 'sc-user-managers',\n templateUrl: './sc-user-managers.component.html',\n styleUrls: ['./sc-user-managers.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScUserManagersComponent {\n /**\n * Персональные менеджеры пользователя.\n */\n public readonly managers$: Observable<ScIManager[] | undefined> = this.userService\n .getUserChange$()\n .pipe(map((user) => user.managers?.sort((a: ScIManager, b: ScIManager) => Number(Boolean(b.isPrimary)) - Number(Boolean(a.isPrimary)))));\n\n /**\n * Событие нажатия на кнопку QR кода.\n */\n @Output()\n public readonly qrClickEvent: EventEmitter<ScIManager> = new EventEmitter<ScIManager>();\n\n /**\n * Инициализирует экземпляр класса {@link ScUserManagersComponent}.\n *\n * @param userService Сервис данных о пользователе.\n */\n public constructor(private readonly userService: ScUserService) {}\n}\n","<p class=\"mb-2 font-extrabold\">Ваши персональные менеджеры:</p>\n<ng-container *ngFor=\"let manager of managers$ | async; let last = last\">\n <div class=\"flex justify-between\">\n <div class=\"flex flex-col gap-1 !font-medium text-tui-text-02\">\n {{ manager.name }}\n <a\n tuiLink\n [pseudo]=\"true\"\n href=\"mailto:{{ manager.contacts.email }}\"\n iconStart=\"@tui.mail\"\n >\n {{ manager.contacts.email }}\n </a>\n <a\n tuiLink\n [scTelLink]=\"manager.contacts.phone\"\n [pseudo]=\"true\"\n href=\"tel:{{ manager.contacts.phone | scFormatePhone }}\"\n iconStart=\"@tui.phone\"\n >\n {{ manager.contacts.phone | scFormatePhone }}\n </a>\n </div>\n <button\n tuiIconButton\n size=\"m\"\n appearance=\"secondary\"\n iconStart=\"@tui.scan-qr-code\"\n (click)=\"qrClickEvent.emit(manager)\"\n ></button>\n </div>\n <hr\n *ngIf=\"!last\"\n class=\"my-2 h-px border-0 bg-tui-base-04\"\n />\n</ng-container>\n","/* eslint-disable no-restricted-syntax,@typescript-eslint/unbound-method */\n\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { AfterViewInit, ChangeDetectionStrategy, Component, Inject, Optional } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport { ScApprovedData, ScIPhoneOnDataApprove, ScUser, ScUserMetrikaGoalsEnum, ScUserMetrikaService, ScUserService, ScVerificationService } from '@snabcentr/client-core';\nimport { tuiIsFalsy } from '@taiga-ui/cdk';\nimport { TuiDialogContext } from '@taiga-ui/core';\nimport { POLYMORPHEUS_CONTEXT } from '@taiga-ui/polymorpheus';\nimport { catchError, filter, map, Observable, of, share, startWith, Subject, switchMap, tap } from 'rxjs';\n\nimport { ApiErrorResponse } from '../../auth/interfaces/api-error-response';\nimport { SC_USER_INFO, SC_USER_PROVIDERS } from '../../providers/scUserProviders';\n\n/**\n * Диалоговое окно подтверждения номера телефона.\n */\n@Component({\n selector: 'sc-user-phone-approve-dialog',\n templateUrl: './sc-user-phone-approve-dialog.component.html',\n providers: [SC_USER_PROVIDERS],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScUserPhoneApproveDialogComponent implements AfterViewInit {\n /**\n * Наличие кода подтверждения у пользователя.\n */\n public haveCode: boolean = false;\n\n /**\n * Группа полей ввода для подтверждения номера телефона.\n */\n public readonly form = new FormGroup({\n phone: new FormControl<string | null>(null, [Validators.required, Validators.minLength(12)]),\n verificationCode: new FormControl<string | null>(null, [Validators.required, Validators.minLength(6)]),\n });\n\n /**\n * {@link Subject} события отправки формы.\n */\n public readonly onSubmit: Subject<void> = new Subject<void>();\n\n /**\n * {@link Observable} запроса подтверждения номера телефона.\n */\n private readonly request$ = this.onSubmit.pipe(\n filter(() => this.form.valid),\n map(() => this.form.value as ScIPhoneOnDataApprove),\n switchMap((value) =>\n this.verificationService.approvePhone(value).pipe(\n switchMap(() => this.userService.updateUserChange$()),\n tap((user) => this.context?.completeWith(user.contacts.phone)),\n catchError((error: unknown) => {\n if (error instanceof HttpErrorResponse) {\n const { errors, message } = error.error as ApiErrorResponse;\n\n for (const key in errors) {\n if (Object.hasOwn(errors, key)) {\n this.form.get(key)?.setErrors({ serverResponse: errors[key] });\n }\n }\n\n if (!errors && message) {\n this.form.setErrors({ serverResponse: [message] });\n }\n }\n\n return of({} as ScUser);\n }),\n startWith(null)\n )\n ),\n share()\n );\n\n /**\n * {@link Observable} изменения состояния запроса подтверждения номера телефона..\n */\n public readonly loading$: Observable<boolean> = this.request$.pipe(map(tuiIsFalsy));\n\n /**\n * Инициализирует экземпляр класса {@link ScUserPhoneApproveDialogComponent}.\n *\n * @param verificationService Сервис верификации.\n * @param userMetrikaService Сервис для сбора метрик о действиях пользователей.\n * @param user$ Поток информации о текущем пользователе.\n * @param userService Сервис данных о пользователе.\n * @param context Контекст диалогового окна, в котором открыт компонент.\n */\n public constructor(\n private readonly verificationService: ScVerificationService,\n private readonly userMetrikaService: ScUserMetrikaService,\n @Inject(SC_USER_INFO)\n public readonly user$: Observable<ScUser>,\n private readonly userService: ScUserService,\n @Optional()\n @Inject(POLYMORPHEUS_CONTEXT)\n public readonly context?: TuiDialogContext<ScApprovedData, ScUserPhoneApproveDialogComponent>\n ) {\n this.user$.pipe(takeUntilDestroyed()).subscribe((user) => {\n this.form.patchValue({\n phone: user.contacts.phone.value,\n });\n });\n }\n\n /** @inheritdoc */\n public ngAfterViewInit(): void {\n this.userMetrikaService.emitUserMetrikaEvent({\n target: ScUserMetrikaGoalsEnum.userProfileApprovePhoneShow,\n });\n }\n}\n","<ng-container *ngIf=\"user$ | async as user\">\n <form\n [formGroup]=\"form\"\n *tuiLet=\"!!(loading$ | async) as loadingApproveCode\"\n (ngSubmit)=\"onSubmit.next()\"\n class=\"flex flex-col gap-3\"\n >\n <sc-verification-phone-check-form\n [(haveCode)]=\"haveCode\"\n [shouldBeConfirmed]=\"false\"\n [showCodeFields]=\"!user.contacts.phone.isApproved\"\n [readOnly]=\"true\"\n class=\"w-full\"\n ></sc-verification-phone-check-form>\n <div\n *ngIf=\"user.contacts.phone.isApproved || haveCode\"\n class=\"flex justify-center gap-4\"\n >\n <button\n *ngIf=\"user.contacts.phone.isApproved && context\"\n tuiButton\n (click)=\"context.$implicit.complete()\"\n type=\"button\"\n appearance=\"secondary\"\n >\n Закрыть\n </button>\n <button\n *ngIf=\"haveCode\"\n tuiButton\n type=\"submit\"\n [loading]=\"loadingApproveCode\"\n [disabled]=\"form.invalid || loadingApproveCode\"\n iconStart=\"@tui.sc.send\"\n >\n Подтвердить\n </button>\n </div>\n </form>\n</ng-container>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TuiLet } from '@taiga-ui/cdk';\nimport { TuiButton, TuiDataList, TuiError, TuiLabel, TuiLink, TuiLoader } from '@taiga-ui/core';\nimport { TuiButtonLoading, TuiCheckbox, TuiFieldErrorPipe } from '@taiga-ui/kit';\nimport { TuiInputModule, TuiInputPasswordModule, TuiInputPhoneModule, TuiSelectModule, TuiTextfieldControllerModule } from '@taiga-ui/legacy';\n\nimport { ScTerminalLinkDirective } from '../directives';\nimport { ScTelLinkModule } from '../directives/tel-link/sc-tel-link.module';\nimport { ScFormFieldsModule } from '../form-fields/form-fields.module';\nimport { ScVerificationModule } from '../verification';\nimport { ScResetUserPasswordComponent } from './reset-user-password/sc-reset-user-password.component';\nimport { ScUpdateUserInfoDialogComponent } from './update-user-info-dialog/sc-update-user-info-dialog.component';\nimport { ScUserManagersComponent } from './user-managers/sc-user-managers.component';\nimport { ScUserPhoneApproveDialogComponent } from './user-phone-approve-dialog/sc-user-phone-approve-dialog.component';\n\n/**\n * Модуль компонентов пользователя.\n */\n@NgModule({\n declarations: [ScResetUserPasswordComponent, ScUpdateUserInfoDialogComponent, ScUserPhoneApproveDialogComponent, ScUserManagersComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n TuiFieldErrorPipe,\n TuiInputPasswordModule,\n TuiButton,\n TuiError,\n TuiLabel,\n TuiTextfieldControllerModule,\n TuiLet,\n ScVerificationModule,\n ScFormFieldsModule,\n TuiLoader,\n TuiInputModule,\n TuiInputPhoneModule,\n TuiCheckbox,\n ...TuiDataList,\n TuiSelectModule,\n TuiLink,\n ScTerminalLinkDirective,\n ScTelLinkModule,\n TuiButtonLoading,\n ],\n exports: [ScResetUserPasswordComponent, ScUpdateUserInfoDialogComponent, ScUserPhoneApproveDialogComponent, ScUserManagersComponent],\n})\nexport class ScUserModule {}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Inject, Output } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { ScContragent, ScIBankAccount, ScICity, ScIContact, ScIDeliveryAddress, ScLocationsService, ScUser, ScUserService, ScVerificationService } from '@snabcentr/client-core';\nimport { TUI_TRUE_HANDLER, tuiIsFalsy, tuiIsPresent, tuiPure } from '@taiga-ui/cdk';\nimport { tuiFadeIn } from '@taiga-ui/core';\nimport { filter, map, Observable, share, skip, startWith, Subject, switchMap, tap } from 'rxjs';\n\nimport { SC_USER_INFO, SC_USER_PROVIDERS } from '../../providers';\n\n/**\n * Компонент контента профиля пользователя в виде раскрывающихся смысловых блоков.\n */\n@Component({\n selector: 'sc-profile-accordions-content',\n templateUrl: './sc-profile-accordions-content.component.html',\n providers: [SC_USER_PROVIDERS],\n animations: [tuiFadeIn],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScProfileAccordionsContentComponent {\n /**\n * {@link FormControl} переключателя 'Я хочу получать рассылку'.\n */\n public getNewsControl: FormControl<boolean> = new FormControl<boolean>(false, { nonNullable: true });\n\n /**\n * {@link Observable} запроса изменения признака пользователя 'Я хочу получать рассылку'.\n */\n private readonly getNewsRequest$ = this.getNewsControl.valueChanges.pipe(\n skip(1),\n switchMap((value) =>\n this.userService.updateUserInfo$({ getNews: value }).pipe(\n switchMap(() =>\n this.userService.updateUserChange$().pipe(\n tap((user) => {\n this.getNewsControl.patchValue(user.getNews, { emitEvent: false });\n }),\n startWith(null)\n )\n ),\n startWith(null)\n )\n ),\n\n share()\n );\n\n /**\n * {@link Observable} изменения состояния загрузки данных изменения признака пользователя 'Я хочу получать рассылку'.\n */\n public readonly getNewsLoading$: Observable<boolean> = this.getNewsRequest$.pipe(map(tuiIsFalsy));\n\n /**\n * {@link Subject} события отправки сообщения для подтверждения адреса электронной почты.\n */\n public readonly onSendApproveEmail: Subject<string> = new Subject<string>();\n\n /**\n * {@link Observable} запроса данных аутентификации.\n */\n private readonly sendApproveEmailRequest$: Observable<boolean | null> = this.onSendApproveEmail.pipe(\n switchMap((value) => this.verificationService.sendEmailApproveCode(value).pipe(map(TUI_TRUE_HANDLER), startWith(null))),\n startWith(false),\n share()\n );\n\n /**\n * {@link Observable} изменения состояния загрузки данных отправки сообщения для подтверждения адреса электронной почты.\n */\n public readonly approveEmailLoading$: Observable<boolean> = this.sendApproveEmailRequest$.pipe(map(tuiIsFalsy));\n\n /**\n * {@link Observable} изменения состояния признака, отправлено ли сообщение для подтверждения адреса электронной почты.\n */\n public readonly isSendApproveEmail$: Observable<boolean> = this.sendApproveEmailRequest$.pipe(filter(tuiIsPresent));\n\n /**\n * {@link Observable} изменения списка контактных лиц пользователя.\n */\n public readonly userContacts$ = this.userService.getUserContacts$();\n\n /**\n * Событие нажатия на кнопку редактирование профиля пользователя.\n */\n @Output()\n public editProfileClick: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на кнопку подтверждения телефона.\n */\n @Output()\n public approvePhoneClick: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на кнопку добавления контрагента.\n */\n @Output()\n public addContragentClick: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на кнопку удаления контрагента.\n */\n @Output()\n public deleteContragentClick: EventEmitter<ScContragent> = new EventEmitter<ScContragent>();\n\n /**\n * Событие нажатия на кнопку добавления банковского счёта контрагенту.\n */\n @Output()\n public addContragentBankAccountClick: EventEmitter<ScContragent> = new EventEmitter<ScContragent>();\n\n /**\n * Событие нажатия на кнопку удаления банковского счёта контрагента.\n */\n @Output()\n public deleteContragentBankAccountClick: EventEmitter<ScIBankAccount> = new EventEmitter<ScIBankAccount>();\n\n /**\n * Событие нажатия на кнопку добавления контактного лица контрагенту.\n */\n @Output()\n public addContragentContactClick: EventEmitter<ScContragent> = new EventEmitter<ScContragent>();\n\n /**\n * Событие нажатия на кнопку удаления контактного лица у контрагента.\n */\n @Output()\n public deleteContragentContactClick: EventEmitter<{ contact: ScIContact; contragent: ScContragent }> = new EventEmitter<{ contact: ScIContact; contragent: ScContragent }>();\n\n /**\n * Событие нажатия на кнопку добавления адреса доставки клиента.\n */\n @Output()\n public addDeliveryAddressClick: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на кнопку удаления адреса доставки у клиента.\n */\n @Output()\n public deleteDeliveryAddressClick: EventEmitter<ScIDeliveryAddress> = new EventEmitter<ScIDeliveryAddress>();\n\n /**\n * Событие нажатия на кнопку добавления контактного лица для адреса доставки.\n */\n @Output()\n public addDeliveryAddressContactClick: EventEmitter<ScIDeliveryAddress> = new EventEmitter<ScIDeliveryAddress>();\n\n /**\n * Событие нажатия на кнопку удаления контактного лица у адреса доставки.\n */\n @Output()\n public deleteDeliveryAddressContactClick: EventEmitter<{ contact: ScIContact; address: ScIDeliveryAddress }> = new EventEmitter<{\n contact: ScIContact;\n address: ScIDeliveryAddress;\n }>();\n\n /**\n * Событие нажатия на кнопку добавления контактного лица клиенту.\n */\n @Output()\n public addUserContactClick: EventEmitter<number> = new EventEmitter<number>();\n\n /**\n * Событие нажатия на кнопку удаления контактного лица у клиента.\n */\n @Output()\n public deleteUserContactClick: EventEmitter<ScIContact> = new EventEmitter<ScIContact>();\n\n /**\n * Инициализирует экземпляр класса {@link ScProfileComponent}.\n *\n * @param user$ Поток информации о текущем пользователе.\n * @param locationsService Сервис для получения списков стран, регионов, городов.\n * @param userService Сервис данных о пользователе.\n * @param verificationService Сервис верификации.\n */\n public constructor(\n @Inject(SC_USER_INFO) public readonly user$: Observable<ScUser>,\n private readonly locationsService: ScLocationsService,\n private readonly userService: ScUserService,\n private readonly verificationService: ScVerificationService\n ) {}\n\n /**\n * Создает запрос получения информации о городе текущего пользователя по идентификатору города.\n *\n * @param cityId Идентификатор записи города.\n */\n @tuiPure // TODO: TASK[#7615] Удалить поле рефакторинга сервиса работы с пользователем.\n public getUserCity$(cityId: number): Observable<ScICity> {\n return this.locationsService.getUserCity$(cityId);\n }\n}\n","<div\n *tuiLet=\"user$ | async as user\"\n class=\"flex flex-col gap-4\"\n>\n <sc-accordion\n [showArrow]=\"false\"\n [showAddButton]=\"false\"\n [open]=\"true\"\n >\n Общие данные\n <ng-template scAccordionContent>\n <tui-loader\n [overlay]=\"true\"\n [showLoader]=\"user === null\"\n >\n <div class=\"flex gap-2 pl-4\">\n <div\n *ngIf=\"user\"\n class=\"flex grow flex-col gap-2\"\n >\n <span class=\"font-medium\">{{ user.name }}</span>\n <div\n *ngIf=\"user.city && (getUserCity$(user.city) | async) as city\"\n class=\"flex items-center gap-1\"\n >\n <tui-icon icon=\"@tui.map-pin\"></tui-icon>\n <div class=\"flex flex-wrap\">\n <span>г. {{ city.name }}, </span>\n <span *ngIf=\"city.region\">{{ city.region.name }}</span>\n </div>\n </div>\n <div class=\"flex flex-wrap gap-2\">\n <a\n tuiLink\n [scTelLink]=\"user.contacts.phone.value\"\n iconStart=\"@tui.phone\"\n [pseudo]=\"true\"\n href=\"tel:{{ user.contacts.phone.value | scFormatePhone }}\"\n >{{ user.contacts.phone.value | scFormatePhone }}</a\n >\n <span\n *ngIf=\"!user.contacts.phone.isApproved\"\n class=\"text-tui-text-03\"\n >\n (Телефон не подтвержден.\n <button\n tuiLink\n [pseudo]=\"true\"\n (click)=\"approvePhoneClick.emit()\"\n >\n Подтвердить</button\n >)\n </span>\n </div>\n <div\n *tuiLet=\"!!(isSendApproveEmail$ | async) as isSendApproveEmail\"\n class=\"flex flex-wrap gap-x-2\"\n >\n <a\n tuiLink\n iconStart=\"@tui.mail\"\n [pseudo]=\"true\"\n href=\"mailto:{{ user.contacts.email.value }}\"\n >\n {{ user.contacts.email.value }}\n </a>\n <span\n *ngIf=\"!isSendApproveEmail && !user.contacts.email.isApproved\"\n class=\"inline-flex flex-wrap gap-1 text-tui-text-03\"\n >\n E-mail не подтвержден.\n <tui-loader\n [showLoader]=\"!!(approveEmailLoading$ | async)\"\n [overlay]=\"true\"\n >\n <button\n tuiLink\n [pseudo]=\"true\"\n (click)=\"onSendApproveEmail.next(user.contacts.email.value)\"\n >\n Подтвердить\n </button>\n </tui-loader>\n </span>\n <span\n *ngIf=\"isSendApproveEmail\"\n class=\"text-tui-success-fill\"\n @tuiFadeIn\n >\n Письмо для подтверждения успешно отправлено. Перейдите по ссылке в письме и обновите эту страницу.\n </span>\n </div>\n <tui-loader\n [showLoader]=\"!!(getNewsLoading$ | async)\"\n [overlay]=\"true\"\n >\n <label tuiLabel>\n <input\n tuiCheckbox\n type=\"checkbox\"\n size=\"s\"\n class=\"w-full\"\n [formControl]=\"getNewsControl\"\n [ngModel]=\"user.getNews\"\n />\n Я хочу получать рассылку Снабцентр о скидках и новостях по электронной почте.\n </label>\n </tui-loader>\n </div>\n\n <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n iconStart=\"@tui.pencil\"\n appearance=\"flat\"\n (click)=\"editProfileClick.emit()\"\n ></button>\n </div>\n </tui-loader>\n </ng-template>\n </sc-accordion>\n <sc-contragents-accordion\n (addContragentClick)=\"addContragentClick.emit()\"\n (deleteContragentClick)=\"deleteContragentClick.emit($event)\"\n (addContragentBankAccountClick)=\"addContragentBankAccountClick.emit($event)\"\n (deleteContragentBankAccountClick)=\"deleteContragentBankAccountClick.emit($event)\"\n (addContragentContactClick)=\"addContragentContactClick.emit($event)\"\n (deleteContragentContactClick)=\"deleteContragentContactClick.emit($event)\"\n ></sc-contragents-accordion>\n <sc-delivery-address-accordion\n (addDeliveryAddressClick)=\"addDeliveryAddressClick.emit()\"\n (deleteDeliveryAddressClick)=\"deleteDeliveryAddressClick.emit($event)\"\n (addDeliveryAddressContactClick)=\"addDeliveryAddressContactClick.emit($event)\"\n (deleteDeliveryAddressContactClick)=\"deleteDeliveryAddressContactClick.emit($event)\"\n ></sc-delivery-address-accordion>\n <sc-contacts-accordion\n *ngIf=\"user\"\n [contacts$]=\"userContacts$\"\n (addContactClick)=\"addUserContactClick.emit(user.id)\"\n (deleteButtonClick)=\"deleteUserContactClick.emit($event)\"\n ></sc-contacts-accordion>\n <sc-accordion\n #passwordAccordion\n [showArrow]=\"false\"\n [showAddButton]=\"false\"\n >\n Изменить пароль\n <ng-template scAccordionContent>\n <sc-reset-user-password (successResetPassword)=\"passwordAccordion.close()\"></sc-reset-user-password>\n </ng-template>\n </sc-accordion>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TuiLet } from '@taiga-ui/cdk';\nimport { TuiButton, TuiIcon, TuiLabel, TuiLink, TuiLoader } from '@taiga-ui/core';\nimport { TuiCheckbox } from '@taiga-ui/kit';\n\nimport { ScAccordionModule } from '../accordion';\nimport { ScContactsModule } from '../contacts';\nimport { ScContragentsModule } from '../contragents';\nimport { ScDeliveryAddressModule } from '../delivery-address';\nimport { ScTerminalLinkDirective } from '../directives';\nimport { ScTelLinkModule } from '../directives/tel-link/sc-tel-link.module';\nimport { ScUserModule } from '../user';\nimport { ScProfileAccordionsContentComponent } from './sc-profile-accordions-content/sc-profile-accordions-content.component';\n\n/**\n * Модуль профиля пользователя.\n */\n@NgModule({\n declarations: [ScProfileAccordionsContentComponent],\n imports: [\n CommonModule,\n ScUserModule,\n ScAccordionModule,\n ScContragentsModule,\n ScDeliveryAddressModule,\n TuiLoader,\n TuiLet,\n TuiLink,\n TuiLabel,\n TuiIcon,\n FormsModule,\n ReactiveFormsModule,\n TuiButton,\n ScContactsModule,\n ScTerminalLinkDirective,\n ScTelLinkModule,\n TuiCheckbox,\n ],\n exports: [ScProfileAccordionsContentComponent],\n})\nexport class ScProfileModule {}\n","/*\n * Public API Surface of ui\n */\n\nexport * from './auth';\nexport * from './accordion';\nexport * from './banner';\nexport * from './cart';\nexport * from './catalog';\nexport * from './contragents';\nexport * from './contacts';\nexport * from './delivery-address';\nexport * from './directives';\nexport * from './files';\nexport * from './form-fields';\nexport * from './icons';\nexport * from './loader';\nexport * from './brands-list';\nexport * from './news';\nexport * from './order';\nexport * from './pipes';\nexport * from './samples';\nexport * from './providers';\nexport * from './qrcode';\nexport * from './share-button';\nexport * from './user';\nexport * from './validators';\nexport * from './verification';\nexport * from './profile';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i6","i9","i4","i5","i6.ScVerificationPhoneCheckFormComponent","i7","i2","i3","i4.ScSignInFormByPhoneComponent","i5.ScSignInFormByEmailComponent","i8","i9.ScSuggestionFieldComponent","i10","i1","i2.ScSuggestionFieldComponent","i8.ScVerificationPhoneCheckFormComponent","i9.ScAddressesSelectionFieldComponent","i10.ScSuggestionFieldComponent","i11","i12","i13.ScNewContragentBankAccountsFormComponent","i14.ScNewContragentFormComponent","i15.ScNewContactFormComponent","AngularxQRCodeModule","i5.ScNewContactFormComponent","i2.ScAccordionComponent","i3.ScAccordionContentDirective","i6.ScTerminalLinkDirective","i7.ScTelLinkDirective","i8.ScFormatePhonePipe","i5.ScNewContragentBankAccountsFormComponent","i7.ScNewContragentBankAccountsFormComponent","i8.ScNewContragentFormComponent","i3.ScAccordionComponent","i4.ScAccordionContentDirective","i7.ScContactsAccordionComponent","i7.ScContragentsAccordionItemComponent","i2.ScPxConverter","i3.ScFavoriteBtnComponent","i5.ScFavoriteBtnComponent","i6.ScInputQuantityComponent","i7.ScPriceWarehouseStockComponent","ScFavoriteButtonComponent","i4.ScInputQuantityComponent","i5.ScPriceWarehouseStockComponent","i7.ScSuggestionFieldComponent","i5.ScContactsAccordionComponent","i7.ScDeliveryAddressAccordionItemComponent","i2.TreeIconService","i1.TreeIconService","i6.TreeDirective","i7.TreeTopDirective","i1.ScShareButtonComponent","i3.ScSuggestionFieldComponent","i7.ScAddressesSelectionFieldComponent","i8.ScSuggestionFieldComponent","i4.ScTerminalLinkDirective","i5.ScTelLinkDirective","i6.ScFormatePhonePipe","i3.ScResetUserPasswordComponent","i4.ScAccordionComponent","i5.ScAccordionContentDirective","i6.ScContragentsAccordionComponent","i7.ScDeliveryAddressAccordionComponent","i11.ScContactsAccordionComponent","i12.ScTerminalLinkDirective","i13.ScTelLinkDirective","i14","i15.ScFormatePhonePipe"],"mappings":"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"}
1
+ {"version":3,"file":"snabcentr-client-ui.mjs","sources":["../../../projects/client-ui/auth/enums/auth-method.ts","../../../projects/client-ui/masks/sc-account-number-mask.ts","../../../projects/client-ui/masks/sc-bic-mask.ts","../../../projects/client-ui/masks/sc-correspondent-account-mask.ts","../../../projects/client-ui/masks/sc-inn-mask.ts","../../../projects/client-ui/masks/sc-kpp-mask.ts","../../../projects/client-ui/masks/sc-okpo-mask.ts","../../../projects/client-ui/masks/sc-phone-verification-code-mask.ts","../../../projects/client-ui/verification/verification-phone-check-form/sc-verification-phone-check-form.component.ts","../../../projects/client-ui/verification/verification-phone-check-form/sc-verification-phone-check-form.component.html","../../../projects/client-ui/auth/sc-sign-in-form/sc-sign-in-form-by-phone/sc-sign-in-form-by-phone.component.ts","../../../projects/client-ui/auth/sc-sign-in-form/sc-sign-in-form-by-phone/sc-sign-in-form-by-phone.component.html","../../../projects/client-ui/auth/sc-sign-in-form/sc-sign-in-form-by-email/sc-sign-in-form-by-email.component.ts","../../../projects/client-ui/auth/sc-sign-in-form/sc-sign-in-form-by-email/sc-sign-in-form-by-email.component.html","../../../projects/client-ui/auth/sc-sign-in-form/sc-sign-in-form.component.ts","../../../projects/client-ui/auth/sc-sign-in-form/sc-sign-in-form.component.html","../../../projects/client-ui/validators/scBicValidator.ts","../../../projects/client-ui/validators/scCorrespondentAccountValidator.ts","../../../projects/client-ui/validators/sc-password-confirm-matching-validator.ts","../../../projects/client-ui/validators/stepValidator.ts","../../../projects/client-ui/form-fields/addresses-selection-field/sc-addresses-selection-field.component.ts","../../../projects/client-ui/form-fields/addresses-selection-field/sc-addresses-selection-field.component.html","../../../projects/client-ui/form-fields/suggestion-field/sc-suggestion-field.component.ts","../../../projects/client-ui/form-fields/suggestion-field/sc-suggestion-field.component.html","../../../projects/client-ui/contragents/new-contragent-bank-account-form/sc-new-contragent-bank-account-form.component.ts","../../../projects/client-ui/contragents/new-contragent-bank-account-form/sc-new-contragent-bank-account-form.component.html","../../../projects/client-ui/contragents/new-contragent-form/sc-new-contragent-form.component.ts","../../../projects/client-ui/contragents/new-contragent-form/sc-new-contragent-form.component.html","../../../projects/client-ui/contacts/new-contact-form/sc-new-contact-form.component.ts","../../../projects/client-ui/contacts/new-contact-form/sc-new-contact-form.component.html","../../../projects/client-ui/auth/sign-up-form/sc-sign-up-form.component.ts","../../../projects/client-ui/auth/sign-up-form/sc-sign-up-form.component.html","../../../projects/client-ui/accordion/sc-accordion-content.directive.ts","../../../projects/client-ui/accordion/sc-accordion.component.ts","../../../projects/client-ui/accordion/sc-accordion.component.html","../../../projects/client-ui/accordion/sc-accordion.module.ts","../../../projects/client-ui/directives/next-input-focus/sc-next-input-focus.directive.ts","../../../projects/client-ui/directives/next-input-focus/sc-next-input-focus.module.ts","../../../projects/client-ui/directives/abstract-price-card/abstract-sc-price-card.directive.ts","../../../projects/client-ui/directives/tel-link/sc-tel-link.directive.ts","../../../projects/client-ui/pipes/sc-formatted-phone.ts","../../../projects/client-ui/directives/tel-link/sc-tel-link.module.ts","../../../projects/client-ui/qrcode/qrcode-dialog/sc-qrcode-dialog.component.ts","../../../projects/client-ui/qrcode/qrcode-dialog/sc-qrcode-dialog.component.html","../../../projects/client-ui/qrcode/sc-qrcode.module.ts","../../../projects/client-ui/directives/terminal-link/sc-terminal-link.directive.ts","../../../projects/client-ui/form-fields/form-fields.module.ts","../../../projects/client-ui/contacts/add-contact-dialog/sc-add-contact-dialog.component.ts","../../../projects/client-ui/contacts/add-contact-dialog/sc-add-contact-dialog.component.html","../../../projects/client-ui/contacts/contacts-accordion/sc-contacts-accordion.component.ts","../../../projects/client-ui/contacts/contacts-accordion/sc-contacts-accordion.component.html","../../../projects/client-ui/contacts/sc-contacts.module.ts","../../../projects/client-ui/contragents/add-contragent-bank-account-dialog/sc-add-contragent-bank-account-dialog.component.ts","../../../projects/client-ui/contragents/add-contragent-bank-account-dialog/sc-add-contragent-bank-account-dialog.component.html","../../../projects/client-ui/contragents/add-contragent-dialog/sc-add-contragent-dialog.component.ts","../../../projects/client-ui/contragents/add-contragent-dialog/sc-add-contragent-dialog.component.html","../../../projects/client-ui/contragents/contragents-accordion/contragents-accordion-item/sc-contragents-accordion-item.component.ts","../../../projects/client-ui/contragents/contragents-accordion/contragents-accordion-item/sc-contragents-accordion-item.component.html","../../../projects/client-ui/contragents/contragents-accordion/sc-contragents-accordion.component.ts","../../../projects/client-ui/contragents/contragents-accordion/sc-contragents-accordion.component.html","../../../projects/client-ui/contragents/sc-contragents.module.ts","../../../projects/client-ui/verification/sc-verification.module.ts","../../../projects/client-ui/auth/sc-auth.module.ts","../../../projects/client-ui/helpers/sc-px-converter.ts","../../../projects/client-ui/banner/sc-banner.component.ts","../../../projects/client-ui/banner/sc-banner.component.html","../../../projects/client-ui/banner/sc-banner.module.ts","../../../projects/client-ui/catalog/categories-list/sc-categories-list.component.ts","../../../projects/client-ui/catalog/categories-list/sc-categories-list.component.html","../../../projects/client-ui/catalog/sc-favorite-btn/sc-favorite-btn.component.ts","../../../projects/client-ui/catalog/sc-favorite-btn/sc-favorite-btn.component.html","../../../projects/client-ui/catalog/category-card/sc-category-card.component.ts","../../../projects/client-ui/catalog/category-card/sc-category-card.component.html","../../../projects/client-ui/catalog/input-quantity/sc-input-quantity.component.ts","../../../projects/client-ui/catalog/input-quantity/sc-input-quantity.component.html","../../../projects/client-ui/catalog/price-warehouse-stock/sc-price-warehouse-stock.component.ts","../../../projects/client-ui/catalog/price-warehouse-stock/sc-price-warehouse-stock.component.html","../../../projects/client-ui/catalog/price-card/sc-price-card.component.ts","../../../projects/client-ui/catalog/price-card/sc-price-card.component.html","../../../projects/client-ui/catalog/price-history/sc-price-history.component.ts","../../../projects/client-ui/catalog/price-history/sc-price-history.component.html","../../../projects/client-ui/catalog/price-list-pagination/sc-price-list-pagination.component.ts","../../../projects/client-ui/catalog/price-list-pagination/sc-price-list-pagination.component.html","../../../projects/client-ui/catalog/sc-catalog.module.ts","../../../projects/client-ui/cart/cart-item-mobile/sc-cart-item-mobile.component.ts","../../../projects/client-ui/cart/cart-item-mobile/sc-cart-item-mobile.component.html","../../../projects/client-ui/cart/sc-cart.module.ts","../../../projects/client-ui/delivery-address/add-delivery-address-dialog/sc-add-delivery-address-dialog.component.ts","../../../projects/client-ui/delivery-address/add-delivery-address-dialog/sc-add-delivery-address-dialog.component.html","../../../projects/client-ui/delivery-address/delivery-address-accordion/delivery-address-accordion-item/sc-delivery-address-accordion-item.component.ts","../../../projects/client-ui/delivery-address/delivery-address-accordion/delivery-address-accordion-item/sc-delivery-address-accordion-item.component.html","../../../projects/client-ui/delivery-address/delivery-address-accordion/sc-delivery-address-accordion.component.ts","../../../projects/client-ui/delivery-address/delivery-address-accordion/sc-delivery-address-accordion.component.html","../../../projects/client-ui/delivery-address/sc-delivery-address.module.ts","../../../projects/client-ui/files/services/tree-icon.service.ts","../../../projects/client-ui/files/services/tree-loader.service.ts","../../../projects/client-ui/files/directives/tree.directive.ts","../../../projects/client-ui/files/file-tree-item/file-tree-item.component.ts","../../../projects/client-ui/files/file-tree-item/file-tree-item.component.html","../../../projects/client-ui/files/directives/tree-top.directive.ts","../../../projects/client-ui/files/files-and-documents/files-and-documents.component.ts","../../../projects/client-ui/files/files-and-documents/files-and-documents.component.html","../../../projects/client-ui/files/files-and-documents.module.ts","../../../projects/client-ui/icons/sc-client-ui-icons-name.ts","../../../projects/client-ui/brands-list/sc-brands-list.component.ts","../../../projects/client-ui/brands-list/sc-brands-list.component.html","../../../projects/client-ui/brands-list/sc-brands-list.module.ts","../../../projects/client-ui/share-button/sc-share-button.component.ts","../../../projects/client-ui/share-button/sc-share-button.component.html","../../../projects/client-ui/news/news-card/sc-news-card.component.ts","../../../projects/client-ui/news/news-card/sc-news-card.component.html","../../../projects/client-ui/news/news-card-skeleton/sc-news-card-skeleton.component.ts","../../../projects/client-ui/news/news-card-skeleton/sc-news-card-skeleton.component.html","../../../projects/client-ui/share-button/sc-share-button.module.ts","../../../projects/client-ui/news/sc-news.module.ts","../../../projects/client-ui/order/order-item-mobile/sc-order-item-mobile.component.ts","../../../projects/client-ui/order/order-item-mobile/sc-order-item-mobile.component.html","../../../projects/client-ui/order/sc-payment-status/sc-payment-status.component.ts","../../../projects/client-ui/order/sc-payment-status/sc-payment-status.component.html","../../../projects/client-ui/order/sc-order.module.ts","../../../projects/client-ui/samples/ask-to-sample-form/sc-ask-to-sample-form.component.ts","../../../projects/client-ui/samples/ask-to-sample-form/sc-ask-to-sample-form.component.html","../../../projects/client-ui/samples/preview-sample/sc-preview-sample.component.ts","../../../projects/client-ui/samples/preview-sample/sc-preview-sample.component.html","../../../projects/client-ui/samples/sc-sample.module.ts","../../../projects/client-ui/providers/scUserProviders.ts","../../../projects/client-ui/user/reset-user-password/sc-reset-user-password.component.ts","../../../projects/client-ui/user/reset-user-password/sc-reset-user-password.component.html","../../../projects/client-ui/user/update-user-info-dialog/sc-update-user-info-dialog.component.ts","../../../projects/client-ui/user/update-user-info-dialog/sc-update-user-info-dialog.component.html","../../../projects/client-ui/user/user-managers/sc-user-managers.component.ts","../../../projects/client-ui/user/user-managers/sc-user-managers.component.html","../../../projects/client-ui/user/user-phone-approve-dialog/sc-user-phone-approve-dialog.component.ts","../../../projects/client-ui/user/user-phone-approve-dialog/sc-user-phone-approve-dialog.component.html","../../../projects/client-ui/user/sc-user.module.ts","../../../projects/client-ui/profile/sc-profile-accordions-content/sc-profile-accordions-content.component.ts","../../../projects/client-ui/profile/sc-profile-accordions-content/sc-profile-accordions-content.component.html","../../../projects/client-ui/profile/sc-profile.module.ts","../../../projects/client-ui/public-api.ts","../../../projects/client-ui/snabcentr-client-ui.ts"],"sourcesContent":["/**\n * Перечисление типов аутентификации.\n */\nexport enum AuthMethod {\n /**\n * Аутентификация по номеру телефона и коду подтверждения.\n */\n byPhone = 'by_phone',\n\n /**\n * Аутентификация по логину и паролю.\n */\n byEmail = 'by_email',\n}\n","import { MaskitoOptions } from '@maskito/core';\n\n/**\n * Маска поля ввода номера счета.\n */\nexport const scAccountNumberMask = {\n mask: /^\\d{0,20}$/\n} as MaskitoOptions;\n","import { MaskitoOptions } from '@maskito/core';\n\n/**\n * Маска поля ввода БИК.\n */\nexport const scBicMask = {\n mask: /^\\d{0,9}$/\n} as MaskitoOptions;\n","import { MaskitoOptions } from '@maskito/core';\n\n/**\n * Маска поля ввода номера корреспондентского счета.\n */\nexport const scCorrespondentAccount = {\n mask: /^\\d{0,20}$/\n} as MaskitoOptions;\n","import { MaskitoOptions } from '@maskito/core';\n\n/**\n * Маска поля ввода ИНН индивидуального предпринимателя.\n */\nexport const scEntrepreneurInnMask = {\n mask: /^\\d{0,12}$/\n} as MaskitoOptions;\n\n/**\n * Маска поля ввода ИНН юридического лица.\n */\nexport const scLegalInnMask = {\n mask: /^\\d{0,10}$/\n} as MaskitoOptions;\n","import { MaskitoOptions } from '@maskito/core';\n\n/**\n * Маска поля ввода КПП.\n */\nexport const scKppMask = {\n mask: /^\\d{0,9}$/\n} as MaskitoOptions;\n","import { MaskitoOptions } from '@maskito/core';\n\n/**\n * Маска поля ввода ОКПО индивидуального предпринимателя.\n */\nexport const scEntrepreneurOkpoMask = {\n mask: /^\\d{0,10}$/\n} as MaskitoOptions;\n\n/**\n * Маска поля ввода ОКПО юридического лица.\n */\nexport const scLegalOkpoMask = {\n mask: /^\\d{0,8}$/\n} as MaskitoOptions;\n","import { MaskitoOptions } from '@maskito/core';\n\n/**\n * Маска поля ввода кода подтверждения телефона.\n */\nexport const scPhoneVerificationCodeMask: MaskitoOptions = {\n mask: /^\\d{0,6}$/\n} as MaskitoOptions;\n","/* eslint-disable no-underscore-dangle,lodash/prefer-constant */\n\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Inject, Input, OnInit, Output } from '@angular/core';\nimport { FormControl, FormGroup, FormGroupDirective } from '@angular/forms';\nimport { MaskitoOptions } from '@maskito/core';\nimport { ScVerificationService } from '@snabcentr/client-core';\nimport { tuiControlValue } from '@taiga-ui/cdk';\nimport { catchError, distinctUntilChanged, endWith, filter, finalize, map, Observable, of, scan, share, startWith, Subject, switchMap, takeWhile, tap, timer } from 'rxjs';\n\nimport { ApiErrorResponse } from '../../auth/interfaces/api-error-response';\nimport { scPhoneVerificationCodeMask } from '../../masks';\n\n/**\n * Компонент формы проверки телефона и получения кода подтверждения.\n */\n@Component({\n selector: 'sc-verification-phone-check-form',\n templateUrl: './sc-verification-phone-check-form.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScVerificationPhoneCheckFormComponent implements OnInit {\n /**\n * Признак, следует ли отображать функционал кода подтверждения.\n */\n @Input()\n public set showCodeFields(showCodeFields: boolean) {\n this._showCodeFields = showCodeFields;\n this.form.controls.verificationCode[showCodeFields ? 'enable' : 'disable']();\n }\n\n /**\n * Признак, следует ли отображать функционал кода подтверждения.\n */\n public get showCodeFields(): boolean {\n return this._showCodeFields;\n }\n\n /**\n * Признак, что поле ввода телефона только для чтения.\n */\n @Input()\n public readOnly: boolean = false;\n\n /**\n * Признак, следует ли телефону быть в системе. От этого признака зависит в каких случаях выдавать ошибку при проверки занятости телефона.\n */\n @Input()\n public shouldBeBusy: boolean = true;\n\n /**\n * Признак, следует ли проверять подтверждён ли телефона в системе. При `true` будет вызывать ошибку при наличие телефона в системе без подтверждения.\n */\n @Input()\n public shouldBeConfirmed?: boolean = undefined;\n\n /**\n * Наличие кода подтверждения у пользователя.\n */\n @Input()\n public haveCode: boolean = false;\n\n /**\n * Событие для обратной привязки наличия кода подтверждения\n */\n @Output()\n public haveCodeChange = new EventEmitter<boolean>();\n\n /**\n * {@link Observable} запроса проверки номера телефона.\n */\n public phoneCheck$?: Observable<boolean | null>;\n\n /**\n * {@link Subject} события отправки кода подтверждения.\n */\n public readonly onSendCode: Subject<void> = new Subject<void>();\n\n /**\n * {@link Observable} запроса данных получения кода подтверждения.\n */\n public readonly loadingApproveCode$: Observable<boolean> = this.onSendCode.pipe(\n map(() => this.phoneControl.value),\n filter((value): value is string => this.phoneControl.valid),\n switchMap((value) =>\n this.verificationService.sendPhoneApproveCode(value).pipe(\n tap(() => {\n this.reloadTimer$.next(60);\n }),\n map(() => false),\n catchError((error: unknown) => {\n if (error instanceof HttpErrorResponse) {\n const errorResponse = error.error as ApiErrorResponse;\n\n const regex = /(\\d{2}):\\d{2}/;\n const match = errorResponse.message.match(regex);\n\n if (match && match.length > 1) {\n const timeParts = match[0].split(':');\n const seconds = Number.parseInt(timeParts[1], 10);\n\n this.reloadTimer$.next(seconds);\n } else {\n this.phoneControl.setErrors({ serverResponse: errorResponse.errors?.['phone'] ?? [errorResponse.message] });\n }\n }\n\n return of(false);\n }),\n finalize(() => {\n this.setHaveCode(true);\n }),\n startWith(true)\n )\n ),\n startWith(false),\n share()\n );\n\n /**\n * Маска поля ввода кода для подтверждения.\n */\n public readonly verificationCodeMask: MaskitoOptions = scPhoneVerificationCodeMask;\n\n /**\n * {@link Subject} события запуска/остановки таймера.\n */\n public readonly reloadTimer$: Subject<number> = new Subject<number>();\n\n /**\n * {@link Observable} Таймера.\n *\n * TODO: Вынести таймер в отдельную директиву TASK:[#9260].\n */\n public readonly timer$: Observable<string | null> = this.reloadTimer$.pipe(\n switchMap((sec) =>\n timer(0, 1000).pipe(\n scan((total) => -1 + total, sec),\n takeWhile((total) => total >= 0),\n map((total) => {\n const minutes = Math.floor(total / 60);\n const seconds = total % 60;\n\n return `${Math.round(minutes).toString().padStart(2, '0')}:${Math.round(seconds).toString().padStart(2, '0')}`;\n }),\n endWith(null),\n startWith(null),\n distinctUntilChanged()\n )\n )\n );\n\n /**\n * Признак, следует ли отображать функционал кода подтверждения.\n */\n private _showCodeFields: boolean = true;\n\n /**\n * Инициализирует экземпляр класса {@link ScVerificationPhoneCheckFormComponent}.\n *\n * @param verificationService Сервис верификации.\n * @param formGroupDirective Директива c `FormGroup` из DOM.\n */\n public constructor(\n private readonly verificationService: ScVerificationService,\n @Inject(FormGroupDirective)\n private readonly formGroupDirective?: FormGroupDirective\n ) {}\n\n /**\n * Группа полей ввода для формы «Вход на сайт».\n */\n public get form(): FormGroup<{\n phone: FormControl<string | null>;\n verificationCode: FormControl<string | null>;\n }> {\n return this.formGroupDirective?.form as FormGroup<{\n phone: FormControl<string | null>;\n verificationCode: FormControl<string | null>;\n }>;\n }\n\n /**\n * Поле ввода 'Номер телефона'.\n */\n public get phoneControl(): FormControl<string | null> {\n return this.form.controls.phone;\n }\n\n /** @inheritDoc */\n public ngOnInit(): void {\n this.phoneCheck$ = tuiControlValue<string | null>(this.phoneControl).pipe(\n tap(() => {\n this.reloadTimer$.next(0);\n }),\n switchMap((value) => {\n if (this.phoneControl.valid && !!value) {\n return this.verificationService.getPhoneCheck$(value).pipe(\n map((result) => {\n if (this.shouldBeBusy !== result.isBusy) {\n this.phoneControl.setErrors({\n serverResponse: [\n result.isBusy ? 'Пользователь с таким номером телефона уже существует' : 'Пользователя с таким номером телефона не существует',\n ],\n });\n this.phoneControl.markAsTouched();\n\n return false;\n }\n\n if (this.shouldBeConfirmed !== undefined && this.shouldBeConfirmed !== result.isConfirmed) {\n this.phoneControl.setErrors({\n serverResponse: [\n result.isConfirmed\n ? 'Телефон уже подтверждён'\n : 'Номер телефона не подтверждён или вход по нему невозможен. Обратитесь к вашему персональному менеджеру или войдите с использованием e-mail и пароля.',\n ],\n });\n this.phoneControl.markAsTouched();\n\n return false;\n }\n\n return true;\n }),\n catchError((error: unknown) => {\n if (error instanceof HttpErrorResponse) {\n const errorResponse = error.error as ApiErrorResponse;\n this.phoneControl.setErrors({ serverResponse: errorResponse.errors?.['phone'] ?? [errorResponse.message] });\n }\n\n return of(false);\n }),\n startWith(null)\n );\n }\n\n this.setHaveCode(false);\n\n return of(false);\n }),\n share()\n );\n\n this.setHaveCode(false);\n }\n\n /**\n * Устанавливает состояние наличия кода подтверждения у пользователя.\n *\n * @param haveCode Признак того есть ли код подтверждения или нет.\n */\n public setHaveCode(haveCode: boolean): void {\n this.haveCode = haveCode;\n this.haveCodeChange.emit(haveCode);\n }\n}\n","<form\n [formGroup]=\"form\"\n *tuiLet=\"loadingApproveCode$ | async as loadingApproveCode\"\n class=\"flex flex-col gap-3\"\n>\n <label tuiLabel\n >Номер телефона\n <tui-input-phone\n formControlName=\"phone\"\n [readOnly]=\"readOnly\"\n [tuiTextfieldCustomContent]=\"checkingPhone\"\n >\n Номер телефона\n <input\n tuiTextfieldLegacy\n autocomplete=\"phone\"\n />\n </tui-input-phone>\n <tui-error\n formControlName=\"phone\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <ng-container *ngIf=\"showCodeFields && form.enabled\">\n <label\n *ngIf=\"loadingApproveCode === false && haveCode\"\n tuiLabel\n >Код из СМС\n <tui-input formControlName=\"verificationCode\">\n Код из СМС\n <input\n tuiTextfieldLegacy\n [maskito]=\"verificationCodeMask\"\n autocomplete=\"new-password\"\n />\n </tui-input>\n <tui-error\n formControlName=\"verificationCode\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n\n <div\n *tuiLet=\"!!loadingApproveCode as loadingApproveCode\"\n class=\"flex justify-center gap-4\"\n >\n <button\n *ngIf=\"!haveCode\"\n tuiButton\n (click)=\"onSendCode.next()\"\n [disabled]=\"loadingApproveCode || !!!(phoneCheck$ | async) || phoneControl.invalid\"\n [loading]=\"loadingApproveCode\"\n iconStart=\"@tui.sc.send\"\n >\n Получить код\n </button>\n <button\n *ngIf=\"!loadingApproveCode && !haveCode\"\n tuiLink\n [pseudo]=\"true\"\n [disabled]=\"!!!(phoneCheck$ | async) || phoneControl.invalid\"\n (click)=\"setHaveCode(true)\"\n >\n У меня есть код\n </button>\n\n <ng-container *tuiLet=\"timer$ | async as timer\">\n <tui-loader\n *ngIf=\"haveCode\"\n [showLoader]=\"loadingApproveCode\"\n >\n <button\n tuiLink\n [pseudo]=\"true\"\n [disabled]=\"loadingApproveCode || timer\"\n (click)=\"onSendCode.next()\"\n >\n Повторно отправить код\n <ng-container\n *ngIf=\"timer\"\n class=\"!text-tui-base-08\"\n >(через {{ timer }})</ng-container\n >\n </button>\n </tui-loader>\n </ng-container>\n </div>\n </ng-container>\n</form>\n\n<ng-template #checkingPhone>\n <tui-loader\n *ngIf=\"!!!(phoneCheck$ | async) && phoneControl.valid\"\n class=\"size-4\"\n >\n </tui-loader>\n</ng-template>\n","/* eslint-disable no-restricted-syntax,@typescript-eslint/unbound-method */\n\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport { IAuthToken, IPhoneLogin, ScAuthService } from '@snabcentr/client-core';\nimport { tuiIsFalsy } from '@taiga-ui/cdk';\nimport { catchError, filter, map, Observable, of, share, startWith, Subject, switchMap } from 'rxjs';\n\nimport { ApiErrorResponse } from '../../interfaces/api-error-response';\n\n/**\n * Компонент аутентификации по номеру телефона и коду подтверждения.\n */\n@Component({\n selector: 'sc-sign-in-form-by-phone',\n templateUrl: './sc-sign-in-form-by-phone.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScSignInFormByPhoneComponent {\n /**\n * Наличие кода подтверждения у пользователя.\n */\n public haveCode: boolean = false;\n\n /**\n * Группа полей ввода для формы «Вход на сайт».\n */\n public readonly form = new FormGroup({\n phone: new FormControl<string | null>(null, [Validators.required, Validators.minLength(12)]),\n verificationCode: new FormControl<string | null>(null, [Validators.required, Validators.minLength(6)]),\n });\n\n /**\n * {@link Subject} события отправки формы.\n */\n public readonly onSubmit: Subject<void> = new Subject<void>();\n\n /**\n * {@link Observable} запроса данных аутентификации.\n */\n private readonly request$: Observable<IAuthToken | null> = this.onSubmit.pipe(\n map(() => this.form.value),\n filter((value): value is IPhoneLogin => this.form.valid),\n switchMap((value) =>\n this.authService.getSignIn$(value).pipe(\n catchError((error: unknown) => {\n if (error instanceof HttpErrorResponse) {\n const { errors, message } = error.error as ApiErrorResponse;\n\n for (const key in errors) {\n if (Object.hasOwn(errors, key)) {\n this.form.get(key)?.setErrors({ serverResponse: errors[key] });\n }\n }\n\n if (!errors && message) {\n this.form.setErrors({ serverResponse: [message] });\n }\n }\n\n return of({} as IAuthToken);\n }),\n startWith(null)\n )\n ),\n share()\n );\n\n /**\n * {@link Observable} изменения состояния загрузки данных аутентификации по номеру телефона.\n */\n public readonly loading$: Observable<boolean> = this.request$.pipe(map(tuiIsFalsy));\n\n /**\n * Инициализирует экземпляр класса {@link ScSignInFormByPhoneComponent}.\n *\n * @param authService Сервис аутентификации.\n */\n public constructor(private readonly authService: ScAuthService) {}\n}\n","<form\n [formGroup]=\"form\"\n *tuiLet=\"!!(loading$ | async) as loading\"\n (ngSubmit)=\"onSubmit.next()\"\n class=\"mb-4 flex flex-col items-center gap-4\"\n>\n <sc-verification-phone-check-form\n [(haveCode)]=\"haveCode\"\n [shouldBeBusy]=\"true\"\n [shouldBeConfirmed]=\"true\"\n class=\"w-full\"\n ></sc-verification-phone-check-form>\n <button\n *ngIf=\"haveCode\"\n tuiButton\n type=\"submit\"\n [loading]=\"loading\"\n [disabled]=\"form.invalid || loading\"\n iconStart=\"@tui.sc.circle-arrow-in-right\"\n >\n Войти\n </button>\n</form>\n","/* eslint-disable no-restricted-syntax,@typescript-eslint/unbound-method */\n\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Output } from '@angular/core';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport { IAuthToken, ILogin, ScAuthService } from '@snabcentr/client-core';\nimport { tuiIsFalsy } from '@taiga-ui/cdk';\nimport { catchError, filter, map, Observable, of, share, startWith, Subject, switchMap } from 'rxjs';\n\nimport { ApiErrorResponse } from '../../interfaces/api-error-response';\n\n/**\n * Компонент аутентификации по адресу электронной почты и паролю.\n */\n@Component({\n selector: 'sc-sign-in-form-by-email',\n templateUrl: './sc-sign-in-form-by-email.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScSignInFormByEmailComponent {\n /**\n * Группа полей ввода для формы «Вход на сайт».\n */\n public readonly formByEmail: FormGroup = new FormGroup({\n login: new FormControl<string | null>(null, [Validators.required, Validators.email]),\n password: new FormControl<string | null>(null, Validators.required),\n });\n\n /**\n * {@link Subject} события отправки формы.\n */\n public readonly onSubmit: Subject<void> = new Subject<void>();\n\n /**\n * {@link Observable} запроса данных аутентификации.\n */\n private readonly emailRequest$: Observable<IAuthToken | null> = this.onSubmit.pipe(\n filter(() => this.formByEmail.valid),\n map(() => this.formByEmail.value as ILogin),\n switchMap((value) =>\n this.authService.getSignIn$(value).pipe(\n catchError((error: unknown) => {\n if (error instanceof HttpErrorResponse) {\n const { errors, message } = error.error as ApiErrorResponse;\n\n for (const key in errors) {\n if (Object.hasOwn(errors, key)) {\n this.formByEmail.get(key)?.setErrors({ serverResponse: errors[key] });\n }\n }\n\n if (!errors && message) {\n this.formByEmail.setErrors({ serverResponse: [message] });\n }\n }\n\n return of({} as IAuthToken);\n }),\n startWith(null)\n )\n ),\n share()\n );\n\n /**\n * {@link Observable} изменения состояния загрузки данных аутентификации по email.\n */\n public readonly loadingEmailAuth$: Observable<boolean> = this.emailRequest$.pipe(map(tuiIsFalsy));\n\n /**\n * Сигнал нажатия на кнопку \"Забыли пароль\".\n */\n @Output() public readonly forgotPassword: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Инициализирует экземпляр класса {@link ScSignInFormByEmailComponent}.\n *\n * @param authService Сервис аутентификации.\n */\n public constructor(private readonly authService: ScAuthService) {}\n}\n","<form\n [formGroup]=\"formByEmail\"\n (ngSubmit)=\"onSubmit.next()\"\n>\n <div class=\"mb-8 flex flex-col gap-4\">\n <label tuiLabel\n >Адрес электронной почты\n <tui-input formControlName=\"login\">\n Адрес электронной почты\n <input\n tuiTextfieldLegacy\n autocomplete=\"email\"\n />\n </tui-input>\n <tui-error\n formControlName=\"login\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <label tuiLabel\n >Пароль\n <tui-input-password formControlName=\"password\">\n Пароль\n <input\n tuiTextfieldLegacy\n autocomplete=\"current-password\"\n />\n </tui-input-password>\n <tui-error\n formControlName=\"password\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <tui-error [error]=\"[] | tuiFieldError | async\"></tui-error>\n </div>\n <div class=\"mb-4 flex flex-col items-center gap-4\">\n <a\n tuiLink\n [pseudo]=\"true\"\n (click)=\"forgotPassword.emit()\"\n class=\"text-base\"\n >Забыли пароль?</a\n >\n <button\n tuiButton\n type=\"submit\"\n [loading]=\"!!(loadingEmailAuth$ | async)\"\n [disabled]=\"formByEmail.invalid || !!(loadingEmailAuth$ | async)\"\n iconStart=\"@tui.sc.circle-arrow-in-right\"\n >\n Войти\n </button>\n </div>\n</form>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { ScAuthService, ScUserMetrikaGoalsEnum, ScUserMetrikaService } from '@snabcentr/client-core';\nimport { filter, Observable } from 'rxjs';\n\nimport { AuthMethod } from '../enums/auth-method';\n\n/**\n * Компонент аутентификации пользователя.\n */\n@Component({\n selector: 'sc-sign-in-form',\n templateUrl: './sc-sign-in-form.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScSignInFormComponent implements OnInit {\n /**\n * Выбранный способ аутентификации.\n */\n @Input() public authMethod: AuthMethod = AuthMethod.byEmail;\n\n /**\n * Перечисление способов аутентификации.\n */\n public method: typeof AuthMethod = AuthMethod;\n\n /**\n * Сигнал нажатия на кнопку \"Забыли пароль\".\n */\n @Output() public readonly forgotPassword: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Сигнал нажатия на кнопку \"Зарегистрироваться\".\n */\n @Output() public readonly signUp: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Сигнал события аутентификации.\n */\n @Output() public readonly successAuth: Observable<boolean> = this.authService.getAuthChange().pipe(filter((state) => state));\n\n /**\n * Инициализирует экземпляр класса {@link ScSignInFormComponent}.\n *\n * @param authService Сервис аутентификации.\n * @param userMetrikaService Сервис для сбора метрик о действиях пользователей.\n */\n public constructor(\n private readonly authService: ScAuthService,\n private readonly userMetrikaService: ScUserMetrikaService\n ) {}\n\n /** @inheritDoc */\n public ngOnInit(): void {\n this.userMetrikaService.emitUserMetrikaEvent({\n target: ScUserMetrikaGoalsEnum.signInShow,\n params: {\n type: this.authMethod,\n },\n });\n }\n\n /**\n * Осуществляет переключение способов аутентификации.\n *\n * @param authMethod Выбранный способ аутентификации.\n */\n public switchAuth(authMethod: AuthMethod): void {\n this.authMethod = authMethod;\n\n this.userMetrikaService.emitUserMetrikaEvent({\n target: ScUserMetrikaGoalsEnum.signInShow,\n params: {\n type: authMethod,\n },\n });\n }\n\n /**\n * Обрабатывает нажатие на кнопку \"Забыли пароль\" и выдает сигнал об этом.\n */\n public onForgotPassword(): void {\n this.forgotPassword.emit();\n }\n}\n","<div class=\"mb-4 flex justify-center\">\n <button\n tuiButton\n [appearance]=\"authMethod === 'by_phone' ? 'primary' : 'secondary'\"\n (click)=\"switchAuth(method.byPhone)\"\n class=\"tui-space_right-3 tui-space_bottom-3 !font-bold\"\n >\n По телефону\n </button>\n\n <button\n tuiButton\n [appearance]=\"authMethod === 'by_email' ? 'primary' : 'secondary'\"\n (click)=\"switchAuth(method.byEmail)\"\n class=\"tui-space_left-3 tui-space_bottom-3 !font-bold\"\n >\n По e-mail\n </button>\n</div>\n\n<sc-sign-in-form-by-email\n *ngIf=\"authMethod === 'by_email'\"\n (forgotPassword)=\"onForgotPassword()\"\n></sc-sign-in-form-by-email>\n\n<sc-sign-in-form-by-phone [class.hidden]=\"authMethod !== 'by_phone'\"></sc-sign-in-form-by-phone>\n\n<div class=\"flex flex-col items-center gap-4\">\n <span class=\"font-medium text-tui-text-02\">Еще не зарегистрированы?</span>\n <button\n tuiButton\n (click)=\"signUp.emit()\"\n type=\"button\"\n iconStart=\"@tui.user-plus\"\n appearance=\"secondary\"\n >\n Зарегистрироваться\n </button>\n</div>\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\n/**\n * Проверяет БИК.\n */\nexport const scBicValidator: ValidatorFn = ({ value }: AbstractControl<string | null>): ValidationErrors | null => {\n return !value || /^0[1,4]\\d{7}$/.test(value) ? null : { bic: true };\n};\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\n/**\n * Проверяет корреспондентский счет.\n */\nexport const scCorrespondentAccountValidator: ValidatorFn = ({ value }: AbstractControl<string | null>): ValidationErrors | null => {\n return !value || /^[3,4]01\\d{17}$|^03\\d{18}$/.test(value) ? null : { correspondentAccount: true };\n};\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\n/**\n * Проверяет повторный ввод пароля на эквивалентность паролю.\n *\n * @param passwordKey Ключ поля ввода пароля.\n * @param passwordConfirmKey Ключ поля повторного ввода пароля.\n */\nexport function scPasswordConfirmMatchingValidator(passwordKey: string, passwordConfirmKey: string): ValidatorFn | null {\n return (control: AbstractControl): ValidationErrors | null => {\n const passwordInput: AbstractControl<string | null> | null = control.get(passwordKey);\n const passwordConfirmInput: AbstractControl<string | null> | null = control.get(passwordConfirmKey);\n\n if (!passwordInput || !passwordConfirmInput || passwordInput.invalid || passwordConfirmInput.invalid || !passwordInput.value || !passwordConfirmInput.value) {\n return null;\n }\n\n return passwordInput.value === passwordConfirmInput.value ? null : { passwordNotEquivalent: true };\n };\n}\n","import { AbstractControl, ValidatorFn, ValidationErrors } from '@angular/forms';\n\n/**\n * Проверяет кратность значения.\n *\n * @param step Шаг кратности.\n * @param precision Точность, количество чисел после запятой.\n */\nexport function stepValidator(step: number, precision: number = 3): ValidatorFn {\n return ({ value }: AbstractControl<number | null>): ValidationErrors | null => {\n if (!step) {\n return null;\n }\n\n if (value) {\n return Number((value / step).toFixed(precision)) % 1 !== 0 ? { error: `Число не кратно ${step}` } : null;\n }\n\n return null;\n };\n}\n","/* eslint-disable no-unused-expressions,class-methods-use-this,@typescript-eslint/unbound-method */\n\nimport { ChangeDetectionStrategy, Component, DestroyRef, Inject, inject, OnInit, SkipSelf } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControl, FormGroupDirective, Validators } from '@angular/forms';\nimport { ScICity, ScICountry, ScIRegion, ScLocationsService } from '@snabcentr/client-core';\nimport { tuiControlValue, tuiIsPresent, tuiMarkControlAsTouchedAndValidate } from '@taiga-ui/cdk';\nimport { combineLatest, debounceTime, filter, Observable, of, share, startWith, switchMap } from 'rxjs';\n\n/**\n * Компонент поля ввода страны/региона/города.\n */\n@Component({\n selector: 'sc-addresses-selection-field',\n templateUrl: './sc-addresses-selection-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScAddressesSelectionFieldComponent implements OnInit {\n /**\n * FormControl для поля страны.\n */\n public countryControl: FormControl<ScICountry | null> = new FormControl<ScICountry | null>(\n {\n id: 3159,\n name: 'Россия',\n },\n Validators.required\n );\n\n /**\n * FormControl для поля региона.\n */\n public regionControl: FormControl<ScIRegion | null> = new FormControl<ScIRegion | null>(null, Validators.required);\n\n /**\n * FormControl для поля города.\n */\n public cityControl: FormControl<ScICity | null> = new FormControl<ScICountry | null>(null, Validators.required);\n\n /**\n * {@link Observable} изменения списка стран.\n */\n public countries$: Observable<ScICountry[] | null> = this.locationsService.getCountries$().pipe(share(), startWith(null));\n\n /**\n * {@link Observable} изменения списка регионов.\n */\n public regions$: Observable<ScIRegion[] | null> = tuiControlValue<ScIRegion | null>(this.countryControl).pipe(\n filter(tuiIsPresent),\n switchMap((country: ScICountry) => this.locationsService.getRegions$(country.id).pipe(startWith(null))),\n share()\n );\n\n /**\n * {@link Observable} изменения списка городов.\n */\n public cities$: Observable<ScICity[] | null> = combineLatest({\n country: tuiControlValue<ScIRegion | null>(this.countryControl),\n region: tuiControlValue<ScICity | null>(this.regionControl),\n }).pipe(\n debounceTime(0),\n switchMap(({ country, region }: { country: ScIRegion | null; region: ScICity | null }) =>\n country && region ? this.locationsService.getCities$(country.id, region.id).pipe(startWith(null)) : of([])\n ),\n share()\n );\n\n /**\n * Ссылка для автоматического управления уничтожением зависимостей.\n */\n private destroyRef: DestroyRef = inject(DestroyRef);\n\n /**\n * Функция преобразования объекта сортировки в значение, отображаемое в поле ввода.\n *\n * @param item Выбранный объект выпадающего списка.\n * @param item.name Название страны/региона/города, которое будет отображено в поле.\n */\n public readonly stringify = (item: { name: string }): string => item.name;\n\n /**\n * Инициализирует экземпляр класса {@link ScAddressesSelectionFieldComponent}.\n *\n * @param formGroupDirective Директива c `FormGroup` из DOM.\n * @param locationsService Сервис для получения списков стран, регионов, городов.\n */\n public constructor(\n @SkipSelf() @Inject(FormGroupDirective) private readonly formGroupDirective: FormGroupDirective,\n private readonly locationsService: ScLocationsService\n ) {}\n\n /**\n * `FormControl` поля идентификатора города.\n */\n public get cityIdControl(): FormControl<string | null> {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this.formGroupDirective.form.get('cityId')! as FormControl<string | null>;\n }\n\n /** @inheritDoc */\n public ngOnInit(): void {\n if (this.cityIdControl.valid) {\n this.locationsService\n .getUserCity$(Number(this.cityIdControl.value))\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((city: ScICity) => {\n this.countryControl.patchValue(city.region?.country ?? null);\n this.regionControl.patchValue(city.region ?? null);\n this.cityControl.patchValue(city);\n });\n }\n\n this.countryControl.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((country) => {\n this.regionControl.reset(null);\n this.cityControl.reset(null);\n country ? this.regionControl.enable() : this.regionControl.disable();\n this.cityControl.disable();\n });\n\n this.regionControl.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((region) => {\n this.cityControl.reset(null);\n this.cityIdControl.reset(null);\n region ? this.cityControl.enable() : this.cityControl.disable();\n });\n }\n\n /**\n * Заполнение полей банковских реквизитов на основе выбранной подсказки.\n *\n * @param suggestion Объект подсказки по банку.\n * @param city Идентификатор записи города.\n */\n public onSelectedCity(city: ScICity | null): void {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (this.cityIdControl) {\n this.cityIdControl.setValue(city?.id.toString() ?? null);\n tuiMarkControlAsTouchedAndValidate(this.cityIdControl);\n }\n }\n}\n","<div class=\"flex flex-col items-start gap-4 sm:flex-row\">\n <!-- TODO: Открыть поле выбора страны при добавлении возможности выбора страны для клиента. -->\n <!-- <label tuiLabel=\"Страна\" class=\"w-full\">\n <tui-combo-box *tuiLet=\"countries$ | async as countries\" [formControl]=\"countryControl\" [stringify]=\"stringify\">\n Страна\n <input tuiTextfield autocomplete=\"new-password\" />\n <tui-data-list-wrapper *tuiDataList [itemContent]=\"stringify | tuiStringifyContent\" [items]=\"countries | tuiFilterByInputWith: stringify\"></tui-data-list-wrapper>\n </tui-combo-box>\n <tui-error [formControl]=\"countryControl\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label> -->\n <!-- TODO: [TASK:9383]: Доработать компонент выбора города, как на портале -->\n <label\n tuiLabel\n class=\"w-full\"\n >Регион\n <tui-combo-box\n *tuiLet=\"(regions$ | async) ?? [] as regions\"\n [formControl]=\"regionControl\"\n [stringify]=\"stringify\"\n >\n Регион\n <input\n tuiTextfieldLegacy\n autocapitalize=\"off\"\n autocomplete=\"off\"\n autocorrect=\"off\"\n />\n <tui-data-list-wrapper\n *tuiDataList\n [itemContent]=\"stringify | tuiStringifyContent\"\n [items]=\"regions | tuiFilterByInput\"\n ></tui-data-list-wrapper>\n </tui-combo-box>\n <tui-error\n [formControl]=\"regionControl\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <label\n tuiLabel\n class=\"w-full\"\n >Город\n <tui-combo-box\n *tuiLet=\"(cities$ | async) ?? [] as cities\"\n [formControl]=\"cityControl\"\n [stringify]=\"stringify\"\n (ngModelChange)=\"onSelectedCity($event)\"\n >\n Город\n <input\n tuiTextfieldLegacy\n autocapitalize=\"off\"\n autocomplete=\"off\"\n autocorrect=\"off\"\n />\n <tui-data-list-wrapper\n *tuiDataList\n [itemContent]=\"stringify | tuiStringifyContent\"\n [items]=\"cities | tuiFilterByInput\"\n ></tui-data-list-wrapper>\n </tui-combo-box>\n <tui-error\n [formControl]=\"cityIdControl\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n <tui-error\n *ngIf=\"cityIdControl.untouched\"\n [formControl]=\"cityControl\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n</div>\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Inject, inject, Input, OnInit, Output, SkipSelf } from '@angular/core';\nimport { FormGroup, NgControl } from '@angular/forms';\nimport { SC_MIN_LENGTH_SEARCH_TERM, ScISuggestionType, ScSuggestion, ScSuggestionService } from '@snabcentr/client-core';\nimport { tuiControlValue, tuiIsFalsy, tuiIsPresent, tuiMarkControlAsTouchedAndValidate } from '@taiga-ui/cdk';\nimport { TUI_DATA_LIST_HOST, TuiDataListHost } from '@taiga-ui/core';\nimport { catchError, debounceTime, filter, map, Observable, of, share, startWith, switchMap, throwError } from 'rxjs';\n\nimport { ApiErrorResponse } from '../../auth/interfaces/api-error-response';\n\n/**\n * Компонент подсказок для поля ввода.\n */\n@Component({\n selector: 'sc-suggestion-field',\n templateUrl: './sc-suggestion-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScSuggestionFieldComponent implements OnInit {\n /**\n * Тип подсказок.\n */\n @Input()\n public type: ScISuggestionType = ScISuggestionType.fio;\n\n /**\n * Событие выбора результата подсказки.\n */\n @Output()\n public selectedClick: EventEmitter<ScSuggestion> = new EventEmitter<ScSuggestion>();\n\n /**\n * {@link Observable} подсказок.\n */\n public suggestions$?: Observable<ScSuggestion[] | null>;\n\n /**\n * {@link Observable} состояние запроса подсказок.\n */\n public loading$?: Observable<boolean>;\n\n /**\n * Перечисление типов подсказок.\n */\n public readonly suggestionType: typeof ScISuggestionType = ScISuggestionType;\n\n /**\n * Компонент обёртка выпадающего списка.\n */\n private readonly host: TuiDataListHost<unknown> | null = inject<TuiDataListHost<unknown>>(TUI_DATA_LIST_HOST, {\n optional: true,\n });\n\n /**\n * Минимальная длина поискового запроса для получения данных.\n */\n private readonly minLengthSearchTerm: number = inject(SC_MIN_LENGTH_SEARCH_TERM);\n\n /**\n * Инициализирует экземпляр класса {@link ScSuggestionFieldComponent}.\n *\n * @param control Контрол поля ввода.\n * @param suggestionService Сервис работы с API подсказок.\n */\n public constructor(\n @SkipSelf()\n @Inject(NgControl)\n public readonly control: NgControl,\n private readonly suggestionService: ScSuggestionService\n ) {}\n\n /** @inheritDoc */\n public ngOnInit(): void {\n const request$ = tuiControlValue<string | null>(this.control).pipe(\n debounceTime(500),\n filter(tuiIsPresent),\n map((term) => term.trim()),\n filter((term) => term.length >= this.minLengthSearchTerm),\n switchMap((term: string) => this.suggestionService.getData<ScSuggestion>(term, this.type).pipe(startWith(null))),\n catchError((error: unknown) => {\n if (error instanceof HttpErrorResponse) {\n const errorResponse = error.error as ApiErrorResponse;\n\n if (this.control.control) {\n tuiMarkControlAsTouchedAndValidate(this.control.control);\n\n this.control.control.setErrors({\n serverResponse: [errorResponse.message || 'Ошибка сервера: пожалуйста, перезагрузите страницу и/или выполните запрос позже.'],\n });\n }\n }\n\n return throwError(() => of([]));\n }),\n share()\n );\n\n this.suggestions$ = request$.pipe(filter(tuiIsPresent), startWith(null));\n this.loading$ = request$.pipe(map(tuiIsFalsy));\n }\n\n /**\n * Заполнение полей основе выбранной подсказки.\n *\n * @param suggestion Объект подсказки.\n */\n public onSelected(suggestion: ScSuggestion): void {\n switch (this.type) {\n case ScISuggestionType.fio:\n if ('fio' in suggestion) {\n this.control.control?.patchValue(suggestion.fio, { emitEvent: false });\n }\n break;\n case ScISuggestionType.address:\n if ('addressString' in suggestion) {\n this.control.control?.patchValue(suggestion.addressString, { emitEvent: false });\n }\n break;\n case ScISuggestionType.bank:\n if ('inn' in suggestion && 'bic' in suggestion) {\n (this.control.control?.parent as FormGroup).patchValue(\n {\n bankName: suggestion.name,\n bic: suggestion.bic,\n correspondentAccount: suggestion.correspondentAccount,\n },\n { emitEvent: false }\n );\n }\n break;\n case ScISuggestionType.organization:\n if ('inn' in suggestion && !('bic' in suggestion)) {\n (this.control.control?.parent as FormGroup).patchValue(\n {\n name: suggestion.name,\n inn: suggestion.inn,\n kpp: suggestion.kpp,\n okpo: suggestion.okpo,\n directorName: suggestion.directorName,\n directorPosition: suggestion.directorPosition,\n legalAddress: suggestion.legalAddress,\n postalAddress: suggestion.postalAddress,\n actualAddress: suggestion.actualAddress,\n },\n { emitEvent: false }\n );\n }\n break;\n case ScISuggestionType.email:\n if ('email' in suggestion) {\n this.control.control?.patchValue(suggestion.email, { emitEvent: false });\n }\n break;\n default:\n break;\n }\n\n if (this.host?.handleOption) {\n // Дёргаем внутренний обработчик выбора элемента выпадающего списка для решения проблемы закрытия выпадающего списка подсказки.\n this.host.handleOption(this.control.value);\n }\n this.selectedClick.emit(suggestion);\n }\n}\n","<tui-loader\n size=\"m\"\n [overlay]=\"true\"\n [showLoader]=\"!!(loading$ | async)\"\n>\n <tui-data-list *tuiLet=\"suggestions$ | async as options\">\n <button\n *ngFor=\"let option of options\"\n tuiOption\n (click)=\"onSelected(option)\"\n class=\"flex-col !items-start\"\n >\n <ng-container *tuiLet=\"$any(option) as option\">\n <ng-container [ngSwitch]=\"type\">\n <ng-container *ngSwitchCase=\"suggestionType.fio\">\n <span class=\"text-tui-link\">{{ option.fio }}</span>\n </ng-container>\n <ng-container *ngSwitchCase=\"suggestionType.organization\">\n <span class=\"text-tui-link\">\n {{ option.name }}\n <span class=\"ml-2 text-tui-text-02\">инн: {{ option.inn }}</span>\n </span>\n <span class=\"text-tui-text-02\">{{ option?.legalAddress }}</span>\n </ng-container>\n <ng-container *ngSwitchCase=\"suggestionType.bank\">\n <span class=\"text-tui-link\">{{ option.name }}</span>\n <span class=\"text-tui-text-02\">{{ option.bic }}</span>\n </ng-container>\n <ng-container *ngSwitchCase=\"suggestionType.email\">\n <span class=\"text-tui-link\">{{ option.email }}</span>\n </ng-container>\n <ng-container *ngSwitchCase=\"suggestionType.address\">\n <span class=\"text-tui-link\">{{ option.addressString }}</span>\n </ng-container>\n </ng-container>\n </ng-container>\n </button>\n </tui-data-list>\n</tui-loader>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { FormGroup, FormControl } from '@angular/forms';\nimport { ScICurrency, ScISuggestionType, ScReferencesService } from '@snabcentr/client-core';\nimport { Observable } from 'rxjs';\nimport { scAccountNumberMask, scBicMask, scCorrespondentAccount } from '../../masks';\nimport { MaskitoOptions } from '@maskito/core';\n\n/**\n * Компонент формы банковских реквизитов.\n */\n@Component({\n selector: 'sc-new-contragent-bank-account-form',\n templateUrl: './sc-new-contragent-bank-account-form.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScNewContragentBankAccountsFormComponent {\n /**\n * Перечисление типов подсказок.\n */\n public readonly suggestionType: typeof ScISuggestionType = ScISuggestionType;\n\n /**\n * Маска поля ввода БИК.\n */\n public readonly bicMask: MaskitoOptions = scBicMask;\n\n /**\n * Маска поля ввода номера счета.\n */\n public readonly accountNumberMask: MaskitoOptions = scAccountNumberMask;\n\n /**\n * Маска поля ввода номера корреспондентского счета.\n */\n public readonly correspondentAccount: MaskitoOptions = scCorrespondentAccount;\n\n /**\n * {@link Observable} списка валют.\n */\n public readonly currencies$: Observable<ScICurrency[]> = this.referencesService.currencies$;\n\n /**\n * Группа с полем банковских реквизитов.\n */\n @Input()\n public form: FormGroup<{\n bankName: FormControl<string | null>;\n bic: FormControl<string | null>;\n accountNumber: FormControl<string | null>;\n correspondentAccount: FormControl<string | null>;\n currencyId: FormControl<number | null>;\n }>;\n\n /**\n * Инициализирует экземпляр класса {@link ScContragentBankAccountsFormComponent}.\n *\n * @param referencesService Сервис справочников.\n */\n public constructor(private readonly referencesService: ScReferencesService) {}\n\n /**\n * Возвращает {@link Observable} валюты по идентификатору.\n *\n * @param currencyId Идентификатор валюты.\n */\n public getCurrencyById$(currencyId: number): Observable<ScICurrency | undefined> {\n return this.referencesService.getCurrencyById$(currencyId);\n }\n}\n","<div [formGroup]=\"form\" class=\"flex flex-col gap-3\">\n <label tuiLabel>Наименование банка\n <tui-input formControlName=\"bankName\">\n Наименование банка\n <sc-suggestion-field *tuiDataList [type]=\"suggestionType.bank\"></sc-suggestion-field>\n </tui-input>\n <tui-error formControlName=\"bankName\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel>БИК\n <tui-input formControlName=\"bic\">\n БИК\n <input tuiTextfieldLegacy [maskito]=\"bicMask\" autocomplete=\"bic\" />\n <sc-suggestion-field *tuiDataList [type]=\"suggestionType.bank\"></sc-suggestion-field>\n </tui-input>\n <tui-error formControlName=\"bic\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel>Номер счета\n <tui-input formControlName=\"accountNumber\">\n Номер счета\n <input tuiTextfieldLegacy [maskito]=\"accountNumberMask\" autocomplete=\"accountNumber\" />\n </tui-input>\n <tui-error formControlName=\"accountNumber\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel>Корреспондентский счет\n <tui-input formControlName=\"correspondentAccount\">\n Корреспондентский счет\n <input tuiTextfieldLegacy [maskito]=\"correspondentAccount\" autocomplete=\"correspondentAccount\" />\n </tui-input>\n <tui-error formControlName=\"correspondentAccount\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel>Валюта расчётов\n <tui-select formControlName=\"currencyId\" [valueContent]=\"currencyContent\">\n Валюта расчётов\n <tui-data-list *tuiDataList>\n <button *ngFor=\"let item of currencies$ | async; let index = index\" tuiOption [value]=\"item.id\">{{ item.name }} ({{ item.symbol }})</button>\n </tui-data-list>\n </tui-select>\n <ng-template #currencyContent let-data>\n <div>{{ (getCurrencyById$(data) | async)?.name }}</div>\n </ng-template>\n <tui-error formControlName=\"currencyId\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n</div>\n","/* eslint-disable class-methods-use-this,@typescript-eslint/unbound-method */\n\nimport { ChangeDetectionStrategy, Component, DestroyRef, Inject, inject, Input, OnDestroy, OnInit, SkipSelf } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormArray, FormControl, FormGroup, FormGroupDirective, Validators } from '@angular/forms';\nimport { ScICountry, ScIReferencesTypes, ScISalesDirection, ScISuggestionType, ScLocationsService, ScOpfList, ScReferencesService } from '@snabcentr/client-core';\nimport { tuiControlValue, tuiIsPresent } from '@taiga-ui/cdk';\nimport { distinctUntilChanged, filter, map, Observable, tap } from 'rxjs';\n\nimport { ScBankAccountFormGroup, ScContactFormGroup } from '../../auth/interfaces';\nimport { scEntrepreneurInnMask, scEntrepreneurOkpoMask, scKppMask, scLegalInnMask, scLegalOkpoMask } from '../../masks';\nimport { scBicValidator, scCorrespondentAccountValidator } from '../../validators';\n\n/**\n * Форма создания нового контрагента.\n */\n@Component({\n selector: 'sc-new-contragent-form',\n templateUrl: './sc-new-contragent-form.component.html',\n styleUrls: ['./sc-new-contragent-form.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScNewContragentFormComponent implements OnInit, OnDestroy {\n /**\n * Поле выбора организационно-правовой формы.\n */\n @Input()\n public opfControl?: FormControl<keyof typeof ScOpfList | null>;\n\n /**\n * Группа полей информации о контрагенте индивидуальном предпринимателе.\n */\n private readonly entrepreneurGroup = new FormGroup({\n inn: new FormControl<string | null>(null, Validators.required),\n okpo: new FormControl<string | null>(null, Validators.required),\n directorName: new FormControl<string | null>(null, Validators.required),\n directorPosition: new FormControl<string | null>(null, Validators.required),\n directorActsOn: new FormControl<string | null>(null, Validators.required),\n legalAddress: new FormControl<string | null>(null, Validators.required),\n postalAddress: new FormControl<string | null>(null, Validators.required),\n actualAddress: new FormControl<string | null>(null, Validators.required),\n bankAccounts: new FormArray<ScBankAccountFormGroup>(\n [\n new FormGroup({\n bankName: new FormControl<string | null>(null, Validators.required),\n bic: new FormControl<string | null>(null, [Validators.required, Validators.minLength(9), scBicValidator]),\n accountNumber: new FormControl<string | null>(null, [Validators.required, Validators.minLength(20)]),\n correspondentAccount: new FormControl<string | null>(null, [Validators.required, Validators.minLength(20), scCorrespondentAccountValidator]),\n currencyId: new FormControl<number | null>(null, Validators.required),\n }),\n ],\n [Validators.minLength(1), Validators.required]\n ),\n });\n\n /**\n * Группа полей информации о контрагенте юридическом лице.\n */\n private readonly legalGroup = new FormGroup({\n kpp: new FormControl<string | null>(null, [Validators.required, Validators.minLength(9)]),\n });\n\n /**\n * Группа полей информации о контрагенте юридическом лице нерезиденте.\n */\n private readonly nonResidentLegalGroup = new FormGroup({\n registrationCountryId: new FormControl<number | null>(null, Validators.required),\n registrationNumber: new FormControl<string | null>(null, Validators.required),\n taxNumber: new FormControl<string | null>(null, Validators.required),\n });\n\n /**\n * Форма для создания нового контрагента физического лица.\n */\n public readonly form = new FormGroup({\n name: new FormControl<string | null>(null, Validators.required),\n opf: new FormControl<keyof typeof ScOpfList>('individual', Validators.required),\n salesDirectionId: new FormControl<number | null>(null, Validators.required),\n contacts: new FormArray<ScContactFormGroup>(\n [\n new FormGroup({\n name: new FormControl<string | null>(null, Validators.required),\n phone: new FormControl<string | null>(null, [Validators.required, Validators.minLength(12)]),\n email: new FormControl<string | null>(null, Validators.email),\n position: new FormControl<string | null>(null, Validators.required),\n }),\n ],\n [Validators.minLength(1), Validators.required]\n ),\n });\n\n /**\n * Перечисление типов подсказок.\n */\n public readonly suggestionType: typeof ScISuggestionType = ScISuggestionType;\n\n /**\n * {@link Observable} выбора ОПФ.\n */\n public readonly selectOpf$: Observable<keyof typeof ScOpfList> = tuiControlValue<keyof typeof ScOpfList>(this.form.controls.opf).pipe(\n distinctUntilChanged(),\n tap((opf) => {\n Object.keys({ ...this.entrepreneurGroup.controls, ...this.legalGroup.controls, ...this.nonResidentLegalGroup.controls }).forEach((key) => {\n this.form.get(key)?.disable();\n });\n\n const addControls = (formGroup: FormGroup) => {\n Object.keys({ ...formGroup.controls }).forEach((key) => {\n formGroup.get(key)?.enable();\n (this.form as FormGroup).setControl<typeof key>(key, formGroup.get(key));\n });\n };\n\n if (ScOpfList[opf] > ScOpfList.individual) {\n addControls(this.entrepreneurGroup);\n this.entrepreneurGroup.controls.inn.setValidators([Validators.required, Validators.minLength(12)]);\n this.entrepreneurGroup.controls.okpo.setValidators([Validators.required, Validators.minLength(10)]);\n }\n\n if (ScOpfList[opf] > ScOpfList.entrepreneur) {\n addControls(this.legalGroup);\n this.entrepreneurGroup.controls.inn.setValidators([Validators.required, Validators.minLength(10)]);\n this.entrepreneurGroup.controls.okpo.setValidators([Validators.required, Validators.minLength(8)]);\n }\n\n if (ScOpfList[opf] > ScOpfList.legal) {\n addControls(this.nonResidentLegalGroup);\n }\n })\n );\n\n /**\n * Маска поля ввода КПП.\n */\n public readonly kppMask = scKppMask;\n\n /**\n * Перечисление организационно-правовых форм.\n */\n public readonly opfListEnum: typeof ScOpfList = ScOpfList;\n\n /**\n * Ссылка для автоматического управления уничтожением зависимостей.\n */\n private destroyRef: DestroyRef = inject(DestroyRef);\n\n /**\n * Маска поля ввода ИНН.\n *\n * @param opf Организационно-правовая форма.\n */\n public readonly innMask = (opf: keyof typeof ScOpfList) => (ScOpfList[opf] > ScOpfList.entrepreneur ? scLegalInnMask : scEntrepreneurInnMask);\n\n /**\n * Маска поля ввода ОКПО.\n *\n * @param opf Организационно-правовая форма.\n */\n public readonly okpoMask = (opf: keyof typeof ScOpfList) => (ScOpfList[opf] > ScOpfList.entrepreneur ? scLegalOkpoMask : scEntrepreneurOkpoMask);\n\n /**\n * Инициализирует экземпляр класса {@link ScNewContragentFormComponent}.\n *\n * @param referencesService Сервис справочников.\n * @param locationsService Сервис для получения списков стран, регионов, городов.\n * @param formGroupDirective Директива c `FormGroup` из DOM.\n */\n public constructor(\n private readonly referencesService: ScReferencesService,\n private readonly locationsService: ScLocationsService,\n @SkipSelf()\n @Inject(FormGroupDirective)\n private readonly formGroupDirective: FormGroupDirective | null\n ) {\n this.referencesService.directions$\n .pipe(\n filter(tuiIsPresent),\n filter((directions) => directions.length > 0),\n takeUntilDestroyed()\n )\n .subscribe((directions) => {\n this.form.patchValue({ salesDirectionId: directions[0].id });\n });\n }\n\n /**\n * Родительская `FormGroup`.\n */\n public get parentForm(): FormGroup | undefined {\n return this.formGroupDirective?.form;\n }\n\n /** @inheritDoc */\n public ngOnInit(): void {\n this.parentForm?.setControl('contragent', this.form);\n if (this.parentForm && this.opfControl) {\n tuiControlValue<keyof typeof ScOpfList | null>(this.opfControl)\n .pipe(filter(tuiIsPresent), takeUntilDestroyed(this.destroyRef))\n .subscribe((opf) => {\n this.form.controls.opf.patchValue(opf);\n });\n }\n }\n\n /** @inheritDoc */\n public ngOnDestroy(): void {\n this.parentForm?.removeControl('contragent');\n }\n\n /**\n * Возвращает {@link Observable} списка направлений продаж.\n *\n * @param directionId Идентификатор направления продаж.\n */\n public getDirectionById$(directionId: number): Observable<ScISalesDirection | undefined> {\n return this.referencesService.getDirectionById$(directionId);\n }\n\n /**\n * Возвращает {@link Observable} список организационно-правовых форм..\n */\n public getOpf$(): Observable<Array<ScIReferencesTypes<ScOpfList, typeof ScOpfList>>> {\n return this.referencesService.opf$;\n }\n\n /**\n * Возвращает {@link Observable} организационно-правовой формы, соответствующий символьному обозначению (slug) на входе.\n *\n * @param slug Символьное обозначение (slug).\n */\n public getOpfBySlug$(slug: keyof typeof ScOpfList): Observable<ScIReferencesTypes<ScOpfList, typeof ScOpfList> | undefined> {\n return this.referencesService.getOpfBySlug$(slug);\n }\n\n /**\n * Возвращает {@link Observable} списка стран\n */\n public getCountries$(): Observable<ScICountry[]> {\n return this.locationsService.getCountries$();\n }\n\n /**\n * Возвращает {@link Observable} страны по идентификатору.\n *\n * @param countryId — Идентификатор страны.\n */\n public getCountriesById$(countryId: number): Observable<ScICountry | undefined> {\n return this.locationsService.getCountries$().pipe(map((countries) => countries.find((country) => country.id === countryId)));\n }\n}\n","<div\n [formGroup]=\"form\"\n *ngIf=\"selectOpf$ | async as selectOpf\"\n class=\"flex flex-col gap-3 pb-1\"\n>\n <p class=\"text-lg font-bold\">Общая информация контрагента</p>\n <label tuiLabel>Тип контрагента (организационно-правовая форма)\n <tui-select\n formControlName=\"opf\"\n [valueContent]=\"opfContent\"\n [readOnly]=\"!!opfControl\"\n >\n Тип контрагента (организационно-правовая форма)\n <tui-data-list *tuiDataList>\n <button\n *ngFor=\"let item of getOpf$() | async; let index = index\"\n tuiOption\n [value]=\"item.slug\"\n >\n {{ item.name }}\n </button>\n </tui-data-list>\n </tui-select>\n <ng-template\n #opfContent\n let-data\n >\n <div>{{ (getOpfBySlug$(data) | async)?.name }}</div>\n </ng-template>\n <tui-error\n formControlName=\"opf\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <label tuiLabel>{{ opfListEnum[selectOpf] > opfListEnum.individual ? 'Название организации' : 'Ф.И.О.' }}\n <tui-input formControlName=\"name\">\n <ng-template #fio>\n Ф.И.О.\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.fio\"\n ></sc-suggestion-field>\n </ng-template>\n <ng-container *ngIf=\"opfListEnum[selectOpf] > opfListEnum.individual; else fio\">\n Название организации\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.organization\"\n ></sc-suggestion-field>\n </ng-container>\n </tui-input>\n <tui-error\n formControlName=\"name\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n\n <ng-container>\n <ng-container *ngIf=\"opfListEnum[selectOpf] > opfListEnum.individual\">\n <label tuiLabel>ИНН организации или ИП\n <tui-input formControlName=\"inn\">\n ИНН организации или ИП\n <input\n tuiTextfieldLegacy\n [maskito]=\"innMask(selectOpf)\"\n autocomplete=\"inn\"\n />\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.organization\"\n ></sc-suggestion-field>\n </tui-input>\n <tui-error\n formControlName=\"inn\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <label tuiLabel>Код ОКПО\n <tui-input formControlName=\"okpo\">\n Код ОКПО\n <input\n tuiTextfieldLegacy\n [maskito]=\"okpoMask(selectOpf)\"\n autocomplete=\"okpo\"\n />\n </tui-input>\n <tui-error\n formControlName=\"okpo\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <label tuiLabel>Ф.И.О. руководителя\n <tui-input formControlName=\"directorName\">\n Ф.И.О. руководителя\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.fio\"\n ></sc-suggestion-field>\n </tui-input>\n <tui-error\n formControlName=\"directorName\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <label tuiLabel>Должность руководителя\n <tui-input formControlName=\"directorPosition\"> Должность руководителя </tui-input>\n <tui-error\n formControlName=\"directorPosition\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <label tuiLabel>Основания полномочий руководителя\n <tui-input formControlName=\"directorActsOn\"> Основания полномочий руководителя </tui-input>\n <tui-error\n formControlName=\"directorActsOn\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <label tuiLabel>Юридический адрес\n <tui-input formControlName=\"legalAddress\">\n Юридический адрес\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.address\"\n ></sc-suggestion-field>\n </tui-input>\n <tui-error\n formControlName=\"legalAddress\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <label tuiLabel>Почтовый адрес\n <tui-input formControlName=\"postalAddress\">\n Почтовый адрес\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.address\"\n ></sc-suggestion-field>\n </tui-input>\n <tui-error\n formControlName=\"postalAddress\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <label tuiLabel>Фактический адрес\n <tui-input formControlName=\"actualAddress\">\n Фактический адрес\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.address\"\n ></sc-suggestion-field>\n </tui-input>\n <tui-error\n formControlName=\"actualAddress\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n </ng-container>\n <ng-container *ngIf=\"opfListEnum[selectOpf] > opfListEnum.entrepreneur\">\n <label tuiLabel>КПП организации\n <tui-input formControlName=\"kpp\">\n КПП организации\n <input\n tuiTextfieldLegacy\n [maskito]=\"kppMask\"\n autocomplete=\"kpp\"\n />\n </tui-input>\n <tui-error\n formControlName=\"kpp\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n </ng-container>\n <ng-container *ngIf=\"opfListEnum[selectOpf] > opfListEnum.legal\">\n <label tuiLabel> Страна регистрации юридического лица\n <tui-select\n formControlName=\"registrationCountryId\"\n [valueContent]=\"CountryContent\"\n >\n Страна регистрации юридического лица\n <tui-data-list *tuiDataList>\n <button\n *ngFor=\"let item of getCountries$() | async; let index = index\"\n tuiOption\n [value]=\"item.id\"\n >\n {{ item.name }}\n </button>\n </tui-data-list>\n </tui-select>\n <ng-template\n #CountryContent\n let-data\n >\n <div>{{ (getCountriesById$(data) | async)?.name }}</div>\n </ng-template>\n <tui-error\n formControlName=\"registrationCountryId\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <label tuiLabel>Регистрационный номер юридического лица\n <tui-input formControlName=\"registrationNumber\"> Регистрационный номер юридического лица </tui-input>\n <tui-error\n formControlName=\"registrationNumber\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <label tuiLabel>Налоговый номер юридического лица\n <tui-input formControlName=\"taxNumber\"> Налоговый номер юридического лица </tui-input>\n <tui-error\n formControlName=\"taxNumber\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n </ng-container>\n </ng-container>\n</div>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { FormGroup, FormControl } from '@angular/forms';\nimport { ScISuggestionType } from '@snabcentr/client-core';\n\n/**\n * Компонент формы контактного лица.\n */\n@Component({\n selector: 'sc-new-contact-form',\n templateUrl: './sc-new-contact-form.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScNewContactFormComponent {\n /**\n * Перечисление типов подсказок.\n */\n public readonly suggestionType: typeof ScISuggestionType = ScISuggestionType;\n\n /**\n * Группа с полями контактного лица.\n */\n @Input()\n public form: FormGroup<{\n name: FormControl<string | null>;\n phone: FormControl<string | null>;\n email: FormControl<string | null>;\n position: FormControl<string | null>;\n }>;\n}\n","<div [formGroup]=\"form\" class=\"flex flex-col gap-3\">\n <label tuiLabel>Ф.И.О.\n <tui-input formControlName=\"name\">\n Ф.И.О.\n <sc-suggestion-field *tuiDataList [type]=\"suggestionType.fio\"></sc-suggestion-field>\n </tui-input>\n <tui-error formControlName=\"name\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel>Телефон\n <tui-input-phone formControlName=\"phone\"> Телефон </tui-input-phone>\n <tui-error formControlName=\"phone\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel>Адрес электронной почты\n <tui-input formControlName=\"email\">\n Адрес электронной почты\n <sc-suggestion-field *tuiDataList [type]=\"suggestionType.email\"></sc-suggestion-field>\n </tui-input>\n <tui-error formControlName=\"email\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n\n <label tuiLabel>Должность контактного лица\n <tui-input formControlName=\"position\"> Должность контактного лица </tui-input>\n <tui-error formControlName=\"position\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n</div>\n","/* eslint-disable lodash/prefer-lodash-method,@typescript-eslint/no-unnecessary-condition,class-methods-use-this,@typescript-eslint/no-explicit-any,@typescript-eslint/unbound-method,no-restricted-syntax */\n\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { ChangeDetectionStrategy, Component, OnInit, Output } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormArray, FormControl, FormGroup, Validators } from '@angular/forms';\nimport {\n IAuthToken,\n ScAuthService,\n ScConvertersService,\n ScIReferencesTypes,\n ScISuggestionType,\n ScIUserOnDataCreate,\n ScOpfList,\n ScReferencesService,\n ScSuggestion,\n ScUserMetrikaGoalsEnum,\n ScUserMetrikaService,\n ScUserService,\n} from '@snabcentr/client-core';\nimport { tuiIsFalsy, tuiMarkControlAsTouchedAndValidate } from '@taiga-ui/cdk';\nimport { catchError, distinctUntilChanged, filter, map, Observable, of, share, startWith, Subject, switchMap, tap } from 'rxjs';\n\nimport { scBicValidator, scCorrespondentAccountValidator, scPasswordConfirmMatchingValidator } from '../../validators';\nimport { ApiErrorResponse, ScBankAccountFormGroup, ScContactFormGroup } from '../interfaces';\n\n/**\n * Компонент формы регистрация пользователя.\n */\n@Component({\n selector: 'sc-sign-up-form',\n templateUrl: './sc-sign-up-form.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScSignUpFormComponent implements OnInit {\n /**\n * Поле ввода организационно-правовых форм.\n */\n public opfControl: FormControl<keyof typeof ScOpfList | null> = new FormControl<keyof typeof ScOpfList>('individual', Validators.required);\n\n /**\n * Группа полей ввода для формы регистрации.\n */\n public form = new FormGroup(\n {\n name: new FormControl<string | null>(null, [Validators.required, Validators.minLength(3)]),\n email: new FormControl<string | null>(null, [Validators.required, Validators.email]),\n phone: new FormControl<string | null>(null, [Validators.required, Validators.minLength(12)]),\n verificationCode: new FormControl<string | null>(null, [Validators.required, Validators.minLength(6)]),\n cityId: new FormControl<number | null>(null, Validators.required),\n password: new FormControl<string | null>(null, [Validators.required, Validators.minLength(8)]),\n passwordConfirm: new FormControl<string | null>(null, [Validators.required, Validators.minLength(8)]),\n getNews: new FormControl<boolean>(false),\n acceptRules: new FormControl<boolean>(false, Validators.requiredTrue),\n contragent: new FormGroup<any>({}),\n },\n {\n validators: scPasswordConfirmMatchingValidator('password', 'passwordConfirm'),\n }\n );\n\n /**\n * Перечисление типов подсказок.\n */\n public readonly suggestionType: typeof ScISuggestionType = ScISuggestionType;\n\n /**\n * Перечисление организационно-правовых форм.\n */\n public readonly opfListEnum: typeof ScOpfList = ScOpfList;\n\n /**\n * {@link Subject} события отправки формы.\n */\n public readonly onSubmit: Subject<void> = new Subject<void>();\n\n /**\n * {@link Observable} запроса данных регистрации.\n */\n private readonly request$ = this.onSubmit.pipe(\n tap(() => {\n tuiMarkControlAsTouchedAndValidate(this.form);\n }),\n filter(() => this.form.valid),\n map(() => this.form.value as ScIUserOnDataCreate),\n tap((value) => {\n this.createBaseContragent(value);\n }),\n switchMap((value) =>\n this.userService.signUp$(this.convertersService.removeNullRecursive(value)).pipe(\n switchMap(() => this.authService.getSignIn$({ login: value.email, password: value.password })),\n catchError((error: unknown) => {\n if (error instanceof HttpErrorResponse) {\n const { errors, message } = error.error as ApiErrorResponse;\n\n for (const key in errors) {\n if (Object.hasOwn(errors, key)) {\n this.form.get(key)?.setErrors({ serverResponse: errors[key] });\n }\n }\n\n if (!errors && message) {\n this.form.setErrors({ serverResponse: [message] });\n }\n\n this.stepIndex = this.steps.findIndex((_, index) => !this.canNextStep(index));\n }\n\n return of({} as IAuthToken);\n }),\n startWith(null)\n )\n ),\n share()\n );\n\n /**\n * Индекс этапа.\n */\n public stepIndex: number = 0;\n\n /**\n * {@link Observable} изменения состояния загрузки данных.\n */\n public readonly loading$: Observable<boolean> = this.request$.pipe(map(tuiIsFalsy));\n\n /**\n * Сигнал события аутентификации после успешной регистрации.\n */\n @Output()\n public readonly successAuth: Observable<boolean> = this.authService.getAuthChange().pipe(filter((state) => state));\n\n /**\n * Список этапов регистрации.\n */\n readonly steps: string[] = ['Информация о клиенте', 'Общая информация контрагента', 'Контакты пользователя', 'Банковские реквизиты пользователя'];\n\n /**\n * Инициализирует экземпляр класса {@link ScSignUpFormComponent}.\n *\n * @param userService Сервис данных о пользователе.\n * @param authService Сервис аутентификации.\n * @param referencesService Сервис справочников.\n * @param convertersService Сервис конвертации данных.\n * @param userMetrikaService Сервис для сбора метрик о действиях пользователей.\n */\n public constructor(\n private readonly userService: ScUserService,\n private readonly authService: ScAuthService,\n private readonly referencesService: ScReferencesService,\n private readonly convertersService: ScConvertersService,\n private readonly userMetrikaService: ScUserMetrikaService\n ) {\n this.opfControl.valueChanges.pipe(distinctUntilChanged(), takeUntilDestroyed()).subscribe(() => {\n this.form.patchValue({ name: null });\n this.form.get('contragent')?.reset();\n });\n }\n\n /**\n * Список групп полей банковских реквизитов.\n */\n public get bankAccounts(): FormArray<ReturnType<ScSignUpFormComponent['createBankAccountGroup']>> {\n return this.form.controls.contragent.get('bankAccounts') as FormArray;\n }\n\n /**\n * Список групп полей контактных лиц.\n */\n public get contacts(): FormArray<ReturnType<ScSignUpFormComponent['createContactGroup']>> {\n return this.form.controls.contragent.get('contacts') as FormArray;\n }\n\n /** @inheritDoc */\n public ngOnInit(): void {\n (this.form as FormGroup).removeControl('contragent');\n this.userMetrikaService.emitUserMetrikaEvent({\n target: ScUserMetrikaGoalsEnum.signUpShow,\n });\n }\n\n /**\n * Проверяет, может ли пользователь перейти к следующему шагу регистрации.\n * При проверке каждого этапа регистрации последовательно проверяется корректность заполнения данных на предыдущих этапах.\n *\n * @param index Индекс этапа для которого нужно проверить валидность.\n * @returns Выводит значение `boolean` на основании {@link index}.\n */\n public canNextStep(index: number): boolean {\n const { controls } = this.form;\n\n // Проверяем валидность данных пользователя.\n for (const key in controls) {\n if (Object.prototype.hasOwnProperty.call(controls, key) && key !== 'contragent' && controls[key as keyof typeof this.form.controls].invalid) {\n return false;\n }\n }\n\n // Для этапа 0 просто возвращаем true, так как данные пользователя проверены.\n if (index === 0) {\n return true;\n }\n\n // Проверяем валидность полей контрагента.\n const contragentControls = controls.contragent.controls;\n\n if (contragentControls) {\n for (const key in contragentControls) {\n if (Object.prototype.hasOwnProperty.call(contragentControls, key)) {\n const control = contragentControls[key];\n if (!Array.isArray(control.value) && control.invalid) {\n return false;\n }\n }\n }\n }\n\n // Для этапа 1 возвращаем true, если все поля контрагента валидны.\n if (index === 1) {\n return true;\n }\n\n // Проверяем список контактов внутри контрагента.\n if (contragentControls['contacts'].invalid) {\n return false;\n }\n\n // Для этапа 2 возвращаем true, если список контактов внутри контрагента валидный.\n if (index === 2) {\n return true;\n }\n\n // Проверяем список банковских реквизитов внутри контрагента.\n return contragentControls['bankAccounts'].valid ?? false;\n }\n\n /**\n * Выполняет навигацию по форме регистрации.\n *\n * @param delta Значение, на которое необходимо выполнить навигацию.\n */\n public navigate(delta: number): void {\n this.stepIndex = (this.stepIndex + delta) % 4;\n }\n\n /**\n * Создаёт базового контрагента для клиента физического лица.\n *\n * @param formValue Значение формы при регистрации\n */\n private createBaseContragent(formValue: ScSignUpFormComponent['form']['value']): void {\n if (this.form.invalid || this.opfControl.value !== 'individual') {\n return;\n }\n\n // eslint-disable-next-line no-param-reassign\n formValue.contragent = {\n name: this.form.controls.name.value,\n opf: 'individual',\n salesDirectionId: 1,\n contacts: [\n {\n name: this.form.controls.name.value,\n phone: this.form.controls.phone.value,\n email: this.form.controls.email.value,\n },\n ],\n };\n }\n\n /**\n * Возвращает {@link Observable} список организационно-правовых форм.\n */\n public getOpf$(): Observable<Array<ScIReferencesTypes<ScOpfList, typeof ScOpfList>>> {\n return this.referencesService.opf$;\n }\n\n /**\n * Возвращает {@link Observable} организационно-правовой формы, соответствующий символьному обозначению (slug) на входе.\n *\n * @param slug Символьное обозначение (slug).\n */\n public getOpfBySlug$(slug: keyof typeof ScOpfList): Observable<ScIReferencesTypes<ScOpfList, typeof ScOpfList> | undefined> {\n return this.referencesService.getOpfBySlug$(slug);\n }\n\n /**\n * Создаёт группу полей банковских реквизитов.\n */\n private createBankAccountGroup(): ScBankAccountFormGroup {\n return new FormGroup({\n bankName: new FormControl<string | null>(null, Validators.required),\n bic: new FormControl<string | null>(null, [Validators.required, Validators.minLength(9), scBicValidator]),\n accountNumber: new FormControl<string | null>(null, [Validators.required, Validators.minLength(20)]),\n correspondentAccount: new FormControl<string | null>(null, [Validators.required, Validators.minLength(20), scCorrespondentAccountValidator]),\n currencyId: new FormControl<number | null>(null, Validators.required),\n });\n }\n\n /**\n * Добавляет Банковские реквизиты.\n */\n public addBankAccountGroup(): void {\n this.bankAccounts.push(this.createBankAccountGroup());\n }\n\n /**\n * Удаляет банковские реквизиты.\n *\n * @param index Индекс банковских реквизитов.\n */\n public removeBankAccountGroup(index: number): void {\n this.bankAccounts.removeAt(index);\n }\n\n /**\n * Создаёт группу полей контактного лица.\n */\n public createContactGroup(): ScContactFormGroup {\n return new FormGroup({\n name: new FormControl<string | null>(null, Validators.required),\n phone: new FormControl<string | null>(null, [Validators.required, Validators.minLength(12)]),\n email: new FormControl<string | null>(null, Validators.email),\n position: new FormControl<string | null>(null, Validators.required),\n });\n }\n\n /**\n * Обработчик выбора адреса доставки.\n *\n * @param suggestion Объект подсказки ареса.\n */\n public onSelectedOrganization(suggestion: ScSuggestion): void {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (this.form.controls.contragent && 'inn' in suggestion && !('bic' in suggestion)) {\n if (suggestion.opf && suggestion.opf.slug !== this.opfControl.value) {\n this.opfControl.patchValue(suggestion.opf.slug as keyof typeof ScOpfList, { emitEvent: false });\n this.form.controls.contragent.patchValue({\n opf: suggestion.opf.slug as keyof typeof ScOpfList,\n });\n }\n\n this.form.controls.contragent.patchValue({\n name: suggestion.name,\n inn: suggestion.inn,\n kpp: suggestion.kpp ?? null,\n okpo: suggestion.okpo ?? null,\n directorName: suggestion.directorName ?? null,\n directorPosition: suggestion.directorPosition ?? null,\n legalAddress: suggestion.legalAddress ?? null,\n postalAddress: suggestion.postalAddress ?? null,\n actualAddress: suggestion.actualAddress ?? null,\n });\n\n this.form.controls.contragent.markAllAsTouched();\n this.form.get(['contragent', 'contacts'])?.markAsUntouched();\n this.form.get(['contragent', 'bankAccounts'])?.markAsUntouched();\n }\n }\n\n /**\n * Добавляет контактное лицо контрагента.\n */\n public addContactGroup(): void {\n this.contacts.push(this.createContactGroup());\n }\n\n /**\n * Удаляет контактное лицо контрагента.\n *\n * @param index Индекс контактного лица.\n */\n public removeContactGroup(index: number): void {\n this.contacts.removeAt(index);\n }\n}\n","<form\n *tuiLet=\"opfControl.value as selectOpf\"\n [formGroup]=\"form\"\n (ngSubmit)=\"onSubmit.next()\"\n class=\"flex flex-col gap-5\"\n>\n <ng-container *tuiLet=\"!!selectOpf && opfListEnum[selectOpf] === opfListEnum.individual as isIndividual\">\n <tui-stepper\n *ngIf=\"!isIndividual && form.controls.contragent\"\n [(activeItemIndex)]=\"stepIndex\"\n >\n <button\n *tuiRepeatTimes=\"let index of 4\"\n [stepState]=\"index && !canNextStep(index) ? 'error' : 'pass'\"\n [attr.disabled]=\"index && !canNextStep(index - 1) ? '' : null\"\n tuiStep\n >\n {{ steps[index] }}\n </button>\n </tui-stepper>\n <tui-elastic-container>\n <div\n [class.!hidden]=\"stepIndex !== 0\"\n class=\"flex flex-col gap-3\"\n >\n <label tuiLabel>Тип клиента\n <tui-select\n [formControl]=\"opfControl\"\n [valueContent]=\"opfContent\"\n >\n Тип клиента\n <tui-data-list *tuiDataList>\n <button\n *ngFor=\"let item of getOpf$() | async; let index = index\"\n tuiOption\n [value]=\"item.slug\"\n >\n {{ item.name }}\n </button>\n </tui-data-list>\n </tui-select>\n <ng-template\n #opfContent\n let-data\n >\n <div>{{ (getOpfBySlug$(data) | async)?.name }}</div>\n </ng-template>\n </label>\n <label tuiLabel>{{ isIndividual ? 'Ф.И.О.' : 'Название организации или ИП' }}\n <tui-input formControlName=\"name\">\n {{ isIndividual ? 'Ф.И.О.' : 'Название организации или ИП' }}\n <ng-container *ngIf=\"!isIndividual\">\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.organization\"\n (selectedClick)=\"onSelectedOrganization($event)\"\n ></sc-suggestion-field>\n </ng-container>\n <input\n tuiTextfieldLegacy\n autocomplete=\"new-password\"\n />\n </tui-input>\n <tui-error\n formControlName=\"name\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n\n <div class=\"flex flex-col items-start gap-5 sm:flex-row\">\n <sc-verification-phone-check-form\n [shouldBeBusy]=\"false\"\n class=\"w-full\"\n ></sc-verification-phone-check-form>\n <label\n tuiLabel\n class=\"w-full\"\n >Адрес электронной почты\n <tui-input formControlName=\"email\">\n Адрес электронной почты\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.email\"\n ></sc-suggestion-field>\n </tui-input>\n <tui-error\n formControlName=\"email\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n </div>\n\n <sc-addresses-selection-field></sc-addresses-selection-field>\n\n <div class=\"flex flex-col items-start gap-5 sm:flex-row\">\n <label\n tuiLabel\n class=\"w-full\"\n >Пароль\n <tui-input-password formControlName=\"password\">\n Пароль\n <input\n tuiTextfieldLegacy\n autocomplete=\"new-password\"\n />\n </tui-input-password>\n <tui-error\n formControlName=\"password\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <label\n tuiLabel\n class=\"w-full\"\n >Повтор пароля\n <tui-input-password formControlName=\"passwordConfirm\">\n Повтор пароля\n <input\n tuiTextfieldLegacy\n autocomplete=\"new-password\"\n />\n </tui-input-password>\n <tui-error\n formControlName=\"passwordConfirm\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n </div>\n <tui-error\n [error]=\"[] | tuiFieldError | async\"\n class=\"self-center\"\n ></tui-error>\n\n <div class=\"flex flex-col items-start gap-5 sm:flex-row\">\n <label tuiLabel> <input tuiCheckbox type=\"checkbox\"\n formControlName=\"getNews\"\n class=\"w-full\"\n >\n Я хочу получать рассылку Снабцентр о скидках и новостях по электронной почте.\n </label>\n <label tuiLabel> <input tuiCheckbox type=\"checkbox\"\n required=\"true\"\n formControlName=\"acceptRules\"\n class=\"w-full\"\n >\n Регистрируясь на сайте, я соглашаюсь с\n <a\n tuiLink\n [pseudo]=\"true\"\n >Договором оферты</a\n >.\n <tui-error\n formControlName=\"acceptRules\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n </div>\n </div>\n <ng-container *ngIf=\"!isIndividual\">\n <sc-new-contragent-form\n [opfControl]=\"opfControl\"\n [class.!hidden]=\"stepIndex !== 1\"\n ></sc-new-contragent-form>\n\n <div [class.!hidden]=\"stepIndex !== 2\">\n <div\n *ngIf=\"contacts\"\n class=\"flex flex-col gap-5 pb-1\"\n >\n <p class=\"text-lg font-bold\">Контакты</p>\n <div\n *ngFor=\"let contact of contacts.controls; let index = index; let count = count; let last = last\"\n class=\"flex flex-col gap-3\"\n >\n <div class=\"flex h-10 items-center justify-between\">\n <p class=\"font-bold\">Контактное лицо №{{ index + 1 }}:</p>\n <button\n *ngIf=\"count - 1\"\n tuiIconButton\n appearance=\"secondary\"\n (click)=\"removeContactGroup(index)\"\n iconStart=\"@tui.trash-2\"\n ></button>\n </div>\n <sc-new-contact-form [form]=\"contact\"></sc-new-contact-form>\n <hr\n *ngIf=\"!last\"\n class=\"h-px w-full bg-tui-base-04\"\n />\n </div>\n <button\n tuiButton\n iconStart=\"@tui.plus\"\n appearance=\"secondary\"\n (click)=\"addContactGroup()\"\n type=\"button\"\n class=\"self-center\"\n >\n Добавить контакт\n </button>\n </div>\n </div>\n\n <div [class.!hidden]=\"stepIndex !== 3\">\n <div\n *ngIf=\"bankAccounts\"\n class=\"flex flex-col gap-5 pb-1\"\n >\n <p class=\"text-lg font-bold\">Банковские реквизиты</p>\n <div\n *ngFor=\"let bankAccount of bankAccounts.controls; let index = index; let count = count; let last = last\"\n class=\"flex flex-col gap-3\"\n >\n <div class=\"flex h-12 items-center justify-between\">\n <p class=\"font-bold\">Банковские реквизиты №{{ index + 1 }}:</p>\n <button\n *ngIf=\"count - 1\"\n tuiIconButton\n appearance=\"secondary\"\n (click)=\"removeBankAccountGroup(index)\"\n iconStart=\"@tui.trash-2\"\n ></button>\n </div>\n <sc-new-contragent-bank-account-form [form]=\"bankAccount\"></sc-new-contragent-bank-account-form>\n <hr\n *ngIf=\"!last\"\n class=\"h-px w-full bg-tui-base-04\"\n />\n </div>\n <button\n tuiButton\n iconStart=\"@tui.plus\"\n appearance=\"secondary\"\n (click)=\"addBankAccountGroup()\"\n type=\"button\"\n class=\"self-center\"\n >\n Добавить банковские реквизиты\n </button>\n </div>\n </div>\n </ng-container>\n </tui-elastic-container>\n <div class=\"flex justify-center gap-2\">\n <button\n *ngIf=\"stepIndex > 0\"\n tuiButton\n appearance=\"secondary\"\n type=\"button\"\n (click)=\"navigate(-1)\"\n >\n Назад\n </button>\n <button\n *ngIf=\"isIndividual || (stepIndex === 2 && !form.controls.contragent.controls['bankAccounts']) || stepIndex === 3; else nextIndexBtn\"\n tuiButton\n [disabled]=\"form.invalid\"\n [loading]=\"!!(loading$ | async)\"\n class=\"self-center\"\n >\n Зарегистрироваться\n </button>\n <ng-template #nextIndexBtn>\n <button\n tuiButton\n type=\"button\"\n [disabled]=\"!canNextStep(stepIndex)\"\n (click)=\"navigate(1)\"\n >\n Далее\n </button>\n </ng-template>\n </div>\n </ng-container>\n</form>\n","import { Directive } from '@angular/core';\nimport { PolymorpheusTemplate } from '@taiga-ui/polymorpheus';\n\n/**\n * Директива содержимого компонента, позволяющего отображать и скрывать содержимое в разделах.\n */\n@Directive({\n selector: 'ng-template[scAccordionContent]',\n})\nexport class ScAccordionContentDirective extends PolymorpheusTemplate<Record<string, unknown>> {}\n","import { ChangeDetectionStrategy, Component, ContentChild, EventEmitter, HostBinding, Input, Output, ViewChild } from '@angular/core';\nimport { TuiSizeS } from '@taiga-ui/core';\nimport { TuiAccordionItem } from '@taiga-ui/kit';\n\nimport { ScAccordionContentDirective } from './sc-accordion-content.directive';\n\n/**\n * Компонент, позволяющий отображать и скрывать содержимое в разделах.\n */\n@Component({\n selector: 'sc-accordion',\n templateUrl: './sc-accordion.component.html',\n styleUrls: ['./sc-accordion.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScAccordionComponent {\n /**\n * Состояние отображения кнопки добавления.\n */\n @Input()\n @HostBinding('class._has-add-button')\n public showAddButton = true;\n\n /**\n * Состояние отображения кнопки удаления.\n */\n @Input()\n @HostBinding('class._has-delete-button')\n public showDeleteButton: boolean = false;\n\n /**\n * Состояние отображения стрелки.\n */\n @Input()\n @HostBinding('class._has-arrow')\n public showArrow: boolean = true;\n\n /**\n * Состояние открытия содержимого компонента.\n */\n @Input()\n public open: boolean = false;\n\n /**\n * Размер элементов {@link TuiAccordionItemComponent}.\n */\n @Input()\n @HostBinding('attr.data-size')\n public size: TuiSizeS = 's';\n\n /**\n * Дочерний элемент контента.\n */\n @ContentChild(ScAccordionContentDirective)\n protected readonly content?: ScAccordionContentDirective;\n\n /**\n * Ссылка на шаблон превью-просмотра в разметке.\n */\n @ViewChild(TuiAccordionItem)\n public readonly accordion?: TuiAccordionItem;\n\n /**\n * Событие нажатия на кнопку добавления.\n */\n @Output()\n public addButtonClick: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на кнопку удаления.\n */\n @Output()\n public deleteButtonClick: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Закрывает акордион.\n */\n public close(): void {\n this.accordion?.close();\n }\n}\n","<tui-accordion [rounded]=\"false\">\n <tui-accordion-item\n #accordion\n [size]=\"size\"\n [borders]=\"null\"\n [showArrow]=\"showArrow\"\n [open]=\"open\"\n >\n <div class=\"flex grow justify-between\">\n <div class=\"self-center font-bold\">\n <ng-content></ng-content>\n </div>\n <div\n *ngIf=\"showAddButton || showDeleteButton\"\n class=\"flex\"\n >\n <ng-container *ngIf=\"showDeleteButton\">\n <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n iconStart=\"@tui.trash-2\"\n appearance=\"secondary\"\n (click)=\"$event.stopPropagation(); deleteButtonClick.emit()\"\n ></button>\n </ng-container>\n <ng-container *ngIf=\"showAddButton\">\n <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n iconStart=\"@tui.plus\"\n appearance=\"secondary\"\n (click)=\"$event.stopPropagation(); addButtonClick.emit()\"\n ></button>\n </ng-container>\n </div>\n </div>\n <ng-template tuiAccordionItemContent>\n <tui-elastic-container *ngIf=\"content\">\n <ng-container *polymorpheusOutlet=\"content as text\">\n {{ text }}\n </ng-container>\n </tui-elastic-container>\n </ng-template>\n </tui-accordion-item>\n</tui-accordion>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TuiButton } from '@taiga-ui/core';\nimport { TuiAccordion, TuiElasticContainer } from '@taiga-ui/kit';\nimport { PolymorpheusOutlet, PolymorpheusTemplate } from '@taiga-ui/polymorpheus';\n\nimport { ScAccordionComponent } from './sc-accordion.component';\nimport { ScAccordionContentDirective } from './sc-accordion-content.directive';\n\n/**\n * Модуль для отображение контента разделами, с возможностью скрывать и отображать содержимое.\n */\n@NgModule({\n declarations: [ScAccordionComponent, ScAccordionContentDirective],\n imports: [CommonModule, PolymorpheusTemplate, PolymorpheusOutlet, TuiButton, ...TuiAccordion, TuiElasticContainer],\n exports: [ScAccordionComponent, ScAccordionContentDirective],\n})\nexport class ScAccordionModule {}\n","/* eslint-disable lodash/prefer-lodash-method */\n\nimport { ContentChildren, Directive, HostListener, QueryList } from '@angular/core';\nimport { AbstractTuiControl, TuiFocusableElementAccessor } from '@taiga-ui/legacy';\n\n/**\n * Директива для перехода по нажатию клавиши enter на следующее поле ввода формы.\n */\n@Directive({\n selector: 'form[ScNextInputFocus]',\n})\nexport class ScNextInputFocusDirective {\n /**\n * Все поля ввода внутри формы, на которой применяется данная директива.\n */\n @ContentChildren(AbstractTuiControl, { descendants: true })\n private focusableElements: QueryList<TuiFocusableElementAccessor>;\n\n /**\n * Слушатель нажатия на клавишу enter. Предотвращает событие submit, выполняет смену фокуса на следующее поле ввода TuiFocusableElementAccessor.\n *\n * @param event Объект события нажатия на клавишу.\n */\n @HostListener('keydown', ['$event'])\n public onFormKeyDownEnter(event: KeyboardEvent): void {\n if (event.code !== 'Enter' && event.key !== 'Enter') {\n return;\n }\n\n event.preventDefault();\n\n const elements: TuiFocusableElementAccessor[] = this.focusableElements.toArray();\n\n const focusedIndex = elements.findIndex((control) => control.focused);\n\n if (focusedIndex !== -1) {\n const nextElement = elements[focusedIndex + 1]?.nativeFocusableElement;\n\n if (nextElement) {\n nextElement.focus();\n }\n }\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { ScNextInputFocusDirective } from './sc-next-input-focus.directive';\n\n/**\n * Модуль директивы для перехода по нажатию клавиши enter на следующее поле ввода формы.\n */\n@NgModule({\n declarations: [ScNextInputFocusDirective],\n exports: [ScNextInputFocusDirective],\n})\nexport class ScNextInputFocusModule {}\n","/* eslint-disable no-underscore-dangle */\n\nimport { Directive, EventEmitter, inject, Input, Output } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { SC_PATH_IMAGE_NOT_FOUND, ScAuthService, ScCartItem, ScImageHelper, ScIWarehouse, ScProduct, ScUnitsHelper, ScWarehouseService, SEARCH_TERM } from '@snabcentr/client-core';\nimport { Observable } from 'rxjs';\n\n/**\n * Директива абстрактной карточки товара.\n */\n@Directive() // Абстрактный класс имеет декоратор @Directive() для внедрения его в DI, с целью получения функционала inject внутри абстракции, и возможности получать потомков через DI или через декоратор @ViewChild.\nexport class AbstractScPriceCard {\n /**\n * Позиция товара в корзине.\n *\n * TODO: Сделать товар в корзине наблюдаемой переменной после реализации TASK:[#7144].\n */\n public get cartItem(): ScCartItem | undefined {\n return this._cartItem;\n }\n\n /**\n * Позиция товара в корзине\n *\n * TODO: Сделать товар в корзине наблюдаемой переменной после реализации TASK:[#7144].\n */\n @Input()\n public set cartItem(value: ScCartItem | undefined) {\n this._cartItem = value;\n\n this.quantityControl.patchValue(this._cartItem?.quantity ?? null, { emitEvent: false });\n this.quantityShowLoader = false;\n }\n\n /**\n * {@link FormControl} поля ввода количества товара в корзине.\n */\n public quantityControl: FormControl<number | null> = new FormControl<number | null>(3, { updateOn: 'blur' });\n\n /**\n * Признак, что необходимо отобразить лоадер для поля ввода количества товара.\n */\n public quantityShowLoader: boolean = false;\n\n /**\n * Признак, что необходимо отобразить лоадер для кнопки избранных товаров и категорий.\n */\n public favoriteShowLoader: boolean = false;\n\n /**\n * {@link Observable} изменения выбранного склада.\n */\n public readonly warehouseSelect$: Observable<ScIWarehouse | null> = inject(ScWarehouseService).getWarehouseSelectChange$();\n\n /**\n * {@link Observable} изменения статуса авторизации.\n */\n public readonly authStatus$: Observable<boolean> = inject(ScAuthService).getAuthChange();\n\n /**\n * {@link Observable} поиска терма.\n */\n public readonly search$ = inject(SEARCH_TERM);\n\n /**\n * Объект товара.\n */\n @Input()\n public product?: ScProduct;\n\n /**\n * Признак, что необходимо отобразить поле ввода количества товара.\n */\n @Input()\n public showQuantityControl: boolean = false;\n\n /**\n * Событие нажатия на кнопку \"В избранное\".\n */\n @Output()\n public readonly clickFavoriteEvent: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на кнопку \"В корзину\".\n */\n @Output()\n public readonly clickAddToCartEvent: EventEmitter<ScProduct> = new EventEmitter<ScProduct>();\n\n /**\n * Событие нажатия на кнопку очистки количества товара.\n */\n @Output()\n public readonly clickClearEvent: EventEmitter<ScCartItem> = new EventEmitter<ScCartItem>();\n\n /**\n * Событие нажатия на карточку товара.\n */\n @Output()\n public readonly clickCardEvent: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на историю цен.\n */\n @Output()\n public readonly clickPriceHistoryEvent: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * {@link Observable} изменения количества товара в корзине.\n */\n @Output()\n public readonly quantityValueChanges: Observable<number | null> = this.quantityControl.valueChanges;\n\n /**\n * Экземпляр класса-помощника для работы со значениями единиц измерения товара.\n */\n protected readonly unitsHelper: ScUnitsHelper = inject(ScUnitsHelper);\n\n /**\n * Хелпер для работы с изображениями товара.\n */\n private readonly imageHelper = inject(ScImageHelper);\n\n /**\n * Путь до изображения 'Товар не найден'.\n */\n private readonly pathImageNotFound = inject(SC_PATH_IMAGE_NOT_FOUND);\n\n /**\n * Позиция товара в корзине.\n *\n * TODO: Сделать товар в корзине наблюдаемой переменной после реализации TASK:[#7144].\n */\n private _cartItem?: ScCartItem | undefined;\n\n /**\n * Признак, что нужно показать скелетон.\n */\n public get skeletonVisible(): boolean {\n return !this.product;\n }\n\n /**\n * Возвращает ссылку на preview-изображение карточки товара.\n */\n public getCardImagePreview(): string {\n return this.product ? this.imageHelper.getImagePreview(this.product) : this.pathImageNotFound;\n }\n}\n","import { Directive, ElementRef, inject, Input, OnChanges, Renderer2, SimpleChanges } from '@angular/core';\nimport { ScPhoneService } from '@snabcentr/client-core';\n\n/**\n * Директива, которая управляет свойствами ссылки номера телефона для валидации значения номера телефона.\n */\n@Directive({\n standalone: true,\n selector: '[scTelLink]',\n})\nexport class ScTelLinkDirective implements OnChanges {\n /**\n * Экземпляр базового класса для реализации пользовательского рендеринга.\n */\n private readonly renderer: Renderer2 = inject(Renderer2);\n\n /**\n * Ссылка на HTML элемент тега `<a>`.\n */\n private elementReference: ElementRef<HTMLAnchorElement> = inject<ElementRef<HTMLAnchorElement>>(ElementRef);\n\n /**\n * Номер телефона, который будет проверен на валидность.\n */\n @Input() scTelLink: string = '';\n\n /** @inheritDoc */\n public ngOnChanges(changes: SimpleChanges): void {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (changes['scTelLink']) {\n this.updateLinkState();\n }\n }\n\n /**\n * Обновляет состояние ссылки на основе валидности номера телефона.\n */\n private updateLinkState(): void {\n if (ScPhoneService.isValidPhoneNumber(this.scTelLink)) {\n // Если номер валиден, активируем ссылку\n this.renderer.removeAttribute(this.elementReference.nativeElement, 'aria-disabled');\n this.renderer.removeClass(this.elementReference.nativeElement, 'disabled');\n this.renderer.setAttribute(this.elementReference.nativeElement, 'href', `tel:${ScPhoneService.formatPhoneNumber(this.scTelLink)}`);\n } else {\n // Если номер невалиден, отключаем ссылку\n this.renderer.setAttribute(this.elementReference.nativeElement, 'aria-disabled', 'true');\n this.renderer.addClass(this.elementReference.nativeElement, 'disabled');\n this.renderer.removeAttribute(this.elementReference.nativeElement, 'href');\n }\n }\n}\n","/* eslint-disable class-methods-use-this */\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { ScPhoneService } from '@snabcentr/client-core';\n\n/**\n * Пайп для форматирования номера телефона.\n *\n * Если переданный номер телефона валиден, он будет отформатирован с использованием метода `formatPhoneNumber` сервиса `ScPhoneService`.\n * Если номер невалиден, возвращается исходное значение.\n */\n@Pipe({\n standalone: true,\n name: 'scFormatePhone',\n})\nexport class ScFormatePhonePipe implements PipeTransform {\n /**\n * Преобразует строковое значение номера телефона.\n *\n * @param value Строка, содержащая номер телефона.\n * @returns Отформатированный номер телефона, если он валиден, или исходное значение, если он невалиден.\n */\n public transform(value: string): string {\n if (ScPhoneService.isValidPhoneNumber(value)) {\n return ScPhoneService.formatPhoneNumber(value);\n }\n return value; // Возвращаем оригинальный номер, если он невалиден\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { ScFormatePhonePipe } from '../../pipes';\nimport { ScTelLinkDirective } from './sc-tel-link.directive';\n\n/**\n * Модуль валидации значения номера телефона.\n */\n@NgModule({\n imports: [ScFormatePhonePipe, ScTelLinkDirective],\n exports: [ScFormatePhonePipe, ScTelLinkDirective],\n})\nexport class ScTelLinkModule {}\n","import { ChangeDetectionStrategy, Component, HostBinding, Inject } from '@angular/core';\nimport { IS_RUNNING_ON_TERMINAL, ScITerminalProvider, ScVCardService } from '@snabcentr/client-core';\nimport { TuiDialogContext } from '@taiga-ui/core';\nimport { POLYMORPHEUS_CONTEXT } from '@taiga-ui/polymorpheus';\n\n/**\n * Компонент QR кода.\n */\n@Component({\n selector: 'sc-qrcode-dialog',\n templateUrl: './sc-qrcode-dialog.component.html',\n styleUrls: ['./sc-qrcode-dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScQRCodeDialogComponent {\n /**\n * Свойство, от которого зависит наличие атрибута `data-terminal-view` у `:host` компонента.\n */\n @HostBinding('attr.data-terminal-view')\n private terminalView = this.terminal.isRunningOnTerminal;\n\n /**\n * Инициализирует экземпляр класса {@link ScQRCodeDialogComponent}.\n *\n * @param vCardService Сервис для работы с vCard.\n * @param context Контекст диалогового окна, в котором открыт компонент.\n * @param terminal Провайдер данных о терминале.\n */\n public constructor(\n private readonly vCardService: ScVCardService,\n @Inject(POLYMORPHEUS_CONTEXT)\n public readonly context: TuiDialogContext<void, { qrdata: string }>,\n @Inject(IS_RUNNING_ON_TERMINAL)\n public readonly terminal: ScITerminalProvider\n ) {}\n\n /**\n * Выполняет скачивание генерируемого vCard файла контакта.\n */\n public downloadVCard(): void {\n if (!this.terminal.isRunningOnTerminal && this.isVCardData()) {\n this.vCardService.downloadVCard(this.context.data.qrdata);\n }\n }\n\n /**\n * Проверяет что в диалоговое окно были переданы данные в формате `vCard`.\n */\n public isVCardData(): boolean {\n // eslint-disable-next-line unicorn/better-regex\n return /BEGIN:VCARD[\\s\\S]*END:VCARD/i.test(this.context.data.qrdata);\n }\n}\n","<p class=\"-mt-2 mb-3 text-tui-text-02\">{{ !terminal.isRunningOnTerminal && this.isVCardData() ? 'Нажмите или о' : 'О' }}тсканируйте QR-код вашим мобильным устройством.</p>\n<qrcode\n (click)=\"downloadVCard()\"\n [margin]=\"0\"\n [qrdata]=\"this.context.data.qrdata\"\n [width]=\"800\"\n elementType=\"img\"\n class=\"cursor-pointer\"\n></qrcode>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TuiButton, TuiDialog } from '@taiga-ui/core';\nimport { TuiPreview } from '@taiga-ui/kit';\nimport { QRCodeModule as AngularxQRCodeModule } from 'angularx-qrcode';\n\nimport { ScQRCodeDialogComponent } from './qrcode-dialog/sc-qrcode-dialog.component';\n\n/**\n * Модуль QR кода.\n */\n@NgModule({\n declarations: [ScQRCodeDialogComponent],\n imports: [CommonModule, AngularxQRCodeModule, TuiButton, TuiDialog, ...TuiPreview],\n exports: [ScQRCodeDialogComponent],\n})\nexport class ScQRCodeModule {}\n","/* eslint-disable lodash/prefer-lodash-method */\n\nimport { Directive, ElementRef, HostListener, inject } from '@angular/core';\nimport { IS_RUNNING_ON_TERMINAL, ScITerminalProvider } from '@snabcentr/client-core';\nimport { TuiDialogService } from '@taiga-ui/core';\nimport { PolymorpheusComponent } from '@taiga-ui/polymorpheus';\n\nimport { ScQRCodeDialogComponent } from '../../qrcode';\n\n/**\n * Директива открытия диалогового окна с QRCode для ссылок `tel:` и `mailto:` на терминале.\n */\n@Directive({\n standalone: true,\n selector: 'a[href]',\n})\nexport class ScTerminalLinkDirective {\n /**\n * Ссылка на HTML элемент тега `<a>`.\n */\n private elementReference: ElementRef<HTMLAnchorElement> = inject<ElementRef<HTMLAnchorElement>>(ElementRef);\n\n /**\n * Сервис для работы с диалоговыми окнами TuiDialog.\n */\n private dialog: TuiDialogService = inject<TuiDialogService>(TuiDialogService);\n\n /**\n * Провайдер данных о терминале.\n */\n private terminal: ScITerminalProvider = inject<ScITerminalProvider>(IS_RUNNING_ON_TERMINAL);\n\n /**\n * Обработчик клика по ссылке.\n *\n * @param event Событие клика.\n */\n @HostListener('click', ['$event'])\n public onClick(event: Event): void {\n if (this.terminal.isRunningOnTerminal && this.isLinkTelOrMail()) {\n // Отключение базового события для терминала.\n event.preventDefault();\n this.openQRCodeDialog();\n }\n }\n\n /**\n * Открывает диалоговое окно с QR-кодом.\n */\n public openQRCodeDialog(): void {\n this.dialog\n .open(new PolymorpheusComponent(ScQRCodeDialogComponent), {\n size: 's',\n // Передаём ссылку формата `mailto:example@example.com` `tel:+70000000000` вместо vCard, так как для vCard данных недостаточно.\n data: { qrdata: this.elementReference.nativeElement.href },\n })\n .subscribe();\n }\n\n /**\n * Проверяет ведёт ли ссылка на телефон или адрес электронной почты.\n */\n private isLinkTelOrMail(): boolean {\n return this.elementReference.nativeElement.href.startsWith('tel:') || this.elementReference.nativeElement.href.startsWith('mailto:');\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MaskitoDirective } from '@maskito/angular';\nimport { TuiLet } from '@taiga-ui/cdk';\nimport { TuiButton, TuiDataList, TuiError, TuiLabel, TuiLoader } from '@taiga-ui/core';\nimport { TuiDataListWrapper, TuiFieldErrorPipe, TuiFilterByInputPipe, TuiStringifyContentPipe } from '@taiga-ui/kit';\nimport { TuiComboBoxModule, TuiInputModule, TuiInputPhoneModule, TuiTextfieldControllerModule } from '@taiga-ui/legacy';\n\nimport { ScAddressesSelectionFieldComponent } from './addresses-selection-field/sc-addresses-selection-field.component';\nimport { ScSuggestionFieldComponent } from './suggestion-field/sc-suggestion-field.component';\n\n/**\n * Модуль полей ввода.\n */\n@NgModule({\n declarations: [ScAddressesSelectionFieldComponent, ScSuggestionFieldComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n TuiInputModule,\n TuiTextfieldControllerModule,\n TuiLabel,\n TuiLet,\n TuiFieldErrorPipe,\n TuiError,\n ...TuiDataList,\n TuiLoader,\n TuiComboBoxModule,\n ...TuiDataListWrapper,\n TuiFilterByInputPipe,\n TuiStringifyContentPipe,\n TuiInputPhoneModule,\n TuiButton,\n MaskitoDirective,\n ],\n exports: [ScAddressesSelectionFieldComponent, ScSuggestionFieldComponent],\n})\nexport class ScFormFieldsModule {}\n","/* eslint-disable no-restricted-syntax,@typescript-eslint/unbound-method */\n\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { AfterViewInit, ChangeDetectionStrategy, Component, Inject } from '@angular/core';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport {\n ScContactsService,\n ScConvertersService,\n ScIBankAccount,\n ScIContactBase,\n ScIContactOnDataCreate,\n ScIContactWithRelations,\n ScUserMetrikaGoalsEnum,\n ScUserMetrikaService,\n} from '@snabcentr/client-core';\nimport { tuiIsFalsy, tuiMarkControlAsTouchedAndValidate } from '@taiga-ui/cdk';\nimport { TuiDialogContext } from '@taiga-ui/core';\nimport { POLYMORPHEUS_CONTEXT } from '@taiga-ui/polymorpheus';\nimport { catchError, filter, map, Observable, of, share, startWith, Subject, switchMap, tap } from 'rxjs';\n\nimport { ApiErrorResponse } from '../../auth/interfaces/api-error-response';\n\n/**\n * Компонент формы создания нового контактного лица.\n */\n@Component({\n selector: 'sc-add-contact-dialog',\n templateUrl: './sc-add-contact-dialog.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScAddContactDialogComponent implements AfterViewInit {\n /**\n * Группа с полями контактного лица.\n */\n public form = new FormGroup<{\n name: FormControl<string | null>;\n phone: FormControl<string | null>;\n email: FormControl<string | null>;\n position: FormControl<string | null>;\n }>({\n name: new FormControl<string | null>(null, Validators.required),\n phone: new FormControl<string | null>(null, [Validators.required, Validators.minLength(12)]),\n email: new FormControl<string | null>(null, Validators.email),\n position: new FormControl<string | null>(null, Validators.required),\n });\n\n /**\n * {@link Subject} события отправки формы.\n */\n public readonly onSubmit: Subject<void> = new Subject<void>();\n\n /**\n * {@link Observable} запроса добавления контактного лица.\n */\n private readonly request$ = this.onSubmit.pipe(\n map(() => this.form.value),\n filter((value): value is ScIContactOnDataCreate => this.form.valid),\n map((value) => this.convertersService.removeNull<ScIContactOnDataCreate>({ ...value, ...this.context.data })),\n switchMap((data) => {\n return this.contactsService.createContact$(data).pipe(\n tap((contact) => {\n this.context.completeWith(contact);\n }),\n catchError((error: unknown) => {\n tuiMarkControlAsTouchedAndValidate(this.form);\n\n if (error instanceof HttpErrorResponse) {\n const { errors, message } = error.error as ApiErrorResponse;\n\n for (const key in errors) {\n if (Object.hasOwn(errors, key)) {\n this.form.get(key)?.setErrors({ serverResponse: errors[key] });\n }\n }\n\n if (!errors && message) {\n this.form.setErrors({ serverResponse: [message] });\n }\n }\n return of({} as ScIBankAccount);\n }),\n startWith(null)\n );\n }),\n share()\n );\n\n /**\n * {@link Observable} изменения состояния загрузки данных аутентификации по номеру телефона.\n */\n public readonly loading$: Observable<boolean> = this.request$.pipe(map(tuiIsFalsy));\n\n /**\n * Инициализирует экземпляр класса {@link ScAddContactDialogComponent}.\n *\n * @param contactsService Сервис для работы с контактными лицами.\n * @param convertersService Сервис конвертации данных.\n * @param userMetrikaService Сервис для сбора метрик о действиях пользователей.\n * @param context Контекст диалогового окна, в котором открыт компонент.\n */\n public constructor(\n private readonly contactsService: ScContactsService,\n public readonly convertersService: ScConvertersService,\n private readonly userMetrikaService: ScUserMetrikaService,\n @Inject(POLYMORPHEUS_CONTEXT)\n public readonly context: TuiDialogContext<ScIContactWithRelations, Omit<ScIContactOnDataCreate, keyof ScIContactBase>>\n ) {}\n\n /** @inheritdoc */\n public ngAfterViewInit(): void {\n this.userMetrikaService.emitUserMetrikaEvent({\n target: ScUserMetrikaGoalsEnum.userProfileContactAddShow,\n });\n }\n}\n","<form\n [formGroup]=\"form\"\n (ngSubmit)=\"onSubmit.next()\"\n class=\"flex flex-col gap-3\"\n>\n <sc-new-contact-form [form]=\"form\"></sc-new-contact-form>\n <div class=\"flex justify-center gap-4\">\n <button\n tuiButton\n (click)=\"context.$implicit.complete()\"\n type=\"button\"\n iconStart=\"@tui.x\"\n appearance=\"secondary\"\n >\n Отмена\n </button>\n <button\n tuiButton\n [disabled]=\"form.invalid\"\n [loading]=\"!!(loading$ | async)\"\n type=\"submit\"\n iconStart=\"@tui.save\"\n >\n Сохранить\n </button>\n </div>\n</form>\n","import { Component, ChangeDetectionStrategy, Output, EventEmitter, Input } from '@angular/core';\nimport { ScIContact } from '@snabcentr/client-core';\nimport { Observable } from 'rxjs';\n\n/**\n * Компонент контактного лица в списке.\n */\n@Component({\n selector: 'sc-contacts-accordion',\n templateUrl: './sc-contacts-accordion.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScContactsAccordionComponent {\n /**\n * Контактные лица.\n */\n @Input()\n public contacts$: Observable<ScIContact[] | null>;\n\n /**\n * Событие нажатия на кнопку добавления контактного лица.\n */\n @Output()\n public addContactClick: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на кнопку удаления контактного лица.\n */\n @Output()\n public deleteButtonClick: EventEmitter<ScIContact> = new EventEmitter<ScIContact>();\n}\n","<sc-accordion (addButtonClick)=\"addContactClick.emit()\">\n Контакты\n <ng-template scAccordionContent>\n <tui-loader\n *tuiLet=\"contacts$ | async as contacts\"\n [overlay]=\"true\"\n [showLoader]=\"contacts === null\"\n >\n <div class=\"flex flex-col gap-2\">\n <ng-container *ngIf=\"!contacts || contacts.length; else contactsNotExist\">\n <div\n *ngFor=\"let contact of contacts\"\n class=\"flex gap-2 border-b border-tui-base-03\"\n >\n <div class=\"flex grow flex-col gap-2\">\n {{ contact.name }}\n <a\n tuiLink\n [scTelLink]=\"contact.phone\"\n iconStart=\"@tui.phone\"\n \n [pseudo]=\"true\"\n href=\"tel:{{ contact.phone | scFormatePhone }}\"\n >{{ contact.phone | scFormatePhone }}</a\n >\n <a\n tuiLink\n iconStart=\"@tui.mail\"\n \n [pseudo]=\"true\"\n href=\"mailto:{{ contact.email }}\"\n >\n {{ contact.email }}\n </a>\n </div>\n <!-- Функционал удаления временно не доступен пользователю. -->\n <!-- <div class=\"flex flex-col md:flex-row gap-1\">\n <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n icon=\"@tui.trash-2\"\n appearance=\"flat\"\n (click)=\"$event.stopPropagation(); deleteButtonClick.emit(contact)\"\n ></button>\n </div> -->\n </div>\n </ng-container>\n\n <ng-template #contactsNotExist>\n <tui-notification size=\"l\"><div>\n <div class=\"flex flex-wrap gap-2 font-medium\">Контакты не указаны.</div>\n </div></tui-notification>\n </ng-template>\n </div>\n </tui-loader>\n </ng-template>\n</sc-accordion>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MaskitoDirective } from '@maskito/angular';\nimport { TuiLet } from '@taiga-ui/cdk';\nimport { TuiButton, TuiDataList, TuiError, TuiLabel, TuiLink, TuiLoader, TuiNotification } from '@taiga-ui/core';\nimport { TuiButtonLoading, TuiDataListWrapper, TuiFieldErrorPipe } from '@taiga-ui/kit';\nimport { TuiInputModule, TuiInputPhoneModule, TuiSelectModule } from '@taiga-ui/legacy';\n\nimport { ScAccordionModule } from '../accordion';\nimport { ScTelLinkDirective, ScTerminalLinkDirective } from '../directives';\nimport { ScFormFieldsModule } from '../form-fields/form-fields.module';\nimport { ScFormatePhonePipe } from '../pipes';\nimport { ScAddContactDialogComponent } from './add-contact-dialog/sc-add-contact-dialog.component';\nimport { ScContactsAccordionComponent } from './contacts-accordion/sc-contacts-accordion.component';\nimport { ScNewContactFormComponent } from './new-contact-form/sc-new-contact-form.component';\n\n/**\n * Модуль контактных лиц.\n */\n@NgModule({\n declarations: [ScContactsAccordionComponent, ScNewContactFormComponent, ScAddContactDialogComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n ScAccordionModule,\n TuiButton,\n TuiLoader,\n TuiLet,\n TuiNotification,\n TuiLink,\n ScFormFieldsModule,\n MaskitoDirective,\n TuiFieldErrorPipe,\n TuiSelectModule,\n ...TuiDataList,\n ...TuiDataListWrapper,\n TuiLabel,\n TuiInputModule,\n TuiInputPhoneModule,\n TuiError,\n ScTerminalLinkDirective,\n ScFormatePhonePipe,\n ScTelLinkDirective,\n TuiButtonLoading,\n ],\n exports: [ScContactsAccordionComponent, ScNewContactFormComponent, ScAddContactDialogComponent],\n})\nexport class ScContactsModule {}\n","/* eslint-disable no-restricted-syntax,@typescript-eslint/unbound-method */\n\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { ChangeDetectionStrategy, Component, Inject } from '@angular/core';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport { ScContragentService, ScIBankAccount, ScIBankAccountOnDataCreate } from '@snabcentr/client-core';\nimport { tuiIsFalsy, tuiMarkControlAsTouchedAndValidate } from '@taiga-ui/cdk';\nimport { TuiDialogContext } from '@taiga-ui/core';\nimport { POLYMORPHEUS_CONTEXT } from '@taiga-ui/polymorpheus';\nimport { catchError, filter, map, Observable, of, share, startWith, Subject, switchMap, tap } from 'rxjs';\n\nimport { ApiErrorResponse } from '../../auth/interfaces/api-error-response';\nimport { scBicValidator, scCorrespondentAccountValidator } from '../../validators';\n\n/**\n * Компонент формы создания нового банковского счета контрагента.\n */\n@Component({\n selector: 'sc-add-contragent-bank-account-dialog',\n templateUrl: './sc-add-contragent-bank-account-dialog.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScAddContragentBankAccountsDialogComponent {\n /**\n * Группа с полем банковских реквизитов.\n */\n public form = new FormGroup<{\n bankName: FormControl<string | null>;\n bic: FormControl<string | null>;\n accountNumber: FormControl<string | null>;\n correspondentAccount: FormControl<string | null>;\n currencyId: FormControl<number | null>;\n }>({\n bankName: new FormControl<string | null>(null, Validators.required),\n bic: new FormControl<string | null>(null, [Validators.required, Validators.minLength(9), scBicValidator]),\n accountNumber: new FormControl<string | null>(null, [Validators.required, Validators.minLength(20)]),\n correspondentAccount: new FormControl<string | null>(null, [Validators.required, Validators.minLength(20), scCorrespondentAccountValidator]),\n currencyId: new FormControl<number | null>(null, Validators.required),\n });\n\n /**\n * {@link Subject} события отправки формы.\n */\n public readonly onSubmit: Subject<void> = new Subject<void>();\n\n /**\n * {@link Observable} запроса создания банковского счёта контрагента.\n */\n private readonly request$ = this.onSubmit.pipe(\n map(() => this.form.value),\n filter((value): value is ScIBankAccountOnDataCreate => this.form.valid),\n switchMap((value) => {\n return this.contragentService.createContragentBankAccount$(this.context.data.contragentId, value).pipe(\n tap((bankAccount) => {\n this.context.completeWith(bankAccount);\n }),\n catchError((error: unknown) => {\n tuiMarkControlAsTouchedAndValidate(this.form);\n if (error instanceof HttpErrorResponse) {\n const { errors, message } = error.error as ApiErrorResponse;\n\n for (const key in errors) {\n if (Object.hasOwn(errors, key)) {\n this.form.get(key)?.setErrors({ serverResponse: errors[key] });\n }\n }\n\n if (!errors && message) {\n this.form.setErrors({ serverResponse: [message] });\n }\n }\n\n return of({} as ScIBankAccount);\n }),\n startWith(null)\n );\n }),\n share()\n );\n\n /**\n * {@link Observable} изменения состояния загрузки данных аутентификации по номеру телефона.\n */\n public readonly loading$: Observable<boolean> = this.request$.pipe(map(tuiIsFalsy));\n\n /**\n * Инициализирует экземпляр класса {@link ScAddContragentBankAccountsFormComponent}.\n *\n * @param contragentService Сервис работы с контрагентами.\n * @param context Контекст диалогового окна, в котором открыт компонент.\n */\n public constructor(\n private readonly contragentService: ScContragentService,\n @Inject(POLYMORPHEUS_CONTEXT)\n public readonly context: TuiDialogContext<ScIBankAccount, { contragentId: number }>\n ) {}\n}\n","<form\n [formGroup]=\"form\"\n (ngSubmit)=\"onSubmit.next()\"\n class=\"flex flex-col gap-3\"\n>\n <sc-new-contragent-bank-account-form [form]=\"form\"></sc-new-contragent-bank-account-form>\n <div class=\"flex justify-center gap-4\">\n <button\n tuiButton\n (click)=\"context.$implicit.complete()\"\n type=\"button\"\n iconStart=\"@tui.x\"\n appearance=\"secondary\"\n >\n Отмена\n </button>\n <button\n tuiButton\n [disabled]=\"form.invalid\"\n [loading]=\"!!(loading$ | async)\"\n type=\"submit\"\n iconStart=\"@tui.save\"\n >\n Сохранить\n </button>\n </div>\n</form>\n","/* eslint-disable class-methods-use-this,@typescript-eslint/unbound-method,no-restricted-syntax */\n\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { AfterViewInit, ChangeDetectionStrategy, Component, Inject, Optional } from '@angular/core';\nimport { FormArray, FormControl, FormGroup, Validators } from '@angular/forms';\nimport {\n ScContragent,\n ScContragentOnDataCreate,\n ScContragentService,\n ScConvertersService,\n ScIBankAccount,\n ScICountry,\n ScICurrency,\n ScIReferencesTypes,\n ScISalesDirection,\n ScLocationsService,\n ScOpfList,\n ScReferencesService,\n ScUserMetrikaGoalsEnum,\n ScUserMetrikaService,\n} from '@snabcentr/client-core';\nimport { tuiIsFalsy, tuiMarkControlAsTouchedAndValidate } from '@taiga-ui/cdk';\nimport { TuiDialogContext } from '@taiga-ui/core';\nimport { POLYMORPHEUS_CONTEXT } from '@taiga-ui/polymorpheus';\nimport { catchError, filter, map, Observable, of, share, startWith, Subject, switchMap, tap } from 'rxjs';\n\nimport { ApiErrorResponse } from '../../auth/interfaces/api-error-response';\nimport { scBicValidator, scCorrespondentAccountValidator } from '../../validators';\n\n/**\n * Компотен добавления контрагента.\n */\n@Component({\n selector: 'sc-add-contragent-dialog',\n templateUrl: './sc-add-contragent-dialog.component.html',\n styleUrls: ['./sc-add-contragent-dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScAddContragentDialogComponent implements AfterViewInit {\n /**\n * Перечисление организационно-правовых форм.\n */\n public readonly opfListEnum: typeof ScOpfList = ScOpfList;\n\n /**\n * Расположение баннера.\n */\n public stepIndex = 0;\n\n /**\n * Родительская `FormGroup`.\n */\n public form = new FormGroup({\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n contragent: new FormGroup<any>({}),\n });\n\n /**\n * {@link Subject} события отправки формы.\n */\n public readonly onSubmit: Subject<void> = new Subject<void>();\n\n /**\n * {@link Observable} запроса добавления контрагента.\n */\n private readonly request$ = this.onSubmit.pipe(\n map(() => this.form.value.contragent as ScContragentOnDataCreate),\n filter((value): value is ScContragentOnDataCreate => this.form.valid),\n switchMap((value) => {\n return this.contragentService.createContragent$(this.convertersService.removeNullRecursive(value)).pipe(\n tap((contragent) => {\n this.context.completeWith(contragent);\n }),\n catchError((error: unknown) => {\n tuiMarkControlAsTouchedAndValidate(this.form);\n if (error instanceof HttpErrorResponse) {\n const { errors, message } = error.error as ApiErrorResponse;\n\n for (const key in errors) {\n if (Object.hasOwn(errors, key)) {\n this.form.get(key)?.setErrors({ serverResponse: errors[key] });\n }\n }\n\n if (!errors && message) {\n this.form.setErrors({ serverResponse: [message] });\n }\n\n this.stepIndex = 0;\n }\n\n return of({} as ScIBankAccount);\n }),\n startWith(null)\n );\n }),\n share()\n );\n\n /**\n * {@link Observable} изменения состояния загрузки данных аутентификации по номеру телефона.\n */\n public readonly loading$: Observable<boolean> = this.request$.pipe(map(tuiIsFalsy));\n\n /**\n * Инициализирует экземпляр класса {@link ScAddContragentDialogComponent}.\n *\n * @param referencesService Сервис справочников.\n * @param contragentService Сервис работы с контрагентами.\n * @param convertersService Сервис конвертации данных.\n * @param userMetrikaService Сервис для сбора метрик о действиях пользователей.\n * @param locationsService\n * @param context Контекст диалогового окна, в котором открыт компонент.\n */\n public constructor(\n private readonly referencesService: ScReferencesService,\n private readonly contragentService: ScContragentService,\n private readonly convertersService: ScConvertersService,\n private readonly userMetrikaService: ScUserMetrikaService,\n private readonly locationsService: ScLocationsService,\n @Optional()\n @Inject(POLYMORPHEUS_CONTEXT)\n public readonly context: TuiDialogContext<ScContragent, void>\n ) {}\n\n /** @inheritdoc */\n public ngAfterViewInit(): void {\n this.userMetrikaService.emitUserMetrikaEvent({\n target: ScUserMetrikaGoalsEnum.userProfileContragentAddShow,\n });\n }\n\n /**\n * Текущий выбранный ОПФ.\n */\n public get selectOpf(): ScOpfList {\n return this.opfListEnum[this.form.controls.contragent.controls['opf'].value as keyof typeof ScOpfList];\n }\n\n /**\n * Список групп полей банковских реквизитов.\n */\n public get bankAccounts(): FormArray<ReturnType<ScAddContragentDialogComponent['createBankAccountGroup']>> {\n return this.form.controls.contragent.get('bankAccounts') as FormArray<ReturnType<ScAddContragentDialogComponent['createBankAccountGroup']>>;\n }\n\n /**\n * Список групп полей контактных лиц.\n */\n public get contacts(): FormArray<ReturnType<ScAddContragentDialogComponent['createContactGroup']>> {\n return this.form.controls.contragent.get('contacts') as FormArray<ReturnType<ScAddContragentDialogComponent['createContactGroup']>>;\n }\n\n /**\n * Выполняет навигацию по форме создания контрагента.\n *\n * @param delta Значение, на которое необходимо выполнить навигацию.\n */\n public navigate(delta: number): void {\n this.stepIndex = (this.stepIndex + delta) % 3;\n }\n\n /**\n * Проверяет, может ли пользователь перейти к следующему шагу создания контрагента.\n *\n * @returns Выводит значение `boolean` на основании {@link stepIndex}.\n */\n public canNextStep(): boolean {\n switch (this.stepIndex) {\n case 0:\n for (const key in this.form.controls.contragent.controls) {\n if (\n Object.prototype.hasOwnProperty.call(this.form.controls.contragent.controls, key) &&\n !Array.isArray(this.form.controls.contragent.controls[key].value) &&\n this.form.controls.contragent.controls[key].invalid\n ) {\n return false;\n }\n }\n\n return true;\n case 1:\n return this.form.controls.contragent.controls['contacts'].valid;\n case 2:\n return this.form.controls.contragent.controls['bankAccounts'].valid;\n default:\n return true;\n }\n }\n\n /**\n * Возвращает {@link Observable} списка направлений продаж.\n */\n public getSalesDirections$(): Observable<ScISalesDirection[]> {\n return this.referencesService.directions$;\n }\n\n /**\n * Возвращает {@link Observable} списка направлений продаж.\n *\n * @param directionId\n */\n public getDirectionById$(directionId: number): Observable<ScISalesDirection | undefined> {\n return this.referencesService.getDirectionById$(directionId);\n }\n\n /**\n * Возвращает {@link Observable} список организационно-правовых форм.\n */\n public getOpf$(): Observable<Array<ScIReferencesTypes<ScOpfList, typeof ScOpfList>>> {\n return this.referencesService.opf$;\n }\n\n /**\n * Возвращает {@link Observable} организационно-правовой формы, соответствующий символьному обозначению (slug) на входе.\n *\n * @param slug Символьное обозначение (slug).\n */\n public getOpfBySlug$(slug: keyof typeof ScOpfList): Observable<ScIReferencesTypes<ScOpfList, typeof ScOpfList> | undefined> {\n return this.referencesService.getOpfBySlug$(slug);\n }\n\n /**\n * Возвращает {@link Observable} списка валют.\n */\n public getCurrencies$(): Observable<ScICurrency[]> {\n return this.referencesService.currencies$;\n }\n\n /**\n * Возвращает {@link Observable} валюты, соответствующий идентификатору на входе.\n *\n * @param currencyId — Идентификатор валюты.\n */\n public getCurrencyById$(currencyId: number): Observable<ScICurrency | undefined> {\n return this.referencesService.getCurrencyById$(currencyId);\n }\n\n /**\n * Возвращает {@link Observable} списка стран.\n */\n public getCountries$(): Observable<ScICountry[]> {\n return this.locationsService.getCountries$();\n }\n\n /**\n * Возвращает {@link Observable} страны, соответствующий идентификатору на входе.\n *\n * @param countryId — Идентификатор страны.\n */\n public getCountriesById$(countryId: number): Observable<ScICountry | undefined> {\n return this.locationsService.getCountries$().pipe(map((countries) => countries.find((country) => country.id === countryId)));\n }\n\n /**\n * Создаёт группу полей банковских реквизитов.\n */\n private createBankAccountGroup(): FormGroup<{\n bankName: FormControl<string | null>;\n bic: FormControl<string | null>;\n accountNumber: FormControl<string | null>;\n correspondentAccount: FormControl<string | null>;\n currencyId: FormControl<number | null>;\n }> {\n return new FormGroup({\n bankName: new FormControl<string | null>(null, Validators.required),\n bic: new FormControl<string | null>(null, [Validators.required, Validators.minLength(9), scBicValidator]),\n accountNumber: new FormControl<string | null>(null, [Validators.required, Validators.minLength(20)]),\n correspondentAccount: new FormControl<string | null>(null, [Validators.required, Validators.minLength(20), scCorrespondentAccountValidator]),\n currencyId: new FormControl<number | null>(null, Validators.required),\n });\n }\n\n /**\n * Добавляет Банковские реквизиты.\n */\n public addBankAccountGroup(): void {\n this.bankAccounts.push(this.createBankAccountGroup());\n }\n\n /**\n * Удаляет банковские реквизиты.\n *\n * @param index Индекс банковских реквизитов.\n */\n public removeBankAccountGroup(index: number): void {\n this.bankAccounts.removeAt(index);\n }\n\n /**\n * Создаёт группу полей контактного лица.\n */\n public createContactGroup(): FormGroup<{\n name: FormControl<string | null>;\n phone: FormControl<string | null>;\n email: FormControl<string | null>;\n position: FormControl<string | null>;\n }> {\n return new FormGroup({\n name: new FormControl<string | null>(null, Validators.required),\n phone: new FormControl<string | null>(null, [Validators.required, Validators.minLength(12)]),\n email: new FormControl<string | null>(null, Validators.email),\n position: new FormControl<string | null>(null, Validators.required),\n });\n }\n\n /**\n * Добавляет контактное лицо контрагента.\n */\n public addContactGroup(): void {\n this.contacts.push(this.createContactGroup());\n }\n\n /**\n * Удаляет контактное лицо контрагента.\n *\n * @param index Индекс контактного лица.\n */\n public removeContactGroup(index: number): void {\n this.contacts.removeAt(index);\n }\n}\n","<form\n [formGroup]=\"form\"\n (ngSubmit)=\"onSubmit.next()\"\n class=\"flex flex-col gap-4\"\n>\n <tui-elastic-container>\n <sc-new-contragent-form [class.!hidden]=\"stepIndex !== 0\"></sc-new-contragent-form>\n\n <div [class.!hidden]=\"stepIndex !== 1\">\n <div\n *ngIf=\"contacts\"\n class=\"flex flex-col gap-5 pb-1\"\n >\n <p class=\"text-lg font-bold\">Контакты</p>\n <div\n *ngFor=\"let contact of contacts.controls; let index = index; let count = count; let last = last\"\n class=\"flex flex-col gap-3\"\n >\n <div class=\"flex h-10 items-center justify-between\">\n <p class=\"font-bold\">Контакт №{{ index + 1 }}:</p>\n <button\n *ngIf=\"count - 1\"\n tuiIconButton\n appearance=\"secondary\"\n (click)=\"removeContactGroup(index)\"\n iconStart=\"@tui.trash-2\"\n ></button>\n </div>\n <sc-new-contact-form [form]=\"contact\"></sc-new-contact-form>\n <hr\n *ngIf=\"!last\"\n class=\"h-px w-full bg-tui-base-04\"\n />\n </div>\n <button\n tuiButton\n iconStart=\"@tui.plus\"\n appearance=\"secondary\"\n (click)=\"addContactGroup()\"\n type=\"button\"\n class=\"self-center\"\n >\n Добавить контакт\n </button>\n </div>\n </div>\n\n <div [class.!hidden]=\"stepIndex !== 2\">\n <div\n *ngIf=\"bankAccounts\"\n class=\"flex flex-col gap-5 pb-1\"\n >\n <p class=\"text-lg font-bold\">Банковские реквизиты</p>\n <div\n *ngFor=\"let bankAccount of bankAccounts.controls; let index = index; let count = count; let last = last\"\n class=\"flex flex-col gap-3\"\n >\n <div class=\"flex h-12 items-center justify-between\">\n <p class=\"font-bold\">Банковские реквизиты №{{ index + 1 }}:</p>\n <button\n *ngIf=\"count - 1\"\n tuiIconButton\n appearance=\"secondary\"\n (click)=\"removeBankAccountGroup(index)\"\n iconStart=\"@tui.trash-2\"\n ></button>\n </div>\n <sc-new-contragent-bank-account-form [form]=\"bankAccount\"></sc-new-contragent-bank-account-form>\n <hr\n *ngIf=\"!last\"\n class=\"h-px w-full bg-tui-base-04\"\n />\n </div>\n <button\n tuiButton\n iconStart=\"@tui.plus\"\n appearance=\"secondary\"\n (click)=\"addBankAccountGroup()\"\n type=\"button\"\n class=\"self-center\"\n >\n Добавить банковские реквизиты\n </button>\n </div>\n </div>\n </tui-elastic-container>\n <div class=\"flex justify-center gap-2\">\n <button\n *ngIf=\"stepIndex > 0\"\n tuiButton\n appearance=\"secondary\"\n type=\"button\"\n (click)=\"stepIndex = (stepIndex - 1) % 3\"\n >\n Назад\n </button>\n <button\n *ngIf=\"stepIndex === 0\"\n tuiButton\n (click)=\"context.$implicit.complete()\"\n type=\"button\"\n appearance=\"secondary\"\n >\n Отмена\n </button>\n <button\n *ngIf=\"stepIndex === 2 || (stepIndex === 1 && !form.controls.contragent.controls['bankAccounts']); else nextIndexBtn\"\n tuiButton\n [disabled]=\"form.invalid\"\n [loading]=\"!!(loading$ | async)\"\n type=\"submit\"\n class=\"self-center\"\n >\n Создать\n </button>\n <ng-template #nextIndexBtn>\n <button\n tuiButton\n [disabled]=\"!canNextStep()\"\n type=\"button\"\n (click)=\"stepIndex = (stepIndex + 1) % 3\"\n >\n Далее\n </button>\n </ng-template>\n </div>\n</form>\n","import { Component, ChangeDetectionStrategy, Output, EventEmitter, Input, OnInit } from '@angular/core';\nimport { ScContragent, ScContragentService, ScIBankAccount, ScIContact } from '@snabcentr/client-core';\nimport { Observable } from 'rxjs';\n\n/**\n * Компонент контрагента пользователя.\n */\n@Component({\n selector: 'sc-contragents-accordion-item',\n templateUrl: './sc-contragents-accordion-item.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScContragentsAccordionItemComponent implements OnInit {\n /**\n * Контрагент пользователя.\n */\n @Input()\n public contragent: ScContragent;\n\n /**\n * Событие нажатия на кнопку удаления контрагента.\n */\n @Output()\n public deleteContragentClick: EventEmitter<ScContragent> = new EventEmitter<ScContragent>();\n\n /**\n * Событие нажатия на кнопку добавления банковского счёта контрагенту.\n */\n @Output()\n public addContragentBankAccountClick: EventEmitter<ScContragent> = new EventEmitter<ScContragent>();\n\n /**\n * Событие нажатия на кнопку удаления банковского счёта контрагента.\n */\n @Output()\n public deleteContragentBankAccountClick: EventEmitter<ScIBankAccount> = new EventEmitter<ScIBankAccount>();\n\n /**\n * Событие нажатия на кнопку добавления контактного лица контрагенту.\n */\n @Output()\n public addContragentContactClick: EventEmitter<ScContragent> = new EventEmitter<ScContragent>();\n\n /**\n * Событие нажатия на кнопку удаления контактного лица у контрагента.\n */\n @Output()\n public deleteContragentContactClick: EventEmitter<{ contact: ScIContact; contragent: ScContragent }> = new EventEmitter<{ contact: ScIContact; contragent: ScContragent }>();\n\n /**\n * Список банковских счетов контрагента.\n */\n public bankAccounts$?: Observable<ScIBankAccount[] | null>;\n\n /**\n * Список банковских счетов контрагента.\n */\n public contacts$?: Observable<ScIContact[] | null>;\n\n /**\n * Инициализирует экземпляр класса {@link ScContragentsAccordionItemComponent}.\n *\n * @param contragentService Сервис работы с контрагентами.\n */\n public constructor(private readonly contragentService: ScContragentService) {}\n\n /** @inheritDoc */\n public ngOnInit(): void {\n this.bankAccounts$ = this.contragentService.getContragentBankAccounts$(this.contragent.id);\n this.contacts$ = this.contragentService.getContragentContacts$(this.contragent.id);\n }\n\n /**\n * Обработчик нажатия на кнопку удаления контактного лица у контрагента.\n *\n * @param contact Контактное лицо.\n * @param contragent Контрагент.\n */\n public onDeleteContragentContactClick(contact: ScIContact, contragent: ScContragent): void {\n this.deleteContragentContactClick.emit({ contact: contact, contragent: contragent });\n }\n}\n","<sc-accordion [showAddButton]=\"false\">\n {{ contragent.name }}\n <span *ngIf=\"$any(contragent).inn as inn\">ИНН: {{ inn }}</span>\n\n <ng-template scAccordionContent>\n <div class=\"flex flex-col gap-2\">\n <div class=\"flex gap-2\">\n <div class=\"flex grow flex-col gap-2\">\n {{ contragent.name }}\n <span *ngIf=\"$any(contragent).inn as inn\">ИНН: {{ inn }}</span>\n <span *ngIf=\"$any(contragent).kpp as kpp\">КПП: {{ kpp }}</span>\n </div>\n <!-- Функционал удаления и редактирования временно не доступен пользователю. -->\n <!-- <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n icon=\"@tui.pencil\"\n appearance=\"flat\"\n (click)=\"$event.stopPropagation(); editContragentClick.emit(contragent.id)\"\n ></button>\n <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n icon=\"@tui.trash-2\"\n appearance=\"flat\"\n (click)=\"$event.stopPropagation(); deleteContragentClick.emit(contragent)\"\n ></button> -->\n </div>\n\n <sc-accordion (addButtonClick)=\"addContragentBankAccountClick.emit(contragent)\">\n Банковские реквизиты\n <ng-template scAccordionContent>\n <tui-loader\n *tuiLet=\"bankAccounts$ | async as bankAccounts\"\n [overlay]=\"true\"\n [showLoader]=\"bankAccounts === null\"\n >\n <div class=\"flex flex-col gap-2\">\n <ng-container *ngIf=\"!bankAccounts || bankAccounts.length; else bankAccountsNotExist\">\n <div\n *ngFor=\"let bankAccount of bankAccounts\"\n class=\"flex gap-2 border-b border-tui-base-03\"\n >\n <div class=\"flex grow flex-col gap-2\">\n <span>Банк: {{ bankAccount.bankName }}</span>\n <span>БИК: {{ bankAccount.bic }}</span>\n <span>Р/счёт: {{ bankAccount.accountNumber }}</span>\n <span>Кор/счёт: {{ bankAccount.correspondentAccount }}</span>\n <span>Валюта: {{ bankAccount.currency.name }}</span>\n </div>\n <!-- <div class=\"flex flex-col md:flex-row gap-4\">\n <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n icon=\"@tui.pencil\"\n appearance=\"flat\"\n (click)=\"$event.stopPropagation(); editBankAccountsContragentClick.emit(bankAccount.id)\"\n ></button>\n <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n icon=\"@tui.trash-2\"\n appearance=\"flat\"\n (click)=\"$event.stopPropagation(); deleteContragentBankAccountClick.emit(bankAccount)\"\n ></button>\n </div> -->\n </div>\n </ng-container>\n\n <ng-template #bankAccountsNotExist>\n <tui-notification size=\"l\"\n ><div>\n <div class=\"flex flex-wrap gap-2 font-medium\">\n У контрагента <span class=\"font-bold\">{{ contragent.name }}</span> не указаны банковские реквизиты.\n </div>\n </div></tui-notification\n >\n </ng-template>\n </div>\n </tui-loader>\n </ng-template>\n </sc-accordion>\n <sc-contacts-accordion\n *ngIf=\"contacts$\"\n [contacts$]=\"contacts$\"\n (addContactClick)=\"addContragentContactClick.emit(contragent)\"\n (deleteButtonClick)=\"onDeleteContragentContactClick($event, contragent)\"\n ></sc-contacts-accordion>\n </div>\n </ng-template>\n</sc-accordion>\n","import { Component, ChangeDetectionStrategy, Output, EventEmitter } from '@angular/core';\nimport { ScContragent, ScContragentService, ScIBankAccount, ScIContact } from '@snabcentr/client-core';\nimport { Observable } from 'rxjs';\n\n/**\n * Компонент контрагента пользователя.\n */\n@Component({\n selector: 'sc-contragents-accordion',\n templateUrl: './sc-contragents-accordion.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScContragentsAccordionComponent {\n /**\n * {@link Observable} данных о контрагентах пользователя.\n */\n public contragents$: Observable<ScContragent[] | null> = this.contragentService.contragents$;\n\n /**\n * Событие нажатия на кнопку удаления контрагента.\n */\n @Output()\n public addContragentClick: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на кнопку удаления контрагента.\n */\n @Output()\n public deleteContragentClick: EventEmitter<ScContragent> = new EventEmitter<ScContragent>();\n\n /**\n * Событие нажатия на кнопку добавления банковского счёта контрагенту.\n */\n @Output()\n public addContragentBankAccountClick: EventEmitter<ScContragent> = new EventEmitter<ScContragent>();\n\n /**\n * Событие нажатия на кнопку удаления банковского счёта контрагента.\n */\n @Output()\n public deleteContragentBankAccountClick: EventEmitter<ScIBankAccount> = new EventEmitter<ScIBankAccount>();\n\n /**\n * Событие нажатия на кнопку добавления контактного лица контрагенту.\n */\n @Output()\n public addContragentContactClick: EventEmitter<ScContragent> = new EventEmitter<ScContragent>();\n\n /**\n * Событие нажатия на кнопку удаления контактного лица у контрагента.\n */\n @Output()\n public deleteContragentContactClick: EventEmitter<{ contact: ScIContact; contragent: ScContragent }> = new EventEmitter<{ contact: ScIContact; contragent: ScContragent }>();\n\n /**\n * Инициализирует экземпляр класса {@link ScContragentsAccordionComponent}.\n *\n * @param contragentService Сервис работы с контрагентами.\n */\n public constructor(private readonly contragentService: ScContragentService) {}\n}\n","<sc-accordion (addButtonClick)=\"addContragentClick.emit()\">\n Контрагенты\n <ng-template scAccordionContent>\n <tui-loader *tuiLet=\"contragents$ | async as contragents\" [overlay]=\"true\" [showLoader]=\"contragents === null\">\n <div class=\"flex flex-col gap-2\">\n <ng-container *ngIf=\"!contragents || contragents.length; else contragentsNotExist\">\n <sc-contragents-accordion-item\n *ngFor=\"let contragent of contragents\"\n [contragent]=\"contragent\"\n (deleteContragentClick)=\"deleteContragentClick.emit($event)\"\n (addContragentBankAccountClick)=\"addContragentBankAccountClick.emit($event)\"\n (deleteContragentBankAccountClick)=\"deleteContragentBankAccountClick.emit($event)\"\n (addContragentContactClick)=\"addContragentContactClick.emit($event)\"\n (deleteContragentContactClick)=\"deleteContragentContactClick.emit($event)\"\n ></sc-contragents-accordion-item>\n </ng-container>\n\n <ng-template #contragentsNotExist>\n <tui-notification size=\"l\"><div>\n <div class=\"flex flex-wrap gap-2 font-medium\">Контрагенты не указаны.</div>\n </div></tui-notification>\n </ng-template>\n </div>\n </tui-loader>\n </ng-template>\n</sc-accordion>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MaskitoDirective } from '@maskito/angular';\nimport { TuiLet } from '@taiga-ui/cdk';\nimport { TuiButton, TuiDataList, TuiError, TuiLabel, TuiLoader, TuiNotification } from '@taiga-ui/core';\nimport { TuiButtonLoading, TuiCarousel, TuiDataListWrapper, TuiElasticContainer, TuiFieldErrorPipe } from '@taiga-ui/kit';\nimport { TuiInputModule, TuiInputPhoneModule, TuiSelectModule } from '@taiga-ui/legacy';\n\nimport { ScAccordionModule } from '../accordion';\nimport { ScContactsModule } from '../contacts/sc-contacts.module';\nimport { ScFormFieldsModule } from '../form-fields/form-fields.module';\nimport { ScAddContragentBankAccountsDialogComponent } from './add-contragent-bank-account-dialog/sc-add-contragent-bank-account-dialog.component';\nimport { ScAddContragentDialogComponent } from './add-contragent-dialog/sc-add-contragent-dialog.component';\nimport { ScContragentsAccordionItemComponent } from './contragents-accordion/contragents-accordion-item/sc-contragents-accordion-item.component';\nimport { ScContragentsAccordionComponent } from './contragents-accordion/sc-contragents-accordion.component';\nimport { ScNewContragentBankAccountsFormComponent } from './new-contragent-bank-account-form/sc-new-contragent-bank-account-form.component';\nimport { ScNewContragentFormComponent } from './new-contragent-form/sc-new-contragent-form.component';\n\n/**\n * Модуль для отображение контента разделами, с возможностью скрывать и отображать содержимое.\n */\n@NgModule({\n declarations: [\n ScContragentsAccordionComponent,\n ScContragentsAccordionItemComponent,\n ScNewContragentBankAccountsFormComponent,\n ScAddContragentBankAccountsDialogComponent,\n ScAddContragentDialogComponent,\n ScNewContragentFormComponent,\n ],\n imports: [\n FormsModule,\n ReactiveFormsModule,\n CommonModule,\n ScAccordionModule,\n TuiButton,\n TuiLoader,\n TuiLet,\n TuiNotification,\n ScContactsModule,\n TuiFieldErrorPipe,\n TuiError,\n TuiSelectModule,\n ...TuiDataList,\n ...TuiDataListWrapper,\n TuiLabel,\n TuiInputModule,\n TuiInputPhoneModule,\n MaskitoDirective,\n ScFormFieldsModule,\n TuiElasticContainer,\n ...TuiCarousel,\n TuiButtonLoading,\n ],\n exports: [\n ScContragentsAccordionComponent,\n ScNewContragentBankAccountsFormComponent,\n ScAddContragentBankAccountsDialogComponent,\n ScAddContragentDialogComponent,\n ScNewContragentFormComponent,\n ],\n})\nexport class ScContragentsModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MaskitoDirective } from '@maskito/angular';\nimport { TuiLet } from '@taiga-ui/cdk';\nimport { TuiButton, TuiError, TuiLabel, TuiLink, TuiLoader } from '@taiga-ui/core';\nimport { TuiButtonLoading, TuiFieldErrorPipe } from '@taiga-ui/kit';\nimport { TuiInputModule, TuiInputPasswordModule, TuiInputPhoneModule, TuiTextfieldControllerModule } from '@taiga-ui/legacy';\n\nimport { ScVerificationPhoneCheckFormComponent } from './verification-phone-check-form/sc-verification-phone-check-form.component';\n\n/**\n * Модуль отправки кодов подтверждения (номера телефона, адреса эл. почты и т.д.).\n */\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n TuiInputPasswordModule,\n TuiInputModule,\n TuiTextfieldControllerModule,\n TuiLink,\n TuiButton,\n TuiLabel,\n TuiFieldErrorPipe,\n TuiError,\n TuiLet,\n TuiLoader,\n TuiInputPhoneModule,\n MaskitoDirective,\n TuiButtonLoading,\n ],\n exports: [ScVerificationPhoneCheckFormComponent],\n declarations: [ScVerificationPhoneCheckFormComponent],\n})\nexport class ScVerificationModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MaskitoDirective } from '@maskito/angular';\nimport { TuiLet, TuiRepeatTimes } from '@taiga-ui/cdk';\nimport { TuiButton, TuiDataList, TuiError, TuiLabel, TuiLink, TuiLoader } from '@taiga-ui/core';\nimport { TuiButtonLoading, TuiCheckbox, TuiDataListWrapper, TuiElasticContainer, TuiFieldErrorPipe, TuiStepper } from '@taiga-ui/kit';\nimport { TuiInputModule, TuiInputPasswordModule, TuiInputPhoneModule, TuiSelectModule, TuiTextfieldControllerModule } from '@taiga-ui/legacy';\n\nimport { ScContactsModule } from '../contacts/sc-contacts.module';\nimport { ScContragentsModule } from '../contragents/sc-contragents.module';\nimport { ScFormFieldsModule } from '../form-fields/form-fields.module';\nimport { ScVerificationModule } from '../verification';\nimport { ScSignInFormComponent } from './sc-sign-in-form/sc-sign-in-form.component';\nimport { ScSignInFormByEmailComponent } from './sc-sign-in-form/sc-sign-in-form-by-email/sc-sign-in-form-by-email.component';\nimport { ScSignInFormByPhoneComponent } from './sc-sign-in-form/sc-sign-in-form-by-phone/sc-sign-in-form-by-phone.component';\nimport { ScSignUpFormComponent } from './sign-up-form/sc-sign-up-form.component';\n\n/**\n * Модуль аутентификации.\n */\n@NgModule({\n declarations: [ScSignInFormComponent, ScSignInFormByPhoneComponent, ScSignInFormByEmailComponent, ScSignUpFormComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n TuiInputPasswordModule,\n TuiInputModule,\n TuiTextfieldControllerModule,\n TuiLink,\n TuiButton,\n TuiLabel,\n TuiFieldErrorPipe,\n TuiError,\n TuiLet,\n TuiLoader,\n TuiInputPhoneModule,\n MaskitoDirective,\n ScVerificationModule,\n ScFormFieldsModule,\n ...TuiDataList,\n TuiCheckbox,\n TuiElasticContainer,\n ...TuiDataListWrapper,\n TuiSelectModule,\n ScContragentsModule,\n ScContactsModule,\n ...TuiStepper,\n TuiRepeatTimes,\n TuiButtonLoading,\n ],\n exports: [ScSignInFormComponent, ScSignInFormByPhoneComponent, ScSignInFormByEmailComponent, ScSignUpFormComponent],\n})\nexport class ScAuthModule {}\n","import { Injectable } from '@angular/core';\n\n/**\n * Класс-помощник для конвертации пикселей.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class ScPxConverter {\n private rootFontSize = 16;\n\n /**\n * Конвертирует пиксели в rem.\n *\n * @param px Значение которое необходимо конвертировать.\n */\n public pxToRem(px: number): number {\n return px / this.rootFontSize;\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n DestroyRef,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Inject,\n inject,\n Input,\n Output,\n QueryList,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { IntersectionObserverService } from '@ng-web-apis/intersection-observer';\nimport { ScBanner, ScBannerService, ScUserMetrikaGoalsEnum, ScUserMetrikaService } from '@snabcentr/client-core';\nimport { tuiFadeIn } from '@taiga-ui/core';\nimport { filter, interval, map, Observable, shareReplay, Subject, switchMap, takeUntil, tap } from 'rxjs';\n\nimport { ScPxConverter } from '../helpers';\n\n/**\n * Баннер с прокруткой переданных {@link TemplateRef} элементов, и баннеров локации.\n */\n@Component({\n selector: 'sc-banner',\n templateUrl: './sc-banner.component.html',\n styleUrls: ['./sc-banner.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [IntersectionObserverService],\n animations: [tuiFadeIn],\n})\nexport class ScBannerComponent implements AfterViewInit {\n /**\n * Признак, что необходимо показывать кнопки навигации.\n */\n @Input()\n public navigateButton: boolean = true;\n\n /**\n * Интервал показа слайдов в миллисекундах.\n */\n @Input()\n public playerInterval: number = 5000;\n\n /**\n * Признак, что прокрутка выключена.\n */\n @Input()\n public disabled: boolean = false;\n\n /**\n * Местоположение баннера.\n */\n @Input()\n public bannerLocation?: string;\n\n /**\n * Признак, что компонент должен растягиваться.\n */\n @Input()\n public resizable: boolean = true;\n\n /**\n * Событие загрузки баннеров с количеством полученных баннеров.\n */\n @Output()\n public loadBannersEvent: EventEmitter<number> = new EventEmitter<number>();\n\n /**\n * Событие нажатия на изображение баннера.\n */\n @Output()\n public clickBannerEvent: EventEmitter<ScBanner> = new EventEmitter<ScBanner>();\n\n /**\n * Список ссылок на элемент представлений шаблонов.\n */\n @ContentChildren('banner')\n public bannersListRef: QueryList<TemplateRef<any>>;\n\n /**\n * Ссылка на {@link HTMLVideoElement} элемента отображения видео.\n */\n @ViewChild('videoPlayer')\n private videoRef: ElementRef<HTMLVideoElement>;\n\n /**\n * Ссылка для автоматического управления уничтожением зависимостей.\n */\n private destroyRef: DestroyRef = inject(DestroyRef);\n\n /**\n * Идентификатор текущего баннера.\n */\n public currentBannerId: number = 0;\n\n /**\n * {@link Subject} изменения состояния таймера.\n */\n public readonly toggleTimer$: Subject<boolean> = new Subject<boolean>();\n\n /**\n * Признак, что необходимо показывать кнопки старта видео баннера.\n */\n public showPlayBtn: boolean = false;\n\n /**\n * {@link Observable} обновления списка баннеров.\n */\n public readonly banners$: Observable<ScBanner[]> = this.bannerService.banners$.pipe(\n map((banners) => banners.filter((banner) => banner.location === this.bannerLocation).reverse()),\n tap((banners) => {\n if (banners.length > 0) {\n if (this.resizable) {\n this.width = '100%';\n } else {\n this.height = `${this.pxConverter.pxToRem(banners[0].height)}rem`;\n this.width = `${this.pxConverter.pxToRem(banners[0].width)}rem`;\n }\n\n this.aspectRatio = `${banners[0].width} / ${banners[0].height}`;\n this.banners = banners;\n this.toggleTimer$.next(true);\n }\n\n this.loadBannersEvent.emit(banners.length);\n }),\n shareReplay(1)\n );\n\n /**\n * Список баннеров.\n */\n public banners?: ScBanner[] = [];\n\n /**\n * Свойство, от которого зависит высота `:host` компонента.\n */\n @HostBinding('style.height')\n public height: string = 'auto';\n\n /**\n * Свойство, от которого зависит ширина `:host` компонента.\n */\n @HostBinding('style.width')\n public width: string = '';\n\n /**\n * Свойство, от которого зависит соотношение `:host` компонента.\n */\n @HostBinding('style.aspect-ratio')\n public aspectRatio: string = '';\n\n /**\n * Обработчик события mouseenter.\n */\n @HostListener('mouseenter')\n private mouseEnterHandler: () => void = () => {\n this.toggleTimer$.next(false);\n };\n\n /**\n * Обработчик события mouseleave.\n */\n @HostListener('mouseleave')\n private mouseLeaveHandler: () => void = () => {\n this.toggleTimer$.next(true);\n };\n\n /**\n * Инициализирует экземпляр класса {@link ScBannerComponent}.\n *\n * @param cdr Объект для работы с обнаружением изменений.\n * @param bannerService Сервис для работы с баннерами.\n * @param entries$\n * @param element Элемент баннера.\n * @param pxConverter Экземпляр класса-помощника для конвертации пикселей.\n * @param userMetrikaService Сервис для сбора метрик о действиях пользователей.\n */\n public constructor(\n private readonly cdr: ChangeDetectorRef,\n private readonly bannerService: ScBannerService,\n @Inject(IntersectionObserverService) private readonly entries$: IntersectionObserverService,\n @Inject(ElementRef) private readonly element: ElementRef<Element>,\n private pxConverter: ScPxConverter,\n private readonly userMetrikaService: ScUserMetrikaService\n ) {}\n\n /**\n * Свойство, от которого зависит наличие класса `!hidden` у `:host` компонента.\n */\n @HostBinding('class.!hidden')\n private get isHidden(): boolean {\n return !this.banners || this.bannersListRef.length + this.banners.length === 0;\n }\n\n /** @inheritDoc */\n public ngAfterViewInit(): void {\n this.toggleTimer$\n .pipe(\n filter((toggle) => toggle),\n switchMap(() => interval(this.playerInterval).pipe(takeUntil(this.toggleTimer$))),\n filter(() => !this.disabled && (this.banners?.[this.currentBannerId]?.mediaType === 'image' || this.showPlayBtn)),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(() => {\n this.onNextBanner();\n });\n\n // Отслеживание пересечения компонента с экраном пользователя.\n // Если баннера не находится в поле видимости пользователя, то он перестаёт переключаться, а видео останавливается.\n this.entries$.pipe(map((entries) => entries.find((item) => item.target === this.element.nativeElement))).subscribe((entry) => {\n this.toggleTimer$.next(!!entry?.isIntersecting);\n });\n }\n\n /**\n * Переключает на предыдущий баннер.\n */\n public onPreviousBanner(): void {\n const previous: number = this.currentBannerId - 1;\n this.currentBannerId = previous < 0 ? this.bannersListRef.length + (this.banners?.length ?? 0) - 1 : previous;\n\n this.cdr.markForCheck();\n }\n\n /**\n * Переключает на следующий баннер.\n */\n public onNextBanner(): void {\n const next: number = this.currentBannerId + 1;\n this.currentBannerId = next === this.bannersListRef.length + (this.banners?.length ?? 0) ? 0 : next;\n\n this.cdr.markForCheck();\n }\n\n /**\n * Переключает на следующий баннер.\n */\n public onEndedVideo(): void {\n this.onNextBanner();\n this.toggleTimer$.next(true);\n this.showPlayBtn = true;\n }\n\n /**\n * Обработчик нажатия на баннер, генерирующий событие {@link clickBannerImgEvent}.\n *\n * @param banner Баннер, по ссылке которого совершён переход.\n */\n public onClick(banner: ScBanner): void {\n this.userMetrikaService.emitUserMetrikaEvent({\n target: ScUserMetrikaGoalsEnum.bannerClick,\n params: {\n banner_id: banner.id,\n },\n });\n\n if (banner.url) {\n this.clickBannerEvent.emit(banner);\n }\n }\n}\n","<ng-container *tuiLet=\"banners$ | async\">\n <tui-carousel\n class=\"size-full overflow-hidden rounded-xl bg-white shadow-sc-2\"\n [(index)]=\"currentBannerId\"\n >\n <ng-container *ngFor=\"let banner of banners; let index = index\">\n <a\n *tuiItem\n (click)=\"onClick(banner)\"\n [style.aspect-ratio]=\"aspectRatio\"\n [attr.href]=\"banner.url ? banner.url : null\"\n target=\"_blank\"\n [title]=\"banner.title\"\n class=\"relative\"\n >\n <ng-container [ngSwitch]=\"banner.mediaType\">\n <ng-container *ngSwitchCase=\"'video'\">\n <video\n #videoPlayer\n (suspend)=\"showPlayBtn = true\"\n (play)=\"showPlayBtn = false\"\n [src]=\"banner.mediaFile\"\n (ended)=\"onEndedVideo()\"\n (mouseover)=\"videoPlayer.pause()\"\n (mouseout)=\"videoPlayer.play()\"\n class=\"h-full object-cover\"\n muted\n autoplay\n ></video>\n <button\n *ngIf=\"showPlayBtn\"\n tuiIconButton\n [@tuiFadeIn]=\"200\"\n matRipple\n (click)=\"$event.preventDefault(); videoPlayer.play()\"\n size=\"s\"\n appearance=\"secondary\"\n class=\"!absolute bottom-4 left-8\"\n >\n <i class=\"icon-refresh text-black\"></i>\n </button>\n </ng-container>\n\n <img\n *ngSwitchCase=\"'image'\"\n [src]=\"banner.mediaFile\"\n alt=\"Баннер\"\n class=\"h-full object-cover\"\n />\n </ng-container>\n </a>\n </ng-container>\n <ng-container *ngFor=\"let item of bannersListRef\">\n <div\n *tuiItem\n [style.height]=\"height\"\n [style.width]=\"width\"\n [style.aspect-ratio]=\"aspectRatio\"\n class=\"overflow-hidden\"\n >\n <ng-container [ngTemplateOutlet]=\"item\"></ng-container>\n </div>\n </ng-container>\n </tui-carousel>\n</ng-container>\n<div\n *ngIf=\"navigateButton && !disabled && this.banners && this.bannersListRef.length + this.banners.length > 1\"\n tuiTheme=\"light\"\n class=\"flex items-center\"\n>\n <button\n tuiIconButton\n iconStart=\"@tui.chevron-left\"\n size=\"m\"\n [style.border-radius.%]=\"100\"\n appearance=\"flat\"\n (click)=\"onPreviousBanner()\"\n class=\"!absolute left-2\"\n ></button>\n <button\n tuiIconButton\n iconStart=\"@tui.chevron-right\"\n size=\"m\"\n [style.border-radius.%]=\"100\"\n appearance=\"flat\"\n (click)=\"onNextBanner()\"\n class=\"!absolute right-2\"\n ></button>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { WaIntersectionObserver } from '@ng-web-apis/intersection-observer';\nimport { TuiLet } from '@taiga-ui/cdk';\nimport { TuiButton, TuiLoader } from '@taiga-ui/core';\nimport { TuiCarousel } from '@taiga-ui/kit';\n\nimport { ScBannerComponent } from './sc-banner.component';\n\n/**\n * Модуль баннеров.\n */\n@NgModule({\n declarations: [ScBannerComponent],\n imports: [CommonModule, RouterModule, TuiButton, ...TuiCarousel, TuiLoader, ...WaIntersectionObserver, TuiLet],\n exports: [ScBannerComponent],\n})\nexport class ScBannerModule {}\n","/* eslint-disable @typescript-eslint/no-explicit-any,class-methods-use-this,lodash/prefer-some,lodash/prefer-lodash-method,no-param-reassign */\n\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, EventEmitter, Inject, inject, Input, OnInit, Output } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { IS_RUNNING_ON_TERMINAL, SC_URLS, ScCategory, ScFavoriteService, ScITerminalProvider, ScIUrls, TERMINAL_PROVIDERS } from '@snabcentr/client-core';\nimport { TUI_IS_MOBILE, tuiPure } from '@taiga-ui/cdk';\nimport { filter, tap } from 'rxjs';\n\n/**\n * Компонент списка категорий.\n */\n@Component({\n selector: 'sc-categories-list',\n templateUrl: './sc-categories-list.component.html',\n providers: [TERMINAL_PROVIDERS],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScCategoriesListComponent<T extends object> implements OnInit {\n /**\n * Список категорий.\n */\n @Input()\n public categories: T[] | undefined | null;\n\n /**\n * Признак того, отображается этот компонент на мобильном устройстве или нет.\n */\n public readonly isMobile: boolean = inject(TUI_IS_MOBILE);\n\n /**\n * Событие нажатия на категорию.\n */\n @Output()\n public clickCategoryEvent: EventEmitter<T> = new EventEmitter<T>();\n\n /**\n * Ссылка для автоматического управления уничтожением зависимостей.\n */\n private destroyRef: DestroyRef = inject(DestroyRef);\n\n /**\n * Инициализирует экземпляр класса {@link ScCategoriesListComponent}.\n *\n * @param urls объект информации о базовом списке ссылок приложения.\n * @param terminal Данные о запуске приложения на терминале.\n * @param favoriteService Сервис для работы с корзиной.\n * @param cdr Объект для работы с обнаружением изменений.\n */\n public constructor(\n @Inject(SC_URLS)\n private readonly urls: ScIUrls,\n @Inject(IS_RUNNING_ON_TERMINAL)\n public readonly terminal: ScITerminalProvider,\n private readonly favoriteService: ScFavoriteService,\n private readonly cdr: ChangeDetectorRef\n ) {}\n\n /** @inheritDoc */\n public ngOnInit(): void {\n this.favoriteService.categories$\n .pipe(\n filter(() => !!this.categories && this.categories.length > 0 && 'id' in this.categories[0]),\n tap((categories) => {\n (this.categories as ScCategory[]).forEach((category) => {\n category.isFavorite = categories.findIndex((item) => category.id === item.id) !== -1;\n });\n }),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(() => {\n this.cdr.markForCheck();\n });\n }\n\n /**\n * Возвращает путь до изображения на сервере.\n *\n * @param imgPath путь, где хранится изображение.\n */\n public getCategoryImage(imgPath: string): string {\n return `${this.urls.imgServerUrl}/${imgPath}`;\n }\n\n /**\n * Проверяет наличие хотя бы одного изображения.\n *\n * @param categories Список категорий.\n */\n @tuiPure\n public checkImagesExists(categories: any[]): boolean {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return categories.some((item) => item.properties?.image);\n }\n}\n","<div\n [ngClass]=\"{ '!flex !flex-col': terminal.isRunningOnTerminal }\"\n class=\"grid grid-cols-[repeat(auto-fill,minmax(21rem,1fr))] gap-x-8 gap-y-2\"\n>\n <ng-container *ngIf=\"categories; else categoriesSkeleton\">\n <button\n *ngFor=\"let item of $any(categories)\"\n class=\"group flex h-11 items-center gap-2 rounded-xl bg-tui-base-02 px-3 py-1.5 text-left ring-tui-primary duration-150 hover-hover:hover:ring-2 hover-none:active:ring-2\"\n (click)=\"clickCategoryEvent.emit(item)\"\n >\n <img\n *ngIf=\"item.properties?.image as image\"\n [src]=\"getCategoryImage(image)\"\n [alt]=\"item.name\"\n class=\"size-8 rounded bg-tui-base-03 object-cover\"\n />\n\n <tui-icon\n *ngIf=\"!item.properties?.image && checkImagesExists(categories)\"\n icon=\"@tui.camera-off\"\n class=\"!h-8 !w-8 rounded bg-tui-base-03 text-tui-base-05\"\n ></tui-icon>\n <div class=\"flex grow flex-col truncate\">\n <div class=\"flex grow truncate\">\n <p class=\"truncate text-base font-bold\">{{ item.name }}</p>\n <tui-icon\n *ngIf=\"item.isFavorite\"\n background=\"@tui.bookmark-filled\"\n icon=\"@tui.bookmark\"\n class=\"mr-auto bg-tui-primary !text-sm text-tui-primary\"\n ></tui-icon>\n </div>\n <p\n *ngIf=\"item.m2Price as m2Price\"\n class=\"text-xs font-medium text-tui-text-02\"\n >\n Средняя стоимость <span [innerHTML]=\"m2Price\"></span>\n </p>\n </div>\n\n <tui-icon\n icon=\"@tui.chevron-right\"\n class=\"duration-150 hover-hover:group-hover:text-tui-primary hover-none:group-active:text-tui-primary\"\n ></tui-icon>\n </button>\n </ng-container>\n</div>\n\n<ng-template #categoriesSkeleton>\n <button\n *tuiRepeatTimes=\"let index of isMobile ? 3 : 6\"\n class=\"group flex h-11 items-center gap-2 rounded-xl bg-tui-base-02 px-3 py-1.5 text-left ring-tui-base-05 duration-150 hover-hover:hover:ring-2 hover-none:active:ring-2\"\n >\n <div class=\"tui-skeleton size-8\"></div>\n <div class=\"tui-skeleton h-4 grow\"></div>\n <tui-icon\n icon=\"@tui.chevron-right\"\n class=\"tui-skeleton duration-150 hover-hover:group-hover:text-tui-primary hover-none:group-active:text-tui-primary\"\n ></tui-icon>\n </button>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\n/**\n * Компонент кнопки избранных товаров и категорий.\n */\n@Component({\n selector: 'sc-favorite-btn',\n templateUrl: './sc-favorite-btn.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScFavoriteBtnComponent {\n /**\n * Событие нажатия на кнопку.\n */\n @Output()\n public clickEvent: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Признак наличия товара или категории в избранных.\n */\n @Input()\n public isFavorite: boolean = false;\n\n /**\n * Признак, что необходимо отобразить загрузку на кнопке.\n */\n @Input()\n public showLoader: boolean = false;\n\n /**\n * Признак, что кнопка деактивирована.\n */\n @Input()\n public disabled: boolean = false;\n}\n","<button\n tuiIconButton\n (click)=\"clickEvent.emit()\"\n [disabled]=\"disabled\"\n [loading]=\"showLoader\"\n appearance=\"flat\"\n size=\"s\"\n>\n <tui-icon\n class=\"text-tui-primary\"\n [icon]=\"isFavorite ? '@tui.bookmark-filled' : '@tui.bookmark'\"\n ></tui-icon>\n</button>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Inject,\n Input,\n Output,\n Renderer2,\n ViewChild\n} from '@angular/core';\nimport { SC_PATH_IMAGE_NOT_FOUND, SC_URLS, ScAuthService, ScCategory, ScIUrls } from '@snabcentr/client-core';\nimport { TuiSizeS } from '@taiga-ui/core';\nimport { Observable } from 'rxjs';\n\n/**\n * Карточка категории.\n */\n@Component({\n selector: 'sc-category-card',\n templateUrl: './sc-category-card.component.html',\n styleUrls: ['./sc-category-card.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScCategoryCardComponent {\n /**\n * Информация о категории.\n */\n @Input()\n public category?: ScCategory;\n\n /**\n * Ссылка на {@link HTMLElement} блока названия.\n */\n @ViewChild('name')\n private name: ElementRef<HTMLElement>;\n\n /**\n * Размер карточки категории.\n */\n @Input()\n @HostBinding('attr.data-size')\n public size: TuiSizeS = 'm';\n\n /**\n * Признак, что карточка является скелетоном.\n */\n @Input()\n public isSkeleton: boolean = false;\n\n /**\n * Признак, что необходимо отобразить лоадер для кнопки избранных товаров и категорий.\n */\n public favoriteShowLoader: boolean = false;\n\n /**\n * {@link Observable} изменения статуса авторизации.\n */\n public readonly authStatus$: Observable<boolean> = this.authService.getAuthChange();\n\n /**\n * Признак что категория имеет поведение наведения и скрытия названия.\n */\n @Input()\n public isHovered: boolean = false;\n\n /**\n * Событие нажатия на карточку категории.\n */\n @Output()\n public clickOnCardEvent: EventEmitter<ScCategory> = new EventEmitter<ScCategory>();\n\n /**\n * Событие нажатия на кнопку избранной категории.\n */\n @Output()\n public clickOnFavoriteEvent: EventEmitter<ScCategory> = new EventEmitter<ScCategory>();\n\n /**\n * Инициализирует экземпляр класса {@link CategoryCardComponent}.\n *\n * @param urls Список ссылок на разделы backend'a.\n * @param renderer Экземпляр базового класса для реализации пользовательского рендеринга.\n * @param pathImageNotFound Путь до изображения 'Товар не найден'.\n */\n public constructor(\n @Inject(SC_URLS) private readonly urls: ScIUrls,\n private renderer: Renderer2,\n @Inject(SC_PATH_IMAGE_NOT_FOUND) private readonly pathImageNotFound: string,\n private readonly authService: ScAuthService,\n private readonly cdr: ChangeDetectorRef\n ) {}\n\n /**\n * Возвращает путь к изображению категории. Если путь отсутствует, то вернёт изображение по-умолчанию (\"product_not_found\").\n *\n * @param category Информация о категории.\n */\n public getCategoryImgURL(category: ScCategory): string {\n return category.properties?.image ? this.urls.imgServerUrl + '/' + category.properties?.image : this.pathImageNotFound;\n }\n\n /**\n * Обработчик события mousemove.\n */\n @HostListener('mousemove')\n private moveEnterHandler(): void {\n if (this.isHovered) {\n this.name.nativeElement.style.maxHeight = `${this.name.nativeElement.scrollHeight / 16}rem`;\n }\n }\n\n /**\n * Обработчик события mouseleave.\n */\n @HostListener('mouseleave')\n private mouseLeaveHandler(): void {\n if (this.isHovered) {\n this.renderer.setStyle(this.name.nativeElement, 'maxHeight', null);\n }\n }\n\n /**\n * Устанавливает компонент в очередь на обновление.\n */\n public markForCheck(): void {\n this.cdr.markForCheck();\n }\n}\n","<div class=\"relative group\">\n <button\n (click)=\"clickOnCardEvent.emit(category)\"\n [class.pointer-events-none]=\"!category || isSkeleton\"\n class=\"category-btn flex flex-col relative rounded-tui-radius-m overflow-hidden shadow-sc-2\"\n >\n <div class=\"img-wrapper w-full grow bg-tui-base-02 overflow-hidden\">\n <img *ngIf=\"category && !isSkeleton\" [src]=\"getCategoryImgURL(category)\" [alt]=\"category.name\" class=\"w-full\" />\n </div>\n <div #name [attr.data-is-hovered]=\"!isHovered\" class=\"name grid items-center justify-center font-bold bg-white w-full overflow-hidden shrink-0 duration-300\">\n <span *ngIf=\"category && !isSkeleton; else skeletonName\">{{ category.name }}</span>\n <ng-template #skeletonName>\n <div class=\"skeleton-name bg-tui-base-02 rounded-tui-radius-s\"></div>\n </ng-template>\n </div>\n </button>\n <sc-favorite-btn\n *ngIf=\"category && !isSkeleton && (authStatus$ | async)\"\n [showLoader]=\"favoriteShowLoader\"\n [isFavorite]=\"category.isFavorite\"\n (clickEvent)=\"clickOnFavoriteEvent.emit()\"\n class=\"absolute left-1 top-1\"\n ></sc-favorite-btn>\n</div>\n","/* eslint-disable @typescript-eslint/dot-notation */\n\nimport { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, HostListener, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { TuiSizeL, TuiSizeM, TuiSizeS } from '@taiga-ui/core';\nimport { AbstractTuiNullableControl, TuiInputNumberComponent } from '@taiga-ui/legacy';\n\nimport { stepValidator } from '../../validators';\n\n/**\n * Компонент поля ввода количества.\n */\n@Component({\n selector: 'sc-input-quantity',\n templateUrl: './sc-input-quantity.component.html',\n styleUrls: ['./sc-input-quantity.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScInputQuantityComponent extends AbstractTuiNullableControl<number> implements OnInit {\n /**\n * Компонент поля ввода.\n */\n @ViewChild(TuiInputNumberComponent)\n private readonly numberInput?: TuiInputNumberComponent;\n\n /**\n * Шаг увеличения количества. Отвечает за проверку кратности ввода.\n */\n @Input()\n public step: number = 1;\n\n /**\n * Признак, что необходимо отобразить {@link TuiLoaderComponent} над компонентом.\n */\n @Input()\n public showLoader: boolean = false;\n\n /**\n * Признак, что необходимо отобразить кнопку очистки поля ввода.\n */\n @Input()\n public showCross: boolean = true;\n\n /**\n * Признак, что необходимо игнорировать валидацию кратности и минимального количества.\n */\n @Input()\n public ignoreStepValidators: boolean = false;\n\n /**\n * Формат внешнего вида компонента.\n */\n @Input()\n @HostBinding('attr.data-appearance')\n public appearance: 'primary' | 'secondary' = 'primary';\n\n /**\n * Признак, что компонент деактивирован.\n */\n @Input()\n @HostBinding('attr.data-disabled')\n public isDisabled: boolean = false;\n\n /**\n * Размер компонента.\n */\n @Input()\n @HostBinding('attr.data-size')\n public size: TuiSizeL | TuiSizeM | TuiSizeS = 'm';\n\n /**\n * Событие нажатия на кнопку \"Очистить\".\n */\n @Output()\n public clickClearEvent: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Возвращает элемент, который может быть сфокусирован.\n */\n public get nativeFocusableElement(): HTMLInputElement | null | undefined {\n return this.numberInput?.nativeFocusableElement;\n }\n\n /** @inheritDoc */\n public get focused(): boolean {\n return !!this.numberInput?.focused;\n }\n\n /**\n * Элемент формы ввода количества.\n */\n public get formControl(): FormControl | null {\n return this.control as FormControl | null;\n }\n\n /** @inheritDoc */\n public override ngOnInit(): void {\n if (this.control) {\n this.control.setValidators(stepValidator(this.ignoreStepValidators ? 1 : this.step));\n }\n }\n\n /**\n * Обработчик события нажатия стрелок клавиатуры.\n *\n * @param step Шаг изменения количества.\n */\n @HostListener('keydown.arrowDown', ['-step'])\n @HostListener('keydown.arrowUp', ['step'])\n public onArrow(step: number | null): void {\n if (!step) {\n return;\n }\n\n if (step > 0) {\n this.incident();\n } else {\n this.decrement();\n }\n }\n\n /**\n * Увеличивает значение в поле ввода на 1 шаг. Если число в поле ввода не кратно шагу, то увеличит до ближайшего кратного значения.\n *\n * @param checkUpdateOn Признак, что нужно проверить `updateOn` свойство `formControl`.\n */\n public incident(checkUpdateOn = false): void {\n this.numberInput?.['onArrow'](this.step - ((this.numberInput.value ?? 0) % this.step));\n\n // eslint-disable-next-line no-underscore-dangle, @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n if (checkUpdateOn && (this.formControl as any)?._updateOn === 'blur') {\n this.control?.setValue(this.numberInput?.value);\n }\n }\n\n /**\n * Уменьшает значение в поле ввода на 1 шаг. Если число в поле ввода не кратно шагу, то уменьшит до ближайшего кратного значения.\n *\n * @param checkUpdateOn Признак, что нужно проверить `updateOn` свойство `formControl`.\n */\n public decrement(checkUpdateOn = false): void {\n this.numberInput?.['onArrow'](-((this.numberInput.value ?? 0) % this.step) || -this.step);\n\n // eslint-disable-next-line no-underscore-dangle, @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n if (checkUpdateOn && (this.formControl as any)?._updateOn === 'blur') {\n this.control?.setValue(this.numberInput?.value);\n }\n }\n\n /**\n * Очищает поля ввода.\n */\n public clear(): void {\n this.control?.patchValue(null);\n this.clickClearEvent.emit();\n }\n}\n","<tui-loader\n *ngIf=\"formControl\"\n class=\"w-full\"\n [overlay]=\"true\"\n [showLoader]=\"showLoader\"\n [size]=\"size\"\n>\n <div class=\"flex items-center gap-1 text-center\">\n <div class=\"field-with-button flex grow rounded-xl\">\n <button\n tuiIconButton\n [appearance]=\"appearance\"\n [disabled]=\"!numberInput['canDecrement']\"\n [size]=\"size\"\n (click.prevent)=\"decrement(true)\"\n >\n <tui-icon icon=\"@tui.minus\"></tui-icon>\n </button>\n <tui-input-number\n #numberInput\n [formControl]=\"formControl\"\n [tuiHint]=\"([] | tuiFieldError | async)?.message\"\n [tuiTextfieldLabelOutside]=\"true\"\n [min]=\"ignoreStepValidators ? 1 : step\"\n [tuiTextfieldSize]=\"size\"\n [required]=\"true\"\n [style.text-align]=\"'center'\"\n [style.font-weight]=\"700\"\n (focusin)=\"$any($event.target).select()\"\n oncontextmenu=\"return false;\"\n class=\"grow\"\n >\n </tui-input-number>\n <button\n tuiIconButton\n [appearance]=\"appearance\"\n [size]=\"size\"\n [disabled]=\"!numberInput['canIncrement']\"\n (click.prevent)=\"incident(true)\"\n (mousedown.prevent)=\"numberInput.nativeFocusableElement?.focus()\"\n >\n <tui-icon icon=\"@tui.plus\"></tui-icon>\n </button>\n </div>\n <button\n *ngIf=\"showCross\"\n tuiIconButton\n [appearance]=\"appearance\"\n [size]=\"size\"\n [disabled]=\"!numberInput['canIncrement']\"\n (click.prevent)=\"clear()\"\n >\n <tui-icon icon=\"@tui.x\"></tui-icon>\n </button>\n </div>\n</tui-loader>\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { ScIWarehouseStockCount, ScProduct, ScIWarehouse, ScWarehouseService } from '@snabcentr/client-core';\nimport { Observable, map, switchMap } from 'rxjs';\n\n/**\n * Компонент информации о наличии товара на складе.\n */\n@Component({\n selector: 'sc-price-warehouse-stock',\n templateUrl: './sc-price-warehouse-stock.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrls: ['sc-price-warehouse-stock.component.scss']\n})\nexport class ScPriceWarehouseStockComponent implements OnInit {\n /**\n * Строка классов для свойств статусов.\n */\n @Input() public classList: string;\n\n /**\n * Информация о товаре/услуге.\n */\n @Input() public product: ScProduct;\n\n /**\n * Признак, что необходимо отобразить подсказку по складам.\n */\n @Input() public withStockHint: boolean = true;\n\n /**\n * Признак, что необходимо отобразить список остатков по складам при выбранном основном складе.\n */\n @Input() public fromMain: boolean = true;\n\n /**\n * {@link Observable} изменения выбранного склада.\n */\n public selectedWarehouse$: Observable<ScIWarehouse | null>;\n\n /**\n * {@link Observable} изменения списка складов.\n */\n public warehousesList$?: Observable<{ sc: ScIWarehouseStockCount; w: ScIWarehouse | undefined }[] | undefined>;\n\n /**\n * Инициализирует экземпляр класса {@link ScPriceWarehouseStockComponent}.\n *\n * @param warehouseService Сервис для работы со складами.\n */\n public constructor(private readonly warehouseService: ScWarehouseService) {}\n\n /** @inheritDoc */\n public ngOnInit(): void {\n this.selectedWarehouse$ = this.fromMain ? this.warehouseService.getCatalogWarehouseChange$() : this.warehouseService.getWarehouseSelectChange$();\n\n this.warehousesList$ = this.selectedWarehouse$.pipe(\n switchMap((warehouse) =>\n this.warehouseService.getWarehouses$().pipe(\n map((warehouses: ScIWarehouse[]) => this.product.stockCount?.map((sc) => ({ w: warehouses.find((w) => w.id === sc.warehouseId), sc: sc }))),\n map((items) => items?.sort((item) => (item.w?.id === warehouse?.id ? -1 : 1)))\n )\n )\n );\n }\n}\n","<ng-container *ngIf=\"product\">\n <ng-container>\n <div *ngIf=\"selectedWarehouse$ | async as warehouseSelect\" class=\"flex items-center gap-1\">\n <span *ngIf=\"product.getNotStockMessage(warehouseSelect) as message\" class=\"text-xs min-w-2/5 text-tui-error-fill\" [ngClass]=\"classList\"> {{ message }} </span>\n <span *ngIf=\"product.isWarehouseStockExist(warehouseSelect.id)\" class=\"text-xs min-w-2/5 text-tui-success-fill\" [ngClass]=\"classList\">\n В наличии<ng-container *ngIf=\"product.getWarehouseStockCount(warehouseSelect.id) as count\"\n >:\n <span class=\"whitespace-nowrap\">{{ count }} {{ product.quantityUnit }}</span>\n </ng-container>\n </span>\n <span *ngIf=\"product.onOrder\" class=\"text-xs min-w-2/5 text-sc-yellow\" [ngClass]=\"classList\">Под заказ</span>\n\n <tui-icon \n *ngIf=\"withStockHint && (warehousesList$ | async)?.length\"\n icon=\"@tui.info\"\n [tuiHint]=\"stockHint\"\n [tuiHintShowDelay]=\"100\"\n tuiHintDirection=\"top\"\n class=\"!text-xs !h-3\"\n ></tui-icon>\n </div>\n </ng-container>\n</ng-container>\n\n<ng-template #stockHint>\n <table *ngIf=\"selectedWarehouse$ | async as warehouseSelect\" class=\"text-xs table-auto\" [ngClass]=\"classList\">\n <tbody>\n <tr *ngFor=\"let item of warehousesList$ | async\" class=\"border-b\">\n <ng-container>\n <td class=\"px-1\">{{ item.w?.name }}:</td>\n <td class=\"px-1\">{{ item.sc.count ? item.sc.count + ' ' + product.quantityUnit : 'В наличии' }}</td>\n </ng-container>\n </tr>\n </tbody>\n </table>\n</ng-template>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, HostBinding, inject, Input } from '@angular/core';\nimport { SEARCH_TERM_PROVIDERS } from '@snabcentr/client-core';\nimport { TUI_IS_MOBILE } from '@taiga-ui/cdk';\nimport { TuiSizeS } from '@taiga-ui/core';\n\nimport { AbstractScPriceCard } from '../../directives';\n\n/**\n * Компонент карточки товара.\n */\n@Component({\n selector: 'sc-price-card',\n templateUrl: './sc-price-card.component.html',\n styleUrls: ['./sc-price-card.component.scss'],\n providers: [SEARCH_TERM_PROVIDERS],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScPriceCardComponent extends AbstractScPriceCard {\n /**\n * Размер компонента.\n */\n @Input()\n @HostBinding('attr.data-size')\n public size: TuiSizeS = 'm';\n\n /**\n * Признак того, что этот компонент отображается на мобильном устройстве.\n */\n @HostBinding('attr.is_mobile')\n protected readonly isMobile: boolean = inject(TUI_IS_MOBILE);\n\n /**\n * Инициирует экземпляр класса {@link ScPriceCardComponent}.\n *\n * @param cdr Объект для работы с обнаружением изменений.\n */\n public constructor(private readonly cdr: ChangeDetectorRef) {\n super();\n }\n\n /**\n * Признак того, что компонент находится в корзине.\n */\n @HostBinding('attr.is_in_cart')\n get isInCart() {\n return Boolean(this.cartItem);\n }\n\n /**\n * Устанавливает компонент в очередь на обновление.\n */\n public markForCheck(): void {\n this.cdr.markForCheck();\n }\n}\n","<div\n *ngIf=\"product; else skeleton\"\n class=\"card-wrapper relative flex w-auto min-w-40 flex-col rounded-xl shadow-md\"\n>\n <div class=\"flex grow flex-col justify-center overflow-hidden rounded-xl p-2\">\n <img\n (click)=\"clickCardEvent.emit()\"\n [src]=\"getCardImagePreview()\"\n [alt]=\"product.name\"\n class=\"max-h-full w-full rounded-xl object-cover\"\n />\n <sc-favorite-btn\n *ngIf=\"authStatus$ | async\"\n class=\"absolute left-2 top-2\"\n (clickEvent)=\"clickFavoriteEvent.emit()\"\n [showLoader]=\"favoriteShowLoader\"\n [isFavorite]=\"product.isFavorite\"\n [disabled]=\"!!product.primaryCategory?.isFavorite\"\n ></sc-favorite-btn>\n <div class=\"absolute right-2 top-2 m-1 flex gap-2\">\n <tui-icon \n *ngIf=\"product.isPreviouslyOrdered\"\n icon=\"@tui.star\"\n class=\"!size-6 rounded-lg !fill-white text-tui-negative\"\n ></tui-icon>\n <tui-icon \n *ngIf=\"product.cartItem\"\n icon=\"@tui.check\"\n class=\"!size-6 rounded-lg bg-tui-primary text-white\"\n ></tui-icon>\n </div>\n </div>\n <div class=\"p-2\">\n <tui-elastic-container class=\"shrink-0\">\n <a\n tuiLink\n class=\"name\"\n \n [tuiHighlight]=\"(search$ | async) ?? ''\"\n (click)=\"clickCardEvent.emit()\"\n >\n {{ product.name }}\n </a>\n </tui-elastic-container>\n <tui-elastic-container class=\"shrink-0\">\n <p\n *ngIf=\"product?.pack\"\n class=\"text-tui-text-02\"\n >\n Норма упаковки: {{ product.pack }}\n <tui-svg\n *ngIf=\"product.ignoreMinCountCheck\"\n src=\"tuiIconPackage\"\n [tuiHint]=\"minCountHint\"\n [tuiHintShowDelay]=\"100\"\n tuiHintDirection=\"top\"\n ></tui-svg>\n <ng-template #minCountHint>\n Доступен заказ <br />\n произвольного <br />\n количества\n </ng-template>\n </p>\n <p\n [tuiHighlight]=\"(search$ | async) ?? ''\"\n class=\"code text-tui-text-02\"\n >\n Артикул: {{ product.code }}\n </p>\n\n <a\n tuiLink\n *ngIf=\"!isMobile && (authStatus$ | async) && product?.costDate\"\n \n aria-disabled=\"true\"\n class=\"history\"\n (click)=\"clickPriceHistoryEvent.emit()\"\n >\n Дата: {{ product.costDate }}\n </a>\n </tui-elastic-container>\n <div\n *ngIf=\"warehouseSelect$ | async as warehouseSelect\"\n class=\"flex flex-col\"\n >\n <span\n *ngIf=\"product.discount && !isMobile\"\n class=\"flex items-center text-tui-text-02\"\n >\n <span class=\"line-through\">{{ product.discountCostString }}</span> &nbsp;\n <span class=\"font-bold text-tui-success-fill\"> -{{ product.discount.percent }}% </span>\n <tui-icon \n icon=\"@tui.info\"\n [tuiHint]=\"discountHint\"\n [tuiHintShowDelay]=\"100\"\n tuiHintDirection=\"top\"\n class=\"!h-4 text-black\"\n ></tui-icon>\n <ng-template #discountHint>\n <div class=\"font-bold\">{{ product.discount.name }}</div>\n <div *ngIf=\"product.discount.expiredAt as expiredAt\">Дата окончания: {{ expiredAt }}</div>\n </ng-template>\n </span>\n <span\n [class.text-tui-text-02]=\"!product.isWarehouseStockExist(warehouseSelect.id)\"\n class=\"cost font-bold\"\n >{{ product.costRubString }}</span\n >\n <span\n *ngIf=\"!product.priceInRub\"\n class=\"hidden font-bold text-tui-text-02 group-hover:block\"\n >{{ product.costString }}</span\n >\n <sc-price-warehouse-stock [product]=\"product\"></sc-price-warehouse-stock>\n </div>\n <div class=\"cart-actions flex shrink-0 overflow-hidden\">\n <button\n *ngIf=\"!showQuantityControl\"\n tuiButton\n (click)=\"clickAddToCartEvent.emit(product)\"\n [loading]=\"quantityShowLoader\"\n [size]=\"size === 's' ? 'xs' : 's'\"\n class=\"mt-2 grow\"\n iconStart=\"@tui.shopping-cart\"\n >\n В корзину\n </button>\n <sc-input-quantity\n #inputQuantity\n *ngIf=\"showQuantityControl\"\n [formControl]=\"quantityControl\"\n [size]=\"size\"\n [step]=\"unitsHelper.productMultiplicity(product)\"\n [ignoreStepValidators]=\"product.ignoreMinCountCheck\"\n [showLoader]=\"quantityShowLoader\"\n (clickClearEvent)=\"clickClearEvent.emit(cartItem)\"\n class=\"mt-2 w-full\"\n (keydown.enter)=\"inputQuantity.nativeFocusableElement?.blur()\"\n ></sc-input-quantity>\n </div>\n </div>\n</div>\n\n<ng-template #skeleton>\n <div class=\"card-wrapper flex flex-col overflow-hidden rounded-xl bg-white shadow-sc-1\">\n <!-- Изображение товара -->\n <div class=\"h-3/5 w-full rounded-t bg-tui-base-02\"></div>\n <!-- Краткая информация о товаре -->\n <div class=\"flex grow flex-col gap-2.5 rounded-b bg-white p-5\">\n <div class=\"h-4 w-full rounded bg-tui-base-02\"></div>\n <div class=\"h-4 w-3/5 rounded bg-tui-base-02\"></div>\n <div class=\"h-4 w-full rounded bg-tui-base-02\"></div>\n </div>\n </div>\n</ng-template>\n","/* eslint-disable class-methods-use-this,lodash/prefer-lodash-method */\n\nimport { ChangeDetectionStrategy, Component, Inject, inject, Input, OnInit, Optional } from '@angular/core';\nimport { ScCatalogService, ScProduct, ScUserMetrikaGoalsEnum, ScUserMetrikaService } from '@snabcentr/client-core';\nimport { TUI_IS_MOBILE, TuiDay, TuiDayRange, tuiIsFalsy, tuiIsPresent, TuiMonth, tuiPure, TuiStringHandler } from '@taiga-ui/cdk';\nimport { TUI_MONTHS, TuiDialogContext } from '@taiga-ui/core';\nimport { POLYMORPHEUS_CONTEXT } from '@taiga-ui/polymorpheus';\nimport { filter, map, Observable, shareReplay, startWith, tap } from 'rxjs';\n\n/**\n * График истории цен товара или услуги.\n */\n@Component({\n selector: 'sc-price-history',\n templateUrl: './sc-price-history.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScPriceHistoryComponent implements OnInit {\n /**\n * {@link Observable} временного промежутка истории цен.\n */\n public range$: Observable<TuiDayRange>;\n\n /**\n * Товар или услуга, для которого необходимо отобразить историю цен.\n */\n @Input() public product: ScProduct;\n\n /**\n * {@link Observable} истории цен.\n */\n public history$?: Observable<ReadonlyArray<[TuiDay, number]> | null>;\n\n /**\n * {@link Observable} изменения состояния загрузки данных истории цен.\n */\n public loadingHistory$?: Observable<boolean>;\n\n /**\n * Максимальная цена товара.\n */\n public priceInfo$?: Observable<{\n min: number;\n max: number;\n }>;\n\n /**\n * Признак того, отображается этот компонент на мобильном устройстве или нет.\n */\n public readonly isMobile: boolean = inject(TUI_IS_MOBILE);\n\n /**\n * {@link Observable} функция для преобразования значения number в строку в подсказке по оси X.\n */\n public readonly xStringify$: Observable<TuiStringHandler<TuiDay>> = this.months$.pipe(\n map(\n (months) =>\n ({ month, day }) =>\n // eslint-disable-next-line security/detect-object-injection\n `${months[month]}, ${day}`\n )\n );\n\n /**\n * Относительные отступы от верхнего и нижнего края в процентах.\n */\n public readonly paddingPercent: number = 10;\n\n /**\n * Функция для преобразования значения number в строку в подсказке по оси Y.\n *\n * @param value Значение оси Y.\n */\n public readonly yStringify: TuiStringHandler<number> = (value) => `${value.toLocaleString('ru-RU')} ₽`;\n\n /**\n * Инициализирует экземпляр класса {@link ScPriceHistoryComponent}.\n *\n * @param catalogService Сервис для работы с каталогом.\n * @param months$ Перечисление месяцев.\n * @param userMetrikaService Сервис для сбора метрик о действиях пользователей.\n * @param context Контекст диалогового окна, в котором открыт компонент.\n */\n public constructor(\n private readonly catalogService: ScCatalogService,\n @Inject(TUI_MONTHS) private readonly months$: Observable<readonly string[]>,\n private readonly userMetrikaService: ScUserMetrikaService,\n @Optional()\n @Inject(POLYMORPHEUS_CONTEXT)\n private readonly context?: TuiDialogContext<void, { product: ScProduct }>\n ) {\n if (context) {\n this.product = context.data.product;\n }\n }\n\n /** @inheritDoc */\n public ngOnInit(): void {\n this.history$ = this.catalogService.getPriceHistory$(this.product).pipe(\n filter(tuiIsPresent),\n map((history) =>\n Object.keys(history)\n .map((item): [TuiDay, number] => [TuiDay.normalizeParse(item, 'DMY'), history[String(item)].cost])\n .sort((a, b) => (a[0] > b[0] ? 1 : -1))\n ),\n startWith(null),\n shareReplay({ bufferSize: 1, refCount: true })\n );\n\n this.loadingHistory$ = this.history$.pipe(map(tuiIsFalsy));\n\n this.priceInfo$ = this.history$.pipe(\n filter(tuiIsPresent),\n tap(() => {\n this.userMetrikaService.emitUserMetrikaEvent({\n target: ScUserMetrikaGoalsEnum.productPriceHistoryShow,\n params: {\n product_id: this.product.id,\n },\n });\n }),\n filter((history) => history.length > 1),\n map((history) => history.map((item) => item[1])),\n map((values) => ({\n min: Math.min(...values),\n max: Math.max(...values),\n }))\n );\n\n this.range$ = this.history$.pipe(\n filter(tuiIsPresent),\n filter((history) => history.length > 1),\n map((value: ReadonlyArray<[TuiDay, number]>) => ({ from: value.at(0)?.[0], to: value.at(-1)?.[0] })),\n filter((range): range is { from: TuiDay; to: TuiDay } => !!range.from && !!range.to),\n map((range) => new TuiDayRange(range.from, range.to))\n );\n }\n\n /**\n * Вычисляет подписи даты к оси X.\n *\n * @param param0 {@link TuiDayRange} Временной промежуток истории цен.\n * @param param0.from {@link TuiDay} Дата начала истории цен.\n * @param param0.to {@link TuiDay} Дата конца истории цен.\n */\n @tuiPure\n public computeLabels$({ from, to }: TuiDayRange): Observable<readonly string[]> {\n return this.months$.pipe(\n map((months) => [\n ...Array.from({ length: TuiMonth.lengthBetween(from, to) + 1 }, (_, index) => {\n const previousYear = from.append({ month: index - 1 }).year; // Начальный год\n const currentYear = from.append({ month: index }).year;\n\n return `${this.isMobile || previousYear === currentYear ? '' : currentYear} ${months[from.append({ month: index }).month]}`;\n }),\n '',\n ])\n );\n }\n\n /**\n * Вычисляет данные для отображения на графике.\n *\n * @param param0 {@link TuiDayRange} Временной промежуток истории цен.\n * @param param0.from {@link TuiDay} Дата начала истории цен.\n * @param param0.to {@link TuiDay} Дата конца истории цен.\n * @param history История цен.\n */\n @tuiPure\n public computeValue({ from, to }: TuiDayRange, history: ReadonlyArray<[TuiDay, number]>): ReadonlyArray<[TuiDay, number]> {\n return (\n Array.from({ length: TuiDay.lengthBetween(from, to) + 1 })\n .fill(0)\n // eslint-disable-next-line unicorn/no-array-reduce\n .reduce<ReadonlyArray<[TuiDay, number]>>((array, _, index) => {\n const data = from.append({ day: index });\n return [\n ...array,\n [\n data,\n (history.find((valueHistory, indexHistory, arrayHistory) => data.daySame(valueHistory[0]) || data.dayBefore(arrayHistory[indexHistory + 1][0])) ??\n history[0])[1],\n ],\n ];\n }, [])\n );\n }\n}\n","<tui-loader [showLoader]=\"!!(loadingHistory$ | async)\"> </tui-loader>\n\n<div\n *ngIf=\"(loadingHistory$ | async) === false\"\n class=\"flex flex-col items-center\"\n>\n <ng-container *ngIf=\"priceInfo$ | async as priceInfo; else isNotExist\">\n <div class=\"w-174 mb-1 text-end text-lg font-bold\">от {{ priceInfo.min.toLocaleString() }} ₽ до {{ priceInfo.max.toLocaleString() }} ₽</div>\n\n <ng-container *ngIf=\"history$ | async as history\">\n <div\n *ngIf=\"range$ | async as range\"\n class=\"relative h-56 w-full p-5 text-tui-primary\"\n >\n <tui-axes\n *ngIf=\"computeLabels$(range) | async as labels\"\n class=\"h-full\"\n [axisXLabels]=\"labels\"\n [horizontalLines]=\"4\"\n [verticalLines]=\"labels.length\"\n >\n <ng-container *tuiLet=\"priceInfo.max - priceInfo.min as height\">\n <tui-line-days-chart\n *ngIf=\"(height / 100) * paddingPercent as padding\"\n [height]=\"height + (height / 100) * paddingPercent * 2\"\n [smoothingFactor]=\"10\"\n [y]=\"priceInfo.min - (height / 100) * paddingPercent\"\n [value]=\"computeValue(range, history)\"\n [xStringify]=\"xStringify$ | async\"\n [yStringify]=\"yStringify\"\n [hintContent]=\"hint\"\n class=\"chart\"\n ></tui-line-days-chart>\n </ng-container>\n </tui-axes>\n </div>\n </ng-container>\n </ng-container>\n <ng-template #isNotExist>\n <p class=\"text-base font-bold\">Цена на товар не изменялась</p>\n </ng-template>\n <ng-template\n #hint\n let-data\n >\n <div class=\"font-bold\">{{ data[1].toLocaleString() }} ₽</div>\n <div>{{ data[0] }}</div>\n </ng-template>\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Inject, inject } from '@angular/core';\nimport { SC_NEXT_PAGE_PAGINATION_CLICK, SC_PRODUCT_PAGINATION_OPTIONS, ScICategoryProductPaginationParams, ScIPaginationMeta, ScPaginationService } from '@snabcentr/client-core';\nimport { tuiIsFalsy, tuiIsPresent } from '@taiga-ui/cdk';\nimport { filter, map, Observable } from 'rxjs';\n\n/**\n * Компонент элементов управления пагинацией списка товаров.\n */\n@Component({\n selector: 'sc-price-list-pagination',\n templateUrl: './sc-price-list-pagination.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScPriceListPaginationComponent {\n /**\n * Сервис пагинации.\n */\n private readonly paginationService = inject<ScPaginationService<ScICategoryProductPaginationParams>>(ScPaginationService<ScICategoryProductPaginationParams>, {\n skipSelf: true,\n });\n\n /**\n * Дополнительные данные пагинации.\n */\n public meta$: Observable<ScIPaginationMeta> = this.paginationService.dataAccumulated$.pipe(\n filter(tuiIsPresent),\n map((pagination) => pagination.meta)\n );\n\n /**\n * Признак, что кнопка неактивна.\n */\n public disabled$: Observable<boolean> = this.paginationService.dataAccumulated$.pipe(map(tuiIsFalsy));\n\n /**\n * Инициализирует экземпляр класса {@link ScPriceListPaginationComponent}.\n *\n * @param nextPageClickEvent Событие нажатия на кнопку \"Показать следующие N позиций\".\n * @param options Значения пагинации списка товаров категории по умолчанию.\n */\n public constructor(\n @Inject(SC_NEXT_PAGE_PAGINATION_CLICK) public readonly nextPageClickEvent: EventEmitter<void>,\n @Inject(SC_PRODUCT_PAGINATION_OPTIONS) public readonly options: ScICategoryProductPaginationParams\n ) {}\n}\n","<ng-container *ngIf=\"meta$ | async as meta\">\n <button\n *ngIf=\"meta?.currentPage !== meta?.lastPage\"\n tuiButton\n (click)=\"nextPageClickEvent.emit()\"\n [disabled]=\"!!(disabled$ | async)\"\n appearance=\"secondary\"\n class=\"!font-bold\"\n >\n Показать ещё {{ options.perPage }} товаров\n </button>\n</ng-container>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\nimport { TuiAxes, TuiLineDaysChart, TuiLineDaysChartHint } from '@taiga-ui/addon-charts';\nimport { TuiLet, TuiRepeatTimes } from '@taiga-ui/cdk';\nimport { TuiButton, TuiHint, TuiIcon, TuiLabel, TuiLink, TuiLoader } from '@taiga-ui/core';\nimport { TuiButtonLoading, TuiElasticContainer, TuiFieldErrorPipe, TuiHighlight } from '@taiga-ui/kit';\nimport { TuiInputNumberModule, TuiIslandDirective, TuiTextfieldControllerModule } from '@taiga-ui/legacy';\n\nimport { ScCategoriesListComponent } from './categories-list/sc-categories-list.component';\nimport { ScCategoryCardComponent } from './category-card/sc-category-card.component';\nimport { ScInputQuantityComponent } from './input-quantity/sc-input-quantity.component';\nimport { ScPriceCardComponent } from './price-card/sc-price-card.component';\nimport { ScPriceHistoryComponent } from './price-history/sc-price-history.component';\nimport { ScPriceListPaginationComponent } from './price-list-pagination/sc-price-list-pagination.component';\nimport { ScPriceWarehouseStockComponent } from './price-warehouse-stock/sc-price-warehouse-stock.component';\nimport { ScFavoriteBtnComponent as ScFavoriteButtonComponent } from './sc-favorite-btn/sc-favorite-btn.component';\n\n/**\n * Модуль каталога.\n */\n@NgModule({\n declarations: [\n ScPriceListPaginationComponent,\n ScCategoryCardComponent,\n ScFavoriteButtonComponent,\n ScInputQuantityComponent,\n ScPriceCardComponent,\n ScPriceWarehouseStockComponent,\n ScPriceHistoryComponent,\n ScCategoriesListComponent,\n ],\n exports: [\n ScPriceListPaginationComponent,\n ScCategoryCardComponent,\n ScFavoriteButtonComponent,\n ScInputQuantityComponent,\n ScPriceCardComponent,\n ScPriceWarehouseStockComponent,\n ScPriceHistoryComponent,\n ScCategoriesListComponent,\n ],\n imports: [\n CommonModule,\n RouterModule,\n TuiButton,\n TuiIcon,\n TuiIslandDirective,\n TuiInputNumberModule,\n TuiLabel,\n TuiTextfieldControllerModule,\n FormsModule,\n ReactiveFormsModule,\n ...TuiHint,\n TuiFieldErrorPipe,\n TuiLoader,\n TuiLink,\n TuiElasticContainer,\n TuiLet,\n TuiRepeatTimes,\n TuiHighlight,\n TuiLineDaysChart,\n TuiLineDaysChartHint,\n TuiAxes,\n TuiButtonLoading,\n ],\n})\nexport class ScCatalogModule {}\n","/* eslint-disable no-underscore-dangle */\n\nimport { ChangeDetectionStrategy, Component, EventEmitter, Inject, Input, OnInit, Output, TemplateRef, ViewChild } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { SC_PATH_IMAGE_NOT_FOUND, SC_URLS, ScCartItem, ScIUrls, ScProduct, ScUnitsHelper } from '@snabcentr/client-core';\nimport { TuiDialogContext } from '@taiga-ui/core';\nimport { TuiPreviewDialogService } from '@taiga-ui/kit';\nimport { Observable, skip } from 'rxjs';\n\n/**\n * Компонент карточки элемента корзины.\n */\n@Component({\n selector: 'sc-cart-item-mobile',\n templateUrl: './sc-cart-item-mobile.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScCartItemMobileComponent implements OnInit {\n /**\n * Элемент корзины.\n */\n @Input()\n public set cartItem(data: ScCartItem | undefined) {\n this._cartItem = data;\n\n if (data) {\n this.quantityControl.patchValue(data.quantity);\n }\n }\n\n /**\n * Элемент корзины.\n */\n public get cartItem(): ScCartItem | undefined {\n return this._cartItem;\n }\n\n /**\n * Ссылка на представление спецификации.\n */\n @ViewChild('specificationPreview')\n private readonly specificationPreviewRef?: TemplateRef<TuiDialogContext>;\n\n /**\n * {@link FormControl} поля ввода количества товара в корзине.\n */\n public quantityControl: FormControl<number | null> = new FormControl<number | null>(0, { updateOn: 'blur' });\n\n /**\n * {@link Observable} изменения количества товара в корзине.\n */\n @Output()\n public quantityValueChanges: Observable<number | null> = this.quantityControl.valueChanges.pipe(skip(1));\n\n /**\n * Событие нажатия на кнопку \"Удалить из корзины\".\n */\n @Output()\n public clickDeleteEvent: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на кнопку \"Удалить из корзины\".\n */\n @Output()\n public clickSettingsEvent: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на карточку.\n */\n @Output()\n public clickCardEvent: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Элемент корзины.\n */\n private _cartItem?: ScCartItem;\n\n /**\n * Инициирует экземпляр класса {@link ScCartItemMobileComponent}.\n *\n * @param unitsHelper Экземпляр класса-помощника для работы со значениями единиц измерения товара.\n * @param previewDialogService Сервис диалогового окна предварительного просмотра.\n * @param urls Список ссылок на разделы backend'a.\n * @param pathImageNotFound Путь до изображения 'Товар не найден'.\n */\n public constructor(\n public readonly unitsHelper: ScUnitsHelper,\n @Inject(TuiPreviewDialogService)\n private readonly previewDialogService: TuiPreviewDialogService,\n @Inject(SC_URLS) private readonly urls: ScIUrls,\n @Inject(SC_PATH_IMAGE_NOT_FOUND) private readonly pathImageNotFound: string\n ) {}\n\n /**\n * Продукт элемента корзины.\n */\n public get product(): ScProduct | undefined {\n return this.cartItem?.product;\n }\n\n /** @inheritDoc */\n public ngOnInit(): void {\n this.quantityValueChanges = this.quantityControl.valueChanges;\n }\n\n /**\n * Отобразить спецификацию.\n */\n public showSpecification(): void {\n this.previewDialogService.open(this.specificationPreviewRef ?? '').subscribe();\n }\n\n /**\n * Возвращает ссылку на изображение карточки товара.\n */\n public getCardImage(): string {\n return this.product?.getImagePreview(this.urls.imgServerUrl) ?? this.urls.imgServerUrl + this.pathImageNotFound;\n }\n}\n","<ng-container *ngIf=\"cartItem && product; else skeleton\">\n <div class=\"flex min-w-72 gap-2 rounded-xl border border-tui-base-04 bg-white p-2 shadow-sc-2\">\n <div class=\"flex w-40 items-center\">\n <img\n (click)=\"clickCardEvent.emit()\"\n [src]=\"getCardImage()\"\n [alt]=\"product.name\"\n class=\"max-h-full w-full rounded-xl object-cover\"\n />\n </div>\n <div class=\"flex w-full flex-col items-center justify-between gap-2 sm:flex-row sm:gap-5\">\n <div class=\"flex max-w-full flex-col gap-1 self-start\">\n <a\n tuiLink\n (click)=\"clickCardEvent.emit()\"\n >\n <span class=\"font-bold\">{{ product.name }}</span>\n </a>\n\n <div class=\"flex w-full flex-wrap gap-x-2 gap-y-1 text-xs text-tui-base-05\">\n <p *ngIf=\"product.pack\">\n Норма упаковки: {{ product.pack }}\n <tui-svg\n *ngIf=\"product.ignoreMinCountCheck\"\n src=\"tuiIconPackage\"\n [tuiHint]=\"minCountHint\"\n [tuiHintShowDelay]=\"100\"\n tuiHintDirection=\"top\"\n ></tui-svg>\n <ng-template #minCountHint>\n Доступен заказ <br />\n произвольного <br />\n количества\n </ng-template>\n </p>\n <p>Артикул: {{ product.code }}</p>\n </div>\n\n <div class=\"flex w-full flex-wrap items-center gap-x-2 gap-y-1\">\n <p\n *ngIf=\"!product.priceInRub\"\n class=\"font-bold\"\n >\n {{ product.costString }}\n </p>\n <p class=\"text-xs font-bold text-tui-base-05\">{{ product.costRubString }}</p>\n <span\n *ngIf=\"product.discount\"\n class=\"flex items-center\"\n >\n <span class=\"line-through\">{{ product.discountCostString }}</span> &nbsp;\n <span class=\"font-bold text-tui-success-fill\"> -{{ product.discount.percent }}% </span>\n <tui-icon\n icon=\"@tui.info\"\n [tuiHint]=\"discountHint\"\n [tuiHintShowDelay]=\"100\"\n tuiHintDirection=\"top\"\n class=\"!h-4 !text-xs\"\n ></tui-icon>\n <ng-template #discountHint>\n <div class=\"font-bold\">{{ product.discount.name }}</div>\n <div *ngIf=\"product.discount.expiredAt as expiredAt\">Дата окончания: {{ expiredAt }}</div>\n </ng-template>\n </span>\n </div>\n\n <sc-price-warehouse-stock [product]=\"product\"></sc-price-warehouse-stock>\n\n <div\n *ngIf=\"cartItem.height || cartItem.length || cartItem.width\"\n class=\"flex items-center gap-1\"\n >\n <button\n tuiIconButton\n iconStart=\"@tui.settings\"\n (click)=\"clickSettingsEvent.emit()\"\n size=\"s\"\n appearance=\"secondary\"\n class=\"mr-2 !self-center\"\n ></button>\n <div class=\"flex flex-wrap gap-x-2 text-xs font-thin text-tui-base-04\">\n <p *ngIf=\"cartItem.marker\">Маркировка: {{ cartItem.marker }}</p>\n <p *ngIf=\"cartItem.width\">Ширина: {{ cartItem.width }} м.</p>\n <ng-container *ngIf=\"cartItem.height; else length\">\n <p>Высота: {{ cartItem.height }} м.</p>\n </ng-container>\n <ng-template #length>\n <p *ngIf=\"cartItem.length\">Длина: {{ cartItem.length }} м.</p>\n </ng-template>\n </div>\n </div>\n\n <a\n tuiLink\n *ngIf=\"cartItem.specificationImgUrl\"\n (click)=\"showSpecification()\"\n >Спецификация</a\n >\n <ng-template\n #specificationPreview\n let-preview\n >\n <tui-preview\n [rotatable]=\"false\"\n [zoomable]=\"false\"\n >\n <img\n *polymorpheusOutlet=\"cartItem.specificationImgUrl as src\"\n alt=\"preview\"\n [src]=\"cartItem.specificationImgUrl\"\n />\n <button\n iconStart=\"@tui.x\"\n title=\"Close\"\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n (click)=\"preview.complete()\"\n ></button>\n </tui-preview>\n </ng-template>\n </div>\n <div class=\"flex flex-col gap-1 self-start sm:mr-9 sm:self-center\">\n <div class=\"flex gap-2\">\n <sc-input-quantity\n #inputQuantity\n *ngIf=\"quantityControl\"\n [formControl]=\"quantityControl\"\n [showCross]=\"false\"\n size=\"s\"\n [step]=\"unitsHelper.productMultiplicity(product)\"\n [ignoreStepValidators]=\"product.ignoreMinCountCheck\"\n (keydown.enter)=\"inputQuantity.nativeFocusableElement?.blur()\"\n class=\"w-28\"\n ></sc-input-quantity>\n <button\n tuiIconButton\n iconStart=\"@tui.trash-2\"\n [style.border-radius.%]=\"100\"\n size=\"xs\"\n (click)=\"clickDeleteEvent.emit()\"\n ></button>\n </div>\n <p class=\"text-sm font-bold text-tui-text-01\">Итого: {{ cartItem.costRub | tuiFormatNumber }} {{ 'RUB' | tuiCurrency }}</p>\n </div>\n </div>\n </div>\n</ng-container>\n\n<ng-template #skeleton>\n <div class=\"flex w-full gap-2\">\n <div class=\"size-20 rounded-xl bg-tui-base-02\"></div>\n <div class=\"flex grow flex-col gap-2.5 bg-white\">\n <div class=\"h-4 w-full rounded-xl bg-tui-base-02\"></div>\n <div class=\"h-4 w-3/5 rounded-xl bg-tui-base-02\"></div>\n <div class=\"h-4 w-4/5 rounded-xl bg-tui-base-02\"></div>\n </div>\n </div>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TuiCurrencyPipe } from '@taiga-ui/addon-commerce';\nimport { TuiButton, TuiFormatNumberPipe, TuiHint, TuiIcon, TuiLink } from '@taiga-ui/core';\nimport { TuiPreview } from '@taiga-ui/kit';\nimport { PolymorpheusOutlet, PolymorpheusTemplate } from '@taiga-ui/polymorpheus';\n\nimport { ScCatalogModule } from '../catalog';\nimport { ScCartItemMobileComponent } from './cart-item-mobile/sc-cart-item-mobile.component';\n\n/**\n * Модуль корзины.\n */\n@NgModule({\n declarations: [ScCartItemMobileComponent],\n exports: [ScCartItemMobileComponent],\n imports: [\n CommonModule,\n TuiLink,\n ScCatalogModule,\n TuiButton,\n TuiCurrencyPipe,\n TuiFormatNumberPipe,\n TuiIcon,\n ...TuiHint,\n FormsModule,\n ReactiveFormsModule,\n ...TuiPreview,\n PolymorpheusTemplate,\n PolymorpheusOutlet,\n ],\n})\nexport class ScCartModule {}\n","/* eslint-disable @typescript-eslint/unbound-method,lodash/prefer-lodash-method */\n\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { AfterViewInit, ChangeDetectionStrategy, Component, DestroyRef, Inject, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport {\n ScConvertersService,\n ScDeliveryAddressService,\n ScIDeliveryAddress,\n ScIDeliveryAddressOnDataCreate,\n ScISuggestionAddress,\n ScISuggestionType,\n ScSuggestion,\n ScUserMetrikaGoalsEnum,\n ScUserMetrikaService,\n} from '@snabcentr/client-core';\nimport { TUI_IS_MOBILE } from '@taiga-ui/cdk';\nimport { TuiDialogContext } from '@taiga-ui/core';\nimport { POLYMORPHEUS_CONTEXT } from '@taiga-ui/polymorpheus';\nimport { YaReadyEvent } from 'angular8-yandex-maps';\nimport { ApiErrorResponse } from 'projects/client-ui/auth';\nimport { catchError, filter, map, Observable, of, share, startWith, Subject, switchMap, tap } from 'rxjs';\n\n/**\n * Компонент добавления адреса доставки.\n */\n@Component({\n selector: 'sc-add-delivery-address-dialog',\n templateUrl: './sc-add-delivery-address-dialog.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScAddDeliveryAddressDialogComponent implements AfterViewInit {\n /**\n * Округляет координаты до 6 цифр после запятой.\n *\n * @param coords Координаты точки.\n */\n private static roundCoordinate(coords: number[]): number[] {\n return coords.map((coord) => Math.round(coord * 1e6) / 1e6);\n }\n\n /**\n * Ссылка для автоматического управления уничтожением зависимостей.\n */\n private destroyRef: DestroyRef = inject(DestroyRef);\n\n /**\n * Признак того, отображается этот компонент на мобильном устройстве или нет.\n */\n public readonly isMobile: boolean = inject(TUI_IS_MOBILE);\n\n /**\n * Перечисление типов подсказок.\n */\n public readonly suggestionType: typeof ScISuggestionType = ScISuggestionType;\n\n /**\n * {@link Subject} события отправки формы.\n */\n public readonly onSubmit$: Subject<void> = new Subject<void>();\n\n /**\n * Координаты центра карты по умолчанию.\n */\n public readonly defaultCenterMap: number[] = [57.000353, 40.97393];\n\n /**\n * Масштаб карты по умолчанию.\n */\n public readonly defaultZoomMap: number = 11;\n\n /**\n * {@link Observable} запроса данных добавления адрес доставки.\n */\n private readonly request$: Observable<ScIDeliveryAddress | null> = this.onSubmit$.pipe(\n filter(() => this.form.valid),\n map(() => this.form.value as ScIDeliveryAddressOnDataCreate),\n switchMap((value) =>\n this.deliveryAddressService.createDeliveryAddress$(this.convertersService.removeNullRecursive<ScIDeliveryAddressOnDataCreate>(value)).pipe(\n tap(() => {\n this.context.completeWith();\n }),\n catchError((error: unknown) => {\n if (error instanceof HttpErrorResponse) {\n const { errors, message } = error.error as ApiErrorResponse;\n\n if (errors) {\n Object.keys(errors).forEach((key) => {\n this.form.get(key)?.setErrors({ serverResponse: errors[key] });\n });\n } else if (message) {\n this.form.setErrors({ serverResponse: [message] });\n }\n }\n\n return of({} as ScIDeliveryAddress);\n }),\n startWith(null)\n )\n ),\n share()\n );\n\n /**\n * {@link Observable} изменения состояния загрузки данных.\n */\n public readonly loading$: Observable<boolean> = this.request$.pipe(map((data) => data === null));\n\n /**\n * Группа с полями адресов.\n */\n public addressControl: FormControl<ScISuggestionAddress | string | null> = new FormControl<ScISuggestionAddress | string | null>(null, Validators.required);\n\n /**\n * Настройки карты.\n */\n public options: ymaps.IMapOptions = {\n autoFitToViewport: 'always',\n yandexMapDisablePoiInteractivity: false,\n maxZoom: 19,\n };\n\n /**\n * Форма для создания адреса доставки.\n */\n public readonly form = new FormGroup({\n address: this.addressControl,\n coordinates: new FormGroup({\n lat: new FormControl<number | null>(null, Validators.required),\n long: new FormControl<number | null>(null, Validators.required),\n }),\n contact: new FormGroup({\n name: new FormControl<string | null>(null, Validators.required),\n phone: new FormControl<string | null>(null, [Validators.required, Validators.minLength(12)]),\n email: new FormControl<string | null>(null, Validators.email),\n position: new FormControl<string | null>(null, Validators.required),\n }),\n });\n\n /**\n * Точка адреса на карте.\n */\n public addressPlacemark?: ymaps.Placemark;\n\n /**\n * Яндекс карта.\n */\n public yaMap?: ymaps.Map;\n\n /**\n * Инициализирует экземпляр класса {@link ScAddDeliveryAddressDialogComponent}.\n *\n * @param deliveryAddressService Сервис работы с адресами доставки.\n * @param userMetrikaService Сервис для сбора метрик о действиях пользователей.\n * @param context Контекст диалогового окна, в котором открыт компонент.\n * @param convertersService Сервис конвертации данных.\n */\n public constructor(\n private readonly deliveryAddressService: ScDeliveryAddressService,\n private readonly userMetrikaService: ScUserMetrikaService,\n @Inject(POLYMORPHEUS_CONTEXT) public readonly context: TuiDialogContext<void, void>,\n private readonly convertersService: ScConvertersService\n ) {}\n\n /** @inheritdoc */\n public ngAfterViewInit(): void {\n this.userMetrikaService.emitUserMetrikaEvent({\n target: ScUserMetrikaGoalsEnum.userProfileDeliveryAddressAddShow,\n });\n\n this.addressControl.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.removeGeoCoordinates();\n });\n }\n\n /**\n * Обработчик загрузки карты на странице.\n *\n * @param target Экземпляр целевого объекта.\n * @param target.target\n */\n public onMapReadyHandle({ target }: YaReadyEvent<ymaps.Map>): void {\n this.yaMap = target;\n\n if (this.addressPlacemark) {\n target.geoObjects.add(this.addressPlacemark);\n\n const bounds = this.addressPlacemark.geometry?.getBounds();\n\n if (bounds) {\n target.setBounds(bounds);\n }\n }\n }\n\n /**\n * Обработчик выбора адреса доставки.\n *\n * @param suggestion Объект подсказки ареса.\n */\n public onSelectedAddress(suggestion: ScSuggestion): void {\n if ('addressString' in suggestion && suggestion.geoCoordinates) {\n const coords = ScAddDeliveryAddressDialogComponent.roundCoordinate([suggestion.geoCoordinates.lat, suggestion.geoCoordinates.long]);\n\n if (!this.addressPlacemark) {\n this.addressPlacemark = this.createPlacemark(coords);\n }\n\n this.setGeoCoordinates(coords);\n\n if (!this.yaMap?.geoObjects.getLength()) {\n this.yaMap?.geoObjects.add(this.addressPlacemark);\n }\n\n const bounds = this.addressPlacemark.geometry?.getBounds();\n\n if (bounds) {\n this.yaMap?.setBounds(bounds);\n this.yaMap?.setZoom(17);\n }\n }\n }\n\n /**\n * Устанавливает {@link addressPlacemark} точку на определённые координаты.\n *\n * @param coords Координаты точки.\n */\n private setGeoCoordinates(coords: number[]): void {\n if (this.addressPlacemark) {\n this.addressPlacemark.geometry?.setCoordinates(coords);\n\n this.form.patchValue({\n coordinates: {\n lat: Number(coords[0].toFixed(6)),\n long: Number(coords[1].toFixed(6)),\n },\n });\n }\n }\n\n /**\n * Устанавливает {@link addressPlacemark} точку на определённые координаты.\n */\n private removeGeoCoordinates(): void {\n if (this.addressPlacemark) {\n this.yaMap?.geoObjects.remove(this.addressPlacemark);\n\n this.form.patchValue({\n coordinates: {\n lat: null,\n long: null,\n },\n });\n\n this.yaMap?.setCenter(this.defaultCenterMap);\n this.yaMap?.setZoom(this.defaultZoomMap);\n }\n }\n\n /**\n * Создаёт объект точки и устанавливает события для него.\n *\n * @param coords Координаты точки.\n */\n private createPlacemark(coords: number[]): ymaps.Placemark {\n const placemark = new ymaps.Placemark(\n coords,\n {\n iconCaption: '',\n },\n {\n preset: 'islands',\n draggable: true,\n }\n );\n\n placemark.events.add('dragend', () => {\n const coord = this.addressPlacemark?.geometry?.getCoordinates();\n\n if (coord) {\n this.setGeoCoordinates(ScAddDeliveryAddressDialogComponent.roundCoordinate(coord));\n }\n });\n\n return placemark;\n }\n}\n","<div class=\"relative flex flex-col gap-3 md:flex-row\">\n <form\n [formGroup]=\"form\"\n (ngSubmit)=\"onSubmit$.next()\"\n class=\"flex w-full flex-col gap-3\"\n >\n <label tuiLabel>Адрес доставки\n <tui-input\n [pseudoInvalid]=\"(addressControl.valid && form.controls.coordinates.invalid) || null\"\n formControlName=\"address\"\n >\n Адрес доставки\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.address\"\n (selectedClick)=\"onSelectedAddress($event)\"\n ></sc-suggestion-field>\n <input\n tuiTextfieldLegacy\n autocomplete=\"new-password\"\n />\n </tui-input>\n <tui-error\n formControlName=\"address\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n <tui-error\n *ngIf=\"addressControl.valid && form.controls.coordinates.invalid\"\n error=\"Выберите вариант из списка\"\n ></tui-error>\n </label>\n <div\n formGroupName=\"contact\"\n class=\"flex grow flex-col gap-2\"\n >\n <p class=\"w-full font-bold\">Контактное лицо:</p>\n <label tuiLabel>Ф.И.О.\n <tui-input formControlName=\"name\">\n Ф.И.О.\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.fio\"\n ></sc-suggestion-field>\n </tui-input>\n <tui-error\n formControlName=\"name\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <label tuiLabel>Телефон\n <tui-input-phone formControlName=\"phone\"> Телефон </tui-input-phone>\n <tui-error\n formControlName=\"phone\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <label tuiLabel>Адрес электронной почты\n <tui-input formControlName=\"email\">\n <input\n tuiTextfieldLegacy\n type=\"email\"\n />\n Адрес электронной почты\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.email\"\n ></sc-suggestion-field>\n </tui-input>\n <tui-error\n formControlName=\"email\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <label tuiLabel>Должность\n <tui-input formControlName=\"position\"> Должность </tui-input>\n <tui-error\n formControlName=\"position\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n </div>\n <div class=\"flex justify-center gap-8\">\n <button\n tuiButton\n (click)=\"context.$implicit.complete()\"\n type=\"button\"\n [iconStart]=\"isMobile ? '@tui.x' : '@tui.x'\"\n appearance=\"secondary\"\n >\n Отмена\n </button>\n <button\n tuiButton\n [iconStart]=\"isMobile ? '@tui.save' : '@tui.save'\"\n [disabled]=\"form.invalid\"\n [loading]=\"!!(loading$ | async)\"\n type=\"submit\"\n >\n Добавить\n </button>\n </div>\n </form>\n\n <div\n class=\"absolute -z-10 flex size-full md:w-1/2\"\n [ngClass]=\"{ 'z-0 relative': addressPlacemark }\"\n >\n <div\n class=\"flex-auto\"\n [ngClass]=\"{ 'pointer-events-none opacity-50': form.controls.coordinates.invalid }\"\n >\n <ya-map\n [zoom]=\"11\"\n [state]=\"{ controls: [] }\"\n (ready)=\"onMapReadyHandle($event)\"\n [options]=\"options\"\n ></ya-map>\n </div>\n </div>\n</div>\n","import { Component, ChangeDetectionStrategy, Output, EventEmitter, Input, OnInit } from '@angular/core';\nimport { ScDeliveryAddressService, ScIContact, ScIDeliveryAddress } from '@snabcentr/client-core';\nimport { Observable } from 'rxjs';\n\n/**\n * Компонент адреса доставки.\n */\n@Component({\n selector: 'sc-delivery-address-accordion-item',\n templateUrl: './sc-delivery-address-accordion-item.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScDeliveryAddressAccordionItemComponent implements OnInit {\n /**\n * Адрес доставки.\n */\n @Input()\n public deliveryAddress: ScIDeliveryAddress;\n\n /**\n * Список банковских счетов контрагента.\n */\n public contacts$?: Observable<ScIContact[] | null>;\n\n /**\n * Событие нажатия на кнопку удаления адреса доставки.\n */\n @Output()\n public deleteDeliveryAddressClick: EventEmitter<ScIDeliveryAddress> = new EventEmitter<ScIDeliveryAddress>();\n\n /**\n * Событие нажатия на кнопку добавления контактного лица адресу доставки.\n */\n @Output()\n public addDeliveryAddressContactClick: EventEmitter<ScIDeliveryAddress> = new EventEmitter<ScIDeliveryAddress>();\n\n /**\n * Событие нажатия на кнопку удаления контактного лица адреса доставки.\n */\n @Output()\n public deleteDeliveryAddressContactClick: EventEmitter<{ contact: ScIContact; address: ScIDeliveryAddress }> = new EventEmitter<{ contact: ScIContact; address: ScIDeliveryAddress }>();\n\n /**\n * Инициализирует экземпляр класса {@link ScDeliveryAddressAccordionItemComponent}.\n *\n * @param deliveryAddressService Сервис работы с адресами доставки.\n */\n public constructor(private readonly deliveryAddressService: ScDeliveryAddressService) {}\n\n /** @inheritDoc */\n public ngOnInit(): void {\n this.contacts$ = this.deliveryAddressService.getDeliveryAddressContacts$(this.deliveryAddress.id);\n }\n\n /**\n * Обработчик нажатия на кнопку удаления контактного лица у адреса доставки.\n *\n * @param contact Контактное лицо.\n * @param address Адрес доставки клиента.\n */\n public onDeleteContragentContactClick(contact: ScIContact, address: ScIDeliveryAddress): void {\n this.deleteDeliveryAddressContactClick.emit({ contact: contact, address: address });\n }\n}\n","<sc-accordion [showAddButton]=\"false\">\n {{ deliveryAddress.address }}\n\n <ng-template scAccordionContent>\n <div class=\"flex flex-col gap-2\">\n <div class=\"flex gap-2\">\n <div class=\"flex flex-col gap-2 grow\">\n <span> Адрес: {{ deliveryAddress.address }} </span>\n <span *ngIf=\"deliveryAddress.comment\"> Комментарий: {{ deliveryAddress.comment }} </span>\n </div>\n <!-- Функционал удаления временно не доступен пользователю. -->\n <!-- <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n icon=\"@tui.trash-2\"\n appearance=\"flat\"\n (click)=\"$event.stopPropagation(); deleteDeliveryAddressClick.emit(deliveryAddress)\"\n ></button> -->\n </div>\n\n <sc-contacts-accordion\n *ngIf=\"contacts$\"\n [contacts$]=\"contacts$\"\n (addContactClick)=\"addDeliveryAddressContactClick.next(deliveryAddress)\"\n (deleteButtonClick)=\"onDeleteContragentContactClick($event, deliveryAddress)\"\n ></sc-contacts-accordion>\n </div>\n </ng-template>\n</sc-accordion>\n","import { Component, ChangeDetectionStrategy, Output, EventEmitter } from '@angular/core';\nimport { ScDeliveryAddressService, ScIContact, ScIDeliveryAddress } from '@snabcentr/client-core';\nimport { Observable } from 'rxjs';\n\n/**\n * Компонент адресов доставки.\n */\n@Component({\n selector: 'sc-delivery-address-accordion',\n templateUrl: './sc-delivery-address-accordion.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScDeliveryAddressAccordionComponent {\n /**\n * {@link Observable} данных адресов доставки.\n */\n public deliveryAddress$: Observable<ScIDeliveryAddress[] | null> = this.deliveryAddressService.deliveryAddresses$;\n\n /**\n * Событие нажатия на кнопку добавления адреса доставки клиента.\n */\n @Output()\n public addDeliveryAddressClick: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на кнопку удаления адреса доставки клиента.\n */\n @Output()\n public deleteDeliveryAddressClick: EventEmitter<ScIDeliveryAddress> = new EventEmitter<ScIDeliveryAddress>();\n\n /**\n * Событие нажатия на кнопку добавления контактного лица для адреса доставки.\n */\n @Output()\n public addDeliveryAddressContactClick: EventEmitter<ScIDeliveryAddress> = new EventEmitter<ScIDeliveryAddress>();\n\n /**\n * Событие нажатия на кнопку удаления контактного лица у адреса доставки.\n */\n @Output()\n public deleteDeliveryAddressContactClick: EventEmitter<{ contact: ScIContact; address: ScIDeliveryAddress }> = new EventEmitter<{ contact: ScIContact; address: ScIDeliveryAddress }>();\n\n /**\n * Инициализирует экземпляр класса {@link ScDeliveryAddressAccordionComponent}.\n *\n * @param deliveryAddressService Сервис работы с адресами доставки.\n */\n public constructor(private readonly deliveryAddressService: ScDeliveryAddressService) {}\n}\n","<sc-accordion (addButtonClick)=\"addDeliveryAddressClick.emit()\">\n Адреса доставки\n <ng-template scAccordionContent>\n <tui-loader *tuiLet=\"deliveryAddress$ | async as deliveryAddress\" [overlay]=\"true\" [showLoader]=\"deliveryAddress === null\">\n <div class=\"flex flex-col gap-2\">\n <ng-container *ngIf=\"!deliveryAddress || deliveryAddress.length; else contragentsNotExist\">\n <sc-delivery-address-accordion-item\n *ngFor=\"let address of deliveryAddress\"\n [deliveryAddress]=\"address\"\n (deleteDeliveryAddressClick)=\"deleteDeliveryAddressClick.emit($event)\"\n (addDeliveryAddressContactClick)=\"addDeliveryAddressContactClick.emit($event)\"\n (deleteDeliveryAddressContactClick)=\"deleteDeliveryAddressContactClick.emit($event)\"\n ></sc-delivery-address-accordion-item>\n </ng-container>\n\n <ng-template #contragentsNotExist>\n <tui-notification size=\"l\"><div>\n <div class=\"flex flex-wrap gap-2 font-medium\">Адреса доставки не указаны.</div>\n </div></tui-notification>\n </ng-template>\n </div>\n </tui-loader>\n </ng-template>\n</sc-accordion>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TuiLet } from '@taiga-ui/cdk';\nimport { TuiButton, TuiDataList, TuiError, TuiLabel, TuiLoader, TuiNotification } from '@taiga-ui/core';\nimport { TuiButtonLoading, TuiElasticContainer, TuiFieldErrorPipe } from '@taiga-ui/kit';\nimport { TuiInputModule, TuiInputPhoneModule } from '@taiga-ui/legacy';\nimport { AngularYandexMapsModule } from 'angular8-yandex-maps';\n\nimport { ScAccordionModule } from '../accordion';\nimport { ScContactsModule } from '../contacts/sc-contacts.module';\nimport { ScFormFieldsModule } from '../form-fields/form-fields.module';\nimport { ScAddDeliveryAddressDialogComponent } from './add-delivery-address-dialog/sc-add-delivery-address-dialog.component';\nimport { ScDeliveryAddressAccordionItemComponent } from './delivery-address-accordion/delivery-address-accordion-item/sc-delivery-address-accordion-item.component';\nimport { ScDeliveryAddressAccordionComponent } from './delivery-address-accordion/sc-delivery-address-accordion.component';\n\n/**\n * Модуль для отображение адресов доставки разделами, с возможностью скрывать и отображать содержимое.\n */\n@NgModule({\n declarations: [ScDeliveryAddressAccordionComponent, ScDeliveryAddressAccordionItemComponent, ScAddDeliveryAddressDialogComponent],\n imports: [\n CommonModule,\n ScAccordionModule,\n TuiButton,\n TuiLoader,\n TuiLet,\n TuiNotification,\n ScContactsModule,\n FormsModule,\n ReactiveFormsModule,\n TuiLabel,\n TuiFieldErrorPipe,\n TuiError,\n TuiInputModule,\n TuiInputPhoneModule,\n ScFormFieldsModule,\n ...TuiDataList,\n AngularYandexMapsModule.forRoot({\n lang: 'ru_RU',\n }),\n TuiElasticContainer,\n TuiButtonLoading,\n ],\n exports: [ScDeliveryAddressAccordionComponent, ScAddDeliveryAddressDialogComponent],\n})\nexport class ScDeliveryAddressModule {}\n","/* eslint-disable class-methods-use-this */\n\nimport { Injectable } from '@angular/core';\nimport { ScDocumentInfo, ScDocumentInfoTypesEnum, ScIconTypesEnum } from '@snabcentr/client-core';\n\n/**\n * Сервис работающий с значками элементов дерева.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class TreeIconService {\n /**\n * Назначает значок элементу дерева в зависимости от типа файла.\n *\n * @param info Объект пришедших данных о файле.\n * @returns Возвращает название значка в виде строки.\n */\n public getIconName(info: ScDocumentInfo): string {\n switch (info.icon) {\n case ScIconTypesEnum.iconImage:\n return '@tui.image';\n case ScIconTypesEnum.iconPdfFile:\n return '@tui.sc.file-p';\n case ScIconTypesEnum.iconWordFile:\n return '@tui.sc.file-w';\n case ScIconTypesEnum.iconExcelFile:\n return '@tui.sc.file-x';\n case ScIconTypesEnum.iconFolder:\n return '@tui.folder';\n default:\n return '@tui.file';\n }\n }\n\n /**\n * Проверяет на признак наличия дочерних элементов.\n *\n * @param info Объект пришедших данных о файле.\n * @returns Возвращает true при наличии дочерних элементов и false при их отсутствии.\n */\n public hasChildren(info: ScDocumentInfo): boolean {\n return info.type === ScDocumentInfoTypesEnum.dir;\n }\n}\n","import { ScDocumentInfo, ScFilesService } from '@snabcentr/client-core';\nimport { Injectable } from '@angular/core';\nimport { TuiTreeLoader } from '@taiga-ui/kit';\nimport { Observable, map } from 'rxjs';\nimport { TreeIconService } from './tree-icon.service';\nimport { TreeNode } from '../interfaces/tree-node';\n\n/**\n * Сервис для асинхронного раскрытия вложенности.\n */\n@Injectable()\nexport class TreeLoaderService implements TuiTreeLoader<TreeNode> {\n /**\n * Инициализирует экземпляр класса {@link TreeLoaderService}\n *\n * @param filesService Сервис для получения файлов директории.\n * @param iconService Сервис для определения и назначения значка элементу дерева.\n */\n public constructor(private readonly filesService: ScFilesService, private readonly iconService: TreeIconService) {}\n\n /**\n * Загружает дочерние элементы дерева.\n *\n * @param item Элемент дерева.\n * @returns Массив дочерних элементов.\n */\n public loadChildren(item: TreeNode): Observable<TreeNode[]> {\n return item.id ? this.initData(item.id) : this.initData(undefined);\n }\n\n /**\n * Проверяет указанный элемент дерева на наличие дочерних элементов и возвращает массив дочерних элементов, если они есть, либо пустой массив.\n *\n * @param node Элемент дерева.\n * @returns Возвращает массив типа TreeNode[].\n */\n public hasChildren(node: TreeNode): boolean {\n return node.hasChildren && !!node.id;\n }\n\n /**\n * Загружает и заполняет массив дочерних элементов.\n *\n * @param id Идентификатор директории, чьи дочернии элементы загружаются.\n * @returns Возвращает массив дочерних элементов.\n */\n private initData(id: number | undefined): Observable<TreeNode[]> {\n return this.filesService.getFiles(id).pipe(\n map((data: ScDocumentInfo[]) =>\n data.map((item) => ({\n text: item.name,\n icon: this.iconService.getIconName(item),\n hasChildren: this.iconService.hasChildren(item),\n createdAt: item.createdAt,\n id: item.id,\n link: item.link\n }))\n )\n );\n }\n}\n","import { Directive } from '@angular/core';\nimport { TuiHandler } from '@taiga-ui/cdk';\nimport { TuiTreeService } from '@taiga-ui/kit';\nimport { TreeNode } from '../interfaces/tree-node';\n\n/**\n * Директива отвечающая за обработку действий над элементами дерева.\n */\n@Directive({\n selector: '[scTree]',\n exportAs: 'scTree',\n providers: [TuiTreeService]\n})\nexport class TreeDirective {\n /**\n * Карта данных дерева.\n */\n public map = new Map<TreeNode, boolean>();\n\n /**\n * Инициализирует экземпляр класса {@link TreeDirective}.\n *\n * @param service Сервис для работы с деревом.\n */\n public constructor(public readonly service: TuiTreeService<TreeNode>) {}\n\n /**\n * Проверяет указанный элемент дерева на наличие дочерних элементов и возвращает массив дочерних элементов, если они есть, либо пустой массив.\n *\n * @param node Элемент дерева.\n * @returns Возвращает массив типа TreeNode[].\n */\n public childrenHandler: TuiHandler<TreeNode, readonly TreeNode[]> = (node) => (node.hasChildren ? this.service.getChildren(node) : []);\n\n /**\n * Обрабатывает нажатие на указанный элемент дерева.\n *\n * @param node Элемент дерева.\n */\n public onToggled(node: TreeNode): void {\n this.service.loadChildren(node);\n }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { TuiTreeItemContent } from '@taiga-ui/kit';\n\n/**\n * Компонент для удаления стандартного значка элемента дерева.\n */\n@Component({\n selector: 'sc-file-tree-item',\n templateUrl: './file-tree-item.component.html',\n styleUrls: ['./file-tree-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n '(click)': 'onClick()',\n },\n})\nexport class FileTreeItemComponent extends TuiTreeItemContent {}\n","<ng-container [ngTemplateOutlet]=\"context.template\"></ng-container>\n","/* eslint-disable no-use-before-define,@angular-eslint/no-input-rename */\n\nimport { Directive, forwardRef, Input } from '@angular/core';\nimport { TUI_TREE_CONTENT, TUI_TREE_START } from '@taiga-ui/kit';\nimport { PolymorpheusComponent } from '@taiga-ui/polymorpheus';\n\nimport { FileTreeItemComponent } from '../file-tree-item/file-tree-item.component';\nimport { TreeNode } from '../interfaces/tree-node';\n\n/**\n * Директива отвечающая за корневые элементы дерева.\n */\n@Directive({\n selector: '[scTopNodeText]',\n providers: [\n {\n provide: TUI_TREE_START,\n useExisting: forwardRef(() => TreeTopDirective),\n },\n {\n provide: TUI_TREE_CONTENT,\n useValue: new PolymorpheusComponent(FileTreeItemComponent),\n },\n ],\n})\nexport class TreeTopDirective implements TreeNode {\n /**\n * Отображаемое имя корневого элемента дерева.\n */\n @Input('scTopNodeText')\n public text = '';\n\n /**\n * Значок корневого элемента дерева.\n */\n @Input('scTopNodeIcon')\n public icon: string;\n\n /**\n * Ссылка корневого элемента дерева.\n */\n @Input('scTopNodeLink')\n public link?: string;\n\n /**\n * Признак наличия дочерних элементов.\n */\n @Input('scTopNodeChilds')\n public hasChildren: boolean;\n\n /**\n * Идентификатор корневого элемента дерева.\n */\n @Input('scTopNodeParent')\n public id?: number;\n\n /**\n * Дата создания корневого элемента дерева.\n */\n @Input('scTopNodeDate')\n public createdAt?: string;\n}\n","import { ChangeDetectionStrategy, Component, Inject } from '@angular/core';\nimport { ScDocumentInfo, ScFilesService } from '@snabcentr/client-core';\nimport { TUI_TREE_LOADER, TUI_TREE_LOADING } from '@taiga-ui/kit';\nimport { map, Observable } from 'rxjs';\n\nimport { TreeNode } from '../interfaces/tree-node';\nimport { TreeIconService } from '../services/tree-icon.service';\nimport { TreeLoaderService } from '../services/tree-loader.service';\n\n/**\n * Компонент файлов и документов.\n */\n@Component({\n selector: 'sc-files-and-documents',\n templateUrl: './files-and-documents.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: TUI_TREE_LOADER,\n useClass: TreeLoaderService,\n },\n ],\n})\nexport class FilesAndDocumentsComponent {\n /**\n * Данные визуализации и их начальное получение.\n */\n public data$: Observable<TreeNode[]> = this.filesService.getFiles().pipe(\n map((data: ScDocumentInfo[]) =>\n data.map((item) => ({\n text: item.name,\n icon: this.iconService.getIconName(item),\n hasChildren: this.iconService.hasChildren(item),\n createdAt: item.createdAt,\n id: item.id,\n link: item.link,\n }))\n )\n );\n\n /**\n * Инициализирует экземпляр класса {@link FilesAndDocumentsComponent}.\n *\n * @param loading Объект отвечающий за значок загрузки, в момент раскрытия элемента дерева.\n * @param iconService Сервис для определения и назначения значка элементу дерева.\n * @param filesService Сервис для загрузки файлов.\n */\n public constructor(\n @Inject(TUI_TREE_LOADING) public readonly loading: unknown,\n public readonly iconService: TreeIconService,\n private readonly filesService: ScFilesService\n ) {}\n}\n","<ng-container *ngIf=\"data$ | async as data; else skeleton\">\n <tui-tree\n *ngFor=\"let node of data\"\n #tree=\"scTree\"\n scTree\n [scTopNodeText]=\"node.text\"\n [scTopNodeIcon]=\"node.icon\"\n [scTopNodeLink]=\"node.link\"\n [scTopNodeChilds]=\"node.hasChildren\"\n [scTopNodeParent]=\"node.id\"\n [scTopNodeDate]=\"node.createdAt\"\n [childrenHandler]=\"tree.childrenHandler\"\n [content]=\"content\"\n [map]=\"tree.map\"\n [tuiTreeController]=\"false\"\n [value]=\"tree.service.data$ | async\"\n (toggled)=\"tree.onToggled($event)\"\n class=\"overflow-hidden\"\n ></tui-tree>\n</ng-container>\n\n<ng-template\n #content\n let-item\n>\n <tui-loader\n *ngIf=\"item === loading; else text\"\n class=\"my-4 w-8\"\n ></tui-loader>\n <ng-template #text>\n <tui-icon \n [icon]=\"item.icon\"\n class=\"tui-space_right-2\"\n ></tui-icon>\n <a\n tuiLink\n [pseudo]=\"true\"\n *ngIf=\"item.link\"\n href=\"{{ item.link }}\"\n class=\"grow\"\n >{{ item.text }}</a\n >\n <p\n *ngIf=\"!item.link\"\n class=\"grow\"\n >\n {{ item.text }}\n </p>\n <p>{{ item.createdAt }}</p>\n </ng-template>\n</ng-template>\n\n<ng-template #skeleton>\n <div class=\"flex flex-col gap-2\">\n <div\n *ngFor=\"let _ of [].constructor(7)\"\n class=\"flex items-center gap-2\"\n >\n <div class=\"tui-skeleton size-6\"></div>\n <div class=\"tui-skeleton h-4 w-40\"></div>\n </div>\n </div>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TuiIcon, TuiLink, TuiLoader } from '@taiga-ui/core';\nimport { TuiTree } from '@taiga-ui/kit';\n\nimport { TreeTopDirective } from './directives';\nimport { TreeDirective } from './directives/tree.directive';\nimport { FileTreeItemComponent } from './file-tree-item/file-tree-item.component';\nimport { FilesAndDocumentsComponent } from './files-and-documents/files-and-documents.component';\n\n/**\n * Модуль файлов и документов.\n */\n@NgModule({\n imports: [CommonModule, ...TuiTree, TuiIcon, TuiLoader, TuiLink],\n declarations: [FilesAndDocumentsComponent, TreeDirective, TreeTopDirective, FileTreeItemComponent],\n exports: [FilesAndDocumentsComponent],\n})\nexport class FilesAndDocumentsModule {}\n","/**\n * Список иконок.\n */\nexport const scClientUiIconsName = [\n 'application',\n 'back',\n 'bag',\n 'banknote-arrow-in-top',\n 'chart-column-plus',\n 'circle-arrow-in-right',\n 'contacts',\n 'file-p',\n 'file-search',\n 'file-w',\n 'file-x',\n 'instagram',\n 'layout-list-tree',\n 'list',\n 'reclamation',\n 'send',\n 'telegram',\n 'vk',\n 'whatsapp',\n 'catalog.aluminum-systems',\n 'catalog.arm-profile',\n 'catalog.batten',\n 'catalog.brusbox',\n 'catalog.canopy',\n 'catalog.configurator',\n 'catalog.door-accessorie',\n 'catalog.drainage-system',\n 'catalog.fastener',\n 'catalog.fixing-impost',\n 'catalog.flask',\n 'catalog.foam-balloon',\n 'catalog.foam',\n 'catalog.glue',\n 'catalog.handle',\n 'catalog.instrument',\n 'catalog.kve-profile',\n 'catalog.mosquito-net',\n 'catalog.mounting-accessories',\n 'catalog.net-order',\n 'catalog.panel-1',\n 'catalog.panel',\n 'catalog.profile-plastic',\n 'catalog.promo-materials',\n 'catalog.psul',\n 'catalog.rehau-profile',\n 'catalog.sandwich-plastic',\n 'catalog.sealer',\n 'catalog.siding',\n 'catalog.start-finish-profile',\n 'catalog.steam-waterproofing',\n 'catalog.stiz',\n 'catalog.thermometer',\n 'catalog.windowsill',\n 'img.email',\n 'img.facebook',\n 'img.instagram',\n 'img.qr-code',\n 'img.telegram',\n 'img.viber',\n 'img.vk',\n 'img.whatsapp',\n 'img.copy',\n 'solid.facebook',\n 'solid.instagram',\n 'solid.telegram',\n 'solid.vk-rounded',\n 'solid.vk',\n 'solid.whatsapp',\n];\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n/**\n * Компонент списка брэндов.\n */\n@Component({\n selector: 'sc-brands-list',\n templateUrl: './sc-brands-list.component.html',\n styleUrls: ['./sc-brands-list.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScBrandsListComponent {\n /**\n * Список элементов брендов.\n */\n @Input()\n public items: Array<{\n src: string;\n alt: string;\n }> = [];\n}\n","<!-- TODO: TASK:[#9893] Добавить разделение на несколько строк изображений, при увеличении количества брендов. -->\n<div class=\"flex flex-col gap-4\">\n <div class=\"relative\">\n <div class=\"absolute -left-1 top-0 z-10 block h-full w-12 bg-gradient-to-r from-tui-base-01 to-transparent\"></div>\n <div class=\"flex select-none items-center justify-center gap-12 overflow-hidden contrast-150 saturate-0\">\n <div\n *ngFor=\"let _ of [].constructor(3)\"\n class=\"animate-scroll-slow scroll-slow-revert flex shrink-0 items-center gap-16\"\n >\n <div\n *tuiRepeatTimes=\"let index of items.length - (items.length - (items.length % 2)) / 2\"\n class=\"flex items-center justify-center\"\n >\n <img\n [src]=\"items[index + (items.length - (items.length % 2)) / 2].src\"\n [alt]=\"items[index].alt\"\n />\n </div>\n </div>\n </div>\n <div class=\"absolute -right-1 top-0 z-10 block h-full w-12 bg-gradient-to-r from-transparent to-tui-base-01\"></div>\n </div>\n <div class=\"relative\">\n <div class=\"absolute -left-1 top-0 z-10 block h-full w-12 bg-gradient-to-r from-tui-base-01 to-transparent\"></div>\n <div class=\"flex select-none items-center justify-center gap-12 overflow-hidden contrast-150 saturate-0\">\n <div\n *ngFor=\"let _ of [].constructor(3)\"\n class=\"animate-scroll-slow flex shrink-0 items-center gap-16\"\n >\n <div\n *tuiRepeatTimes=\"let index of (items.length - (items.length % 2)) / 2\"\n class=\"flex items-center justify-center\"\n >\n <img\n [src]=\"items[index].src\"\n [alt]=\"items[index].alt\"\n />\n </div>\n </div>\n </div>\n <div class=\"absolute -right-1 top-0 z-10 block h-full w-12 bg-gradient-to-r from-transparent to-tui-base-01\"></div>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TuiRepeatTimes } from '@taiga-ui/cdk';\n\nimport { ScBrandsListComponent } from './sc-brands-list.component';\n\n/**\n * Модуль списка брэндов.\n */\n@NgModule({\n imports: [CommonModule, TuiRepeatTimes],\n declarations: [ScBrandsListComponent],\n exports: [ScBrandsListComponent],\n})\nexport class ScBrandsListModule {}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { TuiSizeL, TuiSizeM, TuiSizeS } from '@taiga-ui/core';\n\n/**\n * Компонент кнопки \"Поделиться\".\n */\n@Component({\n selector: 'sc-share-button',\n templateUrl: './sc-share-button.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScShareButtonComponent {\n /**\n * Формат внешнего вида кнопки.\n */\n @Input()\n public appearance: 'primary' | 'secondary' | 'outline' | 'flat' = 'secondary';\n\n /**\n * Размер кнопки.\n */\n @Input()\n public size: TuiSizeL | TuiSizeM | TuiSizeS = 'm';\n\n /**\n * Событие клика по кнопке \"Поделиться\".\n */\n @Output()\n public clickShareEvent: EventEmitter<void> = new EventEmitter<void>();\n}\n","<button\n tuiIconButton\n iconStart=\"@tui.share-2\"\n [appearance]=\"appearance\"\n [size]=\"size\"\n (click)=\"$event.stopPropagation(); clickShareEvent.emit()\"\n></button>\n","import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, inject, Input, Output } from '@angular/core';\nimport { ScNewsTile } from '@snabcentr/client-core';\nimport { TUI_IS_MOBILE } from '@taiga-ui/cdk';\n\n/**\n * Компонент карточки новости.\n */\n@Component({\n selector: 'sc-news-card',\n templateUrl: './sc-news-card.component.html',\n styleUrls: ['./sc-news-card.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScNewsCardComponent {\n /**\n * Информация о новости.\n */\n @Input()\n public news: ScNewsTile;\n\n /**\n * Событие клика по карточке новости.\n */\n @Output()\n public clickCardEvent: EventEmitter<ScNewsTile> = new EventEmitter<ScNewsTile>();\n\n /**\n * Событие клика по кнопке \"Поделиться\" карточки новости.\n */\n @Output()\n public clickShareEvent: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Признак того, что этот компонент отображается на мобильном устройстве.\n */\n @HostBinding('class.is_mobile')\n public readonly isMobile: boolean = inject(TUI_IS_MOBILE);\n}\n","<div\n (click)=\"clickCardEvent.emit(news)\"\n class=\"relative flex h-full cursor-pointer flex-col gap-2 overflow-hidden rounded-xl bg-white px-2 pb-4 pt-2 shadow-sc-2\"\n>\n <div\n [style.background-image]=\"'url(' + news.image + ')'\"\n class=\"w-full grow rounded-xl bg-tui-base-02 bg-cover bg-center bg-no-repeat\"\n ></div>\n <div class=\"flex w-full flex-col justify-between gap-2 overflow-hidden bg-white align-baseline\">\n <div class=\"flex items-center justify-between\">\n <p class=\"text-sm font-medium text-tui-text-02\">{{ news.createdAt }}</p>\n <sc-share-button\n (clickShareEvent)=\"clickShareEvent.emit()\"\n appearance=\"flat\"\n ></sc-share-button>\n </div>\n <div class=\"line-clamp-3 font-extrabold\">{{ news.subject }}</div>\n </div>\n</div>\n\n<!-- <div\n[style.background-image]=\"'url(' + news.image + ')'\"\nclass=\"h-50 w-full bg-tui-base-02 bg-cover bg-center bg-no-repeat\"\n></div> -->\n","import { ChangeDetectionStrategy, Component, HostBinding, inject, Input } from '@angular/core';\nimport { TUI_IS_MOBILE } from '@taiga-ui/cdk';\n\n/**\n * Компонент скелетона карточки новости.\n */\n@Component({\n selector: 'sc-news-card-skeleton',\n templateUrl: './sc-news-card-skeleton.component.html',\n styleUrls: ['./sc-news-card-skeleton.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScNewsCardSkeletonComponent {\n /**\n * Признак, что необходимо отобразить скелетон изображения новости.\n */\n @Input() public hasImg: boolean = true;\n\n /**\n * Признак того, что этот компонент отображается на мобильном устройстве.\n */\n @HostBinding('class.is_mobile')\n public readonly isMobile: boolean = inject(TUI_IS_MOBILE);\n}\n","<div class=\"relative flex h-full cursor-pointer flex-col gap-2 overflow-hidden rounded-xl bg-white px-2 pb-4 pt-2 shadow-sc-2\">\n <div\n *ngIf=\"hasImg; else textBlock\"\n class=\"w-full grow rounded-xl bg-tui-base-02\"\n ></div>\n <ng-template #textBlock>\n <div class=\"py-4.5 flex w-full flex-col gap-2 px-6\">\n <div class=\"h-3 w-full rounded bg-tui-base-02\"></div>\n <div class=\"h-3 w-3/4 rounded bg-tui-base-02\"></div>\n <div class=\"h-3 w-full rounded bg-tui-base-02\"></div>\n <div class=\"h-3 w-3/4 rounded bg-tui-base-02\"></div>\n <div class=\"h-3 w-full rounded bg-tui-base-02\"></div>\n </div>\n </ng-template>\n\n <div class=\"w-3/4\">\n <ng-container *ngTemplateOutlet=\"textBlock\"></ng-container>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TuiButton } from '@taiga-ui/core';\n\nimport { ScShareButtonComponent } from './sc-share-button.component';\n\n/**\n * Модуль работы кнопки \"Поделиться\".\n */\n@NgModule({\n declarations: [ScShareButtonComponent],\n imports: [CommonModule, TuiButton],\n exports: [ScShareButtonComponent],\n})\nexport class ScShareButtonModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\n\nimport { ScShareButtonModule } from '../share-button';\nimport { ScNewsCardComponent } from './news-card/sc-news-card.component';\nimport { ScNewsCardSkeletonComponent } from './news-card-skeleton/sc-news-card-skeleton.component';\n\n/**\n * Модуль работы с новостями.\n */\n@NgModule({\n declarations: [ScNewsCardComponent, ScNewsCardSkeletonComponent],\n imports: [CommonModule, RouterModule, ScShareButtonModule],\n exports: [ScNewsCardComponent, ScNewsCardSkeletonComponent],\n})\nexport class ScNewsModule {}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Inject, Input, Output, TemplateRef, ViewChild } from '@angular/core';\nimport { SC_PATH_IMAGE_NOT_FOUND, SC_URLS, ScCartItem, ScIUrls, ScProduct, ScUnitsHelper } from '@snabcentr/client-core';\nimport { TuiDialogContext } from '@taiga-ui/core';\nimport { TuiPreviewDialogService } from '@taiga-ui/kit';\n\n/**\n * Компонент карточки элемента заказа.\n */\n@Component({\n selector: 'sc-order-item-mobile',\n templateUrl: './sc-order-item-mobile.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScOrderItemMobileComponent {\n /**\n * Ссылка на представление спецификации.\n */\n @ViewChild('specificationPreview')\n private readonly specificationPreviewRef?: TemplateRef<TuiDialogContext>;\n\n /**\n * Элемент заказа.\n */\n @Input()\n public orderItem?: ScCartItem;\n\n /**\n * Событие нажатия на карточку.\n */\n @Output()\n public clickCardEvent: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на дополнительные действия.\n */\n @Output()\n public clickActionsEvent: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Инициирует экземпляр класса {@link ScOrderItemMobileComponent}.\n *\n * @param unitsHelper Объект-хэлпер для работы со значениями единиц измерения товара.\n * @param previewDialogService Сервис диалогового окна предварительного просмотра.\n * @param urls Список ссылок на разделы backend'a.\n * @param pathImageNotFound Путь до изображения 'Товар не найден'.\n */\n public constructor(\n public readonly unitsHelper: ScUnitsHelper,\n @Inject(TuiPreviewDialogService)\n private readonly previewDialogService: TuiPreviewDialogService,\n @Inject(SC_URLS) private readonly urls: ScIUrls,\n @Inject(SC_PATH_IMAGE_NOT_FOUND) private readonly pathImageNotFound: string\n ) {}\n\n /**\n * Продукт элемента заказа.\n */\n public get product(): ScProduct | undefined {\n return this.orderItem?.product;\n }\n\n /**\n * Отобразить спецификацию.\n */\n public showSpecification(): void {\n this.previewDialogService.open(this.specificationPreviewRef ?? '').subscribe();\n }\n\n /**\n * Возвращает ссылку на изображение карточки товара.\n */\n public getCardImage(): string {\n return this.product?.getImage(this.urls.imgServerUrl) ?? this.urls.imgServerUrl + this.pathImageNotFound;\n }\n}\n","<div class=\"relative flex flex-wrap gap-x-4 gap-y-2 rounded-xl border border-tui-base-04 bg-white p-4 shadow-sc-2\">\n <ng-container *ngIf=\"orderItem && product; else skeleton\">\n <button\n tuiIconButton\n (click)=\"clickActionsEvent.emit()\"\n size=\"m\"\n iconStart=\"@tui.ellipsis-vertical\"\n appearance=\"float\"\n class=\"!absolute right-0 top-0 !hidden\"\n ></button>\n <div class=\"flex grow gap-2\">\n <div class=\"flex size-20 shrink-0 items-center justify-center overflow-hidden\">\n <img\n (click)=\"clickCardEvent.emit()\"\n [src]=\"getCardImage()\"\n [alt]=\"product.name\"\n [class.p-5]=\"!product.images?.length\"\n class=\"cursor-pointer\"\n />\n </div>\n\n <div class=\"flex grow flex-wrap gap-x-8 self-center\">\n <div class=\"flex grow basis-min-content flex-col\">\n <a\n tuiLink\n (click)=\"clickCardEvent.emit()\"\n >\n <span class=\"font-bold\">{{ product.name }}</span>\n </a>\n <div class=\"flex flex-col gap-y-0.5 text-tui-text-02\">\n <div class=\"flex flex-wrap\">\n <p class=\"w-40\">Артикул: {{ product.code }}</p>\n <p\n class=\"w-40\"\n *ngIf=\"product.pack\"\n >\n Норма упаковки: {{ product.pack }}\n </p>\n </div>\n <a\n tuiLink\n *ngIf=\"orderItem.specificationImgUrl\"\n (click)=\"showSpecification()\"\n >Спецификация</a\n >\n <ng-template\n #specificationPreview\n let-preview\n >\n <tui-preview\n [rotatable]=\"false\"\n [zoomable]=\"false\"\n >\n <img\n *polymorpheusOutlet=\"orderItem.specificationImgUrl as src\"\n alt=\"preview\"\n [src]=\"orderItem.specificationImgUrl\"\n />\n <button\n iconStart=\"@tui.x\"\n title=\"Close\"\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n (click)=\"preview.complete()\"\n ></button>\n </tui-preview>\n </ng-template>\n </div>\n\n <div class=\"flex flex-wrap gap-y-0.5\">\n <span\n *ngIf=\"product.discount\"\n class=\"w-50 items-center gap-x-2 gap-y-0.5 text-xs text-tui-text-02\"\n >\n <span class=\"line-through\">{{ product.discountCostString }}</span> &nbsp;\n <span class=\"font-bold text-tui-success-fill\"> -{{ product.discount.percent }}% </span>\n <ng-template #discountHint>\n <div class=\"font-bold\">{{ product.discount.name }}</div>\n <div *ngIf=\"product.discount.expiredAt as expiredAt\">Дата окончания: {{ expiredAt }}</div>\n </ng-template>\n </span>\n <p class=\"w-50 flex items-baseline gap-x-2 gap-y-0.5 font-bold\">\n <span>{{ product.costRubString }}</span>\n <span\n *ngIf=\"!product.priceInRub\"\n class=\"text-xs text-tui-text-02\"\n >{{ product.costString }}</span\n >\n </p>\n </div>\n </div>\n <div class=\"flex flex-wrap content-center\">\n <div class=\"w-50 flex flex-col gap-x-8 gap-y-0.5\">\n <ng-container *ngIf=\"orderItem.height; else length\">\n <p>Высота: {{ orderItem.height }} м.</p>\n </ng-container>\n <ng-template #length>\n <p *ngIf=\"orderItem.length\">Длина: {{ orderItem.length }} м.</p>\n </ng-template>\n <p *ngIf=\"orderItem.width\">Ширина: {{ orderItem.width }} м.</p>\n <p class=\"flex flex-col items-baseline gap-x-2\">\n <span class=\"whitespace-nowrap text-body-m-bold\">\n Количество: <span class=\"whitespace-nowrap\">{{ orderItem.quantity }}</span>\n </span>\n </p>\n </div>\n\n <div class=\"w-50 flex flex-col gap-y-0.5\">\n <p class=\"whitespace-nowrap text-body-m-bold\">\n Сумма: <span class=\"whitespace-nowrap\"> {{ orderItem.getCostRubStr() }} </span>\n </p>\n <sc-price-warehouse-stock\n [product]=\"product\"\n [fromMain]=\"false\"\n ></sc-price-warehouse-stock>\n </div>\n </div>\n </div>\n </div>\n </ng-container>\n\n <ng-template #skeleton>\n <div class=\"flex w-full gap-2\">\n <div class=\"size-20 rounded-xl bg-tui-base-02\"></div>\n <div class=\"flex grow flex-col gap-2.5 bg-white\">\n <div class=\"h-4 w-full rounded-xl bg-tui-base-02\"></div>\n <div class=\"h-4 w-3/5 rounded-xl bg-tui-base-02\"></div>\n <div class=\"h-4 w-4/5 rounded-xl bg-tui-base-02\"></div>\n </div>\n </div>\n </ng-template>\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\n/**\n * Компонент статуса оплаты заказа.\n */\n@Component({\n selector: 'sc-payment-status',\n templateUrl: './sc-payment-status.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScPaymentStatusComponent {\n /**\n * Признак того, успешна ли прошла оплата, или нет.\n */\n @Input()\n public status: 'success' | 'error' | null;\n\n /**\n * Номер оплаченного заказа.\n */\n @Input()\n public orderId: string | null;\n\n /**\n * Событие нажатия на кнопку \"Вернуться к списку заказов\".\n */\n @Output()\n public backToOrdersClick: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на кнопку \"На главную\".\n */\n @Output()\n public backToOrderClick: EventEmitter<void> = new EventEmitter<void>();\n}\n","<ng-container *ngIf=\"status && orderId; else failed\">\n <ng-container [ngSwitch]=\"status\">\n <tui-block-status *ngSwitchCase=\"'success'\">\n <tui-icon icon=\"@tui.circle-check\" tuiSlot=\"top\" class=\"scale-[3] !h-20 !text-green-500\"></tui-icon>\n <h4>Спасибо!</h4>\n <br />\n <div class=\"font-bold\">Ваш заказ успешно оплачен. Мы свяжемся с вами в ближайшее время.</div>\n <br />\n <div class=\"font-bold\">\n Номер вашего заказа: <a tuiLink [pseudo]=\"true\" (click)=\"backToOrderClick.emit()\">{{orderId}}</a>\n </div>\n\n <button tuiButton (click)=\"backToOrdersClick.emit()\">Вернуться к заказам</button>\n </tui-block-status>\n <tui-block-status *ngSwitchCase=\"'error'\">\n <tui-icon icon=\"@tui.circle-x\" class=\"scale-[3] !h-20 !text-red-500\" tuiSlot=\"top\"></tui-icon>\n <h4>Оплата не прошла!</h4>\n <br />\n <div class=\"font-bold\">При обработке платежа произошла ошибка.</div>\n <button tuiButton tuiItem (click)=\"backToOrderClick.emit()\">Вернуться к заказу</button>\n </tui-block-status>\n </ng-container>\n</ng-container>\n\n<ng-template #failed>\n <tui-block-status>\n <tui-icon icon=\"@tui.info\" class=\"scale-[3] !h-20 !text-yellow-500\" tuiSlot=\"top\"></tui-icon>\n <h4>Что-то пошло не так!</h4>\n <button tuiButton tuiItem (click)=\"backToOrdersClick.emit()\">Вернуться к заказам</button>\n </tui-block-status>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TuiButton, TuiIcon, TuiLink } from '@taiga-ui/core';\nimport { TuiPreview } from '@taiga-ui/kit';\nimport { TuiBlockStatus } from '@taiga-ui/layout';\nimport { PolymorpheusOutlet, PolymorpheusTemplate } from '@taiga-ui/polymorpheus';\n\nimport { ScCatalogModule } from '../catalog';\nimport { ScOrderItemMobileComponent } from './order-item-mobile/sc-order-item-mobile.component';\nimport { ScPaymentStatusComponent } from './sc-payment-status/sc-payment-status.component';\n\n/**\n * Модуль заказов.\n */\n@NgModule({\n declarations: [ScOrderItemMobileComponent, ScPaymentStatusComponent],\n exports: [ScOrderItemMobileComponent, ScPaymentStatusComponent],\n imports: [CommonModule, TuiLink, TuiButton, TuiIcon, ...TuiBlockStatus, ...TuiPreview, ScCatalogModule, PolymorpheusTemplate, PolymorpheusOutlet],\n})\nexport class ScOrderModule {}\n","/* eslint-disable @typescript-eslint/unbound-method,lodash/prefer-lodash-method */\n\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { ChangeDetectionStrategy, Component, inject, Input, OnInit } from '@angular/core';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport { ScIGetSamplesData, ScISuggestionType, ScSamplesService, ScUserService } from '@snabcentr/client-core';\nimport { TuiDialogContext } from '@taiga-ui/core';\nimport { POLYMORPHEUS_CONTEXT } from '@taiga-ui/polymorpheus';\nimport { catchError, filter, map, Observable, of, share, startWith, Subject, switchMap, tap } from 'rxjs';\n\nimport { ApiErrorResponse } from '../../auth';\n\n/**\n * Компонент формы запроса бесплатного образца.\n */\n@Component({\n selector: 'sc-ask-to-sample-form',\n templateUrl: './sc-ask-to-sample-form.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScAskToSampleFormComponent implements OnInit {\n /**\n * Сервис работы с образцами.\n */\n private readonly samplesService = inject(ScSamplesService);\n\n /**\n * Сервис информации о пользователе.\n */\n public readonly user$ = inject(ScUserService)\n .getUserChange$()\n .pipe(\n tap((user) => {\n if (user.isGuest) {\n (this.form as FormGroup).addControl('recaptcha', this.recaptchaControl);\n this.form.controls.email.reset();\n this.form.controls.name.reset();\n this.form.controls.phone.reset();\n } else {\n (this.form as FormGroup).removeControl('recaptcha');\n this.form.patchValue({\n name: user.name,\n phone: user.contacts.phone.value,\n email: user.contacts.email.value,\n });\n }\n })\n );\n\n /**\n * Контекст диалогового окна, в котором открыт компонент.\n */\n private readonly context = inject<TuiDialogContext<void, { formName: 'order-sample' | 'buy-products' }>>(POLYMORPHEUS_CONTEXT, {\n optional: true,\n });\n\n /**\n * Поле ввода для recaptcha.\n */\n public readonly recaptchaControl = new FormControl<string | null>(null, Validators.required);\n\n /**\n * Наименование формы, с которой отправляется запрос.\n */\n @Input()\n public formName?: 'order-sample' | 'buy-products';\n\n /**\n * Группа полей ввода для формы «Пожелания и предложения по улучшению сайта».\n */\n public form = new FormGroup({\n name: new FormControl<string | null>(null, [Validators.required, Validators.minLength(3)]),\n phone: new FormControl<string | null>(null, [Validators.required, Validators.minLength(12)]),\n email: new FormControl<string | null>(null, [Validators.required, Validators.email]),\n description: new FormControl<string | null>('Неизвестная форма', [Validators.required, Validators.minLength(3)]),\n recaptcha: new FormControl(null, Validators.required),\n });\n\n /**\n * Перечисление типов подсказок.\n */\n public readonly suggestionType: typeof ScISuggestionType = ScISuggestionType;\n\n /**\n * {@link Subject} события отправки формы.\n */\n public readonly onSubmit: Subject<void> = new Subject<void>();\n\n /**\n * {@link Observable} запроса на отправку данных.\n */\n public readonly request$: Observable<undefined | null> = this.onSubmit.pipe(\n filter(() => this.form.valid),\n map(() => this.form.value as ScIGetSamplesData),\n switchMap((value) =>\n this.samplesService.getSamples(value).pipe(\n tap(() => {\n if (this.context) {\n this.context.completeWith();\n } else {\n this.form.controls.email.reset();\n this.form.controls.name.reset();\n this.form.controls.phone.reset();\n }\n }),\n // eslint-disable-next-line rxjs/no-implicit-any-catch\n catchError((error: HttpErrorResponse) => {\n this.form.markAllAsTouched();\n\n const { errors, message } = error.error as ApiErrorResponse;\n\n if (errors) {\n Object.keys(errors).forEach((key) => {\n const control = this.form.get(key);\n\n if (control) {\n // eslint-disable-next-line security/detect-object-injection\n control.setErrors({ serverResponse: errors[key] });\n }\n });\n } else if (message) {\n this.form.setErrors({ serverResponse: [message] });\n }\n\n return of(null);\n }),\n // eslint-disable-next-line unicorn/no-useless-undefined\n startWith(undefined)\n )\n ),\n share()\n );\n\n /**\n * {@link Observable} изменения состояния загрузки данных.\n */\n public readonly loading$: Observable<boolean> = this.request$.pipe(map((value) => value === undefined));\n\n /** @inheritdoc */\n public ngOnInit(): void {\n switch (this.formName ?? this.context?.data.formName) {\n case 'order-sample':\n this.form.controls.description.patchValue('Форма \"Получите бесплатный образец\"');\n break;\n case 'buy-products':\n this.form.controls.description.patchValue('Форма \"Оставить заявку на покупку\"');\n break;\n default:\n this.form.controls.description.patchValue('Неизвестная форма');\n break;\n }\n }\n}\n","<form\n *tuiLet=\"user$ | async\"\n [formGroup]=\"form\"\n (ngSubmit)=\"onSubmit.next()\"\n class=\"flex flex-col justify-between gap-4\"\n>\n <label tuiLabel\n >ФИО\n <tui-input formControlName=\"name\"> Иванов Иван Иванович </tui-input>\n <tui-error\n formControlName=\"name\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <label tuiLabel\n >Телефон\n <tui-input-phone formControlName=\"phone\"> Телефон </tui-input-phone>\n <tui-error\n formControlName=\"phone\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <label\n tuiLabel\n class=\"w-full\"\n >Адрес электронной почты\n <tui-input formControlName=\"email\">\n Адрес электронной почты\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.email\"\n ></sc-suggestion-field>\n </tui-input>\n <tui-error\n formControlName=\"email\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <div\n *ngIf=\"form.get('recaptcha')\"\n class=\"mb-3 max-h-20 overflow-hidden duration-500\"\n [ngClass]=\"{ '!max-h-0 !-m-2': form.get('recaptcha')?.valid }\"\n >\n <re-captcha formControlName=\"recaptcha\"></re-captcha>\n </div>\n <button\n tuiButton\n [disabled]=\"form.invalid\"\n [loading]=\"!!(loading$ | async)\"\n type=\"submit\"\n iconStart=\"@tui.sc.send\"\n class=\"self-center\"\n >\n Оставить\n </button>\n</form>\n","import { ChangeDetectionStrategy, Component, EventEmitter, inject, Input, Output } from '@angular/core';\nimport { TUI_IS_MOBILE, tuiIsPresent } from '@taiga-ui/cdk';\nimport { filter, interval, map, startWith, switchMap, tap } from 'rxjs';\n\nimport { ScIPreviewSample } from '../interfaces/sc-i-preview-sample';\n\n/**\n * Компонент представления образцов товара.\n */\n@Component({\n selector: 'sc-preview-sample',\n templateUrl: './sc-preview-sample.component.html',\n styleUrls: ['./sc-preview-sample.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScPreviewSampleComponent {\n /**\n * Индекс элемента в галерее.\n */\n @Input()\n public index: number = 0;\n\n /**\n * {@link EventEmitter} изменения индекса элемента в галерее.\n */\n @Output()\n public readonly indexChange: EventEmitter<number> = new EventEmitter<number>();\n\n /**\n * Объект данных товара.\n */\n @Input()\n public sample: ScIPreviewSample;\n\n /**\n * Признак, что необходимо отображать переключатели на карусели.\n */\n @Input()\n public isShowCarouselSwitches: boolean = !inject(TUI_IS_MOBILE);\n\n /**\n * Признак, что при горизонтальном отображении компонент должен быть развёрнут.\n */\n @Input()\n public isReverse: boolean = false;\n\n /**\n * {@link Observable} изменения индекса элемента в галерее для автоматического переключения по таймеру.\n */\n public indexChangeInterval = this.indexChange.pipe(\n startWith(0),\n filter(() => Boolean(this.sample.items && this.sample.items.length > 1)),\n switchMap(() => interval(5000).pipe()),\n map(() => this.sample.items?.length),\n filter(tuiIsPresent),\n tap((itemsLength) => {\n this.onChangeIndex((this.index + 1) % itemsLength);\n })\n );\n\n /**\n * Переключает на предыдущее изображение в галерее.\n */\n public onPrevious(): void {\n if (this.sample.items?.length) {\n // eslint-disable-next-line unicorn/explicit-length-check\n this.onChangeIndex((this.index || this.sample.items.length) - 1);\n }\n }\n\n /**\n * Переключает на следующее изображение в галерее.\n */\n public onNext(): void {\n if (this.sample.items?.length) {\n this.onChangeIndex((this.index + 1) % this.sample.items.length);\n }\n }\n\n /**\n * Обработчик изменения индекса элемента в галерее.\n *\n * @param index Индекс элемента в галерее.\n */\n public onChangeIndex(index: number): void {\n if (index !== this.index) {\n this.index = index;\n this.indexChange.emit(index);\n }\n }\n}\n","<div\n *tuiLet=\"sample.items && sample.items.length > 1 as isShownSwitches\"\n class=\"mb-4 flex flex-col-reverse gap-4 md:mb-0 md:flex-row md:gap-8\"\n [class.md:!flex-row-reverse]=\"isReverse\"\n>\n <div class=\"flex max-w-96 flex-1 flex-col justify-center self-center md:max-w-none md:gap-4\">\n <div class=\"flex w-full flex-col gap-3 md:gap-4 md:px-8\">\n <div class=\"text-body-l-bold\">{{ sample.title }}</div>\n <div>{{ sample.description }}</div>\n <div\n *ngIf=\"isShownSwitches\"\n class=\"flex gap-4\"\n >\n <tui-avatar [src]=\"item.buttonImageUrl\" [round]=\"false\"\n *ngFor=\"let item of sample.items; let itemIndex = index\"\n (tuiHoveredChange)=\"onChangeIndex(itemIndex)\"\n \n [class.active]=\"index === itemIndex\"\n ></tui-avatar>\n </div>\n <img\n *ngIf=\"sample.descriptionImageUrl\"\n [src]=\"sample.descriptionImageUrl\"\n alt=\"Конструкция образца {{ sample.title }}\"\n class=\"w-fit\"\n />\n <div\n *ngIf=\"sample.actions && sample.actions.length\"\n class=\"flex flex-wrap gap-3 md:gap-4\"\n >\n <button\n *ngFor=\"let action of sample.actions\"\n tuiButton\n (click)=\"action.handler()\"\n [iconStart]=\"action.icon\"\n appearance=\"secondary\"\n >\n {{ action.label }}\n </button>\n </div>\n </div>\n </div>\n\n <div class=\"relative h-[19em] flex-1 overflow-hidden rounded-xl shadow-tui-shadow md:h-96 lg:h-[28rem]\">\n <button\n *ngIf=\"isShownSwitches && isShowCarouselSwitches\"\n tuiIconButton\n (click)=\"onPrevious()\"\n iconStart=\"@tui.chevron-left\"\n appearance=\"icon\"\n class=\"!absolute left-0 top-1/2 z-10 ml-2 -translate-y-1/2\"\n ></button>\n\n <tui-carousel\n *tuiLet=\"indexChangeInterval | async\"\n [(index)]=\"index\"\n class=\"h-[19em] w-full md:h-96 lg:h-[28rem]\"\n >\n <ng-container *ngFor=\"let item of sample.items\">\n <div\n *tuiItem\n [style.backgroundImage]=\"'url(' + item.carouselItemImage + ')'\"\n class=\"h-[19em] w-full bg-cover bg-right md:h-96 lg:h-[28rem]\"\n ></div>\n </ng-container>\n </tui-carousel>\n <button\n *ngIf=\"isShownSwitches && isShowCarouselSwitches\"\n tuiIconButton\n (click)=\"onNext()\"\n iconStart=\"@tui.chevron-right\"\n appearance=\"icon\"\n class=\"!absolute right-0 top-1/2 z-10 mr-2 -translate-y-1/2\"\n ></button>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { TuiHovered, TuiLet } from '@taiga-ui/cdk';\nimport { TuiButton, TuiError, TuiLabel } from '@taiga-ui/core';\nimport { TuiAvatar, TuiButtonLoading, TuiCarousel, TuiFieldErrorPipe } from '@taiga-ui/kit';\nimport { TuiInputModule, TuiInputPhoneModule } from '@taiga-ui/legacy';\nimport { RecaptchaFormsModule, RecaptchaModule } from 'ng-recaptcha-2';\n\nimport { ScFormFieldsModule } from '../form-fields';\nimport { ScAskToSampleFormComponent } from './ask-to-sample-form/sc-ask-to-sample-form.component';\nimport { ScPreviewSampleComponent } from './preview-sample/sc-preview-sample.component';\n\n/**\n * Модуль представления образцов товара.\n */\n@NgModule({\n declarations: [ScPreviewSampleComponent, ScAskToSampleFormComponent],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n TuiError,\n TuiFieldErrorPipe,\n ScFormFieldsModule,\n TuiInputModule,\n TuiInputPhoneModule,\n ...TuiCarousel,\n TuiAvatar,\n TuiHovered,\n TuiLet,\n TuiButton,\n TuiButtonLoading,\n TuiLabel,\n RecaptchaFormsModule,\n RecaptchaModule,\n ],\n exports: [ScPreviewSampleComponent, ScAskToSampleFormComponent],\n})\nexport class ScPreviewSampleModule {}\n","import { InjectionToken, Provider } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ScUser, ScUserService } from '@snabcentr/client-core';\nimport { Observable } from 'rxjs';\n\n/**\n * Токен потока данных о текущем пользователе.\n */\nexport const SC_USER_INFO = new InjectionToken<Observable<ScUser | undefined>>('A stream with current user information');\n\n/**\n * Фабрика создания потока данных о текущем пользователе.\n *\n * @param userService Сервис данных о пользователе.\n */\nexport function scUserFactory(userService: ScUserService): Observable<ScUser | undefined> {\n // TODO: TASK[#7615] Отслеживать выполнение запроса изменения информации о пользователе после доработки snabcentr-core-lib.\n return userService.getUserChange$().pipe(takeUntilDestroyed());\n}\n\n/**\n * Провайдер потока данных о текущем пользователе.\n */\nexport const SC_USER_PROVIDERS: Provider[] = [\n {\n provide: SC_USER_INFO,\n deps: [ScUserService],\n useFactory: scUserFactory,\n },\n];\n","/* eslint-disable @typescript-eslint/unbound-method */\n\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { ChangeDetectionStrategy, Component, Output } from '@angular/core';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport { ScIChangePassword, ScUserService } from '@snabcentr/client-core';\nimport { tuiIsFalsy, tuiIsPresent } from '@taiga-ui/cdk';\nimport { catchError, filter, map, Observable, of, share, startWith, Subject, switchMap, tap } from 'rxjs';\n\nimport { ApiErrorResponse } from '../../auth';\nimport { scPasswordConfirmMatchingValidator } from '../../validators';\n\n/**\n * Компонент смены пароля пользователя.\n */\n@Component({\n selector: 'sc-reset-user-password',\n templateUrl: './sc-reset-user-password.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScResetUserPasswordComponent {\n /**\n * Форма для изменения пароля пользователя.\n */\n public form = new FormGroup(\n {\n currentPassword: new FormControl(null, [Validators.required, Validators.minLength(8)]),\n password: new FormControl(null, [Validators.required, Validators.minLength(8)]),\n passwordConfirm: new FormControl(null, [Validators.required, Validators.minLength(8)]),\n },\n { validators: scPasswordConfirmMatchingValidator('password', 'passwordConfirm') }\n );\n\n /**\n * {@link Subject} события отправки формы.\n */\n public readonly onSubmit: Subject<void> = new Subject<void>();\n\n /**\n * {@link Observable} запроса данных аутентификации.\n */\n private readonly request$ = this.onSubmit.pipe(\n filter(() => this.form.valid),\n map(() => this.form.value as ScIChangePassword),\n switchMap((value) =>\n this.userService.updateUserInfo$(value).pipe(\n map(() => ({ success: true })),\n tap(() => {\n this.form.reset();\n }),\n catchError((error: HttpErrorResponse) => {\n const errorResponse = error.error as ApiErrorResponse;\n\n for (const key in errorResponse.errors) {\n this.form.get(key)?.setErrors({ serverResponse: errorResponse.errors[key] });\n }\n\n if (!errorResponse.errors && errorResponse.message) {\n this.form.setErrors({ serverResponse: [errorResponse.message] });\n }\n\n return of({ success: false });\n }),\n startWith(null)\n )\n ),\n share()\n );\n\n /**\n * {@link Observable} изменения состояния загрузки данных аутентификации по email.\n */\n public readonly loading$: Observable<boolean> = this.request$.pipe(map(tuiIsFalsy));\n\n /**\n * Сигнал события события смены пароля.\n */\n @Output()\n public readonly successResetPassword = this.request$.pipe(\n filter(tuiIsPresent),\n filter(({ success }) => success)\n );\n\n /**\n * Инициализирует экземпляр класса {@link ScResetUserPasswordComponent}.\n *\n * @param userService Сервис данных о пользователе.\n */\n public constructor(private readonly userService: ScUserService) {}\n}\n","<form\n [formGroup]=\"form\"\n (ngSubmit)=\"onSubmit.next()\"\n class=\"flex flex-col gap-4 p-1 lg:flex-row\"\n>\n <div class=\"grid items-start gap-2 lg:grow lg:grid-cols-3 lg:grid-rows-1 lg:gap-4\">\n <label tuiLabel\n >Старый пароль\n <tui-input-password formControlName=\"currentPassword\">\n Старый пароль\n <input\n tuiTextfieldLegacy\n autocomplete=\"new-password\"\n />\n </tui-input-password>\n <tui-error\n formControlName=\"currentPassword\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <label tuiLabel\n >Придумайте новый пароль\n <tui-input-password\n [pseudoInvalid]=\"form.hasError('passwordNotEquivalent')\"\n formControlName=\"password\"\n >\n Придумайте новый пароль\n <input\n tuiTextfieldLegacy\n autocomplete=\"new-password\"\n />\n </tui-input-password>\n <tui-error\n formControlName=\"password\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <label tuiLabel\n >Повторите новый пароль\n <tui-input-password\n [pseudoInvalid]=\"form.hasError('passwordNotEquivalent')\"\n formControlName=\"passwordConfirm\"\n >\n Повторите новый пароль\n <input\n tuiTextfieldLegacy\n autocomplete=\"new-password\"\n />\n </tui-input-password>\n <tui-error\n formControlName=\"passwordConfirm\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <tui-error\n *ngIf=\"form.invalid\"\n class=\"lg:!hidden\"\n [formGroup]=\"form\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </div>\n <div class=\"flex flex-col justify-center lg:mt-5 lg:h-11\">\n <button\n *tuiLet=\"!!(loading$ | async) as loading\"\n tuiButton\n [loading]=\"loading\"\n type=\"submit\"\n [disabled]=\"form.invalid || loading\"\n iconStart=\"@tui.save\"\n class=\"font-medium\"\n >\n Сохранить\n </button>\n </div>\n</form>\n<tui-error\n class=\"!hidden lg:!block\"\n [formGroup]=\"form\"\n [error]=\"[] | tuiFieldError | async\"\n></tui-error>\n","/* eslint-disable guard-for-in,@typescript-eslint/unbound-method,rxjs/no-implicit-any-catch,no-restricted-syntax */\n\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { AfterViewInit, ChangeDetectionStrategy, Component, EventEmitter, Inject, Optional, Output } from '@angular/core';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport { ScIPhoneOnDataApprove, ScISuggestionType, ScIUserOnDataUpdate, ScUser, ScUserMetrikaGoalsEnum, ScUserMetrikaService, ScUserService } from '@snabcentr/client-core';\nimport { tuiIsFalsy } from '@taiga-ui/cdk';\nimport { TuiDialogContext } from '@taiga-ui/core';\nimport { POLYMORPHEUS_CONTEXT } from '@taiga-ui/polymorpheus';\nimport { catchError, filter, map, Observable, of, skip, startWith, Subject, switchMap, tap } from 'rxjs';\n\nimport { ApiErrorResponse } from '../../auth';\nimport { SC_USER_INFO, SC_USER_PROVIDERS } from '../../providers';\n\n/**\n * Диалоговое окно изменения данных пользователя.\n */\n@Component({\n selector: 'sc-update-user-info-dialog',\n templateUrl: './sc-update-user-info-dialog.component.html',\n providers: [SC_USER_PROVIDERS],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScUpdateUserInfoDialogComponent implements AfterViewInit {\n /**\n * Перечисление типов подсказок.\n */\n public readonly suggestionType: typeof ScISuggestionType = ScISuggestionType;\n\n /**\n * Группа полей ввода формы общих данных пользователя для их редактирования.\n */\n public readonly form = new FormGroup({\n name: new FormControl<string | null>(null, [Validators.required, Validators.minLength(3)]),\n email: new FormControl<string | null>(null, [Validators.required, Validators.email]),\n phone: new FormControl<string | null>(null, [Validators.required, Validators.minLength(12)]),\n verificationCode: new FormControl<string | null>(null, [Validators.required, Validators.minLength(6)]),\n cityId: new FormControl<number | null>(null, Validators.required),\n getNews: new FormControl<boolean>(false),\n });\n\n /**\n * Сигнал нажатия на кнопку \"Отмена\".\n */\n @Output()\n public readonly cancelButtonClick: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Сигнал события успешного обновления данных пользователя.\n */\n @Output()\n public readonly successUpdateDate: Observable<ScUser> = this.user$.pipe(skip(1));\n\n /**\n * {@link Subject} события отправки формы.\n */\n public readonly onSubmit: Subject<void> = new Subject<void>();\n\n /**\n * {@link Observable} запроса обновления данных пользователя.\n */\n private readonly request$ = this.onSubmit.pipe(\n filter(() => this.form.valid),\n map(() => this.form.value as ScIUserOnDataUpdate | ScIPhoneOnDataApprove),\n switchMap((value) =>\n this.userService.updateUserInfo$(value).pipe(\n switchMap(() => this.userService.updateUserChange$()),\n tap((user) => this.context?.completeWith(user)),\n catchError((error: HttpErrorResponse) => {\n const errorResponse = error.error as ApiErrorResponse;\n\n for (const key in errorResponse.errors) {\n this.form.get(key)?.setErrors({ serverResponse: errorResponse.errors[key] });\n }\n\n if (!errorResponse.errors && errorResponse.message) {\n this.form.setErrors({ serverResponse: [errorResponse.message] });\n }\n return of({} as ScUser);\n }),\n startWith(null)\n )\n )\n );\n\n /**\n * {@link Observable} изменения состояния загрузки данных аутентификации по email.\n */\n public readonly loading$: Observable<boolean> = this.request$.pipe(map(tuiIsFalsy));\n\n /**\n * Инициализирует экземпляр класса {@link ScUpdateUserInfoDialogComponent}.\n *\n * @param user$ Поток информации о текущем пользователе.\n * @param userService Сервис данных о пользователе.\n * @param userMetrikaService Сервис для сбора метрик о действиях пользователей.\n * @param context Контекст диалогового окна, в котором открыт компонент.\n */\n public constructor(\n @Inject(SC_USER_INFO) public readonly user$: Observable<ScUser>,\n private readonly userService: ScUserService,\n private readonly userMetrikaService: ScUserMetrikaService,\n @Optional()\n @Inject(POLYMORPHEUS_CONTEXT)\n public readonly context?: TuiDialogContext<ScUser, ScUpdateUserInfoDialogComponent>\n ) {\n this.user$.subscribe((user) => {\n this.form.patchValue(\n {\n name: user.name,\n email: user.contacts.email.value,\n phone: user.contacts.phone.value,\n cityId: user.city,\n getNews: user.getNews,\n },\n { emitEvent: false }\n );\n });\n }\n\n /** @inheritdoc */\n public ngAfterViewInit(): void {\n this.userMetrikaService.emitUserMetrikaEvent({\n target: ScUserMetrikaGoalsEnum.userProfileEditShow,\n });\n }\n}\n","<form\n [formGroup]=\"form\"\n *ngIf=\"user$ | async as user\"\n (ngSubmit)=\"onSubmit.next()\"\n class=\"flex flex-col gap-4\"\n>\n <label tuiLabel\n >{{ user.isOrg ? 'Название организации или ИП' : 'Ф.И.О.' }}\n <tui-input formControlName=\"name\">\n {{ user.isOrg ? 'Название организации или ИП' : 'Ф.И.О.' }}\n <ng-container *ngIf=\"user.isOrg\">\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.organization\"\n ></sc-suggestion-field>\n </ng-container>\n </tui-input>\n <tui-error\n formControlName=\"name\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <sc-verification-phone-check-form\n *tuiLet=\"user.contacts.phone.value === form.value.phone as phoneIsChange\"\n [showCodeFields]=\"!phoneIsChange\"\n [shouldBeBusy]=\"phoneIsChange\"\n class=\"w-full\"\n ></sc-verification-phone-check-form>\n <label\n tuiLabel\n class=\"w-full\"\n >Адрес электронной почты\n <tui-input formControlName=\"email\">\n Адрес электронной почты\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.email\"\n ></sc-suggestion-field>\n </tui-input>\n <tui-error\n formControlName=\"email\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <sc-addresses-selection-field></sc-addresses-selection-field>\n <label tuiLabel>\n <input\n tuiCheckbox\n type=\"checkbox\"\n formControlName=\"getNews\"\n class=\"w-full\"\n />\n Я хочу получать рассылку Снабцентр о скидках и новостях по электронной почте.\n </label>\n <div class=\"flex justify-center gap-4\">\n <button\n tuiButton\n (click)=\"context ? context.$implicit.complete() : cancelButtonClick.emit()\"\n type=\"button\"\n iconStart=\"@tui.x\"\n appearance=\"secondary\"\n >\n Отмена\n </button>\n <button\n tuiButton\n [disabled]=\"form.invalid\"\n [loading]=\"!!(loading$ | async)\"\n type=\"submit\"\n iconStart=\"@tui.save\"\n >\n Сохранить\n </button>\n </div>\n</form>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Output } from '@angular/core';\nimport { ScIManager, ScUserService } from '@snabcentr/client-core';\nimport { map, Observable } from 'rxjs';\n\n/**\n * Компонент персональных менеджеров пользователя.\n */\n@Component({\n selector: 'sc-user-managers',\n templateUrl: './sc-user-managers.component.html',\n styleUrls: ['./sc-user-managers.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScUserManagersComponent {\n /**\n * Персональные менеджеры пользователя.\n */\n public readonly managers$: Observable<ScIManager[] | undefined> = this.userService\n .getUserChange$()\n .pipe(map((user) => user.managers?.sort((a: ScIManager, b: ScIManager) => Number(Boolean(b.isPrimary)) - Number(Boolean(a.isPrimary)))));\n\n /**\n * Событие нажатия на кнопку QR кода.\n */\n @Output()\n public readonly qrClickEvent: EventEmitter<ScIManager> = new EventEmitter<ScIManager>();\n\n /**\n * Инициализирует экземпляр класса {@link ScUserManagersComponent}.\n *\n * @param userService Сервис данных о пользователе.\n */\n public constructor(private readonly userService: ScUserService) {}\n}\n","<p class=\"mb-2 font-extrabold\">Ваши персональные менеджеры:</p>\n<ng-container *ngFor=\"let manager of managers$ | async; let last = last\">\n <div class=\"flex justify-between\">\n <div class=\"flex flex-col gap-1 !font-medium text-tui-text-02\">\n {{ manager.name }}\n <a\n tuiLink\n [pseudo]=\"true\"\n href=\"mailto:{{ manager.contacts.email }}\"\n iconStart=\"@tui.mail\"\n >\n {{ manager.contacts.email }}\n </a>\n <a\n tuiLink\n [scTelLink]=\"manager.contacts.phone\"\n [pseudo]=\"true\"\n href=\"tel:{{ manager.contacts.phone | scFormatePhone }}\"\n iconStart=\"@tui.phone\"\n >\n {{ manager.contacts.phone | scFormatePhone }}\n </a>\n </div>\n <button\n tuiIconButton\n size=\"m\"\n appearance=\"secondary\"\n iconStart=\"@tui.scan-qr-code\"\n (click)=\"qrClickEvent.emit(manager)\"\n ></button>\n </div>\n <hr\n *ngIf=\"!last\"\n class=\"my-2 h-px border-0 bg-tui-base-04\"\n />\n</ng-container>\n","/* eslint-disable no-restricted-syntax,@typescript-eslint/unbound-method */\n\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { AfterViewInit, ChangeDetectionStrategy, Component, Inject, Optional } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport { ScApprovedData, ScIPhoneOnDataApprove, ScUser, ScUserMetrikaGoalsEnum, ScUserMetrikaService, ScUserService, ScVerificationService } from '@snabcentr/client-core';\nimport { tuiIsFalsy } from '@taiga-ui/cdk';\nimport { TuiDialogContext } from '@taiga-ui/core';\nimport { POLYMORPHEUS_CONTEXT } from '@taiga-ui/polymorpheus';\nimport { catchError, filter, map, Observable, of, share, startWith, Subject, switchMap, tap } from 'rxjs';\n\nimport { ApiErrorResponse } from '../../auth/interfaces/api-error-response';\nimport { SC_USER_INFO, SC_USER_PROVIDERS } from '../../providers/scUserProviders';\n\n/**\n * Диалоговое окно подтверждения номера телефона.\n */\n@Component({\n selector: 'sc-user-phone-approve-dialog',\n templateUrl: './sc-user-phone-approve-dialog.component.html',\n providers: [SC_USER_PROVIDERS],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScUserPhoneApproveDialogComponent implements AfterViewInit {\n /**\n * Наличие кода подтверждения у пользователя.\n */\n public haveCode: boolean = false;\n\n /**\n * Группа полей ввода для подтверждения номера телефона.\n */\n public readonly form = new FormGroup({\n phone: new FormControl<string | null>(null, [Validators.required, Validators.minLength(12)]),\n verificationCode: new FormControl<string | null>(null, [Validators.required, Validators.minLength(6)]),\n });\n\n /**\n * {@link Subject} события отправки формы.\n */\n public readonly onSubmit: Subject<void> = new Subject<void>();\n\n /**\n * {@link Observable} запроса подтверждения номера телефона.\n */\n private readonly request$ = this.onSubmit.pipe(\n filter(() => this.form.valid),\n map(() => this.form.value as ScIPhoneOnDataApprove),\n switchMap((value) =>\n this.verificationService.approvePhone(value).pipe(\n switchMap(() => this.userService.updateUserChange$()),\n tap((user) => this.context?.completeWith(user.contacts.phone)),\n catchError((error: unknown) => {\n if (error instanceof HttpErrorResponse) {\n const { errors, message } = error.error as ApiErrorResponse;\n\n for (const key in errors) {\n if (Object.hasOwn(errors, key)) {\n this.form.get(key)?.setErrors({ serverResponse: errors[key] });\n }\n }\n\n if (!errors && message) {\n this.form.setErrors({ serverResponse: [message] });\n }\n }\n\n return of({} as ScUser);\n }),\n startWith(null)\n )\n ),\n share()\n );\n\n /**\n * {@link Observable} изменения состояния запроса подтверждения номера телефона..\n */\n public readonly loading$: Observable<boolean> = this.request$.pipe(map(tuiIsFalsy));\n\n /**\n * Инициализирует экземпляр класса {@link ScUserPhoneApproveDialogComponent}.\n *\n * @param verificationService Сервис верификации.\n * @param userMetrikaService Сервис для сбора метрик о действиях пользователей.\n * @param user$ Поток информации о текущем пользователе.\n * @param userService Сервис данных о пользователе.\n * @param context Контекст диалогового окна, в котором открыт компонент.\n */\n public constructor(\n private readonly verificationService: ScVerificationService,\n private readonly userMetrikaService: ScUserMetrikaService,\n @Inject(SC_USER_INFO)\n public readonly user$: Observable<ScUser>,\n private readonly userService: ScUserService,\n @Optional()\n @Inject(POLYMORPHEUS_CONTEXT)\n public readonly context?: TuiDialogContext<ScApprovedData, ScUserPhoneApproveDialogComponent>\n ) {\n this.user$.pipe(takeUntilDestroyed()).subscribe((user) => {\n this.form.patchValue({\n phone: user.contacts.phone.value,\n });\n });\n }\n\n /** @inheritdoc */\n public ngAfterViewInit(): void {\n this.userMetrikaService.emitUserMetrikaEvent({\n target: ScUserMetrikaGoalsEnum.userProfileApprovePhoneShow,\n });\n }\n}\n","<ng-container *ngIf=\"user$ | async as user\">\n <form\n [formGroup]=\"form\"\n *tuiLet=\"!!(loading$ | async) as loadingApproveCode\"\n (ngSubmit)=\"onSubmit.next()\"\n class=\"flex flex-col gap-3\"\n >\n <sc-verification-phone-check-form\n [(haveCode)]=\"haveCode\"\n [shouldBeConfirmed]=\"false\"\n [showCodeFields]=\"!user.contacts.phone.isApproved\"\n [readOnly]=\"true\"\n class=\"w-full\"\n ></sc-verification-phone-check-form>\n <div\n *ngIf=\"user.contacts.phone.isApproved || haveCode\"\n class=\"flex justify-center gap-4\"\n >\n <button\n *ngIf=\"user.contacts.phone.isApproved && context\"\n tuiButton\n (click)=\"context.$implicit.complete()\"\n type=\"button\"\n appearance=\"secondary\"\n >\n Закрыть\n </button>\n <button\n *ngIf=\"haveCode\"\n tuiButton\n type=\"submit\"\n [loading]=\"loadingApproveCode\"\n [disabled]=\"form.invalid || loadingApproveCode\"\n iconStart=\"@tui.sc.send\"\n >\n Подтвердить\n </button>\n </div>\n </form>\n</ng-container>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TuiLet } from '@taiga-ui/cdk';\nimport { TuiButton, TuiDataList, TuiError, TuiLabel, TuiLink, TuiLoader } from '@taiga-ui/core';\nimport { TuiButtonLoading, TuiCheckbox, TuiFieldErrorPipe } from '@taiga-ui/kit';\nimport { TuiInputModule, TuiInputPasswordModule, TuiInputPhoneModule, TuiSelectModule, TuiTextfieldControllerModule } from '@taiga-ui/legacy';\n\nimport { ScTerminalLinkDirective } from '../directives';\nimport { ScTelLinkModule } from '../directives/tel-link/sc-tel-link.module';\nimport { ScFormFieldsModule } from '../form-fields/form-fields.module';\nimport { ScVerificationModule } from '../verification';\nimport { ScResetUserPasswordComponent } from './reset-user-password/sc-reset-user-password.component';\nimport { ScUpdateUserInfoDialogComponent } from './update-user-info-dialog/sc-update-user-info-dialog.component';\nimport { ScUserManagersComponent } from './user-managers/sc-user-managers.component';\nimport { ScUserPhoneApproveDialogComponent } from './user-phone-approve-dialog/sc-user-phone-approve-dialog.component';\n\n/**\n * Модуль компонентов пользователя.\n */\n@NgModule({\n declarations: [ScResetUserPasswordComponent, ScUpdateUserInfoDialogComponent, ScUserPhoneApproveDialogComponent, ScUserManagersComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n TuiFieldErrorPipe,\n TuiInputPasswordModule,\n TuiButton,\n TuiError,\n TuiLabel,\n TuiTextfieldControllerModule,\n TuiLet,\n ScVerificationModule,\n ScFormFieldsModule,\n TuiLoader,\n TuiInputModule,\n TuiInputPhoneModule,\n TuiCheckbox,\n ...TuiDataList,\n TuiSelectModule,\n TuiLink,\n ScTerminalLinkDirective,\n ScTelLinkModule,\n TuiButtonLoading,\n ],\n exports: [ScResetUserPasswordComponent, ScUpdateUserInfoDialogComponent, ScUserPhoneApproveDialogComponent, ScUserManagersComponent],\n})\nexport class ScUserModule {}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Inject, Output } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { ScContragent, ScIBankAccount, ScICity, ScIContact, ScIDeliveryAddress, ScLocationsService, ScUser, ScUserService, ScVerificationService } from '@snabcentr/client-core';\nimport { TUI_TRUE_HANDLER, tuiIsFalsy, tuiIsPresent, tuiPure } from '@taiga-ui/cdk';\nimport { tuiFadeIn } from '@taiga-ui/core';\nimport { filter, map, Observable, share, skip, startWith, Subject, switchMap, tap } from 'rxjs';\n\nimport { SC_USER_INFO, SC_USER_PROVIDERS } from '../../providers';\n\n/**\n * Компонент контента профиля пользователя в виде раскрывающихся смысловых блоков.\n */\n@Component({\n selector: 'sc-profile-accordions-content',\n templateUrl: './sc-profile-accordions-content.component.html',\n providers: [SC_USER_PROVIDERS],\n animations: [tuiFadeIn],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScProfileAccordionsContentComponent {\n /**\n * {@link FormControl} переключателя 'Я хочу получать рассылку'.\n */\n public getNewsControl: FormControl<boolean> = new FormControl<boolean>(false, { nonNullable: true });\n\n /**\n * {@link Observable} запроса изменения признака пользователя 'Я хочу получать рассылку'.\n */\n private readonly getNewsRequest$ = this.getNewsControl.valueChanges.pipe(\n skip(1),\n switchMap((value) =>\n this.userService.updateUserInfo$({ getNews: value }).pipe(\n switchMap(() =>\n this.userService.updateUserChange$().pipe(\n tap((user) => {\n this.getNewsControl.patchValue(user.getNews, { emitEvent: false });\n }),\n startWith(null)\n )\n ),\n startWith(null)\n )\n ),\n\n share()\n );\n\n /**\n * {@link Observable} изменения состояния загрузки данных изменения признака пользователя 'Я хочу получать рассылку'.\n */\n public readonly getNewsLoading$: Observable<boolean> = this.getNewsRequest$.pipe(map(tuiIsFalsy));\n\n /**\n * {@link Subject} события отправки сообщения для подтверждения адреса электронной почты.\n */\n public readonly onSendApproveEmail: Subject<string> = new Subject<string>();\n\n /**\n * {@link Observable} запроса данных аутентификации.\n */\n private readonly sendApproveEmailRequest$: Observable<boolean | null> = this.onSendApproveEmail.pipe(\n switchMap((value) => this.verificationService.sendEmailApproveCode(value).pipe(map(TUI_TRUE_HANDLER), startWith(null))),\n startWith(false),\n share()\n );\n\n /**\n * {@link Observable} изменения состояния загрузки данных отправки сообщения для подтверждения адреса электронной почты.\n */\n public readonly approveEmailLoading$: Observable<boolean> = this.sendApproveEmailRequest$.pipe(map(tuiIsFalsy));\n\n /**\n * {@link Observable} изменения состояния признака, отправлено ли сообщение для подтверждения адреса электронной почты.\n */\n public readonly isSendApproveEmail$: Observable<boolean> = this.sendApproveEmailRequest$.pipe(filter(tuiIsPresent));\n\n /**\n * {@link Observable} изменения списка контактных лиц пользователя.\n */\n public readonly userContacts$ = this.userService.getUserContacts$();\n\n /**\n * Событие нажатия на кнопку редактирование профиля пользователя.\n */\n @Output()\n public editProfileClick: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на кнопку подтверждения телефона.\n */\n @Output()\n public approvePhoneClick: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на кнопку добавления контрагента.\n */\n @Output()\n public addContragentClick: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на кнопку удаления контрагента.\n */\n @Output()\n public deleteContragentClick: EventEmitter<ScContragent> = new EventEmitter<ScContragent>();\n\n /**\n * Событие нажатия на кнопку добавления банковского счёта контрагенту.\n */\n @Output()\n public addContragentBankAccountClick: EventEmitter<ScContragent> = new EventEmitter<ScContragent>();\n\n /**\n * Событие нажатия на кнопку удаления банковского счёта контрагента.\n */\n @Output()\n public deleteContragentBankAccountClick: EventEmitter<ScIBankAccount> = new EventEmitter<ScIBankAccount>();\n\n /**\n * Событие нажатия на кнопку добавления контактного лица контрагенту.\n */\n @Output()\n public addContragentContactClick: EventEmitter<ScContragent> = new EventEmitter<ScContragent>();\n\n /**\n * Событие нажатия на кнопку удаления контактного лица у контрагента.\n */\n @Output()\n public deleteContragentContactClick: EventEmitter<{ contact: ScIContact; contragent: ScContragent }> = new EventEmitter<{ contact: ScIContact; contragent: ScContragent }>();\n\n /**\n * Событие нажатия на кнопку добавления адреса доставки клиента.\n */\n @Output()\n public addDeliveryAddressClick: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на кнопку удаления адреса доставки у клиента.\n */\n @Output()\n public deleteDeliveryAddressClick: EventEmitter<ScIDeliveryAddress> = new EventEmitter<ScIDeliveryAddress>();\n\n /**\n * Событие нажатия на кнопку добавления контактного лица для адреса доставки.\n */\n @Output()\n public addDeliveryAddressContactClick: EventEmitter<ScIDeliveryAddress> = new EventEmitter<ScIDeliveryAddress>();\n\n /**\n * Событие нажатия на кнопку удаления контактного лица у адреса доставки.\n */\n @Output()\n public deleteDeliveryAddressContactClick: EventEmitter<{ contact: ScIContact; address: ScIDeliveryAddress }> = new EventEmitter<{\n contact: ScIContact;\n address: ScIDeliveryAddress;\n }>();\n\n /**\n * Событие нажатия на кнопку добавления контактного лица клиенту.\n */\n @Output()\n public addUserContactClick: EventEmitter<number> = new EventEmitter<number>();\n\n /**\n * Событие нажатия на кнопку удаления контактного лица у клиента.\n */\n @Output()\n public deleteUserContactClick: EventEmitter<ScIContact> = new EventEmitter<ScIContact>();\n\n /**\n * Инициализирует экземпляр класса {@link ScProfileComponent}.\n *\n * @param user$ Поток информации о текущем пользователе.\n * @param locationsService Сервис для получения списков стран, регионов, городов.\n * @param userService Сервис данных о пользователе.\n * @param verificationService Сервис верификации.\n */\n public constructor(\n @Inject(SC_USER_INFO) public readonly user$: Observable<ScUser>,\n private readonly locationsService: ScLocationsService,\n private readonly userService: ScUserService,\n private readonly verificationService: ScVerificationService\n ) {}\n\n /**\n * Создает запрос получения информации о городе текущего пользователя по идентификатору города.\n *\n * @param cityId Идентификатор записи города.\n */\n @tuiPure // TODO: TASK[#7615] Удалить поле рефакторинга сервиса работы с пользователем.\n public getUserCity$(cityId: number): Observable<ScICity> {\n return this.locationsService.getUserCity$(cityId);\n }\n}\n","<div\n *tuiLet=\"user$ | async as user\"\n class=\"flex flex-col gap-4\"\n>\n <sc-accordion\n [showArrow]=\"false\"\n [showAddButton]=\"false\"\n [open]=\"true\"\n >\n Общие данные\n <ng-template scAccordionContent>\n <tui-loader\n [overlay]=\"true\"\n [showLoader]=\"user === null\"\n >\n <div class=\"flex gap-2 pl-4\">\n <div\n *ngIf=\"user\"\n class=\"flex grow flex-col gap-2\"\n >\n <span class=\"font-medium\">{{ user.name }}</span>\n <div\n *ngIf=\"user.city && (getUserCity$(user.city) | async) as city\"\n class=\"flex items-center gap-1\"\n >\n <tui-icon icon=\"@tui.map-pin\"></tui-icon>\n <div class=\"flex flex-wrap\">\n <span>г. {{ city.name }}, </span>\n <span *ngIf=\"city.region\">{{ city.region.name }}</span>\n </div>\n </div>\n <div class=\"flex flex-wrap gap-2\">\n <a\n tuiLink\n [scTelLink]=\"user.contacts.phone.value\"\n iconStart=\"@tui.phone\"\n [pseudo]=\"true\"\n href=\"tel:{{ user.contacts.phone.value | scFormatePhone }}\"\n >{{ user.contacts.phone.value | scFormatePhone }}</a\n >\n <span\n *ngIf=\"!user.contacts.phone.isApproved\"\n class=\"text-tui-text-03\"\n >\n (Телефон не подтвержден.\n <button\n tuiLink\n [pseudo]=\"true\"\n (click)=\"approvePhoneClick.emit()\"\n >\n Подтвердить</button\n >)\n </span>\n </div>\n <div\n *tuiLet=\"!!(isSendApproveEmail$ | async) as isSendApproveEmail\"\n class=\"flex flex-wrap gap-x-2\"\n >\n <a\n tuiLink\n iconStart=\"@tui.mail\"\n [pseudo]=\"true\"\n href=\"mailto:{{ user.contacts.email.value }}\"\n >\n {{ user.contacts.email.value }}\n </a>\n <span\n *ngIf=\"!isSendApproveEmail && !user.contacts.email.isApproved\"\n class=\"inline-flex flex-wrap gap-1 text-tui-text-03\"\n >\n E-mail не подтвержден.\n <tui-loader\n [showLoader]=\"!!(approveEmailLoading$ | async)\"\n [overlay]=\"true\"\n >\n <button\n tuiLink\n [pseudo]=\"true\"\n (click)=\"onSendApproveEmail.next(user.contacts.email.value)\"\n >\n Подтвердить\n </button>\n </tui-loader>\n </span>\n <span\n *ngIf=\"isSendApproveEmail\"\n class=\"text-tui-success-fill\"\n @tuiFadeIn\n >\n Письмо для подтверждения успешно отправлено. Перейдите по ссылке в письме и обновите эту страницу.\n </span>\n </div>\n <tui-loader\n [showLoader]=\"!!(getNewsLoading$ | async)\"\n [overlay]=\"true\"\n >\n <label tuiLabel>\n <input\n tuiCheckbox\n type=\"checkbox\"\n size=\"s\"\n class=\"w-full\"\n [formControl]=\"getNewsControl\"\n [ngModel]=\"user.getNews\"\n />\n Я хочу получать рассылку Снабцентр о скидках и новостях по электронной почте.\n </label>\n </tui-loader>\n </div>\n\n <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n iconStart=\"@tui.pencil\"\n appearance=\"flat\"\n (click)=\"editProfileClick.emit()\"\n ></button>\n </div>\n </tui-loader>\n </ng-template>\n </sc-accordion>\n <sc-contragents-accordion\n (addContragentClick)=\"addContragentClick.emit()\"\n (deleteContragentClick)=\"deleteContragentClick.emit($event)\"\n (addContragentBankAccountClick)=\"addContragentBankAccountClick.emit($event)\"\n (deleteContragentBankAccountClick)=\"deleteContragentBankAccountClick.emit($event)\"\n (addContragentContactClick)=\"addContragentContactClick.emit($event)\"\n (deleteContragentContactClick)=\"deleteContragentContactClick.emit($event)\"\n ></sc-contragents-accordion>\n <sc-delivery-address-accordion\n (addDeliveryAddressClick)=\"addDeliveryAddressClick.emit()\"\n (deleteDeliveryAddressClick)=\"deleteDeliveryAddressClick.emit($event)\"\n (addDeliveryAddressContactClick)=\"addDeliveryAddressContactClick.emit($event)\"\n (deleteDeliveryAddressContactClick)=\"deleteDeliveryAddressContactClick.emit($event)\"\n ></sc-delivery-address-accordion>\n <sc-contacts-accordion\n *ngIf=\"user\"\n [contacts$]=\"userContacts$\"\n (addContactClick)=\"addUserContactClick.emit(user.id)\"\n (deleteButtonClick)=\"deleteUserContactClick.emit($event)\"\n ></sc-contacts-accordion>\n <sc-accordion\n #passwordAccordion\n [showArrow]=\"false\"\n [showAddButton]=\"false\"\n >\n Изменить пароль\n <ng-template scAccordionContent>\n <sc-reset-user-password (successResetPassword)=\"passwordAccordion.close()\"></sc-reset-user-password>\n </ng-template>\n </sc-accordion>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TuiLet } from '@taiga-ui/cdk';\nimport { TuiButton, TuiIcon, TuiLabel, TuiLink, TuiLoader } from '@taiga-ui/core';\nimport { TuiCheckbox } from '@taiga-ui/kit';\n\nimport { ScAccordionModule } from '../accordion';\nimport { ScContactsModule } from '../contacts';\nimport { ScContragentsModule } from '../contragents';\nimport { ScDeliveryAddressModule } from '../delivery-address';\nimport { ScTerminalLinkDirective } from '../directives';\nimport { ScTelLinkModule } from '../directives/tel-link/sc-tel-link.module';\nimport { ScUserModule } from '../user';\nimport { ScProfileAccordionsContentComponent } from './sc-profile-accordions-content/sc-profile-accordions-content.component';\n\n/**\n * Модуль профиля пользователя.\n */\n@NgModule({\n declarations: [ScProfileAccordionsContentComponent],\n imports: [\n CommonModule,\n ScUserModule,\n ScAccordionModule,\n ScContragentsModule,\n ScDeliveryAddressModule,\n TuiLoader,\n TuiLet,\n TuiLink,\n TuiLabel,\n TuiIcon,\n FormsModule,\n ReactiveFormsModule,\n TuiButton,\n ScContactsModule,\n ScTerminalLinkDirective,\n ScTelLinkModule,\n TuiCheckbox,\n ],\n exports: [ScProfileAccordionsContentComponent],\n})\nexport class ScProfileModule {}\n","/*\n * Public API Surface of ui\n */\n\nexport * from './auth';\nexport * from './accordion';\nexport * from './banner';\nexport * from './cart';\nexport * from './catalog';\nexport * from './contragents';\nexport * from './contacts';\nexport * from './delivery-address';\nexport * from './directives';\nexport * from './files';\nexport * from './form-fields';\nexport * from './icons';\nexport * from './loader';\nexport * from './brands-list';\nexport * from './news';\nexport * from './order';\nexport * from './pipes';\nexport * from './samples';\nexport * from './providers';\nexport * from './qrcode';\nexport * from './share-button';\nexport * from './user';\nexport * from './validators';\nexport * from './verification';\nexport * from './profile';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i6","i7","i9","i4","i5","i6.ScVerificationPhoneCheckFormComponent","i2","i3","i4.ScSignInFormByPhoneComponent","i5.ScSignInFormByEmailComponent","i8","i9.ScSuggestionFieldComponent","i10","i1","i2.ScSuggestionFieldComponent","i8.ScVerificationPhoneCheckFormComponent","i9.ScAddressesSelectionFieldComponent","i10.ScSuggestionFieldComponent","i11","i12","i13.ScNewContragentBankAccountsFormComponent","i14.ScNewContragentFormComponent","i15.ScNewContactFormComponent","AngularxQRCodeModule","i5.ScNewContactFormComponent","i2.ScAccordionComponent","i3.ScAccordionContentDirective","i6.ScTerminalLinkDirective","i7.ScTelLinkDirective","i8.ScFormatePhonePipe","i5.ScNewContragentBankAccountsFormComponent","i7.ScNewContragentBankAccountsFormComponent","i8.ScNewContragentFormComponent","i3.ScAccordionComponent","i4.ScAccordionContentDirective","i7.ScContactsAccordionComponent","i7.ScContragentsAccordionItemComponent","i2.ScPxConverter","i3.ScFavoriteBtnComponent","i5.ScFavoriteBtnComponent","i6.ScInputQuantityComponent","i7.ScPriceWarehouseStockComponent","ScFavoriteButtonComponent","i4.ScInputQuantityComponent","i5.ScPriceWarehouseStockComponent","i7.ScSuggestionFieldComponent","i5.ScContactsAccordionComponent","i7.ScDeliveryAddressAccordionItemComponent","i2.TreeIconService","i1.TreeIconService","i6.TreeDirective","i7.TreeTopDirective","i1.ScShareButtonComponent","i4.ScSuggestionFieldComponent","i7.ScAddressesSelectionFieldComponent","i8.ScSuggestionFieldComponent","i4.ScTerminalLinkDirective","i5.ScTelLinkDirective","i6.ScFormatePhonePipe","i3.ScResetUserPasswordComponent","i4.ScAccordionComponent","i5.ScAccordionContentDirective","i6.ScContragentsAccordionComponent","i7.ScDeliveryAddressAccordionComponent","i11.ScContactsAccordionComponent","i12.ScTerminalLinkDirective","i13.ScTelLinkDirective","i14","i15.ScFormatePhonePipe"],"mappings":"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"}