@snabcentr/client-ui 4.6.1 → 5.1.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/fesm2022/snabcentr-client-ui.mjs +4349 -4761
- package/fesm2022/snabcentr-client-ui.mjs.map +1 -1
- package/package.json +35 -36
- package/release_notes.tmp +2 -4
- package/styles/taiga/variables.less +16 -17
- package/styles/tailwind/tailwind.scss +17 -12
- package/types/snabcentr-client-ui.d.ts +5704 -0
- package/accordion/index.d.ts +0 -3
- package/accordion/sc-accordion-content.directive.d.ts +0 -9
- package/accordion/sc-accordion.component.d.ts +0 -56
- package/accordion/sc-accordion.module.d.ts +0 -15
- package/auth/enums/auth-method.d.ts +0 -13
- package/auth/index.d.ts +0 -8
- package/auth/interfaces/index.d.ts +0 -2
- package/auth/interfaces/sc-bank-account-form-group.d.ts +0 -11
- package/auth/interfaces/sc-contact-form-group.d.ts +0 -10
- package/auth/sc-auth.module.d.ts +0 -27
- package/auth/sc-sign-in-form/sc-sign-in-form-by-email/sc-sign-in-form-by-email.component.d.ts +0 -55
- package/auth/sc-sign-in-form/sc-sign-in-form-by-phone/sc-sign-in-form-by-phone.component.d.ts +0 -45
- package/auth/sc-sign-in-form/sc-sign-in-form.component.d.ts +0 -53
- package/auth/sc-simple-sign-up-form/sc-simple-sign-up-form.component.d.ts +0 -113
- package/auth/sign-up-form/sc-sign-up-form.component.d.ts +0 -166
- package/banner/index.d.ts +0 -2
- package/banner/sc-banner.component.d.ts +0 -79
- package/banner/sc-banner.module.d.ts +0 -17
- package/brands-list/index.d.ts +0 -2
- package/brands-list/sc-brands-list.component.d.ts +0 -15
- package/brands-list/sc-brands-list.module.d.ts +0 -12
- package/cart/add-or-editing-cart-item-dialog/add-or-editing-cart-item-form/sc-add-or-editing-cart-item-form.component.d.ts +0 -102
- package/cart/add-or-editing-cart-item-dialog/index.d.ts +0 -2
- package/cart/add-or-editing-cart-item-dialog/sc-add-or-editing-cart-item-dialog.component.d.ts +0 -49
- package/cart/index.d.ts +0 -2
- package/cart/sc-cart-add-products-from-csv-dialog/sc-cart-add-products-from-csv-dialog.component.d.ts +0 -62
- package/catalog/catalog-filters/index.d.ts +0 -3
- package/catalog/catalog-filters/sc-catalog-filters.component.d.ts +0 -102
- package/catalog/catalog-filters/tokens/sc-catalog-products-filters.d.ts +0 -7
- package/catalog/catalog-filters/tokens/sc-catalog-show-products-recursively.d.ts +0 -5
- package/catalog/category-card/sc-category-card.component.d.ts +0 -76
- package/catalog/cost-with-discount/cost-with-discount.component.d.ts +0 -23
- package/catalog/download-price-list/sc-download-price-list.component.d.ts +0 -38
- package/catalog/hover-image-carousel/sc-hover-image-carousel.component.d.ts +0 -48
- package/catalog/index.d.ts +0 -15
- package/catalog/input-quantity/sc-input-quantity.component.d.ts +0 -82
- package/catalog/notify-when-in-stock-dialog/index.d.ts +0 -2
- package/catalog/notify-when-in-stock-dialog/sc-notify-when-in-stock-dialog.component.d.ts +0 -90
- package/catalog/notify-when-in-stock-dialog/sc-product-in-all-warehouses.pipe.d.ts +0 -22
- package/catalog/price-card/sc-price-card.component.d.ts +0 -18
- package/catalog/price-card-inline/sc-price-card-inline.component.d.ts +0 -10
- package/catalog/price-history/sc-price-history.component.d.ts +0 -88
- package/catalog/price-list-pagination/sc-price-list-pagination.component.d.ts +0 -40
- package/catalog/price-warehouse-stock/sc-price-warehouse-stock.component.d.ts +0 -47
- package/catalog/sc-catalog.module.d.ts +0 -29
- package/catalog/sc-favorite-button/sc-favorite-button.component.d.ts +0 -25
- package/catalog/seo-tags/sc-seo-tags.component.d.ts +0 -20
- package/configurators/index.d.ts +0 -3
- package/configurators/models/index.d.ts +0 -3
- package/configurators/models/sandwich/sc-i-configurator-search-product-sandwich.d.ts +0 -22
- package/configurators/models/sandwich/sc-i-sandwich-settings.d.ts +0 -18
- package/configurators/models/sandwich_m2/sc-i-sandwich-m2-settings.d.ts +0 -18
- package/configurators/sandwich/index.d.ts +0 -3
- package/configurators/sandwich/sandwich-skeleton/sc-sandwich-skeleton.component.d.ts +0 -8
- package/configurators/sandwich/sc-i-new-cart-item-sandwich.d.ts +0 -14
- package/configurators/sandwich/sc-sandwich.component.d.ts +0 -182
- package/configurators/sandwich_m2/index.d.ts +0 -4
- package/configurators/sandwich_m2/sandwich-m2-skeleton/sc-sandwich-m2-skeleton.component.d.ts +0 -8
- package/configurators/sandwich_m2/sc-i-new-cart-item-sandwich-m2.d.ts +0 -23
- package/configurators/sandwich_m2/sc-sandwich-m2-item-submit-state.d.ts +0 -13
- package/configurators/sandwich_m2/sc-sandwich-m2.component.d.ts +0 -267
- package/contacts/add-contact-dialog/sc-add-contact-dialog.component.d.ts +0 -49
- package/contacts/contacts-accordion/sc-contacts-accordion.component.d.ts +0 -23
- package/contacts/index.d.ts +0 -7
- package/contacts/manager-card/sc-manager-card.component.d.ts +0 -22
- package/contacts/manager-card-push/sc-manager-card-push.component.d.ts +0 -18
- package/contacts/new-contact-form/sc-new-contact-form.component.d.ts +0 -28
- package/contacts/sc-contacts.module.d.ts +0 -27
- package/contacts/tokens/index.d.ts +0 -2
- package/contacts/tokens/sc-manager-qr-handler.token.d.ts +0 -6
- package/contacts/tokens/sc-show-help-notification-in-phone-input.token.d.ts +0 -5
- package/contragents/add-contragent-bank-account-dialog/sc-add-contragent-bank-account-dialog.component.d.ts +0 -49
- package/contragents/add-contragent-dialog/sc-add-contragent-dialog.component.d.ts +0 -158
- package/contragents/contragents-accordion/contragents-accordion-item/sc-contragents-accordion-item.component.d.ts +0 -62
- package/contragents/contragents-accordion/sc-contragents-accordion.component.d.ts +0 -49
- package/contragents/index.d.ts +0 -7
- package/contragents/new-contragent-bank-account-form/sc-new-contragent-bank-account-form.component.d.ts +0 -64
- package/contragents/new-contragent-form/sc-new-contragent-form.component.d.ts +0 -119
- package/contragents/sc-contragents.module.d.ts +0 -26
- package/delivery-address/add-delivery-address-dialog/sc-add-delivery-address-dialog.component.d.ts +0 -141
- package/delivery-address/delivery-address-accordion/delivery-address-accordion-item/sc-delivery-address-accordion-item.component.d.ts +0 -50
- package/delivery-address/delivery-address-accordion/sc-delivery-address-accordion.component.d.ts +0 -49
- package/delivery-address/index.d.ts +0 -4
- package/delivery-address/sc-delivery-address.module.d.ts +0 -25
- package/dialogs/index.d.ts +0 -1
- package/dialogs/sc-resource-preview/sc-resource-preview.component.d.ts +0 -42
- package/directives/abstract-price-card/abstract-sc-price-card.directive.d.ts +0 -136
- package/directives/index.d.ts +0 -9
- package/directives/links/index.d.ts +0 -4
- package/directives/links/sc-email-link.directive.d.ts +0 -25
- package/directives/links/sc-link-location.d.ts +0 -5
- package/directives/links/sc-links.d.ts +0 -7
- package/directives/links/sc-tel-link.directive.d.ts +0 -40
- package/directives/next-input-focus/sc-next-input-focus.directive.d.ts +0 -27
- package/directives/next-input-focus/sc-next-input-focus.module.d.ts +0 -10
- package/directives/print/sc-print.directive.d.ts +0 -21
- package/directives/sc-date-value-transformer.directive.d.ts +0 -8
- package/directives/sc-focus-first-invalid-field.directive.d.ts +0 -30
- package/directives/select-on-focusin/sc-select-on-focusin.directive.d.ts +0 -14
- package/directives/terminal-link/sc-terminal-link.directive.d.ts +0 -34
- package/error-handler/consts/error-change-handler.providers.d.ts +0 -6
- package/error-handler/error-block-status/error-block-status.component.d.ts +0 -45
- package/error-handler/index.d.ts +0 -4
- package/error-handler/interfaces/i-block-error.d.ts +0 -17
- package/error-handler/sc-error-handler.component.d.ts +0 -40
- package/esm2022/accordion/index.mjs +0 -4
- package/esm2022/accordion/sc-accordion-content.directive.mjs +0 -17
- package/esm2022/accordion/sc-accordion.component.mjs +0 -92
- package/esm2022/accordion/sc-accordion.module.mjs +0 -26
- package/esm2022/auth/enums/auth-method.mjs +0 -15
- package/esm2022/auth/index.mjs +0 -9
- package/esm2022/auth/interfaces/index.mjs +0 -3
- package/esm2022/auth/interfaces/sc-bank-account-form-group.mjs +0 -2
- package/esm2022/auth/interfaces/sc-contact-form-group.mjs +0 -2
- package/esm2022/auth/sc-auth.module.mjs +0 -103
- package/esm2022/auth/sc-sign-in-form/sc-sign-in-form-by-email/sc-sign-in-form-by-email.component.mjs +0 -100
- package/esm2022/auth/sc-sign-in-form/sc-sign-in-form-by-phone/sc-sign-in-form-by-phone.component.mjs +0 -81
- package/esm2022/auth/sc-sign-in-form/sc-sign-in-form.component.mjs +0 -89
- package/esm2022/auth/sc-simple-sign-up-form/sc-simple-sign-up-form.component.mjs +0 -203
- package/esm2022/auth/sign-up-form/sc-sign-up-form.component.mjs +0 -334
- package/esm2022/banner/index.mjs +0 -3
- package/esm2022/banner/sc-banner.component.mjs +0 -131
- package/esm2022/banner/sc-banner.module.mjs +0 -29
- package/esm2022/brands-list/index.mjs +0 -3
- package/esm2022/brands-list/sc-brands-list.component.mjs +0 -24
- package/esm2022/brands-list/sc-brands-list.module.mjs +0 -22
- package/esm2022/cart/add-or-editing-cart-item-dialog/add-or-editing-cart-item-form/sc-add-or-editing-cart-item-form.component.mjs +0 -233
- package/esm2022/cart/add-or-editing-cart-item-dialog/index.mjs +0 -3
- package/esm2022/cart/add-or-editing-cart-item-dialog/sc-add-or-editing-cart-item-dialog.component.mjs +0 -76
- package/esm2022/cart/index.mjs +0 -3
- package/esm2022/cart/sc-cart-add-products-from-csv-dialog/sc-cart-add-products-from-csv-dialog.component.mjs +0 -110
- package/esm2022/catalog/catalog-filters/index.mjs +0 -4
- package/esm2022/catalog/catalog-filters/sc-catalog-filters.component.mjs +0 -213
- package/esm2022/catalog/catalog-filters/tokens/sc-catalog-products-filters.mjs +0 -10
- package/esm2022/catalog/catalog-filters/tokens/sc-catalog-show-products-recursively.mjs +0 -6
- package/esm2022/catalog/category-card/sc-category-card.component.mjs +0 -102
- package/esm2022/catalog/cost-with-discount/cost-with-discount.component.mjs +0 -39
- package/esm2022/catalog/download-price-list/sc-download-price-list.component.mjs +0 -56
- package/esm2022/catalog/hover-image-carousel/sc-hover-image-carousel.component.mjs +0 -76
- package/esm2022/catalog/index.mjs +0 -16
- package/esm2022/catalog/input-quantity/sc-input-quantity.component.mjs +0 -189
- package/esm2022/catalog/notify-when-in-stock-dialog/index.mjs +0 -3
- package/esm2022/catalog/notify-when-in-stock-dialog/sc-notify-when-in-stock-dialog.component.mjs +0 -173
- package/esm2022/catalog/notify-when-in-stock-dialog/sc-product-in-all-warehouses.pipe.mjs +0 -35
- package/esm2022/catalog/price-card/sc-price-card.component.mjs +0 -73
- package/esm2022/catalog/price-card-inline/sc-price-card-inline.component.mjs +0 -56
- package/esm2022/catalog/price-history/sc-price-history.component.mjs +0 -140
- package/esm2022/catalog/price-list-pagination/sc-price-list-pagination.component.mjs +0 -65
- package/esm2022/catalog/price-warehouse-stock/sc-price-warehouse-stock.component.mjs +0 -61
- package/esm2022/catalog/sc-catalog.module.mjs +0 -126
- package/esm2022/catalog/sc-favorite-button/sc-favorite-button.component.mjs +0 -42
- package/esm2022/catalog/seo-tags/sc-seo-tags.component.mjs +0 -25
- package/esm2022/configurators/index.mjs +0 -4
- package/esm2022/configurators/models/index.mjs +0 -4
- package/esm2022/configurators/models/sandwich/sc-i-configurator-search-product-sandwich.mjs +0 -2
- package/esm2022/configurators/models/sandwich/sc-i-sandwich-settings.mjs +0 -2
- package/esm2022/configurators/models/sandwich_m2/sc-i-sandwich-m2-settings.mjs +0 -2
- package/esm2022/configurators/sandwich/index.mjs +0 -4
- package/esm2022/configurators/sandwich/sandwich-skeleton/sc-sandwich-skeleton.component.mjs +0 -14
- package/esm2022/configurators/sandwich/sc-i-new-cart-item-sandwich.mjs +0 -2
- package/esm2022/configurators/sandwich/sc-sandwich.component.mjs +0 -382
- package/esm2022/configurators/sandwich_m2/index.mjs +0 -5
- package/esm2022/configurators/sandwich_m2/sandwich-m2-skeleton/sc-sandwich-m2-skeleton.component.mjs +0 -14
- package/esm2022/configurators/sandwich_m2/sc-i-new-cart-item-sandwich-m2.mjs +0 -2
- package/esm2022/configurators/sandwich_m2/sc-sandwich-m2-item-submit-state.mjs +0 -5
- package/esm2022/configurators/sandwich_m2/sc-sandwich-m2.component.mjs +0 -561
- package/esm2022/contacts/add-contact-dialog/sc-add-contact-dialog.component.mjs +0 -91
- package/esm2022/contacts/contacts-accordion/sc-contacts-accordion.component.mjs +0 -37
- package/esm2022/contacts/index.mjs +0 -8
- package/esm2022/contacts/manager-card/sc-manager-card.component.mjs +0 -58
- package/esm2022/contacts/manager-card-push/sc-manager-card-push.component.mjs +0 -28
- package/esm2022/contacts/new-contact-form/sc-new-contact-form.component.mjs +0 -37
- package/esm2022/contacts/sc-contacts.module.mjs +0 -89
- package/esm2022/contacts/tokens/index.mjs +0 -3
- package/esm2022/contacts/tokens/sc-manager-qr-handler.token.mjs +0 -25
- package/esm2022/contacts/tokens/sc-show-help-notification-in-phone-input.token.mjs +0 -9
- package/esm2022/contragents/add-contragent-bank-account-dialog/sc-add-contragent-bank-account-dialog.component.mjs +0 -81
- package/esm2022/contragents/add-contragent-dialog/sc-add-contragent-dialog.component.mjs +0 -266
- package/esm2022/contragents/contragents-accordion/contragents-accordion-item/sc-contragents-accordion-item.component.mjs +0 -74
- package/esm2022/contragents/contragents-accordion/sc-contragents-accordion.component.mjs +0 -68
- package/esm2022/contragents/index.mjs +0 -8
- package/esm2022/contragents/new-contragent-bank-account-form/sc-new-contragent-bank-account-form.component.mjs +0 -72
- package/esm2022/contragents/new-contragent-form/sc-new-contragent-form.component.mjs +0 -224
- package/esm2022/contragents/sc-contragents.module.mjs +0 -115
- package/esm2022/delivery-address/add-delivery-address-dialog/sc-add-delivery-address-dialog.component.mjs +0 -248
- package/esm2022/delivery-address/delivery-address-accordion/delivery-address-accordion-item/sc-delivery-address-accordion-item.component.mjs +0 -60
- package/esm2022/delivery-address/delivery-address-accordion/sc-delivery-address-accordion.component.mjs +0 -68
- package/esm2022/delivery-address/index.mjs +0 -5
- package/esm2022/delivery-address/sc-delivery-address.module.mjs +0 -96
- package/esm2022/dialogs/index.mjs +0 -2
- package/esm2022/dialogs/sc-resource-preview/sc-resource-preview.component.mjs +0 -68
- package/esm2022/directives/abstract-price-card/abstract-sc-price-card.directive.mjs +0 -170
- package/esm2022/directives/index.mjs +0 -10
- package/esm2022/directives/links/index.mjs +0 -5
- package/esm2022/directives/links/sc-email-link.directive.mjs +0 -49
- package/esm2022/directives/links/sc-link-location.mjs +0 -2
- package/esm2022/directives/links/sc-links.mjs +0 -8
- package/esm2022/directives/links/sc-tel-link.directive.mjs +0 -79
- package/esm2022/directives/next-input-focus/sc-next-input-focus.directive.mjs +0 -70
- package/esm2022/directives/next-input-focus/sc-next-input-focus.module.mjs +0 -19
- package/esm2022/directives/print/sc-print.directive.mjs +0 -36
- package/esm2022/directives/sc-date-value-transformer.directive.mjs +0 -30
- package/esm2022/directives/sc-focus-first-invalid-field.directive.mjs +0 -85
- package/esm2022/directives/select-on-focusin/sc-select-on-focusin.directive.mjs +0 -31
- package/esm2022/directives/terminal-link/sc-terminal-link.directive.mjs +0 -69
- package/esm2022/error-handler/consts/error-change-handler.providers.mjs +0 -10
- package/esm2022/error-handler/error-block-status/error-block-status.component.mjs +0 -88
- package/esm2022/error-handler/index.mjs +0 -5
- package/esm2022/error-handler/interfaces/i-block-error.mjs +0 -2
- package/esm2022/error-handler/sc-error-handler.component.mjs +0 -58
- package/esm2022/feedback/feedback-form/sc-feedback-form.component.mjs +0 -344
- package/esm2022/feedback/gratitude/sc-gratitude.component.mjs +0 -32
- package/esm2022/feedback/index.mjs +0 -4
- package/esm2022/feedback/interfaces/index.mjs +0 -2
- package/esm2022/feedback/interfaces/sc-feedback-form-config.mjs +0 -2
- package/esm2022/files/directives/index.mjs +0 -3
- package/esm2022/files/directives/tree-top.directive.mjs +0 -63
- package/esm2022/files/directives/tree.directive.mjs +0 -47
- package/esm2022/files/file-tree-item/file-tree-item.component.mjs +0 -18
- package/esm2022/files/files-and-documents/files-and-documents.component.mjs +0 -61
- package/esm2022/files/files-and-documents.module.mjs +0 -28
- package/esm2022/files/index.mjs +0 -6
- package/esm2022/files/interfaces/tree-node.mjs +0 -2
- package/esm2022/files/services/index.mjs +0 -3
- package/esm2022/files/services/tree-icon.service.mjs +0 -49
- package/esm2022/files/services/tree-loader.service.mjs +0 -62
- package/esm2022/form-fields/addresses-selection-field/sc-addresses-selection-field.component.mjs +0 -156
- package/esm2022/form-fields/form-fields.module.mjs +0 -66
- package/esm2022/form-fields/index.mjs +0 -4
- package/esm2022/form-fields/suggestion-field/sc-suggestion-field.component.mjs +0 -174
- package/esm2022/icons/index.mjs +0 -2
- package/esm2022/icons/sc-client-ui-icons-name.mjs +0 -99
- package/esm2022/loader/index.mjs +0 -2
- package/esm2022/loader/sc-i-loader.mjs +0 -2
- package/esm2022/masks/index.mjs +0 -8
- package/esm2022/masks/sc-account-number-mask.mjs +0 -7
- package/esm2022/masks/sc-bic-mask.mjs +0 -7
- package/esm2022/masks/sc-correspondent-account-mask.mjs +0 -7
- package/esm2022/masks/sc-inn-mask.mjs +0 -13
- package/esm2022/masks/sc-kpp-mask.mjs +0 -7
- package/esm2022/masks/sc-okpo-mask.mjs +0 -13
- package/esm2022/masks/sc-phone-verification-code-mask.mjs +0 -7
- package/esm2022/methods/index.mjs +0 -2
- package/esm2022/methods/sc-get-current-route.mjs +0 -14
- package/esm2022/models/i-sc-image.mjs +0 -2
- package/esm2022/models/index.mjs +0 -2
- package/esm2022/news/index.mjs +0 -4
- package/esm2022/news/news-card/sc-news-card.component.mjs +0 -34
- package/esm2022/news/news-card-skeleton/sc-news-card-skeleton.component.mjs +0 -31
- package/esm2022/news/sc-news.module.mjs +0 -26
- package/esm2022/noindex-wrapper/directives/index.mjs +0 -2
- package/esm2022/noindex-wrapper/directives/sc-noindex.directive.mjs +0 -58
- package/esm2022/noindex-wrapper/index.mjs +0 -3
- package/esm2022/noindex-wrapper/sc-noindex-wrapper.component.mjs +0 -18
- package/esm2022/order/directives/index.mjs +0 -3
- package/esm2022/order/directives/sc-order-accessor.directive.mjs +0 -28
- package/esm2022/order/directives/sc-order-options.mjs +0 -11
- package/esm2022/order/draft/sc-draft.component.mjs +0 -118
- package/esm2022/order/index.mjs +0 -10
- package/esm2022/order/models/sc-i-cart-items-by-direction.mjs +0 -22
- package/esm2022/order/order-item/sc-order-item.component.mjs +0 -108
- package/esm2022/order/order-items-list/sc-order-items-list.component.mjs +0 -209
- package/esm2022/order/order-items-list-by-directions/sc-order-items-list-by-directions.component.mjs +0 -75
- package/esm2022/order/order-items-list-by-stock/sc-order-items-list-by-stock.component.mjs +0 -75
- package/esm2022/order/sc-order.module.mjs +0 -52
- package/esm2022/order/sc-payment-status/sc-payment-status.component.mjs +0 -35
- package/esm2022/pages/frequently-asked-questions/sc-frequently-asked-questions.component.mjs +0 -49
- package/esm2022/pages/frequently-asked-questions/sc-page-size-options.mjs +0 -8
- package/esm2022/pages/frequently-asked-questions-group-selector/sc-frequently-asked-questions-group-selector.component.mjs +0 -59
- package/esm2022/pages/frequently-asked-questions-with-groups/sc-frequently-asked-questions-with-groups.component.mjs +0 -107
- package/esm2022/pages/index.mjs +0 -7
- package/esm2022/pages/personal-data-processing-policy/sc-personal-data-processing-policy.component.mjs +0 -46
- package/esm2022/pages/privacy-policy/sc-privacy-policy.component.mjs +0 -30
- package/esm2022/pages/public-offer/sc-public-offer.component.mjs +0 -50
- package/esm2022/pipes/index.mjs +0 -3
- package/esm2022/pipes/sc-format-date.mjs +0 -33
- package/esm2022/pipes/sc-phone-format.mjs +0 -44
- package/esm2022/profile/index.mjs +0 -3
- package/esm2022/profile/sc-profile-accordions-content/sc-profile-accordions-content.component.mjs +0 -174
- package/esm2022/profile/sc-profile.module.mjs +0 -73
- package/esm2022/providers/date-value-transformer/index.mjs +0 -4
- package/esm2022/providers/date-value-transformer/sc-date-value-transformer-types.mjs +0 -2
- package/esm2022/providers/date-value-transformer/sc-date-value-transformer-with-end-time.mjs +0 -26
- package/esm2022/providers/date-value-transformer/sc-date-value-transformer-with-start-time.mjs +0 -37
- package/esm2022/providers/index.mjs +0 -16
- package/esm2022/providers/sc-allow-select-terminated.mjs +0 -8
- package/esm2022/providers/sc-banner-duration.mjs +0 -8
- package/esm2022/providers/sc-country-ids.mjs +0 -8
- package/esm2022/providers/sc-date-formatter.mjs +0 -15
- package/esm2022/providers/sc-date-value-transformer.mjs +0 -12
- package/esm2022/providers/sc-debounce-time-default.mjs +0 -9
- package/esm2022/providers/sc-dialog-service.providers.mjs +0 -6
- package/esm2022/providers/sc-help-notification-close.mjs +0 -9
- package/esm2022/providers/sc-help-notification-limit.mjs +0 -8
- package/esm2022/providers/sc-hidden-print-elements.token.mjs +0 -10
- package/esm2022/providers/sc-max-files-in-form-input.mjs +0 -8
- package/esm2022/providers/sc-notify-when-in-stock-required-fields.mjs +0 -8
- package/esm2022/providers/sc-page-size-options.mjs +0 -8
- package/esm2022/providers/sc-user-providers.mjs +0 -38
- package/esm2022/providers/sc-verification-code-timeout.mjs +0 -8
- package/esm2022/public-api.mjs +0 -35
- package/esm2022/qrcode/index.mjs +0 -3
- package/esm2022/qrcode/qrcode-dialog/sc-qrcode-dialog.component.mjs +0 -58
- package/esm2022/qrcode/sc-qrcode.module.mjs +0 -25
- package/esm2022/samples/index.mjs +0 -5
- package/esm2022/samples/interfaces/index.mjs +0 -3
- package/esm2022/samples/interfaces/sc-i-preview-sample.mjs +0 -2
- package/esm2022/samples/interfaces/sc-preview-mosquito-config.mjs +0 -2
- package/esm2022/samples/preview-sample/sc-preview-sample.component.mjs +0 -42
- package/esm2022/samples/sc-preview-samples-mosquito/sc-preview-samples-mosquito.component.mjs +0 -63
- package/esm2022/samples/sc-sample.module.mjs +0 -66
- package/esm2022/services/index.mjs +0 -3
- package/esm2022/services/print.service.mjs +0 -49
- package/esm2022/services/sc-help-notification.service.mjs +0 -100
- package/esm2022/share-button/index.mjs +0 -3
- package/esm2022/share-button/sc-share-button.component.mjs +0 -35
- package/esm2022/share-button/sc-share-button.module.mjs +0 -22
- package/esm2022/snabcentr-client-ui.mjs +0 -5
- package/esm2022/user/index.mjs +0 -6
- package/esm2022/user/reset-user-password/sc-reset-user-password.component.mjs +0 -74
- package/esm2022/user/sc-user.module.mjs +0 -86
- package/esm2022/user/update-user-info-dialog/sc-update-user-info-dialog.component.mjs +0 -121
- package/esm2022/user/user-managers/sc-user-managers.component.mjs +0 -40
- package/esm2022/user/user-phone-approve-dialog/sc-user-phone-approve-dialog.component.mjs +0 -105
- package/esm2022/validators/index.mjs +0 -7
- package/esm2022/validators/sc-at-least-one-required-validator.mjs +0 -25
- package/esm2022/validators/sc-bic-validator.mjs +0 -10
- package/esm2022/validators/sc-correspondent-account-validator.mjs +0 -10
- package/esm2022/validators/sc-password-confirm-matching-validator.mjs +0 -17
- package/esm2022/validators/sc-phone-validator.mjs +0 -14
- package/esm2022/validators/step-validator.mjs +0 -18
- package/esm2022/verification/index.mjs +0 -3
- package/esm2022/verification/sc-verification.module.mjs +0 -86
- package/esm2022/verification/verification-phone-check-form/sc-verification-phone-check-form.component.mjs +0 -259
- package/feedback/feedback-form/sc-feedback-form.component.d.ts +0 -163
- package/feedback/gratitude/sc-gratitude.component.d.ts +0 -20
- package/feedback/index.d.ts +0 -3
- package/feedback/interfaces/index.d.ts +0 -1
- package/feedback/interfaces/sc-feedback-form-config.d.ts +0 -23
- package/files/directives/index.d.ts +0 -2
- package/files/directives/tree-top.directive.d.ts +0 -33
- package/files/directives/tree.directive.d.ts +0 -35
- package/files/file-tree-item/file-tree-item.component.d.ts +0 -9
- package/files/files-and-documents/files-and-documents.component.d.ts +0 -27
- package/files/files-and-documents.module.d.ts +0 -17
- package/files/index.d.ts +0 -5
- package/files/interfaces/tree-node.d.ts +0 -29
- package/files/services/index.d.ts +0 -2
- package/files/services/tree-icon.service.d.ts +0 -23
- package/files/services/tree-loader.service.d.ts +0 -43
- package/form-fields/addresses-selection-field/sc-addresses-selection-field.component.d.ts +0 -78
- package/form-fields/form-fields.module.d.ts +0 -18
- package/form-fields/index.d.ts +0 -3
- package/form-fields/suggestion-field/sc-suggestion-field.component.d.ts +0 -73
- package/icons/index.d.ts +0 -1
- package/icons/sc-client-ui-icons-name.d.ts +0 -4
- package/index.d.ts +0 -5
- package/loader/index.d.ts +0 -1
- package/loader/sc-i-loader.d.ts +0 -9
- package/masks/index.d.ts +0 -7
- package/masks/sc-account-number-mask.d.ts +0 -5
- package/masks/sc-bic-mask.d.ts +0 -5
- package/masks/sc-correspondent-account-mask.d.ts +0 -5
- package/masks/sc-inn-mask.d.ts +0 -9
- package/masks/sc-kpp-mask.d.ts +0 -5
- package/masks/sc-okpo-mask.d.ts +0 -9
- package/masks/sc-phone-verification-code-mask.d.ts +0 -5
- package/methods/index.d.ts +0 -1
- package/methods/sc-get-current-route.d.ts +0 -8
- package/models/i-sc-image.d.ts +0 -17
- package/models/index.d.ts +0 -1
- package/news/index.d.ts +0 -3
- package/news/news-card/sc-news-card.component.d.ts +0 -22
- package/news/news-card-skeleton/sc-news-card-skeleton.component.d.ts +0 -16
- package/news/sc-news.module.d.ts +0 -16
- package/noindex-wrapper/directives/index.d.ts +0 -1
- package/noindex-wrapper/directives/sc-noindex.directive.d.ts +0 -29
- package/noindex-wrapper/index.d.ts +0 -2
- package/noindex-wrapper/sc-noindex-wrapper.component.d.ts +0 -9
- package/order/directives/index.d.ts +0 -2
- package/order/directives/sc-order-accessor.directive.d.ts +0 -13
- package/order/directives/sc-order-options.d.ts +0 -14
- package/order/draft/sc-draft.component.d.ts +0 -63
- package/order/index.d.ts +0 -9
- package/order/models/sc-i-cart-items-by-direction.d.ts +0 -25
- package/order/order-item/sc-order-item.component.d.ts +0 -39
- package/order/order-items-list/sc-order-items-list.component.d.ts +0 -109
- package/order/order-items-list-by-directions/sc-order-items-list-by-directions.component.d.ts +0 -58
- package/order/order-items-list-by-stock/sc-order-items-list-by-stock.component.d.ts +0 -55
- package/order/sc-order.module.d.ts +0 -18
- package/order/sc-payment-status/sc-payment-status.component.d.ts +0 -25
- package/pages/frequently-asked-questions/sc-frequently-asked-questions.component.d.ts +0 -22
- package/pages/frequently-asked-questions/sc-page-size-options.d.ts +0 -5
- package/pages/frequently-asked-questions-group-selector/sc-frequently-asked-questions-group-selector.component.d.ts +0 -28
- package/pages/frequently-asked-questions-with-groups/sc-frequently-asked-questions-with-groups.component.d.ts +0 -79
- package/pages/index.d.ts +0 -6
- package/pages/personal-data-processing-policy/sc-personal-data-processing-policy.component.d.ts +0 -17
- package/pages/privacy-policy/sc-privacy-policy.component.d.ts +0 -17
- package/pages/public-offer/sc-public-offer.component.d.ts +0 -22
- package/pipes/index.d.ts +0 -2
- package/pipes/sc-format-date.d.ts +0 -20
- package/pipes/sc-phone-format.d.ts +0 -21
- package/profile/index.d.ts +0 -2
- package/profile/sc-profile-accordions-content/sc-profile-accordions-content.component.d.ts +0 -126
- package/profile/sc-profile.module.d.ts +0 -23
- package/providers/date-value-transformer/index.d.ts +0 -3
- package/providers/date-value-transformer/sc-date-value-transformer-types.d.ts +0 -9
- package/providers/date-value-transformer/sc-date-value-transformer-with-end-time.d.ts +0 -16
- package/providers/date-value-transformer/sc-date-value-transformer-with-start-time.d.ts +0 -22
- package/providers/index.d.ts +0 -15
- package/providers/sc-allow-select-terminated.d.ts +0 -5
- package/providers/sc-banner-duration.d.ts +0 -5
- package/providers/sc-country-ids.d.ts +0 -5
- package/providers/sc-date-formatter.d.ts +0 -6
- package/providers/sc-date-value-transformer.d.ts +0 -5
- package/providers/sc-debounce-time-default.d.ts +0 -5
- package/providers/sc-dialog-service.providers.d.ts +0 -45
- package/providers/sc-help-notification-close.d.ts +0 -6
- package/providers/sc-help-notification-limit.d.ts +0 -5
- package/providers/sc-hidden-print-elements.token.d.ts +0 -6
- package/providers/sc-max-files-in-form-input.d.ts +0 -5
- package/providers/sc-notify-when-in-stock-required-fields.d.ts +0 -5
- package/providers/sc-page-size-options.d.ts +0 -5
- package/providers/sc-user-providers.d.ts +0 -21
- package/providers/sc-verification-code-timeout.d.ts +0 -5
- package/public-api.d.ts +0 -34
- package/qrcode/index.d.ts +0 -2
- package/qrcode/qrcode-dialog/sc-qrcode-dialog.component.d.ts +0 -37
- package/qrcode/sc-qrcode.module.d.ts +0 -14
- package/samples/index.d.ts +0 -4
- package/samples/interfaces/index.d.ts +0 -2
- package/samples/interfaces/sc-i-preview-sample.d.ts +0 -56
- package/samples/interfaces/sc-preview-mosquito-config.d.ts +0 -62
- package/samples/preview-sample/sc-preview-sample.component.d.ts +0 -30
- package/samples/sc-preview-samples-mosquito/sc-preview-samples-mosquito.component.d.ts +0 -50
- package/samples/sc-sample.module.d.ts +0 -19
- package/services/index.d.ts +0 -2
- package/services/print.service.d.ts +0 -31
- package/services/sc-help-notification.service.d.ts +0 -70
- package/share-button/index.d.ts +0 -2
- package/share-button/sc-share-button.component.d.ts +0 -22
- package/share-button/sc-share-button.module.d.ts +0 -12
- package/user/index.d.ts +0 -5
- package/user/reset-user-password/sc-reset-user-password.component.d.ts +0 -46
- package/user/sc-user.module.d.ts +0 -24
- package/user/update-user-info-dialog/sc-update-user-info-dialog.component.d.ts +0 -63
- package/user/user-managers/sc-user-managers.component.d.ts +0 -23
- package/user/user-phone-approve-dialog/sc-user-phone-approve-dialog.component.d.ts +0 -53
- package/validators/index.d.ts +0 -6
- package/validators/sc-at-least-one-required-validator.d.ts +0 -10
- package/validators/sc-bic-validator.d.ts +0 -8
- package/validators/sc-correspondent-account-validator.d.ts +0 -8
- package/validators/sc-password-confirm-matching-validator.d.ts +0 -8
- package/validators/sc-phone-validator.d.ts +0 -5
- package/validators/step-validator.d.ts +0 -8
- package/verification/index.d.ts +0 -2
- package/verification/sc-verification.module.d.ts +0 -21
- package/verification/verification-phone-check-form/sc-verification-phone-check-form.component.d.ts +0 -145
|
@@ -1,213 +0,0 @@
|
|
|
1
|
-
/* eslint-disable class-methods-use-this */
|
|
2
|
-
import { ChangeDetectionStrategy, Component, inject, input } from '@angular/core';
|
|
3
|
-
import { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';
|
|
4
|
-
import { FormControl, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
5
|
-
import { SC_CATEGORY_INFO, ScCatalogFilterService, ScIdOrSlugPipe, } from '@snabcentr/client-core';
|
|
6
|
-
import { tuiIsPresent } from '@taiga-ui/cdk';
|
|
7
|
-
import { TuiTextfield } from '@taiga-ui/core';
|
|
8
|
-
import { TuiAccordion } from '@taiga-ui/experimental';
|
|
9
|
-
import { TuiCheckbox, TuiInputRange, TuiRadio } from '@taiga-ui/kit';
|
|
10
|
-
import { isNil } from 'lodash-es';
|
|
11
|
-
import { catchError, EMPTY, filter, map, share, switchMap, tap } from 'rxjs';
|
|
12
|
-
import { SC_CATALOG_PRODUCTS_FILTERS } from './tokens/sc-catalog-products-filters';
|
|
13
|
-
import { SC_CATALOG_SHOW_PRODUCTS_RECURSIVELY } from './tokens/sc-catalog-show-products-recursively';
|
|
14
|
-
import * as i0 from "@angular/core";
|
|
15
|
-
import * as i1 from "@angular/forms";
|
|
16
|
-
import * as i2 from "@taiga-ui/kit";
|
|
17
|
-
import * as i3 from "@taiga-ui/experimental";
|
|
18
|
-
import * as i4 from "@taiga-ui/experimental/components/expand";
|
|
19
|
-
/**
|
|
20
|
-
* Компонент вывода фильтров каталога.
|
|
21
|
-
*/
|
|
22
|
-
export class ScCatalogFiltersComponent {
|
|
23
|
-
/**
|
|
24
|
-
* Инициализирует экземпляр класса {@link ScCatalogFiltersComponent}.
|
|
25
|
-
*/
|
|
26
|
-
constructor() {
|
|
27
|
-
/**
|
|
28
|
-
* Состояние открытия accordion.
|
|
29
|
-
*/
|
|
30
|
-
this.isOpenAccordion = input(false);
|
|
31
|
-
/**
|
|
32
|
-
* Сервис для работы с фильтрами каталога.
|
|
33
|
-
*/
|
|
34
|
-
this.catalogFilterService = inject(ScCatalogFilterService);
|
|
35
|
-
/**
|
|
36
|
-
* Пайп, возвращающий идентификатор или символьное обозначение (slug) исходя из настроек окружения.
|
|
37
|
-
*/
|
|
38
|
-
this.idOrSlugPipe = inject(ScIdOrSlugPipe);
|
|
39
|
-
/**
|
|
40
|
-
* Subject для хранения фильтров продуктов.
|
|
41
|
-
*/
|
|
42
|
-
this.catalogProductsFilters$ = inject(SC_CATALOG_PRODUCTS_FILTERS);
|
|
43
|
-
/**
|
|
44
|
-
* Признак необходимости отображать фильтры для вложенных категорий.
|
|
45
|
-
*/
|
|
46
|
-
this.isRecursively = inject(SC_CATALOG_SHOW_PRODUCTS_RECURSIVELY);
|
|
47
|
-
/**
|
|
48
|
-
* {@link Observable} фильтров категории.
|
|
49
|
-
*/
|
|
50
|
-
this.filters = toSignal(inject(SC_CATEGORY_INFO).pipe(catchError(() => EMPTY), filter(tuiIsPresent), switchMap((category) => this.catalogFilterService.getFilters$(this.idOrSlugPipe.transform(category), this.isRecursively)), map((filters) => filters.filter((item) => item.type !== 'range' || item.min !== item.max)), tap((filters) => {
|
|
51
|
-
this.updateFormControls(filters);
|
|
52
|
-
}), share()));
|
|
53
|
-
/**
|
|
54
|
-
* FormGroup для фильтров.
|
|
55
|
-
*/
|
|
56
|
-
this.form = new FormGroup({});
|
|
57
|
-
this.form.valueChanges.pipe(takeUntilDestroyed()).subscribe((filters) => {
|
|
58
|
-
this.catalogProductsFilters$.next(this.buildPropertyFilters(filters));
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Обновляет состав контролов формы на основе переданных фильтров.
|
|
63
|
-
*
|
|
64
|
-
* @param filters Массив фильтров для создания контролов.
|
|
65
|
-
*/
|
|
66
|
-
updateFormControls(filters) {
|
|
67
|
-
Object.keys(this.form.controls).forEach((key) => {
|
|
68
|
-
this.form.removeControl(key, { emitEvent: false });
|
|
69
|
-
});
|
|
70
|
-
filters.forEach((item) => {
|
|
71
|
-
switch (item.type) {
|
|
72
|
-
case 'checkbox':
|
|
73
|
-
this.form.addControl(item.id, this.createCheckboxFormControl(item), { emitEvent: false });
|
|
74
|
-
break;
|
|
75
|
-
case 'range':
|
|
76
|
-
this.form.addControl(item.id, this.createRangeFormControl(item), { emitEvent: false });
|
|
77
|
-
break;
|
|
78
|
-
case 'toggle':
|
|
79
|
-
this.form.addControl(item.id, this.createToggleFormControl(item), { emitEvent: false });
|
|
80
|
-
break;
|
|
81
|
-
default:
|
|
82
|
-
break;
|
|
83
|
-
}
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* Преобразует значения формы в объект фильтров свойств.
|
|
88
|
-
*
|
|
89
|
-
* @param value Значения формы.
|
|
90
|
-
* @returns Объект фильтров свойств.
|
|
91
|
-
*/
|
|
92
|
-
buildPropertyFilters(value) {
|
|
93
|
-
const result = {};
|
|
94
|
-
this.filters()?.forEach((filterItem) => {
|
|
95
|
-
const controlValue = value[filterItem.id];
|
|
96
|
-
if (isNil(controlValue)) {
|
|
97
|
-
return;
|
|
98
|
-
}
|
|
99
|
-
switch (filterItem.type) {
|
|
100
|
-
case 'checkbox':
|
|
101
|
-
this.processCheckboxFilter(result, filterItem.id, controlValue);
|
|
102
|
-
break;
|
|
103
|
-
case 'range':
|
|
104
|
-
this.processRangeFilter(result, filterItem.id, controlValue);
|
|
105
|
-
break;
|
|
106
|
-
case 'toggle':
|
|
107
|
-
this.processToggleFilter(result, filterItem.id, controlValue);
|
|
108
|
-
break;
|
|
109
|
-
default:
|
|
110
|
-
break;
|
|
111
|
-
}
|
|
112
|
-
});
|
|
113
|
-
return result;
|
|
114
|
-
}
|
|
115
|
-
/**
|
|
116
|
-
* Создает контрол формы для фильтра типа checkbox.
|
|
117
|
-
*
|
|
118
|
-
* Если `isMultiple === false` — возвращает {@link FormControl} строкового идентификатора (логика radio),
|
|
119
|
-
* иначе — {@link FormGroup} независимых булевых контролов по идентификаторам значений.
|
|
120
|
-
*
|
|
121
|
-
* @param checkboxFilter Фильтр типа checkbox.
|
|
122
|
-
*/
|
|
123
|
-
createCheckboxFormControl(checkboxFilter) {
|
|
124
|
-
if (!checkboxFilter.isMultiple) {
|
|
125
|
-
return new FormControl(null);
|
|
126
|
-
}
|
|
127
|
-
const controls = {};
|
|
128
|
-
checkboxFilter.values.forEach((value) => {
|
|
129
|
-
controls[value.id] = new FormControl(false, { nonNullable: true });
|
|
130
|
-
});
|
|
131
|
-
return new FormGroup(controls);
|
|
132
|
-
}
|
|
133
|
-
/**
|
|
134
|
-
* Создает FormControl для range.
|
|
135
|
-
*
|
|
136
|
-
* @param rangeFilter Фильтр типа range.
|
|
137
|
-
*/
|
|
138
|
-
createRangeFormControl(rangeFilter) {
|
|
139
|
-
// TODO: Добавить updateOn: 'blur' после исправления бага в taiga-ui.
|
|
140
|
-
return new FormControl([Number(rangeFilter.selectedMin ?? rangeFilter.min), Number(rangeFilter.selectedMax ?? rangeFilter.max)], { nonNullable: true });
|
|
141
|
-
}
|
|
142
|
-
/**
|
|
143
|
-
* Создает FormControl для toggle.
|
|
144
|
-
*
|
|
145
|
-
* @param toggleFilter Фильтр типа toggle.
|
|
146
|
-
*/
|
|
147
|
-
createToggleFormControl(toggleFilter) {
|
|
148
|
-
return new FormControl(toggleFilter.selectedValue ?? false, { nonNullable: true });
|
|
149
|
-
}
|
|
150
|
-
/**
|
|
151
|
-
* Обрабатывает checkbox фильтр.
|
|
152
|
-
*
|
|
153
|
-
* @param result Объект результата для заполнения.
|
|
154
|
-
* @param filterId Идентификатор фильтра.
|
|
155
|
-
* @param controlValue Значение контрола формы.
|
|
156
|
-
*/
|
|
157
|
-
processCheckboxFilter(result, filterId, controlValue) {
|
|
158
|
-
// Для isMultiple === false: FormControl<string | null> -> string[] из одного выбранного ID.
|
|
159
|
-
if (typeof controlValue === 'string') {
|
|
160
|
-
if (controlValue) {
|
|
161
|
-
// eslint-disable-next-line security/detect-object-injection, no-param-reassign
|
|
162
|
-
result[filterId] = [controlValue];
|
|
163
|
-
}
|
|
164
|
-
return;
|
|
165
|
-
}
|
|
166
|
-
// Для checkbox: FormGroup с FormControl<boolean> -> string[] (массив ID выбранных значений).
|
|
167
|
-
const selectedIds = Object.entries(controlValue)
|
|
168
|
-
.filter(([, isSelected]) => isSelected)
|
|
169
|
-
.map(([id]) => id);
|
|
170
|
-
if (selectedIds.length > 0) {
|
|
171
|
-
// eslint-disable-next-line security/detect-object-injection, no-param-reassign
|
|
172
|
-
result[filterId] = selectedIds;
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
/**
|
|
176
|
-
* Обрабатывает range фильтр.
|
|
177
|
-
*
|
|
178
|
-
* @param result Объект результата для заполнения.
|
|
179
|
-
* @param filterId Идентификатор фильтра.
|
|
180
|
-
* @param controlValue Значение контрола формы.
|
|
181
|
-
* @param controlValue.0 Начальное значение диапазона.
|
|
182
|
-
* @param controlValue.1 Конечное значение диапазона.
|
|
183
|
-
*/
|
|
184
|
-
processRangeFilter(result, filterId, [from, to]) {
|
|
185
|
-
// Для range: FormControl<[number, number]> -> { from?: string; to?: string; }
|
|
186
|
-
// eslint-disable-next-line security/detect-object-injection, no-param-reassign
|
|
187
|
-
result[filterId] = {
|
|
188
|
-
from: String(from),
|
|
189
|
-
to: String(to),
|
|
190
|
-
};
|
|
191
|
-
}
|
|
192
|
-
/**
|
|
193
|
-
* Обрабатывает toggle фильтр.
|
|
194
|
-
*
|
|
195
|
-
* @param result Объект результата для заполнения.
|
|
196
|
-
* @param filterId Идентификатор фильтра.
|
|
197
|
-
* @param controlValue Значение контрола формы.
|
|
198
|
-
*/
|
|
199
|
-
processToggleFilter(result, filterId, controlValue) {
|
|
200
|
-
// Для toggle: FormControl<boolean> -> boolean
|
|
201
|
-
if (controlValue) {
|
|
202
|
-
// eslint-disable-next-line security/detect-object-injection, no-param-reassign
|
|
203
|
-
result[filterId] = controlValue;
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScCatalogFiltersComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
207
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ScCatalogFiltersComponent, isStandalone: true, selector: "sc-catalog-filters", inputs: { isOpenAccordion: { classPropertyName: "isOpenAccordion", publicName: "isOpenAccordion", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (filters()?.length) {\n <div class=\"bg-tui-base-01 shadow-sc flex flex-col items-center gap-3 rounded-xl\">\n <tui-accordion class=\"accordion\">\n <button\n [tuiAccordion]=\"isOpenAccordion()\"\n appearance=\"primary\"\n >\n \u0424\u0438\u043B\u044C\u0442\u0440\u044B\n </button>\n <tui-expand>\n <form\n [formGroup]=\"form\"\n class=\"flex flex-col gap-4 pb-1\"\n >\n @for (filter of filters(); track filter.id) {\n <div class=\"flex flex-col gap-2\">\n <label class=\"text-body-s font-medium\">{{ filter.label }}</label>\n\n @if (filter.type === 'checkbox') {\n @if (filter.isMultiple === false) {\n <div class=\"flex flex-col gap-2\">\n @for (value of filter.values; track value.id) {\n @let formControl = form.get(filter.id);\n <label class=\"flex items-center gap-2\">\n <input\n [formControlName]=\"filter.id\"\n [value]=\"value.id\"\n tuiRadio\n (click)=\"formControl?.setValue(formControl?.value === value.id ? null : value.id)\"\n type=\"radio\"\n />\n <span class=\"text-body-s\">{{ value.label }}</span>\n </label>\n }\n </div>\n } @else {\n <div\n [formGroupName]=\"filter.id\"\n class=\"flex flex-col gap-2\"\n >\n @for (value of filter.values; track value.id) {\n <label class=\"flex items-center gap-2\">\n <input\n [formControlName]=\"value.id\"\n tuiCheckbox\n type=\"checkbox\"\n />\n <span class=\"text-body-s\">{{ value.label }}</span>\n </label>\n }\n </div>\n }\n }\n\n @if (filter.type === 'range') {\n <tui-input-range\n [formControlName]=\"filter.id\"\n [min]=\"+filter.min\"\n [max]=\"+filter.max\"\n />\n }\n\n @if (filter.type === 'toggle') {\n <label class=\"flex items-center gap-2\">\n <input\n [formControlName]=\"filter.id\"\n tuiCheckbox\n type=\"checkbox\"\n />\n <span class=\"text-body-s\">\u0414\u0430</span>\n </label>\n }\n </div>\n }\n </form>\n </tui-expand>\n </tui-accordion>\n </div>\n}\n", styles: [".accordion [tuiAccordion]{border:none;mask:none}.accordion tui-expand{box-shadow:none}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: TuiCheckbox, selector: "input[type=\"checkbox\"][tuiCheckbox]", inputs: ["size"] }, { kind: "component", type: i2.TuiRadioComponent, selector: "input[type=\"radio\"][tuiRadio]", inputs: ["size"] }, { kind: "component", type: i2.TuiInputRangeComponent, selector: "tui-input-range", inputs: ["min", "max", "step", "segments", "keySteps", "prefix", "postfix", "quantum", "content"] }, { kind: "component", type: i3.TuiAccordionComponent, selector: "tui-accordion", inputs: ["closeOthers", "size"] }, { kind: "directive", type: i3.TuiAccordionDirective, selector: "button[tuiAccordion]", inputs: ["tuiAccordion"], outputs: ["tuiAccordionChange"] }, { kind: "component", type: i4.TuiExpand, selector: "tui-expand", inputs: ["expanded"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
208
|
-
}
|
|
209
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScCatalogFiltersComponent, decorators: [{
|
|
210
|
-
type: Component,
|
|
211
|
-
args: [{ standalone: true, selector: 'sc-catalog-filters', changeDetection: ChangeDetectionStrategy.OnPush, imports: [FormsModule, TuiTextfield, TuiCheckbox, TuiRadio, TuiInputRange, TuiAccordion, ReactiveFormsModule], template: "@if (filters()?.length) {\n <div class=\"bg-tui-base-01 shadow-sc flex flex-col items-center gap-3 rounded-xl\">\n <tui-accordion class=\"accordion\">\n <button\n [tuiAccordion]=\"isOpenAccordion()\"\n appearance=\"primary\"\n >\n \u0424\u0438\u043B\u044C\u0442\u0440\u044B\n </button>\n <tui-expand>\n <form\n [formGroup]=\"form\"\n class=\"flex flex-col gap-4 pb-1\"\n >\n @for (filter of filters(); track filter.id) {\n <div class=\"flex flex-col gap-2\">\n <label class=\"text-body-s font-medium\">{{ filter.label }}</label>\n\n @if (filter.type === 'checkbox') {\n @if (filter.isMultiple === false) {\n <div class=\"flex flex-col gap-2\">\n @for (value of filter.values; track value.id) {\n @let formControl = form.get(filter.id);\n <label class=\"flex items-center gap-2\">\n <input\n [formControlName]=\"filter.id\"\n [value]=\"value.id\"\n tuiRadio\n (click)=\"formControl?.setValue(formControl?.value === value.id ? null : value.id)\"\n type=\"radio\"\n />\n <span class=\"text-body-s\">{{ value.label }}</span>\n </label>\n }\n </div>\n } @else {\n <div\n [formGroupName]=\"filter.id\"\n class=\"flex flex-col gap-2\"\n >\n @for (value of filter.values; track value.id) {\n <label class=\"flex items-center gap-2\">\n <input\n [formControlName]=\"value.id\"\n tuiCheckbox\n type=\"checkbox\"\n />\n <span class=\"text-body-s\">{{ value.label }}</span>\n </label>\n }\n </div>\n }\n }\n\n @if (filter.type === 'range') {\n <tui-input-range\n [formControlName]=\"filter.id\"\n [min]=\"+filter.min\"\n [max]=\"+filter.max\"\n />\n }\n\n @if (filter.type === 'toggle') {\n <label class=\"flex items-center gap-2\">\n <input\n [formControlName]=\"filter.id\"\n tuiCheckbox\n type=\"checkbox\"\n />\n <span class=\"text-body-s\">\u0414\u0430</span>\n </label>\n }\n </div>\n }\n </form>\n </tui-expand>\n </tui-accordion>\n </div>\n}\n", styles: [".accordion [tuiAccordion]{border:none;mask:none}.accordion tui-expand{box-shadow:none}\n"] }]
|
|
212
|
-
}], ctorParameters: () => [] });
|
|
213
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY2F0YWxvZy1maWx0ZXJzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9jYXRhbG9nL2NhdGFsb2ctZmlsdGVycy9zYy1jYXRhbG9nLWZpbHRlcnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2NhdGFsb2cvY2F0YWxvZy1maWx0ZXJzL3NjLWNhdGFsb2ctZmlsdGVycy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFFM0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxRixPQUFPLEVBQ0gsZ0JBQWdCLEVBRWhCLHNCQUFzQixFQUV0QixjQUFjLEdBSWpCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFN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eUJBQXlCO21HQUF6Qix5QkFBeUIsZ1BDcEN0Qywra0lBK0VBLGlKRDdDYyxXQUFXLGdpQ0FBZ0IsV0FBVyw2dUJBQXlDLG1CQUFtQjs7NEZBRW5HLHlCQUF5QjtrQkFSckMsU0FBUztpQ0FDTSxJQUFJLFlBQ04sb0JBQW9CLG1CQUdiLHVCQUF1QixDQUFDLE1BQU0sV0FDdEMsQ0FBQyxXQUFXLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXMgKi9cblxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgaW5qZWN0LCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkLCB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgICBTQ19DQVRFR09SWV9JTkZPLFxuICAgIFNjQ2F0YWxvZ0ZpbHRlcixcbiAgICBTY0NhdGFsb2dGaWx0ZXJTZXJ2aWNlLFxuICAgIFNjSUNoZWNrYm94RmlsdGVyLFxuICAgIFNjSWRPclNsdWdQaXBlLFxuICAgIFNjUHJvcGVydHlGaWx0ZXJzLFxuICAgIFNjUmFuZ2VGaWx0ZXIsXG4gICAgU2NUb2dnbGVGaWx0ZXIsXG59IGZyb20gJ0BzbmFiY2VudHIvY2xpZW50LWNvcmUnO1xuaW1wb3J0IHsgdHVpSXNQcmVzZW50IH0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQgeyBUdWlUZXh0ZmllbGQgfSBmcm9tICdAdGFpZ2EtdWkvY29yZSc7XG5pbXBvcnQgeyBUdWlBY2NvcmRpb24gfSBmcm9tICdAdGFpZ2EtdWkvZXhwZXJpbWVudGFsJztcbmltcG9ydCB7IFR1aUNoZWNrYm94LCBUdWlJbnB1dFJhbmdlLCBUdWlSYWRpbyB9IGZyb20gJ0B0YWlnYS11aS9raXQnO1xuaW1wb3J0IHsgaXNOaWwgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgRU1QVFksIGZpbHRlciwgbWFwLCBzaGFyZSwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU0NfQ0FUQUxPR19QUk9EVUNUU19GSUxURVJTIH0gZnJvbSAnLi90b2tlbnMvc2MtY2F0YWxvZy1wcm9kdWN0cy1maWx0ZXJzJztcbmltcG9ydCB7IFNDX0NBVEFMT0dfU0hPV19QUk9EVUNUU19SRUNVUlNJVkVMWSB9IGZyb20gJy4vdG9rZW5zL3NjLWNhdGFsb2ctc2hvdy1wcm9kdWN0cy1yZWN1cnNpdmVseSc7XG5cbi8qKlxuICog0JrQvtC80L/QvtC90LXQvdGCINCy0YvQstC+0LTQsCDRhNC40LvRjNGC0YDQvtCyINC60LDRgtCw0LvQvtCz0LAuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdzYy1jYXRhbG9nLWZpbHRlcnMnLFxuICAgIHN0eWxlVXJsOiAnLi9zYy1jYXRhbG9nLWZpbHRlcnMuY29tcG9uZW50LnNjc3MnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zYy1jYXRhbG9nLWZpbHRlcnMuY29tcG9uZW50Lmh0bWwnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGltcG9ydHM6IFtGb3Jtc01vZHVsZSwgVHVpVGV4dGZpZWxkLCBUdWlDaGVja2JveCwgVHVpUmFkaW8sIFR1aUlucHV0UmFuZ2UsIFR1aUFjY29yZGlvbiwgUmVhY3RpdmVGb3Jtc01vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIFNjQ2F0YWxvZ0ZpbHRlcnNDb21wb25lbnQge1xuICAgIC8qKlxuICAgICAqINCh0L7RgdGC0L7Rj9C90LjQtSDQvtGC0LrRgNGL0YLQuNGPIGFjY29yZGlvbi5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgaXNPcGVuQWNjb3JkaW9uID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gICAgLyoqXG4gICAgICog0KHQtdGA0LLQuNGBINC00LvRjyDRgNCw0LHQvtGC0Ysg0YEg0YTQuNC70YzRgtGA0LDQvNC4INC60LDRgtCw0LvQvtCz0LAuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBjYXRhbG9nRmlsdGVyU2VydmljZTogU2NDYXRhbG9nRmlsdGVyU2VydmljZSA9IGluamVjdChTY0NhdGFsb2dGaWx0ZXJTZXJ2aWNlKTtcblxuICAgIC8qKlxuICAgICAqINCf0LDQudC/LCDQstC+0LfQstGA0LDRidCw0Y7RidC40Lkg0LjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LjQu9C4INGB0LjQvNCy0L7Qu9GM0L3QvtC1INC+0LHQvtC30L3QsNGH0LXQvdC40LUgKHNsdWcpINC40YHRhdC+0LTRjyDQuNC3INC90LDRgdGC0YDQvtC10Log0L7QutGA0YPQttC10L3QuNGPLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaWRPclNsdWdQaXBlOiBTY0lkT3JTbHVnUGlwZSA9IGluamVjdChTY0lkT3JTbHVnUGlwZSk7XG5cbiAgICAvKipcbiAgICAgKiBTdWJqZWN0INC00LvRjyDRhdGA0LDQvdC10L3QuNGPINGE0LjQu9GM0YLRgNC+0LIg0L/RgNC+0LTRg9C60YLQvtCyLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY2F0YWxvZ1Byb2R1Y3RzRmlsdGVycyQgPSBpbmplY3QoU0NfQ0FUQUxPR19QUk9EVUNUU19GSUxURVJTKTtcblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6INC90LXQvtCx0YXQvtC00LjQvNC+0YHRgtC4INC+0YLQvtCx0YDQsNC20LDRgtGMINGE0LjQu9GM0YLRgNGLINC00LvRjyDQstC70L7QttC10L3QvdGL0YUg0LrQsNGC0LXQs9C+0YDQuNC5LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaXNSZWN1cnNpdmVseSA9IGluamVjdChTQ19DQVRBTE9HX1NIT1dfUFJPRFVDVFNfUkVDVVJTSVZFTFkpO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INGE0LjQu9GM0YLRgNC+0LIg0LrQsNGC0LXQs9C+0YDQuNC4LlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBmaWx0ZXJzID0gdG9TaWduYWwoXG4gICAgICAgIGluamVjdChTQ19DQVRFR09SWV9JTkZPKS5waXBlKFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiBFTVBUWSksXG4gICAgICAgICAgICBmaWx0ZXIodHVpSXNQcmVzZW50KSxcbiAgICAgICAgICAgIHN3aXRjaE1hcCgoY2F0ZWdvcnkpID0+IHRoaXMuY2F0YWxvZ0ZpbHRlclNlcnZpY2UuZ2V0RmlsdGVycyQodGhpcy5pZE9yU2x1Z1BpcGUudHJhbnNmb3JtKGNhdGVnb3J5KSwgdGhpcy5pc1JlY3Vyc2l2ZWx5KSksXG4gICAgICAgICAgICBtYXAoKGZpbHRlcnMpID0+IGZpbHRlcnMuZmlsdGVyKChpdGVtKSA9PiBpdGVtLnR5cGUgIT09ICdyYW5nZScgfHwgaXRlbS5taW4gIT09IGl0ZW0ubWF4KSksXG4gICAgICAgICAgICB0YXAoKGZpbHRlcnMpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUZvcm1Db250cm9scyhmaWx0ZXJzKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgc2hhcmUoKVxuICAgICAgICApXG4gICAgKTtcblxuICAgIC8qKlxuICAgICAqIEZvcm1Hcm91cCDQtNC70Y8g0YTQuNC70YzRgtGA0L7Qsi5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgZm9ybSA9IG5ldyBGb3JtR3JvdXA8XG4gICAgICAgIFJlY29yZDxzdHJpbmcsIFJldHVyblR5cGU8dHlwZW9mIHRoaXMuY3JlYXRlQ2hlY2tib3hGb3JtQ29udHJvbD4gfCBSZXR1cm5UeXBlPHR5cGVvZiB0aGlzLmNyZWF0ZVJhbmdlRm9ybUNvbnRyb2w+IHwgUmV0dXJuVHlwZTx0eXBlb2YgdGhpcy5jcmVhdGVUb2dnbGVGb3JtQ29udHJvbD4+XG4gICAgPih7fSk7XG5cbiAgICAvKipcbiAgICAgKiDQmNC90LjRhtC40LDQu9C40LfQuNGA0YPQtdGCINGN0LrQt9C10LzQv9C70Y/RgCDQutC70LDRgdGB0LAge0BsaW5rIFNjQ2F0YWxvZ0ZpbHRlcnNDb21wb25lbnR9LlxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5mb3JtLnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKS5zdWJzY3JpYmUoKGZpbHRlcnMpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY2F0YWxvZ1Byb2R1Y3RzRmlsdGVycyQubmV4dCh0aGlzLmJ1aWxkUHJvcGVydHlGaWx0ZXJzKGZpbHRlcnMpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0J7QsdC90L7QstC70Y/QtdGCINGB0L7RgdGC0LDQsiDQutC+0L3RgtGA0L7Qu9C+0LIg0YTQvtGA0LzRiyDQvdCwINC+0YHQvdC+0LLQtSDQv9C10YDQtdC00LDQvdC90YvRhSDRhNC40LvRjNGC0YDQvtCyLlxuICAgICAqXG4gICAgICogQHBhcmFtIGZpbHRlcnMg0JzQsNGB0YHQuNCyINGE0LjQu9GM0YLRgNC+0LIg0LTQu9GPINGB0L7Qt9C00LDQvdC40Y8g0LrQvtC90YLRgNC+0LvQvtCyLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCB1cGRhdGVGb3JtQ29udHJvbHMoZmlsdGVyczogU2NDYXRhbG9nRmlsdGVyW10pOiB2b2lkIHtcbiAgICAgICAgT2JqZWN0LmtleXModGhpcy5mb3JtLmNvbnRyb2xzKS5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgdGhpcy5mb3JtLnJlbW92ZUNvbnRyb2woa2V5IGFzIG5ldmVyLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGZpbHRlcnMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgc3dpdGNoIChpdGVtLnR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdjaGVja2JveCc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5hZGRDb250cm9sKGl0ZW0uaWQsIHRoaXMuY3JlYXRlQ2hlY2tib3hGb3JtQ29udHJvbChpdGVtKSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdyYW5nZSc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5hZGRDb250cm9sKGl0ZW0uaWQsIHRoaXMuY3JlYXRlUmFuZ2VGb3JtQ29udHJvbChpdGVtKSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICd0b2dnbGUnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0uYWRkQ29udHJvbChpdGVtLmlkLCB0aGlzLmNyZWF0ZVRvZ2dsZUZvcm1Db250cm9sKGl0ZW0pLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0LXQvtCx0YDQsNC30YPQtdGCINC30L3QsNGH0LXQvdC40Y8g0YTQvtGA0LzRiyDQsiDQvtCx0YrQtdC60YIg0YTQuNC70YzRgtGA0L7QsiDRgdCy0L7QudGB0YLQsi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB2YWx1ZSDQl9C90LDRh9C10L3QuNGPINGE0L7RgNC80YsuXG4gICAgICogQHJldHVybnMg0J7QsdGK0LXQutGCINGE0LjQu9GM0YLRgNC+0LIg0YHQstC+0LnRgdGC0LIuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGJ1aWxkUHJvcGVydHlGaWx0ZXJzKHZhbHVlOiBQYXJ0aWFsPFJlY29yZDxzdHJpbmcsIGJvb2xlYW4gfCBzdHJpbmcgfCBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiB8IFtudW1iZXIsIG51bWJlcl0+PiB8IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogU2NQcm9wZXJ0eUZpbHRlcnMge1xuICAgICAgICBjb25zdCByZXN1bHQ6IFNjUHJvcGVydHlGaWx0ZXJzID0ge307XG5cbiAgICAgICAgdGhpcy5maWx0ZXJzKCk/LmZvckVhY2goKGZpbHRlckl0ZW0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRyb2xWYWx1ZSA9IHZhbHVlW2ZpbHRlckl0ZW0uaWRdIGFzIGJvb2xlYW4gfCBzdHJpbmcgfCBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiB8IFtudW1iZXIsIG51bWJlcl0gfCB1bmRlZmluZWQ7XG5cbiAgICAgICAgICAgIGlmIChpc05pbChjb250cm9sVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzd2l0Y2ggKGZpbHRlckl0ZW0udHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2NoZWNrYm94JzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzQ2hlY2tib3hGaWx0ZXIocmVzdWx0LCBmaWx0ZXJJdGVtLmlkLCBjb250cm9sVmFsdWUgYXMgc3RyaW5nIHwgUmVjb3JkPHN0cmluZywgYm9vbGVhbj4pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdyYW5nZSc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvY2Vzc1JhbmdlRmlsdGVyKHJlc3VsdCwgZmlsdGVySXRlbS5pZCwgY29udHJvbFZhbHVlIGFzIFtudW1iZXIsIG51bWJlcl0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICd0b2dnbGUnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb2Nlc3NUb2dnbGVGaWx0ZXIocmVzdWx0LCBmaWx0ZXJJdGVtLmlkLCBjb250cm9sVmFsdWUgYXMgYm9vbGVhbik7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCh0L7Qt9C00LDQtdGCINC60L7QvdGC0YDQvtC7INGE0L7RgNC80Ysg0LTQu9GPINGE0LjQu9GM0YLRgNCwINGC0LjQv9CwIGNoZWNrYm94LlxuICAgICAqXG4gICAgICog0JXRgdC70LggYGlzTXVsdGlwbGUgPT09IGZhbHNlYCDigJQg0LLQvtC30LLRgNCw0YnQsNC10YIge0BsaW5rIEZvcm1Db250cm9sfSDRgdGC0YDQvtC60L7QstC+0LPQviDQuNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgNCwICjQu9C+0LPQuNC60LAgcmFkaW8pLFxuICAgICAqINC40L3QsNGH0LUg4oCUIHtAbGluayBGb3JtR3JvdXB9INC90LXQt9Cw0LLQuNGB0LjQvNGL0YUg0LHRg9C70LXQstGL0YUg0LrQvtC90YLRgNC+0LvQvtCyINC/0L4g0LjQtNC10L3RgtC40YTQuNC60LDRgtC+0YDQsNC8INC30L3QsNGH0LXQvdC40LkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY2hlY2tib3hGaWx0ZXIg0KTQuNC70YzRgtGAINGC0LjQv9CwIGNoZWNrYm94LlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBjcmVhdGVDaGVja2JveEZvcm1Db250cm9sKGNoZWNrYm94RmlsdGVyOiBTY0lDaGVja2JveEZpbHRlcik6IEZvcm1Hcm91cDxSZWNvcmQ8c3RyaW5nLCBGb3JtQ29udHJvbDxib29sZWFuPj4+IHwgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4ge1xuICAgICAgICBpZiAoIWNoZWNrYm94RmlsdGVyLmlzTXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjb250cm9sczogUmVjb3JkPHN0cmluZywgRm9ybUNvbnRyb2w8Ym9vbGVhbj4+ID0ge307XG4gICAgICAgIGNoZWNrYm94RmlsdGVyLnZhbHVlcy5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgY29udHJvbHNbdmFsdWUuaWRdID0gbmV3IEZvcm1Db250cm9sKGZhbHNlLCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gbmV3IEZvcm1Hcm91cChjb250cm9scyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KHQvtC30LTQsNC10YIgRm9ybUNvbnRyb2wg0LTQu9GPIHJhbmdlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHJhbmdlRmlsdGVyINCk0LjQu9GM0YLRgCDRgtC40L/QsCByYW5nZS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgY3JlYXRlUmFuZ2VGb3JtQ29udHJvbChyYW5nZUZpbHRlcjogU2NSYW5nZUZpbHRlcik6IEZvcm1Db250cm9sPFtudW1iZXIsIG51bWJlcl0+IHtcbiAgICAgICAgLy8gVE9ETzog0JTQvtCx0LDQstC40YLRjCB1cGRhdGVPbjogJ2JsdXInINC/0L7RgdC70LUg0LjRgdC/0YDQsNCy0LvQtdC90LjRjyDQsdCw0LPQsCDQsiB0YWlnYS11aS5cbiAgICAgICAgcmV0dXJuIG5ldyBGb3JtQ29udHJvbChbTnVtYmVyKHJhbmdlRmlsdGVyLnNlbGVjdGVkTWluID8/IHJhbmdlRmlsdGVyLm1pbiksIE51bWJlcihyYW5nZUZpbHRlci5zZWxlY3RlZE1heCA/PyByYW5nZUZpbHRlci5tYXgpXSwgeyBub25OdWxsYWJsZTogdHJ1ZSB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LfQtNCw0LXRgiBGb3JtQ29udHJvbCDQtNC70Y8gdG9nZ2xlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHRvZ2dsZUZpbHRlciDQpNC40LvRjNGC0YAg0YLQuNC/0LAgdG9nZ2xlLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBjcmVhdGVUb2dnbGVGb3JtQ29udHJvbCh0b2dnbGVGaWx0ZXI6IFNjVG9nZ2xlRmlsdGVyKTogRm9ybUNvbnRyb2w8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gbmV3IEZvcm1Db250cm9sKHRvZ2dsZUZpbHRlci5zZWxlY3RlZFZhbHVlID8/IGZhbHNlLCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCe0LHRgNCw0LHQsNGC0YvQstCw0LXRgiBjaGVja2JveCDRhNC40LvRjNGC0YAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcmVzdWx0INCe0LHRitC10LrRgiDRgNC10LfRg9C70YzRgtCw0YLQsCDQtNC70Y8g0LfQsNC/0L7Qu9C90LXQvdC40Y8uXG4gICAgICogQHBhcmFtIGZpbHRlcklkINCY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINGE0LjQu9GM0YLRgNCwLlxuICAgICAqIEBwYXJhbSBjb250cm9sVmFsdWUg0JfQvdCw0YfQtdC90LjQtSDQutC+0L3RgtGA0L7Qu9CwINGE0L7RgNC80YsuXG4gICAgICovXG4gICAgcHJpdmF0ZSBwcm9jZXNzQ2hlY2tib3hGaWx0ZXIocmVzdWx0OiBTY1Byb3BlcnR5RmlsdGVycywgZmlsdGVySWQ6IHN0cmluZywgY29udHJvbFZhbHVlOiBzdHJpbmcgfCBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPik6IHZvaWQge1xuICAgICAgICAvLyDQlNC70Y8gaXNNdWx0aXBsZSA9PT0gZmFsc2U6IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+IC0+IHN0cmluZ1tdINC40Lcg0L7QtNC90L7Qs9C+INCy0YvQsdGA0LDQvdC90L7Qs9C+IElELlxuICAgICAgICBpZiAodHlwZW9mIGNvbnRyb2xWYWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGlmIChjb250cm9sVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc2VjdXJpdHkvZGV0ZWN0LW9iamVjdC1pbmplY3Rpb24sIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICAgICAgICAgICAgcmVzdWx0W2ZpbHRlcklkXSA9IFtjb250cm9sVmFsdWVdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyDQlNC70Y8gY2hlY2tib3g6IEZvcm1Hcm91cCDRgSBGb3JtQ29udHJvbDxib29sZWFuPiAtPiBzdHJpbmdbXSAo0LzQsNGB0YHQuNCyIElEINCy0YvQsdGA0LDQvdC90YvRhSDQt9C90LDRh9C10L3QuNC5KS5cbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRJZHMgPSBPYmplY3QuZW50cmllcyhjb250cm9sVmFsdWUpXG4gICAgICAgICAgICAuZmlsdGVyKChbLCBpc1NlbGVjdGVkXSkgPT4gaXNTZWxlY3RlZClcbiAgICAgICAgICAgIC5tYXAoKFtpZF0pID0+IGlkKTtcblxuICAgICAgICBpZiAoc2VsZWN0ZWRJZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlY3VyaXR5L2RldGVjdC1vYmplY3QtaW5qZWN0aW9uLCBuby1wYXJhbS1yZWFzc2lnblxuICAgICAgICAgICAgcmVzdWx0W2ZpbHRlcklkXSA9IHNlbGVjdGVkSWRzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0J7QsdGA0LDQsdCw0YLRi9Cy0LDQtdGCIHJhbmdlINGE0LjQu9GM0YLRgC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSByZXN1bHQg0J7QsdGK0LXQutGCINGA0LXQt9GD0LvRjNGC0LDRgtCwINC00LvRjyDQt9Cw0L/QvtC70L3QtdC90LjRjy5cbiAgICAgKiBAcGFyYW0gZmlsdGVySWQg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0YTQuNC70YzRgtGA0LAuXG4gICAgICogQHBhcmFtIGNvbnRyb2xWYWx1ZSDQl9C90LDRh9C10L3QuNC1INC60L7QvdGC0YDQvtC70LAg0YTQvtGA0LzRiy5cbiAgICAgKiBAcGFyYW0gY29udHJvbFZhbHVlLjAg0J3QsNGH0LDQu9GM0L3QvtC1INC30L3QsNGH0LXQvdC40LUg0LTQuNCw0L/QsNC30L7QvdCwLlxuICAgICAqIEBwYXJhbSBjb250cm9sVmFsdWUuMSDQmtC+0L3QtdGH0L3QvtC1INC30L3QsNGH0LXQvdC40LUg0LTQuNCw0L/QsNC30L7QvdCwLlxuICAgICAqL1xuICAgIHByaXZhdGUgcHJvY2Vzc1JhbmdlRmlsdGVyKHJlc3VsdDogU2NQcm9wZXJ0eUZpbHRlcnMsIGZpbHRlcklkOiBzdHJpbmcsIFtmcm9tLCB0b106IFtudW1iZXIsIG51bWJlcl0pOiB2b2lkIHtcbiAgICAgICAgLy8g0JTQu9GPIHJhbmdlOiBGb3JtQ29udHJvbDxbbnVtYmVyLCBudW1iZXJdPiAtPiB7IGZyb20/OiBzdHJpbmc7IHRvPzogc3RyaW5nOyB9XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzZWN1cml0eS9kZXRlY3Qtb2JqZWN0LWluamVjdGlvbiwgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICAgICAgcmVzdWx0W2ZpbHRlcklkXSA9IHtcbiAgICAgICAgICAgIGZyb206IFN0cmluZyhmcm9tKSxcbiAgICAgICAgICAgIHRvOiBTdHJpbmcodG8pLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCe0LHRgNCw0LHQsNGC0YvQstCw0LXRgiB0b2dnbGUg0YTQuNC70YzRgtGALlxuICAgICAqXG4gICAgICogQHBhcmFtIHJlc3VsdCDQntCx0YrQtdC60YIg0YDQtdC30YPQu9GM0YLQsNGC0LAg0LTQu9GPINC30LDQv9C+0LvQvdC10L3QuNGPLlxuICAgICAqIEBwYXJhbSBmaWx0ZXJJZCDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDRhNC40LvRjNGC0YDQsC5cbiAgICAgKiBAcGFyYW0gY29udHJvbFZhbHVlINCX0L3QsNGH0LXQvdC40LUg0LrQvtC90YLRgNC+0LvQsCDRhNC+0YDQvNGLLlxuICAgICAqL1xuICAgIHByaXZhdGUgcHJvY2Vzc1RvZ2dsZUZpbHRlcihyZXN1bHQ6IFNjUHJvcGVydHlGaWx0ZXJzLCBmaWx0ZXJJZDogc3RyaW5nLCBjb250cm9sVmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgLy8g0JTQu9GPIHRvZ2dsZTogRm9ybUNvbnRyb2w8Ym9vbGVhbj4gLT4gYm9vbGVhblxuICAgICAgICBpZiAoY29udHJvbFZhbHVlKSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc2VjdXJpdHkvZGV0ZWN0LW9iamVjdC1pbmplY3Rpb24sIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICAgICAgICByZXN1bHRbZmlsdGVySWRdID0gY29udHJvbFZhbHVlO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiQGlmIChmaWx0ZXJzKCk/Lmxlbmd0aCkge1xuICAgIDxkaXYgY2xhc3M9XCJiZy10dWktYmFzZS0wMSBzaGFkb3ctc2MgZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIgZ2FwLTMgcm91bmRlZC14bFwiPlxuICAgICAgICA8dHVpLWFjY29yZGlvbiBjbGFzcz1cImFjY29yZGlvblwiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIFt0dWlBY2NvcmRpb25dPVwiaXNPcGVuQWNjb3JkaW9uKClcIlxuICAgICAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICDQpNC40LvRjNGC0YDRi1xuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8dHVpLWV4cGFuZD5cbiAgICAgICAgICAgICAgICA8Zm9ybVxuICAgICAgICAgICAgICAgICAgICBbZm9ybUdyb3VwXT1cImZvcm1cIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTQgcGItMVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICBAZm9yIChmaWx0ZXIgb2YgZmlsdGVycygpOyB0cmFjayBmaWx0ZXIuaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidGV4dC1ib2R5LXMgZm9udC1tZWRpdW1cIj57eyBmaWx0ZXIubGFiZWwgfX08L2xhYmVsPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChmaWx0ZXIudHlwZSA9PT0gJ2NoZWNrYm94Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGZpbHRlci5pc011bHRpcGxlID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yICh2YWx1ZSBvZiBmaWx0ZXIudmFsdWVzOyB0cmFjayB2YWx1ZS5pZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAbGV0IGZvcm1Db250cm9sID0gZm9ybS5nZXQoZmlsdGVyLmlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiZmlsdGVyLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwidmFsdWUuaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR1aVJhZGlvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImZvcm1Db250cm9sPy5zZXRWYWx1ZShmb3JtQ29udHJvbD8udmFsdWUgPT09IHZhbHVlLmlkID8gbnVsbCA6IHZhbHVlLmlkKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtYm9keS1zXCI+e3sgdmFsdWUubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtR3JvdXBOYW1lXT1cImZpbHRlci5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yICh2YWx1ZSBvZiBmaWx0ZXIudmFsdWVzOyB0cmFjayB2YWx1ZS5pZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJ2YWx1ZS5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHVpQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1ib2R5LXNcIj57eyB2YWx1ZS5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZmlsdGVyLnR5cGUgPT09ICdyYW5nZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR1aS1pbnB1dC1yYW5nZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJmaWx0ZXIuaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21pbl09XCIrZmlsdGVyLm1pblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF4XT1cIitmaWx0ZXIubWF4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGZpbHRlci50eXBlID09PSAndG9nZ2xlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJmaWx0ZXIuaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR1aUNoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtYm9keS1zXCI+0JTQsDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgICAgIDwvdHVpLWV4cGFuZD5cbiAgICAgICAgPC90dWktYWNjb3JkaW9uPlxuICAgIDwvZGl2PlxufVxuIl19
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { InjectionToken } from '@angular/core';
|
|
2
|
-
import { Subject } from 'rxjs';
|
|
3
|
-
/**
|
|
4
|
-
* Токен для инъекции {@link Subject} для хранения фильтров продуктов.
|
|
5
|
-
*/
|
|
6
|
-
export const SC_CATALOG_PRODUCTS_FILTERS = new InjectionToken('SC_CATALOG_PRODUCTS_FILTERS$', {
|
|
7
|
-
providedIn: 'root',
|
|
8
|
-
factory: () => new Subject(),
|
|
9
|
-
});
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY2F0YWxvZy1wcm9kdWN0cy1maWx0ZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2NhdGFsb2cvY2F0YWxvZy1maWx0ZXJzL3Rva2Vucy9zYy1jYXRhbG9nLXByb2R1Y3RzLWZpbHRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRS9COztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsSUFBSSxjQUFjLENBQTZCLDhCQUE4QixFQUFFO0lBQ3RILFVBQVUsRUFBRSxNQUFNO0lBQ2xCLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLE9BQU8sRUFBcUI7Q0FDbEQsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNjUHJvcGVydHlGaWx0ZXJzIH0gZnJvbSAnQHNuYWJjZW50ci9jbGllbnQtY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICog0KLQvtC60LXQvSDQtNC70Y8g0LjQvdGK0LXQutGG0LjQuCB7QGxpbmsgU3ViamVjdH0g0LTQu9GPINGF0YDQsNC90LXQvdC40Y8g0YTQuNC70YzRgtGA0L7QsiDQv9GA0L7QtNGD0LrRgtC+0LIuXG4gKi9cbmV4cG9ydCBjb25zdCBTQ19DQVRBTE9HX1BST0RVQ1RTX0ZJTFRFUlMgPSBuZXcgSW5qZWN0aW9uVG9rZW48U3ViamVjdDxTY1Byb3BlcnR5RmlsdGVycz4+KCdTQ19DQVRBTE9HX1BST0RVQ1RTX0ZJTFRFUlMkJywge1xuICAgIHByb3ZpZGVkSW46ICdyb290JyxcbiAgICBmYWN0b3J5OiAoKSA9PiBuZXcgU3ViamVjdDxTY1Byb3BlcnR5RmlsdGVycz4oKSxcbn0pO1xuIl19
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { InjectionToken } from '@angular/core';
|
|
2
|
-
/**
|
|
3
|
-
* Токен для инъекции признака необходимости отображать фильтры для вложенных категорий.
|
|
4
|
-
*/
|
|
5
|
-
export const SC_CATALOG_SHOW_PRODUCTS_RECURSIVELY = new InjectionToken('SC_CATALOG_SHOW_PRODUCTS_RECURSIVELY');
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY2F0YWxvZy1zaG93LXByb2R1Y3RzLXJlY3Vyc2l2ZWx5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2NhdGFsb2cvY2F0YWxvZy1maWx0ZXJzL3Rva2Vucy9zYy1jYXRhbG9nLXNob3ctcHJvZHVjdHMtcmVjdXJzaXZlbHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvQzs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLG9DQUFvQyxHQUFHLElBQUksY0FBYyxDQUFVLHNDQUFzQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqINCi0L7QutC10L0g0LTQu9GPINC40L3RitC10LrRhtC40Lgg0L/RgNC40LfQvdCw0LrQsCDQvdC10L7QsdGF0L7QtNC40LzQvtGB0YLQuCDQvtGC0L7QsdGA0LDQttCw0YLRjCDRhNC40LvRjNGC0YDRiyDQtNC70Y8g0LLQu9C+0LbQtdC90L3Ri9GFINC60LDRgtC10LPQvtGA0LjQuS5cbiAqL1xuZXhwb3J0IGNvbnN0IFNDX0NBVEFMT0dfU0hPV19QUk9EVUNUU19SRUNVUlNJVkVMWSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxib29sZWFuPignU0NfQ0FUQUxPR19TSE9XX1BST0RVQ1RTX1JFQ1VSU0lWRUxZJyk7XG4iXX0=
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Inject, inject, Input, input, Output } from '@angular/core';
|
|
2
|
-
import { SC_PATH_IMAGE_NOT_FOUND, SC_URLS, ScAuthService } from '@snabcentr/client-core';
|
|
3
|
-
import { TUI_IS_MOBILE } from '@taiga-ui/cdk';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "@angular/common";
|
|
6
|
-
import * as i2 from "@angular/router";
|
|
7
|
-
import * as i3 from "@taiga-ui/kit";
|
|
8
|
-
import * as i4 from "@taiga-ui/cdk";
|
|
9
|
-
import * as i5 from "../sc-favorite-button/sc-favorite-button.component";
|
|
10
|
-
import * as i6 from "@snabcentr/client-core";
|
|
11
|
-
/**
|
|
12
|
-
* Карточка категории.
|
|
13
|
-
*/
|
|
14
|
-
export class ScCategoryCardComponent {
|
|
15
|
-
/**
|
|
16
|
-
* Инициализирует экземпляр класса {@link CategoryCardComponent}.
|
|
17
|
-
*
|
|
18
|
-
* @param urls Список ссылок приложения.
|
|
19
|
-
* @param pathImageNotFound Путь до изображения 'Товар не найден'.
|
|
20
|
-
* @param cdr Объект для работы с обнаружением изменений.
|
|
21
|
-
*/
|
|
22
|
-
constructor(urls, pathImageNotFound, cdr) {
|
|
23
|
-
this.urls = urls;
|
|
24
|
-
this.pathImageNotFound = pathImageNotFound;
|
|
25
|
-
this.cdr = cdr;
|
|
26
|
-
/**
|
|
27
|
-
* Размер карточки категории.
|
|
28
|
-
*/
|
|
29
|
-
this.size = 'm';
|
|
30
|
-
// TODO: Переделать на HostBinding.
|
|
31
|
-
/**
|
|
32
|
-
* Вид отображения карточки.
|
|
33
|
-
*/
|
|
34
|
-
this.appearance = input('normal');
|
|
35
|
-
/**
|
|
36
|
-
* Признак, что необходимо отобразить лоадер для кнопки избранных товаров и категорий.
|
|
37
|
-
*/
|
|
38
|
-
this.favoriteShowLoader = false;
|
|
39
|
-
/**
|
|
40
|
-
* {@link Observable} изменения статуса авторизации.
|
|
41
|
-
*/
|
|
42
|
-
this.authStatus$ = inject(ScAuthService).getAuthChange();
|
|
43
|
-
/**
|
|
44
|
-
* Признак наведения на карточку.
|
|
45
|
-
*/
|
|
46
|
-
this.isHover = false;
|
|
47
|
-
/**
|
|
48
|
-
* Признак что категория имеет поведение наведения и скрытия названия.
|
|
49
|
-
*/
|
|
50
|
-
this.enableHover = false;
|
|
51
|
-
/**
|
|
52
|
-
* Признак того, отображается этот компонент на мобильном устройстве или нет.
|
|
53
|
-
*/
|
|
54
|
-
this.isMobile = inject(TUI_IS_MOBILE);
|
|
55
|
-
/**
|
|
56
|
-
* Событие нажатия на кнопку избранной категории.
|
|
57
|
-
*/
|
|
58
|
-
this.clickOnFavoriteEvent = new EventEmitter();
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Обработчик события наведения.
|
|
62
|
-
*
|
|
63
|
-
* @param isHover Признак наведения на карточку.
|
|
64
|
-
*/
|
|
65
|
-
onHovered(isHover) {
|
|
66
|
-
this.isHover = isHover;
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Устанавливает компонент в очередь на обновление.
|
|
70
|
-
*
|
|
71
|
-
* @deprecated
|
|
72
|
-
*/
|
|
73
|
-
markForCheck() {
|
|
74
|
-
this.cdr.markForCheck();
|
|
75
|
-
}
|
|
76
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScCategoryCardComponent, deps: [{ token: SC_URLS }, { token: SC_PATH_IMAGE_NOT_FOUND }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
77
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ScCategoryCardComponent, selector: "sc-category-card", inputs: { category: { classPropertyName: "category", publicName: "category", isSignal: false, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: false, isRequired: false, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, enableHover: { classPropertyName: "enableHover", publicName: "enableHover", isSignal: false, isRequired: false, transformFunction: null }, href: { classPropertyName: "href", publicName: "href", isSignal: false, isRequired: false, transformFunction: null } }, 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 <picture *ngIf=\"category\">\n @if (category.properties?.imageWebp) {\n <source\n type=\"image/webp\"\n [srcset]=\"category.properties?.imageWebp | scMediaImageTransformer\"\n />\n }\n <img\n [src]=\"category.properties?.image | scMediaImageTransformer: true\"\n [alt]=\"category.name\"\n [ngClass]=\"{ '!object-contain p-2': appearance() === 'normal' || !category.properties?.image }\"\n class=\"size-full rounded-xl object-cover\"\n />\n </picture>\n\n <!-- \u0411\u043B\u043E\u043A \u0434\u043B\u044F \u0441\u043A\u0435\u043B\u0435\u0442\u043E\u043D\u0430 \u043A\u0430\u0440\u0442\u043E\u0447\u043A\u0438. -->\n <div\n *ngIf=\"!category\"\n class=\"img-wrapper size-full bg-tui-base-02\"\n ></div>\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 />\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: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i3.TuiLineClamp, selector: "tui-line-clamp", inputs: ["lineHeight", "content", "linesLimit"], outputs: ["overflownChange"] }, { kind: "directive", type: i4.TuiHovered, selector: "[tuiHoveredChange]", outputs: ["tuiHoveredChange"] }, { kind: "component", type: i5.ScFavoriteButtonComponent, selector: "sc-favorite-button", inputs: ["isFavorite", "showLoader", "disabled"], outputs: ["clickEvent"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.ScMediaImageTransformerPipe, name: "scMediaImageTransformer" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
78
|
-
}
|
|
79
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScCategoryCardComponent, decorators: [{
|
|
80
|
-
type: Component,
|
|
81
|
-
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 <picture *ngIf=\"category\">\n @if (category.properties?.imageWebp) {\n <source\n type=\"image/webp\"\n [srcset]=\"category.properties?.imageWebp | scMediaImageTransformer\"\n />\n }\n <img\n [src]=\"category.properties?.image | scMediaImageTransformer: true\"\n [alt]=\"category.name\"\n [ngClass]=\"{ '!object-contain p-2': appearance() === 'normal' || !category.properties?.image }\"\n class=\"size-full rounded-xl object-cover\"\n />\n </picture>\n\n <!-- \u0411\u043B\u043E\u043A \u0434\u043B\u044F \u0441\u043A\u0435\u043B\u0435\u0442\u043E\u043D\u0430 \u043A\u0430\u0440\u0442\u043E\u0447\u043A\u0438. -->\n <div\n *ngIf=\"!category\"\n class=\"img-wrapper size-full bg-tui-base-02\"\n ></div>\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 />\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"] }]
|
|
82
|
-
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
83
|
-
type: Inject,
|
|
84
|
-
args: [SC_URLS]
|
|
85
|
-
}] }, { type: undefined, decorators: [{
|
|
86
|
-
type: Inject,
|
|
87
|
-
args: [SC_PATH_IMAGE_NOT_FOUND]
|
|
88
|
-
}] }, { type: i0.ChangeDetectorRef }], propDecorators: { category: [{
|
|
89
|
-
type: Input
|
|
90
|
-
}], size: [{
|
|
91
|
-
type: Input
|
|
92
|
-
}, {
|
|
93
|
-
type: HostBinding,
|
|
94
|
-
args: ['attr.data-size']
|
|
95
|
-
}], enableHover: [{
|
|
96
|
-
type: Input
|
|
97
|
-
}], clickOnFavoriteEvent: [{
|
|
98
|
-
type: Output
|
|
99
|
-
}], href: [{
|
|
100
|
-
type: Input
|
|
101
|
-
}] } });
|
|
102
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY2F0ZWdvcnktY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvY2F0YWxvZy9jYXRlZ29yeS1jYXJkL3NjLWNhdGVnb3J5LWNhcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2NhdGFsb2cvY2F0ZWdvcnktY2FyZC9zYy1jYXRlZ29yeS1jYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBcUIsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFlLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwSyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBdUIsTUFBTSx3QkFBd0IsQ0FBQztBQUM5RyxPQUFPLEVBQUUsYUFBYSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7QUFJN0Q7O0dBRUc7QUFPSCxNQUFNLE9BQU8sdUJBQXVCO0lBMERoQzs7Ozs7O09BTUc7SUFDSCxZQUNzQyxJQUFhLEVBQ0csaUJBQXlCLEVBQzFELEdBQXNCO1FBRkwsU0FBSSxHQUFKLElBQUksQ0FBUztRQUNHLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBUTtRQUMxRCxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQTdEM0M7O1dBRUc7UUFHSSxTQUFJLEdBQWEsR0FBRyxDQUFDO1FBRTVCLG1DQUFtQztRQUNuQzs7V0FFRztRQUNJLGVBQVUsR0FBa0QsS0FBSyxDQUFtQyxRQUFRLENBQUMsQ0FBQztRQUVySDs7V0FFRztRQUNJLHVCQUFrQixHQUFZLEtBQUssQ0FBQztRQUUzQzs7V0FFRztRQUNhLGdCQUFXLEdBQXdCLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUV6Rjs7V0FFRztRQUNPLFlBQU8sR0FBWSxLQUFLLENBQUM7UUFFbkM7O1dBRUc7UUFFSSxnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUVwQzs7V0FFRztRQUNhLGFBQVEsR0FBWSxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFMUQ7O1dBRUc7UUFFSSx5QkFBb0IsR0FBNkIsSUFBSSxZQUFZLEVBQWMsQ0FBQztJQW1CcEYsQ0FBQztJQUVKOzs7O09BSUc7SUFDTyxTQUFTLENBQUMsT0FBZ0I7UUFDaEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDM0IsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxZQUFZO1FBQ2YsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM1QixDQUFDOytHQXZGUSx1QkFBdUIsa0JBa0VwQixPQUFPLGFBQ1AsdUJBQXVCO21HQW5FMUIsdUJBQXVCLHd6QkNmcEMscXdFQXNEQTs7NEZEdkNhLHVCQUF1QjtrQkFObkMsU0FBUzsrQkFDSSxrQkFBa0IsbUJBR1gsdUJBQXVCLENBQUMsTUFBTTs7MEJBb0UxQyxNQUFNOzJCQUFDLE9BQU87OzBCQUNkLE1BQU07MkJBQUMsdUJBQXVCO3lFQTlENUIsUUFBUTtzQkFEZCxLQUFLO2dCQVFDLElBQUk7c0JBRlYsS0FBSzs7c0JBQ0wsV0FBVzt1QkFBQyxnQkFBZ0I7Z0JBNEJ0QixXQUFXO3NCQURqQixLQUFLO2dCQVlDLG9CQUFvQjtzQkFEMUIsTUFBTTtnQkFPQSxJQUFJO3NCQURWLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSW5qZWN0LCBpbmplY3QsIElucHV0LCBpbnB1dCwgSW5wdXRTaWduYWwsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU0NfUEFUSF9JTUFHRV9OT1RfRk9VTkQsIFNDX1VSTFMsIFNjQXV0aFNlcnZpY2UsIFNjQ2F0ZWdvcnksIFNjSVVybHMgfSBmcm9tICdAc25hYmNlbnRyL2NsaWVudC1jb3JlJztcbmltcG9ydCB7IFRVSV9JU19NT0JJTEUsIFR1aUxvb3NlVW5pb24gfSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7IFR1aVNpemVTIH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG4vKipcbiAqINCa0LDRgNGC0L7Rh9C60LAg0LrQsNGC0LXQs9C+0YDQuNC4LlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3NjLWNhdGVnb3J5LWNhcmQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zYy1jYXRlZ29yeS1jYXJkLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zYy1jYXRlZ29yeS1jYXJkLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNjQ2F0ZWdvcnlDYXJkQ29tcG9uZW50IHtcbiAgICAvKipcbiAgICAgKiDQlNCw0L3QvdGL0LUg0L4g0LrQsNGC0LXQs9C+0YDQuNC4LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGNhdGVnb3J5PzogU2NDYXRlZ29yeTtcblxuICAgIC8qKlxuICAgICAqINCg0LDQt9C80LXRgCDQutCw0YDRgtC+0YfQutC4INC60LDRgtC10LPQvtGA0LjQuC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLXNpemUnKVxuICAgIHB1YmxpYyBzaXplOiBUdWlTaXplUyA9ICdtJztcblxuICAgIC8vIFRPRE86INCf0LXRgNC10LTQtdC70LDRgtGMINC90LAgSG9zdEJpbmRpbmcuXG4gICAgLyoqXG4gICAgICog0JLQuNC0INC+0YLQvtCx0YDQsNC20LXQvdC40Y8g0LrQsNGA0YLQvtGH0LrQuC5cbiAgICAgKi9cbiAgICBwdWJsaWMgYXBwZWFyYW5jZTogSW5wdXRTaWduYWw8VHVpTG9vc2VVbmlvbjwncm9vdCcgfCAnbm9ybWFsJz4+ID0gaW5wdXQ8VHVpTG9vc2VVbmlvbjwncm9vdCcgfCAnbm9ybWFsJz4+KCdub3JtYWwnKTtcblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6LCDRh9GC0L4g0L3QtdC+0LHRhdC+0LTQuNC80L4g0L7RgtC+0LHRgNCw0LfQuNGC0Ywg0LvQvtCw0LTQtdGAINC00LvRjyDQutC90L7Qv9C60Lgg0LjQt9Cx0YDQsNC90L3Ri9GFINGC0L7QstCw0YDQvtCyINC4INC60LDRgtC10LPQvtGA0LjQuS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZmF2b3JpdGVTaG93TG9hZGVyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT2JzZXJ2YWJsZX0g0LjQt9C80LXQvdC10L3QuNGPINGB0YLQsNGC0YPRgdCwINCw0LLRgtC+0YDQuNC30LDRhtC40LguXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGF1dGhTdGF0dXMkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gaW5qZWN0KFNjQXV0aFNlcnZpY2UpLmdldEF1dGhDaGFuZ2UoKTtcblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6INC90LDQstC10LTQtdC90LjRjyDQvdCwINC60LDRgNGC0L7Rh9C60YMuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGlzSG92ZXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6INGH0YLQviDQutCw0YLQtdCz0L7RgNC40Y8g0LjQvNC10LXRgiDQv9C+0LLQtdC00LXQvdC40LUg0L3QsNCy0LXQtNC10L3QuNGPINC4INGB0LrRgNGL0YLQuNGPINC90LDQt9Cy0LDQvdC40Y8uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZW5hYmxlSG92ZXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6INGC0L7Qs9C+LCDQvtGC0L7QsdGA0LDQttCw0LXRgtGB0Y8g0Y3RgtC+0YIg0LrQvtC80L/QvtC90LXQvdGCINC90LAg0LzQvtCx0LjQu9GM0L3QvtC8INGD0YHRgtGA0L7QudGB0YLQstC1INC40LvQuCDQvdC10YIuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGlzTW9iaWxlOiBib29sZWFuID0gaW5qZWN0KFRVSV9JU19NT0JJTEUpO1xuXG4gICAgLyoqXG4gICAgICog0KHQvtCx0YvRgtC40LUg0L3QsNC20LDRgtC40Y8g0L3QsCDQutC90L7Qv9C60YMg0LjQt9Cx0YDQsNC90L3QvtC5INC60LDRgtC10LPQvtGA0LjQuC5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgY2xpY2tPbkZhdm9yaXRlRXZlbnQ6IEV2ZW50RW1pdHRlcjxTY0NhdGVnb3J5PiA9IG5ldyBFdmVudEVtaXR0ZXI8U2NDYXRlZ29yeT4oKTtcblxuICAgIC8qKlxuICAgICAqINCh0YHRi9C70LrQsCDQvdCwINGB0YLRgNCw0L3QuNGG0YMg0LrQsNGC0LXQs9C+0YDQuNC4LiDQmNGB0L/QvtC70YzQt9GD0LXRgtGB0Y8g0LjQvNC10L3QvdC+IGBocmVmYCwg0YLQsNC6INC60LDQuiDQvtGB0YLQsNC90L7QstC40YLRjCDRgdC+0LHRi9GC0LjQtSDQutC70LjQutCwINC00LvRjyBgcm91dGVyTGlua2Ag0L3QtSDQstGL0YjQu9C+LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGhyZWY/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiDQmNC90LjRhtC40LDQu9C40LfQuNGA0YPQtdGCINGN0LrQt9C10LzQv9C70Y/RgCDQutC70LDRgdGB0LAge0BsaW5rIENhdGVnb3J5Q2FyZENvbXBvbmVudH0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdXJscyDQodC/0LjRgdC+0Log0YHRgdGL0LvQvtC6INC/0YDQuNC70L7QttC10L3QuNGPLlxuICAgICAqIEBwYXJhbSBwYXRoSW1hZ2VOb3RGb3VuZCDQn9GD0YLRjCDQtNC+INC40LfQvtCx0YDQsNC20LXQvdC40Y8gJ9Ci0L7QstCw0YAg0L3QtSDQvdCw0LnQtNC10L0nLlxuICAgICAqIEBwYXJhbSBjZHIg0J7QsdGK0LXQutGCINC00LvRjyDRgNCw0LHQvtGC0Ysg0YEg0L7QsdC90LDRgNGD0LbQtdC90LjQtdC8INC40LfQvNC10L3QtdC90LjQuS5cbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoU0NfVVJMUykgcHJpdmF0ZSByZWFkb25seSB1cmxzOiBTY0lVcmxzLFxuICAgICAgICBASW5qZWN0KFNDX1BBVEhfSU1BR0VfTk9UX0ZPVU5EKSBwcml2YXRlIHJlYWRvbmx5IHBhdGhJbWFnZU5vdEZvdW5kOiBzdHJpbmcsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZlxuICAgICkge31cblxuICAgIC8qKlxuICAgICAqINCe0LHRgNCw0LHQvtGC0YfQuNC6INGB0L7QsdGL0YLQuNGPINC90LDQstC10LTQtdC90LjRjy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBpc0hvdmVyINCf0YDQuNC30L3QsNC6INC90LDQstC10LTQtdC90LjRjyDQvdCwINC60LDRgNGC0L7Rh9C60YMuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIG9uSG92ZXJlZChpc0hvdmVyOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNIb3ZlciA9IGlzSG92ZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KPRgdGC0LDQvdCw0LLQu9C40LLQsNC10YIg0LrQvtC80L/QvtC90LXQvdGCINCyINC+0YfQtdGA0LXQtNGMINC90LAg0L7QsdC90L7QstC70LXQvdC40LUuXG4gICAgICpcbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqL1xuICAgIHB1YmxpYyBtYXJrRm9yQ2hlY2soKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJyZWxhdGl2ZVwiPlxuICAgIDxhXG4gICAgICAgICh0dWlIb3ZlcmVkQ2hhbmdlKT1cIm9uSG92ZXJlZCgkZXZlbnQpXCJcbiAgICAgICAgW3JvdXRlckxpbmtdPVwiaHJlZiA/PyBudWxsXCJcbiAgICAgICAgY2xhc3M9XCJjYXRlZ29yeS1idXR0b24gZmxleCBmbGV4LWNvbCBvdmVyZmxvdy1oaWRkZW4gcm91bmRlZC10dWktcmFkaXVzLW0gYm9yZGVyIGJvcmRlci10dWktYmFzZS0wNCB0ZXh0LWNlbnRlclwiXG4gICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW1nLXdyYXBwZXIgdy1mdWxsIGdyb3cgb3ZlcmZsb3ctaGlkZGVuXCI+XG4gICAgICAgICAgICA8cGljdHVyZSAqbmdJZj1cImNhdGVnb3J5XCI+XG4gICAgICAgICAgICAgICAgQGlmIChjYXRlZ29yeS5wcm9wZXJ0aWVzPy5pbWFnZVdlYnApIHtcbiAgICAgICAgICAgICAgICAgICAgPHNvdXJjZVxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImltYWdlL3dlYnBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NyY3NldF09XCJjYXRlZ29yeS5wcm9wZXJ0aWVzPy5pbWFnZVdlYnAgfCBzY01lZGlhSW1hZ2VUcmFuc2Zvcm1lclwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgW3NyY109XCJjYXRlZ29yeS5wcm9wZXJ0aWVzPy5pbWFnZSB8IHNjTWVkaWFJbWFnZVRyYW5zZm9ybWVyOiB0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgW2FsdF09XCJjYXRlZ29yeS5uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnIW9iamVjdC1jb250YWluIHAtMic6IGFwcGVhcmFuY2UoKSA9PT0gJ25vcm1hbCcgfHwgIWNhdGVnb3J5LnByb3BlcnRpZXM/LmltYWdlIH1cIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNpemUtZnVsbCByb3VuZGVkLXhsIG9iamVjdC1jb3ZlclwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvcGljdHVyZT5cblxuICAgICAgICAgICAgPCEtLSDQkdC70L7QuiDQtNC70Y8g0YHQutC10LvQtdGC0L7QvdCwINC60LDRgNGC0L7Rh9C60LguIC0tPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWNhdGVnb3J5XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImltZy13cmFwcGVyIHNpemUtZnVsbCBiZy10dWktYmFzZS0wMlwiXG4gICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJuYW1lIGZsZXggdy1mdWxsIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgQGlmIChjYXRlZ29yeSkge1xuICAgICAgICAgICAgICAgIEBpZiAoZW5hYmxlSG92ZXIgJiYgIWlzTW9iaWxlKSB7XG4gICAgICAgICAgICAgICAgICAgIDx0dWktbGluZS1jbGFtcFxuICAgICAgICAgICAgICAgICAgICAgICAgW2NvbnRlbnRdPVwiY2F0ZWdvcnkubmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInBvaW50ZXItZXZlbnRzLW5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xpbmVIZWlnaHRdPVwic2l6ZSA9PT0gJ20nID8gMjYgOiAyNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGluZXNMaW1pdF09XCJpc0hvdmVyID8gNCA6IDJcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB7eyBjYXRlZ29yeS5uYW1lIH19XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNrZWxldG9uLW5hbWUgcm91bmRlZC10dWktcmFkaXVzLXMgYmctdHVpLWJhc2UtMDJcIj48L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgPC9hPlxuICAgIDxzYy1mYXZvcml0ZS1idXR0b25cbiAgICAgICAgKm5nSWY9XCJjYXRlZ29yeSAmJiAoYXV0aFN0YXR1cyQgfCBhc3luYylcIlxuICAgICAgICBbc2hvd0xvYWRlcl09XCJmYXZvcml0ZVNob3dMb2FkZXJcIlxuICAgICAgICBbaXNGYXZvcml0ZV09XCJjYXRlZ29yeS5pc0Zhdm9yaXRlXCJcbiAgICAgICAgKGNsaWNrRXZlbnQpPVwiY2xpY2tPbkZhdm9yaXRlRXZlbnQuZW1pdCgpXCJcbiAgICAgICAgY2xhc3M9XCJhYnNvbHV0ZSBsZWZ0LTEgdG9wLTFcIlxuICAgIC8+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { CommonModule } from '@angular/common';
|
|
2
|
-
import { ChangeDetectionStrategy, Component, HostBinding, inject, Input } from '@angular/core';
|
|
3
|
-
import { ScWarehouseService } from '@snabcentr/client-core';
|
|
4
|
-
import { TuiHint } from '@taiga-ui/core';
|
|
5
|
-
import { TuiBadge } from '@taiga-ui/kit';
|
|
6
|
-
import { ScNoindexWrapperComponent } from '../../noindex-wrapper';
|
|
7
|
-
import { ScFormatDatePipe } from '../../pipes';
|
|
8
|
-
import * as i0 from "@angular/core";
|
|
9
|
-
import * as i1 from "@angular/common";
|
|
10
|
-
import * as i2 from "@taiga-ui/core";
|
|
11
|
-
/**
|
|
12
|
-
* Компонент центы товара с отображением скидки.
|
|
13
|
-
*/
|
|
14
|
-
export class CostWithDiscountComponent {
|
|
15
|
-
constructor() {
|
|
16
|
-
/**
|
|
17
|
-
* {@link Observable} изменения выбранного склада.
|
|
18
|
-
*/
|
|
19
|
-
this.warehouseSelect$ = inject(ScWarehouseService).getWarehouseSelectChange$();
|
|
20
|
-
/**
|
|
21
|
-
* Размер компонента.
|
|
22
|
-
*/
|
|
23
|
-
this.size = 'm';
|
|
24
|
-
}
|
|
25
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CostWithDiscountComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CostWithDiscountComponent, isStandalone: true, selector: "sc-cost-with-discount", inputs: { product: "product", size: "size" }, host: { properties: { "attr.data-size": "this.size" } }, ngImport: i0, template: "@if (product) {\n <div\n *ngIf=\"warehouseSelect$ | async as warehouseSelect\"\n class=\"flex flex-wrap items-center gap-x-2 gap-y-1\"\n >\n <div class=\"flex flex-wrap items-center gap-x-2 gap-y-1\">\n <span\n [class.text-tui-text-02]=\"!product.isWarehouseStockExist(warehouseSelect.id)\"\n class=\"cost\"\n >\n {{ product.costRubString }}\n </span>\n\n <sc-noindex-wrapper>\n <tui-badge\n *ngIf=\"product.discount as discount\"\n size=\"m\"\n [style.background]=\"'var(--tui-status-positive)'\"\n [tuiHint]=\"discountHint\"\n [tuiHintShowDelay]=\"100\"\n tuiHintDirection=\"top\"\n class=\"text-body-xs\"\n >\n <tui-badge\n *ngIf=\"product.discount as discount\"\n size=\"s\"\n [style.background]=\"'var(--tui-background-base)'\"\n class=\"text-body-xs-bold text-tui-text-02\"\n >\n {{ discount.percent }}%\n </tui-badge>\n\n @let expiredAt = product.discount.expiredAt | scFormatDate;\n\n <div class=\"flex gap-0.5\">\n <p class=\"flex line-through\">{{ product.discountCostString }}</p>\n <div *ngIf=\"expiredAt\">\u0434\u043E {{ expiredAt.substring(0, 5) }}</div>\n </div>\n <ng-template #discountHint>\n <div class=\"font-bold\">{{ product.discount.name }}</div>\n <div *ngIf=\"expiredAt\">\u0414\u0430\u0442\u0430 \u043E\u043A\u043E\u043D\u0447\u0430\u043D\u0438\u044F: {{ expiredAt }}</div>\n </ng-template>\n </tui-badge>\n </sc-noindex-wrapper>\n </div>\n\n <span\n *ngIf=\"!product.priceInRub\"\n class=\"font-extrabold text-tui-text-02\"\n >\n {{ product.costString }}\n </span>\n </div>\n}\n", styles: [":host tui-badge{--t-padding: .25rem !important}:host[data-size=s]{font-size:.6875rem;line-height:1rem;font-weight:500}:host[data-size=s] .cost{font-size:.8125rem;line-height:1.25rem;font-weight:800}:host[data-size=m],:host[data-size=l]{font-size:.8125rem;line-height:1.25rem;font-weight:500}:host[data-size=m] .cost,:host[data-size=l] .cost{font-size:.9375rem;line-height:1.5rem;font-weight:800}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "directive", type: TuiBadge, selector: "tui-badge,[tuiBadge]", inputs: ["size"] }, { kind: "directive", type: i2.TuiHintDirective, selector: "[tuiHint]:not(ng-container):not(ng-template)", inputs: ["tuiHintContext", "tuiHintAppearance", "tuiHint"], outputs: ["tuiHintVisible"] }, { kind: "pipe", type: ScFormatDatePipe, name: "scFormatDate" }, { kind: "component", type: ScNoindexWrapperComponent, selector: "sc-noindex-wrapper" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27
|
-
}
|
|
28
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CostWithDiscountComponent, decorators: [{
|
|
29
|
-
type: Component,
|
|
30
|
-
args: [{ standalone: true, selector: 'sc-cost-with-discount', imports: [CommonModule, TuiBadge, ...TuiHint, ScFormatDatePipe, ScNoindexWrapperComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (product) {\n <div\n *ngIf=\"warehouseSelect$ | async as warehouseSelect\"\n class=\"flex flex-wrap items-center gap-x-2 gap-y-1\"\n >\n <div class=\"flex flex-wrap items-center gap-x-2 gap-y-1\">\n <span\n [class.text-tui-text-02]=\"!product.isWarehouseStockExist(warehouseSelect.id)\"\n class=\"cost\"\n >\n {{ product.costRubString }}\n </span>\n\n <sc-noindex-wrapper>\n <tui-badge\n *ngIf=\"product.discount as discount\"\n size=\"m\"\n [style.background]=\"'var(--tui-status-positive)'\"\n [tuiHint]=\"discountHint\"\n [tuiHintShowDelay]=\"100\"\n tuiHintDirection=\"top\"\n class=\"text-body-xs\"\n >\n <tui-badge\n *ngIf=\"product.discount as discount\"\n size=\"s\"\n [style.background]=\"'var(--tui-background-base)'\"\n class=\"text-body-xs-bold text-tui-text-02\"\n >\n {{ discount.percent }}%\n </tui-badge>\n\n @let expiredAt = product.discount.expiredAt | scFormatDate;\n\n <div class=\"flex gap-0.5\">\n <p class=\"flex line-through\">{{ product.discountCostString }}</p>\n <div *ngIf=\"expiredAt\">\u0434\u043E {{ expiredAt.substring(0, 5) }}</div>\n </div>\n <ng-template #discountHint>\n <div class=\"font-bold\">{{ product.discount.name }}</div>\n <div *ngIf=\"expiredAt\">\u0414\u0430\u0442\u0430 \u043E\u043A\u043E\u043D\u0447\u0430\u043D\u0438\u044F: {{ expiredAt }}</div>\n </ng-template>\n </tui-badge>\n </sc-noindex-wrapper>\n </div>\n\n <span\n *ngIf=\"!product.priceInRub\"\n class=\"font-extrabold text-tui-text-02\"\n >\n {{ product.costString }}\n </span>\n </div>\n}\n", styles: [":host tui-badge{--t-padding: .25rem !important}:host[data-size=s]{font-size:.6875rem;line-height:1rem;font-weight:500}:host[data-size=s] .cost{font-size:.8125rem;line-height:1.25rem;font-weight:800}:host[data-size=m],:host[data-size=l]{font-size:.8125rem;line-height:1.25rem;font-weight:500}:host[data-size=m] .cost,:host[data-size=l] .cost{font-size:.9375rem;line-height:1.5rem;font-weight:800}\n"] }]
|
|
31
|
-
}], propDecorators: { product: [{
|
|
32
|
-
type: Input
|
|
33
|
-
}], size: [{
|
|
34
|
-
type: Input
|
|
35
|
-
}, {
|
|
36
|
-
type: HostBinding,
|
|
37
|
-
args: ['attr.data-size']
|
|
38
|
-
}] } });
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29zdC13aXRoLWRpc2NvdW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9jYXRhbG9nL2Nvc3Qtd2l0aC1kaXNjb3VudC9jb3N0LXdpdGgtZGlzY291bnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2NhdGFsb2cvY29zdC13aXRoLWRpc2NvdW50L2Nvc3Qtd2l0aC1kaXNjb3VudC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRixPQUFPLEVBQTJCLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckYsT0FBTyxFQUFFLE9BQU8sRUFBc0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3pDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7OztBQUUvQzs7R0FFRztBQVNILE1BQU0sT0FBTyx5QkFBeUI7SUFSdEM7UUFTSTs7V0FFRztRQUNhLHFCQUFnQixHQUFvQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1FBUTNIOztXQUVHO1FBR0ksU0FBSSxHQUF3QixHQUFHLENBQUM7S0FDMUM7K0dBbEJZLHlCQUF5QjttR0FBekIseUJBQXlCLHdMQ3JCdEMsMnJFQXNEQSxzY0R0Q2MsWUFBWSx3TEFBRSxRQUFRLG1SQUFjLGdCQUFnQixxREFBRSx5QkFBeUI7OzRGQUtoRix5QkFBeUI7a0JBUnJDLFNBQVM7aUNBQ00sSUFBSSxZQUNOLHVCQUF1QixXQUN4QixDQUFDLFlBQVksRUFBRSxRQUFRLEVBQUUsR0FBRyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUseUJBQXlCLENBQUMsbUJBR3pFLHVCQUF1QixDQUFDLE1BQU07OEJBWXhDLE9BQU87c0JBRGIsS0FBSztnQkFRQyxJQUFJO3NCQUZWLEtBQUs7O3NCQUNMLFdBQVc7dUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBpbmplY3QsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTY0lXYXJlaG91c2UsIFNjUHJvZHVjdCwgU2NXYXJlaG91c2VTZXJ2aWNlIH0gZnJvbSAnQHNuYWJjZW50ci9jbGllbnQtY29yZSc7XG5pbXBvcnQgeyBUdWlIaW50LCBUdWlTaXplTCwgVHVpU2l6ZVMgfSBmcm9tICdAdGFpZ2EtdWkvY29yZSc7XG5pbXBvcnQgeyBUdWlCYWRnZSB9IGZyb20gJ0B0YWlnYS11aS9raXQnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTY05vaW5kZXhXcmFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbm9pbmRleC13cmFwcGVyJztcbmltcG9ydCB7IFNjRm9ybWF0RGF0ZVBpcGUgfSBmcm9tICcuLi8uLi9waXBlcyc7XG5cbi8qKlxuICog0JrQvtC80L/QvtC90LXQvdGCINGG0LXQvdGC0Ysg0YLQvtCy0LDRgNCwINGBINC+0YLQvtCx0YDQsNC20LXQvdC40LXQvCDRgdC60LjQtNC60LguXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdzYy1jb3N0LXdpdGgtZGlzY291bnQnLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFR1aUJhZGdlLCAuLi5UdWlIaW50LCBTY0Zvcm1hdERhdGVQaXBlLCBTY05vaW5kZXhXcmFwcGVyQ29tcG9uZW50XSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY29zdC13aXRoLWRpc2NvdW50LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vY29zdC13aXRoLWRpc2NvdW50LmNvbXBvbmVudC5zY3NzJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQ29zdFdpdGhEaXNjb3VudENvbXBvbmVudCB7XG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INC40LfQvNC10L3QtdC90LjRjyDQstGL0LHRgNCw0L3QvdC+0LPQviDRgdC60LvQsNC00LAuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IHdhcmVob3VzZVNlbGVjdCQ6IE9ic2VydmFibGU8U2NJV2FyZWhvdXNlIHwgbnVsbD4gPSBpbmplY3QoU2NXYXJlaG91c2VTZXJ2aWNlKS5nZXRXYXJlaG91c2VTZWxlY3RDaGFuZ2UkKCk7XG5cbiAgICAvKipcbiAgICAgKiDQntCx0YrQtdC60YIg0YLQvtCy0LDRgNCwLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHByb2R1Y3Q6IFNjUHJvZHVjdDtcblxuICAgIC8qKlxuICAgICAqINCg0LDQt9C80LXRgCDQutC+0LzQv9C+0L3QtdC90YLQsC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLXNpemUnKVxuICAgIHB1YmxpYyBzaXplOiBUdWlTaXplUyB8IFR1aVNpemVMID0gJ20nO1xufVxuIiwiQGlmIChwcm9kdWN0KSB7XG4gICAgPGRpdlxuICAgICAgICAqbmdJZj1cIndhcmVob3VzZVNlbGVjdCQgfCBhc3luYyBhcyB3YXJlaG91c2VTZWxlY3RcIlxuICAgICAgICBjbGFzcz1cImZsZXggZmxleC13cmFwIGl0ZW1zLWNlbnRlciBnYXAteC0yIGdhcC15LTFcIlxuICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC13cmFwIGl0ZW1zLWNlbnRlciBnYXAteC0yIGdhcC15LTFcIj5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgW2NsYXNzLnRleHQtdHVpLXRleHQtMDJdPVwiIXByb2R1Y3QuaXNXYXJlaG91c2VTdG9ja0V4aXN0KHdhcmVob3VzZVNlbGVjdC5pZClcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY29zdFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgcHJvZHVjdC5jb3N0UnViU3RyaW5nIH19XG4gICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgIDxzYy1ub2luZGV4LXdyYXBwZXI+XG4gICAgICAgICAgICAgICAgPHR1aS1iYWRnZVxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInByb2R1Y3QuZGlzY291bnQgYXMgZGlzY291bnRcIlxuICAgICAgICAgICAgICAgICAgICBzaXplPVwibVwiXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cIid2YXIoLS10dWktc3RhdHVzLXBvc2l0aXZlKSdcIlxuICAgICAgICAgICAgICAgICAgICBbdHVpSGludF09XCJkaXNjb3VudEhpbnRcIlxuICAgICAgICAgICAgICAgICAgICBbdHVpSGludFNob3dEZWxheV09XCIxMDBcIlxuICAgICAgICAgICAgICAgICAgICB0dWlIaW50RGlyZWN0aW9uPVwidG9wXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LWJvZHkteHNcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHR1aS1iYWRnZVxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJwcm9kdWN0LmRpc2NvdW50IGFzIGRpc2NvdW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cIid2YXIoLS10dWktYmFja2dyb3VuZC1iYXNlKSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LWJvZHkteHMtYm9sZCB0ZXh0LXR1aS10ZXh0LTAyXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgZGlzY291bnQucGVyY2VudCB9fSVcbiAgICAgICAgICAgICAgICAgICAgPC90dWktYmFkZ2U+XG5cbiAgICAgICAgICAgICAgICAgICAgQGxldCBleHBpcmVkQXQgPSBwcm9kdWN0LmRpc2NvdW50LmV4cGlyZWRBdCB8IHNjRm9ybWF0RGF0ZTtcblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBnYXAtMC41XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImZsZXggbGluZS10aHJvdWdoXCI+e3sgcHJvZHVjdC5kaXNjb3VudENvc3RTdHJpbmcgfX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZXhwaXJlZEF0XCI+0LTQviB7eyBleHBpcmVkQXQuc3Vic3RyaW5nKDAsIDUpIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2Rpc2NvdW50SGludD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb250LWJvbGRcIj57eyBwcm9kdWN0LmRpc2NvdW50Lm5hbWUgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJleHBpcmVkQXRcIj7QlNCw0YLQsCDQvtC60L7QvdGH0LDQvdC40Y86IHt7IGV4cGlyZWRBdCB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvdHVpLWJhZGdlPlxuICAgICAgICAgICAgPC9zYy1ub2luZGV4LXdyYXBwZXI+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgICAqbmdJZj1cIiFwcm9kdWN0LnByaWNlSW5SdWJcIlxuICAgICAgICAgICAgY2xhc3M9XCJmb250LWV4dHJhYm9sZCB0ZXh0LXR1aS10ZXh0LTAyXCJcbiAgICAgICAgPlxuICAgICAgICAgICAge3sgcHJvZHVjdC5jb3N0U3RyaW5nIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbn1cbiJdfQ==
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import { AsyncPipe } from '@angular/common';
|
|
2
|
-
import { Component, inject, input } from '@angular/core';
|
|
3
|
-
import { WA_WINDOW } from '@ng-web-apis/common';
|
|
4
|
-
import { ScCatalogService, ScMimeTypes } from '@snabcentr/client-core';
|
|
5
|
-
import { TuiAppearance, TuiButton, TuiHint, TuiIcons, TuiWithAppearance, TuiWithIcons } from '@taiga-ui/core';
|
|
6
|
-
import { TuiButtonLoading } from '@taiga-ui/kit';
|
|
7
|
-
import { share, startWith, Subject, switchMap, tap } from 'rxjs';
|
|
8
|
-
import * as i0 from "@angular/core";
|
|
9
|
-
import * as i1 from "@taiga-ui/core";
|
|
10
|
-
/**
|
|
11
|
-
* Компонент скачивания каталога.
|
|
12
|
-
*/
|
|
13
|
-
export class ScDownloadPriceListComponent {
|
|
14
|
-
constructor() {
|
|
15
|
-
/**
|
|
16
|
-
* Идентификатор категории, для которой нужно скачать прайс.
|
|
17
|
-
*/
|
|
18
|
-
this.categoryId = input();
|
|
19
|
-
/**
|
|
20
|
-
* {@link Subject} события скачивания цен каталога.
|
|
21
|
-
*/
|
|
22
|
-
this.onDownload = new Subject();
|
|
23
|
-
/**
|
|
24
|
-
* {@link Observable} запроса на скачивание цен каталога.
|
|
25
|
-
*/
|
|
26
|
-
this.request$ = this.onDownload.pipe(switchMap((type) => this.catalogService.downloadPrice$(type, this.categoryId()).pipe(tap((blob) => {
|
|
27
|
-
const priceWindow = type === ScMimeTypes.pdf ? this.window.open('/', '_blank', 'rel="nofollow noreferrer"') : this.window;
|
|
28
|
-
(priceWindow ?? this.window).location.assign(this.window.URL.createObjectURL(blob));
|
|
29
|
-
}), startWith(type))), share(),
|
|
30
|
-
// eslint-disable-next-line unicorn/no-useless-undefined
|
|
31
|
-
startWith(undefined));
|
|
32
|
-
/**
|
|
33
|
-
* Текст подсказки при скачивании.
|
|
34
|
-
*/
|
|
35
|
-
this.pdfLoadingHint = 'Скачивание каталога может занять некоторое время...';
|
|
36
|
-
/**
|
|
37
|
-
* Сервис для работы с каталогом.
|
|
38
|
-
*/
|
|
39
|
-
this.catalogService = inject(ScCatalogService);
|
|
40
|
-
/**
|
|
41
|
-
* Объект окна.
|
|
42
|
-
*/
|
|
43
|
-
this.window = inject(WA_WINDOW);
|
|
44
|
-
/**
|
|
45
|
-
* Перечисление MIME-типов.
|
|
46
|
-
*/
|
|
47
|
-
this.mimeTypes = ScMimeTypes;
|
|
48
|
-
}
|
|
49
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScDownloadPriceListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
50
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: ScDownloadPriceListComponent, isStandalone: true, selector: "sc-download-price-list", inputs: { categoryId: { classPropertyName: "categoryId", publicName: "categoryId", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@let request = request$ | async;\n@let pdfLoading = request === mimeTypes.pdf;\n@let csvLoading = request === mimeTypes.csv;\n\n<div class=\"dropdown flex flex-col gap-2 p-4\">\n <button\n tuiButton\n [loading]=\"pdfLoading\"\n (click)=\"onDownload.next(mimeTypes.pdf)\"\n iconStart=\"@tui.sc.file-p\"\n size=\"s\"\n [tuiHint]=\"pdfLoading ? pdfLoadingHint : null\"\n appearance=\"mono\"\n >\n \u0421\u043A\u0430\u0447\u0430\u0442\u044C \u043F\u0440\u0430\u0439\u0441 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 PDF\n </button>\n <button\n tuiButton\n [loading]=\"csvLoading\"\n (click)=\"onDownload.next(mimeTypes.csv)\"\n iconStart=\"@tui.sc.file-x\"\n size=\"s\"\n appearance=\"mono\"\n >\n \u0421\u043A\u0430\u0447\u0430\u0442\u044C \u043F\u0440\u0430\u0439\u0441 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 CSV\n </button>\n</div>\n", dependencies: [{ kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "component", type: TuiButtonLoading, selector: "[tuiButton][loading],[tuiIconButton][loading]", inputs: ["size", "loading"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: i1.TuiHintDirective, selector: "[tuiHint]:not(ng-container):not(ng-template)", inputs: ["tuiHintContext", "tuiHintAppearance", "tuiHint"], outputs: ["tuiHintVisible"] }] }); }
|
|
51
|
-
}
|
|
52
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScDownloadPriceListComponent, decorators: [{
|
|
53
|
-
type: Component,
|
|
54
|
-
args: [{ standalone: true, selector: 'sc-download-price-list', imports: [TuiAppearance, TuiWithAppearance, TuiIcons, TuiWithIcons, TuiButton, TuiButtonLoading, AsyncPipe, TuiHint], template: "@let request = request$ | async;\n@let pdfLoading = request === mimeTypes.pdf;\n@let csvLoading = request === mimeTypes.csv;\n\n<div class=\"dropdown flex flex-col gap-2 p-4\">\n <button\n tuiButton\n [loading]=\"pdfLoading\"\n (click)=\"onDownload.next(mimeTypes.pdf)\"\n iconStart=\"@tui.sc.file-p\"\n size=\"s\"\n [tuiHint]=\"pdfLoading ? pdfLoadingHint : null\"\n appearance=\"mono\"\n >\n \u0421\u043A\u0430\u0447\u0430\u0442\u044C \u043F\u0440\u0430\u0439\u0441 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 PDF\n </button>\n <button\n tuiButton\n [loading]=\"csvLoading\"\n (click)=\"onDownload.next(mimeTypes.csv)\"\n iconStart=\"@tui.sc.file-x\"\n size=\"s\"\n appearance=\"mono\"\n >\n \u0421\u043A\u0430\u0447\u0430\u0442\u044C \u043F\u0440\u0430\u0439\u0441 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 CSV\n </button>\n</div>\n" }]
|
|
55
|
-
}] });
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtZG93bmxvYWQtcHJpY2UtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvY2F0YWxvZy9kb3dubG9hZC1wcmljZS1saXN0L3NjLWRvd25sb2FkLXByaWNlLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2NhdGFsb2cvZG93bmxvYWQtcHJpY2UtbGlzdC9zYy1kb3dubG9hZC1wcmljZS1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBRWpFOztHQUVHO0FBT0gsTUFBTSxPQUFPLDRCQUE0QjtJQU56QztRQU9JOztXQUVHO1FBQ0ksZUFBVSxHQUFHLEtBQUssRUFBVSxDQUFDO1FBRXBDOztXQUVHO1FBQ2dCLGVBQVUsR0FBeUIsSUFBSSxPQUFPLEVBQWUsQ0FBQztRQUVqRjs7V0FFRztRQUNnQixhQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQzlDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQ2YsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDNUQsR0FBRyxDQUFDLENBQUMsSUFBVSxFQUFFLEVBQUU7WUFDZixNQUFNLFdBQVcsR0FBRyxJQUFJLEtBQUssV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSwyQkFBMkIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQzFILENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3hGLENBQUMsQ0FBQyxFQUNGLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FDbEIsQ0FDSixFQUNELEtBQUssRUFBRTtRQUNQLHdEQUF3RDtRQUN4RCxTQUFTLENBQUMsU0FBUyxDQUFDLENBQ3ZCLENBQUM7UUFFRjs7V0FFRztRQUNnQixtQkFBYyxHQUFXLHFEQUFxRCxDQUFDO1FBRWxHOztXQUVHO1FBQ2MsbUJBQWMsR0FBcUIsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFN0U7O1dBRUc7UUFDYyxXQUFNLEdBQStCLE1BQU0sQ0FBNkIsU0FBUyxDQUFDLENBQUM7UUFFcEc7O1dBRUc7UUFDZ0IsY0FBUyxHQUF1QixXQUFXLENBQUM7S0FDbEU7K0dBaERZLDRCQUE0QjttR0FBNUIsNEJBQTRCLHFPQ2pCekMsODhCQTJCQSw0Q0Rad0UsU0FBUyxvSUFBRSxnQkFBZ0Isa0hBQUUsU0FBUzs7NEZBRWpHLDRCQUE0QjtrQkFOeEMsU0FBUztpQ0FDTSxJQUFJLFlBQ04sd0JBQXdCLFdBRXpCLENBQUMsYUFBYSxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBc3luY1BpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBpbmplY3QsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBXQV9XSU5ET1cgfSBmcm9tICdAbmctd2ViLWFwaXMvY29tbW9uJztcbmltcG9ydCB7IFNjQ2F0YWxvZ1NlcnZpY2UsIFNjTWltZVR5cGVzIH0gZnJvbSAnQHNuYWJjZW50ci9jbGllbnQtY29yZSc7XG5pbXBvcnQgeyBUdWlBcHBlYXJhbmNlLCBUdWlCdXR0b24sIFR1aUhpbnQsIFR1aUljb25zLCBUdWlXaXRoQXBwZWFyYW5jZSwgVHVpV2l0aEljb25zIH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHsgVHVpQnV0dG9uTG9hZGluZyB9IGZyb20gJ0B0YWlnYS11aS9raXQnO1xuaW1wb3J0IHsgc2hhcmUsIHN0YXJ0V2l0aCwgU3ViamVjdCwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiDQmtC+0LzQv9C+0L3QtdC90YIg0YHQutCw0YfQuNCy0LDQvdC40Y8g0LrQsNGC0LDQu9C+0LPQsC5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ3NjLWRvd25sb2FkLXByaWNlLWxpc3QnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zYy1kb3dubG9hZC1wcmljZS1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBpbXBvcnRzOiBbVHVpQXBwZWFyYW5jZSwgVHVpV2l0aEFwcGVhcmFuY2UsIFR1aUljb25zLCBUdWlXaXRoSWNvbnMsIFR1aUJ1dHRvbiwgVHVpQnV0dG9uTG9hZGluZywgQXN5bmNQaXBlLCBUdWlIaW50XSxcbn0pXG5leHBvcnQgY2xhc3MgU2NEb3dubG9hZFByaWNlTGlzdENvbXBvbmVudCB7XG4gICAgLyoqXG4gICAgICog0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LrQsNGC0LXQs9C+0YDQuNC4LCDQtNC70Y8g0LrQvtGC0L7RgNC+0Lkg0L3Rg9C20L3QviDRgdC60LDRh9Cw0YLRjCDQv9GA0LDQudGBLlxuICAgICAqL1xuICAgIHB1YmxpYyBjYXRlZ29yeUlkID0gaW5wdXQ8bnVtYmVyPigpO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIFN1YmplY3R9INGB0L7QsdGL0YLQuNGPINGB0LrQsNGH0LjQstCw0L3QuNGPINGG0LXQvSDQutCw0YLQsNC70L7Qs9CwLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBvbkRvd25sb2FkOiBTdWJqZWN0PFNjTWltZVR5cGVzPiA9IG5ldyBTdWJqZWN0PFNjTWltZVR5cGVzPigpO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INC30LDQv9GA0L7RgdCwINC90LAg0YHQutCw0YfQuNCy0LDQvdC40LUg0YbQtdC9INC60LDRgtCw0LvQvtCz0LAuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHJlcXVlc3QkID0gdGhpcy5vbkRvd25sb2FkLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgodHlwZSkgPT5cbiAgICAgICAgICAgIHRoaXMuY2F0YWxvZ1NlcnZpY2UuZG93bmxvYWRQcmljZSQodHlwZSwgdGhpcy5jYXRlZ29yeUlkKCkpLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFwKChibG9iOiBCbG9iKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByaWNlV2luZG93ID0gdHlwZSA9PT0gU2NNaW1lVHlwZXMucGRmID8gdGhpcy53aW5kb3cub3BlbignLycsICdfYmxhbmsnLCAncmVsPVwibm9mb2xsb3cgbm9yZWZlcnJlclwiJykgOiB0aGlzLndpbmRvdztcbiAgICAgICAgICAgICAgICAgICAgKHByaWNlV2luZG93ID8/IHRoaXMud2luZG93KS5sb2NhdGlvbi5hc3NpZ24odGhpcy53aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKSk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgc3RhcnRXaXRoKHR5cGUpXG4gICAgICAgICAgICApXG4gICAgICAgICksXG4gICAgICAgIHNoYXJlKCksXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL25vLXVzZWxlc3MtdW5kZWZpbmVkXG4gICAgICAgIHN0YXJ0V2l0aCh1bmRlZmluZWQpXG4gICAgKTtcblxuICAgIC8qKlxuICAgICAqINCi0LXQutGB0YIg0L/QvtC00YHQutCw0LfQutC4INC/0YDQuCDRgdC60LDRh9C40LLQsNC90LjQuC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcGRmTG9hZGluZ0hpbnQ6IHN0cmluZyA9ICfQodC60LDRh9C40LLQsNC90LjQtSDQutCw0YLQsNC70L7Qs9CwINC80L7QttC10YIg0LfQsNC90Y/RgtGMINC90LXQutC+0YLQvtGA0L7QtSDQstGA0LXQvNGPLi4uJztcblxuICAgIC8qKlxuICAgICAqINCh0LXRgNCy0LjRgSDQtNC70Y8g0YDQsNCx0L7RgtGLINGBINC60LDRgtCw0LvQvtCz0L7QvC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhdGFsb2dTZXJ2aWNlOiBTY0NhdGFsb2dTZXJ2aWNlID0gaW5qZWN0KFNjQ2F0YWxvZ1NlcnZpY2UpO1xuXG4gICAgLyoqXG4gICAgICog0J7QsdGK0LXQutGCINC+0LrQvdCwLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgd2luZG93OiBXaW5kb3cgJiB0eXBlb2YgZ2xvYmFsVGhpcyA9IGluamVjdDxXaW5kb3cgJiB0eXBlb2YgZ2xvYmFsVGhpcz4oV0FfV0lORE9XKTtcblxuICAgIC8qKlxuICAgICAqINCf0LXRgNC10YfQuNGB0LvQtdC90LjQtSBNSU1FLdGC0LjQv9C+0LIuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IG1pbWVUeXBlczogdHlwZW9mIFNjTWltZVR5cGVzID0gU2NNaW1lVHlwZXM7XG59XG4iLCJAbGV0IHJlcXVlc3QgPSByZXF1ZXN0JCB8IGFzeW5jO1xuQGxldCBwZGZMb2FkaW5nID0gcmVxdWVzdCA9PT0gbWltZVR5cGVzLnBkZjtcbkBsZXQgY3N2TG9hZGluZyA9IHJlcXVlc3QgPT09IG1pbWVUeXBlcy5jc3Y7XG5cbjxkaXYgY2xhc3M9XCJkcm9wZG93biBmbGV4IGZsZXgtY29sIGdhcC0yIHAtNFwiPlxuICAgIDxidXR0b25cbiAgICAgICAgdHVpQnV0dG9uXG4gICAgICAgIFtsb2FkaW5nXT1cInBkZkxvYWRpbmdcIlxuICAgICAgICAoY2xpY2spPVwib25Eb3dubG9hZC5uZXh0KG1pbWVUeXBlcy5wZGYpXCJcbiAgICAgICAgaWNvblN0YXJ0PVwiQHR1aS5zYy5maWxlLXBcIlxuICAgICAgICBzaXplPVwic1wiXG4gICAgICAgIFt0dWlIaW50XT1cInBkZkxvYWRpbmcgPyBwZGZMb2FkaW5nSGludCA6IG51bGxcIlxuICAgICAgICBhcHBlYXJhbmNlPVwibW9ub1wiXG4gICAgPlxuICAgICAgICDQodC60LDRh9Cw0YLRjCDQv9GA0LDQudGBINCyINGE0L7RgNC80LDRgtC1IFBERlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgICAgdHVpQnV0dG9uXG4gICAgICAgIFtsb2FkaW5nXT1cImNzdkxvYWRpbmdcIlxuICAgICAgICAoY2xpY2spPVwib25Eb3dubG9hZC5uZXh0KG1pbWVUeXBlcy5jc3YpXCJcbiAgICAgICAgaWNvblN0YXJ0PVwiQHR1aS5zYy5maWxlLXhcIlxuICAgICAgICBzaXplPVwic1wiXG4gICAgICAgIGFwcGVhcmFuY2U9XCJtb25vXCJcbiAgICA+XG4gICAgICAgINCh0LrQsNGH0LDRgtGMINC/0YDQsNC50YEg0LIg0YTQvtGA0LzQsNGC0LUgQ1NWXG4gICAgPC9idXR0b24+XG48L2Rpdj5cbiJdfQ==
|