@snabcentr/client-ui 3.9.4 → 3.11.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (39) hide show
  1. package/contacts/sc-contacts.module.d.ts +2 -2
  2. package/directives/links/sc-links.d.ts +2 -2
  3. package/esm2022/contacts/contacts-accordion/sc-contacts-accordion.component.mjs +4 -4
  4. package/esm2022/contacts/sc-contacts.module.mjs +3 -3
  5. package/esm2022/directives/links/sc-links.mjs +3 -3
  6. package/esm2022/feedback/feedback-form/sc-feedback-form.component.mjs +267 -0
  7. package/esm2022/feedback/gratitude/sc-gratitude.component.mjs +32 -0
  8. package/esm2022/feedback/index.mjs +3 -0
  9. package/esm2022/pipes/index.mjs +2 -2
  10. package/esm2022/pipes/sc-phone-format.mjs +44 -0
  11. package/esm2022/profile/sc-profile-accordions-content/sc-profile-accordions-content.component.mjs +4 -4
  12. package/esm2022/profile/sc-profile.module.mjs +3 -3
  13. package/esm2022/providers/index.mjs +2 -1
  14. package/esm2022/providers/sc-max-files-in-form-input.mjs +6 -0
  15. package/esm2022/public-api.mjs +2 -1
  16. package/esm2022/samples/index.mjs +1 -2
  17. package/esm2022/samples/sc-sample.module.mjs +5 -6
  18. package/esm2022/user/sc-user.module.mjs +3 -3
  19. package/esm2022/user/user-managers/sc-user-managers.component.mjs +4 -4
  20. package/feedback/feedback-form/sc-feedback-form.component.d.ts +123 -0
  21. package/feedback/gratitude/sc-gratitude.component.d.ts +20 -0
  22. package/feedback/index.d.ts +2 -0
  23. package/fesm2022/snabcentr-client-ui.mjs +330 -153
  24. package/fesm2022/snabcentr-client-ui.mjs.map +1 -1
  25. package/package.json +1 -1
  26. package/pipes/index.d.ts +1 -1
  27. package/pipes/{sc-formatted-phone.d.ts → sc-phone-format.d.ts} +3 -3
  28. package/profile/sc-profile.module.d.ts +2 -2
  29. package/providers/index.d.ts +1 -0
  30. package/providers/sc-max-files-in-form-input.d.ts +5 -0
  31. package/public-api.d.ts +1 -0
  32. package/release_notes.tmp +3 -3
  33. package/samples/index.d.ts +0 -1
  34. package/samples/sc-sample.module.d.ts +10 -11
  35. package/styles/tailwind/tailwind.scss +26 -0
  36. package/user/sc-user.module.d.ts +2 -2
  37. package/esm2022/pipes/sc-formatted-phone.mjs +0 -44
  38. package/esm2022/samples/ask-to-sample-form/sc-ask-to-sample-form.component.mjs +0 -117
  39. package/samples/ask-to-sample-form/sc-ask-to-sample-form.component.d.ts +0 -52
@@ -7,7 +7,7 @@ import * as i3 from "@taiga-ui/core";
7
7
  import * as i4 from "../../directives/terminal-link/sc-terminal-link.directive";
8
8
  import * as i5 from "../../directives/links/sc-tel-link.directive";
9
9
  import * as i6 from "../../directives/links/sc-email-link.directive";
10
- import * as i7 from "../../pipes/sc-formatted-phone";
10
+ import * as i7 from "../../pipes/sc-phone-format";
11
11
  /**
12
12
  * Компонент персональных менеджеров пользователя.
13
13
  */
@@ -31,12 +31,12 @@ export class ScUserManagersComponent {
31
31
  this.qrClickEvent = new EventEmitter();
32
32
  }
33
33
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ScUserManagersComponent, deps: [{ token: i1.ScUserService }], target: i0.ɵɵFactoryTarget.Component }); }
34
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: ScUserManagersComponent, selector: "sc-user-managers", outputs: { qrClickEvent: "qrClickEvent" }, ngImport: i0, template: "<p class=\"mb-2 font-extrabold\">\u0412\u0430\u0448\u0438 \u043F\u0435\u0440\u0441\u043E\u043D\u0430\u043B\u044C\u043D\u044B\u0435 \u043C\u0435\u043D\u0435\u0434\u0436\u0435\u0440\u044B:</p>\n<ng-container *ngFor=\"let manager of managers$ | async; let last = last\">\n <div class=\"flex justify-between\">\n <div class=\"flex flex-col gap-1 !font-medium text-tui-text-02\">\n {{ manager.name }}\n <a\n tuiLink\n [pseudo]=\"true\"\n scEmailLink\n linkLocation=\"user-managers\"\n href=\"mailto:{{ manager.contacts.email }}\"\n iconStart=\"@tui.mail\"\n >\n {{ manager.contacts.email }}\n </a>\n <a\n tuiLink\n [scTelLink]=\"manager.contacts.phone\"\n [pseudo]=\"true\"\n linkLocation=\"user-managers\"\n href=\"tel:{{ manager.contacts.phone | scFormatePhone }}\"\n iconStart=\"@tui.phone\"\n >\n {{ manager.contacts.phone | scFormatePhone }}\n </a>\n </div>\n <button\n tuiIconButton\n size=\"m\"\n appearance=\"secondary\"\n iconStart=\"@tui.scan-qr-code\"\n (click)=\"qrClickEvent.emit(manager)\"\n ></button>\n </div>\n <hr\n *ngIf=\"!last\"\n class=\"my-2 h-px border-0 bg-tui-base-04\"\n />\n</ng-container>\n", styles: ["a[tuiLink][data-mode=onLight]._pseudo{color:var(--tui-text-secondary)}a[tuiLink][data-mode=onLight]._pseudo:hover{color:var(--tui-text-tertiary)}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "directive", type: i3.TuiLink, selector: "a[tuiLink], button[tuiLink]", inputs: ["pseudo"] }, { kind: "directive", type: i4.ScTerminalLinkDirective, selector: "a[href]" }, { kind: "directive", type: i5.ScTelLinkDirective, selector: "a[scTelLink]", inputs: ["scTelLink", "linkLocation"] }, { kind: "directive", type: i6.ScEmailLinkDirective, selector: "a[scEmailLink]", inputs: ["linkLocation"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.ScFormatePhonePipe, name: "scFormatePhone" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
34
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: ScUserManagersComponent, selector: "sc-user-managers", outputs: { qrClickEvent: "qrClickEvent" }, ngImport: i0, template: "<p class=\"mb-2 font-extrabold\">\u0412\u0430\u0448\u0438 \u043F\u0435\u0440\u0441\u043E\u043D\u0430\u043B\u044C\u043D\u044B\u0435 \u043C\u0435\u043D\u0435\u0434\u0436\u0435\u0440\u044B:</p>\n<ng-container *ngFor=\"let manager of managers$ | async; let last = last\">\n <div class=\"flex justify-between\">\n <div class=\"flex flex-col gap-1 !font-medium text-tui-text-02\">\n {{ manager.name }}\n <a\n tuiLink\n [pseudo]=\"true\"\n scEmailLink\n linkLocation=\"user-managers\"\n href=\"mailto:{{ manager.contacts.email }}\"\n iconStart=\"@tui.mail\"\n >\n {{ manager.contacts.email }}\n </a>\n <a\n tuiLink\n [scTelLink]=\"manager.contacts.phone\"\n [pseudo]=\"true\"\n linkLocation=\"user-managers\"\n href=\"tel:{{ manager.contacts.phone | scPhoneFormat }}\"\n iconStart=\"@tui.phone\"\n >\n {{ manager.contacts.phone | scPhoneFormat }}\n </a>\n </div>\n <button\n tuiIconButton\n size=\"m\"\n appearance=\"secondary\"\n iconStart=\"@tui.scan-qr-code\"\n (click)=\"qrClickEvent.emit(manager)\"\n ></button>\n </div>\n <hr\n *ngIf=\"!last\"\n class=\"my-2 h-px border-0 bg-tui-base-04\"\n />\n</ng-container>\n", styles: ["a[tuiLink][data-mode=onLight]._pseudo{color:var(--tui-text-secondary)}a[tuiLink][data-mode=onLight]._pseudo:hover{color:var(--tui-text-tertiary)}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "directive", type: i3.TuiLink, selector: "a[tuiLink], button[tuiLink]", inputs: ["pseudo"] }, { kind: "directive", type: i4.ScTerminalLinkDirective, selector: "a[href]" }, { kind: "directive", type: i5.ScTelLinkDirective, selector: "a[scTelLink]", inputs: ["scTelLink", "linkLocation"] }, { kind: "directive", type: i6.ScEmailLinkDirective, selector: "a[scEmailLink]", inputs: ["linkLocation"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.ScPhoneFormatPipe, name: "scPhoneFormat" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
35
35
  }
36
36
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ScUserManagersComponent, decorators: [{
37
37
  type: Component,
38
- args: [{ selector: 'sc-user-managers', changeDetection: ChangeDetectionStrategy.OnPush, template: "<p class=\"mb-2 font-extrabold\">\u0412\u0430\u0448\u0438 \u043F\u0435\u0440\u0441\u043E\u043D\u0430\u043B\u044C\u043D\u044B\u0435 \u043C\u0435\u043D\u0435\u0434\u0436\u0435\u0440\u044B:</p>\n<ng-container *ngFor=\"let manager of managers$ | async; let last = last\">\n <div class=\"flex justify-between\">\n <div class=\"flex flex-col gap-1 !font-medium text-tui-text-02\">\n {{ manager.name }}\n <a\n tuiLink\n [pseudo]=\"true\"\n scEmailLink\n linkLocation=\"user-managers\"\n href=\"mailto:{{ manager.contacts.email }}\"\n iconStart=\"@tui.mail\"\n >\n {{ manager.contacts.email }}\n </a>\n <a\n tuiLink\n [scTelLink]=\"manager.contacts.phone\"\n [pseudo]=\"true\"\n linkLocation=\"user-managers\"\n href=\"tel:{{ manager.contacts.phone | scFormatePhone }}\"\n iconStart=\"@tui.phone\"\n >\n {{ manager.contacts.phone | scFormatePhone }}\n </a>\n </div>\n <button\n tuiIconButton\n size=\"m\"\n appearance=\"secondary\"\n iconStart=\"@tui.scan-qr-code\"\n (click)=\"qrClickEvent.emit(manager)\"\n ></button>\n </div>\n <hr\n *ngIf=\"!last\"\n class=\"my-2 h-px border-0 bg-tui-base-04\"\n />\n</ng-container>\n", styles: ["a[tuiLink][data-mode=onLight]._pseudo{color:var(--tui-text-secondary)}a[tuiLink][data-mode=onLight]._pseudo:hover{color:var(--tui-text-tertiary)}\n"] }]
38
+ args: [{ selector: 'sc-user-managers', changeDetection: ChangeDetectionStrategy.OnPush, template: "<p class=\"mb-2 font-extrabold\">\u0412\u0430\u0448\u0438 \u043F\u0435\u0440\u0441\u043E\u043D\u0430\u043B\u044C\u043D\u044B\u0435 \u043C\u0435\u043D\u0435\u0434\u0436\u0435\u0440\u044B:</p>\n<ng-container *ngFor=\"let manager of managers$ | async; let last = last\">\n <div class=\"flex justify-between\">\n <div class=\"flex flex-col gap-1 !font-medium text-tui-text-02\">\n {{ manager.name }}\n <a\n tuiLink\n [pseudo]=\"true\"\n scEmailLink\n linkLocation=\"user-managers\"\n href=\"mailto:{{ manager.contacts.email }}\"\n iconStart=\"@tui.mail\"\n >\n {{ manager.contacts.email }}\n </a>\n <a\n tuiLink\n [scTelLink]=\"manager.contacts.phone\"\n [pseudo]=\"true\"\n linkLocation=\"user-managers\"\n href=\"tel:{{ manager.contacts.phone | scPhoneFormat }}\"\n iconStart=\"@tui.phone\"\n >\n {{ manager.contacts.phone | scPhoneFormat }}\n </a>\n </div>\n <button\n tuiIconButton\n size=\"m\"\n appearance=\"secondary\"\n iconStart=\"@tui.scan-qr-code\"\n (click)=\"qrClickEvent.emit(manager)\"\n ></button>\n </div>\n <hr\n *ngIf=\"!last\"\n class=\"my-2 h-px border-0 bg-tui-base-04\"\n />\n</ng-container>\n", styles: ["a[tuiLink][data-mode=onLight]._pseudo{color:var(--tui-text-secondary)}a[tuiLink][data-mode=onLight]._pseudo:hover{color:var(--tui-text-tertiary)}\n"] }]
39
39
  }], ctorParameters: () => [{ type: i1.ScUserService }], propDecorators: { qrClickEvent: [{
40
40
  type: Output
41
41
  }] } });
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtdXNlci1tYW5hZ2Vycy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvdXNlci91c2VyLW1hbmFnZXJzL3NjLXVzZXItbWFuYWdlcnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL3VzZXIvdXNlci1tYW5hZ2Vycy9zYy11c2VyLW1hbmFnZXJzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6RixPQUFPLEVBQUUsR0FBRyxFQUFjLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7QUFFdkM7O0dBRUc7QUFPSCxNQUFNLE9BQU8sdUJBQXVCO0lBY2hDOzs7O09BSUc7SUFDSCxZQUFvQyxXQUEwQjtRQUExQixnQkFBVyxHQUFYLFdBQVcsQ0FBZTtRQWxCOUQ7O1dBRUc7UUFDYSxjQUFTLEdBQXlDLElBQUksQ0FBQyxXQUFXO2FBQzdFLGNBQWMsRUFBRTthQUNoQixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQWEsRUFBRSxDQUFhLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUU3STs7V0FFRztRQUVhLGlCQUFZLEdBQTZCLElBQUksWUFBWSxFQUFjLENBQUM7SUFPdkIsQ0FBQzsrR0FuQnpELHVCQUF1QjttR0FBdkIsdUJBQXVCLG1HQ2JwQyx3K0NBdUNBOzs0RkQxQmEsdUJBQXVCO2tCQU5uQyxTQUFTOytCQUNJLGtCQUFrQixtQkFHWCx1QkFBdUIsQ0FBQyxNQUFNO2tGQWMvQixZQUFZO3NCQUQzQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNjSU1hbmFnZXIsIFNjVXNlclNlcnZpY2UgfSBmcm9tICdAc25hYmNlbnRyL2NsaWVudC1jb3JlJztcbmltcG9ydCB7IG1hcCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG4vKipcbiAqINCa0L7QvNC/0L7QvdC10L3RgiDQv9C10YDRgdC+0L3QsNC70YzQvdGL0YUg0LzQtdC90LXQtNC20LXRgNC+0LIg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPLlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3NjLXVzZXItbWFuYWdlcnMnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zYy11c2VyLW1hbmFnZXJzLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zYy11c2VyLW1hbmFnZXJzLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNjVXNlck1hbmFnZXJzQ29tcG9uZW50IHtcbiAgICAvKipcbiAgICAgKiDQn9C10YDRgdC+0L3QsNC70YzQvdGL0LUg0LzQtdC90LXQtNC20LXRgNGLINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjy5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgbWFuYWdlcnMkOiBPYnNlcnZhYmxlPFNjSU1hbmFnZXJbXSB8IHVuZGVmaW5lZD4gPSB0aGlzLnVzZXJTZXJ2aWNlXG4gICAgICAgIC5nZXRVc2VyQ2hhbmdlJCgpXG4gICAgICAgIC5waXBlKG1hcCgodXNlcikgPT4gdXNlci5tYW5hZ2Vycz8uc29ydCgoYTogU2NJTWFuYWdlciwgYjogU2NJTWFuYWdlcikgPT4gTnVtYmVyKEJvb2xlYW4oYi5pc1ByaW1hcnkpKSAtIE51bWJlcihCb29sZWFuKGEuaXNQcmltYXJ5KSkpKSk7XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LHRi9GC0LjQtSDQvdCw0LbQsNGC0LjRjyDQvdCwINC60L3QvtC/0LrRgyBRUiDQutC+0LTQsC5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgcmVhZG9ubHkgcXJDbGlja0V2ZW50OiBFdmVudEVtaXR0ZXI8U2NJTWFuYWdlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPFNjSU1hbmFnZXI+KCk7XG5cbiAgICAvKipcbiAgICAgKiDQmNC90LjRhtC40LDQu9C40LfQuNGA0YPQtdGCINGN0LrQt9C10LzQv9C70Y/RgCDQutC70LDRgdGB0LAge0BsaW5rIFNjVXNlck1hbmFnZXJzQ29tcG9uZW50fS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB1c2VyU2VydmljZSDQodC10YDQstC40YEg0LTQsNC90L3Ri9GFINC+INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtS5cbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSB1c2VyU2VydmljZTogU2NVc2VyU2VydmljZSkge31cbn1cbiIsIjxwIGNsYXNzPVwibWItMiBmb250LWV4dHJhYm9sZFwiPtCS0LDRiNC4INC/0LXRgNGB0L7QvdCw0LvRjNC90YvQtSDQvNC10L3QtdC00LbQtdGA0Ys6PC9wPlxuPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbWFuYWdlciBvZiBtYW5hZ2VycyQgfCBhc3luYzsgbGV0IGxhc3QgPSBsYXN0XCI+XG4gICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC0xICFmb250LW1lZGl1bSB0ZXh0LXR1aS10ZXh0LTAyXCI+XG4gICAgICAgICAgICB7eyBtYW5hZ2VyLm5hbWUgfX1cbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgdHVpTGlua1xuICAgICAgICAgICAgICAgIFtwc2V1ZG9dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgc2NFbWFpbExpbmtcbiAgICAgICAgICAgICAgICBsaW5rTG9jYXRpb249XCJ1c2VyLW1hbmFnZXJzXCJcbiAgICAgICAgICAgICAgICBocmVmPVwibWFpbHRvOnt7IG1hbmFnZXIuY29udGFjdHMuZW1haWwgfX1cIlxuICAgICAgICAgICAgICAgIGljb25TdGFydD1cIkB0dWkubWFpbFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgbWFuYWdlci5jb250YWN0cy5lbWFpbCB9fVxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICB0dWlMaW5rXG4gICAgICAgICAgICAgICAgW3NjVGVsTGlua109XCJtYW5hZ2VyLmNvbnRhY3RzLnBob25lXCJcbiAgICAgICAgICAgICAgICBbcHNldWRvXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIGxpbmtMb2NhdGlvbj1cInVzZXItbWFuYWdlcnNcIlxuICAgICAgICAgICAgICAgIGhyZWY9XCJ0ZWw6e3sgbWFuYWdlci5jb250YWN0cy5waG9uZSB8IHNjRm9ybWF0ZVBob25lIH19XCJcbiAgICAgICAgICAgICAgICBpY29uU3RhcnQ9XCJAdHVpLnBob25lXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBtYW5hZ2VyLmNvbnRhY3RzLnBob25lIHwgc2NGb3JtYXRlUGhvbmUgfX1cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR1aUljb25CdXR0b25cbiAgICAgICAgICAgIHNpemU9XCJtXCJcbiAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgaWNvblN0YXJ0PVwiQHR1aS5zY2FuLXFyLWNvZGVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInFyQ2xpY2tFdmVudC5lbWl0KG1hbmFnZXIpXCJcbiAgICAgICAgPjwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIDxoclxuICAgICAgICAqbmdJZj1cIiFsYXN0XCJcbiAgICAgICAgY2xhc3M9XCJteS0yIGgtcHggYm9yZGVyLTAgYmctdHVpLWJhc2UtMDRcIlxuICAgIC8+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtdXNlci1tYW5hZ2Vycy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvdXNlci91c2VyLW1hbmFnZXJzL3NjLXVzZXItbWFuYWdlcnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL3VzZXIvdXNlci1tYW5hZ2Vycy9zYy11c2VyLW1hbmFnZXJzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6RixPQUFPLEVBQUUsR0FBRyxFQUFjLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7QUFFdkM7O0dBRUc7QUFPSCxNQUFNLE9BQU8sdUJBQXVCO0lBY2hDOzs7O09BSUc7SUFDSCxZQUFvQyxXQUEwQjtRQUExQixnQkFBVyxHQUFYLFdBQVcsQ0FBZTtRQWxCOUQ7O1dBRUc7UUFDYSxjQUFTLEdBQXlDLElBQUksQ0FBQyxXQUFXO2FBQzdFLGNBQWMsRUFBRTthQUNoQixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQWEsRUFBRSxDQUFhLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUU3STs7V0FFRztRQUVhLGlCQUFZLEdBQTZCLElBQUksWUFBWSxFQUFjLENBQUM7SUFPdkIsQ0FBQzsrR0FuQnpELHVCQUF1QjttR0FBdkIsdUJBQXVCLG1HQ2JwQyxzK0NBdUNBOzs0RkQxQmEsdUJBQXVCO2tCQU5uQyxTQUFTOytCQUNJLGtCQUFrQixtQkFHWCx1QkFBdUIsQ0FBQyxNQUFNO2tGQWMvQixZQUFZO3NCQUQzQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNjSU1hbmFnZXIsIFNjVXNlclNlcnZpY2UgfSBmcm9tICdAc25hYmNlbnRyL2NsaWVudC1jb3JlJztcbmltcG9ydCB7IG1hcCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG4vKipcbiAqINCa0L7QvNC/0L7QvdC10L3RgiDQv9C10YDRgdC+0L3QsNC70YzQvdGL0YUg0LzQtdC90LXQtNC20LXRgNC+0LIg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPLlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3NjLXVzZXItbWFuYWdlcnMnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zYy11c2VyLW1hbmFnZXJzLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zYy11c2VyLW1hbmFnZXJzLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNjVXNlck1hbmFnZXJzQ29tcG9uZW50IHtcbiAgICAvKipcbiAgICAgKiDQn9C10YDRgdC+0L3QsNC70YzQvdGL0LUg0LzQtdC90LXQtNC20LXRgNGLINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjy5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgbWFuYWdlcnMkOiBPYnNlcnZhYmxlPFNjSU1hbmFnZXJbXSB8IHVuZGVmaW5lZD4gPSB0aGlzLnVzZXJTZXJ2aWNlXG4gICAgICAgIC5nZXRVc2VyQ2hhbmdlJCgpXG4gICAgICAgIC5waXBlKG1hcCgodXNlcikgPT4gdXNlci5tYW5hZ2Vycz8uc29ydCgoYTogU2NJTWFuYWdlciwgYjogU2NJTWFuYWdlcikgPT4gTnVtYmVyKEJvb2xlYW4oYi5pc1ByaW1hcnkpKSAtIE51bWJlcihCb29sZWFuKGEuaXNQcmltYXJ5KSkpKSk7XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LHRi9GC0LjQtSDQvdCw0LbQsNGC0LjRjyDQvdCwINC60L3QvtC/0LrRgyBRUiDQutC+0LTQsC5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgcmVhZG9ubHkgcXJDbGlja0V2ZW50OiBFdmVudEVtaXR0ZXI8U2NJTWFuYWdlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPFNjSU1hbmFnZXI+KCk7XG5cbiAgICAvKipcbiAgICAgKiDQmNC90LjRhtC40LDQu9C40LfQuNGA0YPQtdGCINGN0LrQt9C10LzQv9C70Y/RgCDQutC70LDRgdGB0LAge0BsaW5rIFNjVXNlck1hbmFnZXJzQ29tcG9uZW50fS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB1c2VyU2VydmljZSDQodC10YDQstC40YEg0LTQsNC90L3Ri9GFINC+INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtS5cbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSB1c2VyU2VydmljZTogU2NVc2VyU2VydmljZSkge31cbn1cbiIsIjxwIGNsYXNzPVwibWItMiBmb250LWV4dHJhYm9sZFwiPtCS0LDRiNC4INC/0LXRgNGB0L7QvdCw0LvRjNC90YvQtSDQvNC10L3QtdC00LbQtdGA0Ys6PC9wPlxuPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbWFuYWdlciBvZiBtYW5hZ2VycyQgfCBhc3luYzsgbGV0IGxhc3QgPSBsYXN0XCI+XG4gICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC0xICFmb250LW1lZGl1bSB0ZXh0LXR1aS10ZXh0LTAyXCI+XG4gICAgICAgICAgICB7eyBtYW5hZ2VyLm5hbWUgfX1cbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgdHVpTGlua1xuICAgICAgICAgICAgICAgIFtwc2V1ZG9dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgc2NFbWFpbExpbmtcbiAgICAgICAgICAgICAgICBsaW5rTG9jYXRpb249XCJ1c2VyLW1hbmFnZXJzXCJcbiAgICAgICAgICAgICAgICBocmVmPVwibWFpbHRvOnt7IG1hbmFnZXIuY29udGFjdHMuZW1haWwgfX1cIlxuICAgICAgICAgICAgICAgIGljb25TdGFydD1cIkB0dWkubWFpbFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgbWFuYWdlci5jb250YWN0cy5lbWFpbCB9fVxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICB0dWlMaW5rXG4gICAgICAgICAgICAgICAgW3NjVGVsTGlua109XCJtYW5hZ2VyLmNvbnRhY3RzLnBob25lXCJcbiAgICAgICAgICAgICAgICBbcHNldWRvXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIGxpbmtMb2NhdGlvbj1cInVzZXItbWFuYWdlcnNcIlxuICAgICAgICAgICAgICAgIGhyZWY9XCJ0ZWw6e3sgbWFuYWdlci5jb250YWN0cy5waG9uZSB8IHNjUGhvbmVGb3JtYXQgfX1cIlxuICAgICAgICAgICAgICAgIGljb25TdGFydD1cIkB0dWkucGhvbmVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IG1hbmFnZXIuY29udGFjdHMucGhvbmUgfCBzY1Bob25lRm9ybWF0IH19XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0dWlJY29uQnV0dG9uXG4gICAgICAgICAgICBzaXplPVwibVwiXG4gICAgICAgICAgICBhcHBlYXJhbmNlPVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgIGljb25TdGFydD1cIkB0dWkuc2Nhbi1xci1jb2RlXCJcbiAgICAgICAgICAgIChjbGljayk9XCJxckNsaWNrRXZlbnQuZW1pdChtYW5hZ2VyKVwiXG4gICAgICAgID48L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8aHJcbiAgICAgICAgKm5nSWY9XCIhbGFzdFwiXG4gICAgICAgIGNsYXNzPVwibXktMiBoLXB4IGJvcmRlci0wIGJnLXR1aS1iYXNlLTA0XCJcbiAgICAvPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
@@ -0,0 +1,123 @@
1
+ import { InputSignal, OutputEmitterRef } from '@angular/core';
2
+ import { FormControl, FormGroup } from '@angular/forms';
3
+ import { ScFeedbackForm, ScISuggestionType, ScUploadedFile } from '@snabcentr/client-core';
4
+ import { TuiDialogContext } from '@taiga-ui/core';
5
+ import { TuiFileLike } from '@taiga-ui/kit';
6
+ import { Observable, Subject } from 'rxjs';
7
+ import * as i0 from "@angular/core";
8
+ /**
9
+ * Компонент формы обратной связи.
10
+ */
11
+ export declare class ScFeedbackFormComponent {
12
+ /**
13
+ * Условное название блока где расположена ссылка.
14
+ */
15
+ readonly formSlag: InputSignal<keyof typeof ScFeedbackForm>;
16
+ /**
17
+ * Событие нажатия на кнопку договора оферты.
18
+ */
19
+ readonly onClickOffer: OutputEmitterRef<void>;
20
+ /**
21
+ * Событие успешной отправки формы.
22
+ */
23
+ readonly onSendSuccess: OutputEmitterRef<void>;
24
+ /**
25
+ * Сервис обратной связи.
26
+ */
27
+ private readonly feedbackService;
28
+ /**
29
+ * Сервис конвертации данных.
30
+ */
31
+ private readonly convertersService;
32
+ /**
33
+ * Максимальное количество файлов, отправляемых в форме.
34
+ */
35
+ private readonly maxFilesInForm;
36
+ /**
37
+ * Сервис данных о пользователе.
38
+ */
39
+ private readonly user$;
40
+ /**
41
+ * Контекст диалогового окна, в котором открыт компонент.
42
+ */
43
+ protected readonly context: TuiDialogContext<void, {
44
+ onClickOfferHandler: () => void;
45
+ formSlag: keyof typeof ScFeedbackForm;
46
+ }> | null;
47
+ /**
48
+ * Поле ввода для recaptcha.
49
+ */
50
+ protected readonly recaptchaControl: FormControl<string | null>;
51
+ /**
52
+ * Группа полей ввода для формы «Пожелания и предложения по улучшению сайта».
53
+ */
54
+ protected readonly form: FormGroup<{
55
+ name: FormControl<string | null>;
56
+ phone: FormControl<string | null>;
57
+ email: FormControl<string | null>;
58
+ message: FormControl<string | null>;
59
+ files: FormControl<ScUploadedFile[] | null>;
60
+ }>;
61
+ /**
62
+ * Перечисление типов подсказок.
63
+ */
64
+ protected readonly suggestionType: typeof ScISuggestionType;
65
+ /**
66
+ * {@link Subject} события отправки формы.
67
+ */
68
+ protected readonly onSubmit: Subject<void>;
69
+ /**
70
+ * {@link Observable} запроса на отправку данных.
71
+ */
72
+ protected readonly request$: Observable<undefined | null>;
73
+ /**
74
+ * {@link Observable} изменения состояния загрузки данных.
75
+ */
76
+ protected readonly loading$: Observable<boolean>;
77
+ /**
78
+ * Управляет состоянием загруженных файлов.
79
+ */
80
+ protected readonly loadedFile: FormControl<TuiFileLike[] | null>;
81
+ /**
82
+ * Observable, который отслеживает, приняты ли файлы в соответствии с требованиями по типу размеру и т.д.
83
+ */
84
+ protected readonly accepted$: Observable<File[]>;
85
+ /**
86
+ * Список файлов, которые были отклонены при загрузке.
87
+ */
88
+ protected rejected: readonly File[];
89
+ /**
90
+ * Инициализирует экземпляр класса {@link ScFeedbackFormComponent}.
91
+ */
92
+ constructor();
93
+ /**
94
+ * Обрабатывает отклоненные файлы.
95
+ *
96
+ * @param files Список файлов, которые были отклонены.
97
+ */
98
+ protected onReject(files: readonly File[]): void;
99
+ /**
100
+ * Удаляет файл из списка загруженных и отклоненных файлов.
101
+ *
102
+ * @param file Файл, который нужно удалить.
103
+ */
104
+ protected onRemove(file: File): void;
105
+ /**
106
+ * Загружает файл в форму обратной связи.
107
+ *
108
+ * @param files Набор файлов.
109
+ */
110
+ private onUploadFile;
111
+ /**
112
+ * Проверяет количество файлов загруженных пользователем.
113
+ *
114
+ * @param maxLength максимальное допустимое количество файлов для отправки.
115
+ */
116
+ private maxFilesLength;
117
+ /**
118
+ * Выполняет очистку полей формы.
119
+ */
120
+ private resetForm;
121
+ static ɵfac: i0.ɵɵFactoryDeclaration<ScFeedbackFormComponent, never>;
122
+ static ɵcmp: i0.ɵɵComponentDeclaration<ScFeedbackFormComponent, "sc-feedback-form", never, { "formSlag": { "alias": "formSlag"; "required": true; "isSignal": true; }; }, { "onClickOffer": "onClickOffer"; "onSendSuccess": "onSendSuccess"; }, never, never, true, never>;
123
+ }
@@ -0,0 +1,20 @@
1
+ import { TuiDialogContext } from '@taiga-ui/core';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * Компонент «Спасибо!».
5
+ */
6
+ export declare class ScGratitudeComponent {
7
+ /**
8
+ * Контекст диалогового окна, в котором открыт компонент.
9
+ */
10
+ protected readonly context: TuiDialogContext<void, {
11
+ autoClose: number;
12
+ subTitle: string;
13
+ }> | null;
14
+ /**
15
+ * Инициализирует экземпляр класса {@link ScGratitudeComponent}.
16
+ */
17
+ constructor();
18
+ static ɵfac: i0.ɵɵFactoryDeclaration<ScGratitudeComponent, never>;
19
+ static ɵcmp: i0.ɵɵComponentDeclaration<ScGratitudeComponent, "sc-gratitude", never, {}, {}, never, never, true, never>;
20
+ }
@@ -0,0 +1,2 @@
1
+ export * from './feedback-form/sc-feedback-form.component';
2
+ export * from './gratitude/sc-gratitude.component';