@snabcentr/client-ui 3.7.0 → 3.8.2
Sign up to get free protection for your applications and to get access to all the features.
- package/contacts/sc-contacts.module.d.ts +4 -4
- package/directives/index.d.ts +1 -2
- package/directives/links/index.d.ts +4 -0
- package/directives/links/sc-email-link.directive.d.ts +25 -0
- package/directives/links/sc-link-location.d.ts +5 -0
- package/directives/links/sc-links.d.ts +7 -0
- package/directives/{tel-link → links}/sc-tel-link.directive.d.ts +15 -2
- package/error-handler/consts/error-change-handler.providers.d.ts +5 -0
- package/error-handler/error-block-status/error-block-status.component.d.ts +37 -0
- package/error-handler/index.d.ts +4 -0
- package/error-handler/interfaces/i-block-error.d.ts +17 -0
- package/error-handler/sc-error-handler.component.d.ts +40 -0
- package/esm2022/contacts/contacts-accordion/sc-contacts-accordion.component.mjs +5 -5
- package/esm2022/contacts/sc-contacts.module.mjs +7 -11
- package/esm2022/directives/index.mjs +2 -3
- package/esm2022/directives/links/index.mjs +5 -0
- package/esm2022/directives/links/sc-email-link.directive.mjs +49 -0
- package/esm2022/directives/links/sc-link-location.mjs +2 -0
- package/esm2022/directives/links/sc-links.mjs +8 -0
- package/esm2022/directives/links/sc-tel-link.directive.mjs +79 -0
- package/esm2022/error-handler/consts/error-change-handler.providers.mjs +8 -0
- package/esm2022/error-handler/error-block-status/error-block-status.component.mjs +76 -0
- package/esm2022/error-handler/index.mjs +5 -0
- package/esm2022/error-handler/interfaces/i-block-error.mjs +2 -0
- package/esm2022/error-handler/sc-error-handler.component.mjs +58 -0
- package/esm2022/pipes/sc-formatted-phone.mjs +2 -2
- package/esm2022/profile/sc-profile-accordions-content/sc-profile-accordions-content.component.mjs +9 -8
- package/esm2022/profile/sc-profile.module.mjs +7 -8
- package/esm2022/public-api.mjs +2 -1
- package/esm2022/user/sc-user.module.mjs +7 -7
- package/esm2022/user/user-managers/sc-user-managers.component.mjs +6 -5
- package/fesm2022/snabcentr-client-ui.mjs +648 -475
- package/fesm2022/snabcentr-client-ui.mjs.map +1 -1
- package/package.json +1 -1
- package/profile/sc-profile.module.d.ts +5 -3
- package/public-api.d.ts +1 -0
- package/release_notes.tmp +2 -6
- package/styles/taiga/snabcentr-tailwind-preset.js +10 -0
- package/styles/tailwind/tailwind.scss +62 -0
- package/user/sc-user.module.d.ts +4 -2
- package/directives/tel-link/sc-tel-link.module.d.ts +0 -11
- package/esm2022/directives/tel-link/sc-tel-link.directive.mjs +0 -58
- package/esm2022/directives/tel-link/sc-tel-link.module.mjs +0 -20
@@ -12,14 +12,14 @@ import * as i10 from "@maskito/angular";
|
|
12
12
|
import * as i11 from "@taiga-ui/kit";
|
13
13
|
import * as i12 from "@taiga-ui/legacy";
|
14
14
|
import * as i13 from "@taiga-ui/core/components/data-list";
|
15
|
-
import * as i14 from "../directives/
|
16
|
-
import * as i15 from "../
|
17
|
-
import * as i16 from "../
|
15
|
+
import * as i14 from "../directives/links/sc-tel-link.directive";
|
16
|
+
import * as i15 from "../directives/links/sc-email-link.directive";
|
17
|
+
import * as i16 from "../pipes/sc-formatted-phone";
|
18
18
|
/**
|
19
19
|
* Модуль контактных лиц.
|
20
20
|
*/
|
21
21
|
export declare class ScContactsModule {
|
22
22
|
static ɵfac: i0.ɵɵFactoryDeclaration<ScContactsModule, never>;
|
23
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<ScContactsModule, [typeof i1.ScContactsAccordionComponent, typeof i2.ScNewContactFormComponent, typeof i3.ScAddContactDialogComponent], [typeof i4.CommonModule, typeof i5.FormsModule, typeof i5.ReactiveFormsModule, typeof i6.ScAccordionModule, typeof i7.TuiButton, typeof i7.TuiLoader, typeof i8.TuiLet, typeof i7.TuiNotification, typeof i7.TuiLink, typeof i9.ScFormFieldsModule, typeof i10.MaskitoDirective, typeof i11.TuiFieldErrorPipe, typeof i12.TuiSelectModule, typeof i7.TuiDataListComponent, typeof i7.TuiDataListDirective, typeof i7.TuiOption, typeof i7.TuiOptGroup, typeof i11.TuiDataListWrapperComponent, typeof i11.TuiDataListGroupWrapperComponent, typeof i13.TuiDataListDirective, typeof i7.TuiLabel, typeof i12.TuiInputModule, typeof i12.TuiInputPhoneModule, typeof i7.TuiError, typeof i14.
|
23
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<ScContactsModule, [typeof i1.ScContactsAccordionComponent, typeof i2.ScNewContactFormComponent, typeof i3.ScAddContactDialogComponent], [typeof i4.CommonModule, typeof i5.FormsModule, typeof i5.ReactiveFormsModule, typeof i6.ScAccordionModule, typeof i7.TuiButton, typeof i7.TuiLoader, typeof i8.TuiLet, typeof i7.TuiNotification, typeof i7.TuiLink, typeof i9.ScFormFieldsModule, typeof i10.MaskitoDirective, typeof i11.TuiFieldErrorPipe, typeof i12.TuiSelectModule, typeof i7.TuiDataListComponent, typeof i7.TuiDataListDirective, typeof i7.TuiOption, typeof i7.TuiOptGroup, typeof i11.TuiDataListWrapperComponent, typeof i11.TuiDataListGroupWrapperComponent, typeof i13.TuiDataListDirective, typeof i7.TuiLabel, typeof i12.TuiInputModule, typeof i12.TuiInputPhoneModule, typeof i7.TuiError, typeof i14.ScTelLinkDirective, typeof i15.ScEmailLinkDirective, typeof i16.ScFormatePhonePipe, typeof i11.TuiButtonLoading], [typeof i1.ScContactsAccordionComponent, typeof i2.ScNewContactFormComponent, typeof i3.ScAddContactDialogComponent]>;
|
24
24
|
static ɵinj: i0.ɵɵInjectorDeclaration<ScContactsModule>;
|
25
25
|
}
|
package/directives/index.d.ts
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
export * from './next-input-focus/sc-next-input-focus.directive';
|
2
2
|
export * from './next-input-focus/sc-next-input-focus.module';
|
3
3
|
export * from './abstract-price-card/abstract-sc-price-card.directive';
|
4
|
-
export * from './tel-link/sc-tel-link.directive';
|
5
|
-
export * from './tel-link/sc-tel-link.module';
|
6
4
|
export * from './terminal-link/sc-terminal-link.directive';
|
5
|
+
export * from './links';
|
@@ -0,0 +1,25 @@
|
|
1
|
+
import { ScLinkLocation } from './sc-link-location';
|
2
|
+
import * as i0 from "@angular/core";
|
3
|
+
/**
|
4
|
+
* Директива, которая управляет свойствами ссылки адреса электронной почты.
|
5
|
+
*/
|
6
|
+
export declare class ScEmailLinkDirective {
|
7
|
+
/**
|
8
|
+
* Ссылка на HTML элемент тега `<a>`.
|
9
|
+
*/
|
10
|
+
private elementReference;
|
11
|
+
/**
|
12
|
+
* Условное название блока где расположена ссылка.
|
13
|
+
*/
|
14
|
+
linkLocation: ScLinkLocation;
|
15
|
+
/**
|
16
|
+
* Сервис для сбора метрик о действиях пользователей.
|
17
|
+
*/
|
18
|
+
private readonly userMetrikaService;
|
19
|
+
/**
|
20
|
+
* Обработчик клика по ссылке.
|
21
|
+
*/
|
22
|
+
private click;
|
23
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ScEmailLinkDirective, never>;
|
24
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<ScEmailLinkDirective, "a[scEmailLink]", never, { "linkLocation": { "alias": "linkLocation"; "required": true; }; }, {}, never, never, true, never>;
|
25
|
+
}
|
@@ -0,0 +1,5 @@
|
|
1
|
+
import { TuiLooseUnion } from '@taiga-ui/cdk';
|
2
|
+
/**
|
3
|
+
* Тип данных условного названия блока где расположена ссылка.
|
4
|
+
*/
|
5
|
+
export type ScLinkLocation = TuiLooseUnion<'contact' | 'questions-and-answers' | 'profile' | 'user-managers' | 'manager-card' | 'retails-map' | 'landing' | 'footer' | 'order' | 'vacancies' | 'header'>;
|
@@ -0,0 +1,7 @@
|
|
1
|
+
import { ScFormatePhonePipe } from '../../pipes/sc-formatted-phone';
|
2
|
+
import { ScEmailLinkDirective } from './sc-email-link.directive';
|
3
|
+
import { ScTelLinkDirective } from './sc-tel-link.directive';
|
4
|
+
/**
|
5
|
+
* Список директив ссылок.
|
6
|
+
*/
|
7
|
+
export declare const ScLinks: readonly [typeof ScTelLinkDirective, typeof ScEmailLinkDirective, typeof ScFormatePhonePipe];
|
@@ -1,4 +1,5 @@
|
|
1
1
|
import { OnChanges, SimpleChanges } from '@angular/core';
|
2
|
+
import { ScLinkLocation } from './sc-link-location';
|
2
3
|
import * as i0 from "@angular/core";
|
3
4
|
/**
|
4
5
|
* Директива, которая управляет свойствами ссылки номера телефона для валидации значения номера телефона.
|
@@ -15,13 +16,25 @@ export declare class ScTelLinkDirective implements OnChanges {
|
|
15
16
|
/**
|
16
17
|
* Номер телефона, который будет проверен на валидность.
|
17
18
|
*/
|
18
|
-
|
19
|
+
tel: string;
|
20
|
+
/**
|
21
|
+
* Условное название блока где расположена ссылка.
|
22
|
+
*/
|
23
|
+
linkLocation: ScLinkLocation;
|
24
|
+
/**
|
25
|
+
* Сервис для сбора метрик о действиях пользователей.
|
26
|
+
*/
|
27
|
+
private readonly userMetrikaService;
|
19
28
|
/** @inheritDoc */
|
20
29
|
ngOnChanges(changes: SimpleChanges): void;
|
30
|
+
/**
|
31
|
+
* Обработчик клика по ссылке.
|
32
|
+
*/
|
33
|
+
private click;
|
21
34
|
/**
|
22
35
|
* Обновляет состояние ссылки на основе валидности номера телефона.
|
23
36
|
*/
|
24
37
|
private updateLinkState;
|
25
38
|
static ɵfac: i0.ɵɵFactoryDeclaration<ScTelLinkDirective, never>;
|
26
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<ScTelLinkDirective, "[scTelLink]", never, { "
|
39
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<ScTelLinkDirective, "a[scTelLink]", never, { "tel": { "alias": "scTelLink"; "required": true; }; "linkLocation": { "alias": "linkLocation"; "required": true; }; }, {}, never, never, true, never>;
|
27
40
|
}
|
@@ -0,0 +1,37 @@
|
|
1
|
+
import { Signal } from '@angular/core';
|
2
|
+
import { IBlockError } from '../interfaces/i-block-error';
|
3
|
+
import { ScErrorHandlerComponent } from '../sc-error-handler.component';
|
4
|
+
import * as i0 from "@angular/core";
|
5
|
+
/**
|
6
|
+
* Компонент представления данных об ошибке.
|
7
|
+
*/
|
8
|
+
export declare class ScErrorBlockStatusComponent {
|
9
|
+
/**
|
10
|
+
* Компонент управляющий кодом ошибки отображаемой на странице.
|
11
|
+
*/
|
12
|
+
protected readonly errorHandlerComponent: ScErrorHandlerComponent;
|
13
|
+
/**
|
14
|
+
* Сигнал кода ошибки.
|
15
|
+
*/
|
16
|
+
protected readonly code: Signal<number | null>;
|
17
|
+
/**
|
18
|
+
* Данные об ошибке.
|
19
|
+
*/
|
20
|
+
protected readonly error: Signal<IBlockError>;
|
21
|
+
/**
|
22
|
+
* Создает сигнал изменения строкового представления об ошибке.
|
23
|
+
*/
|
24
|
+
protected readonly pageErrorChange: import("@angular/core").OutputEmitterRef<IBlockError>;
|
25
|
+
/**
|
26
|
+
* Инициализирует экземпляр класса {@link ErrorPageComponent}.
|
27
|
+
*/
|
28
|
+
constructor();
|
29
|
+
/**
|
30
|
+
* Возвращает описание ошибки.
|
31
|
+
*
|
32
|
+
* @param code Код ошибки.
|
33
|
+
*/
|
34
|
+
protected getErrorMessage(code: number | null): IBlockError;
|
35
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ScErrorBlockStatusComponent, never>;
|
36
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ScErrorBlockStatusComponent, "sc-error-block-status", never, {}, { "pageErrorChange": "pageErrorChange"; }, never, never, true, never>;
|
37
|
+
}
|
@@ -0,0 +1,17 @@
|
|
1
|
+
/**
|
2
|
+
* Модель данных ошибки для блока состояния ошибки.
|
3
|
+
*/
|
4
|
+
export interface IBlockError {
|
5
|
+
/**
|
6
|
+
* Код ошибки.
|
7
|
+
*/
|
8
|
+
code: number;
|
9
|
+
/**
|
10
|
+
* Краткое сообщение об ошибке, соответствующее коду ошибки.
|
11
|
+
*/
|
12
|
+
message: string;
|
13
|
+
/**
|
14
|
+
* Развёрнутое описание ошибки.
|
15
|
+
*/
|
16
|
+
description: string;
|
17
|
+
}
|
@@ -0,0 +1,40 @@
|
|
1
|
+
import { Signal } from '@angular/core';
|
2
|
+
import { IBlockError } from './interfaces/i-block-error';
|
3
|
+
import * as i0 from "@angular/core";
|
4
|
+
/**
|
5
|
+
* Компонент для управления кодом ошибки отображаемой на странице.
|
6
|
+
*/
|
7
|
+
export declare class ScErrorHandlerComponent {
|
8
|
+
/**
|
9
|
+
* Сигнал для хранения кода ошибки.
|
10
|
+
*/
|
11
|
+
protected readonly code: import("@angular/core").WritableSignal<number | null>;
|
12
|
+
/**
|
13
|
+
* Сигнал дефолтного передаваемого из вне значения ошибки.
|
14
|
+
*/
|
15
|
+
defaultCode: import("@angular/core").InputSignal<number | null>;
|
16
|
+
/**
|
17
|
+
* Сервис маршрутизации.
|
18
|
+
*/
|
19
|
+
private readonly router;
|
20
|
+
/**
|
21
|
+
* Обработчик изменения ошибки.
|
22
|
+
*/
|
23
|
+
protected readonly errorChangeHandler: (error: IBlockError) => void;
|
24
|
+
/**
|
25
|
+
* Инициирует экземпляр класса {@link ErrorHandlerComponent}.
|
26
|
+
*/
|
27
|
+
constructor();
|
28
|
+
/**
|
29
|
+
* Возвращает текущий сигнал с кодом ошибки.
|
30
|
+
*/
|
31
|
+
getErrorCode(): Signal<number | null>;
|
32
|
+
/**
|
33
|
+
* Устанавливает новый код ошибки.
|
34
|
+
*
|
35
|
+
* @param code Новый код ошибки.
|
36
|
+
*/
|
37
|
+
setErrorCode(code: number): void;
|
38
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ScErrorHandlerComponent, never>;
|
39
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ScErrorHandlerComponent, "sc-error-handler", never, { "defaultCode": { "alias": "code"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
40
|
+
}
|
@@ -5,8 +5,8 @@ import * as i2 from "../../accordion/sc-accordion.component";
|
|
5
5
|
import * as i3 from "../../accordion/sc-accordion-content.directive";
|
6
6
|
import * as i4 from "@taiga-ui/core";
|
7
7
|
import * as i5 from "@taiga-ui/cdk";
|
8
|
-
import * as i6 from "../../directives/
|
9
|
-
import * as i7 from "../../directives/
|
8
|
+
import * as i6 from "../../directives/links/sc-tel-link.directive";
|
9
|
+
import * as i7 from "../../directives/links/sc-email-link.directive";
|
10
10
|
import * as i8 from "../../pipes/sc-formatted-phone";
|
11
11
|
/**
|
12
12
|
* Компонент контактного лица в списке.
|
@@ -23,11 +23,11 @@ export class ScContactsAccordionComponent {
|
|
23
23
|
this.deleteButtonClick = new EventEmitter();
|
24
24
|
}
|
25
25
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ScContactsAccordionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
26
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: ScContactsAccordionComponent, selector: "sc-contacts-accordion", inputs: { contacts$: "contacts$" }, outputs: { addContactClick: "addContactClick", deleteButtonClick: "deleteButtonClick" }, ngImport: i0, template: "<sc-accordion (addButtonClick)=\"addContactClick.emit()\">\n \u041A\u043E\u043D\u0442\u0430\u043A\u0442\u044B\n <ng-template scAccordionContent>\n <tui-loader\n *tuiLet=\"contacts$ | async as contacts\"\n [overlay]=\"true\"\n [showLoader]=\"contacts === null\"\n >\n <div class=\"flex flex-col gap-2\">\n <ng-container *ngIf=\"!contacts || contacts.length; else contactsNotExist\">\n <div\n *ngFor=\"let contact of contacts\"\n class=\"flex gap-2 border-b border-tui-base-03\"\n >\n <div class=\"flex grow flex-col gap-2\">\n {{ contact.name }}\n <a\n *ngIf=\"contact.phone\"\n tuiLink\n [scTelLink]=\"contact.phone\"\n iconStart=\"@tui.phone\"\n [pseudo]=\"true\"\n href=\"tel:{{ contact.phone | scFormatePhone }}\"\n >\n {{ contact.phone | scFormatePhone }}\n </a>\n <a\n *ngIf=\"contact.email\"\n tuiLink\n iconStart=\"@tui.mail\"\n [pseudo]=\"true\"\n href=\"mailto:{{ contact.email }}\"\n >\n {{ contact.email }}\n </a>\n </div>\n <!-- \u0424\u0443\u043D\u043A\u0446\u0438\u043E\u043D\u0430\u043B \u0443\u0434\u0430\u043B\u0435\u043D\u0438\u044F \u0432\u0440\u0435\u043C\u0435\u043D\u043D\u043E \u043D\u0435 \u0434\u043E\u0441\u0442\u0443\u043F\u0435\u043D \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044E. -->\n <!-- <div class=\"flex flex-col md:flex-row gap-1\">\n <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n icon=\"@tui.trash-2\"\n appearance=\"flat\"\n (click)=\"$event.stopPropagation(); deleteButtonClick.emit(contact)\"\n ></button>\n </div> -->\n </div>\n </ng-container>\n\n <ng-template #contactsNotExist>\n <tui-notification size=\"l\">\n <div>\n <div class=\"flex flex-wrap gap-2 font-medium\">\u041A\u043E\u043D\u0442\u0430\u043A\u0442\u044B \u043D\u0435 \u0443\u043A\u0430\u0437\u0430\u043D\u044B.</div>\n </div>\n </tui-notification>\n </ng-template>\n </div>\n </tui-loader>\n </ng-template>\n</sc-accordion>\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.ScAccordionComponent, selector: "sc-accordion", inputs: ["showAddButton", "showDeleteButton", "showArrow", "open", "size"], outputs: ["addButtonClick", "deleteButtonClick"] }, { kind: "directive", type: i3.ScAccordionContentDirective, selector: "ng-template[scAccordionContent]" }, { kind: "component", type: i4.TuiLoader, selector: "tui-loader", inputs: ["size", "inheritColor", "overlay", "textContent", "showLoader"] }, { kind: "directive", type: i5.TuiLet, selector: "[tuiLet]", inputs: ["tuiLet"] }, { kind: "directive", type: i4.TuiNotification, selector: "tui-notification,a[tuiNotification],button[tuiNotification]", inputs: ["appearance", "icon", "size"] }, { kind: "directive", type: i4.TuiLink, selector: "a[tuiLink], button[tuiLink]", inputs: ["pseudo"] }, { kind: "directive", type: i6.
|
26
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: ScContactsAccordionComponent, selector: "sc-contacts-accordion", inputs: { contacts$: "contacts$" }, outputs: { addContactClick: "addContactClick", deleteButtonClick: "deleteButtonClick" }, ngImport: i0, template: "<sc-accordion (addButtonClick)=\"addContactClick.emit()\">\n \u041A\u043E\u043D\u0442\u0430\u043A\u0442\u044B\n <ng-template scAccordionContent>\n <tui-loader\n *tuiLet=\"contacts$ | async as contacts\"\n [overlay]=\"true\"\n [showLoader]=\"contacts === null\"\n >\n <div class=\"flex flex-col gap-2\">\n <ng-container *ngIf=\"!contacts || contacts.length; else contactsNotExist\">\n <div\n *ngFor=\"let contact of contacts\"\n class=\"flex gap-2 border-b border-tui-base-03\"\n >\n <div class=\"flex grow flex-col gap-2\">\n {{ contact.name }}\n <a\n *ngIf=\"contact.phone\"\n tuiLink\n [scTelLink]=\"contact.phone\"\n linkLocation=\"contact\"\n iconStart=\"@tui.phone\"\n [pseudo]=\"true\"\n href=\"tel:{{ contact.phone | scFormatePhone }}\"\n >\n {{ contact.phone | scFormatePhone }}\n </a>\n <a\n *ngIf=\"contact.email\"\n tuiLink\n scEmailLink\n linkLocation=\"contact\"\n iconStart=\"@tui.mail\"\n [pseudo]=\"true\"\n href=\"mailto:{{ contact.email }}\"\n >\n {{ contact.email }}\n </a>\n </div>\n <!-- \u0424\u0443\u043D\u043A\u0446\u0438\u043E\u043D\u0430\u043B \u0443\u0434\u0430\u043B\u0435\u043D\u0438\u044F \u0432\u0440\u0435\u043C\u0435\u043D\u043D\u043E \u043D\u0435 \u0434\u043E\u0441\u0442\u0443\u043F\u0435\u043D \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044E. -->\n <!-- <div class=\"flex flex-col md:flex-row gap-1\">\n <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n icon=\"@tui.trash-2\"\n appearance=\"flat\"\n (click)=\"$event.stopPropagation(); deleteButtonClick.emit(contact)\"\n ></button>\n </div> -->\n </div>\n </ng-container>\n\n <ng-template #contactsNotExist>\n <tui-notification size=\"l\">\n <div>\n <div class=\"flex flex-wrap gap-2 font-medium\">\u041A\u043E\u043D\u0442\u0430\u043A\u0442\u044B \u043D\u0435 \u0443\u043A\u0430\u0437\u0430\u043D\u044B.</div>\n </div>\n </tui-notification>\n </ng-template>\n </div>\n </tui-loader>\n </ng-template>\n</sc-accordion>\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.ScAccordionComponent, selector: "sc-accordion", inputs: ["showAddButton", "showDeleteButton", "showArrow", "open", "size"], outputs: ["addButtonClick", "deleteButtonClick"] }, { kind: "directive", type: i3.ScAccordionContentDirective, selector: "ng-template[scAccordionContent]" }, { kind: "component", type: i4.TuiLoader, selector: "tui-loader", inputs: ["size", "inheritColor", "overlay", "textContent", "showLoader"] }, { kind: "directive", type: i5.TuiLet, selector: "[tuiLet]", inputs: ["tuiLet"] }, { kind: "directive", type: i4.TuiNotification, selector: "tui-notification,a[tuiNotification],button[tuiNotification]", inputs: ["appearance", "icon", "size"] }, { kind: "directive", type: i4.TuiLink, selector: "a[tuiLink], button[tuiLink]", inputs: ["pseudo"] }, { kind: "directive", type: i6.ScTelLinkDirective, selector: "a[scTelLink]", inputs: ["scTelLink", "linkLocation"] }, { kind: "directive", type: i7.ScEmailLinkDirective, selector: "a[scEmailLink]", inputs: ["linkLocation"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i8.ScFormatePhonePipe, name: "scFormatePhone" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
27
27
|
}
|
28
28
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ScContactsAccordionComponent, decorators: [{
|
29
29
|
type: Component,
|
30
|
-
args: [{ selector: 'sc-contacts-accordion', changeDetection: ChangeDetectionStrategy.OnPush, template: "<sc-accordion (addButtonClick)=\"addContactClick.emit()\">\n \u041A\u043E\u043D\u0442\u0430\u043A\u0442\u044B\n <ng-template scAccordionContent>\n <tui-loader\n *tuiLet=\"contacts$ | async as contacts\"\n [overlay]=\"true\"\n [showLoader]=\"contacts === null\"\n >\n <div class=\"flex flex-col gap-2\">\n <ng-container *ngIf=\"!contacts || contacts.length; else contactsNotExist\">\n <div\n *ngFor=\"let contact of contacts\"\n class=\"flex gap-2 border-b border-tui-base-03\"\n >\n <div class=\"flex grow flex-col gap-2\">\n {{ contact.name }}\n <a\n *ngIf=\"contact.phone\"\n tuiLink\n [scTelLink]=\"contact.phone\"\n iconStart=\"@tui.phone\"\n [pseudo]=\"true\"\n href=\"tel:{{ contact.phone | scFormatePhone }}\"\n >\n {{ contact.phone | scFormatePhone }}\n </a>\n <a\n *ngIf=\"contact.email\"\n tuiLink\n iconStart=\"@tui.mail\"\n [pseudo]=\"true\"\n href=\"mailto:{{ contact.email }}\"\n >\n {{ contact.email }}\n </a>\n </div>\n <!-- \u0424\u0443\u043D\u043A\u0446\u0438\u043E\u043D\u0430\u043B \u0443\u0434\u0430\u043B\u0435\u043D\u0438\u044F \u0432\u0440\u0435\u043C\u0435\u043D\u043D\u043E \u043D\u0435 \u0434\u043E\u0441\u0442\u0443\u043F\u0435\u043D \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044E. -->\n <!-- <div class=\"flex flex-col md:flex-row gap-1\">\n <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n icon=\"@tui.trash-2\"\n appearance=\"flat\"\n (click)=\"$event.stopPropagation(); deleteButtonClick.emit(contact)\"\n ></button>\n </div> -->\n </div>\n </ng-container>\n\n <ng-template #contactsNotExist>\n <tui-notification size=\"l\">\n <div>\n <div class=\"flex flex-wrap gap-2 font-medium\">\u041A\u043E\u043D\u0442\u0430\u043A\u0442\u044B \u043D\u0435 \u0443\u043A\u0430\u0437\u0430\u043D\u044B.</div>\n </div>\n </tui-notification>\n </ng-template>\n </div>\n </tui-loader>\n </ng-template>\n</sc-accordion>\n" }]
|
30
|
+
args: [{ selector: 'sc-contacts-accordion', changeDetection: ChangeDetectionStrategy.OnPush, template: "<sc-accordion (addButtonClick)=\"addContactClick.emit()\">\n \u041A\u043E\u043D\u0442\u0430\u043A\u0442\u044B\n <ng-template scAccordionContent>\n <tui-loader\n *tuiLet=\"contacts$ | async as contacts\"\n [overlay]=\"true\"\n [showLoader]=\"contacts === null\"\n >\n <div class=\"flex flex-col gap-2\">\n <ng-container *ngIf=\"!contacts || contacts.length; else contactsNotExist\">\n <div\n *ngFor=\"let contact of contacts\"\n class=\"flex gap-2 border-b border-tui-base-03\"\n >\n <div class=\"flex grow flex-col gap-2\">\n {{ contact.name }}\n <a\n *ngIf=\"contact.phone\"\n tuiLink\n [scTelLink]=\"contact.phone\"\n linkLocation=\"contact\"\n iconStart=\"@tui.phone\"\n [pseudo]=\"true\"\n href=\"tel:{{ contact.phone | scFormatePhone }}\"\n >\n {{ contact.phone | scFormatePhone }}\n </a>\n <a\n *ngIf=\"contact.email\"\n tuiLink\n scEmailLink\n linkLocation=\"contact\"\n iconStart=\"@tui.mail\"\n [pseudo]=\"true\"\n href=\"mailto:{{ contact.email }}\"\n >\n {{ contact.email }}\n </a>\n </div>\n <!-- \u0424\u0443\u043D\u043A\u0446\u0438\u043E\u043D\u0430\u043B \u0443\u0434\u0430\u043B\u0435\u043D\u0438\u044F \u0432\u0440\u0435\u043C\u0435\u043D\u043D\u043E \u043D\u0435 \u0434\u043E\u0441\u0442\u0443\u043F\u0435\u043D \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044E. -->\n <!-- <div class=\"flex flex-col md:flex-row gap-1\">\n <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n icon=\"@tui.trash-2\"\n appearance=\"flat\"\n (click)=\"$event.stopPropagation(); deleteButtonClick.emit(contact)\"\n ></button>\n </div> -->\n </div>\n </ng-container>\n\n <ng-template #contactsNotExist>\n <tui-notification size=\"l\">\n <div>\n <div class=\"flex flex-wrap gap-2 font-medium\">\u041A\u043E\u043D\u0442\u0430\u043A\u0442\u044B \u043D\u0435 \u0443\u043A\u0430\u0437\u0430\u043D\u044B.</div>\n </div>\n </tui-notification>\n </ng-template>\n </div>\n </tui-loader>\n </ng-template>\n</sc-accordion>\n" }]
|
31
31
|
}], propDecorators: { contacts$: [{
|
32
32
|
type: Input
|
33
33
|
}], addContactClick: [{
|
@@ -35,4 +35,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImpo
|
|
35
35
|
}], deleteButtonClick: [{
|
36
36
|
type: Output
|
37
37
|
}] } });
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY29udGFjdHMtYWNjb3JkaW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9jb250YWN0cy9jb250YWN0cy1hY2NvcmRpb24vc2MtY29udGFjdHMtYWNjb3JkaW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9jb250YWN0cy9jb250YWN0cy1hY2NvcmRpb24vc2MtY29udGFjdHMtYWNjb3JkaW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7QUFJaEc7O0dBRUc7QUFNSCxNQUFNLE9BQU8sNEJBQTRCO0lBTHpDO1FBWUk7O1dBRUc7UUFFSSxvQkFBZSxHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBRXRFOztXQUVHO1FBRUksc0JBQWlCLEdBQTZCLElBQUksWUFBWSxFQUFjLENBQUM7S0FDdkY7K0dBbEJZLDRCQUE0QjttR0FBNUIsNEJBQTRCLDBMQ1p6Qywwd0dBZ0VBOzs0RkRwRGEsNEJBQTRCO2tCQUx4QyxTQUFTOytCQUNJLHVCQUF1QixtQkFFaEIsdUJBQXVCLENBQUMsTUFBTTs4QkFPeEMsU0FBUztzQkFEZixLQUFLO2dCQU9DLGVBQWU7c0JBRHJCLE1BQU07Z0JBT0EsaUJBQWlCO3NCQUR2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTY0lDb250YWN0IH0gZnJvbSAnQHNuYWJjZW50ci9jbGllbnQtY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICog0JrQvtC80L/QvtC90LXQvdGCINC60L7QvdGC0LDQutGC0L3QvtCz0L4g0LvQuNGG0LAg0LIg0YHQv9C40YHQutC1LlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3NjLWNvbnRhY3RzLWFjY29yZGlvbicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NjLWNvbnRhY3RzLWFjY29yZGlvbi5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNjQ29udGFjdHNBY2NvcmRpb25Db21wb25lbnQge1xuICAgIC8qKlxuICAgICAqINCa0L7QvdGC0LDQutGC0L3Ri9C1INC70LjRhtCwLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGNvbnRhY3RzJDogT2JzZXJ2YWJsZTxTY0lDb250YWN0W10gfCBudWxsPjtcblxuICAgIC8qKlxuICAgICAqINCh0L7QsdGL0YLQuNC1INC90LDQttCw0YLQuNGPINC90LAg0LrQvdC+0L/QutGDINC00L7QsdCw0LLQu9C10L3QuNGPINC60L7QvdGC0LDQutGC0L3QvtCz0L4g0LvQuNGG0LAuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGFkZENvbnRhY3RDbGljazogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqXG4gICAgICog0KHQvtCx0YvRgtC40LUg0L3QsNC20LDRgtC40Y8g0L3QsCDQutC90L7Qv9C60YMg0YPQtNCw0LvQtdC90LjRjyDQutC+0L3RgtCw0LrRgtC90L7Qs9C+INC70LjRhtCwLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBkZWxldGVCdXR0b25DbGljazogRXZlbnRFbWl0dGVyPFNjSUNvbnRhY3Q+ID0gbmV3IEV2ZW50RW1pdHRlcjxTY0lDb250YWN0PigpO1xufVxuIiwiPHNjLWFjY29yZGlvbiAoYWRkQnV0dG9uQ2xpY2spPVwiYWRkQ29udGFjdENsaWNrLmVtaXQoKVwiPlxuICAgINCa0L7QvdGC0LDQutGC0YtcbiAgICA8bmctdGVtcGxhdGUgc2NBY2NvcmRpb25Db250ZW50PlxuICAgICAgICA8dHVpLWxvYWRlclxuICAgICAgICAgICAgKnR1aUxldD1cImNvbnRhY3RzJCB8IGFzeW5jIGFzIGNvbnRhY3RzXCJcbiAgICAgICAgICAgIFtvdmVybGF5XT1cInRydWVcIlxuICAgICAgICAgICAgW3Nob3dMb2FkZXJdPVwiY29udGFjdHMgPT09IG51bGxcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtMlwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY29udGFjdHMgfHwgY29udGFjdHMubGVuZ3RoOyBlbHNlIGNvbnRhY3RzTm90RXhpc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbnRhY3Qgb2YgY29udGFjdHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGdhcC0yIGJvcmRlci1iIGJvcmRlci10dWktYmFzZS0wM1wiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdyb3cgZmxleC1jb2wgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb250YWN0Lm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbnRhY3QucGhvbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0dWlMaW5rXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzY1RlbExpbmtdPVwiY29udGFjdC5waG9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtMb2NhdGlvbj1cImNvbnRhY3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uU3RhcnQ9XCJAdHVpLnBob25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BzZXVkb109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj1cInRlbDp7eyBjb250YWN0LnBob25lIHwgc2NGb3JtYXRlUGhvbmUgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY29udGFjdC5waG9uZSB8IHNjRm9ybWF0ZVBob25lIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29udGFjdC5lbWFpbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR1aUxpbmtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NFbWFpbExpbmtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua0xvY2F0aW9uPVwiY29udGFjdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb25TdGFydD1cIkB0dWkubWFpbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwc2V1ZG9dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9XCJtYWlsdG86e3sgY29udGFjdC5lbWFpbCB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb250YWN0LmVtYWlsIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tINCk0YPQvdC60YbQuNC+0L3QsNC7INGD0LTQsNC70LXQvdC40Y8g0LLRgNC10LzQtdC90L3QviDQvdC1INC00L7RgdGC0YPQv9C10L0g0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GOLiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgbWQ6ZmxleC1yb3cgZ2FwLTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR1aUljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cIm1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cIkB0dWkudHJhc2gtMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJmbGF0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgZGVsZXRlQnV0dG9uQ2xpY2suZW1pdChjb250YWN0KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY29udGFjdHNOb3RFeGlzdD5cbiAgICAgICAgICAgICAgICAgICAgPHR1aS1ub3RpZmljYXRpb24gc2l6ZT1cImxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC13cmFwIGdhcC0yIGZvbnQtbWVkaXVtXCI+0JrQvtC90YLQsNC60YLRiyDQvdC1INGD0LrQsNC30LDQvdGLLjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvdHVpLW5vdGlmaWNhdGlvbj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdHVpLWxvYWRlcj5cbiAgICA8L25nLXRlbXBsYXRlPlxuPC9zYy1hY2NvcmRpb24+XG4iXX0=
|
@@ -7,9 +7,8 @@ import { TuiButton, TuiDataList, TuiError, TuiLabel, TuiLink, TuiLoader, TuiNoti
|
|
7
7
|
import { TuiButtonLoading, TuiDataListWrapper, TuiFieldErrorPipe } from '@taiga-ui/kit';
|
8
8
|
import { TuiInputModule, TuiInputPhoneModule, TuiSelectModule } from '@taiga-ui/legacy';
|
9
9
|
import { ScAccordionModule } from '../accordion';
|
10
|
-
import {
|
10
|
+
import { ScLinks } from '../directives/links/sc-links';
|
11
11
|
import { ScFormFieldsModule } from '../form-fields/form-fields.module';
|
12
|
-
import { ScFormatePhonePipe } from '../pipes';
|
13
12
|
import { ScAddContactDialogComponent } from './add-contact-dialog/sc-add-contact-dialog.component';
|
14
13
|
import { ScContactsAccordionComponent } from './contacts-accordion/sc-contacts-accordion.component';
|
15
14
|
import { ScNewContactFormComponent } from './new-contact-form/sc-new-contact-form.component';
|
@@ -17,6 +16,9 @@ import * as i0 from "@angular/core";
|
|
17
16
|
import * as i1 from "@taiga-ui/core";
|
18
17
|
import * as i2 from "@taiga-ui/kit";
|
19
18
|
import * as i3 from "@taiga-ui/core/components/data-list";
|
19
|
+
import * as i4 from "../directives/links/sc-tel-link.directive";
|
20
|
+
import * as i5 from "../directives/links/sc-email-link.directive";
|
21
|
+
import * as i6 from "../pipes/sc-formatted-phone";
|
20
22
|
/**
|
21
23
|
* Модуль контактных лиц.
|
22
24
|
*/
|
@@ -37,11 +39,7 @@ export class ScContactsModule {
|
|
37
39
|
TuiSelectModule, i1.TuiDataListComponent, i1.TuiDataListDirective, i1.TuiOption, i1.TuiOptGroup, i2.TuiDataListWrapperComponent, i2.TuiDataListGroupWrapperComponent, i3.TuiDataListDirective, TuiLabel,
|
38
40
|
TuiInputModule,
|
39
41
|
TuiInputPhoneModule,
|
40
|
-
TuiError,
|
41
|
-
ScTerminalLinkDirective,
|
42
|
-
ScFormatePhonePipe,
|
43
|
-
ScTelLinkDirective,
|
44
|
-
TuiButtonLoading], exports: [ScContactsAccordionComponent, ScNewContactFormComponent, ScAddContactDialogComponent] }); }
|
42
|
+
TuiError, i4.ScTelLinkDirective, i5.ScEmailLinkDirective, i6.ScFormatePhonePipe, TuiButtonLoading], exports: [ScContactsAccordionComponent, ScNewContactFormComponent, ScAddContactDialogComponent] }); }
|
45
43
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ScContactsModule, imports: [CommonModule,
|
46
44
|
FormsModule,
|
47
45
|
ReactiveFormsModule,
|
@@ -77,12 +75,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImpo
|
|
77
75
|
TuiInputModule,
|
78
76
|
TuiInputPhoneModule,
|
79
77
|
TuiError,
|
80
|
-
|
81
|
-
ScFormatePhonePipe,
|
82
|
-
ScTelLinkDirective,
|
78
|
+
...ScLinks,
|
83
79
|
TuiButtonLoading,
|
84
80
|
],
|
85
81
|
exports: [ScContactsAccordionComponent, ScNewContactFormComponent, ScAddContactDialogComponent],
|
86
82
|
}]
|
87
83
|
}] });
|
88
|
-
//# sourceMappingURL=data:application/json;base64,
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY29udGFjdHMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2NvbnRhY3RzL3NjLWNvbnRhY3RzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDcEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakgsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxjQUFjLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFeEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2pELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUNuRyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUNwRyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQzs7Ozs7Ozs7QUFFN0Y7O0dBRUc7QUE0QkgsTUFBTSxPQUFPLGdCQUFnQjsrR0FBaEIsZ0JBQWdCO2dIQUFoQixnQkFBZ0IsaUJBMUJWLDRCQUE0QixFQUFFLHlCQUF5QixFQUFFLDJCQUEyQixhQUUvRixZQUFZO1lBQ1osV0FBVztZQUNYLG1CQUFtQjtZQUNuQixpQkFBaUI7WUFDakIsU0FBUztZQUNULFNBQVM7WUFDVCxNQUFNO1lBQ04sZUFBZTtZQUNmLE9BQU87WUFDUCxrQkFBa0I7WUFDbEIsZ0JBQWdCO1lBQ2hCLGlCQUFpQjtZQUNqQixlQUFlLGdMQUdmLFFBQVE7WUFDUixjQUFjO1lBQ2QsbUJBQW1CO1lBQ25CLFFBQVEseUVBRVIsZ0JBQWdCLGFBRVYsNEJBQTRCLEVBQUUseUJBQXlCLEVBQUUsMkJBQTJCO2dIQUVyRixnQkFBZ0IsWUF4QnJCLFlBQVk7WUFDWixXQUFXO1lBQ1gsbUJBQW1CO1lBQ25CLGlCQUFpQjtZQUVqQixTQUFTO1lBSVQsa0JBQWtCO1lBR2xCLGVBQWUsOEdBSWYsY0FBYztZQUNkLG1CQUFtQjtZQUNuQixRQUFRO1lBRVIsZ0JBQWdCOzs0RkFJWCxnQkFBZ0I7a0JBM0I1QixRQUFRO21CQUFDO29CQUNOLFlBQVksRUFBRSxDQUFDLDRCQUE0QixFQUFFLHlCQUF5QixFQUFFLDJCQUEyQixDQUFDO29CQUNwRyxPQUFPLEVBQUU7d0JBQ0wsWUFBWTt3QkFDWixXQUFXO3dCQUNYLG1CQUFtQjt3QkFDbkIsaUJBQWlCO3dCQUNqQixTQUFTO3dCQUNULFNBQVM7d0JBQ1QsTUFBTTt3QkFDTixlQUFlO3dCQUNmLE9BQU87d0JBQ1Asa0JBQWtCO3dCQUNsQixnQkFBZ0I7d0JBQ2hCLGlCQUFpQjt3QkFDakIsZUFBZTt3QkFDZixHQUFHLFdBQVc7d0JBQ2QsR0FBRyxrQkFBa0I7d0JBQ3JCLFFBQVE7d0JBQ1IsY0FBYzt3QkFDZCxtQkFBbUI7d0JBQ25CLFFBQVE7d0JBQ1IsR0FBRyxPQUFPO3dCQUNWLGdCQUFnQjtxQkFDbkI7b0JBQ0QsT0FBTyxFQUFFLENBQUMsNEJBQTRCLEVBQUUseUJBQXlCLEVBQUUsMkJBQTJCLENBQUM7aUJBQ2xHIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hc2tpdG9EaXJlY3RpdmUgfSBmcm9tICdAbWFza2l0by9hbmd1bGFyJztcbmltcG9ydCB7IFR1aUxldCB9IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHsgVHVpQnV0dG9uLCBUdWlEYXRhTGlzdCwgVHVpRXJyb3IsIFR1aUxhYmVsLCBUdWlMaW5rLCBUdWlMb2FkZXIsIFR1aU5vdGlmaWNhdGlvbiB9IGZyb20gJ0B0YWlnYS11aS9jb3JlJztcbmltcG9ydCB7IFR1aUJ1dHRvbkxvYWRpbmcsIFR1aURhdGFMaXN0V3JhcHBlciwgVHVpRmllbGRFcnJvclBpcGUgfSBmcm9tICdAdGFpZ2EtdWkva2l0JztcbmltcG9ydCB7IFR1aUlucHV0TW9kdWxlLCBUdWlJbnB1dFBob25lTW9kdWxlLCBUdWlTZWxlY3RNb2R1bGUgfSBmcm9tICdAdGFpZ2EtdWkvbGVnYWN5JztcblxuaW1wb3J0IHsgU2NBY2NvcmRpb25Nb2R1bGUgfSBmcm9tICcuLi9hY2NvcmRpb24nO1xuaW1wb3J0IHsgU2NMaW5rcyB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvbGlua3Mvc2MtbGlua3MnO1xuaW1wb3J0IHsgU2NGb3JtRmllbGRzTW9kdWxlIH0gZnJvbSAnLi4vZm9ybS1maWVsZHMvZm9ybS1maWVsZHMubW9kdWxlJztcbmltcG9ydCB7IFNjQWRkQ29udGFjdERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vYWRkLWNvbnRhY3QtZGlhbG9nL3NjLWFkZC1jb250YWN0LWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2NDb250YWN0c0FjY29yZGlvbkNvbXBvbmVudCB9IGZyb20gJy4vY29udGFjdHMtYWNjb3JkaW9uL3NjLWNvbnRhY3RzLWFjY29yZGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2NOZXdDb250YWN0Rm9ybUNvbXBvbmVudCB9IGZyb20gJy4vbmV3LWNvbnRhY3QtZm9ybS9zYy1uZXctY29udGFjdC1mb3JtLmNvbXBvbmVudCc7XG5cbi8qKlxuICog0JzQvtC00YPQu9GMINC60L7QvdGC0LDQutGC0L3Ri9GFINC70LjRhi5cbiAqL1xuQE5nTW9kdWxlKHtcbiAgICBkZWNsYXJhdGlvbnM6IFtTY0NvbnRhY3RzQWNjb3JkaW9uQ29tcG9uZW50LCBTY05ld0NvbnRhY3RGb3JtQ29tcG9uZW50LCBTY0FkZENvbnRhY3REaWFsb2dDb21wb25lbnRdLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICAgICAgU2NBY2NvcmRpb25Nb2R1bGUsXG4gICAgICAgIFR1aUJ1dHRvbixcbiAgICAgICAgVHVpTG9hZGVyLFxuICAgICAgICBUdWlMZXQsXG4gICAgICAgIFR1aU5vdGlmaWNhdGlvbixcbiAgICAgICAgVHVpTGluayxcbiAgICAgICAgU2NGb3JtRmllbGRzTW9kdWxlLFxuICAgICAgICBNYXNraXRvRGlyZWN0aXZlLFxuICAgICAgICBUdWlGaWVsZEVycm9yUGlwZSxcbiAgICAgICAgVHVpU2VsZWN0TW9kdWxlLFxuICAgICAgICAuLi5UdWlEYXRhTGlzdCxcbiAgICAgICAgLi4uVHVpRGF0YUxpc3RXcmFwcGVyLFxuICAgICAgICBUdWlMYWJlbCxcbiAgICAgICAgVHVpSW5wdXRNb2R1bGUsXG4gICAgICAgIFR1aUlucHV0UGhvbmVNb2R1bGUsXG4gICAgICAgIFR1aUVycm9yLFxuICAgICAgICAuLi5TY0xpbmtzLFxuICAgICAgICBUdWlCdXR0b25Mb2FkaW5nLFxuICAgIF0sXG4gICAgZXhwb3J0czogW1NjQ29udGFjdHNBY2NvcmRpb25Db21wb25lbnQsIFNjTmV3Q29udGFjdEZvcm1Db21wb25lbnQsIFNjQWRkQ29udGFjdERpYWxvZ0NvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIFNjQ29udGFjdHNNb2R1bGUge31cbiJdfQ==
|
@@ -1,7 +1,6 @@
|
|
1
1
|
export * from './next-input-focus/sc-next-input-focus.directive';
|
2
2
|
export * from './next-input-focus/sc-next-input-focus.module';
|
3
3
|
export * from './abstract-price-card/abstract-sc-price-card.directive';
|
4
|
-
export * from './tel-link/sc-tel-link.directive';
|
5
|
-
export * from './tel-link/sc-tel-link.module';
|
6
4
|
export * from './terminal-link/sc-terminal-link.directive';
|
7
|
-
|
5
|
+
export * from './links';
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvZGlyZWN0aXZlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGtEQUFrRCxDQUFDO0FBQ2pFLGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYyx3REFBd0QsQ0FBQztBQUN2RSxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9uZXh0LWlucHV0LWZvY3VzL3NjLW5leHQtaW5wdXQtZm9jdXMuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbmV4dC1pbnB1dC1mb2N1cy9zYy1uZXh0LWlucHV0LWZvY3VzLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2Fic3RyYWN0LXByaWNlLWNhcmQvYWJzdHJhY3Qtc2MtcHJpY2UtY2FyZC5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi90ZXJtaW5hbC1saW5rL3NjLXRlcm1pbmFsLWxpbmsuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbGlua3MnO1xuIl19
|
@@ -0,0 +1,5 @@
|
|
1
|
+
export * from './sc-links';
|
2
|
+
export * from './sc-link-location';
|
3
|
+
export * from './sc-email-link.directive';
|
4
|
+
export * from './sc-tel-link.directive';
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvZGlyZWN0aXZlcy9saW5rcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyx5QkFBeUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc2MtbGlua3MnO1xuZXhwb3J0ICogZnJvbSAnLi9zYy1saW5rLWxvY2F0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vc2MtZW1haWwtbGluay5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9zYy10ZWwtbGluay5kaXJlY3RpdmUnO1xuIl19
|
@@ -0,0 +1,49 @@
|
|
1
|
+
import { Directive, ElementRef, HostListener, inject, Input } from '@angular/core';
|
2
|
+
import { ScUserMetrikaGoalsEnum, ScUserMetrikaService } from '@snabcentr/client-core';
|
3
|
+
import * as i0 from "@angular/core";
|
4
|
+
/**
|
5
|
+
* Директива, которая управляет свойствами ссылки адреса электронной почты.
|
6
|
+
*/
|
7
|
+
export class ScEmailLinkDirective {
|
8
|
+
constructor() {
|
9
|
+
/**
|
10
|
+
* Ссылка на HTML элемент тега `<a>`.
|
11
|
+
*/
|
12
|
+
this.elementReference = inject(ElementRef);
|
13
|
+
/**
|
14
|
+
* Сервис для сбора метрик о действиях пользователей.
|
15
|
+
*/
|
16
|
+
this.userMetrikaService = inject(ScUserMetrikaService);
|
17
|
+
}
|
18
|
+
/**
|
19
|
+
* Обработчик клика по ссылке.
|
20
|
+
*/
|
21
|
+
click() {
|
22
|
+
const email = /mailto:([^?]+)/.exec(this.elementReference.nativeElement.href)?.at(1);
|
23
|
+
if (email) {
|
24
|
+
this.userMetrikaService.emitUserMetrikaEvent({
|
25
|
+
target: ScUserMetrikaGoalsEnum.emailClick,
|
26
|
+
params: {
|
27
|
+
emailLocation: this.linkLocation,
|
28
|
+
email: email,
|
29
|
+
},
|
30
|
+
});
|
31
|
+
}
|
32
|
+
}
|
33
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ScEmailLinkDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
34
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.12", type: ScEmailLinkDirective, isStandalone: true, selector: "a[scEmailLink]", inputs: { linkLocation: "linkLocation" }, host: { listeners: { "click": "click()" } }, ngImport: i0 }); }
|
35
|
+
}
|
36
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ScEmailLinkDirective, decorators: [{
|
37
|
+
type: Directive,
|
38
|
+
args: [{
|
39
|
+
standalone: true,
|
40
|
+
selector: 'a[scEmailLink]',
|
41
|
+
}]
|
42
|
+
}], propDecorators: { linkLocation: [{
|
43
|
+
type: Input,
|
44
|
+
args: [{ required: true }]
|
45
|
+
}], click: [{
|
46
|
+
type: HostListener,
|
47
|
+
args: ['click']
|
48
|
+
}] } });
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtZW1haWwtbGluay5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvZGlyZWN0aXZlcy9saW5rcy9zYy1lbWFpbC1saW5rLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFJdEY7O0dBRUc7QUFLSCxNQUFNLE9BQU8sb0JBQW9CO0lBSmpDO1FBS0k7O1dBRUc7UUFDSyxxQkFBZ0IsR0FBa0MsTUFBTSxDQUFnQyxVQUFVLENBQUMsQ0FBQztRQVE1Rzs7V0FFRztRQUNjLHVCQUFrQixHQUF5QixNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztLQW1CNUY7SUFqQkc7O09BRUc7SUFFSyxLQUFLO1FBQ1QsTUFBTSxLQUFLLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXJGLElBQUksS0FBSyxFQUFFLENBQUM7WUFDUixJQUFJLENBQUMsa0JBQWtCLENBQUMsb0JBQW9CLENBQUM7Z0JBQ3pDLE1BQU0sRUFBRSxzQkFBc0IsQ0FBQyxVQUFVO2dCQUN6QyxNQUFNLEVBQUU7b0JBQ0osYUFBYSxFQUFFLElBQUksQ0FBQyxZQUFZO29CQUNoQyxLQUFLLEVBQUUsS0FBSztpQkFDZjthQUNKLENBQUMsQ0FBQztRQUNQLENBQUM7SUFDTCxDQUFDOytHQWpDUSxvQkFBb0I7bUdBQXBCLG9CQUFvQjs7NEZBQXBCLG9CQUFvQjtrQkFKaEMsU0FBUzttQkFBQztvQkFDUCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLGdCQUFnQjtpQkFDN0I7OEJBV1UsWUFBWTtzQkFEbEIsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBWWpCLEtBQUs7c0JBRFosWUFBWTt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIGluamVjdCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNjVXNlck1ldHJpa2FHb2Fsc0VudW0sIFNjVXNlck1ldHJpa2FTZXJ2aWNlIH0gZnJvbSAnQHNuYWJjZW50ci9jbGllbnQtY29yZSc7XG5cbmltcG9ydCB7IFNjTGlua0xvY2F0aW9uIH0gZnJvbSAnLi9zYy1saW5rLWxvY2F0aW9uJztcblxuLyoqXG4gKiDQlNC40YDQtdC60YLQuNCy0LAsINC60L7RgtC+0YDQsNGPINGD0L/RgNCw0LLQu9GP0LXRgiDRgdCy0L7QudGB0YLQstCw0LzQuCDRgdGB0YvQu9C60Lgg0LDQtNGA0LXRgdCwINGN0LvQtdC60YLRgNC+0L3QvdC+0Lkg0L/QvtGH0YLRiy5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ2Fbc2NFbWFpbExpbmtdJyxcbn0pXG5leHBvcnQgY2xhc3MgU2NFbWFpbExpbmtEaXJlY3RpdmUge1xuICAgIC8qKlxuICAgICAqINCh0YHRi9C70LrQsCDQvdCwIEhUTUwg0Y3Qu9C10LzQtdC90YIg0YLQtdCz0LAgYDxhPmAuXG4gICAgICovXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmZXJlbmNlOiBFbGVtZW50UmVmPEhUTUxBbmNob3JFbGVtZW50PiA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxBbmNob3JFbGVtZW50Pj4oRWxlbWVudFJlZik7XG5cbiAgICAvKipcbiAgICAgKiDQo9GB0LvQvtCy0L3QvtC1INC90LDQt9Cy0LDQvdC40LUg0LHQu9C+0LrQsCDQs9C00LUg0YDQsNGB0L/QvtC70L7QttC10L3QsCDRgdGB0YvQu9C60LAuXG4gICAgICovXG4gICAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgICBwdWJsaWMgbGlua0xvY2F0aW9uITogU2NMaW5rTG9jYXRpb247XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0LTQu9GPINGB0LHQvtGA0LAg0LzQtdGC0YDQuNC6INC+INC00LXQudGB0YLQstC40Y/RhSDQv9C+0LvRjNC30L7QstCw0YLQtdC70LXQuS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHVzZXJNZXRyaWthU2VydmljZTogU2NVc2VyTWV0cmlrYVNlcnZpY2UgPSBpbmplY3QoU2NVc2VyTWV0cmlrYVNlcnZpY2UpO1xuXG4gICAgLyoqXG4gICAgICog0J7QsdGA0LDQsdC+0YLRh9C40Log0LrQu9C40LrQsCDQv9C+INGB0YHRi9C70LrQtS5cbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gICAgcHJpdmF0ZSBjbGljaygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZW1haWwgPSAvbWFpbHRvOihbXj9dKykvLmV4ZWModGhpcy5lbGVtZW50UmVmZXJlbmNlLm5hdGl2ZUVsZW1lbnQuaHJlZik/LmF0KDEpO1xuXG4gICAgICAgIGlmIChlbWFpbCkge1xuICAgICAgICAgICAgdGhpcy51c2VyTWV0cmlrYVNlcnZpY2UuZW1pdFVzZXJNZXRyaWthRXZlbnQoe1xuICAgICAgICAgICAgICAgIHRhcmdldDogU2NVc2VyTWV0cmlrYUdvYWxzRW51bS5lbWFpbENsaWNrLFxuICAgICAgICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgICAgICAgICBlbWFpbExvY2F0aW9uOiB0aGlzLmxpbmtMb2NhdGlvbixcbiAgICAgICAgICAgICAgICAgICAgZW1haWw6IGVtYWlsLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
@@ -0,0 +1,2 @@
|
|
1
|
+
export {};
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtbGluay1sb2NhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9kaXJlY3RpdmVzL2xpbmtzL3NjLWxpbmstbG9jYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFR1aUxvb3NlVW5pb24gfSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcblxuLyoqXG4gKiDQotC40L8g0LTQsNC90L3Ri9GFINGD0YHQu9C+0LLQvdC+0LPQviDQvdCw0LfQstCw0L3QuNGPINCx0LvQvtC60LAg0LPQtNC1INGA0LDRgdC/0L7Qu9C+0LbQtdC90LAg0YHRgdGL0LvQutCwLlxuICovXG5leHBvcnQgdHlwZSBTY0xpbmtMb2NhdGlvbiA9IFR1aUxvb3NlVW5pb248XG4gICAgJ2NvbnRhY3QnIHwgJ3F1ZXN0aW9ucy1hbmQtYW5zd2VycycgfCAncHJvZmlsZScgfCAndXNlci1tYW5hZ2VycycgfCAnbWFuYWdlci1jYXJkJyB8ICdyZXRhaWxzLW1hcCcgfCAnbGFuZGluZycgfCAnZm9vdGVyJyB8ICdvcmRlcicgfCAndmFjYW5jaWVzJyB8ICdoZWFkZXInXG4+O1xuIl19
|
@@ -0,0 +1,8 @@
|
|
1
|
+
import { ScFormatePhonePipe } from '../../pipes/sc-formatted-phone';
|
2
|
+
import { ScEmailLinkDirective } from './sc-email-link.directive';
|
3
|
+
import { ScTelLinkDirective } from './sc-tel-link.directive';
|
4
|
+
/**
|
5
|
+
* Список директив ссылок.
|
6
|
+
*/
|
7
|
+
export const ScLinks = [ScTelLinkDirective, ScEmailLinkDirective, ScFormatePhonePipe];
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtbGlua3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvZGlyZWN0aXZlcy9saW5rcy9zYy1saW5rcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU3RDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxDQUFDLGtCQUFrQixFQUFFLG9CQUFvQixFQUFFLGtCQUFrQixDQUFVLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTY0Zvcm1hdGVQaG9uZVBpcGUgfSBmcm9tICcuLi8uLi9waXBlcy9zYy1mb3JtYXR0ZWQtcGhvbmUnO1xuaW1wb3J0IHsgU2NFbWFpbExpbmtEaXJlY3RpdmUgfSBmcm9tICcuL3NjLWVtYWlsLWxpbmsuZGlyZWN0aXZlJztcbmltcG9ydCB7IFNjVGVsTGlua0RpcmVjdGl2ZSB9IGZyb20gJy4vc2MtdGVsLWxpbmsuZGlyZWN0aXZlJztcblxuLyoqXG4gKiDQodC/0LjRgdC+0Log0LTQuNGA0LXQutGC0LjQsiDRgdGB0YvQu9C+0LouXG4gKi9cbmV4cG9ydCBjb25zdCBTY0xpbmtzID0gW1NjVGVsTGlua0RpcmVjdGl2ZSwgU2NFbWFpbExpbmtEaXJlY3RpdmUsIFNjRm9ybWF0ZVBob25lUGlwZV0gYXMgY29uc3Q7XG4iXX0=
|
@@ -0,0 +1,79 @@
|
|
1
|
+
import { Directive, ElementRef, HostListener, inject, Input, Renderer2 } from '@angular/core';
|
2
|
+
import { ScPhoneService, ScUserMetrikaGoalsEnum, ScUserMetrikaService } from '@snabcentr/client-core';
|
3
|
+
import * as i0 from "@angular/core";
|
4
|
+
/**
|
5
|
+
* Директива, которая управляет свойствами ссылки номера телефона для валидации значения номера телефона.
|
6
|
+
*/
|
7
|
+
export class ScTelLinkDirective {
|
8
|
+
constructor() {
|
9
|
+
/**
|
10
|
+
* Экземпляр базового класса для реализации пользовательского рендеринга.
|
11
|
+
*/
|
12
|
+
this.renderer = inject(Renderer2);
|
13
|
+
/**
|
14
|
+
* Ссылка на HTML элемент тега `<a>`.
|
15
|
+
*/
|
16
|
+
this.elementReference = inject(ElementRef);
|
17
|
+
/**
|
18
|
+
* Сервис для сбора метрик о действиях пользователей.
|
19
|
+
*/
|
20
|
+
this.userMetrikaService = inject(ScUserMetrikaService);
|
21
|
+
}
|
22
|
+
/** @inheritDoc */
|
23
|
+
ngOnChanges(changes) {
|
24
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
25
|
+
if (changes['tel']) {
|
26
|
+
this.updateLinkState();
|
27
|
+
}
|
28
|
+
}
|
29
|
+
/**
|
30
|
+
* Обработчик клика по ссылке.
|
31
|
+
*/
|
32
|
+
click() {
|
33
|
+
if (ScPhoneService.isValidPhoneNumber(this.tel)) {
|
34
|
+
this.userMetrikaService.emitUserMetrikaEvent({
|
35
|
+
target: ScUserMetrikaGoalsEnum.phoneClick,
|
36
|
+
params: {
|
37
|
+
phoneLocation: this.linkLocation,
|
38
|
+
phone: this.tel,
|
39
|
+
},
|
40
|
+
});
|
41
|
+
}
|
42
|
+
}
|
43
|
+
/**
|
44
|
+
* Обновляет состояние ссылки на основе валидности номера телефона.
|
45
|
+
*/
|
46
|
+
updateLinkState() {
|
47
|
+
if (ScPhoneService.isValidPhoneNumber(this.tel)) {
|
48
|
+
// Если номер валиден, активируем ссылку.
|
49
|
+
this.renderer.removeAttribute(this.elementReference.nativeElement, 'aria-disabled');
|
50
|
+
this.renderer.removeClass(this.elementReference.nativeElement, 'disabled');
|
51
|
+
this.renderer.setAttribute(this.elementReference.nativeElement, 'href', `tel:${ScPhoneService.formatPhoneNumber(this.tel)}`);
|
52
|
+
}
|
53
|
+
else {
|
54
|
+
// Если номер невалиден, отключаем ссылку.
|
55
|
+
this.renderer.setAttribute(this.elementReference.nativeElement, 'aria-disabled', 'true');
|
56
|
+
this.renderer.addClass(this.elementReference.nativeElement, 'disabled');
|
57
|
+
this.renderer.removeAttribute(this.elementReference.nativeElement, 'href');
|
58
|
+
}
|
59
|
+
}
|
60
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ScTelLinkDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
61
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.12", type: ScTelLinkDirective, isStandalone: true, selector: "a[scTelLink]", inputs: { tel: ["scTelLink", "tel"], linkLocation: "linkLocation" }, host: { listeners: { "click": "click()" } }, usesOnChanges: true, ngImport: i0 }); }
|
62
|
+
}
|
63
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ScTelLinkDirective, decorators: [{
|
64
|
+
type: Directive,
|
65
|
+
args: [{
|
66
|
+
standalone: true,
|
67
|
+
selector: 'a[scTelLink]',
|
68
|
+
}]
|
69
|
+
}], propDecorators: { tel: [{
|
70
|
+
type: Input,
|
71
|
+
args: [{ alias: 'scTelLink', required: true }]
|
72
|
+
}], linkLocation: [{
|
73
|
+
type: Input,
|
74
|
+
args: [{ required: true }]
|
75
|
+
}], click: [{
|
76
|
+
type: HostListener,
|
77
|
+
args: ['click']
|
78
|
+
}] } });
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtdGVsLWxpbmsuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2RpcmVjdGl2ZXMvbGlua3Mvc2MtdGVsLWxpbmsuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFhLFNBQVMsRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDeEgsT0FBTyxFQUFFLGNBQWMsRUFBRSxzQkFBc0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQUl0Rzs7R0FFRztBQUtILE1BQU0sT0FBTyxrQkFBa0I7SUFKL0I7UUFLSTs7V0FFRztRQUNjLGFBQVEsR0FBYyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFekQ7O1dBRUc7UUFDSyxxQkFBZ0IsR0FBa0MsTUFBTSxDQUFnQyxVQUFVLENBQUMsQ0FBQztRQWM1Rzs7V0FFRztRQUNjLHVCQUFrQixHQUF5QixNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztLQTBDNUY7SUF4Q0csa0JBQWtCO0lBQ1gsV0FBVyxDQUFDLE9BQXNCO1FBQ3JDLHVFQUF1RTtRQUN2RSxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUMzQixDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBRUssS0FBSztRQUNULElBQUksY0FBYyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzlDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxvQkFBb0IsQ0FBQztnQkFDekMsTUFBTSxFQUFFLHNCQUFzQixDQUFDLFVBQVU7Z0JBQ3pDLE1BQU0sRUFBRTtvQkFDSixhQUFhLEVBQUUsSUFBSSxDQUFDLFlBQVk7b0JBQ2hDLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRztpQkFDbEI7YUFDSixDQUFDLENBQUM7UUFDUCxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ssZUFBZTtRQUNuQixJQUFJLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM5Qyx5Q0FBeUM7WUFDekMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsRUFBRSxlQUFlLENBQUMsQ0FBQztZQUNwRixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQzNFLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLEVBQUUsTUFBTSxFQUFFLE9BQU8sY0FBYyxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDakksQ0FBQzthQUFNLENBQUM7WUFDSiwwQ0FBMEM7WUFDMUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsRUFBRSxlQUFlLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDekYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsRUFBRSxVQUFVLENBQUMsQ0FBQztZQUN4RSxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQy9FLENBQUM7SUFDTCxDQUFDOytHQW5FUSxrQkFBa0I7bUdBQWxCLGtCQUFrQjs7NEZBQWxCLGtCQUFrQjtrQkFKOUIsU0FBUzttQkFBQztvQkFDUCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLGNBQWM7aUJBQzNCOzhCQWdCVSxHQUFHO3NCQURULEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBT3RDLFlBQVk7c0JBRGxCLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQW9CakIsS0FBSztzQkFEWixZQUFZO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgaW5qZWN0LCBJbnB1dCwgT25DaGFuZ2VzLCBSZW5kZXJlcjIsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNjUGhvbmVTZXJ2aWNlLCBTY1VzZXJNZXRyaWthR29hbHNFbnVtLCBTY1VzZXJNZXRyaWthU2VydmljZSB9IGZyb20gJ0BzbmFiY2VudHIvY2xpZW50LWNvcmUnO1xuXG5pbXBvcnQgeyBTY0xpbmtMb2NhdGlvbiB9IGZyb20gJy4vc2MtbGluay1sb2NhdGlvbic7XG5cbi8qKlxuICog0JTQuNGA0LXQutGC0LjQstCwLCDQutC+0YLQvtGA0LDRjyDRg9C/0YDQsNCy0LvRj9C10YIg0YHQstC+0LnRgdGC0LLQsNC80Lgg0YHRgdGL0LvQutC4INC90L7QvNC10YDQsCDRgtC10LvQtdGE0L7QvdCwINC00LvRjyDQstCw0LvQuNC00LDRhtC40Lgg0LfQvdCw0YfQtdC90LjRjyDQvdC+0LzQtdGA0LAg0YLQtdC70LXRhNC+0L3QsC5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ2Fbc2NUZWxMaW5rXScsXG59KVxuZXhwb3J0IGNsYXNzIFNjVGVsTGlua0RpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gICAgLyoqXG4gICAgICog0K3QutC30LXQvNC/0LvRj9GAINCx0LDQt9C+0LLQvtCz0L4g0LrQu9Cw0YHRgdCwINC00LvRjyDRgNC10LDQu9C40LfQsNGG0LjQuCDQv9C+0LvRjNC30L7QstCw0YLQtdC70YzRgdC60L7Qs9C+INGA0LXQvdC00LXRgNC40L3Qs9CwLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVuZGVyZXI6IFJlbmRlcmVyMiA9IGluamVjdChSZW5kZXJlcjIpO1xuXG4gICAgLyoqXG4gICAgICog0KHRgdGL0LvQutCwINC90LAgSFRNTCDRjdC70LXQvNC10L3RgiDRgtC10LPQsCBgPGE+YC5cbiAgICAgKi9cbiAgICBwcml2YXRlIGVsZW1lbnRSZWZlcmVuY2U6IEVsZW1lbnRSZWY8SFRNTEFuY2hvckVsZW1lbnQ+ID0gaW5qZWN0PEVsZW1lbnRSZWY8SFRNTEFuY2hvckVsZW1lbnQ+PihFbGVtZW50UmVmKTtcblxuICAgIC8qKlxuICAgICAqINCd0L7QvNC10YAg0YLQtdC70LXRhNC+0L3QsCwg0LrQvtGC0L7RgNGL0Lkg0LHRg9C00LXRgiDQv9GA0L7QstC10YDQtdC9INC90LAg0LLQsNC70LjQtNC90L7RgdGC0YwuXG4gICAgICovXG4gICAgQElucHV0KHsgYWxpYXM6ICdzY1RlbExpbmsnLCByZXF1aXJlZDogdHJ1ZSB9KVxuICAgIHB1YmxpYyB0ZWwhOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiDQo9GB0LvQvtCy0L3QvtC1INC90LDQt9Cy0LDQvdC40LUg0LHQu9C+0LrQsCDQs9C00LUg0YDQsNGB0L/QvtC70L7QttC10L3QsCDRgdGB0YvQu9C60LAuXG4gICAgICovXG4gICAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgICBwdWJsaWMgbGlua0xvY2F0aW9uITogU2NMaW5rTG9jYXRpb247XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0LTQu9GPINGB0LHQvtGA0LAg0LzQtdGC0YDQuNC6INC+INC00LXQudGB0YLQstC40Y/RhSDQv9C+0LvRjNC30L7QstCw0YLQtdC70LXQuS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHVzZXJNZXRyaWthU2VydmljZTogU2NVc2VyTWV0cmlrYVNlcnZpY2UgPSBpbmplY3QoU2NVc2VyTWV0cmlrYVNlcnZpY2UpO1xuXG4gICAgLyoqIEBpbmhlcml0RG9jICovXG4gICAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bm5lY2Vzc2FyeS1jb25kaXRpb25cbiAgICAgICAgaWYgKGNoYW5nZXNbJ3RlbCddKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUxpbmtTdGF0ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0J7QsdGA0LDQsdC+0YLRh9C40Log0LrQu9C40LrQsCDQv9C+INGB0YHRi9C70LrQtS5cbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gICAgcHJpdmF0ZSBjbGljaygpOiB2b2lkIHtcbiAgICAgICAgaWYgKFNjUGhvbmVTZXJ2aWNlLmlzVmFsaWRQaG9uZU51bWJlcih0aGlzLnRlbCkpIHtcbiAgICAgICAgICAgIHRoaXMudXNlck1ldHJpa2FTZXJ2aWNlLmVtaXRVc2VyTWV0cmlrYUV2ZW50KHtcbiAgICAgICAgICAgICAgICB0YXJnZXQ6IFNjVXNlck1ldHJpa2FHb2Fsc0VudW0ucGhvbmVDbGljayxcbiAgICAgICAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgICAgICAgICAgcGhvbmVMb2NhdGlvbjogdGhpcy5saW5rTG9jYXRpb24sXG4gICAgICAgICAgICAgICAgICAgIHBob25lOiB0aGlzLnRlbCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQntCx0L3QvtCy0LvRj9C10YIg0YHQvtGB0YLQvtGP0L3QuNC1INGB0YHRi9C70LrQuCDQvdCwINC+0YHQvdC+0LLQtSDQstCw0LvQuNC00L3QvtGB0YLQuCDQvdC+0LzQtdGA0LAg0YLQtdC70LXRhNC+0L3QsC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHVwZGF0ZUxpbmtTdGF0ZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKFNjUGhvbmVTZXJ2aWNlLmlzVmFsaWRQaG9uZU51bWJlcih0aGlzLnRlbCkpIHtcbiAgICAgICAgICAgIC8vINCV0YHQu9C4INC90L7QvNC10YAg0LLQsNC70LjQtNC10L0sINCw0LrRgtC40LLQuNGA0YPQtdC8INGB0YHRi9C70LrRgy5cbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQXR0cmlidXRlKHRoaXMuZWxlbWVudFJlZmVyZW5jZS5uYXRpdmVFbGVtZW50LCAnYXJpYS1kaXNhYmxlZCcpO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLmVsZW1lbnRSZWZlcmVuY2UubmF0aXZlRWxlbWVudCwgJ2Rpc2FibGVkJyk7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmVsZW1lbnRSZWZlcmVuY2UubmF0aXZlRWxlbWVudCwgJ2hyZWYnLCBgdGVsOiR7U2NQaG9uZVNlcnZpY2UuZm9ybWF0UGhvbmVOdW1iZXIodGhpcy50ZWwpfWApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8g0JXRgdC70Lgg0L3QvtC80LXRgCDQvdC10LLQsNC70LjQtNC10L0sINC+0YLQutC70Y7Rh9Cw0LXQvCDRgdGB0YvQu9C60YMuXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmVsZW1lbnRSZWZlcmVuY2UubmF0aXZlRWxlbWVudCwgJ2FyaWEtZGlzYWJsZWQnLCAndHJ1ZScpO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmVsZW1lbnRSZWZlcmVuY2UubmF0aXZlRWxlbWVudCwgJ2Rpc2FibGVkJyk7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUF0dHJpYnV0ZSh0aGlzLmVsZW1lbnRSZWZlcmVuY2UubmF0aXZlRWxlbWVudCwgJ2hyZWYnKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
@@ -0,0 +1,8 @@
|
|
1
|
+
import { tuiCreateTokenFromFactory } from '@taiga-ui/cdk';
|
2
|
+
import { noop } from 'rxjs';
|
3
|
+
/**
|
4
|
+
* Токен обработчика смены ошибки.
|
5
|
+
*/
|
6
|
+
// eslint-disable-next-line unicorn/consistent-function-scoping
|
7
|
+
export const SC_ERROR_CHANGE_HANDLER = tuiCreateTokenFromFactory(() => () => noop);
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItY2hhbmdlLWhhbmRsZXIucHJvdmlkZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2Vycm9yLWhhbmRsZXIvY29uc3RzL2Vycm9yLWNoYW5nZS1oYW5kbGVyLnByb3ZpZGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUk1Qjs7R0FFRztBQUNILCtEQUErRDtBQUMvRCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyx5QkFBeUIsQ0FBK0IsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0dWlDcmVhdGVUb2tlbkZyb21GYWN0b3J5IH0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQgeyBub29wIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IElCbG9ja0Vycm9yIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9pLWJsb2NrLWVycm9yJztcblxuLyoqXG4gKiDQotC+0LrQtdC9INC+0LHRgNCw0LHQvtGC0YfQuNC60LAg0YHQvNC10L3RiyDQvtGI0LjQsdC60LguXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL2NvbnNpc3RlbnQtZnVuY3Rpb24tc2NvcGluZ1xuZXhwb3J0IGNvbnN0IFNDX0VSUk9SX0NIQU5HRV9IQU5ETEVSID0gdHVpQ3JlYXRlVG9rZW5Gcm9tRmFjdG9yeTwoZXJyb3I6IElCbG9ja0Vycm9yKSA9PiB2b2lkPigoKSA9PiAoKSA9PiBub29wKTtcbiJdfQ==
|