@snabcentr/client-ui 3.4.8 → 3.6.1
Sign up to get free protection for your applications and to get access to all the features.
- package/banner/sc-banner.component.d.ts +5 -51
- package/catalog/category-card/sc-category-card.component.d.ts +8 -4
- package/esm2022/banner/sc-banner.component.mjs +11 -104
- package/esm2022/catalog/category-card/sc-category-card.component.mjs +13 -7
- package/esm2022/icons/sc-client-ui-icons-name.mjs +11 -1
- package/esm2022/pages/questions-and-answers/sc-i-qa-info.mjs +2 -0
- package/esm2022/providers/index.mjs +2 -1
- package/esm2022/providers/sc-qa-info.mjs +6 -0
- package/fesm2022/snabcentr-client-ui.mjs +39 -109
- package/fesm2022/snabcentr-client-ui.mjs.map +1 -1
- package/icons/svg-pack/landing/catalog.svg +9 -0
- package/icons/svg-pack/landing/construction-chemicals.svg +21 -0
- package/icons/svg-pack/landing/fastener.svg +24 -0
- package/icons/svg-pack/landing/foam-balloon.svg +10 -0
- package/icons/svg-pack/landing/mosquito-net.svg +12 -0
- package/icons/svg-pack/landing/profile-plastic.svg +6 -0
- package/icons/svg-pack/landing/sandwich-panel.svg +49 -0
- package/icons/svg-pack/landing/siding.svg +21 -0
- package/icons/svg-pack/landing/strip.svg +14 -0
- package/icons/svg-pack/landing/windowsill.svg +16 -0
- package/package.json +1 -1
- package/pages/questions-and-answers/sc-i-qa-info.d.ts +61 -0
- package/providers/index.d.ts +1 -0
- package/providers/sc-qa-info.d.ts +6 -0
- package/release_notes.tmp +3 -3
- package/styles/tailwind/tailwind.scss +12 -13
@@ -64,6 +64,16 @@ export const scClientUiIconsName = [
|
|
64
64
|
'img.vk',
|
65
65
|
'img.whatsapp',
|
66
66
|
'img.copy',
|
67
|
+
'landing.catalog',
|
68
|
+
'landing.construction-chemicals',
|
69
|
+
'landing.fastener',
|
70
|
+
'landing.foam-balloon',
|
71
|
+
'landing.mosquito-net',
|
72
|
+
'landing.profile-plastic',
|
73
|
+
'landing.sandwich-panel',
|
74
|
+
'landing.siding',
|
75
|
+
'landing.strip',
|
76
|
+
'landing.windowsill',
|
67
77
|
'solid.facebook',
|
68
78
|
'solid.instagram',
|
69
79
|
'solid.telegram',
|
@@ -71,4 +81,4 @@ export const scClientUiIconsName = [
|
|
71
81
|
'solid.vk',
|
72
82
|
'solid.whatsapp',
|
73
83
|
];
|
74
|
-
//# sourceMappingURL=data:application/json;base64,
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY2xpZW50LXVpLWljb25zLW5hbWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvaWNvbnMvc2MtY2xpZW50LXVpLWljb25zLW5hbWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRztJQUMvQixhQUFhO0lBQ2IsTUFBTTtJQUNOLEtBQUs7SUFDTCx1QkFBdUI7SUFDdkIsbUJBQW1CO0lBQ25CLHVCQUF1QjtJQUN2QixVQUFVO0lBQ1YsUUFBUTtJQUNSLGFBQWE7SUFDYixRQUFRO0lBQ1IsUUFBUTtJQUNSLFdBQVc7SUFDWCxrQkFBa0I7SUFDbEIsTUFBTTtJQUNOLGFBQWE7SUFDYixNQUFNO0lBQ04sVUFBVTtJQUNWLElBQUk7SUFDSixVQUFVO0lBQ1YsMEJBQTBCO0lBQzFCLHFCQUFxQjtJQUNyQixnQkFBZ0I7SUFDaEIsaUJBQWlCO0lBQ2pCLGdCQUFnQjtJQUNoQixzQkFBc0I7SUFDdEIseUJBQXlCO0lBQ3pCLHlCQUF5QjtJQUN6QixrQkFBa0I7SUFDbEIsdUJBQXVCO0lBQ3ZCLGVBQWU7SUFDZixzQkFBc0I7SUFDdEIsY0FBYztJQUNkLGNBQWM7SUFDZCxnQkFBZ0I7SUFDaEIsb0JBQW9CO0lBQ3BCLHFCQUFxQjtJQUNyQixzQkFBc0I7SUFDdEIsOEJBQThCO0lBQzlCLG1CQUFtQjtJQUNuQixpQkFBaUI7SUFDakIsZUFBZTtJQUNmLHlCQUF5QjtJQUN6Qix5QkFBeUI7SUFDekIsY0FBYztJQUNkLHVCQUF1QjtJQUN2QiwwQkFBMEI7SUFDMUIsZ0JBQWdCO0lBQ2hCLGdCQUFnQjtJQUNoQiw4QkFBOEI7SUFDOUIsNkJBQTZCO0lBQzdCLGNBQWM7SUFDZCxxQkFBcUI7SUFDckIsb0JBQW9CO0lBQ3BCLFdBQVc7SUFDWCxjQUFjO0lBQ2QsZUFBZTtJQUNmLGFBQWE7SUFDYixjQUFjO0lBQ2QsV0FBVztJQUNYLFFBQVE7SUFDUixjQUFjO0lBQ2QsVUFBVTtJQUNWLGlCQUFpQjtJQUNqQixnQ0FBZ0M7SUFDaEMsa0JBQWtCO0lBQ2xCLHNCQUFzQjtJQUN0QixzQkFBc0I7SUFDdEIseUJBQXlCO0lBQ3pCLHdCQUF3QjtJQUN4QixnQkFBZ0I7SUFDaEIsZUFBZTtJQUNmLG9CQUFvQjtJQUNwQixnQkFBZ0I7SUFDaEIsaUJBQWlCO0lBQ2pCLGdCQUFnQjtJQUNoQixrQkFBa0I7SUFDbEIsVUFBVTtJQUNWLGdCQUFnQjtDQUNuQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiDQodC/0LjRgdC+0Log0LjQutC+0L3QvtC6LlxuICovXG5leHBvcnQgY29uc3Qgc2NDbGllbnRVaUljb25zTmFtZSA9IFtcbiAgICAnYXBwbGljYXRpb24nLFxuICAgICdiYWNrJyxcbiAgICAnYmFnJyxcbiAgICAnYmFua25vdGUtYXJyb3ctaW4tdG9wJyxcbiAgICAnY2hhcnQtY29sdW1uLXBsdXMnLFxuICAgICdjaXJjbGUtYXJyb3ctaW4tcmlnaHQnLFxuICAgICdjb250YWN0cycsXG4gICAgJ2ZpbGUtcCcsXG4gICAgJ2ZpbGUtc2VhcmNoJyxcbiAgICAnZmlsZS13JyxcbiAgICAnZmlsZS14JyxcbiAgICAnaW5zdGFncmFtJyxcbiAgICAnbGF5b3V0LWxpc3QtdHJlZScsXG4gICAgJ2xpc3QnLFxuICAgICdyZWNsYW1hdGlvbicsXG4gICAgJ3NlbmQnLFxuICAgICd0ZWxlZ3JhbScsXG4gICAgJ3ZrJyxcbiAgICAnd2hhdHNhcHAnLFxuICAgICdjYXRhbG9nLmFsdW1pbnVtLXN5c3RlbXMnLFxuICAgICdjYXRhbG9nLmFybS1wcm9maWxlJyxcbiAgICAnY2F0YWxvZy5iYXR0ZW4nLFxuICAgICdjYXRhbG9nLmJydXNib3gnLFxuICAgICdjYXRhbG9nLmNhbm9weScsXG4gICAgJ2NhdGFsb2cuY29uZmlndXJhdG9yJyxcbiAgICAnY2F0YWxvZy5kb29yLWFjY2Vzc29yaWUnLFxuICAgICdjYXRhbG9nLmRyYWluYWdlLXN5c3RlbScsXG4gICAgJ2NhdGFsb2cuZmFzdGVuZXInLFxuICAgICdjYXRhbG9nLmZpeGluZy1pbXBvc3QnLFxuICAgICdjYXRhbG9nLmZsYXNrJyxcbiAgICAnY2F0YWxvZy5mb2FtLWJhbGxvb24nLFxuICAgICdjYXRhbG9nLmZvYW0nLFxuICAgICdjYXRhbG9nLmdsdWUnLFxuICAgICdjYXRhbG9nLmhhbmRsZScsXG4gICAgJ2NhdGFsb2cuaW5zdHJ1bWVudCcsXG4gICAgJ2NhdGFsb2cua3ZlLXByb2ZpbGUnLFxuICAgICdjYXRhbG9nLm1vc3F1aXRvLW5ldCcsXG4gICAgJ2NhdGFsb2cubW91bnRpbmctYWNjZXNzb3JpZXMnLFxuICAgICdjYXRhbG9nLm5ldC1vcmRlcicsXG4gICAgJ2NhdGFsb2cucGFuZWwtMScsXG4gICAgJ2NhdGFsb2cucGFuZWwnLFxuICAgICdjYXRhbG9nLnByb2ZpbGUtcGxhc3RpYycsXG4gICAgJ2NhdGFsb2cucHJvbW8tbWF0ZXJpYWxzJyxcbiAgICAnY2F0YWxvZy5wc3VsJyxcbiAgICAnY2F0YWxvZy5yZWhhdS1wcm9maWxlJyxcbiAgICAnY2F0YWxvZy5zYW5kd2ljaC1wbGFzdGljJyxcbiAgICAnY2F0YWxvZy5zZWFsZXInLFxuICAgICdjYXRhbG9nLnNpZGluZycsXG4gICAgJ2NhdGFsb2cuc3RhcnQtZmluaXNoLXByb2ZpbGUnLFxuICAgICdjYXRhbG9nLnN0ZWFtLXdhdGVycHJvb2ZpbmcnLFxuICAgICdjYXRhbG9nLnN0aXonLFxuICAgICdjYXRhbG9nLnRoZXJtb21ldGVyJyxcbiAgICAnY2F0YWxvZy53aW5kb3dzaWxsJyxcbiAgICAnaW1nLmVtYWlsJyxcbiAgICAnaW1nLmZhY2Vib29rJyxcbiAgICAnaW1nLmluc3RhZ3JhbScsXG4gICAgJ2ltZy5xci1jb2RlJyxcbiAgICAnaW1nLnRlbGVncmFtJyxcbiAgICAnaW1nLnZpYmVyJyxcbiAgICAnaW1nLnZrJyxcbiAgICAnaW1nLndoYXRzYXBwJyxcbiAgICAnaW1nLmNvcHknLFxuICAgICdsYW5kaW5nLmNhdGFsb2cnLFxuICAgICdsYW5kaW5nLmNvbnN0cnVjdGlvbi1jaGVtaWNhbHMnLFxuICAgICdsYW5kaW5nLmZhc3RlbmVyJyxcbiAgICAnbGFuZGluZy5mb2FtLWJhbGxvb24nLFxuICAgICdsYW5kaW5nLm1vc3F1aXRvLW5ldCcsXG4gICAgJ2xhbmRpbmcucHJvZmlsZS1wbGFzdGljJyxcbiAgICAnbGFuZGluZy5zYW5kd2ljaC1wYW5lbCcsXG4gICAgJ2xhbmRpbmcuc2lkaW5nJyxcbiAgICAnbGFuZGluZy5zdHJpcCcsXG4gICAgJ2xhbmRpbmcud2luZG93c2lsbCcsXG4gICAgJ3NvbGlkLmZhY2Vib29rJyxcbiAgICAnc29saWQuaW5zdGFncmFtJyxcbiAgICAnc29saWQudGVsZWdyYW0nLFxuICAgICdzb2xpZC52ay1yb3VuZGVkJyxcbiAgICAnc29saWQudmsnLFxuICAgICdzb2xpZC53aGF0c2FwcCcsXG5dO1xuIl19
|
@@ -0,0 +1,2 @@
|
|
1
|
+
export {};
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtaS1xYS1pbmZvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL3BhZ2VzL3F1ZXN0aW9ucy1hbmQtYW5zd2Vycy9zYy1pLXFhLWluZm8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICog0JzQvtC00LXQu9GMINC00LDQvdC90YvRhSDQutC+0LzQv9C+0L3QtdC90YLQsCBcItCS0L7Qv9GA0L7RgdGLLdC+0YLQstC10YLRi1wiLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNjSVFBSW5mbyB7XG4gICAgLyoqXG4gICAgICog0JTQsNC90L3Ri9C1INC+INC00L7RgdGC0LDQstC60LUg0L/QviDQvdCw0L/RgNCw0LLQu9C10L3QuNGP0LwuXG4gICAgICovXG4gICAgcmVhZG9ubHkgZGVsaXZlcnlEYXRhOiBSZWFkb25seUFycmF5PHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqINCg0LXQs9C40L7QvS5cbiAgICAgICAgICovXG4gICAgICAgIHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiDQnNC40L3QuNC80LDQu9GM0L3QsCDRgdGC0L7QuNC80L7RgdGC0Ywg0LTQu9GPINCx0LXRgdC/0LvQsNGC0L3QvtC5INC00L7RgdGC0LDQstC60LguXG4gICAgICAgICAqL1xuICAgICAgICByZWFkb25seSBtaW5GcmVlQ29zdDogbnVtYmVyO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiDQn9C10YDQuNC+0LTQuNGH0L3QvtGB0YLRjCDQtNC+0YHRgtCw0LLQutC4LlxuICAgICAgICAgKi9cbiAgICAgICAgcmVhZG9ubHkgZnJlcXVlbmN5OiBzdHJpbmc7XG4gICAgfT47XG5cbiAgICAvKipcbiAgICAgKiDQktGA0LXQvNGPINC00L7RgdGC0LDQstC+0LouXG4gICAgICovXG4gICAgcmVhZG9ubHkgZGVsaXZlcnlUaW1lOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiDQktGA0LXQvNGPINC90LDRh9Cw0LvQsCDQtNC+0YHRgtCw0LLQvtC6LlxuICAgICAgICAgKi9cbiAgICAgICAgcmVhZG9ubHkgc3RhcnQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqINCS0YDQtdC80Y8g0L7QutC+0L3Rh9Cw0L3QuNGPINC00L7RgdGC0LDQstC+0LouXG4gICAgICAgICAqL1xuICAgICAgICByZWFkb25seSBlbmQ6IHN0cmluZztcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICog0JTQsNC90L3Ri9C1INC+INGB0YDQtdC00YHRgtCy0LDRhSDQtNC+0YHRgtCw0LLQutC4LlxuICAgICAqL1xuICAgIHJlYWRvbmx5IGNhcnNJbmZvOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiDQmtC+0LvQuNGH0LXRgdGC0LLQviDQsdC+0LvRjNGI0LXQs9GA0YPQt9C90YvRhSDQsNCy0YLQvtC80L7QsdC40LvQtdC5LlxuICAgICAgICAgKi9cbiAgICAgICAgcmVhZG9ubHkgY291bnQ6IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqINCT0YDRg9C30L7Qv9C+0LTRitGR0LzQvdC+0YHRgtGMLlxuICAgICAgICAgKi9cbiAgICAgICAgcmVhZG9ubHkgbG9hZENhcGFjaXR5OiB7XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqINCc0LjQvdC40LzQsNC70YzQvdCw0Y8g0LPRgNGD0LfQvtC/0L7QtNGK0ZHQvNC90L7RgdGC0YwuXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHJlYWRvbmx5IG1pbjogbnVtYmVyO1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiDQnNCw0LrRgdC40LzQsNC70YzQvdCw0Y8g0LPRgNGD0LfQvtC/0L7QtNGK0ZHQvNC90L7RgdGC0YwuXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHJlYWRvbmx5IG1heDogbnVtYmVyO1xuICAgICAgICB9O1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiDQodGB0YvQu9C60LAg0L3QsCDRgdC60LDRh9C40LLQsNC90LjQtSDQsdC70LDQvdC60LAg0YDQtdC60LvQsNC80LDRhtC40LguXG4gICAgICovXG4gICAgcmVhZG9ubHkgcmVjbGFtYXRpb25CbGFua0Rvd25sb2FkTGluazogc3RyaW5nO1xufVxuIl19
|
@@ -1,2 +1,3 @@
|
|
1
|
+
export * from './sc-qa-info';
|
1
2
|
export * from './sc-user-providers';
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvcHJvdmlkZXJzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMscUJBQXFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NjLXFhLWluZm8nO1xuZXhwb3J0ICogZnJvbSAnLi9zYy11c2VyLXByb3ZpZGVycyc7XG4iXX0=
|
@@ -0,0 +1,6 @@
|
|
1
|
+
import { tuiCreateToken } from '@taiga-ui/cdk';
|
2
|
+
/**
|
3
|
+
* Токен данных для страницы "Вопросы-ответы".
|
4
|
+
*/
|
5
|
+
export const SC_QA_INFO = tuiCreateToken();
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtcWEtaW5mby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9wcm92aWRlcnMvc2MtcWEtaW5mby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSS9DOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUE4QixjQUFjLEVBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0dWlDcmVhdGVUb2tlbiB9IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuXG5pbXBvcnQgeyBTY0lRQUluZm8gfSBmcm9tICcuLi9wYWdlcy9xdWVzdGlvbnMtYW5kLWFuc3dlcnMvc2MtaS1xYS1pbmZvJztcblxuLyoqXG4gKiDQotC+0LrQtdC9INC00LDQvdC90YvRhSDQtNC70Y8g0YHRgtGA0LDQvdC40YbRiyBcItCS0L7Qv9GA0L7RgdGLLdC+0YLQstC10YLRi1wiLlxuICovXG5leHBvcnQgY29uc3QgU0NfUUFfSU5GTzogSW5qZWN0aW9uVG9rZW48U2NJUUFJbmZvPiA9IHR1aUNyZWF0ZVRva2VuPFNjSVFBSW5mbz4oKTtcbiJdfQ==
|
@@ -3,16 +3,16 @@ import { EventEmitter, Component, ChangeDetectionStrategy, Inject, Input, Output
|
|
3
3
|
import * as i1 from '@snabcentr/client-core';
|
4
4
|
import { ScUserMetrikaGoalsEnum, ScISuggestionType, SC_MIN_LENGTH_SEARCH_TERM, ScOpfList, ScAuthService, SEARCH_TERM, ScUnitsHelper, ScImageHelper, SC_PATH_IMAGE_NOT_FOUND, ScPhoneService, IS_RUNNING_ON_TERMINAL, SC_URLS, ScWarehouseService, SEARCH_TERM_PROVIDERS, ScPaginationService, SC_NEXT_PAGE_PAGINATION_CLICK, SC_PRODUCT_PAGINATION_OPTIONS, ScIconTypesEnum, ScDocumentInfoTypesEnum, ScSamplesService, ScUserService } from '@snabcentr/client-core';
|
5
5
|
import * as i6$1 from 'rxjs';
|
6
|
-
import { Subject, map, filter, switchMap, tap, catchError, of, finalize, startWith, share, timer, scan, takeWhile, endWith, distinctUntilChanged, combineLatest, debounceTime, throwError, shareReplay,
|
6
|
+
import { Subject, map, filter, switchMap, tap, catchError, of, finalize, startWith, share, timer, scan, takeWhile, endWith, distinctUntilChanged, combineLatest, debounceTime, throwError, shareReplay, skip, interval } from 'rxjs';
|
7
7
|
import * as i2 from '@angular/common';
|
8
8
|
import { CommonModule } from '@angular/common';
|
9
9
|
import * as i1$1 from '@taiga-ui/core';
|
10
|
-
import { TUI_DATA_LIST_HOST, tuiDropdownOptionsProvider, TuiButton, TuiDialog, TuiDialogService, TuiLabel, TuiError, TuiLoader, TuiDataList, TuiNotification, TuiLink,
|
10
|
+
import { TUI_DATA_LIST_HOST, tuiDropdownOptionsProvider, TuiButton, TuiDialog, TuiDialogService, TuiLabel, TuiError, TuiLoader, TuiDataList, TuiNotification, TuiLink, TuiHint, TUI_MONTHS, TuiIcon, TuiFormatNumberPipe, tuiFadeIn } from '@taiga-ui/core';
|
11
11
|
import { HttpErrorResponse } from '@angular/common/http';
|
12
12
|
import * as i3 from '@angular/forms';
|
13
13
|
import { FormGroupDirective, FormGroup, FormControl, Validators, NgControl, FormArray, FormsModule, ReactiveFormsModule } from '@angular/forms';
|
14
14
|
import * as i6 from '@taiga-ui/cdk';
|
15
|
-
import { tuiControlValue, tuiIsFalsy, tuiIsPresent, tuiMarkControlAsTouchedAndValidate, TUI_IS_MOBILE, TuiLet, TuiRepeatTimes, TuiDay, TuiDayRange, TuiMonth, tuiPure, TuiHovered, TUI_TRUE_HANDLER } from '@taiga-ui/cdk';
|
15
|
+
import { tuiControlValue, tuiIsFalsy, tuiIsPresent, tuiMarkControlAsTouchedAndValidate, TUI_IS_MOBILE, TuiLet, TuiRepeatTimes, TuiDay, TuiDayRange, TuiMonth, tuiPure, TuiHovered, tuiCreateToken, TUI_TRUE_HANDLER } from '@taiga-ui/cdk';
|
16
16
|
import * as i4 from '@taiga-ui/legacy/components/primitive-textfield';
|
17
17
|
import * as i5 from '@taiga-ui/legacy';
|
18
18
|
import { AbstractTuiControl, TuiInputModule, TuiTextfieldControllerModule, TuiComboBoxModule, TuiInputPhoneModule, TuiSelectModule, TuiInputPasswordModule, AbstractTuiNullableControl, TuiInputNumberComponent, TuiIslandDirective, TuiInputNumberModule } from '@taiga-ui/legacy';
|
@@ -2892,17 +2892,13 @@ class ScBannerComponent {
|
|
2892
2892
|
*/
|
2893
2893
|
this.navigateButton = true;
|
2894
2894
|
/**
|
2895
|
-
* Интервал
|
2895
|
+
* Интервал автоматической смены слайдов в миллисекундах (используйте 0, чтобы отключить автоматическую смену слайда).
|
2896
2896
|
*/
|
2897
|
-
this.
|
2898
|
-
/**
|
2899
|
-
* Признак, что прокрутка выключена.
|
2900
|
-
*/
|
2901
|
-
this.disabled = false;
|
2897
|
+
this.duration = 5000;
|
2902
2898
|
/**
|
2903
2899
|
* Признак, что компонент должен растягиваться.
|
2904
2900
|
*/
|
2905
|
-
this.resizable =
|
2901
|
+
this.resizable = false;
|
2906
2902
|
/**
|
2907
2903
|
* Событие загрузки баннеров с количеством полученных баннеров.
|
2908
2904
|
*/
|
@@ -2911,10 +2907,6 @@ class ScBannerComponent {
|
|
2911
2907
|
* Событие нажатия на изображение баннера.
|
2912
2908
|
*/
|
2913
2909
|
this.clickBannerEvent = new EventEmitter();
|
2914
|
-
/**
|
2915
|
-
* Ссылка для автоматического управления уничтожением зависимостей.
|
2916
|
-
*/
|
2917
|
-
this.destroyRef = inject(DestroyRef);
|
2918
2910
|
/**
|
2919
2911
|
* Идентификатор текущего баннера.
|
2920
2912
|
*/
|
@@ -2923,23 +2915,14 @@ class ScBannerComponent {
|
|
2923
2915
|
* {@link Subject} изменения состояния таймера.
|
2924
2916
|
*/
|
2925
2917
|
this.toggleTimer$ = new Subject();
|
2926
|
-
/**
|
2927
|
-
* Признак, что необходимо показывать кнопки старта видео баннера.
|
2928
|
-
*/
|
2929
|
-
this.showPlayBtn = false;
|
2930
2918
|
/**
|
2931
2919
|
* {@link Observable} обновления списка баннеров.
|
2932
2920
|
*/
|
2933
2921
|
this.banners$ = this.bannerService.banners$.pipe(map((banners) => banners.filter((banner) => banner.location === this.bannerLocation).reverse()), tap((banners) => {
|
2934
2922
|
if (banners.length > 0) {
|
2935
|
-
if (this.resizable) {
|
2936
|
-
this.
|
2937
|
-
}
|
2938
|
-
else {
|
2939
|
-
this.height = `${this.pxConverter.pxToRem(banners[0].height)}rem`;
|
2940
|
-
this.width = `${this.pxConverter.pxToRem(banners[0].width)}rem`;
|
2923
|
+
if (!this.resizable) {
|
2924
|
+
this.aspectRatio = `${banners[0].width} / ${banners[0].height}`;
|
2941
2925
|
}
|
2942
|
-
this.aspectRatio = `${banners[0].width} / ${banners[0].height}`;
|
2943
2926
|
this.banners = banners;
|
2944
2927
|
this.toggleTimer$.next(true);
|
2945
2928
|
}
|
@@ -2951,30 +2934,10 @@ class ScBannerComponent {
|
|
2951
2934
|
* Список баннеров.
|
2952
2935
|
*/
|
2953
2936
|
this.banners = [];
|
2954
|
-
/**
|
2955
|
-
* Свойство, от которого зависит высота `:host` компонента.
|
2956
|
-
*/
|
2957
|
-
this.height = 'auto';
|
2958
|
-
/**
|
2959
|
-
* Свойство, от которого зависит ширина `:host` компонента.
|
2960
|
-
*/
|
2961
|
-
this.width = '';
|
2962
2937
|
/**
|
2963
2938
|
* Свойство, от которого зависит соотношение `:host` компонента.
|
2964
2939
|
*/
|
2965
2940
|
this.aspectRatio = '';
|
2966
|
-
/**
|
2967
|
-
* Обработчик события mouseenter.
|
2968
|
-
*/
|
2969
|
-
this.mouseEnterHandler = () => {
|
2970
|
-
this.toggleTimer$.next(false);
|
2971
|
-
};
|
2972
|
-
/**
|
2973
|
-
* Обработчик события mouseleave.
|
2974
|
-
*/
|
2975
|
-
this.mouseLeaveHandler = () => {
|
2976
|
-
this.toggleTimer$.next(true);
|
2977
|
-
};
|
2978
2941
|
}
|
2979
2942
|
/**
|
2980
2943
|
* Свойство, от которого зависит наличие класса `!hidden` у `:host` компонента.
|
@@ -2982,43 +2945,6 @@ class ScBannerComponent {
|
|
2982
2945
|
get isHidden() {
|
2983
2946
|
return !this.banners || this.bannersListRef.length + this.banners.length === 0;
|
2984
2947
|
}
|
2985
|
-
/** @inheritDoc */
|
2986
|
-
ngAfterViewInit() {
|
2987
|
-
this.toggleTimer$
|
2988
|
-
.pipe(filter((toggle) => toggle), switchMap(() => interval(this.playerInterval).pipe(takeUntil(this.toggleTimer$))), filter(() => !this.disabled && (this.banners?.[this.currentBannerId]?.mediaType === 'image' || this.showPlayBtn)), takeUntilDestroyed(this.destroyRef))
|
2989
|
-
.subscribe(() => {
|
2990
|
-
this.onNextBanner();
|
2991
|
-
});
|
2992
|
-
// Отслеживание пересечения компонента с экраном пользователя.
|
2993
|
-
// Если баннера не находится в поле видимости пользователя, то он перестаёт переключаться, а видео останавливается.
|
2994
|
-
this.entries$.pipe(map((entries) => entries.find((item) => item.target === this.element.nativeElement))).subscribe((entry) => {
|
2995
|
-
this.toggleTimer$.next(!!entry?.isIntersecting);
|
2996
|
-
});
|
2997
|
-
}
|
2998
|
-
/**
|
2999
|
-
* Переключает на предыдущий баннер.
|
3000
|
-
*/
|
3001
|
-
onPreviousBanner() {
|
3002
|
-
const previous = this.currentBannerId - 1;
|
3003
|
-
this.currentBannerId = previous < 0 ? this.bannersListRef.length + (this.banners?.length ?? 0) - 1 : previous;
|
3004
|
-
this.cdr.markForCheck();
|
3005
|
-
}
|
3006
|
-
/**
|
3007
|
-
* Переключает на следующий баннер.
|
3008
|
-
*/
|
3009
|
-
onNextBanner() {
|
3010
|
-
const next = this.currentBannerId + 1;
|
3011
|
-
this.currentBannerId = next === this.bannersListRef.length + (this.banners?.length ?? 0) ? 0 : next;
|
3012
|
-
this.cdr.markForCheck();
|
3013
|
-
}
|
3014
|
-
/**
|
3015
|
-
* Переключает на следующий баннер.
|
3016
|
-
*/
|
3017
|
-
onEndedVideo() {
|
3018
|
-
this.onNextBanner();
|
3019
|
-
this.toggleTimer$.next(true);
|
3020
|
-
this.showPlayBtn = true;
|
3021
|
-
}
|
3022
2948
|
/**
|
3023
2949
|
* Обработчик нажатия на баннер, генерирующий событие {@link clickBannerImgEvent}.
|
3024
2950
|
*
|
@@ -3036,11 +2962,11 @@ class ScBannerComponent {
|
|
3036
2962
|
}
|
3037
2963
|
}
|
3038
2964
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ScBannerComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.ScBannerService }, { token: IntersectionObserverService }, { token: ElementRef }, { token: ScPxConverter }, { token: i1.ScUserMetrikaService }], target: i0.ɵɵFactoryTarget.Component }); }
|
3039
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: ScBannerComponent, selector: "sc-banner", inputs: { navigateButton: "navigateButton",
|
2965
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: ScBannerComponent, selector: "sc-banner", inputs: { navigateButton: "navigateButton", duration: "duration", bannerLocation: "bannerLocation", resizable: "resizable" }, outputs: { loadBannersEvent: "loadBannersEvent", clickBannerEvent: "clickBannerEvent" }, host: { properties: { "style.aspect-ratio": "this.aspectRatio", "class.!hidden": "this.isHidden" } }, providers: [IntersectionObserverService], queries: [{ propertyName: "bannersListRef", predicate: ["banner"] }], ngImport: i0, template: "<ng-container *tuiLet=\"banners$ | async\">\n <tui-carousel\n [duration]=\"duration\"\n #carousel\n [attr.resizable]=\"resizable\"\n class=\"size-full overflow-hidden rounded-xl bg-white\"\n [(index)]=\"currentBannerId\"\n >\n <ng-container *ngFor=\"let banner of banners; let index = index\">\n <ng-container [ngSwitch]=\"banner.mediaType\">\n <ng-container *ngSwitchCase=\"'image'\">\n <a\n *tuiItem\n (click)=\"onClick(banner)\"\n target=\"_blank\"\n [title]=\"banner.title\"\n [style.aspect-ratio]=\"aspectRatio\"\n [attr.href]=\"banner.url ? banner.url : null\"\n [style.background-image]=\"'url(' + banner.mediaFile + ')'\"\n class=\"size-full bg-[length:100%_100%]\"\n >\n </a>\n </ng-container>\n </ng-container>\n </ng-container>\n <ng-container *ngFor=\"let item of bannersListRef\">\n <div\n *tuiItem\n [style.aspect-ratio]=\"aspectRatio\"\n class=\"size-full overflow-hidden\"\n >\n <ng-container [ngTemplateOutlet]=\"item\"></ng-container>\n </div>\n </ng-container>\n </tui-carousel>\n\n <div\n *ngIf=\"navigateButton && duration && this.banners && this.bannersListRef.length + this.banners.length > 1\"\n tuiTheme=\"light\"\n class=\"flex items-center\"\n >\n <button\n tuiIconButton\n iconStart=\"@tui.chevron-left\"\n size=\"m\"\n [style.border-radius.%]=\"100\"\n appearance=\"flat\"\n (click)=\"carousel.prev()\"\n class=\"!absolute left-2\"\n ></button>\n <button\n tuiIconButton\n iconStart=\"@tui.chevron-right\"\n size=\"m\"\n [style.border-radius.%]=\"100\"\n appearance=\"flat\"\n (click)=\"carousel.next()\"\n class=\"!absolute right-2\"\n ></button>\n </div>\n</ng-container>\n", styles: [":host{--tui-carousel-padding: 0;display:flex;position:relative}::ng-deep tui-carousel[resizable=true] .t-scroller,::ng-deep tui-carousel[resizable=true] .t-items{width:100%;height:100%}\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: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1$1.TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "directive", type: i1$2.TuiItem, selector: "[tuiItem]" }, { kind: "component", type: i2$1.TuiCarouselComponent, selector: "tui-carousel", inputs: ["draggable", "itemsCount", "index"], outputs: ["indexChange"] }, { kind: "directive", type: i6.TuiLet, selector: "[tuiLet]", inputs: ["tuiLet"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
3040
2966
|
}
|
3041
2967
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ScBannerComponent, decorators: [{
|
3042
2968
|
type: Component,
|
3043
|
-
args: [{ selector: 'sc-banner', changeDetection: ChangeDetectionStrategy.OnPush, providers: [IntersectionObserverService],
|
2969
|
+
args: [{ selector: 'sc-banner', changeDetection: ChangeDetectionStrategy.OnPush, providers: [IntersectionObserverService], template: "<ng-container *tuiLet=\"banners$ | async\">\n <tui-carousel\n [duration]=\"duration\"\n #carousel\n [attr.resizable]=\"resizable\"\n class=\"size-full overflow-hidden rounded-xl bg-white\"\n [(index)]=\"currentBannerId\"\n >\n <ng-container *ngFor=\"let banner of banners; let index = index\">\n <ng-container [ngSwitch]=\"banner.mediaType\">\n <ng-container *ngSwitchCase=\"'image'\">\n <a\n *tuiItem\n (click)=\"onClick(banner)\"\n target=\"_blank\"\n [title]=\"banner.title\"\n [style.aspect-ratio]=\"aspectRatio\"\n [attr.href]=\"banner.url ? banner.url : null\"\n [style.background-image]=\"'url(' + banner.mediaFile + ')'\"\n class=\"size-full bg-[length:100%_100%]\"\n >\n </a>\n </ng-container>\n </ng-container>\n </ng-container>\n <ng-container *ngFor=\"let item of bannersListRef\">\n <div\n *tuiItem\n [style.aspect-ratio]=\"aspectRatio\"\n class=\"size-full overflow-hidden\"\n >\n <ng-container [ngTemplateOutlet]=\"item\"></ng-container>\n </div>\n </ng-container>\n </tui-carousel>\n\n <div\n *ngIf=\"navigateButton && duration && this.banners && this.bannersListRef.length + this.banners.length > 1\"\n tuiTheme=\"light\"\n class=\"flex items-center\"\n >\n <button\n tuiIconButton\n iconStart=\"@tui.chevron-left\"\n size=\"m\"\n [style.border-radius.%]=\"100\"\n appearance=\"flat\"\n (click)=\"carousel.prev()\"\n class=\"!absolute left-2\"\n ></button>\n <button\n tuiIconButton\n iconStart=\"@tui.chevron-right\"\n size=\"m\"\n [style.border-radius.%]=\"100\"\n appearance=\"flat\"\n (click)=\"carousel.next()\"\n class=\"!absolute right-2\"\n ></button>\n </div>\n</ng-container>\n", styles: [":host{--tui-carousel-padding: 0;display:flex;position:relative}::ng-deep tui-carousel[resizable=true] .t-scroller,::ng-deep tui-carousel[resizable=true] .t-items{width:100%;height:100%}\n"] }]
|
3044
2970
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.ScBannerService }, { type: i3$2.IntersectionObserverService, decorators: [{
|
3045
2971
|
type: Inject,
|
3046
2972
|
args: [IntersectionObserverService]
|
@@ -3049,9 +2975,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImpo
|
|
3049
2975
|
args: [ElementRef]
|
3050
2976
|
}] }, { type: ScPxConverter }, { type: i1.ScUserMetrikaService }], propDecorators: { navigateButton: [{
|
3051
2977
|
type: Input
|
3052
|
-
}],
|
3053
|
-
type: Input
|
3054
|
-
}], disabled: [{
|
2978
|
+
}], duration: [{
|
3055
2979
|
type: Input
|
3056
2980
|
}], bannerLocation: [{
|
3057
2981
|
type: Input
|
@@ -3064,24 +2988,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImpo
|
|
3064
2988
|
}], bannersListRef: [{
|
3065
2989
|
type: ContentChildren,
|
3066
2990
|
args: ['banner']
|
3067
|
-
}], videoRef: [{
|
3068
|
-
type: ViewChild,
|
3069
|
-
args: ['videoPlayer']
|
3070
|
-
}], height: [{
|
3071
|
-
type: HostBinding,
|
3072
|
-
args: ['style.height']
|
3073
|
-
}], width: [{
|
3074
|
-
type: HostBinding,
|
3075
|
-
args: ['style.width']
|
3076
2991
|
}], aspectRatio: [{
|
3077
2992
|
type: HostBinding,
|
3078
2993
|
args: ['style.aspect-ratio']
|
3079
|
-
}], mouseEnterHandler: [{
|
3080
|
-
type: HostListener,
|
3081
|
-
args: ['mouseenter']
|
3082
|
-
}], mouseLeaveHandler: [{
|
3083
|
-
type: HostListener,
|
3084
|
-
args: ['mouseleave']
|
3085
2994
|
}], isHidden: [{
|
3086
2995
|
type: HostBinding,
|
3087
2996
|
args: ['class.!hidden']
|
@@ -3172,7 +3081,11 @@ class ScCategoryCardComponent {
|
|
3172
3081
|
/**
|
3173
3082
|
* Признак наведения на карточку.
|
3174
3083
|
*/
|
3175
|
-
this.
|
3084
|
+
this.isHover = false;
|
3085
|
+
/**
|
3086
|
+
* Признак что категория имеет поведение наведения и скрытия названия.
|
3087
|
+
*/
|
3088
|
+
this.enableHover = false;
|
3176
3089
|
/**
|
3177
3090
|
* Признак того, отображается этот компонент на мобильном устройстве или нет.
|
3178
3091
|
*/
|
@@ -3185,10 +3098,10 @@ class ScCategoryCardComponent {
|
|
3185
3098
|
/**
|
3186
3099
|
* Обработчик события наведения.
|
3187
3100
|
*
|
3188
|
-
* @param
|
3101
|
+
* @param isHover Признак наведения на карточку.
|
3189
3102
|
*/
|
3190
|
-
onHovered(
|
3191
|
-
this.
|
3103
|
+
onHovered(isHover) {
|
3104
|
+
this.isHover = isHover;
|
3192
3105
|
}
|
3193
3106
|
/**
|
3194
3107
|
* Возвращает путь к изображению категории. Если путь отсутствует, то вернёт изображение по-умолчанию ("product_not_found").
|
@@ -3207,11 +3120,11 @@ class ScCategoryCardComponent {
|
|
3207
3120
|
this.cdr.markForCheck();
|
3208
3121
|
}
|
3209
3122
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ScCategoryCardComponent, deps: [{ token: SC_URLS }, { token: SC_PATH_IMAGE_NOT_FOUND }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
3210
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
3123
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.12", type: ScCategoryCardComponent, selector: "sc-category-card", inputs: { category: "category", size: "size", enableHover: "enableHover", href: "href" }, outputs: { clickOnFavoriteEvent: "clickOnFavoriteEvent" }, host: { properties: { "attr.data-size": "this.size" } }, ngImport: i0, template: "<div class=\"relative\">\n <a\n (tuiHoveredChange)=\"onHovered($event)\"\n [routerLink]=\"href ?? null\"\n class=\"category-button flex flex-col overflow-hidden rounded-tui-radius-m border border-tui-base-04 text-center\"\n >\n <div class=\"img-wrapper w-full grow overflow-hidden\">\n <img\n *ngIf=\"category && category.properties?.image\"\n [src]=\"getCategoryImgURL(category)\"\n [alt]=\"category.name\"\n class=\"size-full object-cover\"\n />\n\n <div\n *ngIf=\"!category\"\n class=\"img-wrapper size-full bg-tui-base-02\"\n ></div>\n\n <img\n *ngIf=\"category && !category.properties?.image\"\n [src]=\"getCategoryImgURL(category)\"\n [alt]=\"category.name\"\n class=\"size-full rounded-xl object-contain p-2\"\n />\n </div>\n\n <div class=\"name flex w-full items-center justify-center\">\n @if (category) {\n @if (enableHover && !isMobile) {\n <tui-line-clamp\n [content]=\"category.name\"\n class=\"pointer-events-none\"\n [lineHeight]=\"size === 'm' ? 26 : 24\"\n [linesLimit]=\"isHover ? 4 : 2\"\n />\n } @else {\n {{ category.name }}\n }\n } @else {\n <div class=\"skeleton-name rounded-tui-radius-s bg-tui-base-02\"></div>\n }\n </div>\n </a>\n <sc-favorite-button\n *ngIf=\"category && (authStatus$ | async)\"\n [showLoader]=\"favoriteShowLoader\"\n [isFavorite]=\"category.isFavorite\"\n (clickEvent)=\"clickOnFavoriteEvent.emit()\"\n class=\"absolute left-1 top-1\"\n ></sc-favorite-button>\n</div>\n", styles: [":host{--tui-duration: .15s}:host[data-size=m] a.category-button{width:100%;height:12.5rem}:host[data-size=m] a.category-button .img-wrapper{max-height:8.75rem}:host[data-size=m] a.category-button .name{padding:.25rem 1rem;margin-block:auto;font-size:.9375rem;line-height:1.5rem;font-weight:800}:host[data-size=m] a.category-button .name .skeleton-name{width:10rem;height:1rem}:host[data-size=s] a.category-button{width:100%;height:10rem}:host[data-size=s] a.category-button .img-wrapper{max-height:7rem}:host[data-size=s] a.category-button .name{padding:.25rem .5rem;margin-block:auto;font-size:.8125rem;line-height:1.25rem;font-weight:800}:host[data-size=s] a.category-button .name .skeleton-name{width:7rem;height:.75rem}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$4.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i2$1.TuiLineClamp, selector: "tui-line-clamp", inputs: ["lineHeight", "content", "linesLimit"], outputs: ["overflownChange"] }, { kind: "directive", type: i6.TuiHovered, selector: "[tuiHoveredChange]", outputs: ["tuiHoveredChange"] }, { kind: "component", type: ScFavoriteButtonComponent, selector: "sc-favorite-button", inputs: ["isFavorite", "showLoader", "disabled"], outputs: ["clickEvent"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
3211
3124
|
}
|
3212
3125
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ScCategoryCardComponent, decorators: [{
|
3213
3126
|
type: Component,
|
3214
|
-
args: [{ selector: 'sc-category-card', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"relative\">\n <a\n (tuiHoveredChange)=\"onHovered($event)\"\n [routerLink]=\"href ?? null\"\n class=\"category-button rounded-tui-radius-m border-tui-base-04
|
3127
|
+
args: [{ selector: 'sc-category-card', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"relative\">\n <a\n (tuiHoveredChange)=\"onHovered($event)\"\n [routerLink]=\"href ?? null\"\n class=\"category-button flex flex-col overflow-hidden rounded-tui-radius-m border border-tui-base-04 text-center\"\n >\n <div class=\"img-wrapper w-full grow overflow-hidden\">\n <img\n *ngIf=\"category && category.properties?.image\"\n [src]=\"getCategoryImgURL(category)\"\n [alt]=\"category.name\"\n class=\"size-full object-cover\"\n />\n\n <div\n *ngIf=\"!category\"\n class=\"img-wrapper size-full bg-tui-base-02\"\n ></div>\n\n <img\n *ngIf=\"category && !category.properties?.image\"\n [src]=\"getCategoryImgURL(category)\"\n [alt]=\"category.name\"\n class=\"size-full rounded-xl object-contain p-2\"\n />\n </div>\n\n <div class=\"name flex w-full items-center justify-center\">\n @if (category) {\n @if (enableHover && !isMobile) {\n <tui-line-clamp\n [content]=\"category.name\"\n class=\"pointer-events-none\"\n [lineHeight]=\"size === 'm' ? 26 : 24\"\n [linesLimit]=\"isHover ? 4 : 2\"\n />\n } @else {\n {{ category.name }}\n }\n } @else {\n <div class=\"skeleton-name rounded-tui-radius-s bg-tui-base-02\"></div>\n }\n </div>\n </a>\n <sc-favorite-button\n *ngIf=\"category && (authStatus$ | async)\"\n [showLoader]=\"favoriteShowLoader\"\n [isFavorite]=\"category.isFavorite\"\n (clickEvent)=\"clickOnFavoriteEvent.emit()\"\n class=\"absolute left-1 top-1\"\n ></sc-favorite-button>\n</div>\n", styles: [":host{--tui-duration: .15s}:host[data-size=m] a.category-button{width:100%;height:12.5rem}:host[data-size=m] a.category-button .img-wrapper{max-height:8.75rem}:host[data-size=m] a.category-button .name{padding:.25rem 1rem;margin-block:auto;font-size:.9375rem;line-height:1.5rem;font-weight:800}:host[data-size=m] a.category-button .name .skeleton-name{width:10rem;height:1rem}:host[data-size=s] a.category-button{width:100%;height:10rem}:host[data-size=s] a.category-button .img-wrapper{max-height:7rem}:host[data-size=s] a.category-button .name{padding:.25rem .5rem;margin-block:auto;font-size:.8125rem;line-height:1.25rem;font-weight:800}:host[data-size=s] a.category-button .name .skeleton-name{width:7rem;height:.75rem}\n"] }]
|
3215
3128
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
3216
3129
|
type: Inject,
|
3217
3130
|
args: [SC_URLS]
|
@@ -3225,6 +3138,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImpo
|
|
3225
3138
|
}, {
|
3226
3139
|
type: HostBinding,
|
3227
3140
|
args: ['attr.data-size']
|
3141
|
+
}], enableHover: [{
|
3142
|
+
type: Input
|
3228
3143
|
}], clickOnFavoriteEvent: [{
|
3229
3144
|
type: Output
|
3230
3145
|
}], href: [{
|
@@ -4709,6 +4624,16 @@ const scClientUiIconsName = [
|
|
4709
4624
|
'img.vk',
|
4710
4625
|
'img.whatsapp',
|
4711
4626
|
'img.copy',
|
4627
|
+
'landing.catalog',
|
4628
|
+
'landing.construction-chemicals',
|
4629
|
+
'landing.fastener',
|
4630
|
+
'landing.foam-balloon',
|
4631
|
+
'landing.mosquito-net',
|
4632
|
+
'landing.profile-plastic',
|
4633
|
+
'landing.sandwich-panel',
|
4634
|
+
'landing.siding',
|
4635
|
+
'landing.strip',
|
4636
|
+
'landing.windowsill',
|
4712
4637
|
'solid.facebook',
|
4713
4638
|
'solid.instagram',
|
4714
4639
|
'solid.telegram',
|
@@ -5233,6 +5158,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImpo
|
|
5233
5158
|
}]
|
5234
5159
|
}] });
|
5235
5160
|
|
5161
|
+
/**
|
5162
|
+
* Токен данных для страницы "Вопросы-ответы".
|
5163
|
+
*/
|
5164
|
+
const SC_QA_INFO = tuiCreateToken();
|
5165
|
+
|
5236
5166
|
/**
|
5237
5167
|
* Токен потока данных о текущем пользователе.
|
5238
5168
|
*/
|
@@ -5833,5 +5763,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImpo
|
|
5833
5763
|
* Generated bundle index. Do not edit.
|
5834
5764
|
*/
|
5835
5765
|
|
5836
|
-
export { AbstractScPriceCard, AuthMethod, FilesAndDocumentsComponent, FilesAndDocumentsModule, SC_USER_INFO, SC_USER_PROVIDERS, ScAccordionComponent, ScAccordionContentDirective, ScAccordionModule, ScAddContactDialogComponent, ScAddContragentBankAccountsDialogComponent, ScAddContragentDialogComponent, ScAddDeliveryAddressDialogComponent, ScAddressesSelectionFieldComponent, ScAskToSampleFormComponent, ScAuthModule, ScBannerComponent, ScBannerModule, ScBrandsListComponent, ScBrandsListModule, ScCartItemMobileComponent, ScCartModule, ScCatalogModule, ScCategoryCardComponent, ScContactsAccordionComponent, ScContactsModule, ScContragentsAccordionComponent, ScContragentsAccordionItemComponent, ScContragentsModule, ScDeliveryAddressAccordionComponent, ScDeliveryAddressAccordionItemComponent, ScDeliveryAddressModule, ScFavoriteButtonComponent, ScFormFieldsModule, ScFormatePhonePipe, ScInputQuantityComponent, ScNewContactFormComponent, ScNewContragentBankAccountsFormComponent, ScNewContragentFormComponent, ScNewsCardComponent, ScNewsCardSkeletonComponent, ScNewsModule, ScNextInputFocusDirective, ScNextInputFocusModule, ScOrderItemMobileComponent, ScOrderModule, ScPaymentStatusComponent, ScPreviewSampleComponent, ScPreviewSampleModule, ScPriceCardComponent, ScPriceCardInlineComponent, ScPriceHistoryComponent, ScPriceListPaginationComponent, ScPriceWarehouseStockComponent, ScProfileAccordionsContentComponent, ScProfileModule, ScQRCodeDialogComponent, ScQRCodeModule, ScResetUserPasswordComponent, ScShareButtonComponent, ScShareButtonModule, ScSignInFormByEmailComponent, ScSignInFormByPhoneComponent, ScSignInFormComponent, ScSignUpFormComponent, ScSuggestionFieldComponent, ScTelLinkDirective, ScTelLinkModule, ScTerminalLinkDirective, ScUpdateUserInfoDialogComponent, ScUserManagersComponent, ScUserModule, ScUserPhoneApproveDialogComponent, ScVerificationModule, ScVerificationPhoneCheckFormComponent, TreeDirective, TreeIconService, TreeLoaderService, TreeTopDirective, scBicValidator, scClientUiIconsName, scCorrespondentAccountValidator, scPasswordConfirmMatchingValidator, scUserFactory, stepValidator };
|
5766
|
+
export { AbstractScPriceCard, AuthMethod, FilesAndDocumentsComponent, FilesAndDocumentsModule, SC_QA_INFO, SC_USER_INFO, SC_USER_PROVIDERS, ScAccordionComponent, ScAccordionContentDirective, ScAccordionModule, ScAddContactDialogComponent, ScAddContragentBankAccountsDialogComponent, ScAddContragentDialogComponent, ScAddDeliveryAddressDialogComponent, ScAddressesSelectionFieldComponent, ScAskToSampleFormComponent, ScAuthModule, ScBannerComponent, ScBannerModule, ScBrandsListComponent, ScBrandsListModule, ScCartItemMobileComponent, ScCartModule, ScCatalogModule, ScCategoryCardComponent, ScContactsAccordionComponent, ScContactsModule, ScContragentsAccordionComponent, ScContragentsAccordionItemComponent, ScContragentsModule, ScDeliveryAddressAccordionComponent, ScDeliveryAddressAccordionItemComponent, ScDeliveryAddressModule, ScFavoriteButtonComponent, ScFormFieldsModule, ScFormatePhonePipe, ScInputQuantityComponent, ScNewContactFormComponent, ScNewContragentBankAccountsFormComponent, ScNewContragentFormComponent, ScNewsCardComponent, ScNewsCardSkeletonComponent, ScNewsModule, ScNextInputFocusDirective, ScNextInputFocusModule, ScOrderItemMobileComponent, ScOrderModule, ScPaymentStatusComponent, ScPreviewSampleComponent, ScPreviewSampleModule, ScPriceCardComponent, ScPriceCardInlineComponent, ScPriceHistoryComponent, ScPriceListPaginationComponent, ScPriceWarehouseStockComponent, ScProfileAccordionsContentComponent, ScProfileModule, ScQRCodeDialogComponent, ScQRCodeModule, ScResetUserPasswordComponent, ScShareButtonComponent, ScShareButtonModule, ScSignInFormByEmailComponent, ScSignInFormByPhoneComponent, ScSignInFormComponent, ScSignUpFormComponent, ScSuggestionFieldComponent, ScTelLinkDirective, ScTelLinkModule, ScTerminalLinkDirective, ScUpdateUserInfoDialogComponent, ScUserManagersComponent, ScUserModule, ScUserPhoneApproveDialogComponent, ScVerificationModule, ScVerificationPhoneCheckFormComponent, TreeDirective, TreeIconService, TreeLoaderService, TreeTopDirective, scBicValidator, scClientUiIconsName, scCorrespondentAccountValidator, scPasswordConfirmMatchingValidator, scUserFactory, stepValidator };
|
5837
5767
|
//# sourceMappingURL=snabcentr-client-ui.mjs.map
|