@snabcentr/client-core 4.15.0 → 4.16.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.
|
@@ -4,7 +4,7 @@ import { map, startWith, catchError } from 'rxjs/operators';
|
|
|
4
4
|
import { parseISO, parse, isValid, format } from 'date-fns';
|
|
5
5
|
import { isString, constant, isNil, isObject, isDate, isMatch, isArray, omit, get, isNumber, isBoolean } from 'lodash-es';
|
|
6
6
|
import * as i0 from '@angular/core';
|
|
7
|
-
import { InjectionToken, inject, PLATFORM_ID, Inject, Optional, Injectable, EventEmitter, DestroyRef, LOCALE_ID, Pipe, RESPONSE_INIT, RendererFactory2 } from '@angular/core';
|
|
7
|
+
import { InjectionToken, inject, PLATFORM_ID, Inject, Optional, Injectable, EventEmitter, DestroyRef, LOCALE_ID, Pipe, RESPONSE_INIT, assertInInjectionContext, RendererFactory2 } from '@angular/core';
|
|
8
8
|
import { WA_LOCAL_STORAGE, WA_USER_AGENT, WA_WINDOW } from '@ng-web-apis/common';
|
|
9
9
|
import { filterByKey, toValue, WA_STORAGE_EVENT, WaStorageService } from '@ng-web-apis/storage';
|
|
10
10
|
import { isPlatformBrowser, isPlatformServer, DOCUMENT, formatDate } from '@angular/common';
|
|
@@ -7385,6 +7385,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
7385
7385
|
}]
|
|
7386
7386
|
}], ctorParameters: () => [] });
|
|
7387
7387
|
|
|
7388
|
+
/* eslint-disable unicorn/prevent-abbreviations */
|
|
7389
|
+
/**
|
|
7390
|
+
* Наименование query-параметра номера страницы пагинации.
|
|
7391
|
+
*/
|
|
7392
|
+
const SC_PAGE_QUERY_PARAM = 'page';
|
|
7393
|
+
/**
|
|
7394
|
+
* Преобразует значение query-параметра {@link SC_PAGE_QUERY_PARAM} в номер страницы пагинации.
|
|
7395
|
+
* Нечисловые, дробные и меньшие единицы значения приводятся к первой странице.
|
|
7396
|
+
*
|
|
7397
|
+
* @param value Значение query-параметра номера страницы пагинации.
|
|
7398
|
+
*/
|
|
7399
|
+
function scParsePageQueryParam(value) {
|
|
7400
|
+
return Math.max(1, Math.trunc(Number(value) || 1));
|
|
7401
|
+
}
|
|
7402
|
+
/**
|
|
7403
|
+
* Возвращает {@link Observable} изменения номера страницы пагинации из query-параметра {@link SC_PAGE_QUERY_PARAM}.
|
|
7404
|
+
* Должна вызываться в контексте инъекции.
|
|
7405
|
+
*/
|
|
7406
|
+
function scGetPageQueryParamChanges() {
|
|
7407
|
+
assertInInjectionContext(scGetPageQueryParamChanges);
|
|
7408
|
+
return inject(ActivatedRoute).queryParamMap.pipe(map$1((params) => scParsePageQueryParam(params.get(SC_PAGE_QUERY_PARAM))), distinctUntilChanged());
|
|
7409
|
+
}
|
|
7410
|
+
|
|
7388
7411
|
/**
|
|
7389
7412
|
* Сервис пагинации.
|
|
7390
7413
|
*/
|
|
@@ -7453,7 +7476,9 @@ class ScPaginationService {
|
|
|
7453
7476
|
return [value, value];
|
|
7454
7477
|
}, [null, null]), map$1(([paginate]) => paginate), takeWhile((paginate) => paginate === null || paginate.meta.currentPage < paginate.meta.lastPage, true))), share());
|
|
7455
7478
|
this.others$
|
|
7456
|
-
.pipe(filter(tuiIsPresent), switchMap(() => this.nextPageClickEvent.pipe(
|
|
7479
|
+
.pipe(filter(tuiIsPresent), switchMap(() => this.nextPageClickEvent.pipe(
|
|
7480
|
+
// Страница может быть изменена извне (например, из query-параметра page), поэтому номер следующей страницы берётся из текущего состояния page$.
|
|
7481
|
+
map$1(() => this.page$.value.page + 1), startWith$1(1))), takeUntilDestroyed())
|
|
7457
7482
|
.subscribe((page) => {
|
|
7458
7483
|
this.patchPage({ page: page });
|
|
7459
7484
|
});
|
|
@@ -7542,6 +7567,97 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
7542
7567
|
type: Injectable
|
|
7543
7568
|
}], ctorParameters: () => [] });
|
|
7544
7569
|
|
|
7570
|
+
/* eslint-disable unicorn/prevent-abbreviations */
|
|
7571
|
+
/**
|
|
7572
|
+
* Сервис синхронизации номера страницы пагинации с query-параметром {@link SC_PAGE_QUERY_PARAM}.
|
|
7573
|
+
*/
|
|
7574
|
+
class ScPaginationPageQueryParamService {
|
|
7575
|
+
/**
|
|
7576
|
+
* Инициализирует экземпляр класса {@link ScPaginationPageQueryParamService}.
|
|
7577
|
+
*/
|
|
7578
|
+
constructor() {
|
|
7579
|
+
/**
|
|
7580
|
+
* Сервис пагинации.
|
|
7581
|
+
*/
|
|
7582
|
+
this.paginationService = inject((ScPaginationService));
|
|
7583
|
+
/**
|
|
7584
|
+
* Сервис предоставляющий доступ к данным о маршруте.
|
|
7585
|
+
*/
|
|
7586
|
+
this.route = inject(ActivatedRoute);
|
|
7587
|
+
/**
|
|
7588
|
+
* Сервис маршрутизации.
|
|
7589
|
+
*/
|
|
7590
|
+
this.router = inject(Router);
|
|
7591
|
+
/**
|
|
7592
|
+
* Номер страницы пагинации, применённый последним.
|
|
7593
|
+
*/
|
|
7594
|
+
this.lastAppliedPage = 1;
|
|
7595
|
+
scGetPageQueryParamChanges()
|
|
7596
|
+
.pipe(takeUntilDestroyed())
|
|
7597
|
+
.subscribe((page) => {
|
|
7598
|
+
if (!this.lastParams || page === this.lastAppliedPage) {
|
|
7599
|
+
return;
|
|
7600
|
+
}
|
|
7601
|
+
this.lastAppliedPage = page;
|
|
7602
|
+
// Повторная установка параметров сбрасывает накопленный список, чтобы отобразить только страницу из query-параметра.
|
|
7603
|
+
this.paginationService.patchOthers(this.lastParams);
|
|
7604
|
+
this.paginationService.patchPage({ page });
|
|
7605
|
+
});
|
|
7606
|
+
}
|
|
7607
|
+
/**
|
|
7608
|
+
* Частично обновляет остальные параметры пагинации и применяет номер страницы из query-параметра при первом вызове.
|
|
7609
|
+
*
|
|
7610
|
+
* @param parameters Новые параметры пагинации.
|
|
7611
|
+
*/
|
|
7612
|
+
patchOthers(parameters) {
|
|
7613
|
+
const isFirst = !this.lastParams;
|
|
7614
|
+
this.lastParams = parameters;
|
|
7615
|
+
this.paginationService.patchOthers(parameters);
|
|
7616
|
+
if (isFirst) {
|
|
7617
|
+
const pageFromUrl = scParsePageQueryParam(this.route.snapshot.queryParamMap.get(SC_PAGE_QUERY_PARAM));
|
|
7618
|
+
this.lastAppliedPage = pageFromUrl;
|
|
7619
|
+
if (pageFromUrl > 1) {
|
|
7620
|
+
this.paginationService.patchPage({ page: pageFromUrl });
|
|
7621
|
+
}
|
|
7622
|
+
}
|
|
7623
|
+
else {
|
|
7624
|
+
// Изменение фильтров сбрасывает пагинацию на первую страницу.
|
|
7625
|
+
this.resetPageQueryParam();
|
|
7626
|
+
}
|
|
7627
|
+
}
|
|
7628
|
+
/**
|
|
7629
|
+
* Применяет количество записей на странице пагинации с сохранением текущей страницы.
|
|
7630
|
+
*
|
|
7631
|
+
* @param perPage Количество записей на странице пагинации.
|
|
7632
|
+
*/
|
|
7633
|
+
patchPerPage(perPage) {
|
|
7634
|
+
if (this.lastParams) {
|
|
7635
|
+
// Повторная установка параметров сбрасывает накопленный список, чтобы текущая страница была запрошена заново с новым количеством записей.
|
|
7636
|
+
this.paginationService.patchOthers(this.lastParams);
|
|
7637
|
+
this.paginationService.patchPage({ page: this.lastAppliedPage, perPage });
|
|
7638
|
+
}
|
|
7639
|
+
else {
|
|
7640
|
+
this.paginationService.patchPage({ page: 1, perPage });
|
|
7641
|
+
}
|
|
7642
|
+
}
|
|
7643
|
+
/**
|
|
7644
|
+
* Убирает номер страницы пагинации из query-параметров.
|
|
7645
|
+
*/
|
|
7646
|
+
resetPageQueryParam() {
|
|
7647
|
+
if (!this.lastParams || this.lastAppliedPage === 1) {
|
|
7648
|
+
return;
|
|
7649
|
+
}
|
|
7650
|
+
this.lastAppliedPage = 1;
|
|
7651
|
+
// eslint-disable-next-line no-void
|
|
7652
|
+
void this.router.navigate([], { queryParams: { [SC_PAGE_QUERY_PARAM]: null }, queryParamsHandling: 'merge' });
|
|
7653
|
+
}
|
|
7654
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: ScPaginationPageQueryParamService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
7655
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: ScPaginationPageQueryParamService }); }
|
|
7656
|
+
}
|
|
7657
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: ScPaginationPageQueryParamService, decorators: [{
|
|
7658
|
+
type: Injectable
|
|
7659
|
+
}], ctorParameters: () => [] });
|
|
7660
|
+
|
|
7545
7661
|
/**
|
|
7546
7662
|
* Перечисление идентификаторов статусов опросника.
|
|
7547
7663
|
*/
|
|
@@ -8378,9 +8494,12 @@ class ScSeoService {
|
|
|
8378
8494
|
const keywords = item.seo?.keywords ?? `${item.name}, ${this.catalogItemDefaultSeo.keywords}`;
|
|
8379
8495
|
const meta = item.seo?.meta ?? [];
|
|
8380
8496
|
// Устанавливаем стандартные seo-параметры, в том числе и каноническую ссылку.
|
|
8497
|
+
// Страницы пагинации индексируются отдельно, поэтому каноническая ссылка содержит номер страницы из query-параметров.
|
|
8498
|
+
const page = scParsePageQueryParam(this.router.parseUrl(this.router.url).queryParamMap.get(SC_PAGE_QUERY_PARAM));
|
|
8499
|
+
const canonicalUrl = page > 1 ? `${url}?${SC_PAGE_QUERY_PARAM}=${page}` : url;
|
|
8381
8500
|
this.setMetaTags(title, description, keywords, meta, ['index', 'follow']);
|
|
8382
8501
|
this.setOpenGraphMetaTags(title, description, url, this.mediaImageTransformerPipe.transform(item.image, true));
|
|
8383
|
-
this.setCanonicalLink(
|
|
8502
|
+
this.setCanonicalLink(canonicalUrl);
|
|
8384
8503
|
// Устанавливаем Schema.org параметры.
|
|
8385
8504
|
this.setSchemaOrgData(this.schemaOrgFactory.merge([this.schemaOrgFactory.generateForOrganization(), ...(schemaOrgData ? [schemaOrgData] : [])]));
|
|
8386
8505
|
}
|
|
@@ -8869,5 +8988,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
8869
8988
|
* Generated bundle index. Do not edit.
|
|
8870
8989
|
*/
|
|
8871
8990
|
|
|
8872
|
-
export { CATEGORY_PROVIDERS, EMPTY_CART, IS_BROWSER, IS_RUNNING_ON_TERMINAL, IS_SERVER, SC_ACCESS_AUTH_TOKEN_STORAGE_KEY, SC_API_KEYS, SC_AUTH_ADD_HEADER_REQUIRED, SC_AUTH_AS_CLIENT_DEFAULT_OPTIONS, SC_AUTH_AS_CLIENT_OPTIONS, SC_CACHE_LIFETIME, SC_CACHE_SETTINGS, SC_CATALOG_ITEM_PAGE_META, SC_CATALOG_ROOT_PAGE_META, SC_CATEGORY_INFO, SC_CATEGORY_STATE, SC_COMPANY_INFO, SC_COMPANY_NAME, SC_CONFIGURATOR_COMPONENTS, SC_CONFIGURATOR_SETTINGS, SC_COUNT_FIRST_DISCOUNTED_PRODUCTS, SC_COUNT_LAST_NEWS, SC_DATE_FORMAT, SC_DEFAULT_PAGE_META, SC_FEEDBACK_API, SC_GUEST_ENDPOINTS_TOKEN, SC_GUEST_PARAMETER_NAME_TOKEN, SC_GUEST_TOKEN_STORAGE_KEY, SC_ID_OR_SLUG_IN_ROUTE, SC_IS_HEADER_REQUIRED, SC_IS_HIDDEN_ERROR_ALERT, SC_IS_HIDDEN_ERROR_ALERT_HTTP_CONTEXT, SC_IS_LOGOUT_REQUEST, SC_IS_REFRESH_REQUIRED, SC_LINEAR_VALUES, SC_LINEAR_VALUES_TOKEN, SC_MAX_LENGTH_SEARCH_TERM, SC_MIN_LENGTH_SEARCH_TERM, SC_NEXT_PAGE_PAGINATION_CLICK, SC_ORDER_LOADER, SC_ORDER_LOADING, SC_PATH_IMAGE_NOT_FOUND, SC_PRODUCTS_PAGINATION_LOADER, SC_PRODUCT_PAGINATION_DEFAULT_OPTIONS, SC_PRODUCT_PAGINATION_OPTIONS, SC_REFRESH_AUTH_TOKEN_STORAGE_KEY, SC_RELEASE, SC_SSR_HTTP_TIMEOUT, SC_UPDATE_INTERVAL, SC_URLS, SC_USER_INFO, SC_VACANCIES_DATA_SOURCE, SC_VIRTUAL_CATEGORY_INFO, SC_VIRTUAL_CATEGORY_PROVIDERS, SEARCH_TERM, SEARCH_TERM_PROVIDERS, ScAuthAsClientGuard, ScAuthInterceptor, ScAuthService, ScBanner, ScBannerService, ScCacheInterceptor, ScCacheSettings, ScCachedData, ScCachedItem, ScCart, ScCartService, ScCatalogFilterService, ScCatalogFormat, ScCatalogItem, ScCatalogRedirectService, ScCatalogService, ScCatalogableItem, ScCategory, ScClientType, ScCodedIdentity, ScConfiguratorService, ScContactsService, ScContragentService, ScConvertInterceptor, ScConvertersService, ScDateFormatInterceptor, ScDeletableNamedIdentity, ScDeliveryAddressService, ScDeliveryCost, ScDeliveryType, ScDocumentInfoNode, ScDocumentInfoTypesEnum, ScErrorRequestState, ScErrorsInterceptor, ScFavoriteService, ScFeedbackForms, ScFeedbackService, ScFilesService, ScFrequentlyAskedQuestionsService, ScGuestInterceptor, ScHiddenCatalogableItem, ScIBreadcrumbItem, ScISuggestionType, ScIconTypesEnum, ScIdOrSlugGuard, ScIdOrSlugPipe, ScIdentity, ScImage, ScImageHelper, ScLoadingRequestState, ScLocationsService, ScMediaImageTransformerPipe, ScMimeTypes, ScNamedIdentity, ScNews, ScNewsService, ScNotificationActionTypes, ScNotificationLevelNames, ScNotificationsService, ScOpfList, ScOptionsInterceptor, ScOrder, ScOrderBase, ScOrderDraft, ScOrderDraftShort, ScOrderDraftType, ScOrderDraftsService, ScOrderItem, ScOrderShort, ScOrderStateStatus, ScOrdersService, ScPaginationService, ScPaymentStatus, ScPaymentType, ScPhoneService, ScPrimaryCatalogableItem, ScProduct, ScProductTileType, ScQuestionnaireService, ScQuestionnaireStatusEnum, ScReclamationService, ScReclamationStatus, ScRecommendationService, ScReference, ScReferenceName, ScReferencesService, ScRequestStateStatusEnum, ScRequisitesService, ScRouteKeys, ScSearchService, ScSeoService, ScSocialType, ScSsrTimeoutInterceptor, ScSuccessRequestState, ScSuggestionService, ScSum, ScTokenService, ScUIService, ScUTMService, ScUnitsHelper, ScUpdatableNamedIdentity, ScUploadedFile, ScUser, ScUserMetadata, ScUserMetrikaGoalsEnum, ScUserMetrikaService, ScUserService, ScUserType, ScVCardService, ScVacanciesList, ScVacanciesService, ScVacancy, ScVerificationService, ScVirtualCategory, ScWarehouseService, SchemaOrgFactory, TERMINAL_PROVIDERS, USER_AGENT_TERMINAL, filterChangedByKey, loadingPlaceholder, mapRequestStateToDataOrNull, mapToRequestState, runningOnTerminalFactory, scGetCurrentRoute, scOrderIsLoaded, searchTermFactory };
|
|
8991
|
+
export { CATEGORY_PROVIDERS, EMPTY_CART, IS_BROWSER, IS_RUNNING_ON_TERMINAL, IS_SERVER, SC_ACCESS_AUTH_TOKEN_STORAGE_KEY, SC_API_KEYS, SC_AUTH_ADD_HEADER_REQUIRED, SC_AUTH_AS_CLIENT_DEFAULT_OPTIONS, SC_AUTH_AS_CLIENT_OPTIONS, SC_CACHE_LIFETIME, SC_CACHE_SETTINGS, SC_CATALOG_ITEM_PAGE_META, SC_CATALOG_ROOT_PAGE_META, SC_CATEGORY_INFO, SC_CATEGORY_STATE, SC_COMPANY_INFO, SC_COMPANY_NAME, SC_CONFIGURATOR_COMPONENTS, SC_CONFIGURATOR_SETTINGS, SC_COUNT_FIRST_DISCOUNTED_PRODUCTS, SC_COUNT_LAST_NEWS, SC_DATE_FORMAT, SC_DEFAULT_PAGE_META, SC_FEEDBACK_API, SC_GUEST_ENDPOINTS_TOKEN, SC_GUEST_PARAMETER_NAME_TOKEN, SC_GUEST_TOKEN_STORAGE_KEY, SC_ID_OR_SLUG_IN_ROUTE, SC_IS_HEADER_REQUIRED, SC_IS_HIDDEN_ERROR_ALERT, SC_IS_HIDDEN_ERROR_ALERT_HTTP_CONTEXT, SC_IS_LOGOUT_REQUEST, SC_IS_REFRESH_REQUIRED, SC_LINEAR_VALUES, SC_LINEAR_VALUES_TOKEN, SC_MAX_LENGTH_SEARCH_TERM, SC_MIN_LENGTH_SEARCH_TERM, SC_NEXT_PAGE_PAGINATION_CLICK, SC_ORDER_LOADER, SC_ORDER_LOADING, SC_PAGE_QUERY_PARAM, SC_PATH_IMAGE_NOT_FOUND, SC_PRODUCTS_PAGINATION_LOADER, SC_PRODUCT_PAGINATION_DEFAULT_OPTIONS, SC_PRODUCT_PAGINATION_OPTIONS, SC_REFRESH_AUTH_TOKEN_STORAGE_KEY, SC_RELEASE, SC_SSR_HTTP_TIMEOUT, SC_UPDATE_INTERVAL, SC_URLS, SC_USER_INFO, SC_VACANCIES_DATA_SOURCE, SC_VIRTUAL_CATEGORY_INFO, SC_VIRTUAL_CATEGORY_PROVIDERS, SEARCH_TERM, SEARCH_TERM_PROVIDERS, ScAuthAsClientGuard, ScAuthInterceptor, ScAuthService, ScBanner, ScBannerService, ScCacheInterceptor, ScCacheSettings, ScCachedData, ScCachedItem, ScCart, ScCartService, ScCatalogFilterService, ScCatalogFormat, ScCatalogItem, ScCatalogRedirectService, ScCatalogService, ScCatalogableItem, ScCategory, ScClientType, ScCodedIdentity, ScConfiguratorService, ScContactsService, ScContragentService, ScConvertInterceptor, ScConvertersService, ScDateFormatInterceptor, ScDeletableNamedIdentity, ScDeliveryAddressService, ScDeliveryCost, ScDeliveryType, ScDocumentInfoNode, ScDocumentInfoTypesEnum, ScErrorRequestState, ScErrorsInterceptor, ScFavoriteService, ScFeedbackForms, ScFeedbackService, ScFilesService, ScFrequentlyAskedQuestionsService, ScGuestInterceptor, ScHiddenCatalogableItem, ScIBreadcrumbItem, ScISuggestionType, ScIconTypesEnum, ScIdOrSlugGuard, ScIdOrSlugPipe, ScIdentity, ScImage, ScImageHelper, ScLoadingRequestState, ScLocationsService, ScMediaImageTransformerPipe, ScMimeTypes, ScNamedIdentity, ScNews, ScNewsService, ScNotificationActionTypes, ScNotificationLevelNames, ScNotificationsService, ScOpfList, ScOptionsInterceptor, ScOrder, ScOrderBase, ScOrderDraft, ScOrderDraftShort, ScOrderDraftType, ScOrderDraftsService, ScOrderItem, ScOrderShort, ScOrderStateStatus, ScOrdersService, ScPaginationPageQueryParamService, ScPaginationService, ScPaymentStatus, ScPaymentType, ScPhoneService, ScPrimaryCatalogableItem, ScProduct, ScProductTileType, ScQuestionnaireService, ScQuestionnaireStatusEnum, ScReclamationService, ScReclamationStatus, ScRecommendationService, ScReference, ScReferenceName, ScReferencesService, ScRequestStateStatusEnum, ScRequisitesService, ScRouteKeys, ScSearchService, ScSeoService, ScSocialType, ScSsrTimeoutInterceptor, ScSuccessRequestState, ScSuggestionService, ScSum, ScTokenService, ScUIService, ScUTMService, ScUnitsHelper, ScUpdatableNamedIdentity, ScUploadedFile, ScUser, ScUserMetadata, ScUserMetrikaGoalsEnum, ScUserMetrikaService, ScUserService, ScUserType, ScVCardService, ScVacanciesList, ScVacanciesService, ScVacancy, ScVerificationService, ScVirtualCategory, ScWarehouseService, SchemaOrgFactory, TERMINAL_PROVIDERS, USER_AGENT_TERMINAL, filterChangedByKey, loadingPlaceholder, mapRequestStateToDataOrNull, mapToRequestState, runningOnTerminalFactory, scGetCurrentRoute, scGetPageQueryParamChanges, scOrderIsLoaded, scParsePageQueryParam, searchTermFactory };
|
|
8873
8992
|
//# sourceMappingURL=snabcentr-client-core.mjs.map
|