@snabcentr/client-ui 4.20.1 → 4.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/alerts/confirm-alert/sc-confirm-alert.component.d.ts +22 -0
- package/alerts/index.d.ts +1 -0
- package/cart/add-or-editing-cart-item-dialog/sc-add-or-editing-cart-item-dialog.component.d.ts +1 -1
- package/cart/sc-cart-add-products-from-csv-dialog/sc-cart-add-products-from-csv-dialog.component.d.ts +3 -3
- package/catalog/input-quantity/sc-input-quantity.component.d.ts +17 -1
- package/contragents/sc-contragents.module.d.ts +1 -1
- package/delivery-address/add-delivery-address-dialog/sc-add-delivery-address-dialog.component.d.ts +5 -0
- package/delivery-address/sc-delivery-address.module.d.ts +1 -1
- package/directives/address-quality/sc-address-quality.directive.d.ts +5 -0
- package/directives/address-quality/sc-address-quality.service.d.ts +9 -1
- package/esm2022/alerts/confirm-alert/sc-confirm-alert.component.mjs +29 -0
- package/esm2022/alerts/index.mjs +2 -0
- package/esm2022/auth/sc-simple-sign-up-form/sc-simple-sign-up-form.component.mjs +1 -1
- package/esm2022/auth/sign-up-form/sc-sign-up-form.component.mjs +1 -1
- package/esm2022/cart/add-or-editing-cart-item-dialog/sc-add-or-editing-cart-item-dialog.component.mjs +4 -3
- package/esm2022/cart/sc-cart-add-products-from-csv-dialog/sc-cart-add-products-from-csv-dialog.component.mjs +5 -16
- package/esm2022/catalog/input-quantity/sc-input-quantity.component.mjs +24 -4
- package/esm2022/catalog/notify-when-in-stock-dialog/sc-notify-when-in-stock-dialog.component.mjs +2 -2
- package/esm2022/catalog/price-warehouse-stock/sc-price-warehouse-stock.component.mjs +3 -3
- package/esm2022/contacts/new-contact-form/sc-new-contact-form.component.mjs +1 -1
- package/esm2022/contragents/new-contragent-bank-account-form/sc-new-contragent-bank-account-form.component.mjs +1 -1
- package/esm2022/contragents/new-contragent-form/sc-new-contragent-form.component.mjs +3 -3
- package/esm2022/contragents/sc-contragents.module.mjs +5 -2
- package/esm2022/delivery-address/add-delivery-address-dialog/sc-add-delivery-address-dialog.component.mjs +10 -3
- package/esm2022/delivery-address/sc-delivery-address.module.mjs +5 -2
- package/esm2022/directives/address-quality/sc-address-quality.directive.mjs +8 -1
- package/esm2022/directives/address-quality/sc-address-quality.service.mjs +14 -6
- package/esm2022/feedback/feedback-form/sc-feedback-form.component.mjs +21 -11
- package/esm2022/form-fields/suggestion-field/sc-suggestion-field.component.mjs +6 -31
- package/esm2022/helpers/sc-api-error-helper.mjs +25 -0
- package/esm2022/helpers/sc-file-helper.mjs +29 -0
- package/esm2022/order/draft/helpers/sc-draft-list-helper.mjs +83 -0
- package/esm2022/order/draft/models/sc-i-draft-list-item.mjs +2 -0
- package/esm2022/order/draft/profstroy/actualization-panel/sc-profstroy-actualization-panel.component.mjs +73 -0
- package/esm2022/order/draft/profstroy/badge/sc-profstroy-badge.component.mjs +21 -0
- package/esm2022/order/draft/profstroy/badges/sc-profstroy-draft-badges.component.mjs +31 -0
- package/esm2022/order/draft/profstroy/create-dialog/sc-profstroy-draft-create-dialog.component.mjs +139 -0
- package/esm2022/order/draft/profstroy/enums/sc-profstroy-draft-state.mjs +32 -0
- package/esm2022/order/draft/profstroy/helpers/sc-profstroy-draft-helper.mjs +94 -0
- package/esm2022/order/draft/profstroy/index.mjs +8 -0
- package/esm2022/order/draft/profstroy/models/sc-i-profstroy-draft-state-view.mjs +2 -0
- package/esm2022/order/draft/sc-draft.component.mjs +148 -14
- package/esm2022/order/draft/services/sc-draft-expiration-clock.service.mjs +42 -0
- package/esm2022/order/draft/services/sc-draft-list-updates.service.mjs +288 -0
- package/esm2022/order/index.mjs +6 -1
- package/esm2022/order/new-order-items/sc-new-order-items.component.mjs +11 -3
- package/esm2022/order/order-form/sc-order-form.component.mjs +4 -2
- package/esm2022/order/order-item/sc-order-item.component.mjs +37 -5
- package/esm2022/order/order-items-list/sc-order-items-list.component.mjs +282 -44
- package/esm2022/order/order-items-list-by-stock/sc-order-items-list-by-stock.component.mjs +1 -1
- package/esm2022/order/order-items-list-with-actions/sc-order-items-list-with-actions.component.mjs +15 -3
- package/esm2022/pipes/sc-format-date.mjs +1 -1
- package/esm2022/providers/cleanup-recaptcha-artifacts.mjs +30 -0
- package/esm2022/providers/index.mjs +2 -1
- package/esm2022/providers/sc-block-incomplete-address.mjs +3 -3
- package/esm2022/providers/sc-date-formatter.mjs +1 -1
- package/esm2022/public-api.mjs +2 -2
- package/esm2022/samples/sc-sample.module.mjs +10 -3
- package/esm2022/services/index.mjs +1 -2
- package/esm2022/user/update-user-info-dialog/sc-update-user-info-dialog.component.mjs +3 -3
- package/feedback/feedback-form/sc-feedback-form.component.d.ts +1 -1
- package/fesm2022/snabcentr-client-ui.mjs +1483 -527
- package/fesm2022/snabcentr-client-ui.mjs.map +1 -1
- package/form-fields/suggestion-field/sc-suggestion-field.component.d.ts +3 -14
- package/helpers/sc-api-error-helper.d.ts +18 -0
- package/helpers/sc-file-helper.d.ts +13 -0
- package/order/draft/helpers/sc-draft-list-helper.d.ts +51 -0
- package/order/draft/models/sc-i-draft-list-item.d.ts +14 -0
- package/order/draft/profstroy/actualization-panel/sc-profstroy-actualization-panel.component.d.ts +58 -0
- package/order/draft/profstroy/badge/sc-profstroy-badge.component.d.ts +12 -0
- package/order/draft/profstroy/badges/sc-profstroy-draft-badges.component.d.ts +21 -0
- package/order/draft/profstroy/create-dialog/sc-profstroy-draft-create-dialog.component.d.ts +65 -0
- package/order/draft/profstroy/enums/sc-profstroy-draft-state.d.ts +29 -0
- package/order/draft/profstroy/helpers/sc-profstroy-draft-helper.d.ts +33 -0
- package/order/draft/profstroy/index.d.ts +7 -0
- package/order/draft/profstroy/models/sc-i-profstroy-draft-state-view.d.ts +17 -0
- package/order/draft/sc-draft.component.d.ts +73 -1
- package/order/draft/services/sc-draft-expiration-clock.service.d.ts +29 -0
- package/order/draft/services/sc-draft-list-updates.service.d.ts +158 -0
- package/order/index.d.ts +5 -0
- package/order/new-order-items/sc-new-order-items.component.d.ts +9 -1
- package/order/order-form/sc-order-form.component.d.ts +1 -0
- package/order/order-item/sc-order-item.component.d.ts +25 -1
- package/order/order-items-list/sc-order-items-list.component.d.ts +140 -7
- package/order/order-items-list-with-actions/sc-order-items-list-with-actions.component.d.ts +13 -1
- package/package.json +3 -2
- package/pipes/sc-format-date.d.ts +1 -1
- package/providers/cleanup-recaptcha-artifacts.d.ts +7 -0
- package/providers/index.d.ts +1 -0
- package/providers/sc-block-incomplete-address.d.ts +1 -1
- package/providers/sc-date-formatter.d.ts +1 -1
- package/public-api.d.ts +1 -1
- package/release_notes.tmp +8 -3
- package/samples/sc-sample.module.d.ts +2 -1
- package/services/index.d.ts +0 -1
- package/styles/taiga/variables.less +16 -1
- package/styles/tailwind/tailwind.scss +43 -40
- package/esm2022/services/sc-scripts.service.mjs +0 -106
- package/esm2022/smart-captcha/index.mjs +0 -5
- package/esm2022/smart-captcha/interfaces/index.mjs +0 -6
- package/esm2022/smart-captcha/interfaces/sc-smart-captcha-api.mjs +0 -2
- package/esm2022/smart-captcha/interfaces/sc-smart-captcha-event.mjs +0 -2
- package/esm2022/smart-captcha/interfaces/sc-smart-captcha-language.mjs +0 -2
- package/esm2022/smart-captcha/interfaces/sc-smart-captcha-render-params.mjs +0 -2
- package/esm2022/smart-captcha/interfaces/sc-smart-captcha-settings.mjs +0 -2
- package/esm2022/smart-captcha/interfaces/sc-smart-captcha-window.mjs +0 -2
- package/esm2022/smart-captcha/sc-smart-captcha.component.mjs +0 -167
- package/esm2022/smart-captcha/services/index.mjs +0 -2
- package/esm2022/smart-captcha/services/sc-smart-captcha-loader.service.mjs +0 -87
- package/esm2022/smart-captcha/tokens/index.mjs +0 -3
- package/esm2022/smart-captcha/tokens/sc-smart-captcha-load-timeout.token.mjs +0 -8
- package/esm2022/smart-captcha/tokens/sc-smart-captcha-settings.token.mjs +0 -6
- package/services/sc-scripts.service.d.ts +0 -51
- package/smart-captcha/index.d.ts +0 -4
- package/smart-captcha/interfaces/index.d.ts +0 -5
- package/smart-captcha/interfaces/sc-smart-captcha-api.d.ts +0 -36
- package/smart-captcha/interfaces/sc-smart-captcha-event.d.ts +0 -4
- package/smart-captcha/interfaces/sc-smart-captcha-language.d.ts +0 -4
- package/smart-captcha/interfaces/sc-smart-captcha-render-params.d.ts +0 -16
- package/smart-captcha/interfaces/sc-smart-captcha-settings.d.ts +0 -16
- package/smart-captcha/interfaces/sc-smart-captcha-window.d.ts +0 -14
- package/smart-captcha/sc-smart-captcha.component.d.ts +0 -92
- package/smart-captcha/services/index.d.ts +0 -1
- package/smart-captcha/services/sc-smart-captcha-loader.service.d.ts +0 -50
- package/smart-captcha/tokens/index.d.ts +0 -2
- package/smart-captcha/tokens/sc-smart-captcha-load-timeout.token.d.ts +0 -5
- package/smart-captcha/tokens/sc-smart-captcha-settings.token.d.ts +0 -6
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import { HttpParams } from '@angular/common/http';
|
|
2
|
+
import { ScIPaginationMeta, ScOrderDraft } from '@snabcentr/client-core';
|
|
3
|
+
import { Observable } from 'rxjs';
|
|
4
|
+
import { ScIDraftListItem } from '../models/sc-i-draft-list-item';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
/**
|
|
7
|
+
* Сервис загрузки и фонового обновления страницы списка черновиков. Предоставляется компонентом списка.
|
|
8
|
+
*
|
|
9
|
+
* Страница загружается по параметрам из {@link connect} с индикатором загрузки, после показа загруженной страницы сервис сообщает о её загрузке.
|
|
10
|
+
*
|
|
11
|
+
* Если состав страницы не изменился, черновики обновляются на месте с сохранением раскрытых строк. Если черновики появились, пропали
|
|
12
|
+
* или поменялся порядок, полученная страница откладывается и показывается уведомление с предложением перезагрузить список.
|
|
13
|
+
* После отказа уведомление о том же составе не повторяется. Черновики Профстрой в обработке дополнительно опрашиваются лёгким запросом,
|
|
14
|
+
* текущий момент для меток срока берётся из общего источника {@link ScDraftExpirationClockService}.
|
|
15
|
+
*/
|
|
16
|
+
export declare class ScDraftListUpdatesService {
|
|
17
|
+
/**
|
|
18
|
+
* Сервис для работы с черновиками заказов.
|
|
19
|
+
*/
|
|
20
|
+
private readonly draftsService;
|
|
21
|
+
/**
|
|
22
|
+
* Сервис уведомлений.
|
|
23
|
+
*/
|
|
24
|
+
private readonly alerts;
|
|
25
|
+
/**
|
|
26
|
+
* Сервис текущего момента для меток срока актуализации.
|
|
27
|
+
*/
|
|
28
|
+
private readonly expirationClock;
|
|
29
|
+
/**
|
|
30
|
+
* Ссылка для автоматического управления уничтожением зависимостей.
|
|
31
|
+
*/
|
|
32
|
+
private readonly destroyRef;
|
|
33
|
+
/**
|
|
34
|
+
* Элементы текущей страницы списка.
|
|
35
|
+
*/
|
|
36
|
+
private readonly pageItems;
|
|
37
|
+
/**
|
|
38
|
+
* Данные пагинации текущей страницы.
|
|
39
|
+
*/
|
|
40
|
+
private readonly pageMeta;
|
|
41
|
+
/**
|
|
42
|
+
* Признак загрузки страницы списка по действию пользователя.
|
|
43
|
+
*/
|
|
44
|
+
private readonly pageLoading;
|
|
45
|
+
/**
|
|
46
|
+
* {@link Subject} события загрузки страницы списка по действию пользователя.
|
|
47
|
+
*/
|
|
48
|
+
private readonly pageLoadedSubject;
|
|
49
|
+
/**
|
|
50
|
+
* Страница с изменённым составом, которая ждёт решения пользователя.
|
|
51
|
+
*/
|
|
52
|
+
private pendingPage;
|
|
53
|
+
/**
|
|
54
|
+
* Подпись состава страницы, от перезагрузки которой пользователь отказался.
|
|
55
|
+
*/
|
|
56
|
+
private declinedSignature;
|
|
57
|
+
/**
|
|
58
|
+
* Номера черновиков в обработке, которых не оказалось в ответе опроса: черновики удалены, и опрашивать их не нужно.
|
|
59
|
+
*/
|
|
60
|
+
private readonly missingIds;
|
|
61
|
+
/**
|
|
62
|
+
* Номера раскрытых черновиков, перезапрос которых уже выполняется.
|
|
63
|
+
*/
|
|
64
|
+
private readonly refreshingIds;
|
|
65
|
+
/**
|
|
66
|
+
* Подписка на показанное уведомление об изменении списка.
|
|
67
|
+
*/
|
|
68
|
+
private alertSubscription;
|
|
69
|
+
/**
|
|
70
|
+
* Номера черновиков Профстрой в обработке на текущей странице.
|
|
71
|
+
*/
|
|
72
|
+
private readonly processingIds;
|
|
73
|
+
/**
|
|
74
|
+
* Элементы текущей страницы списка.
|
|
75
|
+
*/
|
|
76
|
+
readonly items: import("@angular/core").Signal<ScIDraftListItem[] | null>;
|
|
77
|
+
/**
|
|
78
|
+
* Данные пагинации текущей страницы.
|
|
79
|
+
*/
|
|
80
|
+
readonly meta: import("@angular/core").Signal<ScIPaginationMeta | null>;
|
|
81
|
+
/**
|
|
82
|
+
* Текущий момент для определения состояния черновиков Профстрой из общего источника.
|
|
83
|
+
*/
|
|
84
|
+
readonly now: import("@angular/core").Signal<Date>;
|
|
85
|
+
/**
|
|
86
|
+
* Признак загрузки страницы списка по действию пользователя (фильтры, сортировка, пагинация). Фоновые проверки его не включают.
|
|
87
|
+
*/
|
|
88
|
+
readonly loading: import("@angular/core").Signal<boolean>;
|
|
89
|
+
/**
|
|
90
|
+
* {@link Observable} события загрузки страницы списка по действию пользователя: страница уже показана.
|
|
91
|
+
*/
|
|
92
|
+
readonly pageLoaded$: Observable<void>;
|
|
93
|
+
/**
|
|
94
|
+
* Инициализирует экземпляр класса {@link ScDraftListUpdatesService}.
|
|
95
|
+
*/
|
|
96
|
+
constructor();
|
|
97
|
+
/**
|
|
98
|
+
* Подключает к сервису параметры запроса текущей страницы: при каждом изменении параметров загружает страницу с индикатором загрузки
|
|
99
|
+
* и сообщает о её загрузке, а по текущим параметрам в фоне проверяет изменения списка. Если страница не загрузилась, остаётся текущая,
|
|
100
|
+
* а смена параметров загружает список заново.
|
|
101
|
+
*
|
|
102
|
+
* @param params$ {@link Observable} параметров запроса текущей страницы.
|
|
103
|
+
*/
|
|
104
|
+
connect(params$: Observable<HttpParams>): void;
|
|
105
|
+
/**
|
|
106
|
+
* Подставляет в строку текущей страницы полные данные черновика. Опрос черновиков в обработке сразу учитывает их состояние.
|
|
107
|
+
*
|
|
108
|
+
* @param draft Полные данные черновика.
|
|
109
|
+
*/
|
|
110
|
+
setFullDraft(draft: ScOrderDraft): void;
|
|
111
|
+
/**
|
|
112
|
+
* Показывает страницу, загруженную по действию пользователя: строки свёрнуты, отложенные данные и уведомление сбрасываются.
|
|
113
|
+
*
|
|
114
|
+
* @param page Страница списка.
|
|
115
|
+
*/
|
|
116
|
+
private setPage;
|
|
117
|
+
/**
|
|
118
|
+
* Сравнивает полученную в фоне страницу с текущей: при том же составе обновляет черновики на месте, иначе откладывает страницу и предлагает перезагрузить список.
|
|
119
|
+
*
|
|
120
|
+
* @param page Страница, полученная в фоне.
|
|
121
|
+
*/
|
|
122
|
+
private checkPage;
|
|
123
|
+
/**
|
|
124
|
+
* Обновляет на месте краткие данные черновиков и перезапрашивает полные данные раскрытых черновиков, состояние которых изменилось.
|
|
125
|
+
* Перезапрос раскрытого черновика не повторяется, пока выполняется предыдущий. Ошибка перезапроса не показывается:
|
|
126
|
+
* это фоновое обновление, его повторит следующий опрос.
|
|
127
|
+
*
|
|
128
|
+
* @param drafts Краткие данные черновиков.
|
|
129
|
+
*/
|
|
130
|
+
private applyDrafts;
|
|
131
|
+
/**
|
|
132
|
+
* Запоминает черновики, которых не оказалось в ответе опроса, чтобы больше их не опрашивать.
|
|
133
|
+
*
|
|
134
|
+
* @param ids Номера опрошенных черновиков.
|
|
135
|
+
* @param drafts Полученные краткие данные черновиков.
|
|
136
|
+
*/
|
|
137
|
+
private markMissing;
|
|
138
|
+
/**
|
|
139
|
+
* Показывает уведомление об изменении списка, если оно ещё не показано. Ответ «Нет» и закрытие уведомления считаются отказом
|
|
140
|
+
* от перезагрузки отложенного состава.
|
|
141
|
+
*/
|
|
142
|
+
private showAlert;
|
|
143
|
+
/**
|
|
144
|
+
* Закрывает показанное уведомление об изменении списка.
|
|
145
|
+
*/
|
|
146
|
+
private dismissAlert;
|
|
147
|
+
/**
|
|
148
|
+
* Показывает отложенную страницу с сохранением раскрытых строк. Уведомление закрывается всякий раз, когда отложенная страница
|
|
149
|
+
* сбрасывается, поэтому при согласии пользователя она всегда есть.
|
|
150
|
+
*/
|
|
151
|
+
private applyPendingPage;
|
|
152
|
+
/**
|
|
153
|
+
* Запоминает отказ от перезагрузки отложенного состава: уведомление о нём больше не показывается, пока состав снова не изменится.
|
|
154
|
+
*/
|
|
155
|
+
private declinePendingPage;
|
|
156
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ScDraftListUpdatesService, never>;
|
|
157
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<ScDraftListUpdatesService>;
|
|
158
|
+
}
|
package/order/index.d.ts
CHANGED
|
@@ -7,6 +7,11 @@ export * from './order-item/sc-order-item.component';
|
|
|
7
7
|
export * from './order-items-list/sc-order-items-list.component';
|
|
8
8
|
export * from './order-items-list-with-actions/sc-order-items-list-with-actions.component';
|
|
9
9
|
export * from './order-items-list-by-stock/sc-order-items-list-by-stock.component';
|
|
10
|
+
export * from './draft/helpers/sc-draft-list-helper';
|
|
11
|
+
export * from './draft/models/sc-i-draft-list-item';
|
|
12
|
+
export * from './draft/services/sc-draft-expiration-clock.service';
|
|
13
|
+
export * from './draft/services/sc-draft-list-updates.service';
|
|
14
|
+
export * from './draft/profstroy';
|
|
10
15
|
export * from './draft/sc-draft.component';
|
|
11
16
|
export * from './sc-payment-status/sc-payment-status.component';
|
|
12
17
|
export * from './sc-order.module';
|
|
@@ -16,6 +16,14 @@ export declare class ScNewOrderItemsComponent {
|
|
|
16
16
|
* Включить выбор позиций чекбоксами.
|
|
17
17
|
*/
|
|
18
18
|
readonly selectable: import("@angular/core").InputSignal<boolean>;
|
|
19
|
+
/**
|
|
20
|
+
* Признак, что цена за единицу берётся из позиции, а не из текущей цены товара.
|
|
21
|
+
*/
|
|
22
|
+
readonly useLinePrice: import("@angular/core").InputSignal<boolean>;
|
|
23
|
+
/**
|
|
24
|
+
* Подпись итоговой суммы.
|
|
25
|
+
*/
|
|
26
|
+
readonly totalLabel: import("@angular/core").InputSignal<string>;
|
|
19
27
|
/**
|
|
20
28
|
* Время обработки и принятия заказов (из настроек окружения приложения).
|
|
21
29
|
*/
|
|
@@ -25,5 +33,5 @@ export declare class ScNewOrderItemsComponent {
|
|
|
25
33
|
*/
|
|
26
34
|
readonly selectedItemsIdsChange: import("@angular/core").OutputEmitterRef<string[]>;
|
|
27
35
|
static ɵfac: i0.ɵɵFactoryDeclaration<ScNewOrderItemsComponent, never>;
|
|
28
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ScNewOrderItemsComponent, "sc-new-order-items", never, { "items": { "alias": "items"; "required": true; "isSignal": true; }; "editable": { "alias": "editable"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "orderProcessingAcceptanceTime": { "alias": "orderProcessingAcceptanceTime"; "required": false; "isSignal": true; }; }, { "selectedItemsIdsChange": "selectedItemsIdsChange"; }, never, ["[footerActions]"], true, never>;
|
|
36
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ScNewOrderItemsComponent, "sc-new-order-items", never, { "items": { "alias": "items"; "required": true; "isSignal": true; }; "editable": { "alias": "editable"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "useLinePrice": { "alias": "useLinePrice"; "required": false; "isSignal": true; }; "totalLabel": { "alias": "totalLabel"; "required": false; "isSignal": true; }; "orderProcessingAcceptanceTime": { "alias": "orderProcessingAcceptanceTime"; "required": false; "isSignal": true; }; }, { "selectedItemsIdsChange": "selectedItemsIdsChange"; }, never, ["[footerActions]"], true, never>;
|
|
29
37
|
}
|
|
@@ -201,6 +201,7 @@ export declare class ScOrderFormComponent implements OnInit {
|
|
|
201
201
|
stringify(items: readonly SelectType[]): TuiStringHandler<TuiContext<number>>;
|
|
202
202
|
/**
|
|
203
203
|
* Обрабатывает отправку формы: валидирует и эмитит данные заказа родителю.
|
|
204
|
+
* Общая ошибка сервера с прошлой отправки (например, 409) не мешает отправить форму снова, ошибки полей остаются до их исправления.
|
|
204
205
|
*/
|
|
205
206
|
submit(): void;
|
|
206
207
|
/**
|
|
@@ -26,6 +26,30 @@ export declare class ScOrderItemComponent extends AbstractScPriceCard {
|
|
|
26
26
|
* Признак, что необходимо отобразить элементы редактирования.
|
|
27
27
|
*/
|
|
28
28
|
readonly isShowEditControls: import("@angular/core").InputSignal<boolean>;
|
|
29
|
+
/**
|
|
30
|
+
* Признак, что цена за единицу берётся из позиции, а не из текущей цены товара (например, цена, зафиксированная в заявке).
|
|
31
|
+
*/
|
|
32
|
+
readonly useLinePrice: import("@angular/core").InputSignal<boolean>;
|
|
33
|
+
/**
|
|
34
|
+
* Признак, что позиция, которая не попадёт в заказ, помечается примечанием, а неактивная позиция зачёркивается.
|
|
35
|
+
*/
|
|
36
|
+
readonly markUnavailable: import("@angular/core").InputSignal<boolean>;
|
|
37
|
+
/**
|
|
38
|
+
* Признак, что изменение позиции ждёт очереди или выполняется.
|
|
39
|
+
*/
|
|
40
|
+
readonly isPending: import("@angular/core").InputSignal<boolean>;
|
|
41
|
+
/**
|
|
42
|
+
* Признак, что параметры позиции можно изменить в диалоге, даже если они ещё не заданы.
|
|
43
|
+
*/
|
|
44
|
+
readonly settingsAvailable: import("@angular/core").InputSignal<boolean>;
|
|
45
|
+
/**
|
|
46
|
+
* Оформление примечания к позиции: группа, которая не участвует в заказе, серым, остальные причины жёлтым.
|
|
47
|
+
*/
|
|
48
|
+
protected get unavailableReasonAppearance(): string;
|
|
49
|
+
/**
|
|
50
|
+
* Подсказка к количеству, когда поля количества нет: где его изменить. У неактивной позиции с примечанием количество не меняется, и подсказки нет.
|
|
51
|
+
*/
|
|
52
|
+
protected get quantityHint(): string;
|
|
29
53
|
/**
|
|
30
54
|
* Отображает спецификацию.
|
|
31
55
|
*
|
|
@@ -39,5 +63,5 @@ export declare class ScOrderItemComponent extends AbstractScPriceCard {
|
|
|
39
63
|
*/
|
|
40
64
|
protected configuratorHintVisible(visible: boolean): void;
|
|
41
65
|
static ɵfac: i0.ɵɵFactoryDeclaration<ScOrderItemComponent, never>;
|
|
42
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ScOrderItemComponent, "sc-order-item", never, { "isShowEditControls": { "alias": "isShowEditControls"; "required": false; "isSignal": true; }; }, { "clickSettings": "clickSettings"; }, never, never, true, never>;
|
|
66
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ScOrderItemComponent, "sc-order-item", never, { "isShowEditControls": { "alias": "isShowEditControls"; "required": false; "isSignal": true; }; "useLinePrice": { "alias": "useLinePrice"; "required": false; "isSignal": true; }; "markUnavailable": { "alias": "markUnavailable"; "required": false; "isSignal": true; }; "isPending": { "alias": "isPending"; "required": false; "isSignal": true; }; "settingsAvailable": { "alias": "settingsAvailable"; "required": false; "isSignal": true; }; }, { "clickSettings": "clickSettings"; }, never, never, true, never>;
|
|
43
67
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { FormControl, FormGroup } from '@angular/forms';
|
|
2
|
-
import { ScIOrderEditorLoader, ScIOrderLoader, ScOrderItem } from '@snabcentr/client-core';
|
|
2
|
+
import { ScIOrderEditorLoader, ScIOrderItemsGroup, ScIOrderLoader, ScOrderItem } from '@snabcentr/client-core';
|
|
3
3
|
import { AbstractScPriceCard } from '../../directives';
|
|
4
4
|
import { ScOrderOptions } from '../directives/sc-order-options';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
@@ -7,6 +7,14 @@ import * as i0 from "@angular/core";
|
|
|
7
7
|
* Компонент списка товаров корзины, заказа или черновика.
|
|
8
8
|
*/
|
|
9
9
|
export declare class ScOrderItemsListComponent {
|
|
10
|
+
/**
|
|
11
|
+
* Возвращает копию набора с добавленными или убранными ключами.
|
|
12
|
+
*
|
|
13
|
+
* @param keys Набор.
|
|
14
|
+
* @param changed Ключи.
|
|
15
|
+
* @param isIncluded Признак добавления.
|
|
16
|
+
*/
|
|
17
|
+
private static withKeys;
|
|
10
18
|
/**
|
|
11
19
|
* Внутренний сигнал списка элементов корзины (товаров).
|
|
12
20
|
*/
|
|
@@ -19,6 +27,48 @@ export declare class ScOrderItemsListComponent {
|
|
|
19
27
|
* Включить редактирование позиций.
|
|
20
28
|
*/
|
|
21
29
|
readonly editable: import("@angular/core").InputSignal<boolean>;
|
|
30
|
+
/**
|
|
31
|
+
* Признак вывода позиций по группам (группа позиции или «Без группы») с заголовками и итогами. Без признака позиции выводятся одним списком без заголовков.
|
|
32
|
+
*/
|
|
33
|
+
readonly grouped: import("@angular/core").InputSignal<boolean>;
|
|
34
|
+
/**
|
|
35
|
+
* Признак, что позиции, которые не попадут в заказ, помечаются примечанием и не выбираются. Неактивные позиции приглушаются и зачёркиваются.
|
|
36
|
+
*/
|
|
37
|
+
readonly markUnavailable: import("@angular/core").InputSignal<boolean>;
|
|
38
|
+
/**
|
|
39
|
+
* Признак, что цена за единицу берётся из позиции, а не из текущей цены товара.
|
|
40
|
+
*/
|
|
41
|
+
readonly useLinePrice: import("@angular/core").InputSignal<boolean>;
|
|
42
|
+
/**
|
|
43
|
+
* Признак, что параметры позиции меняются в диалоге товара: диалог доступен у любой активной позиции, а количество и метраж измеряемых товаров
|
|
44
|
+
* меняются только в нём, даже если метраж ещё не задан.
|
|
45
|
+
*/
|
|
46
|
+
readonly measuredInDialog: import("@angular/core").InputSignal<boolean>;
|
|
47
|
+
/**
|
|
48
|
+
* Откуда удаляется позиция для текста подтверждения, например «из черновика». Если не задано, позиция удаляется без подтверждения.
|
|
49
|
+
* Тот же текст используется в предупреждении о нулевом количестве.
|
|
50
|
+
*/
|
|
51
|
+
readonly deleteConfirmationTarget: import("@angular/core").InputSignal<string | null>;
|
|
52
|
+
/**
|
|
53
|
+
* Подпись итоговой суммы.
|
|
54
|
+
*/
|
|
55
|
+
readonly totalLabel: import("@angular/core").InputSignal<string>;
|
|
56
|
+
/**
|
|
57
|
+
* Позиции, разбитые на группы. Без группировки все позиции идут одной группой без заголовка.
|
|
58
|
+
*/
|
|
59
|
+
protected readonly groups: import("@angular/core").Signal<ScIOrderItemsGroup[]>;
|
|
60
|
+
/**
|
|
61
|
+
* Идентификаторы позиций, изменение или удаление которых ждёт очереди или выполняется.
|
|
62
|
+
*/
|
|
63
|
+
protected readonly pendingItemsIds: import("@angular/core").WritableSignal<ReadonlySet<string>>;
|
|
64
|
+
/**
|
|
65
|
+
* Названия удаляемых групп.
|
|
66
|
+
*/
|
|
67
|
+
protected readonly deletingGroupsNames: import("@angular/core").WritableSignal<ReadonlySet<string>>;
|
|
68
|
+
/**
|
|
69
|
+
* Названия групп с позициями, ждущими ответа: такие группы удалить нельзя.
|
|
70
|
+
*/
|
|
71
|
+
protected readonly pendingGroupsNames: import("@angular/core").Signal<ReadonlySet<string>>;
|
|
22
72
|
/**
|
|
23
73
|
* Внутренняя группа формы для выбора позиций.
|
|
24
74
|
*/
|
|
@@ -31,6 +81,11 @@ export declare class ScOrderItemsListComponent {
|
|
|
31
81
|
* Идентификаторы выбранных позиций.
|
|
32
82
|
*/
|
|
33
83
|
protected readonly itemsIds: import("@angular/core").Signal<[string, boolean][]>;
|
|
84
|
+
/**
|
|
85
|
+
* Состояние флага «Выбрать все»: `true`, если выбраны все доступные для выбора позиции, `false`, если ни одной или выбирать нечего,
|
|
86
|
+
* и `null`, если только часть.
|
|
87
|
+
*/
|
|
88
|
+
protected readonly allItemsSelected: import("@angular/core").Signal<boolean | null>;
|
|
34
89
|
/**
|
|
35
90
|
* Сигнал идентификаторов выбранных позиций.
|
|
36
91
|
*/
|
|
@@ -52,6 +107,10 @@ export declare class ScOrderItemsListComponent {
|
|
|
52
107
|
* Признак, что можно редактировать позиции.
|
|
53
108
|
*/
|
|
54
109
|
protected readonly canEdit: import("@angular/core").Signal<boolean>;
|
|
110
|
+
/**
|
|
111
|
+
* Признак, что группу можно удалить целиком.
|
|
112
|
+
*/
|
|
113
|
+
protected readonly canDeleteGroups: import("@angular/core").Signal<boolean>;
|
|
55
114
|
/**
|
|
56
115
|
* Настройки вывода сумм в рублях.
|
|
57
116
|
*/
|
|
@@ -65,23 +124,60 @@ export declare class ScOrderItemsListComponent {
|
|
|
65
124
|
* Предоставляется родителем через токен {@link SC_DIALOG_SERVICE_TOKEN}.
|
|
66
125
|
*/
|
|
67
126
|
private readonly scDialogService;
|
|
127
|
+
/**
|
|
128
|
+
* Сервис диалоговых окон Taiga для подтверждений.
|
|
129
|
+
*/
|
|
130
|
+
private readonly dialogService;
|
|
131
|
+
/**
|
|
132
|
+
* Сервис уведомлений.
|
|
133
|
+
*/
|
|
134
|
+
private readonly alerts;
|
|
135
|
+
/**
|
|
136
|
+
* Инициализирует экземпляр класса {@link ScOrderItemsListComponent}.
|
|
137
|
+
* Входы выбора и пометки недоступных позиций могут прийти после списка позиций, поэтому при их изменении выбор синхронизируется заново.
|
|
138
|
+
*/
|
|
139
|
+
constructor();
|
|
68
140
|
/**
|
|
69
141
|
* Список элементов корзины (товаров). При установке синхронно обновляет контролы выбора в форме.
|
|
70
142
|
*/
|
|
71
143
|
set items(value: ScOrderItem[]);
|
|
72
144
|
/**
|
|
73
145
|
* Синхронизирует контролы формы выбора с текущим списком товаров: удаляет контролы для отсутствующих id, добавляет для новых.
|
|
146
|
+
* Контролы меняются без событий, а значение группы пересчитывается один раз в конце: на заявках в сотни позиций это заметно.
|
|
74
147
|
*/
|
|
75
148
|
private syncSelectionControls;
|
|
76
149
|
/**
|
|
77
|
-
*
|
|
150
|
+
* Выбирает все доступные для выбора позиции или снимает выбор со всех.
|
|
151
|
+
*
|
|
152
|
+
* @param event Событие изменения флага выбора всех позиций.
|
|
153
|
+
*/
|
|
154
|
+
protected selectAllChangeHandler(event: Event): void;
|
|
155
|
+
/**
|
|
156
|
+
* Возвращает признак, что позиция приглушена: она неактивна или не выбрана для заказа.
|
|
157
|
+
*
|
|
158
|
+
* @param item Позиция.
|
|
159
|
+
*/
|
|
160
|
+
protected isItemDimmed(item: ScOrderItem): boolean;
|
|
161
|
+
/**
|
|
162
|
+
* Возвращает признак, что количество и метраж товара позиции меняются в диалоге товара.
|
|
163
|
+
*
|
|
164
|
+
* @param item Позиция.
|
|
165
|
+
*/
|
|
166
|
+
protected isEditedInDialog(item: ScOrderItem): boolean;
|
|
167
|
+
/**
|
|
168
|
+
* Удаляет позицию, при необходимости после подтверждения. Сообщение об ошибке показывает перехватчик приложения.
|
|
78
169
|
*
|
|
79
170
|
* @param item Позиция товара для удаления.
|
|
80
|
-
* @param priceCard Компонент карточки товара.
|
|
81
171
|
*/
|
|
82
|
-
protected deleteItem(item: ScOrderItem
|
|
172
|
+
protected deleteItem(item: ScOrderItem): void;
|
|
173
|
+
/**
|
|
174
|
+
* Удаляет все позиции группы после подтверждения. Состав берётся на момент подтверждения.
|
|
175
|
+
*
|
|
176
|
+
* @param group Группа позиций.
|
|
177
|
+
*/
|
|
178
|
+
protected deleteGroup(group: ScIOrderItemsGroup): void;
|
|
83
179
|
/**
|
|
84
|
-
* Обновляет количество товара.
|
|
180
|
+
* Обновляет количество товара. Количество неактивной позиции не меняется. Пустое или нулевое значение возвращается к сохранённому количеству.
|
|
85
181
|
*
|
|
86
182
|
* @param newQuantity Новое значение количества товара.
|
|
87
183
|
* @param priceCard Компонент карточки товара.
|
|
@@ -96,7 +192,7 @@ export declare class ScOrderItemsListComponent {
|
|
|
96
192
|
*/
|
|
97
193
|
protected openProductInfoDialog(product: ScOrderItem['product'], orderItem?: ScOrderItem, orderId?: number): void;
|
|
98
194
|
/**
|
|
99
|
-
* Открывает модальное окно изменения товара или его конфигуратора.
|
|
195
|
+
* Открывает модальное окно изменения товара или его конфигуратора. Если параметры позиции меняются в диалоге, окно товара открывается и у штучного товара.
|
|
100
196
|
*
|
|
101
197
|
* @param item Позиция товара.
|
|
102
198
|
*/
|
|
@@ -107,6 +203,43 @@ export declare class ScOrderItemsListComponent {
|
|
|
107
203
|
* @param product Товар/услуга, для которого необходимо отобразить график изменения стоимости.
|
|
108
204
|
*/
|
|
109
205
|
protected openPriceHistoryChartDialog(product: ScOrderItem['product']): void;
|
|
206
|
+
/**
|
|
207
|
+
* Возвращает {@link Observable}, который выдаёт значение, когда удаление позиции подтверждено или подтверждение не требуется.
|
|
208
|
+
*
|
|
209
|
+
* @param item Удаляемая позиция.
|
|
210
|
+
*/
|
|
211
|
+
private confirmDelete$;
|
|
212
|
+
/**
|
|
213
|
+
* Возвращает {@link Observable}, который выдаёт значение, когда удаление группы подтверждено.
|
|
214
|
+
*
|
|
215
|
+
* @param group Группа позиций.
|
|
216
|
+
*/
|
|
217
|
+
private confirmGroupDelete$;
|
|
218
|
+
/**
|
|
219
|
+
* Возвращает {@link Observable}, который выдаёт значение, когда удаление подтверждено.
|
|
220
|
+
*
|
|
221
|
+
* @param label Вопрос.
|
|
222
|
+
*/
|
|
223
|
+
private confirmRemoval$;
|
|
224
|
+
/**
|
|
225
|
+
* Отмечает позицию как ожидающую ответа или снимает отметку.
|
|
226
|
+
*
|
|
227
|
+
* @param id Идентификатор позиции.
|
|
228
|
+
* @param isPending Признак ожидания.
|
|
229
|
+
*/
|
|
230
|
+
private setItemPending;
|
|
231
|
+
/**
|
|
232
|
+
* Ставит или снимает отметку ожидания у позиций.
|
|
233
|
+
*
|
|
234
|
+
* @param itemsIds Идентификаторы позиций.
|
|
235
|
+
* @param isPending Признак ожидания.
|
|
236
|
+
*/
|
|
237
|
+
private setItemsPending;
|
|
238
|
+
/**
|
|
239
|
+
* Предупреждает, что количество не может быть пустым или нулевым, а убрать позицию можно удалением. Поле возвращается к сохранённому количеству
|
|
240
|
+
* в любом списке, предупреждение показывается только в списках с подтверждением удаления.
|
|
241
|
+
*/
|
|
242
|
+
private warnEmptyQuantity;
|
|
110
243
|
static ɵfac: i0.ɵɵFactoryDeclaration<ScOrderItemsListComponent, never>;
|
|
111
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ScOrderItemsListComponent, "sc-order-items-list", never, { "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "editable": { "alias": "editable"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": true; }; }, { "selectedItemsIdsChange": "selectedItemsIdsChange"; }, never, never, true, never>;
|
|
244
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ScOrderItemsListComponent, "sc-order-items-list", never, { "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "editable": { "alias": "editable"; "required": false; "isSignal": true; }; "grouped": { "alias": "grouped"; "required": false; "isSignal": true; }; "markUnavailable": { "alias": "markUnavailable"; "required": false; "isSignal": true; }; "useLinePrice": { "alias": "useLinePrice"; "required": false; "isSignal": true; }; "measuredInDialog": { "alias": "measuredInDialog"; "required": false; "isSignal": true; }; "deleteConfirmationTarget": { "alias": "deleteConfirmationTarget"; "required": false; "isSignal": true; }; "totalLabel": { "alias": "totalLabel"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": true; }; }, { "selectedItemsIdsChange": "selectedItemsIdsChange"; }, never, never, true, never>;
|
|
112
245
|
}
|
|
@@ -16,6 +16,18 @@ export declare class ScOrderItemsListWithActionsComponent {
|
|
|
16
16
|
* Включить редактирование позиций.
|
|
17
17
|
*/
|
|
18
18
|
readonly editable: import("@angular/core").InputSignal<boolean>;
|
|
19
|
+
/**
|
|
20
|
+
* Признак, что цена за единицу берётся из позиции, а не из текущей цены товара.
|
|
21
|
+
*/
|
|
22
|
+
readonly useLinePrice: import("@angular/core").InputSignal<boolean>;
|
|
23
|
+
/**
|
|
24
|
+
* Откуда удаляется позиция для текста подтверждения, например «из черновика». Если не задано, позиция удаляется без подтверждения.
|
|
25
|
+
*/
|
|
26
|
+
readonly deleteConfirmationTarget: import("@angular/core").InputSignal<string | null>;
|
|
27
|
+
/**
|
|
28
|
+
* Подпись итоговой суммы.
|
|
29
|
+
*/
|
|
30
|
+
readonly totalLabel: import("@angular/core").InputSignal<string>;
|
|
19
31
|
/**
|
|
20
32
|
* Позиции, доступные для заказа.
|
|
21
33
|
*/
|
|
@@ -33,5 +45,5 @@ export declare class ScOrderItemsListWithActionsComponent {
|
|
|
33
45
|
*/
|
|
34
46
|
constructor();
|
|
35
47
|
static ɵfac: i0.ɵɵFactoryDeclaration<ScOrderItemsListWithActionsComponent, never>;
|
|
36
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ScOrderItemsListWithActionsComponent, "sc-order-items-list-with-actions", never, { "items": { "alias": "items"; "required": true; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "editable": { "alias": "editable"; "required": false; "isSignal": true; }; "selectedItemsIds": { "alias": "selectedItemsIds"; "required": false; "isSignal": true; }; }, { "selectedItemsIds": "selectedItemsIdsChange"; }, never, ["[footerActions]"], true, never>;
|
|
48
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ScOrderItemsListWithActionsComponent, "sc-order-items-list-with-actions", never, { "items": { "alias": "items"; "required": true; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "editable": { "alias": "editable"; "required": false; "isSignal": true; }; "useLinePrice": { "alias": "useLinePrice"; "required": false; "isSignal": true; }; "deleteConfirmationTarget": { "alias": "deleteConfirmationTarget"; "required": false; "isSignal": true; }; "totalLabel": { "alias": "totalLabel"; "required": false; "isSignal": true; }; "selectedItemsIds": { "alias": "selectedItemsIds"; "required": false; "isSignal": true; }; }, { "selectedItemsIds": "selectedItemsIdsChange"; }, never, ["[footerActions]"], true, never>;
|
|
37
49
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@snabcentr/client-ui",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.23.0",
|
|
4
4
|
"author": "Snabcentr Ltd.",
|
|
5
5
|
"repository": "https://gitlab.snabcentr.met/web/angular/snabcentr-client-ui-lib",
|
|
6
6
|
"license": "Commercial",
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"@maskito/core": "^3.11.1",
|
|
17
17
|
"@ng-web-apis/intersection-observer": "^4.14.0",
|
|
18
18
|
"@ng-web-apis/common": "^4.14.0",
|
|
19
|
-
"@snabcentr/client-core": "
|
|
19
|
+
"@snabcentr/client-core": "3.25.1-profstroy",
|
|
20
20
|
"@taiga-ui/addon-charts": "^4.66.0",
|
|
21
21
|
"@taiga-ui/addon-commerce": "^4.66.0",
|
|
22
22
|
"@taiga-ui/cdk": "^4.66.0",
|
|
@@ -31,6 +31,7 @@
|
|
|
31
31
|
"@taiga-ui/experimental": "^4.66.0",
|
|
32
32
|
"@taiga-ui/styles": "^4.66.0",
|
|
33
33
|
"@tailwindcss/container-queries": "^0.1.1",
|
|
34
|
+
"ng-recaptcha-2": "^14.0.0",
|
|
34
35
|
"angular8-yandex-maps": "^18.2.0",
|
|
35
36
|
"date-fns": "^4.1.0",
|
|
36
37
|
"libphonenumber-js": "^1.12.7",
|
|
@@ -14,7 +14,7 @@ export declare class ScFormatDatePipe implements PipeTransform {
|
|
|
14
14
|
* @param timeString - Строка времени.
|
|
15
15
|
* @returns Форматированная дата и время.
|
|
16
16
|
*/
|
|
17
|
-
transform(timeString?: string): string | undefined;
|
|
17
|
+
transform(timeString?: string | Date): string | undefined;
|
|
18
18
|
static ɵfac: i0.ɵɵFactoryDeclaration<ScFormatDatePipe, never>;
|
|
19
19
|
static ɵpipe: i0.ɵɵPipeDeclaration<ScFormatDatePipe, "scFormatDate", true>;
|
|
20
20
|
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Освобождает ресурсы reCAPTCHA и удаляет осиротевшие iframe после смены маршрута.
|
|
3
|
+
*
|
|
4
|
+
* @param documentReference Объект документа.
|
|
5
|
+
* @param windowReference Объект окна браузера.
|
|
6
|
+
*/
|
|
7
|
+
export declare function cleanupRecaptchaArtifacts(documentReference: Document, windowReference: Window): void;
|
package/providers/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { InjectionToken } from '@angular/core';
|
|
2
2
|
/**
|
|
3
|
-
* Токен признака, что отправка форм с неполным (по данным подсказок) адресом заблокирована.
|
|
3
|
+
* Токен признака, что отправка форм с неполным (по данным подсказок) адресом заблокирована. По умолчанию блокировка выключена.
|
|
4
4
|
*/
|
|
5
5
|
export declare const SC_BLOCK_INCOMPLETE_ADDRESS: InjectionToken<boolean>;
|
|
@@ -3,4 +3,4 @@ import { InjectionToken } from '@angular/core';
|
|
|
3
3
|
* Токен для функции форматирования даты и времени.
|
|
4
4
|
* По умолчанию используется формат 'DD.MM.YYYY HH:MM'.
|
|
5
5
|
*/
|
|
6
|
-
export declare const SC_DATE_FORMATTER: InjectionToken<(date: string) => string>;
|
|
6
|
+
export declare const SC_DATE_FORMATTER: InjectionToken<(date: string | Date) => string>;
|
package/public-api.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ export * from './models';
|
|
|
2
2
|
export * from './services';
|
|
3
3
|
export * from './auth';
|
|
4
4
|
export * from './accordion';
|
|
5
|
+
export * from './alerts';
|
|
5
6
|
export * from './banner';
|
|
6
7
|
export * from './cart';
|
|
7
8
|
export * from './catalog';
|
|
@@ -29,7 +30,6 @@ export * from './providers';
|
|
|
29
30
|
export * from './feedback';
|
|
30
31
|
export * from './qrcode';
|
|
31
32
|
export * from './share';
|
|
32
|
-
export * from './smart-captcha';
|
|
33
33
|
export * from './user';
|
|
34
34
|
export * from './validators';
|
|
35
35
|
export * from './verification';
|
package/release_notes.tmp
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
|
-
## 4.
|
|
1
|
+
## 4.23.0 (2026-11-02)
|
|
2
2
|
|
|
3
|
-
###
|
|
3
|
+
### removed (1 change)
|
|
4
4
|
|
|
5
|
-
- [#
|
|
5
|
+
- [#13626: Удалена Yandex SmartCaptcha, в формах обратной связи возвращена прежняя капча](web_soft/libs/angular/snabcentr-client-ui-lib@54febcc6eacf0fe1f616fd4f2a915b286435874e) ([merge request](web_soft/libs/angular/snabcentr-client-ui-lib!473))
|
|
6
|
+
|
|
7
|
+
### added (2 changes)
|
|
8
|
+
|
|
9
|
+
- [#14130: Добавлена кнопка удаления всей группы позиций в черновике](web_soft/libs/angular/snabcentr-client-ui-lib@5d965b1001697b66719e76f612052fa89ffd130b) ([merge request](web_soft/libs/angular/snabcentr-client-ui-lib!469))
|
|
10
|
+
- [#13937: Добавлены создание черновика из файла, метки и режим черновика Профстрой](web_soft/libs/angular/snabcentr-client-ui-lib@8cfb6b899a64a0a139184edb9e29a46783e895e2) ([merge request](web_soft/libs/angular/snabcentr-client-ui-lib!452))
|
|
6
11
|
|
|
@@ -8,11 +8,12 @@ import * as i6 from "../form-fields/form-fields.module";
|
|
|
8
8
|
import * as i7 from "@taiga-ui/legacy";
|
|
9
9
|
import * as i8 from "@taiga-ui/cdk/directives/item";
|
|
10
10
|
import * as i9 from "@taiga-ui/cdk";
|
|
11
|
+
import * as i10 from "ng-recaptcha-2";
|
|
11
12
|
/**
|
|
12
13
|
* Модуль представления образцов товара.
|
|
13
14
|
*/
|
|
14
15
|
export declare class ScPreviewSampleModule {
|
|
15
16
|
static ɵfac: i0.ɵɵFactoryDeclaration<ScPreviewSampleModule, never>;
|
|
16
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<ScPreviewSampleModule, [typeof i1.ScPreviewSampleComponent], [typeof i2.CommonModule, typeof i3.ReactiveFormsModule, typeof i4.TuiError, typeof i5.TuiFieldErrorPipe, typeof i6.ScFormFieldsModule, typeof i7.TuiInputModule, typeof i7.TuiInputPhoneModule, typeof i8.TuiItem, typeof i5.TuiCarouselComponent, typeof i5.TuiCarouselDirective, typeof i5.TuiCarouselAutoscroll, typeof i5.TuiCarouselButtons, typeof i5.TuiCarouselScroll, typeof i5.TuiAvatar, typeof i9.TuiHovered, typeof i4.TuiButton, typeof i5.TuiButtonLoading, typeof i4.TuiLabel], [typeof i1.ScPreviewSampleComponent]>;
|
|
17
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<ScPreviewSampleModule, [typeof i1.ScPreviewSampleComponent], [typeof i2.CommonModule, typeof i3.ReactiveFormsModule, typeof i4.TuiError, typeof i5.TuiFieldErrorPipe, typeof i6.ScFormFieldsModule, typeof i7.TuiInputModule, typeof i7.TuiInputPhoneModule, typeof i8.TuiItem, typeof i5.TuiCarouselComponent, typeof i5.TuiCarouselDirective, typeof i5.TuiCarouselAutoscroll, typeof i5.TuiCarouselButtons, typeof i5.TuiCarouselScroll, typeof i5.TuiAvatar, typeof i9.TuiHovered, typeof i4.TuiButton, typeof i5.TuiButtonLoading, typeof i4.TuiLabel, typeof i10.RecaptchaFormsModule, typeof i10.RecaptchaModule], [typeof i1.ScPreviewSampleComponent]>;
|
|
17
18
|
static ɵinj: i0.ɵɵInjectorDeclaration<ScPreviewSampleModule>;
|
|
18
19
|
}
|
package/services/index.d.ts
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
@import '@taiga-ui/core/styles/taiga-ui-local.less';
|
|
2
|
+
@import (reference) '@taiga-ui/core/styles/theme/wrapper.less';
|
|
3
|
+
|
|
1
4
|
@font-fallback: -apple-system, 'BlinkMacSystemFont', system-ui, 'Roboto', 'Segoe UI', 'Helvetica Neue', sans-serif;
|
|
2
5
|
|
|
3
6
|
&:root {
|
|
@@ -63,4 +66,16 @@ sc-input-quantity {
|
|
|
63
66
|
section.t-buttons {
|
|
64
67
|
display: none !important;
|
|
65
68
|
}
|
|
66
|
-
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
[tuiWrapper][data-appearance='sc-textfield-warning']:extend([tuiWrapper][data-appearance='textfield'] all) {
|
|
72
|
+
&::after {
|
|
73
|
+
color: var(--tui-status-warning);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.wrapper-focus({
|
|
77
|
+
&:not(._invalid):after {
|
|
78
|
+
color: var(--tui-status-warning);
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
}
|