@snabcentr/client-ui 0.14.0 → 0.14.1

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/auth/constants/phone-approve-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/verification/sc-verification.module.ts","../../../projects/client-ui/auth/sc-auth.module.ts","../../../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/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/tokens/sc-linear-values-token.ts","../../../projects/client-ui/helpers/sc-units-helper.ts","../../../projects/client-ui/validators/scBicValidator.ts","../../../projects/client-ui/validators/scCorrespondentAccountValidator.ts","../../../projects/client-ui/validators/scPasswordConfirmMatchingValidator.ts","../../../projects/client-ui/validators/stepValidator.ts","../../../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/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/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/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-chart-option.ts","../../../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/providers/productsPagination.ts","../../../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/price-history/sc-lang-RU.ts","../../../projects/client-ui/catalog/sc-catalog.module.ts","../../../projects/client-ui/cart/sc-cart.module.ts","../../../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/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/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/form-fields/suggestion-field/sc-suggestion-field.component.ts","../../../projects/client-ui/form-fields/suggestion-field/sc-suggestion-field.component.html","../../../projects/client-ui/contacts/new-contragent-bank-account-form/sc-new-contragent-bank-account-form.component.ts","../../../projects/client-ui/contacts/new-contragent-bank-account-form/sc-new-contragent-bank-account-form.component.html","../../../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/form-fields.module.ts","../../../projects/client-ui/contacts/add-contragent-bank-account-dialog/sc-add-contragent-bank-account-dialog.component.ts","../../../projects/client-ui/contacts/add-contragent-bank-account-dialog/sc-add-contragent-bank-account-dialog.component.html","../../../projects/client-ui/contacts/sc-contacts.module.ts","../../../projects/client-ui/contragents/sc-contragents.module.ts","../../../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.component.ts","../../../projects/client-ui/files/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/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/order-item-mobile.component.ts","../../../projects/client-ui/order/order-item-mobile/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/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-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 verificationCodeMask: MaskitoOptions = {\n mask: /^\\d{0,6}$/\n} as MaskitoOptions;\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Inject, Input, OnInit, Output } from '@angular/core';\nimport { FormGroup, FormControl, FormGroupDirective } from '@angular/forms';\nimport { MaskitoOptions } from '@maskito/core';\nimport { ScVerificationService } from '@snabcentr/client-core';\nimport { verificationCodeMask } from '../../auth/constants/phone-approve-code-mask';\nimport { ApiErrorResponse } from '../../auth/interfaces/ApiErrorResponse';\nimport { Subject, Observable, filter, map, switchMap, catchError, of, startWith, share, tap, finalize, timer, scan, takeWhile, endWith, distinctUntilChanged } from 'rxjs';\nimport { tuiControlValue } from '@taiga-ui/cdk';\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 private _showCodeFields: boolean = true;\n\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 * Группа полей ввода для формы «Вход на сайт».\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 /**\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 filter(() => this.phoneControl.valid),\n map(() => this.phoneControl.value as string),\n switchMap((value) =>\n this.verificationService.sendPhoneApproveCode(value).pipe(\n tap(() => this.reloadTimer$.next(60)),\n map(() => false),\n catchError((error: 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 = 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 return of(false);\n }),\n finalize(() => this.setHaveCode(true)),\n startWith(true)\n )\n ),\n startWith(false),\n share()\n );\n\n /**\n * Маска поля ввода кода для подтверждения.\n */\n public readonly verificationCodeMask: MaskitoOptions = verificationCodeMask;\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) => --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 * Инициализирует экземпляр класса {@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 /** @inheritDoc */\n public ngOnInit(): void {\n this.phoneCheck$ = tuiControlValue<string | null>(this.phoneControl).pipe(\n tap(() => this.reloadTimer$.next(0)),\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: HttpErrorResponse) => {\n const errorResponse = error.error as ApiErrorResponse;\n this.phoneControl.setErrors({ serverResponse: errorResponse?.errors?.['phone'] ?? [errorResponse.message] });\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 [formGroup]=\"form\" *tuiLet=\"(loadingApproveCode$ | async) as loadingApproveCode\" class=\"flex flex-col gap-3\">\n <label tuiLabel=\"Номер телефона\">\n <tui-input-phone formControlName=\"phone\" [readOnly]=\"readOnly\" [tuiTextfieldCustomContent]=\"checkingPhone\">\n Номер телефона\n <input tuiTextfield autocomplete=\"phone\" />\n </tui-input-phone>\n <tui-error formControlName=\"phone\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <ng-container *ngIf=\"showCodeFields && form.enabled\">\n <label *ngIf=\"loadingApproveCode === false && haveCode\" tuiLabel=\"Код из СМС\">\n <tui-input formControlName=\"verificationCode\">\n Код из СМС\n <input tuiTextfield [maskito]=\"verificationCodeMask\" autocomplete=\"new-password\" />\n </tui-input>\n <tui-error formControlName=\"verificationCode\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n\n <div *tuiLet=\"!!loadingApproveCode as loadingApproveCode\" class=\"flex gap-4 justify-center\">\n <button\n *ngIf=\"!haveCode\"\n tuiButton\n (click)=\"onSendCode.next()\"\n [disabled]=\"loadingApproveCode || !!!(phoneCheck$ | async) || phoneControl.invalid\"\n [showLoader]=\"loadingApproveCode\"\n icon=\"scIconLogIn\"\n >\n Получить код\n </button>\n <button *ngIf=\"!loadingApproveCode && !haveCode\" tuiLink [pseudo]=\"true\" [disabled]=\"!!!(phoneCheck$ | async) || phoneControl.invalid\" (click)=\"setHaveCode(true)\">\n У меня есть код\n </button>\n\n <ng-container *tuiLet=\"timer$ | async as timer\">\n <tui-loader *ngIf=\"haveCode\" [showLoader]=\"loadingApproveCode\">\n <button tuiLink [pseudo]=\"true\" [disabled]=\"loadingApproveCode || timer\" (click)=\"onSendCode.next()\">\n Повторно отправить код\n <ng-container *ngIf=\"timer\" class=\"!text-tui-base-08\">(через {{ timer }})</ng-container>\n </button>\n </tui-loader>\n </ng-container>\n </div>\n </ng-container>\n</form>\n\n<ng-template #checkingPhone>\n <tui-loader *ngIf=\"!!!(phoneCheck$ | async) && phoneControl.valid\" class=\"w-4 h-4\"> </tui-loader>\n</ng-template>\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\nimport { IAuthToken, IPhoneLogin, ScAuthService } from '@snabcentr/client-core';\nimport { tuiIsFalsy } from '@taiga-ui/cdk';\nimport { Subject, Observable, filter, map, switchMap, catchError, of, startWith, share } from 'rxjs';\nimport { ApiErrorResponse } from '../../interfaces/ApiErrorResponse';\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: 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({} 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 * @param verificationService Сервис верификации.\n */\n public constructor(private readonly authService: ScAuthService) {}\n}\n","<form [formGroup]=\"form\" *tuiLet=\"!!(loading$ | async) as loading\" (ngSubmit)=\"onSubmit.next()\" class=\"flex flex-col gap-4 items-center mb-4\">\n <sc-verification-phone-check-form [(haveCode)]=\"haveCode\" [shouldBeBusy]=\"true\" [shouldBeConfirmed]=\"true\" class=\"w-full\"></sc-verification-phone-check-form>\n <button *ngIf=\"haveCode\" tuiButton type=\"submit\" [showLoader]=\"loading\" [disabled]=\"form.invalid || loading\" icon=\"scIconLogIn\">Войти</button>\n</form>\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Output } from '@angular/core';\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\nimport { IAuthToken, ILogin, ScAuthService } from '@snabcentr/client-core';\nimport { tuiIsFalsy } from '@taiga-ui/cdk';\nimport { Subject, Observable, filter, map, switchMap, catchError, of, startWith, share } from 'rxjs';\nimport { ApiErrorResponse } from '../../interfaces/ApiErrorResponse';\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: HttpErrorResponse) => {\n const errorResponse = error.error as ApiErrorResponse;\n\n for (const key in errorResponse.errors) {\n this.formByEmail.get(key)?.setErrors({ serverResponse: errorResponse.errors[`${key}`] });\n }\n\n if (!errorResponse.errors && errorResponse.message) {\n this.formByEmail.setErrors({ serverResponse: [errorResponse.message] });\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()\n 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 [formGroup]=\"formByEmail\" (ngSubmit)=\"onSubmit.next()\">\n <div class=\"flex flex-col gap-4 mb-8\">\n <label tuiLabel=\"Адрес электронной почты\">\n <tui-input formControlName=\"login\">\n Адрес электронной почты\n <input tuiTextfield autocomplete=\"email\" />\n </tui-input>\n <tui-error formControlName=\"login\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"Пароль\">\n <tui-input-password formControlName=\"password\">\n Пароль\n <input tuiTextfield autocomplete=\"current-password\" />\n </tui-input-password>\n <tui-error formControlName=\"password\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <tui-error [error]=\"[] | tuiFieldError | async\"></tui-error>\n </div>\n <div class=\"flex flex-col gap-4 items-center mb-4\">\n <a tuiLink [pseudo]=\"true\" (click)=\"forgotPassword.emit()\" class=\"text-base\">Забыли пароль?</a>\n <button tuiButton type=\"submit\" [showLoader]=\"!!(loadingEmailAuth$ | async)\" [disabled]=\"formByEmail.invalid || !!(loadingEmailAuth$ | async)\" icon=\"scIconLogIn\">\n Войти\n </button>\n </div>\n</form>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport {\n ScAuthService,\n ScUserMetrikaGoalsEnum,\n ScUserMetrikaService\n} from '@snabcentr/client-core';\nimport { filter, Observable } from 'rxjs';\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()\n public authMethod: AuthMethod = AuthMethod.byEmail;\n\n /**\n * Перечисление способов аутентификации.\n */\n public method: typeof AuthMethod = AuthMethod;\n\n /**\n * Сигнал нажатия на кнопку \"Забыли пароль\".\n */\n @Output()\n public readonly forgotPassword: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Сигнал нажатия на кнопку \"Зарегистрироваться\".\n */\n @Output()\n public readonly signUp: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Сигнал события аутентификации.\n */\n @Output()\n 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 });\n }\n\n /**\n * Осуществляет переключение способов аутентификации.\n *\n * @param authMethod Выбранный способ аутентификации.\n */\n public switchAuth(authMethod: AuthMethod): void {\n this.authMethod = authMethod;\n }\n\n /**\n * Обрабатывает нажатие на кнопку \"Забыли пароль\" и выдает сигнал об этом.\n */\n public onForgotPassword(): void {\n this.forgotPassword.emit();\n }\n}\n","<div class=\"flex justify-center mb-4\">\n <button\n tuiButton\n [tuiMode]=\"authMethod === 'by_phone' ? null : 'onLight'\"\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 [tuiMode]=\"authMethod === 'by_email' ? null : 'onLight'\"\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 *ngIf=\"authMethod === 'by_email'\" (forgotPassword)=\"onForgotPassword()\"></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 gap-4 items-center\">\n <span class=\"font-medium text-tui-text-02\">Еще не зарегистрированы?</span>\n <button tuiButton tuiMode=\"onLight\" (click)=\"signUp.emit()\" type=\"button\" icon=\"scIconAddProfile\" appearance=\"secondary\">Зарегистрироваться</button>\n</div>\n","import { NgModule } from '@angular/core';\nimport { ScVerificationPhoneCheckFormComponent } from './verification-phone-check-form/sc-verification-phone-check-form.component';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MaskitoModule } from '@maskito/angular';\nimport { TuiLetModule } from '@taiga-ui/cdk';\nimport { TuiTextfieldControllerModule, TuiLinkModule, TuiButtonModule, TuiLabelModule, TuiModeModule, TuiErrorModule, TuiLoaderModule } from '@taiga-ui/core';\nimport { TuiInputPasswordModule, TuiInputModule, TuiFieldErrorPipeModule, TuiInputPhoneModule } from '@taiga-ui/kit';\n\n/**\n * Модуль отправки кодов подтверждения (номера телефона, адреса эл. почты и т.д.).\n */\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n TuiInputPasswordModule,\n TuiInputModule,\n TuiTextfieldControllerModule,\n TuiLinkModule,\n TuiButtonModule,\n TuiLabelModule,\n TuiModeModule,\n TuiFieldErrorPipeModule,\n TuiErrorModule,\n TuiLetModule,\n TuiLoaderModule,\n TuiInputPhoneModule,\n MaskitoModule\n ],\n exports: [ScVerificationPhoneCheckFormComponent],\n declarations: [ScVerificationPhoneCheckFormComponent]\n})\nexport class ScVerificationModule {}\n","import { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MaskitoModule } from '@maskito/angular';\nimport { NgModule } from '@angular/core';\nimport { ScSignInFormComponent } from '.';\nimport { TuiLetModule } from '@taiga-ui/cdk';\nimport { TuiTextfieldControllerModule, TuiLinkModule, TuiButtonModule, TuiLabelModule, TuiModeModule, TuiErrorModule, TuiLoaderModule } from '@taiga-ui/core';\nimport { TuiInputPasswordModule, TuiInputModule, TuiFieldErrorPipeModule, TuiInputPhoneModule } from '@taiga-ui/kit';\nimport { ScSignInFormByPhoneComponent } from './sc-sign-in-form/sc-sign-in-form-by-phone/sc-sign-in-form-by-phone.component';\nimport { ScSignInFormByEmailComponent } from './sc-sign-in-form/sc-sign-in-form-by-email/sc-sign-in-form-by-email.component';\nimport { ScVerificationModule } from '../verification';\n\n/**\n * Модуль аутентификации.\n */\n@NgModule({\n declarations: [ScSignInFormComponent, ScSignInFormByPhoneComponent, ScSignInFormByEmailComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n TuiInputPasswordModule,\n TuiInputModule,\n TuiTextfieldControllerModule,\n TuiLinkModule,\n TuiButtonModule,\n TuiLabelModule,\n TuiModeModule,\n TuiFieldErrorPipeModule,\n TuiErrorModule,\n TuiLetModule,\n TuiLoaderModule,\n TuiInputPhoneModule,\n MaskitoModule,\n ScVerificationModule\n ],\n exports: [ScSignInFormComponent, ScSignInFormByPhoneComponent, ScSignInFormByEmailComponent]\n})\nexport class ScAuthModule {}\n","import { Directive } from '@angular/core';\nimport { PolymorpheusTemplate } from '@tinkoff/ng-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 } from '@angular/core';\nimport { ScAccordionContentDirective } from './sc-accordion-content.directive';\nimport { TuiSizeS } from '@taiga-ui/core';\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 = false;\n\n /**\n * Состояние отображения стрелки.\n */\n @Input()\n @HostBinding('class._has-arrow')\n public showArrow = true;\n\n /**\n * Состояние открытия содержимого компонента.\n */\n @Input()\n public open = 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 @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","<tui-accordion [rounded]=\"false\">\n <tui-accordion-item [size]=\"size\" [borders]=\"null\" [showArrow]=\"showArrow\" [open]=\"open\">\n <div class=\"flex grow justify-between\">\n <div class=\"font-bold self-center\">\n <ng-content></ng-content>\n </div>\n <div *ngIf=\"showAddButton || showDeleteButton\" class=\"flex\">\n <ng-container *ngIf=\"showDeleteButton\">\n <button tuiIconButton size=\"m\" type=\"button\" icon=\"tuiIconTrash2Large\" appearance=\"flat\" (click)=\"$event.stopPropagation(); deleteButtonClick.emit()\"></button>\n </ng-container>\n <ng-container *ngIf=\"showAddButton\">\n <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n icon=\"tuiIconPlusLarge\"\n tuiMode=\"onLight\"\n appearance=\"flat\"\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 { NgModule } from '@angular/core';\nimport { TuiButtonModule, TuiModeModule } from '@taiga-ui/core';\nimport { TuiAccordionModule, TuiElasticContainerModule } from '@taiga-ui/kit';\nimport { PolymorpheusModule } from '@tinkoff/ng-polymorpheus';\nimport { ScAccordionContentDirective } from './sc-accordion-content.directive';\nimport { ScAccordionComponent } from './sc-accordion.component';\nimport { CommonModule } from '@angular/common';\n\n/**\n * Модуль для отображение контента разделами, с возможностью скрывать и отображать содержимое.\n */\n@NgModule({\n declarations: [ScAccordionComponent, ScAccordionContentDirective],\n imports: [CommonModule, PolymorpheusModule, TuiButtonModule, TuiAccordionModule, TuiModeModule, TuiElasticContainerModule],\n exports: [ScAccordionComponent, ScAccordionContentDirective]\n})\nexport class ScAccordionModule {}\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 Component,\n ChangeDetectionStrategy,\n AfterViewInit,\n Input,\n Output,\n EventEmitter,\n ContentChildren,\n QueryList,\n TemplateRef,\n ViewChild,\n ElementRef,\n HostBinding,\n ChangeDetectorRef,\n Inject,\n HostListener\n} from '@angular/core';\nimport { ScBanner, ScBannerService, ScUserMetrikaGoalsEnum, ScUserMetrikaService } from '@snabcentr/client-core';\nimport { Observable, map, tap, shareReplay, filter, switchMap, interval, takeUntil, Subject } from 'rxjs';\nimport { ScPxConverter } from '../helpers';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { IntersectionObserverService } from '@ng-web-apis/intersection-observer';\nimport { tuiFadeIn } from '@taiga-ui/core';\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})\n@UntilDestroy({ checkProperties: true })\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') private videoRef: ElementRef<HTMLVideoElement>;\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 /**\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) {\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 * Инициализирует экземпляр класса {@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 /** @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 untilDestroyed(this)\n )\n .subscribe(() => this.onNextBanner());\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: { banner_id: banner.id }\n });\n\n if (banner.url) {\n this.clickBannerEvent.emit(banner);\n }\n }\n\n /**\n * Обработчик события mouseenter.\n *\n * @private\n */\n @HostListener('mouseenter')\n private mouseEnterHandler: () => void = () => this.toggleTimer$.next(false);\n\n /**\n * Обработчик события mouseleave.\n *\n * @private\n */\n @HostListener('mouseleave')\n private mouseLeaveHandler: () => void = () => this.toggleTimer$.next(true);\n}\n","<ng-container *tuiLet=\"banners$ | async\">\n <tui-carousel class=\"bg-white w-full h-full shadow-sc-2 rounded-xl overflow-hidden\" [(index)]=\"currentBannerId\">\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=\"object-cover h-full\"\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 left-8 bottom-4\"\n >\n <i class=\"icon-refresh text-black\"></i>\n </button>\n </ng-container>\n\n <img *ngSwitchCase=\"'image'\" [src]=\"banner.mediaFile\" alt=\"Баннер\" class=\"object-cover h-full\" />\n </ng-container>\n </a>\n </ng-container>\n <ng-container *ngFor=\"let item of bannersListRef\">\n <div *tuiItem [style.height]=\"height\" [style.width]=\"width\" [style.aspect-ratio]=\"aspectRatio\" class=\"overflow-hidden\">\n <ng-container [ngTemplateOutlet]=\"item\"></ng-container>\n </div>\n </ng-container>\n </tui-carousel>\n</ng-container>\n<div *ngIf=\"navigateButton && !disabled && this.banners && (this.bannersListRef.length + this.banners.length) > 1\" tuiMode=\"onLight\" class=\"flex items-center\">\n <button tuiIconButton icon=\"tuiIconChevronLeftLarge\" size=\"m\" shape=\"rounded\" appearance=\"flat\" (click)=\"onPreviousBanner()\" class=\"!absolute left-2\"></button>\n <button tuiIconButton icon=\"tuiIconChevronRightLarge\" size=\"m\" shape=\"rounded\" appearance=\"flat\" (click)=\"onNextBanner()\" class=\"!absolute right-2\"></button>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ScBannerComponent } from './sc-banner.component';\nimport { RouterModule } from '@angular/router';\nimport { TuiButtonModule, TuiLoaderModule, TuiModeModule } from '@taiga-ui/core';\nimport { MatRippleModule } from '@angular/material/core';\nimport { TuiCarouselModule } from '@taiga-ui/kit';\nimport { IntersectionObserverModule } from '@ng-web-apis/intersection-observer';\nimport { TuiLetModule } from '@taiga-ui/cdk';\n\n/**\n * Модуль баннеров.\n */\n@NgModule({\n declarations: [ScBannerComponent],\n imports: [CommonModule, RouterModule, TuiButtonModule, MatRippleModule, TuiCarouselModule, TuiModeModule, TuiLoaderModule, IntersectionObserverModule, TuiLetModule],\n exports: [ScBannerComponent]\n})\nexport class ScBannerModule {}\n","import { tuiCreateToken } from '@taiga-ui/cdk';\n\n/**\n * Единицы измерения линейной величины по умолчанию.\n */\nexport const SC_LINEAR_VALUES: string[] = ['пог.м.', 'м.', 'м2'];\n\n/**\n * Токен единиц измерения линейной величины по умолчанию.\n */\nexport const SC_LINEAR_VALUES_TOKEN = tuiCreateToken(SC_LINEAR_VALUES);\n","import { Inject, Injectable } from '@angular/core';\nimport { ScProduct } from '@snabcentr/client-core';\nimport { SC_LINEAR_VALUES_TOKEN } from '../tokens';\n\n/**\n * Класс хэлпер для работы со значениями единиц измерения товара.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class UnitsHelper {\n /**\n * Инициирует экземпляр класса {@link UnitsHelper}.\n *\n * @param linearValues Единицы измерения линейной величины.\n */\n public constructor(@Inject(SC_LINEAR_VALUES_TOKEN) public readonly linearValues: string[]) {}\n\n /**\n * Возвращает признак возможности продажи товара на метраж.\n *\n * @param linearValues Товар для которого нужно проверить возможность продажи на метраж.\n */\n public productIsMeasurable(product: ScProduct): boolean {\n return this.linearValues.includes(product.unit);\n }\n\n /**\n * Возвращает кратность количества для товара.\n *\n * @param linearValues Товар для которого нужно вернуть кратность количества.\n */\n public productMultiplicity(product: ScProduct): number {\n return product && product.minCount && !this.linearValues.includes(product.unit) ? product.minCount : 1;\n }\n}\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 passwordKey Ключ поля повторного ввода пароля.\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 ? { passwordNotEquivalent: true } : null;\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","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n HostBinding,\n HostListener,\n Inject,\n Input,\n OnInit,\n Optional,\n Output,\n Self,\n ViewChild\n} from '@angular/core';\nimport { FormControl, NgControl } from '@angular/forms';\nimport { stepValidator } from '../../validators';\nimport { TUI_NUMBER_VALUE_TRANSFORMER, TuiInputNumberComponent } from '@taiga-ui/kit';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { TuiLoaderComponent, TuiSizeL, TuiSizeM, TuiSizeS } from '@taiga-ui/core';\nimport { AbstractTuiNullableControl, AbstractTuiValueTransformer } from '@taiga-ui/cdk';\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 @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 {\n return this.numberInput.nativeFocusableElement;\n }\n\n /**\n * Инициализирует экземпляр класса {@link ScInputQuantityComponent}.\n *\n * @param ngControl Объект поля ввода для настройки валидации.\n * @param cdr Объект для работы с обнаружением изменений.\n * @param transformer Преобразователь значений элемента формы.\n */\n public constructor(\n @Optional()\n @Self()\n @Inject(NgControl)\n ngControl: NgControl | null,\n @Inject(ChangeDetectorRef)\n cdr: ChangeDetectorRef,\n @Optional()\n @Inject(TUI_NUMBER_VALUE_TRANSFORMER)\n transformer: AbstractTuiValueTransformer<number | null>\n ) {\n super(ngControl, cdr, transformer);\n }\n\n public get focused(): boolean {\n return !!this.numberInput?.focused;\n }\n\n public get formControl(): FormControl<any> | null {\n return this.control as FormControl<any> | null;\n }\n\n /** @inheritDoc */\n public override ngOnInit(): void {\n if (this.control) {\n this.control.setValidators(stepValidator(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 public incident(): void {\n this.numberInput.onArrow(this.step - ((this.numberInput.value || 0) % this.step));\n }\n\n /**\n * Уменьшает значение в поле ввода на 1 шаг. Если число в поле ввода не кратно шагу, то уменьшит до ближайшего кратного значения.\n */\n public decrement(): void {\n this.numberInput.onArrow(-((this.numberInput.value || 0) % this.step) || -this.step);\n }\n\n /**\n * Очищает поля ввода.\n */\n public clear(): void {\n this.control?.patchValue(null);\n this.clickClearEvent.emit();\n }\n}\n","<tui-loader *ngIf=\"formControl\" class=\"w-full\" [overlay]=\"true\" [showLoader]=\"showLoader\" [size]=\"size\">\n <div class=\"flex items-center text-center gap-1\">\n <div class=\"field-with-button flex grow rounded-xl\">\n <button\n tuiIconButton\n tuiMode=\"onLight\"\n [appearance]=\"appearance\"\n [disabled]=\"!numberInput.canDecrement\"\n [focusable]=\"false\"\n [size]=\"size\"\n (click.prevent)=\"decrement()\"\n (mousedown.prevent)=\"numberInput.nativeFocusableElement?.focus()\"\n >\n <tui-svg src=\"tuiIconMinusLarge\"></tui-svg>\n </button>\n <tui-input-number\n #numberInput\n [formControl]=\"formControl\"\n [tuiHint]=\"([] | tuiFieldError | async )?.message\"\n [tuiTextfieldLabelOutside]=\"true\"\n [min]=\"step\"\n [tuiTextfieldSize]=\"size\"\n [required]=\"true\"\n [style.text-align]=\"'center'\"\n [style.font-weight]=\"700\"\n class=\"grow\"\n >\n </tui-input-number>\n <button\n tuiIconButton\n tuiMode=\"onLight\"\n [appearance]=\"appearance\"\n [size]=\"size\"\n [disabled]=\"!numberInput.canIncrement\"\n [focusable]=\"false\"\n (click.prevent)=\"incident()\"\n (mousedown.prevent)=\"numberInput.nativeFocusableElement?.focus()\"\n >\n <tui-svg src=\"tuiIconPlusLarge\"></tui-svg>\n </button>\n </div>\n <button\n *ngIf=\"showCross\"\n tuiIconButton\n tuiMode=\"onLight\"\n [appearance]=\"appearance\"\n [size]=\"size\"\n [disabled]=\"!numberInput.canIncrement\"\n [focusable]=\"false\"\n (click.prevent)=\"clear()\"\n (mousedown.prevent)=\"numberInput.nativeFocusableElement?.focus()\"\n >\n <tui-svg src=\"tuiIconCloseLarge\"></tui-svg>\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-svg\n *ngIf=\"withStockHint && (warehousesList$ | async)?.length\"\n src=\"tuiIconInfoLarge\"\n [tuiHint]=\"stockHint\"\n [tuiHintShowDelay]=\"100\"\n tuiHintDirection=\"top\"\n class=\"!text-xs !h-3\"\n ></tui-svg>\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, 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 } from '@snabcentr/client-core';\nimport { Observable, skip } from 'rxjs';\nimport { TuiPreviewDialogService } from '@taiga-ui/addon-preview';\nimport { TuiDialogContext } from '@taiga-ui/core';\nimport { UnitsHelper } from '../../helpers/sc-units-helper';\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 private _cartItem?: ScCartItem;\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 * Элемент корзины.\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 * {@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 public get product(): ScProduct | undefined {\n return this.cartItem?.product;\n }\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: UnitsHelper,\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 /** @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 <!-- TODO: Необходима реализация функционала.\n <button tuiIconButton size=\"m\" icon=\"scIconVerticalThreeDots\" appearance=\"float\" tuiMode=\"onLight\" class=\"!absolute right-0 top-0\"></button> -->\n <div class=\"flex bg-white border border-tui-base-04 shadow-sc-2 rounded-xl min-w-72 p-4\">\n <div class=\"flex mr-5 max-h-52 min-w-[30%] items-center\">\n <img (click)=\"clickCardEvent.emit()\" [src]=\"getCardImage()\" [alt]=\"product.name\" class=\"rounded-xl w-full max-h-full object-cover\" />\n </div>\n <div class=\"flex flex-col items-start w-full\">\n <a tuiLink (click)=\"clickCardEvent.emit()\" class=\"mb-1\">\n <span class=\"font-bold\">{{ product.name }}</span>\n </a>\n <div class=\"text-tui-text-02 text-xs\">\n <p *ngIf=\"product.pack\">Норма упаковки: {{ product.pack }}</p>\n <p>Артикул: {{ product.code }}</p>\n <div class=\"flex flex-col self-center gap-y-0.5\">\n <p class=\"flex flex-col items-baseline gap-x-2 font-bold\">\n <span>{{ product.costRubString }}</span>\n <span *ngIf=\"!product.priceInRub\">{{ product.costString }}</span>\n </p>\n <span *ngIf=\"product.discount\" class=\"flex items-center\">\n <span class=\"line-through\">{{ product.discountCostString }}</span> &nbsp;\n <span class=\"text-tui-success-fill font-bold\"> -{{ product.discount.percent }}% </span>\n <tui-svg src=\"tuiIconInfoLarge\" [tuiHint]=\"discountHint\" [tuiHintShowDelay]=\"100\" tuiHintDirection=\"top\" class=\"!text-xs !h-4\"></tui-svg>\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 <sc-price-warehouse-stock [product]=\"product\"></sc-price-warehouse-stock>\n </div>\n\n <div *ngIf=\"cartItem.height || cartItem.length || cartItem.width\" class=\"flex my-0.5 items-center\">\n <button\n tuiIconButton\n icon=\"tuiIconSettings\"\n (click)=\"clickSettingsEvent.emit()\"\n size=\"s\"\n appearance=\"secondary\"\n tuiMode=\"onLight\"\n class=\"mr-2 !self-center\"\n ></button>\n <div>\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 <p *ngIf=\"cartItem.width\">Ширина: {{ cartItem.width }} м.</p>\n </div>\n </div>\n\n <a tuiLink *ngIf=\"cartItem.specificationImgUrl\" (click)=\"showSpecification()\">Спецификация</a>\n <ng-template #specificationPreview let-preview>\n <tui-preview [rotatable]=\"false\" [zoomable]=\"false\">\n <img *polymorpheusOutlet=\"cartItem.specificationImgUrl as src\" alt=\"preview\" [src]=\"cartItem.specificationImgUrl\" />\n <button icon=\"tuiIconClose\" title=\"Close\" tuiIconButton tuiPreviewAction type=\"button\" (click)=\"preview.complete()\"></button>\n </tui-preview>\n </ng-template>\n <p class=\"font-bold text-tui-text-01 text-sm\">Итого: {{ cartItem.costRub | tuiFormatNumber }} {{ 'RUB' | tuiCurrency }}</p>\n </div>\n <sc-input-quantity\n #inputQuantity\n *ngIf=\"quantityControl\"\n [formControl]=\"quantityControl\"\n size=\"s\"\n [step]=\"unitsHelper.productMultiplicity(product)\"\n (keydown.enter)=\"inputQuantity.nativeFocusableElement?.blur()\"\n class=\"w-full mt-2\"\n ></sc-input-quantity>\n </div>\n </div>\n</ng-container>\n\n<ng-template #skeleton>\n <div class=\"flex gap-2 w-full\">\n <div class=\"h-20 w-20 bg-tui-base-02 rounded-xl\"></div>\n <div class=\"flex flex-col grow gap-2.5 bg-white\">\n <div class=\"w-full h-4 rounded-xl bg-tui-base-02\"></div>\n <div class=\"w-3/5 h-4 rounded-xl bg-tui-base-02\"></div>\n <div class=\"w-4/5 h-4 rounded-xl bg-tui-base-02\"></div>\n </div>\n </div>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Inject, Input, Output, inject } from '@angular/core';\nimport { SC_URLS, ScIUrls } from '@snabcentr/client-core';\nimport { TUI_IS_MOBILE } from '@taiga-ui/cdk';\n\n/**\n * Компонент списка категорий.\n */\n@Component({\n selector: 'sc-categories-list',\n templateUrl: './sc-categories-list.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScCategoriesListComponent<T> {\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 * Инициализирует экземпляр класса {@link ScCategoriesListComponent}.\n *\n * @param urls объект информации о базовом списке ссылок приложения.\n */\n public constructor(@Inject(SC_URLS) private readonly urls: ScIUrls) {}\n\n /**\n * Возвращает путь до изображения на сервере.\n *\n * @param imgPath путь, где хранится изображение.\n */\n public getCategoryImage(imgPath: string): string {\n return this.urls.imgServerUrl + '/' + imgPath;\n }\n}\n","<div class=\"grid grid-cols-[repeat(auto-fill,minmax(21rem,1fr))] gap-x-8 gap-y-2\">\n <ng-container *ngIf=\"categories; else categoriesSkeleton\">\n <button\n *ngFor=\"let item of $any(categories)\"\n class=\"group flex gap-2 py-1.5 px-3 bg-tui-base-02 rounded-xl h-11 items-center text-left hover-hover:hover:ring-2 hover-none:active:ring-2 ring-tui-primary duration-150\"\n (click)=\"clickCategoryEvent.emit(item)\"\n >\n <img *ngIf=\"item.properties?.image\" [src]=\"getCategoryImage(item.properties?.image)\" [alt]=\"item.name\" class=\"w-8 h-8 object-cover rounded bg-tui-base-03\" />\n <tui-svg *ngIf=\"!item.properties?.image\" src=\"tuiIconCameraOffLarge\" class=\"bg-tui-base-03 !w-8 !h-8 rounded text-tui-base-05\"></tui-svg>\n <div class=\"flex grow truncate\">\n <p class=\"text-base font-bold truncate\">{{ item.name }}</p>\n <tui-svg *ngIf=\"item.isFavorite\" src=\"scIconFavoriteFill\" class=\"text-tui-primary !text-sm mr-auto\"></tui-svg>\n </div>\n <tui-svg src=\"tuiIconChevronRightLarge\" class=\"hover-hover:group-hover:text-tui-primary hover-none:group-active:text-tui-primary duration-150\"></tui-svg>\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 gap-2 py-1.5 px-3 bg-tui-base-02 rounded-xl h-11 items-center text-left hover-hover:hover:ring-2 hover-none:active:ring-2 ring-tui-base-05 duration-150\"\n >\n <div class=\"w-8 h-8 tui-skeleton\"></div>\n <div class=\"h-4 grow tui-skeleton\"></div>\n <tui-svg src=\"tuiIconChevronRightLarge\" class=\"hover-hover:group-hover:text-tui-primary hover-none:group-active:text-tui-primary duration-150 tui-skeleton\"></tui-svg>\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 tuiIconButton (click)=\"clickEvent.emit()\" [disabled]=\"disabled\" [showLoader]=\"showLoader\" appearance=\"flat\" size=\"s\">\n <tui-svg class=\"text-tui-primary\" [src]=\"isFavorite ? 'scIconFavoriteFill' : 'scIconFavorite'\"></tui-svg>\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","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, HostBinding, inject, Inject, Input, Output } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { UnitsHelper } from '../../helpers/sc-units-helper';\nimport { SC_PATH_IMAGE_NOT_FOUND, SC_URLS, ScAuthService, ScCartItem, ScIUrls, ScProduct, ScIWarehouse, ScWarehouseService, ScImageHelper } from '@snabcentr/client-core';\nimport { TuiSizeS, TuiSizeXS } from '@taiga-ui/core';\nimport { Observable } from 'rxjs';\nimport { TUI_IS_MOBILE } from '@taiga-ui/cdk';\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 changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScPriceCardComponent {\n /**\n * Признак того, отображается этот компонент на мобильном устройстве или нет.\n */\n public readonly isMobile: boolean = inject(TUI_IS_MOBILE);\n\n /**\n * Признак, что необходимо отобразить лоадер для поля ввода количества товара.\n */\n public quantityShowLoader: boolean = false;\n\n /**\n * Признак, что необходимо отобразить лоадер для кнопки избранных товаров и категорий.\n */\n public favoriteShowLoader: boolean = false;\n\n /**\n * Признак, что необходимо отобразить поле ввода количества товара.\n */\n @Input()\n public showQuantityControl: boolean = false;\n\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 * Объект товара.\n *\n * TODO: Сделать товар наблюдаемой переменной после реализации TASK:[#7144].\n */\n @Input()\n public product?: ScProduct;\n\n /**\n * Событие нажатия на кнопку \"В избранное\".\n */\n @Output()\n public clickFavoriteEvent: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на кнопку \"В корзину\".\n */\n @Output()\n public clickAddToCartEvent: EventEmitter<ScProduct> = new EventEmitter<ScProduct>();\n\n /**\n * Событие нажатия на кнопку очистки количества товара.\n */\n @Output()\n public clickClearEvent: EventEmitter<ScCartItem> = new EventEmitter<ScCartItem>();\n\n /**\n * Событие нажатия на карточку товара.\n */\n @Output()\n public clickCardEvent: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * {@link Observable} изменения выбранного склада.\n */\n public warehouseSelect$: Observable<ScIWarehouse | null> = this.warehouseService.getWarehouseSelectChange$();\n\n /**\n * {@link FormControl} поля ввода количества товара в корзине.\n */\n public quantityControl: FormControl<number | null> = new FormControl<number | null>(null, { updateOn: 'blur' });\n\n /**\n * {@link Observable} изменения количества товара в корзине.\n */\n @Output()\n public quantityValueChanges: Observable<number | null> = this.quantityControl.valueChanges;\n\n /**\n * {@link Observable} изменения статуса авторизации.\n */\n public readonly authStatus$: Observable<boolean> = this.authService.getAuthChange();\n\n /**\n * Размер компонента.\n */\n @Input()\n @HostBinding('attr.data-size')\n public size: TuiSizeS | TuiSizeXS = 'm';\n\n /**\n * Конвертация размера для компонента sc-input-quantity.\n * TODO: Решить проблему с функционалом size для разных платформ.\n */\n public get getQuantitySize(): TuiSizeS {\n return this.size === 'xs' ? 's' : this.size;\n }\n\n /**\n * Позиция товара в корзине.\n *\n * TODO: Сделать товар в корзине наблюдаемой переменной после реализации TASK:[#7144].\n */\n private _cartItem?: ScCartItem | undefined;\n\n /**\n * Инициирует экземпляр класса {@link ScPriceCardComponent}.\n *\n * @param unitsHelper Объект-хэлпер для работы со значениями единиц измерения товара.\n * @param authService Сервис аутентификации пользователей.\n * @param warehouseService Сервис для работы со складами.\n * @param urls Список ссылок на разделы backend'a.\n * @param pathImageNotFound Путь до изображения 'Товар не найден'.\n * @param imageHelper Хелпер для работы с изображениями товара.\n */\n public constructor(\n public readonly unitsHelper: UnitsHelper,\n private readonly authService: ScAuthService,\n private readonly warehouseService: ScWarehouseService,\n @Inject(SC_URLS) private readonly urls: ScIUrls,\n @Inject(SC_PATH_IMAGE_NOT_FOUND) private readonly pathImageNotFound: string,\n private readonly cdr: ChangeDetectorRef,\n private readonly imageHelper: ScImageHelper\n ) {}\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 /**\n * Устанавливает компонент в очередь на обновление.\n */\n public markForCheck(): void {\n this.cdr.markForCheck();\n }\n}\n","<!-- TODO: реализовать данный компонент и для десктопа и для мобильного приложения. Исправить все глобальные тайговские стили, привести их в порядок согласно с дизайном. -->\n<div *ngIf=\"product; else skeleton\" class=\"min-w-[10rem] shadow-md w-auto rounded-xl p-2 grid h-[19rem] text-xs relative\">\n <div class=\"overflow-hidden\">\n <img (click)=\"clickCardEvent.emit()\" [src]=\"getCardImagePreview()\" [alt]=\"product.name\" class=\"rounded-xl w-full max-h-full object-cover\" />\n </div>\n <sc-favorite-btn\n *ngIf=\"authStatus$ | async\"\n class=\"top-0 left-0 absolute\"\n (clickEvent)=\"clickFavoriteEvent.emit()\"\n [showLoader]=\"favoriteShowLoader\"\n [isFavorite]=\"product.isFavorite\"\n [disabled]=\"!!product.primaryCategory?.isFavorite\"\n ></sc-favorite-btn>\n <tui-svg *ngIf=\"product.isPreviouslyOrdered\" src=\"scIconStar\" class=\"top-0 right-0 absolute text-red-700\"></tui-svg>\n\n <a class=\"p-0 m-0\" tuiLink iconAlign=\"left\" (click)=\"clickCardEvent.emit()\">\n <p class=\"font-bold text-sm line-clamp-3\" style=\"word-break: break-word;\">{{ product.name }}</p>\n </a>\n <p *ngIf=\"product?.pack\" class=\"text-tui-text-02\">Норма упаковки: {{ product.pack }}</p>\n\n <p class=\"text-tui-text-02\">Артикул: {{ product.code }}</p>\n <p *ngIf=\"(authStatus$ | async) && product?.costDate\" class=\"text-tui-text-02\">Дата: {{ product.costDate }}</p>\n <div *ngIf=\"warehouseSelect$ | async as warehouseSelect\" class=\"flex flex-col\">\n <span *ngIf=\"product.discount && !isMobile\" class=\"flex items-center text-tui-text-02\">\n <span class=\"line-through\">{{ product.discountCostString }}</span> &nbsp;\n <span class=\"text-tui-success-fill font-bold\"> -{{ product.discount.percent }}% </span>\n <tui-svg src=\"tuiIconInfoLarge\" [tuiHint]=\"discountHint\" [tuiHintShowDelay]=\"100\" tuiHintDirection=\"top\" class=\"text-black !text-xs !h-4\"></tui-svg>\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 [class.text-tui-text-02]=\"!product.isWarehouseStockExist(warehouseSelect.id)\" class=\"cost font-bold\">{{ product.costRubString }}</span>\n <span *ngIf=\"!product.priceInRub\" class=\"text-xs font-bold text-tui-text-02 hidden group-hover:block\">{{ product.costString }}</span>\n <sc-price-warehouse-stock [product]=\"product\"></sc-price-warehouse-stock>\n </div>\n <div *ngIf=\"!showQuantityControl\" class=\"flex gap-2 max-w-full items-center justify-stretch mt-1\">\n <button tuiButton (click)=\"clickAddToCartEvent.emit(product)\" [showLoader]=\"quantityShowLoader\" [size]=\"size\" class=\"grow\">\n <tui-svg src=\"scIconCart\" class=\"!text-xs !h-4\"> </tui-svg>\n В корзину\n </button>\n <div *ngIf=\"cartItem\" class=\"flex justify-center\">\n <tui-svg src=\"tuiIconCheck\" class=\"!h-5 !w-5 bg-tui-primary text-black rounded-md\"></tui-svg>\n </div>\n </div>\n <sc-input-quantity\n #inputQuantity\n *ngIf=\"showQuantityControl\"\n [formControl]=\"quantityControl\"\n [size]=\"getQuantitySize\"\n [step]=\"unitsHelper.productMultiplicity(product)\"\n [showLoader]=\"quantityShowLoader\"\n (clickClearEvent)=\"clickClearEvent.emit(cartItem)\"\n class=\"w-full\"\n (keydown.enter)=\"inputQuantity.nativeFocusableElement?.blur()\"\n ></sc-input-quantity>\n</div>\n\n<ng-template #skeleton>\n <div class=\"flex flex-col card-wrapper bg-white rounded-xl overflow-hidden shadow-sc-1\">\n <!-- Изображение товара -->\n <div class=\"w-full h-3/5 rounded-t bg-tui-base-02\"></div>\n <!-- Краткая информация о товаре -->\n <div class=\"flex flex-col grow gap-2.5 bg-white rounded-b p-5\">\n <div class=\"w-full h-4 rounded bg-tui-base-02\"></div>\n <div class=\"w-3/5 h-4 rounded bg-tui-base-02\"></div>\n <div class=\"w-full h-4 rounded bg-tui-base-02\"></div>\n </div>\n </div>\n</ng-template>\n","import { EChartsOption } from 'echarts';\nimport { formatDate } from '@angular/common';\nimport { ScIChartDataItem } from './sc-i-chart-data-item';\nimport { tuiFormatNumber } from '@taiga-ui/core';\n/**\n * Настройки отрисовки графика.\n *\n * @see [Документация](https://echarts.apache.org/en/option.html#title)\n */\nexport const scChartOption: EChartsOption = {\n grid: {\n top: 12,\n left: 64,\n right: 0,\n bottom: 24\n },\n tooltip: {\n trigger: 'axis',\n formatter: (params) => {\n const data: ScIChartDataItem = Array.isArray(params) ? (params[0].data as ScIChartDataItem) : (params.data as ScIChartDataItem);\n const date = new Date(data.value[0]);\n const nextDate = new Date(data.value[2]);\n\n return `\n <div class=\"text-center text-black\">\n <span class=\"font-bold\">${data.value[1]} ₽</span>\n </br>\n <span class=\"text-xs\">${formatDate(date, 'dd.MM', 'en')} - ${formatDate(nextDate, 'dd.MM', 'en')}</span>\n </div>\n `;\n },\n axisPointer: {\n animation: false,\n type: 'cross'\n },\n textStyle: {\n fontFamily: 'Roboto, \"Helvetica Neue\", sans-serif'\n }\n },\n xAxis: {\n type: 'time',\n splitLine: {\n show: false\n },\n axisLine: {\n show: false\n },\n axisTick: {\n show: false\n },\n axisLabel: {\n hideOverlap: true\n },\n boundaryGap: ['3%', '3%']\n },\n yAxis: {\n splitLine: {\n show: false\n },\n axisLine: {\n show: false\n },\n axisTick: {\n show: false\n },\n axisLabel: {\n formatter: (value: number) => tuiFormatNumber(value)\n },\n type: 'value',\n boundaryGap: [0, '100%']\n },\n series: {\n name: 'История цены',\n type: 'line',\n showSymbol: false,\n symbolSize: 12,\n itemStyle: {\n color: '#ffcc40'\n }\n }\n};\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnInit } from '@angular/core';\nimport { ScPriceHistory } from '@snabcentr/client-core';\nimport { ECharts, EChartsOption } from 'echarts';\nimport { scChartOption } from './sc-chart-option';\nimport { ScIChartDataItem } from './sc-i-chart-data-item';\n\n/**\n * График истории цен товара или услуги.\n * TODO: TASK[#7482] Перепроверить возможность использования TuiLineDaysChart.\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 * История цен на товар/услугу.\n */\n @Input() public history: ScPriceHistory;\n\n /**\n * Максимальная цена товара.\n */\n public maxPrice?: number;\n\n /**\n * Минимальная цена товара.\n */\n public minPrice?: number;\n\n /**\n * Настройки графика.\n */\n public initOption: {\n devicePixelRatio?: number;\n renderer?: string;\n width?: number | string;\n height?: number | string;\n locale?: string;\n } = { locale: 'RU' };\n\n /**\n * Параметры отрисовки графика истории цены.\n */\n public chartOption: EChartsOption = scChartOption;\n\n /**\n * Данные об истории цены на товар или услугу.\n */\n private data: ScIChartDataItem[] = [];\n\n /**\n * Экземпляр {@link ECharts} в шаблоне.\n */\n private eChartsInstance: ECharts;\n\n /**\n * Инициализирует экземпляр класса {@link PriceHistoryChartComponent}.\n *\n * @param cdr Объект для работы с обнаружением изменений.\n */\n public constructor(private readonly cdr: ChangeDetectorRef) {}\n\n /** @inheritDoc */\n public ngOnInit(): void {\n if (this.chartOption.series && !Array.isArray(this.chartOption.series)) {\n this.chartOption.series.data = [];\n }\n\n Object.keys(this.history)\n .map((key) => {\n // ? Можно избежать переведя даты в api в формат ECMAScript® 2023: https://tc39.es/ecma262/#sec-date-time-string-format\n const dataString = key.split('.').reverse(),\n data = new Date(+dataString[0], +dataString[1] - 1, +dataString[2]);\n\n return { data: data, cost: this.history[String(key)].cost };\n })\n .sort((a, b) => +a.data - +b.data)\n .forEach((item, index, array) => {\n let nextDate: Date;\n\n if (array[index + 1]?.data) {\n nextDate = new Date(array[index + 1]?.data);\n nextDate.setDate(nextDate.getDate() - 1);\n } else {\n nextDate = new Date();\n }\n\n this.pushDataItem(item.cost, item.data, nextDate);\n });\n\n if (this.eChartsInstance) {\n this.setChartData();\n }\n }\n\n /**\n * Перехватчик жизненного цикла {@link ECharts}, который вызывается при его инициализации.\n *\n * @param eChartsInstance Экземпляр {@link ECharts}.\n */\n public onChartInit(eChartsInstance: ECharts) {\n this.eChartsInstance = eChartsInstance;\n\n if (this.data.length) {\n this.setChartData();\n }\n }\n\n /**\n * Устанавливает новые данные {@link PriceHistoryChartComponent.eChartsInstance}.\n */\n private setChartData(): void {\n if (this.chartOption.series && !Array.isArray(this.chartOption.series)) {\n this.maxPrice = Math.max(...this.data.map((item) => item.value[1]));\n this.minPrice = Math.min(...this.data.map((item) => item.value[1]));\n this.chartOption.series.data = this.data;\n this.eChartsInstance.clear();\n this.eChartsInstance.setOption(this.chartOption, true, true);\n this.cdr.markForCheck();\n }\n }\n\n /**\n * Добавляет значение цены товара в массив истории цен.\n *\n * @param value Цена товара или услуги.\n * @param date Дата установки цены.\n * @param nextDate Следующая дата установки цены.\n */\n private pushDataItem(value: number, date: Date, nextDate: Date): void {\n this.data.push({\n name: date.toString(),\n value: [date, value, nextDate]\n });\n }\n}\n","<div class=\"flex flex-col items-center\">\n <div *ngIf=\"maxPrice && minPrice\" class=\"w-full font-bold text-end text-lg mb-1\">от {{ minPrice.toLocaleString() }} ₽ до {{ maxPrice.toLocaleString() }} ₽</div>\n <div class=\"relative w-full h-56\">\n <div class=\"h-48 bg-tui-base-02 mt-2 absolute rounded right-0 left-16\"></div>\n <div echarts [initOpts]=\"initOption\" (chartInit)=\"onChartInit($event)\" [options]=\"chartOption\" class=\"w-full !h-full touch-none\"></div>\n </div>\n</div>\n","import { EventEmitter, InjectionToken, Provider } from '@angular/core';\nimport { ActivatedRoute, NavigationEnd, Router } from '@angular/router';\nimport { ScAuthService, ScCartService, ScCatalogService, ScICategoryProductPaginationParams, ScIPaginate, ScProduct } from '@snabcentr/client-core';\nimport { TuiDestroyService, tuiCreateToken, tuiIsPresent } from '@taiga-ui/cdk';\nimport { Observable, Subject, debounceTime, filter, map, merge, scan, share, startWith, switchMap, takeUntil } from 'rxjs';\n\n/**\n * Значения пагинации списка товаров категории по умолчанию.\n */\nexport const SC_PRODUCT_PAGINATION_DEFAULT_OPTIONS: ScICategoryProductPaginationParams = {\n perPage: 20,\n page: 0\n};\n\n/**\n * Токен значений пагинации списка товаров в категории по умолчанию.\n */\nexport const SC_PRODUCT_PAGINATION_OPTIONS: InjectionToken<ScICategoryProductPaginationParams> = tuiCreateToken(SC_PRODUCT_PAGINATION_DEFAULT_OPTIONS);\n\n/**\n * {@link Subject} параметров пагинации списка товаров в категории.\n */\nexport const paginationParams$: Subject<ScICategoryProductPaginationParams> = new Subject<ScICategoryProductPaginationParams>();\n\n/**\n * Токен {@link Subject} параметров пагинации списка товаров в категории для получения их из вне.\n */\nexport const SC_PRODUCT_PAGINATION_PARAMS: InjectionToken<Subject<ScICategoryProductPaginationParams>> = tuiCreateToken(paginationParams$);\n\n/**\n * Фабрика создания потока данных о товарах категории с пагинацией, включая данные о количестве этих товаров в корзине.\n *\n * @param paramMap Данные о параметрах запроса.\n * @param catalogService Сервис для работы с каталогом.\n * @param cartService Сервис для работы с корзиной.\n * @param authService Сервис для работы с аутентификации пользователей.\n * @param destroy$ Сервис завершения {@link Observable} через `takeUntil`.\n */\nfunction productsPaginationChangeFactory(\n { paramMap }: ActivatedRoute,\n catalogService: ScCatalogService,\n cartService: ScCartService,\n authService: ScAuthService,\n destroy$: Observable<void>\n): Observable<ScIPaginate<ScProduct> | null> {\n return paramMap.pipe(\n map((params) => params.get('categoryId')),\n filter(tuiIsPresent),\n switchMap((categoryId) =>\n paginationParams$.pipe(\n debounceTime(20),\n switchMap((paginationParams) => authService.getAuthChange().pipe(switchMap(() => catalogService.getCategoryProducts$(Number(categoryId), paginationParams)))),\n filter(tuiIsPresent),\n scan((acc: ScIPaginate<ScProduct> | null, value: ScIPaginate<ScProduct> | null) => {\n if (acc && value && value.meta.currentPage > 1) value.data.unshift(...acc.data);\n\n return value;\n }, null),\n switchMap((productsPaginate) =>\n cartService.getCartChange$().pipe(\n map((cart) => {\n productsPaginate?.data.forEach((product) => (product.cartItem = cart.items.find((cartItem) => cartItem.product.id === product.id)));\n\n return productsPaginate;\n })\n )\n ),\n startWith(null)\n )\n ),\n share(),\n takeUntil(destroy$)\n );\n}\n\n/**\n * Токен потока данных о товарах категории, включая данные о количестве этих товаров в корзине.\n */\nexport const SC_PRODUCT_PAGINATION_CHANGE_INFO = new InjectionToken<Observable<ScIPaginate<ScProduct> | null>>('SC_PRODUCT_PAGINATION_CHANGE_INFO');\n\n/**\n * {@link EventEmitter} событие нажатия на кнопку \"Показать следующие позиции категории\".\n */\nexport const nextPageClickEvent: EventEmitter<void> = new EventEmitter<void>();\n\n/**\n * Токен {@link EventEmitter} событие нажатия на кнопку \"Показать следующие позиции категории\".\n */\nexport const SC_NEXT_PAGE_PAGINATION_CLICK: InjectionToken<EventEmitter<void>> = tuiCreateToken(nextPageClickEvent);\n\n/**\n * Фабрика создания потока данных о состоянии загрузки запроса списка товаров с пагинацией пагинации.\n */\nfunction loadingPaginationFactory(productsData$: Observable<ScIPaginate<ScProduct> | null>, destroy$: Observable<void>) {\n return merge(paginationParams$.pipe(map(() => true)), productsData$.pipe(map((data) => data === null))).pipe(share(), takeUntil(destroy$));\n}\n\n/**\n * Токен потока данных о состоянии загрузки товаров пагинации.\n */\nexport const SC_LOADING_PAGINATION_CHANGE_INFO: InjectionToken<Observable<boolean>> = new InjectionToken<Observable<number>>('SC_LOADING_PAGINATION_CHANGE_INFO');\n\n/**\n * Фабрика создания потока данных прокрутки страницы с сигналами о необходимости пагинации товара.\n */\nfunction nextPagePaginationChangeFactory(\n { events }: Router,\n nextPagePaginationClick: EventEmitter<void>,\n productsData$: Observable<ScIPaginate<ScProduct> | null>,\n destroy$: Observable<void>\n): Observable<number> {\n return nextPagePaginationClick\n .pipe(\n scan((acc) => ++acc, 1),\n startWith(1)\n )\n .pipe(\n takeUntil(\n merge(\n events.pipe(filter((e) => e instanceof NavigationEnd)),\n productsData$.pipe(filter((paginate) => paginate !== null && paginate.meta.currentPage >= paginate.meta.lastPage)),\n destroy$\n )\n )\n );\n}\n\n/**\n * Токен потока данных прокрутки страницы с сигналами о необходимости пагинации товара.\n */\nexport const SC_NEXT_PAGE_PAGINATION_CHANGE_INFO: InjectionToken<Observable<number>> = new InjectionToken<Observable<number>>('SC_NEXT_PAGE_PAGINATION_CHANGE_INFO');\n\n/**\n * Провайдеры потока данных о товарах категории, включая данные о количестве этих товаров в корзине.\n */\nexport const SC_PRODUCT_PAGINATION_CHANGE_PROVIDERS: Provider[] = [\n TuiDestroyService,\n {\n provide: SC_PRODUCT_PAGINATION_CHANGE_INFO,\n deps: [ActivatedRoute, ScCatalogService, ScCartService, ScAuthService, TuiDestroyService],\n useFactory: productsPaginationChangeFactory\n },\n {\n provide: SC_NEXT_PAGE_PAGINATION_CHANGE_INFO,\n deps: [Router, SC_NEXT_PAGE_PAGINATION_CLICK, SC_PRODUCT_PAGINATION_CHANGE_INFO, TuiDestroyService],\n useFactory: nextPagePaginationChangeFactory\n },\n {\n provide: SC_LOADING_PAGINATION_CHANGE_INFO,\n deps: [SC_PRODUCT_PAGINATION_CHANGE_INFO, TuiDestroyService],\n useFactory: loadingPaginationFactory\n }\n];\n","import { ChangeDetectionStrategy, Component, EventEmitter, Inject, Input } from '@angular/core';\nimport { SC_PRODUCT_PAGINATION_CHANGE_PROVIDERS, SC_NEXT_PAGE_PAGINATION_CLICK, SC_PRODUCT_PAGINATION_OPTIONS } from '../../providers/productsPagination';\nimport { ScICategoryProductPaginationParams, ScIPaginationMeta } from '@snabcentr/client-core';\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 providers: [SC_PRODUCT_PAGINATION_CHANGE_PROVIDERS]\n})\nexport class ScPriceListPaginationComponent {\n /**\n * Данные пагинации.\n */\n @Input()\n public meta?: ScIPaginationMeta;\n\n /**\n * Состояние загрузки пагинации.\n */\n @Input()\n public loadingPagination: boolean;\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","<button *ngIf=\"meta?.currentPage !== meta?.lastPage\" tuiButton (click)=\"nextPageClickEvent.emit()\" [disabled]=\"loadingPagination\" appearance=\"secondary\" size=\"l\" class=\"w-full\">\n Показать ещё {{ options.perPage }} товаров\n</button>\n<!-- В будущем можно добавить пагинацию по номерам страницы. -->\n","/**\n * Language: Russian.\n */\nexport default {\n time: {\n month: ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'],\n monthAbbr: ['Янв', 'Фев', 'Мар', 'Апр', 'Май', 'Июн', 'Июл', 'Авг', 'Сен', 'Окт', 'Ноя', 'Дек'],\n dayOfWeek: ['Воскресенье', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота'],\n dayOfWeekAbbr: ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб']\n },\n legend: {\n selector: {\n all: 'Всё',\n inverse: 'Обратить'\n }\n },\n toolbox: {\n brush: {\n title: {\n rect: 'Выделить область',\n polygon: 'Инструмент «Лассо»',\n lineX: 'Горизонтальное выделение',\n lineY: 'Вертикальное выделение',\n keep: 'Оставить выбранное',\n clear: 'Очистить выбранное'\n }\n },\n dataView: {\n title: 'Данные',\n lang: ['Данные', 'Закрыть', 'Обновить']\n },\n dataZoom: {\n title: {\n zoom: 'Увеличить',\n back: 'Сбросить увеличение'\n }\n },\n magicType: {\n title: {\n line: 'Переключиться на линейный график',\n bar: 'Переключиться на столбчатую диаграмму',\n stack: 'Стопка',\n tiled: 'Плитка'\n }\n },\n restore: {\n title: 'Восстановить'\n },\n saveAsImage: {\n title: 'Сохранить картинку',\n lang: ['Правый клик, чтобы сохранить картинку']\n }\n },\n series: {\n typeNames: {\n pie: 'Круговая диаграмма',\n bar: 'Столбчатая диаграмма',\n line: 'Линейный график',\n scatter: 'Точечная диаграмма',\n effectScatter: 'Точечная диаграмма с волнами',\n radar: 'Лепестковая диаграмма',\n tree: 'Дерево',\n treemap: 'Плоское дерево',\n boxplot: 'Ящик с усами',\n candlestick: 'Свечной график',\n k: 'График К-линий',\n heatmap: 'Тепловая карта',\n map: 'Карта',\n parallel: 'Диаграмма параллельных координат',\n lines: 'Линейный граф',\n graph: 'Граф отношений',\n sankey: 'Диаграмма Санкей',\n funnel: 'Воронкообразная диаграмма',\n gauge: 'Шкала',\n pictorialBar: 'Столбец-картинка',\n themeRiver: 'Тематическая река',\n sunburst: 'Солнечные лучи'\n }\n },\n aria: {\n general: {\n withTitle: 'Это график, показывающий \"{title}\"',\n withoutTitle: 'Это график'\n },\n series: {\n single: {\n prefix: '',\n withName: ' с типом {seriesType} и именем {seriesName}.',\n withoutName: ' с типом {seriesType}.'\n },\n multiple: {\n prefix: '. Он состоит из {seriesCount} серий.',\n withName: ' Серия {seriesId} имеет тип {seriesType} и показывает {seriesName}.',\n withoutName: ' Серия {seriesId} имеет тип {seriesType}.',\n separator: {\n middle: '',\n end: ''\n }\n }\n },\n data: {\n allData: 'Данные таковы: ',\n partialData: 'Первые {displayCnt} элементов: ',\n withName: 'значение для {name} — {value}',\n withoutName: '{value}',\n separator: {\n middle: ', ',\n end: '. '\n }\n }\n }\n};\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ScCategoryCardComponent } from './category-card/sc-category-card.component';\nimport { RouterModule } from '@angular/router';\nimport { TuiButtonModule, TuiHintModule, TuiLabelModule, TuiLinkModule, TuiLoaderModule, TuiModeModule, TuiSvgModule, TuiTextfieldControllerModule } from '@taiga-ui/core';\nimport { ScFavoriteBtnComponent } from './sc-favorite-btn/sc-favorite-btn.component';\nimport { TuiElasticContainerModule, TuiFieldErrorPipeModule, TuiInputNumberModule, TuiIslandModule } from '@taiga-ui/kit';\nimport { ScInputQuantityComponent } from './input-quantity/sc-input-quantity.component';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { ScPriceCardComponent } from './price-card/sc-price-card.component';\nimport { ScPriceWarehouseStockComponent } from './price-warehouse-stock/sc-price-warehouse-stock.component';\nimport { ScPriceHistoryComponent } from './price-history/sc-price-history.component';\nimport * as echarts from 'echarts/core';\nimport { LineChart } from 'echarts/charts';\nimport { TitleComponent, TooltipComponent, GridComponent } from 'echarts/components';\nimport { SVGRenderer } from 'echarts/renderers';\nimport { NgxEchartsModule } from 'ngx-echarts';\nimport scLangRU from './price-history/sc-lang-RU';\nimport { ScPriceListPaginationComponent } from './price-list-pagination/sc-price-list-pagination.component';\nimport { TuiLetModule, TuiRepeatTimesModule } from '@taiga-ui/cdk';\nimport { ScCategoriesListComponent } from './categories-list/sc-categories-list.component';\n\necharts.registerLocale('RU', scLangRU);\necharts.use([TitleComponent, TooltipComponent, GridComponent, LineChart, SVGRenderer]);\n\n/**\n * Модуль каталога.\n */\n@NgModule({\n declarations: [\n ScPriceListPaginationComponent,\n ScCategoryCardComponent,\n ScFavoriteBtnComponent,\n ScInputQuantityComponent,\n ScPriceCardComponent,\n ScPriceWarehouseStockComponent,\n ScPriceHistoryComponent,\n ScCategoriesListComponent\n ],\n exports: [\n ScPriceListPaginationComponent,\n ScCategoryCardComponent,\n ScFavoriteBtnComponent,\n ScInputQuantityComponent,\n ScPriceCardComponent,\n ScPriceWarehouseStockComponent,\n ScPriceHistoryComponent,\n ScCategoriesListComponent\n ],\n imports: [\n CommonModule,\n RouterModule,\n TuiButtonModule,\n TuiSvgModule,\n TuiIslandModule,\n TuiInputNumberModule,\n TuiLabelModule,\n TuiTextfieldControllerModule,\n FormsModule,\n ReactiveFormsModule,\n TuiHintModule,\n TuiModeModule,\n TuiFieldErrorPipeModule,\n TuiLoaderModule,\n TuiLinkModule,\n TuiElasticContainerModule,\n NgxEchartsModule.forRoot({ echarts }),\n TuiLetModule,\n TuiRepeatTimesModule\n ]\n})\nexport class ScCatalogModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ScCartItemMobileComponent } from './cart-item-mobile/sc-cart-item-mobile.component';\nimport { TuiButtonModule, TuiFormatNumberPipeModule, TuiHintModule, TuiLinkModule, TuiModeModule, TuiSvgModule } from '@taiga-ui/core';\nimport { ScCatalogModule } from '../catalog';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TuiCurrencyPipeModule } from '@taiga-ui/addon-commerce';\nimport { TuiPreviewModule } from '@taiga-ui/addon-preview';\nimport { PolymorpheusModule } from '@tinkoff/ng-polymorpheus';\n\n/**\n * Модуль корзины.\n */\n@NgModule({\n declarations: [ScCartItemMobileComponent],\n exports: [ScCartItemMobileComponent],\n imports: [\n CommonModule,\n TuiLinkModule,\n ScCatalogModule,\n TuiButtonModule,\n TuiCurrencyPipeModule,\n TuiFormatNumberPipeModule,\n TuiModeModule,\n TuiSvgModule,\n TuiHintModule,\n FormsModule,\n ReactiveFormsModule,\n TuiPreviewModule,\n PolymorpheusModule\n ]\n})\nexport class ScCartModule {}\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 editContactClick: EventEmitter<void> = new EventEmitter<void>();\n}\n","<sc-accordion (addButtonClick)=\"addContactClick.emit()\">\n Контакты\n <ng-template scAccordionContent>\n <tui-loader *tuiLet=\"contacts$ | async as contacts\" [overlay]=\"true\" [showLoader]=\"contacts === null\">\n <div class=\"flex flex-col gap-2\">\n <ng-container *ngIf=\"!contacts || contacts.length; else contactsNotExist\">\n <div *ngFor=\"let contact of contacts\" class=\"flex gap-2 border-b border-tui-base-03\">\n <div class=\"flex flex-col gap-2 grow\">\n {{ contact.name }}\n <a\n tuiLink\n tuiMode=\"onLight\"\n icon=\"tuiIconPhoneLarge\"\n iconAlign=\"left\"\n [pseudo]=\"true\"\n href=\"tel:{{ contact.phone }}\"\n >{{ contact.phone | tuiFormatPhone }}</a\n >\n <a tuiLink tuiMode=\"onLight\" icon=\"tuiIconMailLarge\" iconAlign=\"left\" [pseudo]=\"true\" href=\"mailto:{{ contact.email }}\"> {{ contact.email }} </a>\n </div>\n <div class=\"flex flex-col gap-4\">\n <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n icon=\"tuiIconEdit3Large\"\n tuiMode=\"onLight\"\n appearance=\"flat\"\n (click)=\"$event.stopPropagation(); editContactClick.emit()\"\n ></button>\n </div>\n </div>\n </ng-container>\n\n <ng-template #contactsNotExist>\n <tui-notification size=\"l\">\n <div class=\"flex flex-wrap gap-2 font-medium\">\n Контакты не указаны.\n <button tuiButton size=\"s\" icon=\"tuiIconPlusLarge\" (click)=\"addContactClick.emit()\">Добавить</button>\n </div>\n </tui-notification>\n </ng-template>\n </div>\n </tui-loader>\n </ng-template>\n</sc-accordion>\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 addBankAccountsClick: EventEmitter<number> = new EventEmitter<number>();\n\n /**\n * Событие нажатия на кнопку редактирования банковского счёта контрагента.\n */\n @Output()\n public editBankAccountsContragentClick: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на кнопку редактирования контрагента.\n */\n @Output()\n public editContragentClick: EventEmitter<void> = new EventEmitter<void>();\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","<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 flex-col gap-2 grow\">\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 <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n icon=\"tuiIconEdit3Large\"\n tuiMode=\"onLight\"\n appearance=\"flat\"\n (click)=\"$event.stopPropagation(); editContragentClick.emit()\"\n ></button>\n </div>\n\n <sc-accordion (addButtonClick)=\"addBankAccountsClick.emit(contragent.id)\">\n Банковские реквизиты\n <ng-template scAccordionContent>\n <tui-loader *tuiLet=\"bankAccounts$ | async as bankAccounts\" [overlay]=\"true\" [showLoader]=\"bankAccounts === null\">\n <div class=\"flex flex-col gap-2\">\n <ng-container *ngIf=\"!bankAccounts || bankAccounts.length; else bankAccountsNotExist\">\n <div *ngFor=\"let bankAccount of bankAccounts\" class=\"flex gap-2 border-b border-tui-base-03\">\n <div class=\"flex flex-col gap-2 grow\">\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=\"tuiIconEdit3Large\"\n tuiMode=\"onLight\"\n appearance=\"flat\"\n (click)=\"$event.stopPropagation();\"\n ></button>\n\n <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n icon=\"tuiIconTrash2Large\"\n tuiMode=\"onLight\"\n appearance=\"flat\"\n (click)=\"$event.stopPropagation();\"\n ></button>\n </div>\n </div>\n </ng-container>\n\n <ng-template #bankAccountsNotExist>\n <tui-notification size=\"l\">\n <div class=\"flex flex-wrap gap-2 font-medium\">\n У контрагента <span class=\"font-bold\">{{ contragent.name }}</span> не указаны банковские реквизиты.\n <button tuiButton size=\"s\" icon=\"tuiIconPlusLarge\" (click)=\"addBankAccountsClick.emit(contragent.id)\">Добавить</button>\n </div>\n </tui-notification>\n </ng-template>\n </div>\n </tui-loader>\n </ng-template>\n </sc-accordion>\n <sc-contacts-accordion *ngIf=\"contacts$\" [contacts$]=\"contacts$\"></sc-contacts-accordion>\n </div>\n </ng-template>\n</sc-accordion>\n","import { Component, ChangeDetectionStrategy, Output, EventEmitter } from '@angular/core';\nimport { ScContragent, ScContragentService } 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 editBankAccountsContragentClick: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на кнопку добавления банковского счёта контрагенту.\n */\n @Output()\n public addBankAccountsClick: EventEmitter<number> = new EventEmitter<number>();\n\n /**\n * Событие нажатия на кнопку редактирования контрагента.\n */\n @Output()\n public editContragentClick: EventEmitter<void> = new EventEmitter<void>();\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 (addBankAccountsClick)=\"addBankAccountsClick.emit($event)\"\n (editContragentClick)=\"editContragentClick.emit()\"\n (editBankAccountsContragentClick)=\"editBankAccountsContragentClick.emit()\"\n ></sc-contragents-accordion-item>\n </ng-container>\n\n <ng-template #contragentsNotExist>\n <tui-notification size=\"l\">\n <div class=\"flex flex-wrap gap-2 font-medium\">\n Контрагенты не указаны.\n <button tuiButton size=\"s\" icon=\"tuiIconPlusLarge\" (click)=\"addContragentClick.emit()\">Добавить</button>\n </div>\n </tui-notification>\n </ng-template>\n </div>\n </tui-loader>\n </ng-template>\n</sc-accordion>\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 { HttpErrorResponse } from '@angular/common/http';\nimport { Component, Inject, Input, OnInit, SkipSelf } from '@angular/core';\nimport { FormGroup, NgControl } from '@angular/forms';\nimport { ScISuggestionType, ScSuggestion, ScSuggestionService } from '@snabcentr/client-core';\nimport { tuiIsPresent, tuiIsFalsy, tuiMarkControlAsTouchedAndValidate, tuiControlValue } from '@taiga-ui/cdk';\nimport { ApiErrorResponse } from '../../auth';\nimport { Observable, catchError, debounceTime, filter, map, of, share, startWith, switchMap, tap, throwError } from 'rxjs';\n\n/**\n * Компонент подсказок для поля ввода.\n */\n@Component({\n selector: 'sc-suggestion-field',\n templateUrl: './sc-suggestion-field.component.html'\n})\nexport class ScSuggestionFieldComponent implements OnInit {\n /**\n * Тип подсказок.\n */\n @Input()\n public type: ScISuggestionType = ScISuggestionType.fio;\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 * Инициализирует экземпляр класса {@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(300),\n filter(tuiIsPresent),\n map((term) => term.trim()),\n filter((term) => term.length >= 3),\n switchMap((term: string) => this.suggestionService.getData<ScSuggestion>(term, this.type).pipe(startWith(null))),\n catchError((error: 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 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);\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 }\n }\n}\n","<tui-loader size=\"m\" [overlay]=\"true\" [showLoader]=\"!!(loading$ | async)\">\n <tui-data-list *tuiLet=\"suggestions$ | async as options\">\n <button *ngFor=\"let option of options\" tuiOption (click)=\"onSelected(option)\" class=\"flex-col !items-start\">\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 tuiTextfield [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 tuiTextfield [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 tuiTextfield [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","import { ChangeDetectionStrategy, Component, Inject, OnInit, SkipSelf } from '@angular/core';\nimport { FormControl, FormGroupDirective, Validators } from '@angular/forms';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { ScICity, ScICountry, ScIRegion, ScLocationsService } from '@snabcentr/client-core';\nimport { tuiControlValue, tuiIsPresent, tuiMarkControlAsTouchedAndValidate } from '@taiga-ui/cdk';\nimport { Observable, combineLatest, debounceTime, filter, 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})\n@UntilDestroy({ checkProperties: true })\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 * `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 /**\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 /** @inheritDoc */\n public ngOnInit(): void {\n if (this.cityIdControl.valid) {\n this.locationsService\n .getUserCity$(Number(this.cityIdControl?.value))\n .pipe(untilDestroyed(this))\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(untilDestroyed(this)).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(untilDestroyed(this)).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 */\n public onSelectedCity(city: ScICity | null): void {\n if (this.cityIdControl) {\n this.cityIdControl.setValue(city?.id.toString() ?? null);\n tuiMarkControlAsTouchedAndValidate(this.cityIdControl);\n }\n }\n\n /**\n * Функция преобразования объекта сортировки в значение, отображаемое в поле ввода.\n *\n * @param item Выбранный объект выпадающего списка.\n */\n public readonly stringify = (item: { name: string }): string => `${item.name}`;\n}\n","<div class=\"flex flex-col sm:flex-row gap-4 items-start\">\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 tuiLabel=\"Регион\" class=\"w-full\">\n <tui-combo-box *tuiLet=\"regions$ | async as regions\" [formControl]=\"regionControl\" [stringify]=\"stringify\">\n Регион\n <input tuiTextfield autocapitalize=\"off\" autocomplete=\"off\" autocorrect=\"off\" />\n <tui-data-list-wrapper *tuiDataList [itemContent]=\"stringify | tuiStringifyContent\" [items]=\"regions | tuiFilterByInputWith: stringify\"></tui-data-list-wrapper>\n </tui-combo-box>\n <tui-error [formControl]=\"regionControl\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"Город\" class=\"w-full\">\n <tui-combo-box *tuiLet=\"cities$ | async as cities\" [formControl]=\"cityControl\" [stringify]=\"stringify\" (ngModelChange)=\"onSelectedCity($event)\">\n Город\n <input tuiTextfield autocapitalize=\"off\" autocomplete=\"off\" autocorrect=\"off\" />\n <tui-data-list-wrapper *tuiDataList [itemContent]=\"stringify | tuiStringifyContent\" [items]=\"cities | tuiFilterByInputWith: stringify\"></tui-data-list-wrapper>\n </tui-combo-box>\n <tui-error [formControl]=\"cityIdControl\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n <tui-error *ngIf=\"cityIdControl.untouched\" [formControl]=\"cityControl\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TuiLetModule } from '@taiga-ui/cdk';\nimport { TuiTextfieldControllerModule, TuiLabelModule, TuiErrorModule, TuiDataListModule, TuiLoaderModule, TuiButtonModule } from '@taiga-ui/core';\nimport {\n TuiInputModule,\n TuiFieldErrorPipeModule,\n TuiComboBoxModule,\n TuiDataListWrapperModule,\n TuiFilterByInputPipeModule,\n TuiStringifyContentPipeModule,\n TuiInputPhoneModule\n} from '@taiga-ui/kit';\nimport { MaskitoModule } from '@maskito/angular';\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 TuiLabelModule,\n TuiLetModule,\n TuiFieldErrorPipeModule,\n TuiErrorModule,\n TuiDataListModule,\n TuiLoaderModule,\n TuiComboBoxModule,\n TuiDataListWrapperModule,\n TuiFilterByInputPipeModule,\n TuiStringifyContentPipeModule,\n TuiInputPhoneModule,\n TuiButtonModule,\n MaskitoModule\n ],\n exports: [ScAddressesSelectionFieldComponent, ScSuggestionFieldComponent]\n})\nexport class ScFormFieldsModule {}\n","import { ChangeDetectionStrategy, Component, Inject } from '@angular/core';\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\nimport { ScContragentService, ScIBankAccountOnDataCreate, ScIBankAccount } from '@snabcentr/client-core';\nimport { Observable, Subject, catchError, filter, map, of, share, startWith, switchMap, tap } from 'rxjs';\nimport { scBicValidator, scCorrespondentAccountValidator } from '../../validators';\nimport { TuiDialogContext } from '@taiga-ui/core';\nimport { POLYMORPHEUS_CONTEXT } from '@tinkoff/ng-polymorpheus';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { tuiIsFalsy, tuiMarkControlAsTouchedAndValidate } from '@taiga-ui/cdk';\nimport { ApiErrorResponse } from '../../auth';\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: 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 }> = 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 * {@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 tap((i) => console.log(i)),\n filter((value): value is ScIBankAccountOnDataCreate => this.form.valid),\n switchMap((value) => {\n console.log(this.context.data.contragentId);\n return this.contragentService.createContragentBankAccount$(this.context.data.contragentId, value).pipe(\n tap((bankAccount) => this.context?.completeWith(bankAccount)),\n catchError((error: HttpErrorResponse) => {\n tuiMarkControlAsTouchedAndValidate(this.form);\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({} 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 [formGroup]=\"form\" (ngSubmit)=\"onSubmit.next()\" class=\"flex flex-col gap-3\">\n <sc-new-contragent-bank-account-form [form]=\"form\"></sc-new-contragent-bank-account-form>\n <div class=\"flex gap-4 justify-center\">\n <button tuiButton (click)=\"context.$implicit.complete()\" type=\"button\" icon=\"tuiIconXLarge\" appearance=\"secondary\">Отмена</button>\n <button tuiButton tuiMode=\"onLight\" [disabled]=\"form.invalid\" [showLoader]=\"!!(loading$ | async)\" type=\"submit\" icon=\"scIconSave\">Сохранить</button>\n </div>\n</form>","import { NgModule } from '@angular/core';\nimport { ScAccordionModule } from '../accordion';\nimport { CommonModule } from '@angular/common';\nimport {\n TuiButtonModule,\n TuiDataListModule,\n TuiErrorModule,\n TuiFormatPhonePipeModule,\n TuiLabelModule,\n TuiLinkModule,\n TuiLoaderModule,\n TuiModeModule,\n TuiNotificationModule\n} from '@taiga-ui/core';\nimport { TuiLetModule } from '@taiga-ui/cdk';\nimport { ScContactsAccordionComponent } from './contacts-accordion/sc-contacts-accordion.component';\nimport { ScNewContragentBankAccountsFormComponent } from './new-contragent-bank-account-form/sc-new-contragent-bank-account-form.component';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { ScFormFieldsModule } from '../form-fields/form-fields.module';\nimport { MaskitoModule } from '@maskito/angular';\nimport { TuiDataListWrapperModule, TuiFieldErrorPipeModule, TuiInputModule, TuiInputPhoneModule, TuiSelectModule } from '@taiga-ui/kit';\nimport { ScAddContragentBankAccountsDialogComponent } from './add-contragent-bank-account-dialog/sc-add-contragent-bank-account-dialog.component';\n\n/**\n * Модуль контактных лиц.\n */\n@NgModule({\n declarations: [ScContactsAccordionComponent, ScNewContragentBankAccountsFormComponent, ScAddContragentBankAccountsDialogComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n ScAccordionModule,\n TuiButtonModule,\n TuiModeModule,\n TuiLoaderModule,\n TuiLetModule,\n TuiNotificationModule,\n TuiLinkModule,\n TuiFormatPhonePipeModule,\n ScFormFieldsModule,\n MaskitoModule,\n TuiFieldErrorPipeModule,\n TuiSelectModule,\n TuiDataListModule,\n TuiDataListWrapperModule,\n TuiLabelModule,\n TuiInputModule,\n TuiInputPhoneModule,\n TuiErrorModule\n ],\n exports: [ScContactsAccordionComponent, ScNewContragentBankAccountsFormComponent, ScAddContragentBankAccountsDialogComponent]\n})\nexport class ScContactsModule {}\n","import { NgModule } from '@angular/core';\nimport { ScContragentsAccordionComponent } from './contragents-accordion/sc-contragents-accordion.component';\nimport { ScAccordionModule } from '../accordion';\nimport { CommonModule } from '@angular/common';\nimport { TuiButtonModule, TuiLoaderModule, TuiModeModule, TuiNotificationModule } from '@taiga-ui/core';\nimport { TuiLetModule } from '@taiga-ui/cdk';\nimport { ScContragentsAccordionItemComponent } from './contragents-accordion/contragents-accordion-item/sc-contragents-accordion-item.component';\nimport { ScContactsModule } from '../contacts/sc-contacts.module';\n\n/**\n * Модуль для отображение контента разделами, с возможностью скрывать и отображать содержимое.\n */\n@NgModule({\n declarations: [ScContragentsAccordionComponent, ScContragentsAccordionItemComponent],\n imports: [CommonModule, ScAccordionModule, TuiButtonModule, TuiModeModule, TuiLoaderModule, TuiLetModule, TuiNotificationModule, ScContactsModule],\n exports: [ScContragentsAccordionComponent]\n})\nexport class ScContragentsModule {}\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 @Output()\n public editDeliveryAddressClick: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Список банковских счетов контрагента.\n */\n public contacts$?: Observable<ScIContact[] | null>;\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","<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 <button tuiIconButton size=\"m\" type=\"button\" icon=\"tuiIconEdit3Large\" tuiMode=\"onLight\" appearance=\"flat\" (click)=\"$event.stopPropagation();\"></button>\n </div>\n\n <sc-contacts-accordion *ngIf=\"contacts$\" [contacts$]=\"contacts$\"></sc-contacts-accordion>\n </div>\n </ng-template>\n</sc-accordion>\n","import { Component, ChangeDetectionStrategy, Output, EventEmitter } from '@angular/core';\nimport { ScDeliveryAddressService, 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 * Инициализирует экземпляр класса {@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 *ngFor=\"let address of deliveryAddress\" [deliveryAddress]=\"address\"></sc-delivery-address-accordion-item>\n </ng-container>\n\n <ng-template #contragentsNotExist>\n <tui-notification size=\"l\">\n <div class=\"flex flex-wrap gap-2 font-medium\">\n Адреса доставки не указаны.\n <button tuiButton size=\"s\" icon=\"tuiIconPlusLarge\" (click)=\"addDeliveryAddressClick.emit()\">Добавить</button>\n </div>\n </tui-notification>\n </ng-template>\n </div>\n </tui-loader>\n </ng-template>\n</sc-accordion>\n","import { NgModule } from '@angular/core';\nimport { ScAccordionModule } from '../accordion';\nimport { CommonModule } from '@angular/common';\nimport { TuiButtonModule, TuiLoaderModule, TuiModeModule, TuiNotificationModule } from '@taiga-ui/core';\nimport { TuiLetModule } from '@taiga-ui/cdk';\nimport { ScDeliveryAddressAccordionItemComponent } from './delivery-address-accordion/delivery-address-accordion-item/sc-delivery-address-accordion-item.component';\nimport { ScContactsModule } from '../contacts/sc-contacts.module';\nimport { ScDeliveryAddressAccordionComponent } from './delivery-address-accordion/sc-delivery-address-accordion.component';\n\n/**\n * Модуль для отображение адресов доставки разделами, с возможностью скрывать и отображать содержимое.\n */\n@NgModule({\n declarations: [ScDeliveryAddressAccordionComponent, ScDeliveryAddressAccordionItemComponent],\n imports: [CommonModule, ScAccordionModule, TuiButtonModule, TuiModeModule, TuiLoaderModule, TuiLetModule, TuiNotificationModule, ScContactsModule],\n exports: [ScDeliveryAddressAccordionComponent]\n})\nexport class ScDeliveryAddressModule {}\n","import { Injectable } from '@angular/core';\nimport { ScDocumentInfo, 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 'tuiIconImageLarge';\n case ScIconTypesEnum.iconPdfFile:\n return 'scIconPdfFile';\n case ScIconTypesEnum.iconWordFile:\n return 'scIconWordFile';\n case ScIconTypesEnum.iconExcelFile:\n return 'scIconExcelFile';\n case ScIconTypesEnum.iconFolder:\n return 'scIconFolder';\n default:\n return 'scIconFile';\n }\n }\n\n /**\n * Проверяет на признак наличия дочерних элементов.\n *\n * @param info Объект пришедших данных о файле.\n * @returns Возвращает true при наличии дочерних элементов и false при их отсутствии.\n */\n public hasChildren(info: ScDocumentInfo): boolean {\n return info.type === '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 { TuiTreeItemContentComponent } 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 TuiTreeItemContentComponent {}\n","<ng-container [ngTemplateOutlet]=\"context.template\"></ng-container>\n","/* eslint-disable @angular-eslint/no-input-rename */\nimport { Directive, Input, forwardRef } from '@angular/core';\nimport { TUI_TREE_CONTENT, TUI_TREE_START } from '@taiga-ui/kit';\nimport { PolymorpheusComponent } from '@tinkoff/ng-polymorpheus';\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 { TUI_TREE_LOADING, TUI_TREE_LOADER } from '@taiga-ui/kit';\nimport { ScDocumentInfo, ScFilesService } from '@snabcentr/client-core';\nimport { Observable, map } from 'rxjs';\nimport { TreeIconService } from './services/tree-icon.service';\nimport { TreeLoaderService } from './services/tree-loader.service';\nimport { TreeNode } from './interfaces/tree-node';\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(@Inject(TUI_TREE_LOADING) public readonly loading: unknown, public readonly iconService: TreeIconService, private readonly filesService: ScFilesService) {}\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 #content let-item>\n <tui-loader *ngIf=\"item === loading; else text\" class=\"w-8 my-4\"></tui-loader>\n <ng-template #text>\n <tui-svg [src]=\"item.icon\" class=\"tui-space_right-2\"></tui-svg>\n <a tuiLink [pseudo]=\"true\" *ngIf=\"item.link\" href=\"{{ item.link }}\" class=\"grow\">{{ item.text }}</a>\n <p *ngIf=\"!item.link\" class=\"grow\">{{ item.text }}</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 *ngFor=\"let _ of [].constructor(7)\" class=\"flex items-center gap-2\">\n <div class=\"tui-skeleton h-6 w-6\"></div>\n <div class=\"tui-skeleton h-4 w-40\"></div>\n </div>\n </div>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FilesAndDocumentsComponent } from './files-and-documents.component';\nimport { TuiTreeModule } from '@taiga-ui/kit';\nimport { TuiLinkModule, TuiLoaderModule, TuiSvgModule } from '@taiga-ui/core';\nimport { FileTreeItemComponent } from './file-tree-item/file-tree-item.component';\nimport { TreeTopDirective } from '../public-api';\nimport { TreeDirective } from './directives/tree.directive';\n\n/**\n * Модуль файлов и документов.\n */\n@NgModule({\n imports: [CommonModule, TuiTreeModule, TuiSvgModule, TuiLoaderModule, TuiLinkModule],\n declarations: [FilesAndDocumentsComponent, TreeDirective, TreeTopDirective, FileTreeItemComponent],\n exports: [FilesAndDocumentsComponent]\n})\nexport class FilesAndDocumentsModule {}\n","/**\n * Список иконок.\n */\nexport const scClientUiIconsName = [\n 'scIconWordFile',\n 'scIconWindowsill',\n 'scIconWarning',\n 'scIconSandwichPanels',\n 'scIconWallet',\n 'scIconViewTree',\n 'scIconViewInline',\n 'scIconTop',\n 'scIconTemplates',\n 'scIconTasks',\n 'scIconSuitcase',\n 'scIconStar',\n 'scIconSocialWhatsapp',\n 'scIconSocialVk',\n 'scIconSocialViber',\n 'scIconSocialTelegram',\n 'scIconSocialQR',\n 'scIconSocialInstagram',\n 'scIconSocialFacebook',\n 'scIconSocialEmail',\n 'scIconSocialCopy',\n 'scIconSmile',\n 'scIconSiding',\n 'scIconShare',\n 'scIconSend',\n 'scIconSearch',\n 'scIconSave',\n 'scIconSandwich',\n 'scIconRocket',\n 'scIconRequisites',\n 'scIconRepeat',\n 'scIconReclamation',\n 'scIconQRCodeScan',\n 'scIconPromoMaterials',\n 'scIconProfile',\n 'scIconPrice',\n 'scIconPlasticProfile',\n 'scIconPercentage',\n 'scIconPdfFile',\n 'scIconPalette',\n 'scIconOffer',\n 'scIconNews',\n 'scIconMosquitoNet',\n 'scIconMoney',\n 'scIconMail',\n 'scIconLogIn',\n 'scIconLockOpen',\n 'scIconLock',\n 'scIconList',\n 'scIconHome',\n 'scIconHistory',\n 'scIconHeartFill',\n 'scIconHeart',\n 'scIconGraph',\n 'scIconFolderOpen',\n 'scIconFolder',\n 'scIconFoam',\n 'scIconFoamBalloon',\n 'scIconFilter',\n 'scIconFile',\n 'scIconFavoriteFill',\n 'scIconFavorite',\n 'scIconFastener',\n 'scIconExcelFile',\n 'scIconError',\n 'scIconEdit',\n 'scIconDeleteProfile',\n 'scIconContacts',\n 'scIconConfigurator',\n 'scIconClock',\n 'scIconClients',\n 'scIconCatalogBack',\n 'scIconCart',\n 'scIconCanopy',\n 'scIconCalendar',\n 'scIconBook',\n 'scIconBell',\n 'scIconBag',\n 'scIconAttention',\n 'scIconArrowReturn',\n 'scIconArrowLargeStart',\n 'scIconArrowLargeEnd',\n 'scIconArrowForward',\n 'scIconApplication',\n 'scIconAddProfile'\n];\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 tuiIconButton icon=\"scIconShare\" [appearance]=\"appearance\" [size]=\"size\" (click)=\"$event.stopPropagation(); clickShareEvent.emit()\"></button>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { ScNewsTile } from '@snabcentr/client-core';\n\n/**\n * Компонент карточки новости.\n */\n@Component({\n selector: 'sc-news-card',\n templateUrl: './sc-news-card.component.html',\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","<div (click)=\"clickCardEvent.emit(news)\" class=\"block relative h-82 w-70 cursor-pointer shadow-sc-2 rounded-lg overflow-hidden bg-white\">\n <div [style.background-image]=\"'url(' + news.image + ')'\" class=\"bg-no-repeat bg-center bg-cover bg-tui-base-02 w-full h-50\"></div>\n <div class=\"px-6 py-4.5 h-32 w-full w-full flex justify-between align-baseline bg-white overflow-hidden\">\n <div class=\"flex flex-col gap-2.5\">\n <p class=\"text-sm text-tui-text-02\">{{ news.createdAt }}</p>\n <a class=\"text-sm font-bold text-black line-clamp-3\">{{ news.subject }}</a>\n </div>\n <sc-share-button (clickShareEvent)=\"clickShareEvent.emit()\"></sc-share-button>\n </div>\n</div>\n","import { Input, Component, ChangeDetectionStrategy } from '@angular/core';\n\n/**\n * Компонент скелетона карточки новости.\n */\n@Component({\n selector: 'sc-news-card-skeleton',\n templateUrl: './sc-news-card-skeleton.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScNewsCardSkeletonComponent {\n /**\n * Признак, что необходимо отобразить скелетон изображения новости.\n */\n @Input() public hasImg: boolean = true;\n}\n","<div class=\"block relative h-82 w-70 shadow-sc-2 rounded-lg overflow-hidden bg-white\">\n <div *ngIf=\"hasImg; else textBlock\" class=\"bg-tui-base-02 w-full h-50\"></div>\n <ng-template #textBlock>\n <div class=\"px-6 py-4.5 w-full flex flex-col gap-2\">\n <div class=\"h-3 rounded bg-tui-base-02 w-full\"></div>\n <div class=\"h-3 rounded bg-tui-base-02 w-3/4\"></div>\n <div class=\"h-3 rounded bg-tui-base-02 w-full\"></div>\n <div class=\"h-3 rounded bg-tui-base-02 w-3/4\"></div>\n <div class=\"h-3 rounded bg-tui-base-02 w-full\"></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 { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ScShareButtonComponent } from './sc-share-button.component';\nimport { TuiButtonModule } from '@taiga-ui/core';\n\n/**\n * Модуль работы кнопки \"Поделиться\".\n */\n@NgModule({\n declarations: [ScShareButtonComponent],\n imports: [CommonModule, TuiButtonModule],\n exports: [ScShareButtonComponent]\n})\nexport class ScShareButtonModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ScNewsCardComponent } from './news-card/sc-news-card.component';\nimport { ScNewsCardSkeletonComponent } from './news-card-skeleton/sc-news-card-skeleton.component';\nimport { RouterModule } from '@angular/router';\nimport { ScShareButtonModule } from '../share-button';\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 } from '@snabcentr/client-core';\nimport { TuiPreviewDialogService } from '@taiga-ui/addon-preview';\nimport { TuiDialogContext } from '@taiga-ui/core';\nimport { UnitsHelper } from '../../helpers/sc-units-helper';\n\n/**\n * Компонент карточки элемента заказа.\n */\n@Component({\n selector: 'sc-order-item-mobile',\n templateUrl: './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 * Продукт элемента заказа.\n */\n public get product(): ScProduct | undefined {\n return this.orderItem?.product;\n }\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: UnitsHelper,\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 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 p-4 gap-y-2 gap-x-4 flex flex-wrap bg-white border border-tui-base-04 shadow-sc-2 rounded-xl\">\n <ng-container *ngIf=\"orderItem && product; else skeleton\">\n <button\n tuiIconButton\n (click)=\"clickActionsEvent.emit()\"\n size=\"m\"\n icon=\"scIconVerticalThreeDots\"\n appearance=\"float\"\n tuiMode=\"onLight\"\n class=\"!hidden !absolute right-0 top-0\"\n ></button>\n <div class=\"flex gap-2 grow\">\n <div class=\"flex shrink-0 h-20 w-20 justify-center items-center overflow-hidden\">\n <img (click)=\"clickCardEvent.emit()\" [src]=\"getCardImage()\" [alt]=\"product.name\" [class.p-5]=\"!product.images?.length\" class=\"cursor-pointer\" />\n </div>\n\n <div class=\"flex flex-wrap self-center gap-x-8 grow\">\n <div class=\"basis-min-content flex flex-col grow\">\n <a tuiLink (click)=\"clickCardEvent.emit()\">\n <span class=\"font-bold\">{{ product.name }}</span>\n </a>\n <div class=\"text-tui-text-02 text-xs flex flex-col gap-y-0.5\">\n <div class=\"flex flex-wrap gap-y-0.5\">\n <p class=\"w-40\">Артикул: {{ product.code }}</p>\n <p class=\"w-40\" *ngIf=\"product.pack\">Норма упаковки: {{ product.pack }}</p>\n </div>\n <a tuiLink *ngIf=\"orderItem.specificationImgUrl\" (click)=\"showSpecification()\">Спецификация</a>\n </div>\n </div>\n <div class=\"flex flex-wrap content-center\">\n <div class=\"flex flex-col w-40 gap-x-8 gap-y-0.5\">\n <span *ngIf=\"product.discount\" class=\"flex items-center text-xs text-tui-text-02\">\n <span class=\"line-through\">{{ product.discountCostString }}</span> &nbsp;\n <span class=\"text-tui-success-fill font-bold\"> -{{ 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=\"flex flex-col items-baseline gap-x-2 font-bold\">\n <span>{{ product.costRubString }}</span>\n <span *ngIf=\"!product.priceInRub\" class=\"text-xs text-tui-text-02\">{{ product.costString }}</span>\n </p>\n <sc-price-warehouse-stock [product]=\"product\" [fromMain]=\"false\"></sc-price-warehouse-stock>\n </div>\n\n <div class=\"w-40 text-xs text-tui-text-02\">\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=\"text-tui-base-09 text-sm\">\n Сумма: <span class=\"font-bold whitespace-nowrap\"> {{ orderItem.getCostRubStr() }} </span>\n </p>\n </div>\n </div>\n </div>\n </div>\n </ng-container>\n\n <ng-template #skeleton>\n <div class=\"flex gap-2 w-full\">\n <div class=\"h-20 w-20 bg-tui-base-02 rounded-xl \"></div>\n <div class=\"flex flex-col grow gap-2.5 bg-white\">\n <div class=\"w-full h-4 rounded-xl bg-tui-base-02\"></div>\n <div class=\"w-3/5 h-4 rounded-xl bg-tui-base-02\"></div>\n <div class=\"w-4/5 h-4 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-svg src=\"tuiIconCheckCircleLarge\" tuiSlot=\"top\" class=\"scale-[3] !h-20 !text-green-500\"></tui-svg>\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-svg src=\"tuiIconXCircleLarge\" class=\"scale-[3] !h-20 !text-red-500\" tuiSlot=\"top\"></tui-svg>\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-svg src=\"tuiIconInfoLarge\" class=\"scale-[3] !h-20 !text-yellow-500\" tuiSlot=\"top\"></tui-svg>\n <h4>Что-то пошло не так!</h4>\n <button tuiButton tuiItem (click)=\"backToOrdersClick.emit()\">Вернуться к заказам</button>\n </tui-block-status>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { ScOrderItemMobileComponent } from './order-item-mobile/order-item-mobile.component';\nimport { CommonModule } from '@angular/common';\nimport { TuiLinkModule, TuiButtonModule, TuiModeModule, TuiSvgModule } from '@taiga-ui/core';\nimport { ScCatalogModule } from '../catalog';\nimport { ScPaymentStatusComponent } from './sc-payment-status/sc-payment-status.component';\nimport { TuiBlockStatusModule } from '@taiga-ui/layout';\n\n/**\n * Модуль заказов.\n */\n@NgModule({\n declarations: [ScOrderItemMobileComponent, ScPaymentStatusComponent],\n exports: [ScOrderItemMobileComponent, ScPaymentStatusComponent],\n imports: [CommonModule, TuiLinkModule, TuiButtonModule, TuiModeModule, TuiSvgModule, TuiBlockStatusModule, ScCatalogModule]\n})\nexport class ScOrderModule {}\n","import { InjectionToken, Provider } from '@angular/core';\nimport { ScUser, ScUserService } from '@snabcentr/client-core';\nimport { TuiDestroyService } from '@taiga-ui/cdk';\nimport { Observable, takeUntil } 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 * @param destroy$ Сервис завершения {@link Observable} через `takeUntil`.\n */\nexport function scUserFactory(userService: ScUserService, destroy$: Observable<void>): Observable<ScUser | undefined> {\n //TODO: TASK[#7615] Отслеживать выполнение запроса изменения информации о пользователе после доработки snabcentr-core-lib.\n return userService.getUserChange$().pipe(takeUntil(destroy$));\n}\n\n/**\n * Провайдер потока данных о текущем пользователе.\n */\nexport const SC_USER_PROVIDERS: Provider[] = [\n TuiDestroyService,\n {\n provide: SC_USER_INFO,\n deps: [ScUserService, TuiDestroyService],\n useFactory: scUserFactory\n }\n];\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { ScIChangePassword, ScUserService } from '@snabcentr/client-core';\nimport { tuiIsFalsy } from '@taiga-ui/cdk';\nimport { Subject, Observable, filter, map, switchMap, catchError, of, startWith, share } from 'rxjs';\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),\n newPassword: new FormControl(null, [Validators.required, Validators.minLength(8)]),\n newPasswordConfirm: new FormControl(null, [Validators.required, Validators.minLength(8)])\n },\n { validators: scPasswordConfirmMatchingValidator('newPassword', 'newPasswordConfirm') }\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 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(void {});\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 * Инициализирует экземпляр класса {@link ScResetUserPasswordComponent}.\n *\n * @param userService Сервис информации о пользователе.\n */\n public constructor(private readonly userService: ScUserService) {}\n}\n","<form [formGroup]=\"form\" (ngSubmit)=\"onSubmit.next()\" class=\"flex flex-col lg:flex-row gap-4 p-1\">\n <div class=\"grid grid-rows-3 gap-2 lg:grid-cols-3 lg:grid-rows-1 lg:gap-4 lg:flex-grow\">\n <label tuiLabel=\"Старый пароль\">\n <tui-input-password formControlName=\"currentPassword\">\n Старый пароль\n <input tuiTextfield autocomplete=\"new-password\" />\n </tui-input-password>\n <tui-error formControlName=\"currentPassword\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"Придумайте новый пароль\">\n <tui-input-password [pseudoInvalid]=\"form.hasError('passwordNotEquivalent')\" formControlName=\"newPassword\">\n Придумайте новый пароль\n <input tuiTextfield autocomplete=\"new-password\" />\n </tui-input-password>\n <tui-error formControlName=\"newPassword\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"Повторите новый пароль\">\n <tui-input-password [pseudoInvalid]=\"form.hasError('passwordNotEquivalent')\" formControlName=\"newPasswordConfirm\">\n Повторите новый пароль\n <input tuiTextfield autocomplete=\"new-password\" />\n </tui-input-password>\n <tui-error formControlName=\"newPasswordConfirm\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <tui-error class=\"lg:!hidden\" [formGroup]=\"form\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </div>\n <button\n *tuiLet=\"!!(loading$ | async) as loading\"\n tuiButton\n [showLoader]=\"loading\"\n type=\"submit\"\n [disabled]=\"form.invalid || loading\"\n icon=\"scIconSave\"\n class=\"self-center lg:mt-6 font-medium\"\n >\n Сохранить\n </button>\n</form>\n<tui-error class=\"!hidden lg:!block\" [formGroup]=\"form\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Inject, Optional, Output } from '@angular/core';\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\nimport { ScIPhoneOnDataApprove, ScISuggestionType, ScIUserOnDataUpdate, ScUser, ScUserService } from '@snabcentr/client-core';\nimport { SC_USER_INFO, SC_USER_PROVIDERS } from '../../providers';\nimport { Observable, Subject, catchError, filter, map, of, skip, startWith, switchMap, tap } from 'rxjs';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { tuiIsFalsy } from '@taiga-ui/cdk';\nimport { ApiErrorResponse } from '../../auth';\nimport { TuiDialogContext } from '@taiga-ui/core';\nimport { POLYMORPHEUS_CONTEXT } from '@tinkoff/ng-polymorpheus';\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 {\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 context Контекст диалогового окна, в котором открыт компонент.\n */\n public constructor(\n @Inject(SC_USER_INFO) public readonly user$: Observable<ScUser>,\n private readonly userService: ScUserService,\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","<form [formGroup]=\"form\" *ngIf=\"user$ | async as user\" (ngSubmit)=\"onSubmit.next()\" class=\"flex flex-col gap-4\">\n <label [tuiLabel]=\"user.isOrg ? 'Название организации или ИП' : 'Ф.И.О.'\">\n <tui-input formControlName=\"name\">\n {{ user.isOrg ? 'Название организации или ИП' : 'Ф.И.О.' }}\n <ng-container *ngIf=\"user.isOrg\">\n <sc-suggestion-field *tuiDataList [type]=\"suggestionType.organization\"></sc-suggestion-field>\n </ng-container>\n </tui-input>\n <tui-error formControlName=\"name\" [error]=\"[] | tuiFieldError | async\"></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 tuiLabel=\"Адрес электронной почты\" class=\"w-full\">\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 <sc-addresses-selection-field></sc-addresses-selection-field>\n <tui-checkbox-labeled formControlName=\"getNews\" class=\"w-full\"> Я хочу получать рассылку Снабцентр о скидках и новостях по электронной почте. </tui-checkbox-labeled>\n <div class=\"flex gap-4 justify-center\">\n <button tuiButton (click)=\"context ? context.$implicit.complete() : cancelButtonClick.emit()\" type=\"button\" icon=\"tuiIconXLarge\" appearance=\"secondary\">Отмена</button>\n <button tuiButton tuiMode=\"onLight\" [disabled]=\"form.invalid\" [showLoader]=\"!!(loading$ | async)\" type=\"submit\" icon=\"scIconSave\">Сохранить</button>\n </div>\n</form>\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { ChangeDetectionStrategy, Component, Inject, Optional } from '@angular/core';\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\nimport { ApiErrorResponse } from '../../auth/interfaces/ApiErrorResponse';\nimport { Subject, Observable, filter, map, switchMap, catchError, of, startWith, share, tap } from 'rxjs';\nimport { ScApprovedData, ScIPhoneOnDataApprove, ScUser, ScUserService, ScVerificationService } from '@snabcentr/client-core';\nimport { tuiIsFalsy } from '@taiga-ui/cdk';\nimport { TuiDialogContext } from '@taiga-ui/core';\nimport { POLYMORPHEUS_CONTEXT } from '@tinkoff/ng-polymorpheus';\nimport { SC_USER_INFO, SC_USER_PROVIDERS } from '../../providers/scUserProviders';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\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})\n@UntilDestroy({ checkProperties: true })\nexport class ScUserPhoneApproveDialogComponent {\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: 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 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 user$ Поток информации о текущем пользователе.\n * @param userService Сервис информации о пользователе.\n * @param context Контекст диалогового окна, в котором открыт компонент.\n */\n public constructor(\n private readonly verificationService: ScVerificationService,\n @Inject(SC_USER_INFO) 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(untilDestroyed(this)).subscribe((user) => {\n this.form.patchValue({\n phone: user.contacts.phone.value\n });\n });\n }\n}\n","<ng-container *ngIf=\"user$ | async as user\">\n <form [formGroup]=\"form\" *tuiLet=\"!!(loading$ | async) as loadingApproveCode\" (ngSubmit)=\"onSubmit.next()\" class=\"flex flex-col gap-3\">\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 *ngIf=\"user.contacts.phone.isApproved || haveCode\" class=\"flex gap-4 justify-center\">\n <button *ngIf=\"user.contacts.phone.isApproved && context\" tuiButton (click)=\"context.$implicit.complete()\" type=\"button\" appearance=\"secondary\">Закрыть</button>\n <button *ngIf=\"haveCode\" tuiButton type=\"submit\" [showLoader]=\"loadingApproveCode\" [disabled]=\"form.invalid || loadingApproveCode\" icon=\"scIconLogIn\">\n Подтвердить\n </button>\n </div>\n </form>\n</ng-container>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TuiCheckboxLabeledModule, TuiCheckboxModule, TuiFieldErrorPipeModule, TuiInputModule, TuiInputPasswordModule, TuiInputPhoneModule, TuiSelectModule } from '@taiga-ui/kit';\nimport { TuiButtonModule, TuiDataListModule, TuiErrorModule, TuiLabelModule, TuiLoaderModule, TuiModeModule, TuiTextfieldControllerModule } from '@taiga-ui/core';\nimport { TuiLetModule } from '@taiga-ui/cdk';\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 { ScVerificationModule } from '../verification';\nimport { ScFormFieldsModule } from '../form-fields/form-fields.module';\nimport { ScUserPhoneApproveDialogComponent } from './user-phone-approve-dialog/sc-user-phone-approve-dialog.component';\n\n/**\n * Модуль компонентов пользователя.\n */\n@NgModule({\n declarations: [ScResetUserPasswordComponent, ScUpdateUserInfoDialogComponent, ScUserPhoneApproveDialogComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n TuiFieldErrorPipeModule,\n TuiInputPasswordModule,\n TuiButtonModule,\n TuiErrorModule,\n TuiLabelModule,\n TuiTextfieldControllerModule,\n TuiLetModule,\n ScVerificationModule,\n ScFormFieldsModule,\n TuiLoaderModule,\n TuiInputModule,\n TuiInputPhoneModule,\n TuiCheckboxModule,\n TuiCheckboxLabeledModule,\n TuiDataListModule,\n TuiSelectModule,\n TuiModeModule\n ],\n exports: [ScResetUserPasswordComponent, ScUpdateUserInfoDialogComponent, ScUserPhoneApproveDialogComponent]\n})\nexport class ScUserModule {}\n","import { Component, ChangeDetectionStrategy, Inject, Output, EventEmitter } from '@angular/core';\nimport { ScICity, ScLocationsService, ScUser, ScUserService, ScVerificationService } from '@snabcentr/client-core';\nimport { Observable, Subject, filter, map, share, skip, startWith, switchMap, tap } from 'rxjs';\nimport { SC_USER_PROVIDERS, SC_USER_INFO } from '../../providers';\nimport { FormControl } from '@angular/forms';\nimport { ALWAYS_TRUE_HANDLER, tuiIsFalsy, tuiIsPresent, tuiPure } from '@taiga-ui/cdk';\nimport { tuiFadeIn } from '@taiga-ui/core';\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) => this.getNewsControl.patchValue(user.getNews, { emitEvent: false })),\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(ALWAYS_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 * Событие нажатия на кнопку редактирование контактного лица.\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 addContragentBankAccountsClick: EventEmitter<number> = new EventEmitter<number>();\n\n /**\n * Событие нажатия на кнопку добавления адреса доставки клиента.\n */\n @Output()\n public addDeliveryAddressClick: EventEmitter<void> = new EventEmitter<void>();\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 class=\"flex flex-col gap-4\">\n <sc-accordion [showArrow]=\"false\" [showAddButton]=\"false\" [open]=\"true\">\n Общие данные\n <ng-template scAccordionContent>\n <tui-loader *tuiLet=\"user$ | async as user\" [overlay]=\"true\" [showLoader]=\"user === null\">\n <div class=\"flex gap-2 pl-4\">\n <div *ngIf=\"user\" class=\"flex flex-col flex-grow gap-2\">\n <span class=\"font-medium\">{{ user.name }}</span>\n <div *ngIf=\"user.city && (getUserCity$(user.city) | async) as city\" class=\"flex items-center gap-1\">\n <tui-svg src=\"tuiIconMapPin\"></tui-svg>\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 tuiMode=\"onLight\"\n icon=\"tuiIconPhone\"\n iconAlign=\"left\"\n [pseudo]=\"true\"\n href=\"tel:{{ user.contacts.phone.value}}\"\n >{{ user.contacts.phone.value | tuiFormatPhone }}</a\n >\n <span *ngIf=\"!user.contacts.phone.isApproved\" class=\"text-tui-text-03\">\n (Телефон не подтвержден. <button tuiLink [pseudo]=\"true\" (click)=\"approvePhoneClick.emit()\">Подтвердить</button>)\n </span>\n </div>\n <div *tuiLet=\"!!(isSendApproveEmail$ | async) as isSendApproveEmail\" class=\"flex flex-wrap gap-x-2\">\n <a tuiLink tuiMode=\"onLight\" icon=\"tuiIconMail\" iconAlign=\"left\" [pseudo]=\"true\" href=\"mailto:{{ user.contacts.email.value }}\">\n {{ user.contacts.email.value }}\n </a>\n <span *ngIf=\"!isSendApproveEmail && !user.contacts.email.isApproved\" class=\"text-tui-text-03 inline-flex flex-wrap gap-1\">\n E-mail не подтвержден.\n <tui-loader [showLoader]=\"!!(approveEmailLoading$ | async)\" [overlay]=\"true\">\n <button tuiLink [pseudo]=\"true\" (click)=\"onSendApproveEmail.next(user.contacts.email.value)\">Подтвердить</button>\n </tui-loader>\n </span>\n <span *ngIf=\"isSendApproveEmail\" class=\"text-tui-success-fill\" @tuiFadeIn>\n Письмо для подтверждения успешно отправлено. Перейдите по ссылке в письме и обновите эту страницу.\n </span>\n </div>\n <tui-loader [showLoader]=\"!!(getNewsLoading$ | async)\" [overlay]=\"true\">\n <tui-checkbox-labeled size=\"m\" class=\"w-full\" [formControl]=\"getNewsControl\" [ngModel]=\"user.getNews\">\n Я хочу получать рассылку Снабцентр о скидках и новостях по электронной почте.\n </tui-checkbox-labeled>\n </tui-loader>\n </div>\n\n <button tuiIconButton size=\"m\" type=\"button\" icon=\"tuiIconEdit3Large\" tuiMode=\"onLight\" appearance=\"flat\" (click)=\"editProfileClick.emit()\"></button>\n </div>\n </tui-loader>\n </ng-template>\n </sc-accordion>\n <sc-contragents-accordion (addContragentClick)=\"addContragentClick.emit()\" (addBankAccountsClick)=\"addContragentBankAccountsClick.emit($event)\"></sc-contragents-accordion>\n <sc-delivery-address-accordion (addDeliveryAddressClick)=\"addDeliveryAddressClick.emit()\"></sc-delivery-address-accordion>\n <sc-accordion [showArrow]=\"false\" [showAddButton]=\"false\">\n Изменить пароль\n <ng-template scAccordionContent>\n <sc-reset-user-password></sc-reset-user-password>\n </ng-template>\n </sc-accordion>\n</div>\n","import { NgModule } from '@angular/core';\nimport { TuiButtonModule, TuiFormatPhonePipeModule, TuiLinkModule, TuiLoaderModule, TuiModeModule, TuiSvgModule } from '@taiga-ui/core';\nimport { CommonModule } from '@angular/common';\nimport { TuiLetModule } from '@taiga-ui/cdk';\nimport { ScProfileAccordionsContentComponent } from './sc-profile-accordions-content/sc-profile-accordions-content.component';\nimport { ScAccordionModule } from '../accordion';\nimport { ScContragentsModule } from '../contragents';\nimport { ScDeliveryAddressModule } from '../delivery-address';\nimport { ScUserModule } from '../user';\nimport { TuiCheckboxLabeledModule } from '@taiga-ui/kit';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\n/**\n * Модуль профиля пользователя.\n */\n@NgModule({\n declarations: [ScProfileAccordionsContentComponent],\n imports: [\n CommonModule,\n ScUserModule,\n ScAccordionModule,\n ScContragentsModule,\n ScDeliveryAddressModule,\n TuiLoaderModule,\n TuiLetModule,\n TuiLinkModule,\n TuiModeModule,\n TuiFormatPhonePipeModule,\n TuiCheckboxLabeledModule,\n TuiSvgModule,\n FormsModule,\n ReactiveFormsModule,\n TuiLoaderModule,\n TuiButtonModule\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 './files';\nexport * from './icons';\nexport * from './loader';\nexport * from './news';\nexport * from './order';\nexport * from './providers';\nexport * from './share-button';\nexport * from './user';\nexport * from './validators';\nexport * from './verification';\nexport * from './tokens';\nexport * from './profile';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i5","i6","i6.ScVerificationPhoneCheckFormComponent","i2","i3","i4.ScSignInFormByPhoneComponent","i5.ScSignInFormByEmailComponent","i1","i4","i2.ScPxConverter","i7","i1.UnitsHelper","i4.ScInputQuantityComponent","i5.ScPriceWarehouseStockComponent","i8","i3.ScFavoriteBtnComponent","i6.ScFavoriteBtnComponent","i7.ScInputQuantityComponent","i8.ScPriceWarehouseStockComponent","i2.ScAccordionComponent","i3.ScAccordionContentDirective","i3.ScAccordionComponent","i4.ScAccordionContentDirective","i7.ScContactsAccordionComponent","i7.ScContragentsAccordionItemComponent","i4.ScSuggestionFieldComponent","i4.ScNewContragentBankAccountsFormComponent","i6.ScContactsAccordionComponent","i7.ScDeliveryAddressAccordionItemComponent","i2.TreeIconService","i1.TreeIconService","i6.TreeDirective","i7.TreeTopDirective","i1.ScShareButtonComponent","i4.ScPriceWarehouseStockComponent","i7.ScAddressesSelectionFieldComponent","i8.ScSuggestionFieldComponent","i9","i3.ScResetUserPasswordComponent","i4.ScAccordionComponent","i5.ScAccordionContentDirective","i6.ScContragentsAccordionComponent","i7.ScDeliveryAddressAccordionComponent","i10","i11"],"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/auth/constants/phone-approve-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/verification/sc-verification.module.ts","../../../projects/client-ui/auth/sc-auth.module.ts","../../../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/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/tokens/sc-linear-values-token.ts","../../../projects/client-ui/helpers/sc-units-helper.ts","../../../projects/client-ui/validators/scBicValidator.ts","../../../projects/client-ui/validators/scCorrespondentAccountValidator.ts","../../../projects/client-ui/validators/scPasswordConfirmMatchingValidator.ts","../../../projects/client-ui/validators/stepValidator.ts","../../../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/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/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/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-chart-option.ts","../../../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/providers/productsPagination.ts","../../../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/price-history/sc-lang-RU.ts","../../../projects/client-ui/catalog/sc-catalog.module.ts","../../../projects/client-ui/cart/sc-cart.module.ts","../../../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/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/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/form-fields/suggestion-field/sc-suggestion-field.component.ts","../../../projects/client-ui/form-fields/suggestion-field/sc-suggestion-field.component.html","../../../projects/client-ui/contacts/new-contragent-bank-account-form/sc-new-contragent-bank-account-form.component.ts","../../../projects/client-ui/contacts/new-contragent-bank-account-form/sc-new-contragent-bank-account-form.component.html","../../../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/form-fields.module.ts","../../../projects/client-ui/contacts/add-contragent-bank-account-dialog/sc-add-contragent-bank-account-dialog.component.ts","../../../projects/client-ui/contacts/add-contragent-bank-account-dialog/sc-add-contragent-bank-account-dialog.component.html","../../../projects/client-ui/contacts/sc-contacts.module.ts","../../../projects/client-ui/contragents/sc-contragents.module.ts","../../../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.component.ts","../../../projects/client-ui/files/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/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/order-item-mobile.component.ts","../../../projects/client-ui/order/order-item-mobile/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/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-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 verificationCodeMask: MaskitoOptions = {\n mask: /^\\d{0,6}$/\n} as MaskitoOptions;\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Inject, Input, OnInit, Output } from '@angular/core';\nimport { FormGroup, FormControl, FormGroupDirective } from '@angular/forms';\nimport { MaskitoOptions } from '@maskito/core';\nimport { ScVerificationService } from '@snabcentr/client-core';\nimport { verificationCodeMask } from '../../auth/constants/phone-approve-code-mask';\nimport { ApiErrorResponse } from '../../auth/interfaces/ApiErrorResponse';\nimport { Subject, Observable, filter, map, switchMap, catchError, of, startWith, share, tap, finalize, timer, scan, takeWhile, endWith, distinctUntilChanged } from 'rxjs';\nimport { tuiControlValue } from '@taiga-ui/cdk';\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 private _showCodeFields: boolean = true;\n\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 * Группа полей ввода для формы «Вход на сайт».\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 /**\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 filter(() => this.phoneControl.valid),\n map(() => this.phoneControl.value as string),\n switchMap((value) =>\n this.verificationService.sendPhoneApproveCode(value).pipe(\n tap(() => this.reloadTimer$.next(60)),\n map(() => false),\n catchError((error: 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 = 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 return of(false);\n }),\n finalize(() => this.setHaveCode(true)),\n startWith(true)\n )\n ),\n startWith(false),\n share()\n );\n\n /**\n * Маска поля ввода кода для подтверждения.\n */\n public readonly verificationCodeMask: MaskitoOptions = verificationCodeMask;\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) => --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 * Инициализирует экземпляр класса {@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 /** @inheritDoc */\n public ngOnInit(): void {\n this.phoneCheck$ = tuiControlValue<string | null>(this.phoneControl).pipe(\n tap(() => this.reloadTimer$.next(0)),\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: HttpErrorResponse) => {\n const errorResponse = error.error as ApiErrorResponse;\n this.phoneControl.setErrors({ serverResponse: errorResponse?.errors?.['phone'] ?? [errorResponse.message] });\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 [formGroup]=\"form\" *tuiLet=\"(loadingApproveCode$ | async) as loadingApproveCode\" class=\"flex flex-col gap-3\">\n <label tuiLabel=\"Номер телефона\">\n <tui-input-phone formControlName=\"phone\" [readOnly]=\"readOnly\" [tuiTextfieldCustomContent]=\"checkingPhone\">\n Номер телефона\n <input tuiTextfield autocomplete=\"phone\" />\n </tui-input-phone>\n <tui-error formControlName=\"phone\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <ng-container *ngIf=\"showCodeFields && form.enabled\">\n <label *ngIf=\"loadingApproveCode === false && haveCode\" tuiLabel=\"Код из СМС\">\n <tui-input formControlName=\"verificationCode\">\n Код из СМС\n <input tuiTextfield [maskito]=\"verificationCodeMask\" autocomplete=\"new-password\" />\n </tui-input>\n <tui-error formControlName=\"verificationCode\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n\n <div *tuiLet=\"!!loadingApproveCode as loadingApproveCode\" class=\"flex gap-4 justify-center\">\n <button\n *ngIf=\"!haveCode\"\n tuiButton\n (click)=\"onSendCode.next()\"\n [disabled]=\"loadingApproveCode || !!!(phoneCheck$ | async) || phoneControl.invalid\"\n [showLoader]=\"loadingApproveCode\"\n icon=\"scIconLogIn\"\n >\n Получить код\n </button>\n <button *ngIf=\"!loadingApproveCode && !haveCode\" tuiLink [pseudo]=\"true\" [disabled]=\"!!!(phoneCheck$ | async) || phoneControl.invalid\" (click)=\"setHaveCode(true)\">\n У меня есть код\n </button>\n\n <ng-container *tuiLet=\"timer$ | async as timer\">\n <tui-loader *ngIf=\"haveCode\" [showLoader]=\"loadingApproveCode\">\n <button tuiLink [pseudo]=\"true\" [disabled]=\"loadingApproveCode || timer\" (click)=\"onSendCode.next()\">\n Повторно отправить код\n <ng-container *ngIf=\"timer\" class=\"!text-tui-base-08\">(через {{ timer }})</ng-container>\n </button>\n </tui-loader>\n </ng-container>\n </div>\n </ng-container>\n</form>\n\n<ng-template #checkingPhone>\n <tui-loader *ngIf=\"!!!(phoneCheck$ | async) && phoneControl.valid\" class=\"w-4 h-4\"> </tui-loader>\n</ng-template>\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\nimport { IAuthToken, IPhoneLogin, ScAuthService } from '@snabcentr/client-core';\nimport { tuiIsFalsy } from '@taiga-ui/cdk';\nimport { Subject, Observable, filter, map, switchMap, catchError, of, startWith, share } from 'rxjs';\nimport { ApiErrorResponse } from '../../interfaces/ApiErrorResponse';\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: 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({} 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 * @param verificationService Сервис верификации.\n */\n public constructor(private readonly authService: ScAuthService) {}\n}\n","<form [formGroup]=\"form\" *tuiLet=\"!!(loading$ | async) as loading\" (ngSubmit)=\"onSubmit.next()\" class=\"flex flex-col gap-4 items-center mb-4\">\n <sc-verification-phone-check-form [(haveCode)]=\"haveCode\" [shouldBeBusy]=\"true\" [shouldBeConfirmed]=\"true\" class=\"w-full\"></sc-verification-phone-check-form>\n <button *ngIf=\"haveCode\" tuiButton type=\"submit\" [showLoader]=\"loading\" [disabled]=\"form.invalid || loading\" icon=\"scIconLogIn\">Войти</button>\n</form>\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Output } from '@angular/core';\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\nimport { IAuthToken, ILogin, ScAuthService } from '@snabcentr/client-core';\nimport { tuiIsFalsy } from '@taiga-ui/cdk';\nimport { Subject, Observable, filter, map, switchMap, catchError, of, startWith, share } from 'rxjs';\nimport { ApiErrorResponse } from '../../interfaces/ApiErrorResponse';\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: HttpErrorResponse) => {\n const errorResponse = error.error as ApiErrorResponse;\n\n for (const key in errorResponse.errors) {\n this.formByEmail.get(key)?.setErrors({ serverResponse: errorResponse.errors[`${key}`] });\n }\n\n if (!errorResponse.errors && errorResponse.message) {\n this.formByEmail.setErrors({ serverResponse: [errorResponse.message] });\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()\n 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 [formGroup]=\"formByEmail\" (ngSubmit)=\"onSubmit.next()\">\n <div class=\"flex flex-col gap-4 mb-8\">\n <label tuiLabel=\"Адрес электронной почты\">\n <tui-input formControlName=\"login\">\n Адрес электронной почты\n <input tuiTextfield autocomplete=\"email\" />\n </tui-input>\n <tui-error formControlName=\"login\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"Пароль\">\n <tui-input-password formControlName=\"password\">\n Пароль\n <input tuiTextfield autocomplete=\"current-password\" />\n </tui-input-password>\n <tui-error formControlName=\"password\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <tui-error [error]=\"[] | tuiFieldError | async\"></tui-error>\n </div>\n <div class=\"flex flex-col gap-4 items-center mb-4\">\n <a tuiLink [pseudo]=\"true\" (click)=\"forgotPassword.emit()\" class=\"text-base\">Забыли пароль?</a>\n <button tuiButton type=\"submit\" [showLoader]=\"!!(loadingEmailAuth$ | async)\" [disabled]=\"formByEmail.invalid || !!(loadingEmailAuth$ | async)\" icon=\"scIconLogIn\">\n Войти\n </button>\n </div>\n</form>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport {\n ScAuthService,\n ScUserMetrikaGoalsEnum,\n ScUserMetrikaService\n} from '@snabcentr/client-core';\nimport { filter, Observable } from 'rxjs';\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()\n public authMethod: AuthMethod = AuthMethod.byEmail;\n\n /**\n * Перечисление способов аутентификации.\n */\n public method: typeof AuthMethod = AuthMethod;\n\n /**\n * Сигнал нажатия на кнопку \"Забыли пароль\".\n */\n @Output()\n public readonly forgotPassword: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Сигнал нажатия на кнопку \"Зарегистрироваться\".\n */\n @Output()\n public readonly signUp: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Сигнал события аутентификации.\n */\n @Output()\n 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 });\n }\n\n /**\n * Осуществляет переключение способов аутентификации.\n *\n * @param authMethod Выбранный способ аутентификации.\n */\n public switchAuth(authMethod: AuthMethod): void {\n this.authMethod = authMethod;\n }\n\n /**\n * Обрабатывает нажатие на кнопку \"Забыли пароль\" и выдает сигнал об этом.\n */\n public onForgotPassword(): void {\n this.forgotPassword.emit();\n }\n}\n","<div class=\"flex justify-center mb-4\">\n <button\n tuiButton\n [tuiMode]=\"authMethod === 'by_phone' ? null : 'onLight'\"\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 [tuiMode]=\"authMethod === 'by_email' ? null : 'onLight'\"\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 *ngIf=\"authMethod === 'by_email'\" (forgotPassword)=\"onForgotPassword()\"></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 gap-4 items-center\">\n <span class=\"font-medium text-tui-text-02\">Еще не зарегистрированы?</span>\n <button tuiButton tuiMode=\"onLight\" (click)=\"signUp.emit()\" type=\"button\" icon=\"scIconAddProfile\" appearance=\"secondary\">Зарегистрироваться</button>\n</div>\n","import { NgModule } from '@angular/core';\nimport { ScVerificationPhoneCheckFormComponent } from './verification-phone-check-form/sc-verification-phone-check-form.component';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MaskitoModule } from '@maskito/angular';\nimport { TuiLetModule } from '@taiga-ui/cdk';\nimport { TuiTextfieldControllerModule, TuiLinkModule, TuiButtonModule, TuiLabelModule, TuiModeModule, TuiErrorModule, TuiLoaderModule } from '@taiga-ui/core';\nimport { TuiInputPasswordModule, TuiInputModule, TuiFieldErrorPipeModule, TuiInputPhoneModule } from '@taiga-ui/kit';\n\n/**\n * Модуль отправки кодов подтверждения (номера телефона, адреса эл. почты и т.д.).\n */\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n TuiInputPasswordModule,\n TuiInputModule,\n TuiTextfieldControllerModule,\n TuiLinkModule,\n TuiButtonModule,\n TuiLabelModule,\n TuiModeModule,\n TuiFieldErrorPipeModule,\n TuiErrorModule,\n TuiLetModule,\n TuiLoaderModule,\n TuiInputPhoneModule,\n MaskitoModule\n ],\n exports: [ScVerificationPhoneCheckFormComponent],\n declarations: [ScVerificationPhoneCheckFormComponent]\n})\nexport class ScVerificationModule {}\n","import { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MaskitoModule } from '@maskito/angular';\nimport { NgModule } from '@angular/core';\nimport { ScSignInFormComponent } from '.';\nimport { TuiLetModule } from '@taiga-ui/cdk';\nimport { TuiTextfieldControllerModule, TuiLinkModule, TuiButtonModule, TuiLabelModule, TuiModeModule, TuiErrorModule, TuiLoaderModule } from '@taiga-ui/core';\nimport { TuiInputPasswordModule, TuiInputModule, TuiFieldErrorPipeModule, TuiInputPhoneModule } from '@taiga-ui/kit';\nimport { ScSignInFormByPhoneComponent } from './sc-sign-in-form/sc-sign-in-form-by-phone/sc-sign-in-form-by-phone.component';\nimport { ScSignInFormByEmailComponent } from './sc-sign-in-form/sc-sign-in-form-by-email/sc-sign-in-form-by-email.component';\nimport { ScVerificationModule } from '../verification';\n\n/**\n * Модуль аутентификации.\n */\n@NgModule({\n declarations: [ScSignInFormComponent, ScSignInFormByPhoneComponent, ScSignInFormByEmailComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n TuiInputPasswordModule,\n TuiInputModule,\n TuiTextfieldControllerModule,\n TuiLinkModule,\n TuiButtonModule,\n TuiLabelModule,\n TuiModeModule,\n TuiFieldErrorPipeModule,\n TuiErrorModule,\n TuiLetModule,\n TuiLoaderModule,\n TuiInputPhoneModule,\n MaskitoModule,\n ScVerificationModule\n ],\n exports: [ScSignInFormComponent, ScSignInFormByPhoneComponent, ScSignInFormByEmailComponent]\n})\nexport class ScAuthModule {}\n","import { Directive } from '@angular/core';\nimport { PolymorpheusTemplate } from '@tinkoff/ng-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 } from '@angular/core';\nimport { ScAccordionContentDirective } from './sc-accordion-content.directive';\nimport { TuiSizeS } from '@taiga-ui/core';\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 = false;\n\n /**\n * Состояние отображения стрелки.\n */\n @Input()\n @HostBinding('class._has-arrow')\n public showArrow = true;\n\n /**\n * Состояние открытия содержимого компонента.\n */\n @Input()\n public open = 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 @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","<tui-accordion [rounded]=\"false\">\n <tui-accordion-item [size]=\"size\" [borders]=\"null\" [showArrow]=\"showArrow\" [open]=\"open\">\n <div class=\"flex grow justify-between\">\n <div class=\"font-bold self-center\">\n <ng-content></ng-content>\n </div>\n <div *ngIf=\"showAddButton || showDeleteButton\" class=\"flex\">\n <ng-container *ngIf=\"showDeleteButton\">\n <button tuiIconButton size=\"m\" type=\"button\" icon=\"tuiIconTrash2Large\" appearance=\"flat\" (click)=\"$event.stopPropagation(); deleteButtonClick.emit()\"></button>\n </ng-container>\n <ng-container *ngIf=\"showAddButton\">\n <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n icon=\"tuiIconPlusLarge\"\n tuiMode=\"onLight\"\n appearance=\"flat\"\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 { NgModule } from '@angular/core';\nimport { TuiButtonModule, TuiModeModule } from '@taiga-ui/core';\nimport { TuiAccordionModule, TuiElasticContainerModule } from '@taiga-ui/kit';\nimport { PolymorpheusModule } from '@tinkoff/ng-polymorpheus';\nimport { ScAccordionContentDirective } from './sc-accordion-content.directive';\nimport { ScAccordionComponent } from './sc-accordion.component';\nimport { CommonModule } from '@angular/common';\n\n/**\n * Модуль для отображение контента разделами, с возможностью скрывать и отображать содержимое.\n */\n@NgModule({\n declarations: [ScAccordionComponent, ScAccordionContentDirective],\n imports: [CommonModule, PolymorpheusModule, TuiButtonModule, TuiAccordionModule, TuiModeModule, TuiElasticContainerModule],\n exports: [ScAccordionComponent, ScAccordionContentDirective]\n})\nexport class ScAccordionModule {}\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 Component,\n ChangeDetectionStrategy,\n AfterViewInit,\n Input,\n Output,\n EventEmitter,\n ContentChildren,\n QueryList,\n TemplateRef,\n ViewChild,\n ElementRef,\n HostBinding,\n ChangeDetectorRef,\n Inject,\n HostListener\n} from '@angular/core';\nimport { ScBanner, ScBannerService, ScUserMetrikaGoalsEnum, ScUserMetrikaService } from '@snabcentr/client-core';\nimport { Observable, map, tap, shareReplay, filter, switchMap, interval, takeUntil, Subject } from 'rxjs';\nimport { ScPxConverter } from '../helpers';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { IntersectionObserverService } from '@ng-web-apis/intersection-observer';\nimport { tuiFadeIn } from '@taiga-ui/core';\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})\n@UntilDestroy({ checkProperties: true })\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') private videoRef: ElementRef<HTMLVideoElement>;\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 /**\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) {\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 * Инициализирует экземпляр класса {@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 /** @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 untilDestroyed(this)\n )\n .subscribe(() => this.onNextBanner());\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: { banner_id: banner.id }\n });\n\n if (banner.url) {\n this.clickBannerEvent.emit(banner);\n }\n }\n\n /**\n * Обработчик события mouseenter.\n *\n * @private\n */\n @HostListener('mouseenter')\n private mouseEnterHandler: () => void = () => this.toggleTimer$.next(false);\n\n /**\n * Обработчик события mouseleave.\n *\n * @private\n */\n @HostListener('mouseleave')\n private mouseLeaveHandler: () => void = () => this.toggleTimer$.next(true);\n}\n","<ng-container *tuiLet=\"banners$ | async\">\n <tui-carousel class=\"bg-white w-full h-full shadow-sc-2 rounded-xl overflow-hidden\" [(index)]=\"currentBannerId\">\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=\"object-cover h-full\"\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 left-8 bottom-4\"\n >\n <i class=\"icon-refresh text-black\"></i>\n </button>\n </ng-container>\n\n <img *ngSwitchCase=\"'image'\" [src]=\"banner.mediaFile\" alt=\"Баннер\" class=\"object-cover h-full\" />\n </ng-container>\n </a>\n </ng-container>\n <ng-container *ngFor=\"let item of bannersListRef\">\n <div *tuiItem [style.height]=\"height\" [style.width]=\"width\" [style.aspect-ratio]=\"aspectRatio\" class=\"overflow-hidden\">\n <ng-container [ngTemplateOutlet]=\"item\"></ng-container>\n </div>\n </ng-container>\n </tui-carousel>\n</ng-container>\n<div *ngIf=\"navigateButton && !disabled && this.banners && (this.bannersListRef.length + this.banners.length) > 1\" tuiMode=\"onLight\" class=\"flex items-center\">\n <button tuiIconButton icon=\"tuiIconChevronLeftLarge\" size=\"m\" shape=\"rounded\" appearance=\"flat\" (click)=\"onPreviousBanner()\" class=\"!absolute left-2\"></button>\n <button tuiIconButton icon=\"tuiIconChevronRightLarge\" size=\"m\" shape=\"rounded\" appearance=\"flat\" (click)=\"onNextBanner()\" class=\"!absolute right-2\"></button>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ScBannerComponent } from './sc-banner.component';\nimport { RouterModule } from '@angular/router';\nimport { TuiButtonModule, TuiLoaderModule, TuiModeModule } from '@taiga-ui/core';\nimport { MatRippleModule } from '@angular/material/core';\nimport { TuiCarouselModule } from '@taiga-ui/kit';\nimport { IntersectionObserverModule } from '@ng-web-apis/intersection-observer';\nimport { TuiLetModule } from '@taiga-ui/cdk';\n\n/**\n * Модуль баннеров.\n */\n@NgModule({\n declarations: [ScBannerComponent],\n imports: [CommonModule, RouterModule, TuiButtonModule, MatRippleModule, TuiCarouselModule, TuiModeModule, TuiLoaderModule, IntersectionObserverModule, TuiLetModule],\n exports: [ScBannerComponent]\n})\nexport class ScBannerModule {}\n","import { tuiCreateToken } from '@taiga-ui/cdk';\n\n/**\n * Единицы измерения линейной величины по умолчанию.\n */\nexport const SC_LINEAR_VALUES: string[] = ['пог.м.', 'м.', 'м2'];\n\n/**\n * Токен единиц измерения линейной величины по умолчанию.\n */\nexport const SC_LINEAR_VALUES_TOKEN = tuiCreateToken(SC_LINEAR_VALUES);\n","import { Inject, Injectable } from '@angular/core';\nimport { ScProduct } from '@snabcentr/client-core';\nimport { SC_LINEAR_VALUES_TOKEN } from '../tokens';\n\n/**\n * Класс хэлпер для работы со значениями единиц измерения товара.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class UnitsHelper {\n /**\n * Инициирует экземпляр класса {@link UnitsHelper}.\n *\n * @param linearValues Единицы измерения линейной величины.\n */\n public constructor(@Inject(SC_LINEAR_VALUES_TOKEN) public readonly linearValues: string[]) {}\n\n /**\n * Возвращает признак возможности продажи товара на метраж.\n *\n * @param linearValues Товар для которого нужно проверить возможность продажи на метраж.\n */\n public productIsMeasurable(product: ScProduct): boolean {\n return this.linearValues.includes(product.unit);\n }\n\n /**\n * Возвращает кратность количества для товара.\n *\n * @param linearValues Товар для которого нужно вернуть кратность количества.\n */\n public productMultiplicity(product: ScProduct): number {\n return product && product.minCount && !this.linearValues.includes(product.unit) ? product.minCount : 1;\n }\n}\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 passwordKey Ключ поля повторного ввода пароля.\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 ? { passwordNotEquivalent: true } : null;\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","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n HostBinding,\n HostListener,\n Inject,\n Input,\n OnInit,\n Optional,\n Output,\n Self,\n ViewChild\n} from '@angular/core';\nimport { FormControl, NgControl } from '@angular/forms';\nimport { stepValidator } from '../../validators';\nimport { TUI_NUMBER_VALUE_TRANSFORMER, TuiInputNumberComponent } from '@taiga-ui/kit';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { TuiLoaderComponent, TuiSizeL, TuiSizeM, TuiSizeS } from '@taiga-ui/core';\nimport { AbstractTuiNullableControl, AbstractTuiValueTransformer } from '@taiga-ui/cdk';\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 @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 {\n return this.numberInput.nativeFocusableElement;\n }\n\n /**\n * Инициализирует экземпляр класса {@link ScInputQuantityComponent}.\n *\n * @param ngControl Объект поля ввода для настройки валидации.\n * @param cdr Объект для работы с обнаружением изменений.\n * @param transformer Преобразователь значений элемента формы.\n */\n public constructor(\n @Optional()\n @Self()\n @Inject(NgControl)\n ngControl: NgControl | null,\n @Inject(ChangeDetectorRef)\n cdr: ChangeDetectorRef,\n @Optional()\n @Inject(TUI_NUMBER_VALUE_TRANSFORMER)\n transformer: AbstractTuiValueTransformer<number | null>\n ) {\n super(ngControl, cdr, transformer);\n }\n\n public get focused(): boolean {\n return !!this.numberInput?.focused;\n }\n\n public get formControl(): FormControl<any> | null {\n return this.control as FormControl<any> | null;\n }\n\n /** @inheritDoc */\n public override ngOnInit(): void {\n if (this.control) {\n this.control.setValidators(stepValidator(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 public incident(): void {\n this.numberInput.onArrow(this.step - ((this.numberInput.value || 0) % this.step));\n }\n\n /**\n * Уменьшает значение в поле ввода на 1 шаг. Если число в поле ввода не кратно шагу, то уменьшит до ближайшего кратного значения.\n */\n public decrement(): void {\n this.numberInput.onArrow(-((this.numberInput.value || 0) % this.step) || -this.step);\n }\n\n /**\n * Очищает поля ввода.\n */\n public clear(): void {\n this.control?.patchValue(null);\n this.clickClearEvent.emit();\n }\n}\n","<tui-loader *ngIf=\"formControl\" class=\"w-full\" [overlay]=\"true\" [showLoader]=\"showLoader\" [size]=\"size\">\n <div class=\"flex items-center text-center gap-1\">\n <div class=\"field-with-button flex grow rounded-xl\">\n <button\n tuiIconButton\n tuiMode=\"onLight\"\n [appearance]=\"appearance\"\n [disabled]=\"!numberInput.canDecrement\"\n [focusable]=\"false\"\n [size]=\"size\"\n (click.prevent)=\"decrement()\"\n (mousedown.prevent)=\"numberInput.nativeFocusableElement?.focus()\"\n >\n <tui-svg src=\"tuiIconMinusLarge\"></tui-svg>\n </button>\n <tui-input-number\n #numberInput\n [formControl]=\"formControl\"\n [tuiHint]=\"([] | tuiFieldError | async )?.message\"\n [tuiTextfieldLabelOutside]=\"true\"\n [min]=\"step\"\n [tuiTextfieldSize]=\"size\"\n [required]=\"true\"\n [style.text-align]=\"'center'\"\n [style.font-weight]=\"700\"\n class=\"grow\"\n >\n </tui-input-number>\n <button\n tuiIconButton\n tuiMode=\"onLight\"\n [appearance]=\"appearance\"\n [size]=\"size\"\n [disabled]=\"!numberInput.canIncrement\"\n [focusable]=\"false\"\n (click.prevent)=\"incident()\"\n (mousedown.prevent)=\"numberInput.nativeFocusableElement?.focus()\"\n >\n <tui-svg src=\"tuiIconPlusLarge\"></tui-svg>\n </button>\n </div>\n <button\n *ngIf=\"showCross\"\n tuiIconButton\n tuiMode=\"onLight\"\n [appearance]=\"appearance\"\n [size]=\"size\"\n [disabled]=\"!numberInput.canIncrement\"\n [focusable]=\"false\"\n (click.prevent)=\"clear()\"\n (mousedown.prevent)=\"numberInput.nativeFocusableElement?.focus()\"\n >\n <tui-svg src=\"tuiIconCloseLarge\"></tui-svg>\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-svg\n *ngIf=\"withStockHint && (warehousesList$ | async)?.length\"\n src=\"tuiIconInfoLarge\"\n [tuiHint]=\"stockHint\"\n [tuiHintShowDelay]=\"100\"\n tuiHintDirection=\"top\"\n class=\"!text-xs !h-3\"\n ></tui-svg>\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, 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 } from '@snabcentr/client-core';\nimport { Observable, skip } from 'rxjs';\nimport { TuiPreviewDialogService } from '@taiga-ui/addon-preview';\nimport { TuiDialogContext } from '@taiga-ui/core';\nimport { UnitsHelper } from '../../helpers/sc-units-helper';\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 private _cartItem?: ScCartItem;\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 * Элемент корзины.\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 * {@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 public get product(): ScProduct | undefined {\n return this.cartItem?.product;\n }\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: UnitsHelper,\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 /** @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 <!-- TODO: Необходима реализация функционала.\n <button tuiIconButton size=\"m\" icon=\"scIconVerticalThreeDots\" appearance=\"float\" tuiMode=\"onLight\" class=\"!absolute right-0 top-0\"></button> -->\n <div class=\"flex bg-white border border-tui-base-04 shadow-sc-2 rounded-xl min-w-72 p-4\">\n <div class=\"flex mr-5 max-h-52 min-w-[30%] items-center\">\n <img (click)=\"clickCardEvent.emit()\" [src]=\"getCardImage()\" [alt]=\"product.name\" class=\"rounded-xl w-full max-h-full object-cover\" />\n </div>\n <div class=\"flex flex-col items-start w-full\">\n <a tuiLink (click)=\"clickCardEvent.emit()\" class=\"mb-1\">\n <span class=\"font-bold\">{{ product.name }}</span>\n </a>\n <div class=\"text-tui-text-02 text-xs\">\n <p *ngIf=\"product.pack\">Норма упаковки: {{ product.pack }}</p>\n <p>Артикул: {{ product.code }}</p>\n <div class=\"flex flex-col self-center gap-y-0.5\">\n <p class=\"flex flex-col items-baseline gap-x-2 font-bold\">\n <span>{{ product.costRubString }}</span>\n <span *ngIf=\"!product.priceInRub\">{{ product.costString }}</span>\n </p>\n <span *ngIf=\"product.discount\" class=\"flex items-center\">\n <span class=\"line-through\">{{ product.discountCostString }}</span> &nbsp;\n <span class=\"text-tui-success-fill font-bold\"> -{{ product.discount.percent }}% </span>\n <tui-svg src=\"tuiIconInfoLarge\" [tuiHint]=\"discountHint\" [tuiHintShowDelay]=\"100\" tuiHintDirection=\"top\" class=\"!text-xs !h-4\"></tui-svg>\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 <sc-price-warehouse-stock [product]=\"product\"></sc-price-warehouse-stock>\n </div>\n\n <div *ngIf=\"cartItem.height || cartItem.length || cartItem.width\" class=\"flex my-0.5 items-center\">\n <button\n tuiIconButton\n icon=\"tuiIconSettings\"\n (click)=\"clickSettingsEvent.emit()\"\n size=\"s\"\n appearance=\"secondary\"\n tuiMode=\"onLight\"\n class=\"mr-2 !self-center\"\n ></button>\n <div>\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 <p *ngIf=\"cartItem.width\">Ширина: {{ cartItem.width }} м.</p>\n </div>\n </div>\n\n <a tuiLink *ngIf=\"cartItem.specificationImgUrl\" (click)=\"showSpecification()\">Спецификация</a>\n <ng-template #specificationPreview let-preview>\n <tui-preview [rotatable]=\"false\" [zoomable]=\"false\">\n <img *polymorpheusOutlet=\"cartItem.specificationImgUrl as src\" alt=\"preview\" [src]=\"cartItem.specificationImgUrl\" />\n <button icon=\"tuiIconClose\" title=\"Close\" tuiIconButton tuiPreviewAction type=\"button\" (click)=\"preview.complete()\"></button>\n </tui-preview>\n </ng-template>\n <p class=\"font-bold text-tui-text-01 text-sm\">Итого: {{ cartItem.costRub | tuiFormatNumber }} {{ 'RUB' | tuiCurrency }}</p>\n </div>\n <sc-input-quantity\n #inputQuantity\n *ngIf=\"quantityControl\"\n [formControl]=\"quantityControl\"\n size=\"s\"\n [step]=\"unitsHelper.productMultiplicity(product)\"\n (keydown.enter)=\"inputQuantity.nativeFocusableElement?.blur()\"\n class=\"w-full mt-2\"\n ></sc-input-quantity>\n </div>\n </div>\n</ng-container>\n\n<ng-template #skeleton>\n <div class=\"flex gap-2 w-full\">\n <div class=\"h-20 w-20 bg-tui-base-02 rounded-xl\"></div>\n <div class=\"flex flex-col grow gap-2.5 bg-white\">\n <div class=\"w-full h-4 rounded-xl bg-tui-base-02\"></div>\n <div class=\"w-3/5 h-4 rounded-xl bg-tui-base-02\"></div>\n <div class=\"w-4/5 h-4 rounded-xl bg-tui-base-02\"></div>\n </div>\n </div>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Inject, Input, Output, inject } from '@angular/core';\nimport { SC_URLS, ScIUrls } from '@snabcentr/client-core';\nimport { TUI_IS_MOBILE, tuiPure } from '@taiga-ui/cdk';\n\n/**\n * Компонент списка категорий.\n */\n@Component({\n selector: 'sc-categories-list',\n templateUrl: './sc-categories-list.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScCategoriesListComponent<T> {\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 * Инициализирует экземпляр класса {@link ScCategoriesListComponent}.\n *\n * @param urls объект информации о базовом списке ссылок приложения.\n */\n public constructor(@Inject(SC_URLS) private readonly urls: ScIUrls) {}\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 class=\"grid grid-cols-[repeat(auto-fill,minmax(21rem,1fr))] gap-x-8 gap-y-2\">\n <ng-container *ngIf=\"categories; else categoriesSkeleton\">\n <button\n *ngFor=\"let item of $any(categories)\"\n class=\"group flex gap-2 py-1.5 px-3 bg-tui-base-02 rounded-xl h-11 items-center text-left hover-hover:hover:ring-2 hover-none:active:ring-2 ring-tui-primary duration-150\"\n (click)=\"clickCategoryEvent.emit(item)\"\n >\n <img *ngIf=\"item.properties?.image as image\" [src]=\"getCategoryImage(image)\" [alt]=\"item.name\" class=\"w-8 h-8 object-cover rounded bg-tui-base-03\" />\n <tui-svg *ngIf=\"!item.properties?.image && checkImagesExists(categories)\" src=\"tuiIconCameraOffLarge\" class=\"bg-tui-base-03 !w-8 !h-8 rounded text-tui-base-05\"></tui-svg>\n <div class=\"flex grow truncate\">\n <p class=\"text-base font-bold truncate\">{{ item.name }}</p>\n <tui-svg *ngIf=\"item.isFavorite\" src=\"scIconFavoriteFill\" class=\"text-tui-primary !text-sm mr-auto\"></tui-svg>\n </div>\n <tui-svg src=\"tuiIconChevronRightLarge\" class=\"hover-hover:group-hover:text-tui-primary hover-none:group-active:text-tui-primary duration-150\"></tui-svg>\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 gap-2 py-1.5 px-3 bg-tui-base-02 rounded-xl h-11 items-center text-left hover-hover:hover:ring-2 hover-none:active:ring-2 ring-tui-base-05 duration-150\"\n >\n <div class=\"w-8 h-8 tui-skeleton\"></div>\n <div class=\"h-4 grow tui-skeleton\"></div>\n <tui-svg src=\"tuiIconChevronRightLarge\" class=\"hover-hover:group-hover:text-tui-primary hover-none:group-active:text-tui-primary duration-150 tui-skeleton\"></tui-svg>\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 tuiIconButton (click)=\"clickEvent.emit()\" [disabled]=\"disabled\" [showLoader]=\"showLoader\" appearance=\"flat\" size=\"s\">\n <tui-svg class=\"text-tui-primary\" [src]=\"isFavorite ? 'scIconFavoriteFill' : 'scIconFavorite'\"></tui-svg>\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","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, HostBinding, inject, Inject, Input, Output } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { UnitsHelper } from '../../helpers/sc-units-helper';\nimport { SC_PATH_IMAGE_NOT_FOUND, SC_URLS, ScAuthService, ScCartItem, ScIUrls, ScProduct, ScIWarehouse, ScWarehouseService, ScImageHelper } from '@snabcentr/client-core';\nimport { TuiSizeS, TuiSizeXS } from '@taiga-ui/core';\nimport { Observable } from 'rxjs';\nimport { TUI_IS_MOBILE } from '@taiga-ui/cdk';\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 changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScPriceCardComponent {\n /**\n * Признак того, отображается этот компонент на мобильном устройстве или нет.\n */\n public readonly isMobile: boolean = inject(TUI_IS_MOBILE);\n\n /**\n * Признак, что необходимо отобразить лоадер для поля ввода количества товара.\n */\n public quantityShowLoader: boolean = false;\n\n /**\n * Признак, что необходимо отобразить лоадер для кнопки избранных товаров и категорий.\n */\n public favoriteShowLoader: boolean = false;\n\n /**\n * Признак, что необходимо отобразить поле ввода количества товара.\n */\n @Input()\n public showQuantityControl: boolean = false;\n\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 * Объект товара.\n *\n * TODO: Сделать товар наблюдаемой переменной после реализации TASK:[#7144].\n */\n @Input()\n public product?: ScProduct;\n\n /**\n * Событие нажатия на кнопку \"В избранное\".\n */\n @Output()\n public clickFavoriteEvent: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на кнопку \"В корзину\".\n */\n @Output()\n public clickAddToCartEvent: EventEmitter<ScProduct> = new EventEmitter<ScProduct>();\n\n /**\n * Событие нажатия на кнопку очистки количества товара.\n */\n @Output()\n public clickClearEvent: EventEmitter<ScCartItem> = new EventEmitter<ScCartItem>();\n\n /**\n * Событие нажатия на карточку товара.\n */\n @Output()\n public clickCardEvent: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * {@link Observable} изменения выбранного склада.\n */\n public warehouseSelect$: Observable<ScIWarehouse | null> = this.warehouseService.getWarehouseSelectChange$();\n\n /**\n * {@link FormControl} поля ввода количества товара в корзине.\n */\n public quantityControl: FormControl<number | null> = new FormControl<number | null>(null, { updateOn: 'blur' });\n\n /**\n * {@link Observable} изменения количества товара в корзине.\n */\n @Output()\n public quantityValueChanges: Observable<number | null> = this.quantityControl.valueChanges;\n\n /**\n * {@link Observable} изменения статуса авторизации.\n */\n public readonly authStatus$: Observable<boolean> = this.authService.getAuthChange();\n\n /**\n * Размер компонента.\n */\n @Input()\n @HostBinding('attr.data-size')\n public size: TuiSizeS | TuiSizeXS = 'm';\n\n /**\n * Конвертация размера для компонента sc-input-quantity.\n * TODO: Решить проблему с функционалом size для разных платформ.\n */\n public get getQuantitySize(): TuiSizeS {\n return this.size === 'xs' ? 's' : this.size;\n }\n\n /**\n * Позиция товара в корзине.\n *\n * TODO: Сделать товар в корзине наблюдаемой переменной после реализации TASK:[#7144].\n */\n private _cartItem?: ScCartItem | undefined;\n\n /**\n * Инициирует экземпляр класса {@link ScPriceCardComponent}.\n *\n * @param unitsHelper Объект-хэлпер для работы со значениями единиц измерения товара.\n * @param authService Сервис аутентификации пользователей.\n * @param warehouseService Сервис для работы со складами.\n * @param urls Список ссылок на разделы backend'a.\n * @param pathImageNotFound Путь до изображения 'Товар не найден'.\n * @param imageHelper Хелпер для работы с изображениями товара.\n */\n public constructor(\n public readonly unitsHelper: UnitsHelper,\n private readonly authService: ScAuthService,\n private readonly warehouseService: ScWarehouseService,\n @Inject(SC_URLS) private readonly urls: ScIUrls,\n @Inject(SC_PATH_IMAGE_NOT_FOUND) private readonly pathImageNotFound: string,\n private readonly cdr: ChangeDetectorRef,\n private readonly imageHelper: ScImageHelper\n ) {}\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 /**\n * Устанавливает компонент в очередь на обновление.\n */\n public markForCheck(): void {\n this.cdr.markForCheck();\n }\n}\n","<!-- TODO: реализовать данный компонент и для десктопа и для мобильного приложения. Исправить все глобальные тайговские стили, привести их в порядок согласно с дизайном. -->\n<div *ngIf=\"product; else skeleton\" class=\"min-w-[10rem] shadow-md w-auto rounded-xl p-2 grid h-[19rem] text-xs relative\">\n <div class=\"overflow-hidden\">\n <img (click)=\"clickCardEvent.emit()\" [src]=\"getCardImagePreview()\" [alt]=\"product.name\" class=\"rounded-xl w-full max-h-full object-cover\" />\n </div>\n <sc-favorite-btn\n *ngIf=\"authStatus$ | async\"\n class=\"top-0 left-0 absolute\"\n (clickEvent)=\"clickFavoriteEvent.emit()\"\n [showLoader]=\"favoriteShowLoader\"\n [isFavorite]=\"product.isFavorite\"\n [disabled]=\"!!product.primaryCategory?.isFavorite\"\n ></sc-favorite-btn>\n <tui-svg *ngIf=\"product.isPreviouslyOrdered\" src=\"scIconStar\" class=\"top-0 right-0 absolute text-red-700\"></tui-svg>\n\n <a class=\"p-0 m-0\" tuiLink iconAlign=\"left\" (click)=\"clickCardEvent.emit()\">\n <p class=\"font-bold text-sm line-clamp-3\" style=\"word-break: break-word;\">{{ product.name }}</p>\n </a>\n <p *ngIf=\"product?.pack\" class=\"text-tui-text-02\">Норма упаковки: {{ product.pack }}</p>\n\n <p class=\"text-tui-text-02\">Артикул: {{ product.code }}</p>\n <p *ngIf=\"(authStatus$ | async) && product?.costDate\" class=\"text-tui-text-02\">Дата: {{ product.costDate }}</p>\n <div *ngIf=\"warehouseSelect$ | async as warehouseSelect\" class=\"flex flex-col\">\n <span *ngIf=\"product.discount && !isMobile\" class=\"flex items-center text-tui-text-02\">\n <span class=\"line-through\">{{ product.discountCostString }}</span> &nbsp;\n <span class=\"text-tui-success-fill font-bold\"> -{{ product.discount.percent }}% </span>\n <tui-svg src=\"tuiIconInfoLarge\" [tuiHint]=\"discountHint\" [tuiHintShowDelay]=\"100\" tuiHintDirection=\"top\" class=\"text-black !text-xs !h-4\"></tui-svg>\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 [class.text-tui-text-02]=\"!product.isWarehouseStockExist(warehouseSelect.id)\" class=\"cost font-bold\">{{ product.costRubString }}</span>\n <span *ngIf=\"!product.priceInRub\" class=\"text-xs font-bold text-tui-text-02 hidden group-hover:block\">{{ product.costString }}</span>\n <sc-price-warehouse-stock [product]=\"product\"></sc-price-warehouse-stock>\n </div>\n <div *ngIf=\"!showQuantityControl\" class=\"flex gap-2 max-w-full items-center justify-stretch mt-1\">\n <button tuiButton (click)=\"clickAddToCartEvent.emit(product)\" [showLoader]=\"quantityShowLoader\" [size]=\"size\" class=\"grow\">\n <tui-svg src=\"scIconCart\" class=\"!text-xs !h-4\"> </tui-svg>\n В корзину\n </button>\n <div *ngIf=\"cartItem\" class=\"flex justify-center\">\n <tui-svg src=\"tuiIconCheck\" class=\"!h-5 !w-5 bg-tui-primary text-black rounded-md\"></tui-svg>\n </div>\n </div>\n <sc-input-quantity\n #inputQuantity\n *ngIf=\"showQuantityControl\"\n [formControl]=\"quantityControl\"\n [size]=\"getQuantitySize\"\n [step]=\"unitsHelper.productMultiplicity(product)\"\n [showLoader]=\"quantityShowLoader\"\n (clickClearEvent)=\"clickClearEvent.emit(cartItem)\"\n class=\"w-full\"\n (keydown.enter)=\"inputQuantity.nativeFocusableElement?.blur()\"\n ></sc-input-quantity>\n</div>\n\n<ng-template #skeleton>\n <div class=\"flex flex-col card-wrapper bg-white rounded-xl overflow-hidden shadow-sc-1\">\n <!-- Изображение товара -->\n <div class=\"w-full h-3/5 rounded-t bg-tui-base-02\"></div>\n <!-- Краткая информация о товаре -->\n <div class=\"flex flex-col grow gap-2.5 bg-white rounded-b p-5\">\n <div class=\"w-full h-4 rounded bg-tui-base-02\"></div>\n <div class=\"w-3/5 h-4 rounded bg-tui-base-02\"></div>\n <div class=\"w-full h-4 rounded bg-tui-base-02\"></div>\n </div>\n </div>\n</ng-template>\n","import { EChartsOption } from 'echarts';\nimport { formatDate } from '@angular/common';\nimport { ScIChartDataItem } from './sc-i-chart-data-item';\nimport { tuiFormatNumber } from '@taiga-ui/core';\n/**\n * Настройки отрисовки графика.\n *\n * @see [Документация](https://echarts.apache.org/en/option.html#title)\n */\nexport const scChartOption: EChartsOption = {\n grid: {\n top: 12,\n left: 64,\n right: 0,\n bottom: 24\n },\n tooltip: {\n trigger: 'axis',\n formatter: (params) => {\n const data: ScIChartDataItem = Array.isArray(params) ? (params[0].data as ScIChartDataItem) : (params.data as ScIChartDataItem);\n const date = new Date(data.value[0]);\n const nextDate = new Date(data.value[2]);\n\n return `\n <div class=\"text-center text-black\">\n <span class=\"font-bold\">${data.value[1]} ₽</span>\n </br>\n <span class=\"text-xs\">${formatDate(date, 'dd.MM', 'en')} - ${formatDate(nextDate, 'dd.MM', 'en')}</span>\n </div>\n `;\n },\n axisPointer: {\n animation: false,\n type: 'cross'\n },\n textStyle: {\n fontFamily: 'Roboto, \"Helvetica Neue\", sans-serif'\n }\n },\n xAxis: {\n type: 'time',\n splitLine: {\n show: false\n },\n axisLine: {\n show: false\n },\n axisTick: {\n show: false\n },\n axisLabel: {\n hideOverlap: true\n },\n boundaryGap: ['3%', '3%']\n },\n yAxis: {\n splitLine: {\n show: false\n },\n axisLine: {\n show: false\n },\n axisTick: {\n show: false\n },\n axisLabel: {\n formatter: (value: number) => tuiFormatNumber(value)\n },\n type: 'value',\n boundaryGap: [0, '100%']\n },\n series: {\n name: 'История цены',\n type: 'line',\n showSymbol: false,\n symbolSize: 12,\n itemStyle: {\n color: '#ffcc40'\n }\n }\n};\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnInit } from '@angular/core';\nimport { ScPriceHistory } from '@snabcentr/client-core';\nimport { ECharts, EChartsOption } from 'echarts';\nimport { scChartOption } from './sc-chart-option';\nimport { ScIChartDataItem } from './sc-i-chart-data-item';\n\n/**\n * График истории цен товара или услуги.\n * TODO: TASK[#7482] Перепроверить возможность использования TuiLineDaysChart.\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 * История цен на товар/услугу.\n */\n @Input() public history: ScPriceHistory;\n\n /**\n * Максимальная цена товара.\n */\n public maxPrice?: number;\n\n /**\n * Минимальная цена товара.\n */\n public minPrice?: number;\n\n /**\n * Настройки графика.\n */\n public initOption: {\n devicePixelRatio?: number;\n renderer?: string;\n width?: number | string;\n height?: number | string;\n locale?: string;\n } = { locale: 'RU' };\n\n /**\n * Параметры отрисовки графика истории цены.\n */\n public chartOption: EChartsOption = scChartOption;\n\n /**\n * Данные об истории цены на товар или услугу.\n */\n private data: ScIChartDataItem[] = [];\n\n /**\n * Экземпляр {@link ECharts} в шаблоне.\n */\n private eChartsInstance: ECharts;\n\n /**\n * Инициализирует экземпляр класса {@link PriceHistoryChartComponent}.\n *\n * @param cdr Объект для работы с обнаружением изменений.\n */\n public constructor(private readonly cdr: ChangeDetectorRef) {}\n\n /** @inheritDoc */\n public ngOnInit(): void {\n if (this.chartOption.series && !Array.isArray(this.chartOption.series)) {\n this.chartOption.series.data = [];\n }\n\n Object.keys(this.history)\n .map((key) => {\n // ? Можно избежать переведя даты в api в формат ECMAScript® 2023: https://tc39.es/ecma262/#sec-date-time-string-format\n const dataString = key.split('.').reverse(),\n data = new Date(+dataString[0], +dataString[1] - 1, +dataString[2]);\n\n return { data: data, cost: this.history[String(key)].cost };\n })\n .sort((a, b) => +a.data - +b.data)\n .forEach((item, index, array) => {\n let nextDate: Date;\n\n if (array[index + 1]?.data) {\n nextDate = new Date(array[index + 1]?.data);\n nextDate.setDate(nextDate.getDate() - 1);\n } else {\n nextDate = new Date();\n }\n\n this.pushDataItem(item.cost, item.data, nextDate);\n });\n\n if (this.eChartsInstance) {\n this.setChartData();\n }\n }\n\n /**\n * Перехватчик жизненного цикла {@link ECharts}, который вызывается при его инициализации.\n *\n * @param eChartsInstance Экземпляр {@link ECharts}.\n */\n public onChartInit(eChartsInstance: ECharts) {\n this.eChartsInstance = eChartsInstance;\n\n if (this.data.length) {\n this.setChartData();\n }\n }\n\n /**\n * Устанавливает новые данные {@link PriceHistoryChartComponent.eChartsInstance}.\n */\n private setChartData(): void {\n if (this.chartOption.series && !Array.isArray(this.chartOption.series)) {\n this.maxPrice = Math.max(...this.data.map((item) => item.value[1]));\n this.minPrice = Math.min(...this.data.map((item) => item.value[1]));\n this.chartOption.series.data = this.data;\n this.eChartsInstance.clear();\n this.eChartsInstance.setOption(this.chartOption, true, true);\n this.cdr.markForCheck();\n }\n }\n\n /**\n * Добавляет значение цены товара в массив истории цен.\n *\n * @param value Цена товара или услуги.\n * @param date Дата установки цены.\n * @param nextDate Следующая дата установки цены.\n */\n private pushDataItem(value: number, date: Date, nextDate: Date): void {\n this.data.push({\n name: date.toString(),\n value: [date, value, nextDate]\n });\n }\n}\n","<div class=\"flex flex-col items-center\">\n <div *ngIf=\"maxPrice && minPrice\" class=\"w-full font-bold text-end text-lg mb-1\">от {{ minPrice.toLocaleString() }} ₽ до {{ maxPrice.toLocaleString() }} ₽</div>\n <div class=\"relative w-full h-56\">\n <div class=\"h-48 bg-tui-base-02 mt-2 absolute rounded right-0 left-16\"></div>\n <div echarts [initOpts]=\"initOption\" (chartInit)=\"onChartInit($event)\" [options]=\"chartOption\" class=\"w-full !h-full touch-none\"></div>\n </div>\n</div>\n","import { EventEmitter, InjectionToken, Provider } from '@angular/core';\nimport { ActivatedRoute, NavigationEnd, Router } from '@angular/router';\nimport { ScAuthService, ScCartService, ScCatalogService, ScICategoryProductPaginationParams, ScIPaginate, ScProduct } from '@snabcentr/client-core';\nimport { TuiDestroyService, tuiCreateToken, tuiIsPresent } from '@taiga-ui/cdk';\nimport { Observable, Subject, debounceTime, filter, map, merge, scan, share, startWith, switchMap, takeUntil } from 'rxjs';\n\n/**\n * Значения пагинации списка товаров категории по умолчанию.\n */\nexport const SC_PRODUCT_PAGINATION_DEFAULT_OPTIONS: ScICategoryProductPaginationParams = {\n perPage: 20,\n page: 0\n};\n\n/**\n * Токен значений пагинации списка товаров в категории по умолчанию.\n */\nexport const SC_PRODUCT_PAGINATION_OPTIONS: InjectionToken<ScICategoryProductPaginationParams> = tuiCreateToken(SC_PRODUCT_PAGINATION_DEFAULT_OPTIONS);\n\n/**\n * {@link Subject} параметров пагинации списка товаров в категории.\n */\nexport const paginationParams$: Subject<ScICategoryProductPaginationParams> = new Subject<ScICategoryProductPaginationParams>();\n\n/**\n * Токен {@link Subject} параметров пагинации списка товаров в категории для получения их из вне.\n */\nexport const SC_PRODUCT_PAGINATION_PARAMS: InjectionToken<Subject<ScICategoryProductPaginationParams>> = tuiCreateToken(paginationParams$);\n\n/**\n * Фабрика создания потока данных о товарах категории с пагинацией, включая данные о количестве этих товаров в корзине.\n *\n * @param paramMap Данные о параметрах запроса.\n * @param catalogService Сервис для работы с каталогом.\n * @param cartService Сервис для работы с корзиной.\n * @param authService Сервис для работы с аутентификации пользователей.\n * @param destroy$ Сервис завершения {@link Observable} через `takeUntil`.\n */\nfunction productsPaginationChangeFactory(\n { paramMap }: ActivatedRoute,\n catalogService: ScCatalogService,\n cartService: ScCartService,\n authService: ScAuthService,\n destroy$: Observable<void>\n): Observable<ScIPaginate<ScProduct> | null> {\n return paramMap.pipe(\n map((params) => params.get('categoryId')),\n filter(tuiIsPresent),\n switchMap((categoryId) =>\n paginationParams$.pipe(\n debounceTime(20),\n switchMap((paginationParams) => authService.getAuthChange().pipe(switchMap(() => catalogService.getCategoryProducts$(Number(categoryId), paginationParams)))),\n filter(tuiIsPresent),\n scan((acc: ScIPaginate<ScProduct> | null, value: ScIPaginate<ScProduct> | null) => {\n if (acc && value && value.meta.currentPage > 1) value.data.unshift(...acc.data);\n\n return value;\n }, null),\n switchMap((productsPaginate) =>\n cartService.getCartChange$().pipe(\n map((cart) => {\n productsPaginate?.data.forEach((product) => (product.cartItem = cart.items.find((cartItem) => cartItem.product.id === product.id)));\n\n return productsPaginate;\n })\n )\n ),\n startWith(null)\n )\n ),\n share(),\n takeUntil(destroy$)\n );\n}\n\n/**\n * Токен потока данных о товарах категории, включая данные о количестве этих товаров в корзине.\n */\nexport const SC_PRODUCT_PAGINATION_CHANGE_INFO = new InjectionToken<Observable<ScIPaginate<ScProduct> | null>>('SC_PRODUCT_PAGINATION_CHANGE_INFO');\n\n/**\n * {@link EventEmitter} событие нажатия на кнопку \"Показать следующие позиции категории\".\n */\nexport const nextPageClickEvent: EventEmitter<void> = new EventEmitter<void>();\n\n/**\n * Токен {@link EventEmitter} событие нажатия на кнопку \"Показать следующие позиции категории\".\n */\nexport const SC_NEXT_PAGE_PAGINATION_CLICK: InjectionToken<EventEmitter<void>> = tuiCreateToken(nextPageClickEvent);\n\n/**\n * Фабрика создания потока данных о состоянии загрузки запроса списка товаров с пагинацией пагинации.\n */\nfunction loadingPaginationFactory(productsData$: Observable<ScIPaginate<ScProduct> | null>, destroy$: Observable<void>) {\n return merge(paginationParams$.pipe(map(() => true)), productsData$.pipe(map((data) => data === null))).pipe(share(), takeUntil(destroy$));\n}\n\n/**\n * Токен потока данных о состоянии загрузки товаров пагинации.\n */\nexport const SC_LOADING_PAGINATION_CHANGE_INFO: InjectionToken<Observable<boolean>> = new InjectionToken<Observable<number>>('SC_LOADING_PAGINATION_CHANGE_INFO');\n\n/**\n * Фабрика создания потока данных прокрутки страницы с сигналами о необходимости пагинации товара.\n */\nfunction nextPagePaginationChangeFactory(\n { events }: Router,\n nextPagePaginationClick: EventEmitter<void>,\n productsData$: Observable<ScIPaginate<ScProduct> | null>,\n destroy$: Observable<void>\n): Observable<number> {\n return nextPagePaginationClick\n .pipe(\n scan((acc) => ++acc, 1),\n startWith(1)\n )\n .pipe(\n takeUntil(\n merge(\n events.pipe(filter((e) => e instanceof NavigationEnd)),\n productsData$.pipe(filter((paginate) => paginate !== null && paginate.meta.currentPage >= paginate.meta.lastPage)),\n destroy$\n )\n )\n );\n}\n\n/**\n * Токен потока данных прокрутки страницы с сигналами о необходимости пагинации товара.\n */\nexport const SC_NEXT_PAGE_PAGINATION_CHANGE_INFO: InjectionToken<Observable<number>> = new InjectionToken<Observable<number>>('SC_NEXT_PAGE_PAGINATION_CHANGE_INFO');\n\n/**\n * Провайдеры потока данных о товарах категории, включая данные о количестве этих товаров в корзине.\n */\nexport const SC_PRODUCT_PAGINATION_CHANGE_PROVIDERS: Provider[] = [\n TuiDestroyService,\n {\n provide: SC_PRODUCT_PAGINATION_CHANGE_INFO,\n deps: [ActivatedRoute, ScCatalogService, ScCartService, ScAuthService, TuiDestroyService],\n useFactory: productsPaginationChangeFactory\n },\n {\n provide: SC_NEXT_PAGE_PAGINATION_CHANGE_INFO,\n deps: [Router, SC_NEXT_PAGE_PAGINATION_CLICK, SC_PRODUCT_PAGINATION_CHANGE_INFO, TuiDestroyService],\n useFactory: nextPagePaginationChangeFactory\n },\n {\n provide: SC_LOADING_PAGINATION_CHANGE_INFO,\n deps: [SC_PRODUCT_PAGINATION_CHANGE_INFO, TuiDestroyService],\n useFactory: loadingPaginationFactory\n }\n];\n","import { ChangeDetectionStrategy, Component, EventEmitter, Inject, Input } from '@angular/core';\nimport { SC_PRODUCT_PAGINATION_CHANGE_PROVIDERS, SC_NEXT_PAGE_PAGINATION_CLICK, SC_PRODUCT_PAGINATION_OPTIONS } from '../../providers/productsPagination';\nimport { ScICategoryProductPaginationParams, ScIPaginationMeta } from '@snabcentr/client-core';\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 providers: [SC_PRODUCT_PAGINATION_CHANGE_PROVIDERS]\n})\nexport class ScPriceListPaginationComponent {\n /**\n * Данные пагинации.\n */\n @Input()\n public meta?: ScIPaginationMeta;\n\n /**\n * Состояние загрузки пагинации.\n */\n @Input()\n public loadingPagination: boolean;\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","<button *ngIf=\"meta?.currentPage !== meta?.lastPage\" tuiButton (click)=\"nextPageClickEvent.emit()\" [disabled]=\"loadingPagination\" appearance=\"secondary\" size=\"l\" class=\"w-full\">\n Показать ещё {{ options.perPage }} товаров\n</button>\n<!-- В будущем можно добавить пагинацию по номерам страницы. -->\n","/**\n * Language: Russian.\n */\nexport default {\n time: {\n month: ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'],\n monthAbbr: ['Янв', 'Фев', 'Мар', 'Апр', 'Май', 'Июн', 'Июл', 'Авг', 'Сен', 'Окт', 'Ноя', 'Дек'],\n dayOfWeek: ['Воскресенье', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота'],\n dayOfWeekAbbr: ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб']\n },\n legend: {\n selector: {\n all: 'Всё',\n inverse: 'Обратить'\n }\n },\n toolbox: {\n brush: {\n title: {\n rect: 'Выделить область',\n polygon: 'Инструмент «Лассо»',\n lineX: 'Горизонтальное выделение',\n lineY: 'Вертикальное выделение',\n keep: 'Оставить выбранное',\n clear: 'Очистить выбранное'\n }\n },\n dataView: {\n title: 'Данные',\n lang: ['Данные', 'Закрыть', 'Обновить']\n },\n dataZoom: {\n title: {\n zoom: 'Увеличить',\n back: 'Сбросить увеличение'\n }\n },\n magicType: {\n title: {\n line: 'Переключиться на линейный график',\n bar: 'Переключиться на столбчатую диаграмму',\n stack: 'Стопка',\n tiled: 'Плитка'\n }\n },\n restore: {\n title: 'Восстановить'\n },\n saveAsImage: {\n title: 'Сохранить картинку',\n lang: ['Правый клик, чтобы сохранить картинку']\n }\n },\n series: {\n typeNames: {\n pie: 'Круговая диаграмма',\n bar: 'Столбчатая диаграмма',\n line: 'Линейный график',\n scatter: 'Точечная диаграмма',\n effectScatter: 'Точечная диаграмма с волнами',\n radar: 'Лепестковая диаграмма',\n tree: 'Дерево',\n treemap: 'Плоское дерево',\n boxplot: 'Ящик с усами',\n candlestick: 'Свечной график',\n k: 'График К-линий',\n heatmap: 'Тепловая карта',\n map: 'Карта',\n parallel: 'Диаграмма параллельных координат',\n lines: 'Линейный граф',\n graph: 'Граф отношений',\n sankey: 'Диаграмма Санкей',\n funnel: 'Воронкообразная диаграмма',\n gauge: 'Шкала',\n pictorialBar: 'Столбец-картинка',\n themeRiver: 'Тематическая река',\n sunburst: 'Солнечные лучи'\n }\n },\n aria: {\n general: {\n withTitle: 'Это график, показывающий \"{title}\"',\n withoutTitle: 'Это график'\n },\n series: {\n single: {\n prefix: '',\n withName: ' с типом {seriesType} и именем {seriesName}.',\n withoutName: ' с типом {seriesType}.'\n },\n multiple: {\n prefix: '. Он состоит из {seriesCount} серий.',\n withName: ' Серия {seriesId} имеет тип {seriesType} и показывает {seriesName}.',\n withoutName: ' Серия {seriesId} имеет тип {seriesType}.',\n separator: {\n middle: '',\n end: ''\n }\n }\n },\n data: {\n allData: 'Данные таковы: ',\n partialData: 'Первые {displayCnt} элементов: ',\n withName: 'значение для {name} — {value}',\n withoutName: '{value}',\n separator: {\n middle: ', ',\n end: '. '\n }\n }\n }\n};\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ScCategoryCardComponent } from './category-card/sc-category-card.component';\nimport { RouterModule } from '@angular/router';\nimport { TuiButtonModule, TuiHintModule, TuiLabelModule, TuiLinkModule, TuiLoaderModule, TuiModeModule, TuiSvgModule, TuiTextfieldControllerModule } from '@taiga-ui/core';\nimport { ScFavoriteBtnComponent } from './sc-favorite-btn/sc-favorite-btn.component';\nimport { TuiElasticContainerModule, TuiFieldErrorPipeModule, TuiInputNumberModule, TuiIslandModule } from '@taiga-ui/kit';\nimport { ScInputQuantityComponent } from './input-quantity/sc-input-quantity.component';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { ScPriceCardComponent } from './price-card/sc-price-card.component';\nimport { ScPriceWarehouseStockComponent } from './price-warehouse-stock/sc-price-warehouse-stock.component';\nimport { ScPriceHistoryComponent } from './price-history/sc-price-history.component';\nimport * as echarts from 'echarts/core';\nimport { LineChart } from 'echarts/charts';\nimport { TitleComponent, TooltipComponent, GridComponent } from 'echarts/components';\nimport { SVGRenderer } from 'echarts/renderers';\nimport { NgxEchartsModule } from 'ngx-echarts';\nimport scLangRU from './price-history/sc-lang-RU';\nimport { ScPriceListPaginationComponent } from './price-list-pagination/sc-price-list-pagination.component';\nimport { TuiLetModule, TuiRepeatTimesModule } from '@taiga-ui/cdk';\nimport { ScCategoriesListComponent } from './categories-list/sc-categories-list.component';\n\necharts.registerLocale('RU', scLangRU);\necharts.use([TitleComponent, TooltipComponent, GridComponent, LineChart, SVGRenderer]);\n\n/**\n * Модуль каталога.\n */\n@NgModule({\n declarations: [\n ScPriceListPaginationComponent,\n ScCategoryCardComponent,\n ScFavoriteBtnComponent,\n ScInputQuantityComponent,\n ScPriceCardComponent,\n ScPriceWarehouseStockComponent,\n ScPriceHistoryComponent,\n ScCategoriesListComponent\n ],\n exports: [\n ScPriceListPaginationComponent,\n ScCategoryCardComponent,\n ScFavoriteBtnComponent,\n ScInputQuantityComponent,\n ScPriceCardComponent,\n ScPriceWarehouseStockComponent,\n ScPriceHistoryComponent,\n ScCategoriesListComponent\n ],\n imports: [\n CommonModule,\n RouterModule,\n TuiButtonModule,\n TuiSvgModule,\n TuiIslandModule,\n TuiInputNumberModule,\n TuiLabelModule,\n TuiTextfieldControllerModule,\n FormsModule,\n ReactiveFormsModule,\n TuiHintModule,\n TuiModeModule,\n TuiFieldErrorPipeModule,\n TuiLoaderModule,\n TuiLinkModule,\n TuiElasticContainerModule,\n NgxEchartsModule.forRoot({ echarts }),\n TuiLetModule,\n TuiRepeatTimesModule\n ]\n})\nexport class ScCatalogModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ScCartItemMobileComponent } from './cart-item-mobile/sc-cart-item-mobile.component';\nimport { TuiButtonModule, TuiFormatNumberPipeModule, TuiHintModule, TuiLinkModule, TuiModeModule, TuiSvgModule } from '@taiga-ui/core';\nimport { ScCatalogModule } from '../catalog';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TuiCurrencyPipeModule } from '@taiga-ui/addon-commerce';\nimport { TuiPreviewModule } from '@taiga-ui/addon-preview';\nimport { PolymorpheusModule } from '@tinkoff/ng-polymorpheus';\n\n/**\n * Модуль корзины.\n */\n@NgModule({\n declarations: [ScCartItemMobileComponent],\n exports: [ScCartItemMobileComponent],\n imports: [\n CommonModule,\n TuiLinkModule,\n ScCatalogModule,\n TuiButtonModule,\n TuiCurrencyPipeModule,\n TuiFormatNumberPipeModule,\n TuiModeModule,\n TuiSvgModule,\n TuiHintModule,\n FormsModule,\n ReactiveFormsModule,\n TuiPreviewModule,\n PolymorpheusModule\n ]\n})\nexport class ScCartModule {}\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 editContactClick: EventEmitter<void> = new EventEmitter<void>();\n}\n","<sc-accordion (addButtonClick)=\"addContactClick.emit()\">\n Контакты\n <ng-template scAccordionContent>\n <tui-loader *tuiLet=\"contacts$ | async as contacts\" [overlay]=\"true\" [showLoader]=\"contacts === null\">\n <div class=\"flex flex-col gap-2\">\n <ng-container *ngIf=\"!contacts || contacts.length; else contactsNotExist\">\n <div *ngFor=\"let contact of contacts\" class=\"flex gap-2 border-b border-tui-base-03\">\n <div class=\"flex flex-col gap-2 grow\">\n {{ contact.name }}\n <a\n tuiLink\n tuiMode=\"onLight\"\n icon=\"tuiIconPhoneLarge\"\n iconAlign=\"left\"\n [pseudo]=\"true\"\n href=\"tel:{{ contact.phone }}\"\n >{{ contact.phone | tuiFormatPhone }}</a\n >\n <a tuiLink tuiMode=\"onLight\" icon=\"tuiIconMailLarge\" iconAlign=\"left\" [pseudo]=\"true\" href=\"mailto:{{ contact.email }}\"> {{ contact.email }} </a>\n </div>\n <div class=\"flex flex-col gap-4\">\n <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n icon=\"tuiIconEdit3Large\"\n tuiMode=\"onLight\"\n appearance=\"flat\"\n (click)=\"$event.stopPropagation(); editContactClick.emit()\"\n ></button>\n </div>\n </div>\n </ng-container>\n\n <ng-template #contactsNotExist>\n <tui-notification size=\"l\">\n <div class=\"flex flex-wrap gap-2 font-medium\">\n Контакты не указаны.\n <button tuiButton size=\"s\" icon=\"tuiIconPlusLarge\" (click)=\"addContactClick.emit()\">Добавить</button>\n </div>\n </tui-notification>\n </ng-template>\n </div>\n </tui-loader>\n </ng-template>\n</sc-accordion>\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 addBankAccountsClick: EventEmitter<number> = new EventEmitter<number>();\n\n /**\n * Событие нажатия на кнопку редактирования банковского счёта контрагента.\n */\n @Output()\n public editBankAccountsContragentClick: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на кнопку редактирования контрагента.\n */\n @Output()\n public editContragentClick: EventEmitter<void> = new EventEmitter<void>();\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","<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 flex-col gap-2 grow\">\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 <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n icon=\"tuiIconEdit3Large\"\n tuiMode=\"onLight\"\n appearance=\"flat\"\n (click)=\"$event.stopPropagation(); editContragentClick.emit()\"\n ></button>\n </div>\n\n <sc-accordion (addButtonClick)=\"addBankAccountsClick.emit(contragent.id)\">\n Банковские реквизиты\n <ng-template scAccordionContent>\n <tui-loader *tuiLet=\"bankAccounts$ | async as bankAccounts\" [overlay]=\"true\" [showLoader]=\"bankAccounts === null\">\n <div class=\"flex flex-col gap-2\">\n <ng-container *ngIf=\"!bankAccounts || bankAccounts.length; else bankAccountsNotExist\">\n <div *ngFor=\"let bankAccount of bankAccounts\" class=\"flex gap-2 border-b border-tui-base-03\">\n <div class=\"flex flex-col gap-2 grow\">\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=\"tuiIconEdit3Large\"\n tuiMode=\"onLight\"\n appearance=\"flat\"\n (click)=\"$event.stopPropagation();\"\n ></button>\n\n <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n icon=\"tuiIconTrash2Large\"\n tuiMode=\"onLight\"\n appearance=\"flat\"\n (click)=\"$event.stopPropagation();\"\n ></button>\n </div>\n </div>\n </ng-container>\n\n <ng-template #bankAccountsNotExist>\n <tui-notification size=\"l\">\n <div class=\"flex flex-wrap gap-2 font-medium\">\n У контрагента <span class=\"font-bold\">{{ contragent.name }}</span> не указаны банковские реквизиты.\n <button tuiButton size=\"s\" icon=\"tuiIconPlusLarge\" (click)=\"addBankAccountsClick.emit(contragent.id)\">Добавить</button>\n </div>\n </tui-notification>\n </ng-template>\n </div>\n </tui-loader>\n </ng-template>\n </sc-accordion>\n <sc-contacts-accordion *ngIf=\"contacts$\" [contacts$]=\"contacts$\"></sc-contacts-accordion>\n </div>\n </ng-template>\n</sc-accordion>\n","import { Component, ChangeDetectionStrategy, Output, EventEmitter } from '@angular/core';\nimport { ScContragent, ScContragentService } 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 editBankAccountsContragentClick: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на кнопку добавления банковского счёта контрагенту.\n */\n @Output()\n public addBankAccountsClick: EventEmitter<number> = new EventEmitter<number>();\n\n /**\n * Событие нажатия на кнопку редактирования контрагента.\n */\n @Output()\n public editContragentClick: EventEmitter<void> = new EventEmitter<void>();\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 (addBankAccountsClick)=\"addBankAccountsClick.emit($event)\"\n (editContragentClick)=\"editContragentClick.emit()\"\n (editBankAccountsContragentClick)=\"editBankAccountsContragentClick.emit()\"\n ></sc-contragents-accordion-item>\n </ng-container>\n\n <ng-template #contragentsNotExist>\n <tui-notification size=\"l\">\n <div class=\"flex flex-wrap gap-2 font-medium\">\n Контрагенты не указаны.\n <button tuiButton size=\"s\" icon=\"tuiIconPlusLarge\" (click)=\"addContragentClick.emit()\">Добавить</button>\n </div>\n </tui-notification>\n </ng-template>\n </div>\n </tui-loader>\n </ng-template>\n</sc-accordion>\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 { HttpErrorResponse } from '@angular/common/http';\nimport { Component, Inject, Input, OnInit, SkipSelf } from '@angular/core';\nimport { FormGroup, NgControl } from '@angular/forms';\nimport { ScISuggestionType, ScSuggestion, ScSuggestionService } from '@snabcentr/client-core';\nimport { tuiIsPresent, tuiIsFalsy, tuiMarkControlAsTouchedAndValidate, tuiControlValue } from '@taiga-ui/cdk';\nimport { ApiErrorResponse } from '../../auth';\nimport { Observable, catchError, debounceTime, filter, map, of, share, startWith, switchMap, tap, throwError } from 'rxjs';\n\n/**\n * Компонент подсказок для поля ввода.\n */\n@Component({\n selector: 'sc-suggestion-field',\n templateUrl: './sc-suggestion-field.component.html'\n})\nexport class ScSuggestionFieldComponent implements OnInit {\n /**\n * Тип подсказок.\n */\n @Input()\n public type: ScISuggestionType = ScISuggestionType.fio;\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 * Инициализирует экземпляр класса {@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(300),\n filter(tuiIsPresent),\n map((term) => term.trim()),\n filter((term) => term.length >= 3),\n switchMap((term: string) => this.suggestionService.getData<ScSuggestion>(term, this.type).pipe(startWith(null))),\n catchError((error: 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 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);\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 }\n }\n}\n","<tui-loader size=\"m\" [overlay]=\"true\" [showLoader]=\"!!(loading$ | async)\">\n <tui-data-list *tuiLet=\"suggestions$ | async as options\">\n <button *ngFor=\"let option of options\" tuiOption (click)=\"onSelected(option)\" class=\"flex-col !items-start\">\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 tuiTextfield [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 tuiTextfield [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 tuiTextfield [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","import { ChangeDetectionStrategy, Component, Inject, OnInit, SkipSelf } from '@angular/core';\nimport { FormControl, FormGroupDirective, Validators } from '@angular/forms';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { ScICity, ScICountry, ScIRegion, ScLocationsService } from '@snabcentr/client-core';\nimport { tuiControlValue, tuiIsPresent, tuiMarkControlAsTouchedAndValidate } from '@taiga-ui/cdk';\nimport { Observable, combineLatest, debounceTime, filter, 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})\n@UntilDestroy({ checkProperties: true })\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 * `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 /**\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 /** @inheritDoc */\n public ngOnInit(): void {\n if (this.cityIdControl.valid) {\n this.locationsService\n .getUserCity$(Number(this.cityIdControl?.value))\n .pipe(untilDestroyed(this))\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(untilDestroyed(this)).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(untilDestroyed(this)).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 */\n public onSelectedCity(city: ScICity | null): void {\n if (this.cityIdControl) {\n this.cityIdControl.setValue(city?.id.toString() ?? null);\n tuiMarkControlAsTouchedAndValidate(this.cityIdControl);\n }\n }\n\n /**\n * Функция преобразования объекта сортировки в значение, отображаемое в поле ввода.\n *\n * @param item Выбранный объект выпадающего списка.\n */\n public readonly stringify = (item: { name: string }): string => `${item.name}`;\n}\n","<div class=\"flex flex-col sm:flex-row gap-4 items-start\">\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 tuiLabel=\"Регион\" class=\"w-full\">\n <tui-combo-box *tuiLet=\"regions$ | async as regions\" [formControl]=\"regionControl\" [stringify]=\"stringify\">\n Регион\n <input tuiTextfield autocapitalize=\"off\" autocomplete=\"off\" autocorrect=\"off\" />\n <tui-data-list-wrapper *tuiDataList [itemContent]=\"stringify | tuiStringifyContent\" [items]=\"regions | tuiFilterByInputWith: stringify\"></tui-data-list-wrapper>\n </tui-combo-box>\n <tui-error [formControl]=\"regionControl\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"Город\" class=\"w-full\">\n <tui-combo-box *tuiLet=\"cities$ | async as cities\" [formControl]=\"cityControl\" [stringify]=\"stringify\" (ngModelChange)=\"onSelectedCity($event)\">\n Город\n <input tuiTextfield autocapitalize=\"off\" autocomplete=\"off\" autocorrect=\"off\" />\n <tui-data-list-wrapper *tuiDataList [itemContent]=\"stringify | tuiStringifyContent\" [items]=\"cities | tuiFilterByInputWith: stringify\"></tui-data-list-wrapper>\n </tui-combo-box>\n <tui-error [formControl]=\"cityIdControl\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n <tui-error *ngIf=\"cityIdControl.untouched\" [formControl]=\"cityControl\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TuiLetModule } from '@taiga-ui/cdk';\nimport { TuiTextfieldControllerModule, TuiLabelModule, TuiErrorModule, TuiDataListModule, TuiLoaderModule, TuiButtonModule } from '@taiga-ui/core';\nimport {\n TuiInputModule,\n TuiFieldErrorPipeModule,\n TuiComboBoxModule,\n TuiDataListWrapperModule,\n TuiFilterByInputPipeModule,\n TuiStringifyContentPipeModule,\n TuiInputPhoneModule\n} from '@taiga-ui/kit';\nimport { MaskitoModule } from '@maskito/angular';\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 TuiLabelModule,\n TuiLetModule,\n TuiFieldErrorPipeModule,\n TuiErrorModule,\n TuiDataListModule,\n TuiLoaderModule,\n TuiComboBoxModule,\n TuiDataListWrapperModule,\n TuiFilterByInputPipeModule,\n TuiStringifyContentPipeModule,\n TuiInputPhoneModule,\n TuiButtonModule,\n MaskitoModule\n ],\n exports: [ScAddressesSelectionFieldComponent, ScSuggestionFieldComponent]\n})\nexport class ScFormFieldsModule {}\n","import { ChangeDetectionStrategy, Component, Inject } from '@angular/core';\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\nimport { ScContragentService, ScIBankAccountOnDataCreate, ScIBankAccount } from '@snabcentr/client-core';\nimport { Observable, Subject, catchError, filter, map, of, share, startWith, switchMap, tap } from 'rxjs';\nimport { scBicValidator, scCorrespondentAccountValidator } from '../../validators';\nimport { TuiDialogContext } from '@taiga-ui/core';\nimport { POLYMORPHEUS_CONTEXT } from '@tinkoff/ng-polymorpheus';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { tuiIsFalsy, tuiMarkControlAsTouchedAndValidate } from '@taiga-ui/cdk';\nimport { ApiErrorResponse } from '../../auth';\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: 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 }> = 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 * {@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 tap((i) => console.log(i)),\n filter((value): value is ScIBankAccountOnDataCreate => this.form.valid),\n switchMap((value) => {\n console.log(this.context.data.contragentId);\n return this.contragentService.createContragentBankAccount$(this.context.data.contragentId, value).pipe(\n tap((bankAccount) => this.context?.completeWith(bankAccount)),\n catchError((error: HttpErrorResponse) => {\n tuiMarkControlAsTouchedAndValidate(this.form);\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({} 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 [formGroup]=\"form\" (ngSubmit)=\"onSubmit.next()\" class=\"flex flex-col gap-3\">\n <sc-new-contragent-bank-account-form [form]=\"form\"></sc-new-contragent-bank-account-form>\n <div class=\"flex gap-4 justify-center\">\n <button tuiButton (click)=\"context.$implicit.complete()\" type=\"button\" icon=\"tuiIconXLarge\" appearance=\"secondary\">Отмена</button>\n <button tuiButton tuiMode=\"onLight\" [disabled]=\"form.invalid\" [showLoader]=\"!!(loading$ | async)\" type=\"submit\" icon=\"scIconSave\">Сохранить</button>\n </div>\n</form>","import { NgModule } from '@angular/core';\nimport { ScAccordionModule } from '../accordion';\nimport { CommonModule } from '@angular/common';\nimport {\n TuiButtonModule,\n TuiDataListModule,\n TuiErrorModule,\n TuiFormatPhonePipeModule,\n TuiLabelModule,\n TuiLinkModule,\n TuiLoaderModule,\n TuiModeModule,\n TuiNotificationModule\n} from '@taiga-ui/core';\nimport { TuiLetModule } from '@taiga-ui/cdk';\nimport { ScContactsAccordionComponent } from './contacts-accordion/sc-contacts-accordion.component';\nimport { ScNewContragentBankAccountsFormComponent } from './new-contragent-bank-account-form/sc-new-contragent-bank-account-form.component';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { ScFormFieldsModule } from '../form-fields/form-fields.module';\nimport { MaskitoModule } from '@maskito/angular';\nimport { TuiDataListWrapperModule, TuiFieldErrorPipeModule, TuiInputModule, TuiInputPhoneModule, TuiSelectModule } from '@taiga-ui/kit';\nimport { ScAddContragentBankAccountsDialogComponent } from './add-contragent-bank-account-dialog/sc-add-contragent-bank-account-dialog.component';\n\n/**\n * Модуль контактных лиц.\n */\n@NgModule({\n declarations: [ScContactsAccordionComponent, ScNewContragentBankAccountsFormComponent, ScAddContragentBankAccountsDialogComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n ScAccordionModule,\n TuiButtonModule,\n TuiModeModule,\n TuiLoaderModule,\n TuiLetModule,\n TuiNotificationModule,\n TuiLinkModule,\n TuiFormatPhonePipeModule,\n ScFormFieldsModule,\n MaskitoModule,\n TuiFieldErrorPipeModule,\n TuiSelectModule,\n TuiDataListModule,\n TuiDataListWrapperModule,\n TuiLabelModule,\n TuiInputModule,\n TuiInputPhoneModule,\n TuiErrorModule\n ],\n exports: [ScContactsAccordionComponent, ScNewContragentBankAccountsFormComponent, ScAddContragentBankAccountsDialogComponent]\n})\nexport class ScContactsModule {}\n","import { NgModule } from '@angular/core';\nimport { ScContragentsAccordionComponent } from './contragents-accordion/sc-contragents-accordion.component';\nimport { ScAccordionModule } from '../accordion';\nimport { CommonModule } from '@angular/common';\nimport { TuiButtonModule, TuiLoaderModule, TuiModeModule, TuiNotificationModule } from '@taiga-ui/core';\nimport { TuiLetModule } from '@taiga-ui/cdk';\nimport { ScContragentsAccordionItemComponent } from './contragents-accordion/contragents-accordion-item/sc-contragents-accordion-item.component';\nimport { ScContactsModule } from '../contacts/sc-contacts.module';\n\n/**\n * Модуль для отображение контента разделами, с возможностью скрывать и отображать содержимое.\n */\n@NgModule({\n declarations: [ScContragentsAccordionComponent, ScContragentsAccordionItemComponent],\n imports: [CommonModule, ScAccordionModule, TuiButtonModule, TuiModeModule, TuiLoaderModule, TuiLetModule, TuiNotificationModule, ScContactsModule],\n exports: [ScContragentsAccordionComponent]\n})\nexport class ScContragentsModule {}\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 @Output()\n public editDeliveryAddressClick: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Список банковских счетов контрагента.\n */\n public contacts$?: Observable<ScIContact[] | null>;\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","<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 <button tuiIconButton size=\"m\" type=\"button\" icon=\"tuiIconEdit3Large\" tuiMode=\"onLight\" appearance=\"flat\" (click)=\"$event.stopPropagation();\"></button>\n </div>\n\n <sc-contacts-accordion *ngIf=\"contacts$\" [contacts$]=\"contacts$\"></sc-contacts-accordion>\n </div>\n </ng-template>\n</sc-accordion>\n","import { Component, ChangeDetectionStrategy, Output, EventEmitter } from '@angular/core';\nimport { ScDeliveryAddressService, 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 * Инициализирует экземпляр класса {@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 *ngFor=\"let address of deliveryAddress\" [deliveryAddress]=\"address\"></sc-delivery-address-accordion-item>\n </ng-container>\n\n <ng-template #contragentsNotExist>\n <tui-notification size=\"l\">\n <div class=\"flex flex-wrap gap-2 font-medium\">\n Адреса доставки не указаны.\n <button tuiButton size=\"s\" icon=\"tuiIconPlusLarge\" (click)=\"addDeliveryAddressClick.emit()\">Добавить</button>\n </div>\n </tui-notification>\n </ng-template>\n </div>\n </tui-loader>\n </ng-template>\n</sc-accordion>\n","import { NgModule } from '@angular/core';\nimport { ScAccordionModule } from '../accordion';\nimport { CommonModule } from '@angular/common';\nimport { TuiButtonModule, TuiLoaderModule, TuiModeModule, TuiNotificationModule } from '@taiga-ui/core';\nimport { TuiLetModule } from '@taiga-ui/cdk';\nimport { ScDeliveryAddressAccordionItemComponent } from './delivery-address-accordion/delivery-address-accordion-item/sc-delivery-address-accordion-item.component';\nimport { ScContactsModule } from '../contacts/sc-contacts.module';\nimport { ScDeliveryAddressAccordionComponent } from './delivery-address-accordion/sc-delivery-address-accordion.component';\n\n/**\n * Модуль для отображение адресов доставки разделами, с возможностью скрывать и отображать содержимое.\n */\n@NgModule({\n declarations: [ScDeliveryAddressAccordionComponent, ScDeliveryAddressAccordionItemComponent],\n imports: [CommonModule, ScAccordionModule, TuiButtonModule, TuiModeModule, TuiLoaderModule, TuiLetModule, TuiNotificationModule, ScContactsModule],\n exports: [ScDeliveryAddressAccordionComponent]\n})\nexport class ScDeliveryAddressModule {}\n","import { Injectable } from '@angular/core';\nimport { ScDocumentInfo, 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 'tuiIconImageLarge';\n case ScIconTypesEnum.iconPdfFile:\n return 'scIconPdfFile';\n case ScIconTypesEnum.iconWordFile:\n return 'scIconWordFile';\n case ScIconTypesEnum.iconExcelFile:\n return 'scIconExcelFile';\n case ScIconTypesEnum.iconFolder:\n return 'scIconFolder';\n default:\n return 'scIconFile';\n }\n }\n\n /**\n * Проверяет на признак наличия дочерних элементов.\n *\n * @param info Объект пришедших данных о файле.\n * @returns Возвращает true при наличии дочерних элементов и false при их отсутствии.\n */\n public hasChildren(info: ScDocumentInfo): boolean {\n return info.type === '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 { TuiTreeItemContentComponent } 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 TuiTreeItemContentComponent {}\n","<ng-container [ngTemplateOutlet]=\"context.template\"></ng-container>\n","/* eslint-disable @angular-eslint/no-input-rename */\nimport { Directive, Input, forwardRef } from '@angular/core';\nimport { TUI_TREE_CONTENT, TUI_TREE_START } from '@taiga-ui/kit';\nimport { PolymorpheusComponent } from '@tinkoff/ng-polymorpheus';\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 { TUI_TREE_LOADING, TUI_TREE_LOADER } from '@taiga-ui/kit';\nimport { ScDocumentInfo, ScFilesService } from '@snabcentr/client-core';\nimport { Observable, map } from 'rxjs';\nimport { TreeIconService } from './services/tree-icon.service';\nimport { TreeLoaderService } from './services/tree-loader.service';\nimport { TreeNode } from './interfaces/tree-node';\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(@Inject(TUI_TREE_LOADING) public readonly loading: unknown, public readonly iconService: TreeIconService, private readonly filesService: ScFilesService) {}\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 #content let-item>\n <tui-loader *ngIf=\"item === loading; else text\" class=\"w-8 my-4\"></tui-loader>\n <ng-template #text>\n <tui-svg [src]=\"item.icon\" class=\"tui-space_right-2\"></tui-svg>\n <a tuiLink [pseudo]=\"true\" *ngIf=\"item.link\" href=\"{{ item.link }}\" class=\"grow\">{{ item.text }}</a>\n <p *ngIf=\"!item.link\" class=\"grow\">{{ item.text }}</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 *ngFor=\"let _ of [].constructor(7)\" class=\"flex items-center gap-2\">\n <div class=\"tui-skeleton h-6 w-6\"></div>\n <div class=\"tui-skeleton h-4 w-40\"></div>\n </div>\n </div>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FilesAndDocumentsComponent } from './files-and-documents.component';\nimport { TuiTreeModule } from '@taiga-ui/kit';\nimport { TuiLinkModule, TuiLoaderModule, TuiSvgModule } from '@taiga-ui/core';\nimport { FileTreeItemComponent } from './file-tree-item/file-tree-item.component';\nimport { TreeTopDirective } from '../public-api';\nimport { TreeDirective } from './directives/tree.directive';\n\n/**\n * Модуль файлов и документов.\n */\n@NgModule({\n imports: [CommonModule, TuiTreeModule, TuiSvgModule, TuiLoaderModule, TuiLinkModule],\n declarations: [FilesAndDocumentsComponent, TreeDirective, TreeTopDirective, FileTreeItemComponent],\n exports: [FilesAndDocumentsComponent]\n})\nexport class FilesAndDocumentsModule {}\n","/**\n * Список иконок.\n */\nexport const scClientUiIconsName = [\n 'scIconWordFile',\n 'scIconWindowsill',\n 'scIconWarning',\n 'scIconSandwichPanels',\n 'scIconWallet',\n 'scIconViewTree',\n 'scIconViewInline',\n 'scIconTop',\n 'scIconTemplates',\n 'scIconTasks',\n 'scIconSuitcase',\n 'scIconStar',\n 'scIconSocialWhatsapp',\n 'scIconSocialVk',\n 'scIconSocialViber',\n 'scIconSocialTelegram',\n 'scIconSocialQR',\n 'scIconSocialInstagram',\n 'scIconSocialFacebook',\n 'scIconSocialEmail',\n 'scIconSocialCopy',\n 'scIconSmile',\n 'scIconSiding',\n 'scIconShare',\n 'scIconSend',\n 'scIconSearch',\n 'scIconSave',\n 'scIconSandwich',\n 'scIconRocket',\n 'scIconRequisites',\n 'scIconRepeat',\n 'scIconReclamation',\n 'scIconQRCodeScan',\n 'scIconPromoMaterials',\n 'scIconProfile',\n 'scIconPrice',\n 'scIconPlasticProfile',\n 'scIconPercentage',\n 'scIconPdfFile',\n 'scIconPalette',\n 'scIconOffer',\n 'scIconNews',\n 'scIconMosquitoNet',\n 'scIconMoney',\n 'scIconMail',\n 'scIconLogIn',\n 'scIconLockOpen',\n 'scIconLock',\n 'scIconList',\n 'scIconHome',\n 'scIconHistory',\n 'scIconHeartFill',\n 'scIconHeart',\n 'scIconGraph',\n 'scIconFolderOpen',\n 'scIconFolder',\n 'scIconFoam',\n 'scIconFoamBalloon',\n 'scIconFilter',\n 'scIconFile',\n 'scIconFavoriteFill',\n 'scIconFavorite',\n 'scIconFastener',\n 'scIconExcelFile',\n 'scIconError',\n 'scIconEdit',\n 'scIconDeleteProfile',\n 'scIconContacts',\n 'scIconConfigurator',\n 'scIconClock',\n 'scIconClients',\n 'scIconCatalogBack',\n 'scIconCart',\n 'scIconCanopy',\n 'scIconCalendar',\n 'scIconBook',\n 'scIconBell',\n 'scIconBag',\n 'scIconAttention',\n 'scIconArrowReturn',\n 'scIconArrowLargeStart',\n 'scIconArrowLargeEnd',\n 'scIconArrowForward',\n 'scIconApplication',\n 'scIconAddProfile'\n];\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 tuiIconButton icon=\"scIconShare\" [appearance]=\"appearance\" [size]=\"size\" (click)=\"$event.stopPropagation(); clickShareEvent.emit()\"></button>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { ScNewsTile } from '@snabcentr/client-core';\n\n/**\n * Компонент карточки новости.\n */\n@Component({\n selector: 'sc-news-card',\n templateUrl: './sc-news-card.component.html',\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","<div (click)=\"clickCardEvent.emit(news)\" class=\"block relative h-82 w-70 cursor-pointer shadow-sc-2 rounded-lg overflow-hidden bg-white\">\n <div [style.background-image]=\"'url(' + news.image + ')'\" class=\"bg-no-repeat bg-center bg-cover bg-tui-base-02 w-full h-50\"></div>\n <div class=\"px-6 py-4.5 h-32 w-full w-full flex justify-between align-baseline bg-white overflow-hidden\">\n <div class=\"flex flex-col gap-2.5\">\n <p class=\"text-sm text-tui-text-02\">{{ news.createdAt }}</p>\n <a class=\"text-sm font-bold text-black line-clamp-3\">{{ news.subject }}</a>\n </div>\n <sc-share-button (clickShareEvent)=\"clickShareEvent.emit()\"></sc-share-button>\n </div>\n</div>\n","import { Input, Component, ChangeDetectionStrategy } from '@angular/core';\n\n/**\n * Компонент скелетона карточки новости.\n */\n@Component({\n selector: 'sc-news-card-skeleton',\n templateUrl: './sc-news-card-skeleton.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScNewsCardSkeletonComponent {\n /**\n * Признак, что необходимо отобразить скелетон изображения новости.\n */\n @Input() public hasImg: boolean = true;\n}\n","<div class=\"block relative h-82 w-70 shadow-sc-2 rounded-lg overflow-hidden bg-white\">\n <div *ngIf=\"hasImg; else textBlock\" class=\"bg-tui-base-02 w-full h-50\"></div>\n <ng-template #textBlock>\n <div class=\"px-6 py-4.5 w-full flex flex-col gap-2\">\n <div class=\"h-3 rounded bg-tui-base-02 w-full\"></div>\n <div class=\"h-3 rounded bg-tui-base-02 w-3/4\"></div>\n <div class=\"h-3 rounded bg-tui-base-02 w-full\"></div>\n <div class=\"h-3 rounded bg-tui-base-02 w-3/4\"></div>\n <div class=\"h-3 rounded bg-tui-base-02 w-full\"></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 { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ScShareButtonComponent } from './sc-share-button.component';\nimport { TuiButtonModule } from '@taiga-ui/core';\n\n/**\n * Модуль работы кнопки \"Поделиться\".\n */\n@NgModule({\n declarations: [ScShareButtonComponent],\n imports: [CommonModule, TuiButtonModule],\n exports: [ScShareButtonComponent]\n})\nexport class ScShareButtonModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ScNewsCardComponent } from './news-card/sc-news-card.component';\nimport { ScNewsCardSkeletonComponent } from './news-card-skeleton/sc-news-card-skeleton.component';\nimport { RouterModule } from '@angular/router';\nimport { ScShareButtonModule } from '../share-button';\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 } from '@snabcentr/client-core';\nimport { TuiPreviewDialogService } from '@taiga-ui/addon-preview';\nimport { TuiDialogContext } from '@taiga-ui/core';\nimport { UnitsHelper } from '../../helpers/sc-units-helper';\n\n/**\n * Компонент карточки элемента заказа.\n */\n@Component({\n selector: 'sc-order-item-mobile',\n templateUrl: './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 * Продукт элемента заказа.\n */\n public get product(): ScProduct | undefined {\n return this.orderItem?.product;\n }\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: UnitsHelper,\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 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 p-4 gap-y-2 gap-x-4 flex flex-wrap bg-white border border-tui-base-04 shadow-sc-2 rounded-xl\">\n <ng-container *ngIf=\"orderItem && product; else skeleton\">\n <button\n tuiIconButton\n (click)=\"clickActionsEvent.emit()\"\n size=\"m\"\n icon=\"scIconVerticalThreeDots\"\n appearance=\"float\"\n tuiMode=\"onLight\"\n class=\"!hidden !absolute right-0 top-0\"\n ></button>\n <div class=\"flex gap-2 grow\">\n <div class=\"flex shrink-0 h-20 w-20 justify-center items-center overflow-hidden\">\n <img (click)=\"clickCardEvent.emit()\" [src]=\"getCardImage()\" [alt]=\"product.name\" [class.p-5]=\"!product.images?.length\" class=\"cursor-pointer\" />\n </div>\n\n <div class=\"flex flex-wrap self-center gap-x-8 grow\">\n <div class=\"basis-min-content flex flex-col grow\">\n <a tuiLink (click)=\"clickCardEvent.emit()\">\n <span class=\"font-bold\">{{ product.name }}</span>\n </a>\n <div class=\"text-tui-text-02 text-xs flex flex-col gap-y-0.5\">\n <div class=\"flex flex-wrap gap-y-0.5\">\n <p class=\"w-40\">Артикул: {{ product.code }}</p>\n <p class=\"w-40\" *ngIf=\"product.pack\">Норма упаковки: {{ product.pack }}</p>\n </div>\n <a tuiLink *ngIf=\"orderItem.specificationImgUrl\" (click)=\"showSpecification()\">Спецификация</a>\n </div>\n </div>\n <div class=\"flex flex-wrap content-center\">\n <div class=\"flex flex-col w-40 gap-x-8 gap-y-0.5\">\n <span *ngIf=\"product.discount\" class=\"flex items-center text-xs text-tui-text-02\">\n <span class=\"line-through\">{{ product.discountCostString }}</span> &nbsp;\n <span class=\"text-tui-success-fill font-bold\"> -{{ 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=\"flex flex-col items-baseline gap-x-2 font-bold\">\n <span>{{ product.costRubString }}</span>\n <span *ngIf=\"!product.priceInRub\" class=\"text-xs text-tui-text-02\">{{ product.costString }}</span>\n </p>\n <sc-price-warehouse-stock [product]=\"product\" [fromMain]=\"false\"></sc-price-warehouse-stock>\n </div>\n\n <div class=\"w-40 text-xs text-tui-text-02\">\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=\"text-tui-base-09 text-sm\">\n Сумма: <span class=\"font-bold whitespace-nowrap\"> {{ orderItem.getCostRubStr() }} </span>\n </p>\n </div>\n </div>\n </div>\n </div>\n </ng-container>\n\n <ng-template #skeleton>\n <div class=\"flex gap-2 w-full\">\n <div class=\"h-20 w-20 bg-tui-base-02 rounded-xl \"></div>\n <div class=\"flex flex-col grow gap-2.5 bg-white\">\n <div class=\"w-full h-4 rounded-xl bg-tui-base-02\"></div>\n <div class=\"w-3/5 h-4 rounded-xl bg-tui-base-02\"></div>\n <div class=\"w-4/5 h-4 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-svg src=\"tuiIconCheckCircleLarge\" tuiSlot=\"top\" class=\"scale-[3] !h-20 !text-green-500\"></tui-svg>\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-svg src=\"tuiIconXCircleLarge\" class=\"scale-[3] !h-20 !text-red-500\" tuiSlot=\"top\"></tui-svg>\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-svg src=\"tuiIconInfoLarge\" class=\"scale-[3] !h-20 !text-yellow-500\" tuiSlot=\"top\"></tui-svg>\n <h4>Что-то пошло не так!</h4>\n <button tuiButton tuiItem (click)=\"backToOrdersClick.emit()\">Вернуться к заказам</button>\n </tui-block-status>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { ScOrderItemMobileComponent } from './order-item-mobile/order-item-mobile.component';\nimport { CommonModule } from '@angular/common';\nimport { TuiLinkModule, TuiButtonModule, TuiModeModule, TuiSvgModule } from '@taiga-ui/core';\nimport { ScCatalogModule } from '../catalog';\nimport { ScPaymentStatusComponent } from './sc-payment-status/sc-payment-status.component';\nimport { TuiBlockStatusModule } from '@taiga-ui/layout';\n\n/**\n * Модуль заказов.\n */\n@NgModule({\n declarations: [ScOrderItemMobileComponent, ScPaymentStatusComponent],\n exports: [ScOrderItemMobileComponent, ScPaymentStatusComponent],\n imports: [CommonModule, TuiLinkModule, TuiButtonModule, TuiModeModule, TuiSvgModule, TuiBlockStatusModule, ScCatalogModule]\n})\nexport class ScOrderModule {}\n","import { InjectionToken, Provider } from '@angular/core';\nimport { ScUser, ScUserService } from '@snabcentr/client-core';\nimport { TuiDestroyService } from '@taiga-ui/cdk';\nimport { Observable, takeUntil } 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 * @param destroy$ Сервис завершения {@link Observable} через `takeUntil`.\n */\nexport function scUserFactory(userService: ScUserService, destroy$: Observable<void>): Observable<ScUser | undefined> {\n //TODO: TASK[#7615] Отслеживать выполнение запроса изменения информации о пользователе после доработки snabcentr-core-lib.\n return userService.getUserChange$().pipe(takeUntil(destroy$));\n}\n\n/**\n * Провайдер потока данных о текущем пользователе.\n */\nexport const SC_USER_PROVIDERS: Provider[] = [\n TuiDestroyService,\n {\n provide: SC_USER_INFO,\n deps: [ScUserService, TuiDestroyService],\n useFactory: scUserFactory\n }\n];\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { ScIChangePassword, ScUserService } from '@snabcentr/client-core';\nimport { tuiIsFalsy } from '@taiga-ui/cdk';\nimport { Subject, Observable, filter, map, switchMap, catchError, of, startWith, share } from 'rxjs';\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),\n newPassword: new FormControl(null, [Validators.required, Validators.minLength(8)]),\n newPasswordConfirm: new FormControl(null, [Validators.required, Validators.minLength(8)])\n },\n { validators: scPasswordConfirmMatchingValidator('newPassword', 'newPasswordConfirm') }\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 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(void {});\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 * Инициализирует экземпляр класса {@link ScResetUserPasswordComponent}.\n *\n * @param userService Сервис информации о пользователе.\n */\n public constructor(private readonly userService: ScUserService) {}\n}\n","<form [formGroup]=\"form\" (ngSubmit)=\"onSubmit.next()\" class=\"flex flex-col lg:flex-row gap-4 p-1\">\n <div class=\"grid grid-rows-3 gap-2 lg:grid-cols-3 lg:grid-rows-1 lg:gap-4 lg:flex-grow\">\n <label tuiLabel=\"Старый пароль\">\n <tui-input-password formControlName=\"currentPassword\">\n Старый пароль\n <input tuiTextfield autocomplete=\"new-password\" />\n </tui-input-password>\n <tui-error formControlName=\"currentPassword\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"Придумайте новый пароль\">\n <tui-input-password [pseudoInvalid]=\"form.hasError('passwordNotEquivalent')\" formControlName=\"newPassword\">\n Придумайте новый пароль\n <input tuiTextfield autocomplete=\"new-password\" />\n </tui-input-password>\n <tui-error formControlName=\"newPassword\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"Повторите новый пароль\">\n <tui-input-password [pseudoInvalid]=\"form.hasError('passwordNotEquivalent')\" formControlName=\"newPasswordConfirm\">\n Повторите новый пароль\n <input tuiTextfield autocomplete=\"new-password\" />\n </tui-input-password>\n <tui-error formControlName=\"newPasswordConfirm\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <tui-error class=\"lg:!hidden\" [formGroup]=\"form\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </div>\n <button\n *tuiLet=\"!!(loading$ | async) as loading\"\n tuiButton\n [showLoader]=\"loading\"\n type=\"submit\"\n [disabled]=\"form.invalid || loading\"\n icon=\"scIconSave\"\n class=\"self-center lg:mt-6 font-medium\"\n >\n Сохранить\n </button>\n</form>\n<tui-error class=\"!hidden lg:!block\" [formGroup]=\"form\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Inject, Optional, Output } from '@angular/core';\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\nimport { ScIPhoneOnDataApprove, ScISuggestionType, ScIUserOnDataUpdate, ScUser, ScUserService } from '@snabcentr/client-core';\nimport { SC_USER_INFO, SC_USER_PROVIDERS } from '../../providers';\nimport { Observable, Subject, catchError, filter, map, of, skip, startWith, switchMap, tap } from 'rxjs';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { tuiIsFalsy } from '@taiga-ui/cdk';\nimport { ApiErrorResponse } from '../../auth';\nimport { TuiDialogContext } from '@taiga-ui/core';\nimport { POLYMORPHEUS_CONTEXT } from '@tinkoff/ng-polymorpheus';\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 {\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 context Контекст диалогового окна, в котором открыт компонент.\n */\n public constructor(\n @Inject(SC_USER_INFO) public readonly user$: Observable<ScUser>,\n private readonly userService: ScUserService,\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","<form [formGroup]=\"form\" *ngIf=\"user$ | async as user\" (ngSubmit)=\"onSubmit.next()\" class=\"flex flex-col gap-4\">\n <label [tuiLabel]=\"user.isOrg ? 'Название организации или ИП' : 'Ф.И.О.'\">\n <tui-input formControlName=\"name\">\n {{ user.isOrg ? 'Название организации или ИП' : 'Ф.И.О.' }}\n <ng-container *ngIf=\"user.isOrg\">\n <sc-suggestion-field *tuiDataList [type]=\"suggestionType.organization\"></sc-suggestion-field>\n </ng-container>\n </tui-input>\n <tui-error formControlName=\"name\" [error]=\"[] | tuiFieldError | async\"></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 tuiLabel=\"Адрес электронной почты\" class=\"w-full\">\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 <sc-addresses-selection-field></sc-addresses-selection-field>\n <tui-checkbox-labeled formControlName=\"getNews\" class=\"w-full\"> Я хочу получать рассылку Снабцентр о скидках и новостях по электронной почте. </tui-checkbox-labeled>\n <div class=\"flex gap-4 justify-center\">\n <button tuiButton (click)=\"context ? context.$implicit.complete() : cancelButtonClick.emit()\" type=\"button\" icon=\"tuiIconXLarge\" appearance=\"secondary\">Отмена</button>\n <button tuiButton tuiMode=\"onLight\" [disabled]=\"form.invalid\" [showLoader]=\"!!(loading$ | async)\" type=\"submit\" icon=\"scIconSave\">Сохранить</button>\n </div>\n</form>\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { ChangeDetectionStrategy, Component, Inject, Optional } from '@angular/core';\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\nimport { ApiErrorResponse } from '../../auth/interfaces/ApiErrorResponse';\nimport { Subject, Observable, filter, map, switchMap, catchError, of, startWith, share, tap } from 'rxjs';\nimport { ScApprovedData, ScIPhoneOnDataApprove, ScUser, ScUserService, ScVerificationService } from '@snabcentr/client-core';\nimport { tuiIsFalsy } from '@taiga-ui/cdk';\nimport { TuiDialogContext } from '@taiga-ui/core';\nimport { POLYMORPHEUS_CONTEXT } from '@tinkoff/ng-polymorpheus';\nimport { SC_USER_INFO, SC_USER_PROVIDERS } from '../../providers/scUserProviders';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\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})\n@UntilDestroy({ checkProperties: true })\nexport class ScUserPhoneApproveDialogComponent {\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: 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 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 user$ Поток информации о текущем пользователе.\n * @param userService Сервис информации о пользователе.\n * @param context Контекст диалогового окна, в котором открыт компонент.\n */\n public constructor(\n private readonly verificationService: ScVerificationService,\n @Inject(SC_USER_INFO) 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(untilDestroyed(this)).subscribe((user) => {\n this.form.patchValue({\n phone: user.contacts.phone.value\n });\n });\n }\n}\n","<ng-container *ngIf=\"user$ | async as user\">\n <form [formGroup]=\"form\" *tuiLet=\"!!(loading$ | async) as loadingApproveCode\" (ngSubmit)=\"onSubmit.next()\" class=\"flex flex-col gap-3\">\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 *ngIf=\"user.contacts.phone.isApproved || haveCode\" class=\"flex gap-4 justify-center\">\n <button *ngIf=\"user.contacts.phone.isApproved && context\" tuiButton (click)=\"context.$implicit.complete()\" type=\"button\" appearance=\"secondary\">Закрыть</button>\n <button *ngIf=\"haveCode\" tuiButton type=\"submit\" [showLoader]=\"loadingApproveCode\" [disabled]=\"form.invalid || loadingApproveCode\" icon=\"scIconLogIn\">\n Подтвердить\n </button>\n </div>\n </form>\n</ng-container>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TuiCheckboxLabeledModule, TuiCheckboxModule, TuiFieldErrorPipeModule, TuiInputModule, TuiInputPasswordModule, TuiInputPhoneModule, TuiSelectModule } from '@taiga-ui/kit';\nimport { TuiButtonModule, TuiDataListModule, TuiErrorModule, TuiLabelModule, TuiLoaderModule, TuiModeModule, TuiTextfieldControllerModule } from '@taiga-ui/core';\nimport { TuiLetModule } from '@taiga-ui/cdk';\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 { ScVerificationModule } from '../verification';\nimport { ScFormFieldsModule } from '../form-fields/form-fields.module';\nimport { ScUserPhoneApproveDialogComponent } from './user-phone-approve-dialog/sc-user-phone-approve-dialog.component';\n\n/**\n * Модуль компонентов пользователя.\n */\n@NgModule({\n declarations: [ScResetUserPasswordComponent, ScUpdateUserInfoDialogComponent, ScUserPhoneApproveDialogComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n TuiFieldErrorPipeModule,\n TuiInputPasswordModule,\n TuiButtonModule,\n TuiErrorModule,\n TuiLabelModule,\n TuiTextfieldControllerModule,\n TuiLetModule,\n ScVerificationModule,\n ScFormFieldsModule,\n TuiLoaderModule,\n TuiInputModule,\n TuiInputPhoneModule,\n TuiCheckboxModule,\n TuiCheckboxLabeledModule,\n TuiDataListModule,\n TuiSelectModule,\n TuiModeModule\n ],\n exports: [ScResetUserPasswordComponent, ScUpdateUserInfoDialogComponent, ScUserPhoneApproveDialogComponent]\n})\nexport class ScUserModule {}\n","import { Component, ChangeDetectionStrategy, Inject, Output, EventEmitter } from '@angular/core';\nimport { ScICity, ScLocationsService, ScUser, ScUserService, ScVerificationService } from '@snabcentr/client-core';\nimport { Observable, Subject, filter, map, share, skip, startWith, switchMap, tap } from 'rxjs';\nimport { SC_USER_PROVIDERS, SC_USER_INFO } from '../../providers';\nimport { FormControl } from '@angular/forms';\nimport { ALWAYS_TRUE_HANDLER, tuiIsFalsy, tuiIsPresent, tuiPure } from '@taiga-ui/cdk';\nimport { tuiFadeIn } from '@taiga-ui/core';\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) => this.getNewsControl.patchValue(user.getNews, { emitEvent: false })),\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(ALWAYS_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 * Событие нажатия на кнопку редактирование контактного лица.\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 addContragentBankAccountsClick: EventEmitter<number> = new EventEmitter<number>();\n\n /**\n * Событие нажатия на кнопку добавления адреса доставки клиента.\n */\n @Output()\n public addDeliveryAddressClick: EventEmitter<void> = new EventEmitter<void>();\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 class=\"flex flex-col gap-4\">\n <sc-accordion [showArrow]=\"false\" [showAddButton]=\"false\" [open]=\"true\">\n Общие данные\n <ng-template scAccordionContent>\n <tui-loader *tuiLet=\"user$ | async as user\" [overlay]=\"true\" [showLoader]=\"user === null\">\n <div class=\"flex gap-2 pl-4\">\n <div *ngIf=\"user\" class=\"flex flex-col flex-grow gap-2\">\n <span class=\"font-medium\">{{ user.name }}</span>\n <div *ngIf=\"user.city && (getUserCity$(user.city) | async) as city\" class=\"flex items-center gap-1\">\n <tui-svg src=\"tuiIconMapPin\"></tui-svg>\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 tuiMode=\"onLight\"\n icon=\"tuiIconPhone\"\n iconAlign=\"left\"\n [pseudo]=\"true\"\n href=\"tel:{{ user.contacts.phone.value}}\"\n >{{ user.contacts.phone.value | tuiFormatPhone }}</a\n >\n <span *ngIf=\"!user.contacts.phone.isApproved\" class=\"text-tui-text-03\">\n (Телефон не подтвержден. <button tuiLink [pseudo]=\"true\" (click)=\"approvePhoneClick.emit()\">Подтвердить</button>)\n </span>\n </div>\n <div *tuiLet=\"!!(isSendApproveEmail$ | async) as isSendApproveEmail\" class=\"flex flex-wrap gap-x-2\">\n <a tuiLink tuiMode=\"onLight\" icon=\"tuiIconMail\" iconAlign=\"left\" [pseudo]=\"true\" href=\"mailto:{{ user.contacts.email.value }}\">\n {{ user.contacts.email.value }}\n </a>\n <span *ngIf=\"!isSendApproveEmail && !user.contacts.email.isApproved\" class=\"text-tui-text-03 inline-flex flex-wrap gap-1\">\n E-mail не подтвержден.\n <tui-loader [showLoader]=\"!!(approveEmailLoading$ | async)\" [overlay]=\"true\">\n <button tuiLink [pseudo]=\"true\" (click)=\"onSendApproveEmail.next(user.contacts.email.value)\">Подтвердить</button>\n </tui-loader>\n </span>\n <span *ngIf=\"isSendApproveEmail\" class=\"text-tui-success-fill\" @tuiFadeIn>\n Письмо для подтверждения успешно отправлено. Перейдите по ссылке в письме и обновите эту страницу.\n </span>\n </div>\n <tui-loader [showLoader]=\"!!(getNewsLoading$ | async)\" [overlay]=\"true\">\n <tui-checkbox-labeled size=\"m\" class=\"w-full\" [formControl]=\"getNewsControl\" [ngModel]=\"user.getNews\">\n Я хочу получать рассылку Снабцентр о скидках и новостях по электронной почте.\n </tui-checkbox-labeled>\n </tui-loader>\n </div>\n\n <button tuiIconButton size=\"m\" type=\"button\" icon=\"tuiIconEdit3Large\" tuiMode=\"onLight\" appearance=\"flat\" (click)=\"editProfileClick.emit()\"></button>\n </div>\n </tui-loader>\n </ng-template>\n </sc-accordion>\n <sc-contragents-accordion (addContragentClick)=\"addContragentClick.emit()\" (addBankAccountsClick)=\"addContragentBankAccountsClick.emit($event)\"></sc-contragents-accordion>\n <sc-delivery-address-accordion (addDeliveryAddressClick)=\"addDeliveryAddressClick.emit()\"></sc-delivery-address-accordion>\n <sc-accordion [showArrow]=\"false\" [showAddButton]=\"false\">\n Изменить пароль\n <ng-template scAccordionContent>\n <sc-reset-user-password></sc-reset-user-password>\n </ng-template>\n </sc-accordion>\n</div>\n","import { NgModule } from '@angular/core';\nimport { TuiButtonModule, TuiFormatPhonePipeModule, TuiLinkModule, TuiLoaderModule, TuiModeModule, TuiSvgModule } from '@taiga-ui/core';\nimport { CommonModule } from '@angular/common';\nimport { TuiLetModule } from '@taiga-ui/cdk';\nimport { ScProfileAccordionsContentComponent } from './sc-profile-accordions-content/sc-profile-accordions-content.component';\nimport { ScAccordionModule } from '../accordion';\nimport { ScContragentsModule } from '../contragents';\nimport { ScDeliveryAddressModule } from '../delivery-address';\nimport { ScUserModule } from '../user';\nimport { TuiCheckboxLabeledModule } from '@taiga-ui/kit';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\n/**\n * Модуль профиля пользователя.\n */\n@NgModule({\n declarations: [ScProfileAccordionsContentComponent],\n imports: [\n CommonModule,\n ScUserModule,\n ScAccordionModule,\n ScContragentsModule,\n ScDeliveryAddressModule,\n TuiLoaderModule,\n TuiLetModule,\n TuiLinkModule,\n TuiModeModule,\n TuiFormatPhonePipeModule,\n TuiCheckboxLabeledModule,\n TuiSvgModule,\n FormsModule,\n ReactiveFormsModule,\n TuiLoaderModule,\n TuiButtonModule\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 './files';\nexport * from './icons';\nexport * from './loader';\nexport * from './news';\nexport * from './order';\nexport * from './providers';\nexport * from './share-button';\nexport * from './user';\nexport * from './validators';\nexport * from './verification';\nexport * from './tokens';\nexport * from './profile';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i5","i6","i6.ScVerificationPhoneCheckFormComponent","i2","i3","i4.ScSignInFormByPhoneComponent","i5.ScSignInFormByEmailComponent","i1","i4","i2.ScPxConverter","i7","i1.UnitsHelper","i4.ScInputQuantityComponent","i5.ScPriceWarehouseStockComponent","i8","i3.ScFavoriteBtnComponent","i6.ScFavoriteBtnComponent","i7.ScInputQuantityComponent","i8.ScPriceWarehouseStockComponent","i2.ScAccordionComponent","i3.ScAccordionContentDirective","i3.ScAccordionComponent","i4.ScAccordionContentDirective","i7.ScContactsAccordionComponent","i7.ScContragentsAccordionItemComponent","i4.ScSuggestionFieldComponent","i4.ScNewContragentBankAccountsFormComponent","i6.ScContactsAccordionComponent","i7.ScDeliveryAddressAccordionItemComponent","i2.TreeIconService","i1.TreeIconService","i6.TreeDirective","i7.TreeTopDirective","i1.ScShareButtonComponent","i4.ScPriceWarehouseStockComponent","i7.ScAddressesSelectionFieldComponent","i8.ScSuggestionFieldComponent","i9","i3.ScResetUserPasswordComponent","i4.ScAccordionComponent","i5.ScAccordionContentDirective","i6.ScContragentsAccordionComponent","i7.ScDeliveryAddressAccordionComponent","i10","i11"],"mappings":"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"}