@snabcentr/client-ui 4.14.9 → 4.14.21
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/accordion/index.d.ts +3 -0
- package/accordion/sc-accordion-content.directive.d.ts +9 -0
- package/accordion/sc-accordion.component.d.ts +56 -0
- package/accordion/sc-accordion.module.d.ts +15 -0
- package/auth/enums/auth-method.d.ts +13 -0
- package/auth/index.d.ts +8 -0
- package/auth/interfaces/index.d.ts +2 -0
- package/auth/interfaces/sc-bank-account-form-group.d.ts +11 -0
- package/auth/interfaces/sc-contact-form-group.d.ts +10 -0
- package/auth/sc-auth.module.d.ts +27 -0
- package/auth/sc-sign-in-form/sc-sign-in-form-by-email/sc-sign-in-form-by-email.component.d.ts +55 -0
- package/auth/sc-sign-in-form/sc-sign-in-form-by-phone/sc-sign-in-form-by-phone.component.d.ts +45 -0
- package/auth/sc-sign-in-form/sc-sign-in-form.component.d.ts +53 -0
- package/auth/sc-simple-sign-up-form/sc-simple-sign-up-form.component.d.ts +113 -0
- package/auth/sign-up-form/sc-sign-up-form.component.d.ts +172 -0
- package/banner/index.d.ts +2 -0
- package/banner/sc-banner.component.d.ts +108 -0
- package/banner/sc-banner.module.d.ts +17 -0
- package/brands-list/index.d.ts +3 -0
- package/brands-list/sc-brand-list-item.d.ts +25 -0
- package/brands-list/sc-brands-list.component.d.ts +13 -0
- package/brands-list/sc-brands-list.module.d.ts +12 -0
- package/cart/add-or-editing-cart-item-dialog/add-or-editing-cart-item-form/sc-add-or-editing-cart-item-form.component.d.ts +106 -0
- package/cart/add-or-editing-cart-item-dialog/index.d.ts +2 -0
- package/cart/add-or-editing-cart-item-dialog/sc-add-or-editing-cart-item-dialog.component.d.ts +49 -0
- package/cart/index.d.ts +2 -0
- package/cart/sc-cart-add-products-from-csv-dialog/sc-cart-add-products-from-csv-dialog.component.d.ts +62 -0
- package/catalog/catalog-filters/collapsible/sc-catalog-filter-collapsible.component.d.ts +47 -0
- package/catalog/catalog-filters/index.d.ts +4 -0
- package/catalog/catalog-filters/sc-catalog-filters.component.d.ts +199 -0
- package/catalog/catalog-filters/tokens/sc-catalog-products-filters.d.ts +7 -0
- package/catalog/catalog-filters/tokens/sc-catalog-show-products-recursively.d.ts +5 -0
- package/catalog/category-card/sc-category-card.component.d.ts +76 -0
- package/catalog/cost-with-discount/cost-with-discount.component.d.ts +23 -0
- package/catalog/download-price-list/sc-download-price-list.component.d.ts +38 -0
- package/catalog/hover-image-carousel/sc-hover-image-carousel.component.d.ts +48 -0
- package/catalog/index.d.ts +15 -0
- package/catalog/input-quantity/sc-input-quantity.component.d.ts +82 -0
- package/catalog/notify-when-in-stock-dialog/index.d.ts +2 -0
- package/catalog/notify-when-in-stock-dialog/sc-notify-when-in-stock-dialog.component.d.ts +90 -0
- package/catalog/notify-when-in-stock-dialog/sc-product-in-all-warehouses.pipe.d.ts +22 -0
- package/catalog/price-card/sc-price-card.component.d.ts +18 -0
- package/catalog/price-card-inline/sc-price-card-inline.component.d.ts +10 -0
- package/catalog/price-history/sc-price-history.component.d.ts +92 -0
- package/catalog/price-list-pagination/sc-price-list-pagination.component.d.ts +40 -0
- package/catalog/price-warehouse-stock/sc-price-warehouse-stock.component.d.ts +47 -0
- package/catalog/sc-catalog.module.d.ts +29 -0
- package/catalog/sc-favorite-button/sc-favorite-button.component.d.ts +25 -0
- package/catalog/seo-tags/sc-seo-tags.component.d.ts +20 -0
- package/configurators/index.d.ts +3 -0
- package/configurators/models/index.d.ts +3 -0
- package/configurators/models/sandwich/sc-i-configurator-search-product-sandwich.d.ts +22 -0
- package/configurators/models/sandwich/sc-i-sandwich-settings.d.ts +18 -0
- package/configurators/models/sandwich_m2/sc-i-sandwich-m2-settings.d.ts +18 -0
- package/configurators/sandwich/index.d.ts +3 -0
- package/configurators/sandwich/sandwich-skeleton/sc-sandwich-skeleton.component.d.ts +8 -0
- package/configurators/sandwich/sc-i-new-cart-item-sandwich.d.ts +14 -0
- package/configurators/sandwich/sc-sandwich.component.d.ts +186 -0
- package/configurators/sandwich_m2/index.d.ts +4 -0
- package/configurators/sandwich_m2/sandwich-m2-skeleton/sc-sandwich-m2-skeleton.component.d.ts +8 -0
- package/configurators/sandwich_m2/sc-i-new-cart-item-sandwich-m2.d.ts +23 -0
- package/configurators/sandwich_m2/sc-sandwich-m2-item-submit-state.d.ts +13 -0
- package/configurators/sandwich_m2/sc-sandwich-m2.component.d.ts +275 -0
- package/contacts/add-contact-dialog/sc-add-contact-dialog.component.d.ts +49 -0
- package/contacts/contacts-accordion/sc-contacts-accordion.component.d.ts +23 -0
- package/contacts/index.d.ts +7 -0
- package/contacts/manager-card/sc-manager-card.component.d.ts +22 -0
- package/contacts/manager-card-push/sc-manager-card-push.component.d.ts +18 -0
- package/contacts/new-contact-form/sc-new-contact-form.component.d.ts +28 -0
- package/contacts/sc-contacts.module.d.ts +28 -0
- package/contacts/tokens/index.d.ts +2 -0
- package/contacts/tokens/sc-manager-qr-handler.token.d.ts +6 -0
- package/contacts/tokens/sc-show-help-notification-in-phone-input.token.d.ts +5 -0
- package/contragents/add-contragent-bank-account-dialog/sc-add-contragent-bank-account-dialog.component.d.ts +49 -0
- package/contragents/add-contragent-dialog/sc-add-contragent-dialog.component.d.ts +158 -0
- package/contragents/contragents-accordion/contragents-accordion-item/sc-contragents-accordion-item.component.d.ts +66 -0
- package/contragents/contragents-accordion/sc-contragents-accordion.component.d.ts +49 -0
- package/contragents/index.d.ts +7 -0
- package/contragents/new-contragent-bank-account-form/sc-new-contragent-bank-account-form.component.d.ts +64 -0
- package/contragents/new-contragent-form/sc-new-contragent-form.component.d.ts +129 -0
- package/contragents/sc-contragents.module.d.ts +28 -0
- package/delivery-address/add-delivery-address-dialog/sc-add-delivery-address-dialog.component.d.ts +148 -0
- package/delivery-address/delivery-address-accordion/delivery-address-accordion-item/sc-delivery-address-accordion-item.component.d.ts +50 -0
- package/delivery-address/delivery-address-accordion/sc-delivery-address-accordion.component.d.ts +49 -0
- package/delivery-address/index.d.ts +4 -0
- package/delivery-address/sc-delivery-address.module.d.ts +25 -0
- package/dialogs/index.d.ts +1 -0
- package/dialogs/sc-resource-preview/sc-resource-preview.component.d.ts +42 -0
- package/directives/abstract-price-card/abstract-sc-price-card.directive.d.ts +136 -0
- package/directives/address-quality/sc-address-quality.directive.d.ts +23 -0
- package/directives/address-quality/sc-address-quality.service.d.ts +122 -0
- package/directives/address-quality/sc-i-address-quality-state.d.ts +14 -0
- package/directives/index.d.ts +11 -0
- package/directives/links/index.d.ts +4 -0
- package/directives/links/sc-email-link.directive.d.ts +25 -0
- package/directives/links/sc-link-location.d.ts +5 -0
- package/directives/links/sc-links.d.ts +7 -0
- package/directives/links/sc-tel-link.directive.d.ts +40 -0
- package/directives/next-input-focus/sc-next-input-focus.directive.d.ts +27 -0
- package/directives/next-input-focus/sc-next-input-focus.module.d.ts +10 -0
- package/directives/print/sc-print.directive.d.ts +21 -0
- package/directives/sc-date-value-transformer.directive.d.ts +8 -0
- package/directives/sc-focus-first-invalid-field.directive.d.ts +30 -0
- package/directives/sc-null-on-empty-value-transformer.directive.d.ts +8 -0
- package/directives/select-on-focusin/sc-select-on-focusin.directive.d.ts +14 -0
- package/directives/terminal-link/sc-terminal-link.directive.d.ts +34 -0
- package/error-handler/consts/error-change-handler.providers.d.ts +6 -0
- package/error-handler/error-block-status/error-block-status.component.d.ts +55 -0
- package/error-handler/index.d.ts +4 -0
- package/error-handler/interfaces/i-block-error.d.ts +17 -0
- package/error-handler/sc-error-handler.component.d.ts +40 -0
- package/esm2022/accordion/index.mjs +4 -0
- package/esm2022/accordion/sc-accordion-content.directive.mjs +17 -0
- package/esm2022/accordion/sc-accordion.component.mjs +92 -0
- package/esm2022/accordion/sc-accordion.module.mjs +26 -0
- package/esm2022/auth/enums/auth-method.mjs +15 -0
- package/esm2022/auth/index.mjs +9 -0
- package/esm2022/auth/interfaces/index.mjs +3 -0
- package/esm2022/auth/interfaces/sc-bank-account-form-group.mjs +2 -0
- package/esm2022/auth/interfaces/sc-contact-form-group.mjs +2 -0
- package/esm2022/auth/sc-auth.module.mjs +103 -0
- package/esm2022/auth/sc-sign-in-form/sc-sign-in-form-by-email/sc-sign-in-form-by-email.component.mjs +100 -0
- package/esm2022/auth/sc-sign-in-form/sc-sign-in-form-by-phone/sc-sign-in-form-by-phone.component.mjs +81 -0
- package/esm2022/auth/sc-sign-in-form/sc-sign-in-form.component.mjs +89 -0
- package/esm2022/auth/sc-simple-sign-up-form/sc-simple-sign-up-form.component.mjs +203 -0
- package/esm2022/auth/sign-up-form/sc-sign-up-form.component.mjs +345 -0
- package/esm2022/banner/index.mjs +3 -0
- package/esm2022/banner/sc-banner.component.mjs +176 -0
- package/esm2022/banner/sc-banner.module.mjs +29 -0
- package/esm2022/brands-list/index.mjs +4 -0
- package/esm2022/brands-list/sc-brand-list-item.mjs +2 -0
- package/esm2022/brands-list/sc-brands-list.component.mjs +24 -0
- package/esm2022/brands-list/sc-brands-list.module.mjs +22 -0
- package/esm2022/cart/add-or-editing-cart-item-dialog/add-or-editing-cart-item-form/sc-add-or-editing-cart-item-form.component.mjs +233 -0
- package/esm2022/cart/add-or-editing-cart-item-dialog/index.mjs +3 -0
- package/esm2022/cart/add-or-editing-cart-item-dialog/sc-add-or-editing-cart-item-dialog.component.mjs +75 -0
- package/esm2022/cart/index.mjs +3 -0
- package/esm2022/cart/sc-cart-add-products-from-csv-dialog/sc-cart-add-products-from-csv-dialog.component.mjs +110 -0
- package/esm2022/catalog/catalog-filters/collapsible/sc-catalog-filter-collapsible.component.mjs +59 -0
- package/esm2022/catalog/catalog-filters/index.mjs +5 -0
- package/esm2022/catalog/catalog-filters/sc-catalog-filters.component.mjs +451 -0
- package/esm2022/catalog/catalog-filters/tokens/sc-catalog-products-filters.mjs +10 -0
- package/esm2022/catalog/catalog-filters/tokens/sc-catalog-show-products-recursively.mjs +6 -0
- package/esm2022/catalog/category-card/sc-category-card.component.mjs +102 -0
- package/esm2022/catalog/cost-with-discount/cost-with-discount.component.mjs +38 -0
- package/esm2022/catalog/download-price-list/sc-download-price-list.component.mjs +56 -0
- package/esm2022/catalog/hover-image-carousel/sc-hover-image-carousel.component.mjs +76 -0
- package/esm2022/catalog/index.mjs +16 -0
- package/esm2022/catalog/input-quantity/sc-input-quantity.component.mjs +190 -0
- package/esm2022/catalog/notify-when-in-stock-dialog/index.mjs +3 -0
- package/esm2022/catalog/notify-when-in-stock-dialog/sc-notify-when-in-stock-dialog.component.mjs +173 -0
- package/esm2022/catalog/notify-when-in-stock-dialog/sc-product-in-all-warehouses.pipe.mjs +35 -0
- package/esm2022/catalog/price-card/sc-price-card.component.mjs +71 -0
- package/esm2022/catalog/price-card-inline/sc-price-card-inline.component.mjs +54 -0
- package/esm2022/catalog/price-history/sc-price-history.component.mjs +144 -0
- package/esm2022/catalog/price-list-pagination/sc-price-list-pagination.component.mjs +65 -0
- package/esm2022/catalog/price-warehouse-stock/sc-price-warehouse-stock.component.mjs +61 -0
- package/esm2022/catalog/sc-catalog.module.mjs +128 -0
- package/esm2022/catalog/sc-favorite-button/sc-favorite-button.component.mjs +42 -0
- package/esm2022/catalog/seo-tags/sc-seo-tags.component.mjs +25 -0
- package/esm2022/configurators/index.mjs +4 -0
- package/esm2022/configurators/models/index.mjs +4 -0
- package/esm2022/configurators/models/sandwich/sc-i-configurator-search-product-sandwich.mjs +2 -0
- package/esm2022/configurators/models/sandwich/sc-i-sandwich-settings.mjs +2 -0
- package/esm2022/configurators/models/sandwich_m2/sc-i-sandwich-m2-settings.mjs +2 -0
- package/esm2022/configurators/sandwich/index.mjs +4 -0
- package/esm2022/configurators/sandwich/sandwich-skeleton/sc-sandwich-skeleton.component.mjs +14 -0
- package/esm2022/configurators/sandwich/sc-i-new-cart-item-sandwich.mjs +2 -0
- package/esm2022/configurators/sandwich/sc-sandwich.component.mjs +387 -0
- package/esm2022/configurators/sandwich_m2/index.mjs +5 -0
- package/esm2022/configurators/sandwich_m2/sandwich-m2-skeleton/sc-sandwich-m2-skeleton.component.mjs +14 -0
- package/esm2022/configurators/sandwich_m2/sc-i-new-cart-item-sandwich-m2.mjs +2 -0
- package/esm2022/configurators/sandwich_m2/sc-sandwich-m2-item-submit-state.mjs +5 -0
- package/esm2022/configurators/sandwich_m2/sc-sandwich-m2.component.mjs +569 -0
- package/esm2022/contacts/add-contact-dialog/sc-add-contact-dialog.component.mjs +91 -0
- package/esm2022/contacts/contacts-accordion/sc-contacts-accordion.component.mjs +37 -0
- package/esm2022/contacts/index.mjs +8 -0
- package/esm2022/contacts/manager-card/sc-manager-card.component.mjs +58 -0
- package/esm2022/contacts/manager-card-push/sc-manager-card-push.component.mjs +28 -0
- package/esm2022/contacts/new-contact-form/sc-new-contact-form.component.mjs +38 -0
- package/esm2022/contacts/sc-contacts.module.mjs +92 -0
- package/esm2022/contacts/tokens/index.mjs +3 -0
- package/esm2022/contacts/tokens/sc-manager-qr-handler.token.mjs +25 -0
- package/esm2022/contacts/tokens/sc-show-help-notification-in-phone-input.token.mjs +9 -0
- package/esm2022/contragents/add-contragent-bank-account-dialog/sc-add-contragent-bank-account-dialog.component.mjs +81 -0
- package/esm2022/contragents/add-contragent-dialog/sc-add-contragent-dialog.component.mjs +266 -0
- package/esm2022/contragents/contragents-accordion/contragents-accordion-item/sc-contragents-accordion-item.component.mjs +79 -0
- package/esm2022/contragents/contragents-accordion/sc-contragents-accordion.component.mjs +68 -0
- package/esm2022/contragents/index.mjs +8 -0
- package/esm2022/contragents/new-contragent-bank-account-form/sc-new-contragent-bank-account-form.component.mjs +72 -0
- package/esm2022/contragents/new-contragent-form/sc-new-contragent-form.component.mjs +241 -0
- package/esm2022/contragents/sc-contragents.module.mjs +121 -0
- package/esm2022/delivery-address/add-delivery-address-dialog/sc-add-delivery-address-dialog.component.mjs +261 -0
- package/esm2022/delivery-address/delivery-address-accordion/delivery-address-accordion-item/sc-delivery-address-accordion-item.component.mjs +60 -0
- package/esm2022/delivery-address/delivery-address-accordion/sc-delivery-address-accordion.component.mjs +68 -0
- package/esm2022/delivery-address/index.mjs +5 -0
- package/esm2022/delivery-address/sc-delivery-address.module.mjs +96 -0
- package/esm2022/dialogs/index.mjs +2 -0
- package/esm2022/dialogs/sc-resource-preview/sc-resource-preview.component.mjs +73 -0
- package/esm2022/directives/abstract-price-card/abstract-sc-price-card.directive.mjs +170 -0
- package/esm2022/directives/address-quality/sc-address-quality.directive.mjs +40 -0
- package/esm2022/directives/address-quality/sc-address-quality.service.mjs +214 -0
- package/esm2022/directives/address-quality/sc-i-address-quality-state.mjs +2 -0
- package/esm2022/directives/index.mjs +12 -0
- package/esm2022/directives/links/index.mjs +5 -0
- package/esm2022/directives/links/sc-email-link.directive.mjs +49 -0
- package/esm2022/directives/links/sc-link-location.mjs +2 -0
- package/esm2022/directives/links/sc-links.mjs +8 -0
- package/esm2022/directives/links/sc-tel-link.directive.mjs +79 -0
- package/esm2022/directives/next-input-focus/sc-next-input-focus.directive.mjs +70 -0
- package/esm2022/directives/next-input-focus/sc-next-input-focus.module.mjs +19 -0
- package/esm2022/directives/print/sc-print.directive.mjs +36 -0
- package/esm2022/directives/sc-date-value-transformer.directive.mjs +30 -0
- package/esm2022/directives/sc-focus-first-invalid-field.directive.mjs +85 -0
- package/esm2022/directives/sc-null-on-empty-value-transformer.directive.mjs +30 -0
- package/esm2022/directives/select-on-focusin/sc-select-on-focusin.directive.mjs +36 -0
- package/esm2022/directives/terminal-link/sc-terminal-link.directive.mjs +69 -0
- package/esm2022/error-handler/consts/error-change-handler.providers.mjs +10 -0
- package/esm2022/error-handler/error-block-status/error-block-status.component.mjs +101 -0
- package/esm2022/error-handler/index.mjs +5 -0
- package/esm2022/error-handler/interfaces/i-block-error.mjs +2 -0
- package/esm2022/error-handler/sc-error-handler.component.mjs +58 -0
- package/esm2022/feedback/feedback-form/sc-feedback-form.component.mjs +344 -0
- package/esm2022/feedback/gratitude/sc-gratitude.component.mjs +32 -0
- package/esm2022/feedback/index.mjs +4 -0
- package/esm2022/feedback/interfaces/index.mjs +2 -0
- package/esm2022/feedback/interfaces/sc-feedback-form-config.mjs +2 -0
- package/esm2022/files/directives/index.mjs +3 -0
- package/esm2022/files/directives/tree-top.directive.mjs +63 -0
- package/esm2022/files/directives/tree.directive.mjs +47 -0
- package/esm2022/files/file-tree-item/file-tree-item.component.mjs +18 -0
- package/esm2022/files/files-and-documents/files-and-documents.component.mjs +61 -0
- package/esm2022/files/files-and-documents.module.mjs +28 -0
- package/esm2022/files/index.mjs +6 -0
- package/esm2022/files/interfaces/tree-node.mjs +2 -0
- package/esm2022/files/services/index.mjs +3 -0
- package/esm2022/files/services/tree-icon.service.mjs +49 -0
- package/esm2022/files/services/tree-loader.service.mjs +62 -0
- package/esm2022/form-fields/addresses-selection-field/sc-addresses-selection-field.component.mjs +155 -0
- package/esm2022/form-fields/form-fields.module.mjs +66 -0
- package/esm2022/form-fields/index.mjs +4 -0
- package/esm2022/form-fields/suggestion-field/sc-suggestion-field.component.mjs +235 -0
- package/esm2022/icons/index.mjs +2 -0
- package/esm2022/icons/sc-client-ui-icons-name.mjs +99 -0
- package/esm2022/loader/index.mjs +2 -0
- package/esm2022/loader/sc-i-loader.mjs +2 -0
- package/esm2022/masks/index.mjs +9 -0
- package/esm2022/masks/sc-account-number-mask.mjs +7 -0
- package/esm2022/masks/sc-bic-mask.mjs +7 -0
- package/esm2022/masks/sc-correspondent-account-mask.mjs +7 -0
- package/esm2022/masks/sc-inn-mask.mjs +13 -0
- package/esm2022/masks/sc-kpp-mask.mjs +7 -0
- package/esm2022/masks/sc-ogrn-mask.mjs +13 -0
- package/esm2022/masks/sc-okpo-mask.mjs +13 -0
- package/esm2022/masks/sc-phone-verification-code-mask.mjs +7 -0
- package/esm2022/methods/index.mjs +2 -0
- package/esm2022/methods/sc-get-current-route.mjs +14 -0
- package/esm2022/models/i-sc-image.mjs +2 -0
- package/esm2022/models/index.mjs +2 -0
- package/esm2022/news/index.mjs +4 -0
- package/esm2022/news/news-card/sc-news-card.component.mjs +34 -0
- package/esm2022/news/news-card-skeleton/sc-news-card-skeleton.component.mjs +31 -0
- package/esm2022/news/sc-news.module.mjs +25 -0
- package/esm2022/noindex-wrapper/directives/index.mjs +2 -0
- package/esm2022/noindex-wrapper/directives/sc-noindex.directive.mjs +58 -0
- package/esm2022/noindex-wrapper/index.mjs +3 -0
- package/esm2022/noindex-wrapper/sc-noindex-wrapper.component.mjs +18 -0
- package/esm2022/order/directives/index.mjs +3 -0
- package/esm2022/order/directives/sc-order-accessor.directive.mjs +28 -0
- package/esm2022/order/directives/sc-order-options.mjs +11 -0
- package/esm2022/order/draft/sc-draft.component.mjs +118 -0
- package/esm2022/order/index.mjs +14 -0
- package/esm2022/order/models/i-new-order-form.mjs +2 -0
- package/esm2022/order/models/sc-i-cart-items-by-direction.mjs +22 -0
- package/esm2022/order/order-direction-items/sc-order-direction-items.component.mjs +39 -0
- package/esm2022/order/order-form/sc-order-form.component.mjs +565 -0
- package/esm2022/order/order-form/sc-order-form.config.mjs +7 -0
- package/esm2022/order/order-item/sc-order-item.component.mjs +112 -0
- package/esm2022/order/order-items-list/sc-order-items-list.component.mjs +212 -0
- package/esm2022/order/order-items-list-by-directions/sc-order-items-list-by-directions.component.mjs +75 -0
- package/esm2022/order/order-items-list-by-stock/sc-order-items-list-by-stock.component.mjs +75 -0
- package/esm2022/order/sc-order.module.mjs +52 -0
- package/esm2022/order/sc-payment-status/sc-payment-status.component.mjs +35 -0
- package/esm2022/pages/frequently-asked-questions/sc-faq-query-params.mjs +5 -0
- package/esm2022/pages/frequently-asked-questions/sc-faq-question-anchor.mjs +23 -0
- package/esm2022/pages/frequently-asked-questions/sc-frequently-asked-questions.component.mjs +167 -0
- package/esm2022/pages/frequently-asked-questions/sc-get-faq-group-query-params.mjs +14 -0
- package/esm2022/pages/frequently-asked-questions/sc-page-size-options.mjs +8 -0
- package/esm2022/pages/frequently-asked-questions-group-selector/sc-frequently-asked-questions-group-selector.component.mjs +88 -0
- package/esm2022/pages/frequently-asked-questions-with-groups/sc-frequently-asked-questions-with-groups.component.mjs +123 -0
- package/esm2022/pages/index.mjs +11 -0
- package/esm2022/pages/news-list/sc-news-list.component.mjs +90 -0
- package/esm2022/pages/personal-data-processing-policy/sc-personal-data-processing-policy.component.mjs +46 -0
- package/esm2022/pages/privacy-policy/sc-privacy-policy.component.mjs +30 -0
- package/esm2022/pages/public-offer/sc-public-offer.component.mjs +50 -0
- package/esm2022/pagination/index.mjs +2 -0
- package/esm2022/pagination/sc-pagination-links/sc-pagination-links.component.mjs +99 -0
- package/esm2022/pipes/index.mjs +3 -0
- package/esm2022/pipes/sc-format-date.mjs +33 -0
- package/esm2022/pipes/sc-phone-format.mjs +44 -0
- package/esm2022/profile/index.mjs +3 -0
- package/esm2022/profile/sc-profile-accordions-content/sc-profile-accordions-content.component.mjs +174 -0
- package/esm2022/profile/sc-profile.module.mjs +73 -0
- package/esm2022/providers/cleanup-recaptcha-artifacts.mjs +30 -0
- package/esm2022/providers/date-value-transformer/index.mjs +4 -0
- package/esm2022/providers/date-value-transformer/sc-date-value-transformer-types.mjs +2 -0
- package/esm2022/providers/date-value-transformer/sc-date-value-transformer-with-end-time.mjs +26 -0
- package/esm2022/providers/date-value-transformer/sc-date-value-transformer-with-start-time.mjs +37 -0
- package/esm2022/providers/index.mjs +18 -0
- package/esm2022/providers/null-on-empty-value-transformer/index.mjs +2 -0
- package/esm2022/providers/null-on-empty-value-transformer/sc-null-on-empty-value-transformer.mjs +31 -0
- package/esm2022/providers/sc-allow-select-terminated.mjs +8 -0
- package/esm2022/providers/sc-banner-duration.mjs +8 -0
- package/esm2022/providers/sc-block-incomplete-address.mjs +8 -0
- package/esm2022/providers/sc-country-ids.mjs +8 -0
- package/esm2022/providers/sc-date-formatter.mjs +15 -0
- package/esm2022/providers/sc-date-value-transformer.mjs +12 -0
- package/esm2022/providers/sc-debounce-time-default.mjs +9 -0
- package/esm2022/providers/sc-dialog-service.providers.mjs +6 -0
- package/esm2022/providers/sc-help-notification-close.mjs +9 -0
- package/esm2022/providers/sc-help-notification-limit.mjs +8 -0
- package/esm2022/providers/sc-hidden-print-elements.token.mjs +10 -0
- package/esm2022/providers/sc-max-files-in-form-input.mjs +8 -0
- package/esm2022/providers/sc-notify-when-in-stock-required-fields.mjs +8 -0
- package/esm2022/providers/sc-page-size-options.mjs +8 -0
- package/esm2022/providers/sc-user-providers.mjs +38 -0
- package/esm2022/providers/sc-verification-code-timeout.mjs +8 -0
- package/esm2022/public-api.mjs +36 -0
- package/esm2022/qrcode/index.mjs +3 -0
- package/esm2022/qrcode/qrcode-dialog/sc-qrcode-dialog.component.mjs +58 -0
- package/esm2022/qrcode/sc-qrcode.module.mjs +25 -0
- package/esm2022/samples/index.mjs +5 -0
- package/esm2022/samples/interfaces/index.mjs +3 -0
- package/esm2022/samples/interfaces/sc-i-preview-sample.mjs +2 -0
- package/esm2022/samples/interfaces/sc-preview-mosquito-config.mjs +2 -0
- package/esm2022/samples/preview-sample/sc-preview-sample.component.mjs +42 -0
- package/esm2022/samples/sc-preview-samples-mosquito/sc-preview-samples-mosquito.component.mjs +63 -0
- package/esm2022/samples/sc-sample.module.mjs +66 -0
- package/esm2022/services/index.mjs +3 -0
- package/esm2022/services/print.service.mjs +49 -0
- package/esm2022/services/sc-help-notification.service.mjs +100 -0
- package/esm2022/share/index.mjs +6 -0
- package/esm2022/share/sc-share-dialog-data.mjs +2 -0
- package/esm2022/share/sc-share.service.mjs +40 -0
- package/esm2022/share/share-button/sc-share-button.component.mjs +99 -0
- package/esm2022/share/share-dialog/sc-share-dialog.component.mjs +139 -0
- package/esm2022/share/share-messengers-links/sc-share-messengers-links.component.mjs +84 -0
- package/esm2022/snabcentr-client-ui.mjs +5 -0
- package/esm2022/user/index.mjs +6 -0
- package/esm2022/user/reset-user-password/sc-reset-user-password.component.mjs +74 -0
- package/esm2022/user/sc-user.module.mjs +86 -0
- package/esm2022/user/update-user-info-dialog/sc-update-user-info-dialog.component.mjs +121 -0
- package/esm2022/user/user-managers/sc-user-managers.component.mjs +40 -0
- package/esm2022/user/user-phone-approve-dialog/sc-user-phone-approve-dialog.component.mjs +105 -0
- package/esm2022/validators/index.mjs +7 -0
- package/esm2022/validators/sc-at-least-one-required-validator.mjs +25 -0
- package/esm2022/validators/sc-bic-validator.mjs +10 -0
- package/esm2022/validators/sc-correspondent-account-validator.mjs +10 -0
- package/esm2022/validators/sc-password-confirm-matching-validator.mjs +17 -0
- package/esm2022/validators/sc-phone-validator.mjs +14 -0
- package/esm2022/validators/step-validator.mjs +18 -0
- package/esm2022/verification/index.mjs +3 -0
- package/esm2022/verification/sc-verification.module.mjs +86 -0
- package/esm2022/verification/verification-phone-check-form/sc-verification-phone-check-form.component.mjs +259 -0
- package/feedback/feedback-form/sc-feedback-form.component.d.ts +163 -0
- package/feedback/gratitude/sc-gratitude.component.d.ts +20 -0
- package/feedback/index.d.ts +3 -0
- package/feedback/interfaces/index.d.ts +1 -0
- package/feedback/interfaces/sc-feedback-form-config.d.ts +23 -0
- package/fesm2022/snabcentr-client-ui.mjs +5826 -4942
- package/fesm2022/snabcentr-client-ui.mjs.map +1 -1
- package/files/directives/index.d.ts +2 -0
- package/files/directives/tree-top.directive.d.ts +33 -0
- package/files/directives/tree.directive.d.ts +35 -0
- package/files/file-tree-item/file-tree-item.component.d.ts +9 -0
- package/files/files-and-documents/files-and-documents.component.d.ts +27 -0
- package/files/files-and-documents.module.d.ts +17 -0
- package/files/index.d.ts +5 -0
- package/files/interfaces/tree-node.d.ts +29 -0
- package/files/services/index.d.ts +2 -0
- package/files/services/tree-icon.service.d.ts +23 -0
- package/files/services/tree-loader.service.d.ts +43 -0
- package/form-fields/addresses-selection-field/sc-addresses-selection-field.component.d.ts +80 -0
- package/form-fields/form-fields.module.d.ts +18 -0
- package/form-fields/index.d.ts +3 -0
- package/form-fields/suggestion-field/sc-suggestion-field.component.d.ts +107 -0
- package/icons/index.d.ts +1 -0
- package/icons/sc-client-ui-icons-name.d.ts +4 -0
- package/icons/svg-pack/application.svg +1 -1
- package/icons/svg-pack/back.svg +1 -1
- package/icons/svg-pack/bag.svg +1 -1
- package/icons/svg-pack/banknote-arrow-in-top.svg +1 -1
- package/icons/svg-pack/catalog/aluminum-systems.svg +1 -1
- package/icons/svg-pack/catalog/arm-profile.svg +1 -1
- package/icons/svg-pack/catalog/batten.svg +1 -1
- package/icons/svg-pack/catalog/brusbox.svg +1 -1
- package/icons/svg-pack/catalog/canopy.svg +1 -1
- package/icons/svg-pack/catalog/configurator.svg +1 -1
- package/icons/svg-pack/catalog/covering-material.svg +1 -1
- package/icons/svg-pack/catalog/door-accessories.svg +1 -1
- package/icons/svg-pack/catalog/drainage-system.svg +1 -1
- package/icons/svg-pack/catalog/fastener.svg +1 -1
- package/icons/svg-pack/catalog/finishing-materials.svg +1 -1
- package/icons/svg-pack/catalog/fixing-impost.svg +1 -1
- package/icons/svg-pack/catalog/flask.svg +1 -1
- package/icons/svg-pack/catalog/foam-balloon.svg +1 -1
- package/icons/svg-pack/catalog/foam.svg +1 -1
- package/icons/svg-pack/catalog/glue.svg +1 -1
- package/icons/svg-pack/catalog/handle.svg +1 -1
- package/icons/svg-pack/catalog/instrument.svg +1 -1
- package/icons/svg-pack/catalog/kve-profile.svg +1 -1
- package/icons/svg-pack/catalog/lubricants.svg +1 -1
- package/icons/svg-pack/catalog/mosquito-net.svg +1 -1
- package/icons/svg-pack/catalog/mounting-accessories.svg +1 -1
- package/icons/svg-pack/catalog/net-order.svg +1 -1
- package/icons/svg-pack/catalog/panel-1.svg +1 -1
- package/icons/svg-pack/catalog/panel.svg +1 -1
- package/icons/svg-pack/catalog/polyethylene-film.svg +1 -1
- package/icons/svg-pack/catalog/profile-plastic.svg +1 -1
- package/icons/svg-pack/catalog/promo-materials.svg +1 -1
- package/icons/svg-pack/catalog/psul.svg +1 -1
- package/icons/svg-pack/catalog/rehau-profile.svg +1 -1
- package/icons/svg-pack/catalog/sandwich-plastic.svg +1 -1
- package/icons/svg-pack/catalog/sealer.svg +1 -1
- package/icons/svg-pack/catalog/siding-2.svg +1 -1
- package/icons/svg-pack/catalog/siding.svg +1 -1
- package/icons/svg-pack/catalog/start-finish-profile.svg +1 -1
- package/icons/svg-pack/catalog/steam-waterproofing.svg +1 -1
- package/icons/svg-pack/catalog/stiz.svg +1 -1
- package/icons/svg-pack/catalog/thermometer.svg +1 -1
- package/icons/svg-pack/catalog/windowsill.svg +1 -1
- package/icons/svg-pack/chart-column-plus.svg +1 -1
- package/icons/svg-pack/circle-arrow-in-right.svg +1 -1
- package/icons/svg-pack/contacts.svg +1 -1
- package/icons/svg-pack/deadline.svg +1 -1
- package/icons/svg-pack/file-p.svg +1 -1
- package/icons/svg-pack/file-search.svg +1 -1
- package/icons/svg-pack/file-w.svg +1 -1
- package/icons/svg-pack/file-x.svg +1 -1
- package/icons/svg-pack/grid-height-arrow.svg +1 -1
- package/icons/svg-pack/grid-width-arrow.svg +1 -1
- package/icons/svg-pack/layout-list-tree.svg +1 -1
- package/icons/svg-pack/list.svg +1 -1
- package/icons/svg-pack/puzzle.svg +1 -1
- package/icons/svg-pack/reclamation.svg +1 -1
- package/icons/svg-pack/retail-store.svg +1 -1
- package/icons/svg-pack/send.svg +1 -1
- package/index.d.ts +5 -0
- package/loader/index.d.ts +1 -0
- package/loader/sc-i-loader.d.ts +9 -0
- package/masks/index.d.ts +8 -0
- package/masks/sc-account-number-mask.d.ts +5 -0
- package/masks/sc-bic-mask.d.ts +5 -0
- package/masks/sc-correspondent-account-mask.d.ts +5 -0
- package/masks/sc-inn-mask.d.ts +9 -0
- package/masks/sc-kpp-mask.d.ts +5 -0
- package/masks/sc-ogrn-mask.d.ts +9 -0
- package/masks/sc-okpo-mask.d.ts +9 -0
- package/masks/sc-phone-verification-code-mask.d.ts +5 -0
- package/methods/index.d.ts +1 -0
- package/methods/sc-get-current-route.d.ts +8 -0
- package/models/i-sc-image.d.ts +17 -0
- package/models/index.d.ts +1 -0
- package/news/index.d.ts +3 -0
- package/news/news-card/sc-news-card.component.d.ts +22 -0
- package/news/news-card-skeleton/sc-news-card-skeleton.component.d.ts +16 -0
- package/news/sc-news.module.d.ts +15 -0
- package/noindex-wrapper/directives/index.d.ts +1 -0
- package/noindex-wrapper/directives/sc-noindex.directive.d.ts +29 -0
- package/noindex-wrapper/index.d.ts +2 -0
- package/noindex-wrapper/sc-noindex-wrapper.component.d.ts +9 -0
- package/order/directives/index.d.ts +2 -0
- package/order/directives/sc-order-accessor.directive.d.ts +13 -0
- package/order/directives/sc-order-options.d.ts +14 -0
- package/order/draft/sc-draft.component.d.ts +63 -0
- package/order/index.d.ts +13 -0
- package/order/models/i-new-order-form.d.ts +39 -0
- package/order/models/sc-i-cart-items-by-direction.d.ts +25 -0
- package/order/order-direction-items/sc-order-direction-items.component.d.ts +29 -0
- package/order/order-form/sc-order-form.component.d.ts +283 -0
- package/order/order-form/sc-order-form.config.d.ts +20 -0
- package/order/order-item/sc-order-item.component.d.ts +43 -0
- package/order/order-items-list/sc-order-items-list.component.d.ts +113 -0
- package/order/order-items-list-by-directions/sc-order-items-list-by-directions.component.d.ts +58 -0
- package/order/order-items-list-by-stock/sc-order-items-list-by-stock.component.d.ts +55 -0
- package/order/sc-order.module.d.ts +18 -0
- package/order/sc-payment-status/sc-payment-status.component.d.ts +25 -0
- package/package.json +37 -35
- package/pages/frequently-asked-questions/sc-faq-query-params.d.ts +4 -0
- package/pages/frequently-asked-questions/sc-faq-question-anchor.d.ts +16 -0
- package/pages/frequently-asked-questions/sc-frequently-asked-questions.component.d.ts +84 -0
- package/pages/frequently-asked-questions/sc-get-faq-group-query-params.d.ts +10 -0
- package/pages/frequently-asked-questions/sc-page-size-options.d.ts +5 -0
- package/pages/frequently-asked-questions-group-selector/sc-frequently-asked-questions-group-selector.component.d.ts +47 -0
- package/pages/frequently-asked-questions-with-groups/sc-frequently-asked-questions-with-groups.component.d.ts +89 -0
- package/pages/index.d.ts +10 -0
- package/pages/news-list/sc-news-list.component.d.ts +57 -0
- package/pages/personal-data-processing-policy/sc-personal-data-processing-policy.component.d.ts +17 -0
- package/pages/privacy-policy/sc-privacy-policy.component.d.ts +17 -0
- package/pages/public-offer/sc-public-offer.component.d.ts +22 -0
- package/pagination/index.d.ts +1 -0
- package/pagination/sc-pagination-links/sc-pagination-links.component.d.ts +60 -0
- package/pipes/index.d.ts +2 -0
- package/pipes/sc-format-date.d.ts +20 -0
- package/pipes/sc-phone-format.d.ts +21 -0
- package/profile/index.d.ts +2 -0
- package/profile/sc-profile-accordions-content/sc-profile-accordions-content.component.d.ts +126 -0
- package/profile/sc-profile.module.d.ts +23 -0
- package/providers/cleanup-recaptcha-artifacts.d.ts +7 -0
- package/providers/date-value-transformer/index.d.ts +3 -0
- package/providers/date-value-transformer/sc-date-value-transformer-types.d.ts +9 -0
- package/providers/date-value-transformer/sc-date-value-transformer-with-end-time.d.ts +16 -0
- package/providers/date-value-transformer/sc-date-value-transformer-with-start-time.d.ts +22 -0
- package/providers/index.d.ts +17 -0
- package/providers/null-on-empty-value-transformer/index.d.ts +1 -0
- package/providers/null-on-empty-value-transformer/sc-null-on-empty-value-transformer.d.ts +21 -0
- package/providers/sc-allow-select-terminated.d.ts +5 -0
- package/providers/sc-banner-duration.d.ts +5 -0
- package/providers/sc-block-incomplete-address.d.ts +5 -0
- package/providers/sc-country-ids.d.ts +5 -0
- package/providers/sc-date-formatter.d.ts +6 -0
- package/providers/sc-date-value-transformer.d.ts +5 -0
- package/providers/sc-debounce-time-default.d.ts +5 -0
- package/providers/sc-dialog-service.providers.d.ts +45 -0
- package/providers/sc-help-notification-close.d.ts +6 -0
- package/providers/sc-help-notification-limit.d.ts +5 -0
- package/providers/sc-hidden-print-elements.token.d.ts +6 -0
- package/providers/sc-max-files-in-form-input.d.ts +5 -0
- package/providers/sc-notify-when-in-stock-required-fields.d.ts +5 -0
- package/providers/sc-page-size-options.d.ts +5 -0
- package/providers/sc-user-providers.d.ts +21 -0
- package/providers/sc-verification-code-timeout.d.ts +5 -0
- package/public-api.d.ts +35 -0
- package/qrcode/index.d.ts +2 -0
- package/qrcode/qrcode-dialog/sc-qrcode-dialog.component.d.ts +37 -0
- package/qrcode/sc-qrcode.module.d.ts +14 -0
- package/release_notes.tmp +2 -16
- package/samples/index.d.ts +4 -0
- package/samples/interfaces/index.d.ts +2 -0
- package/samples/interfaces/sc-i-preview-sample.d.ts +56 -0
- package/samples/interfaces/sc-preview-mosquito-config.d.ts +62 -0
- package/samples/preview-sample/sc-preview-sample.component.d.ts +30 -0
- package/samples/sc-preview-samples-mosquito/sc-preview-samples-mosquito.component.d.ts +50 -0
- package/samples/sc-sample.module.d.ts +19 -0
- package/services/index.d.ts +2 -0
- package/services/print.service.d.ts +31 -0
- package/services/sc-help-notification.service.d.ts +70 -0
- package/share/index.d.ts +5 -0
- package/share/sc-share-dialog-data.d.ts +13 -0
- package/share/sc-share.service.d.ts +19 -0
- package/share/share-button/sc-share-button.component.d.ts +78 -0
- package/share/share-dialog/sc-share-dialog.component.d.ts +87 -0
- package/share/share-messengers-links/sc-share-messengers-links.component.d.ts +49 -0
- package/styles/taiga/variables.less +17 -35
- package/styles/tailwind/tailwind.scss +14 -56
- package/user/index.d.ts +5 -0
- package/user/reset-user-password/sc-reset-user-password.component.d.ts +46 -0
- package/user/sc-user.module.d.ts +24 -0
- package/user/update-user-info-dialog/sc-update-user-info-dialog.component.d.ts +63 -0
- package/user/user-managers/sc-user-managers.component.d.ts +23 -0
- package/user/user-phone-approve-dialog/sc-user-phone-approve-dialog.component.d.ts +53 -0
- package/validators/index.d.ts +6 -0
- package/validators/sc-at-least-one-required-validator.d.ts +10 -0
- package/validators/sc-bic-validator.d.ts +8 -0
- package/validators/sc-correspondent-account-validator.d.ts +8 -0
- package/validators/sc-password-confirm-matching-validator.d.ts +8 -0
- package/validators/sc-phone-validator.d.ts +5 -0
- package/validators/step-validator.d.ts +7 -0
- package/verification/index.d.ts +2 -0
- package/verification/sc-verification.module.d.ts +21 -0
- package/verification/verification-phone-check-form/sc-verification-phone-check-form.component.d.ts +145 -0
- package/types/snabcentr-client-ui.d.ts +0 -6787
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
import { inject, Injectable, signal, untracked } from '@angular/core';
|
|
2
|
+
import { ScSuggestionAddressQuality } from '@snabcentr/client-core';
|
|
3
|
+
import { TuiValidationError } from '@taiga-ui/cdk';
|
|
4
|
+
import { isNil } from 'lodash-es';
|
|
5
|
+
import { SC_BLOCK_INCOMPLETE_ADDRESS } from '../../providers/sc-block-incomplete-address';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
/**
|
|
8
|
+
* Сервис-реестр качества адресов, выбранных из подсказок.
|
|
9
|
+
*
|
|
10
|
+
* Хранит качество последнего выбранного адреса для каждого контрола. Качество полного адреса
|
|
11
|
+
* действует, пока значение контрола не изменилось после выбора: ручная правка возвращает адрес
|
|
12
|
+
* в разряд непроверяемых. Качество неполного адреса и адреса с неопределённой полнотой сохраняется
|
|
13
|
+
* и при ручной правке текста: его заменяет только выбор другой подсказки по этому полю.
|
|
14
|
+
* Полная очистка поля сбрасывает качество: адрес, введённый после неё, считается ручным.
|
|
15
|
+
*/
|
|
16
|
+
export class ScAddressQualityService {
|
|
17
|
+
constructor() {
|
|
18
|
+
/**
|
|
19
|
+
* Валидатор, запрещающий отправку формы с неполным адресом, пока блокировка включена токеном {@link SC_BLOCK_INCOMPLETE_ADDRESS}.
|
|
20
|
+
* Подключается к контролу адреса при его создании; директива качества адреса только показывает предупреждение.
|
|
21
|
+
*
|
|
22
|
+
* @param control Контрол адреса.
|
|
23
|
+
*/
|
|
24
|
+
this.validator = (control) => this.validate(control);
|
|
25
|
+
/**
|
|
26
|
+
* Признак, что отправка форм с неполным адресом заблокирована.
|
|
27
|
+
*/
|
|
28
|
+
this.blockIncompleteAddress = inject(SC_BLOCK_INCOMPLETE_ADDRESS);
|
|
29
|
+
/**
|
|
30
|
+
* Ошибка валидации неполного адреса.
|
|
31
|
+
*/
|
|
32
|
+
this.incompleteAddressError = new TuiValidationError('Адрес неполный, выберите более точный вариант из подсказок');
|
|
33
|
+
/**
|
|
34
|
+
* Реестр состояний качества по контролам адресов.
|
|
35
|
+
*/
|
|
36
|
+
this.states = new WeakMap();
|
|
37
|
+
/**
|
|
38
|
+
* Реестр признаков включённого контроля качества по контролам адресов.
|
|
39
|
+
*/
|
|
40
|
+
this.checkEnabledStates = new WeakMap();
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Возвращает признак, что значение поля адреса пустое без учёта пробелов.
|
|
44
|
+
*
|
|
45
|
+
* @param value Значение поля адреса.
|
|
46
|
+
*/
|
|
47
|
+
static isEmptyAddress(value) {
|
|
48
|
+
return isNil(value) || (typeof value === 'string' && !value.trim());
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Задаёт качество адреса, выбранного в контроле, и пересчитывает валидность контрола
|
|
52
|
+
* без рассылки событий, чтобы не нарушать подавление valueChanges при выборе подсказки.
|
|
53
|
+
* Контрол адреса, требующего внимания пользователя, помечается затронутым, чтобы сообщения показались сразу.
|
|
54
|
+
*
|
|
55
|
+
* @param control Контрол адреса.
|
|
56
|
+
* @param quality Качество (полнота) адреса или null, если качество неизвестно.
|
|
57
|
+
*/
|
|
58
|
+
setQuality(control, quality) {
|
|
59
|
+
this.stateOf(control).set(quality === null ? null : { quality, value: control.value });
|
|
60
|
+
if (quality === ScSuggestionAddressQuality.incomplete || quality === ScSuggestionAddressQuality.undetermined) {
|
|
61
|
+
control.markAsTouched();
|
|
62
|
+
}
|
|
63
|
+
control.updateValueAndValidity({ emitEvent: false });
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Возвращает качество адреса, выбранного в контроле, либо null, если адрес из подсказок
|
|
67
|
+
* не выбирался или поле пустое. Качество полного адреса действует, только пока значение контрола не изменилось
|
|
68
|
+
* после выбора; качество неполного адреса и адреса с неопределённой полнотой действует
|
|
69
|
+
* до выбора другой подсказки или полной очистки поля, в том числе после ручной правки текста.
|
|
70
|
+
*
|
|
71
|
+
* @param control Контрол адреса.
|
|
72
|
+
*/
|
|
73
|
+
getQuality(control) {
|
|
74
|
+
const state = this.stateOf(control)();
|
|
75
|
+
if (!state || ScAddressQualityService.isEmptyAddress(control.value)) {
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
if (state.quality === ScSuggestionAddressQuality.complete) {
|
|
79
|
+
return state.value === control.value ? ScSuggestionAddressQuality.complete : null;
|
|
80
|
+
}
|
|
81
|
+
return state.quality;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Задаёт качество адресов организации контролам группы на основе выбранной подсказки.
|
|
85
|
+
* Качество применяется только к заполненным адресам подсказки: для пустого адреса
|
|
86
|
+
* оно сбрасывается, даже если сервис подсказок прислал для него значение.
|
|
87
|
+
*
|
|
88
|
+
* @param group Группа с контролами адресов организации.
|
|
89
|
+
* @param suggestion Объект подсказки по организации.
|
|
90
|
+
*/
|
|
91
|
+
setOrganizationAddressQualities(group, suggestion) {
|
|
92
|
+
const qualities = [
|
|
93
|
+
['legalAddress', suggestion.legalAddress, suggestion.legalAddressQuality],
|
|
94
|
+
['postalAddress', suggestion.postalAddress, suggestion.postalAddressQuality],
|
|
95
|
+
['actualAddress', suggestion.actualAddress, suggestion.actualAddressQuality],
|
|
96
|
+
];
|
|
97
|
+
qualities.forEach(([controlName, address, quality]) => {
|
|
98
|
+
const control = group.get(controlName);
|
|
99
|
+
if (control) {
|
|
100
|
+
this.setQuality(control, address ? (quality ?? null) : null);
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Включает или отключает контроль качества адреса для контрола и пересчитывает его валидность без рассылки событий.
|
|
106
|
+
* Сохранённое качество при отключении не теряется и снова учитывается после включения.
|
|
107
|
+
* Вызывать при смене значения формы, а не из хуков проверки изменений (ngOnChanges и т.п.),
|
|
108
|
+
* чтобы родительские шаблоны сразу видели актуальную валидность.
|
|
109
|
+
*
|
|
110
|
+
* @param control Контрол адреса.
|
|
111
|
+
* @param enabled Признак, что контроль качества адреса включён.
|
|
112
|
+
*/
|
|
113
|
+
setQualityCheckEnabled(control, enabled) {
|
|
114
|
+
const checkEnabled = this.checkEnabledOf(control);
|
|
115
|
+
if (untracked(checkEnabled) === enabled) {
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
// Вызов возможен во время отрисовки шаблона (первая подписка async pipe), где запись сигналов запрещена.
|
|
119
|
+
untracked(() => {
|
|
120
|
+
checkEnabled.set(enabled);
|
|
121
|
+
});
|
|
122
|
+
control.updateValueAndValidity({ emitEvent: false });
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Возвращает признак, что контроль качества адреса для контрола включён.
|
|
126
|
+
*
|
|
127
|
+
* @param control Контрол адреса.
|
|
128
|
+
*/
|
|
129
|
+
isQualityCheckEnabled(control) {
|
|
130
|
+
return this.checkEnabledOf(control)();
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Возвращает ошибку неполного адреса либо null, если контрол можно отправлять: контроль качества отключён,
|
|
134
|
+
* блокировка выключена токеном {@link SC_BLOCK_INCOMPLETE_ADDRESS} или адрес не неполный.
|
|
135
|
+
* Для очищенного поля сбрасывает сохранённое качество адреса.
|
|
136
|
+
*
|
|
137
|
+
* @param control Контрол адреса.
|
|
138
|
+
*/
|
|
139
|
+
validate(control) {
|
|
140
|
+
this.resetQualityOfEmptyAddress(control);
|
|
141
|
+
return this.blockIncompleteAddress && this.isQualityCheckEnabled(control) && this.getQuality(control) === ScSuggestionAddressQuality.incomplete
|
|
142
|
+
? { incompleteAddress: this.incompleteAddressError }
|
|
143
|
+
: null;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Возвращает текст предупреждения о необходимости проверить выбранный адрес либо null, когда предупреждение не требуется,
|
|
147
|
+
* в том числе для пустого поля. Для неполного адреса при включённой блокировке отправки вместо предупреждения
|
|
148
|
+
* показывается ошибка валидатора {@link validator}, если он подключён к контролу.
|
|
149
|
+
*
|
|
150
|
+
* @param control Контрол адреса.
|
|
151
|
+
*/
|
|
152
|
+
getWarningMessage(control) {
|
|
153
|
+
if (!this.isQualityCheckEnabled(control)) {
|
|
154
|
+
return null;
|
|
155
|
+
}
|
|
156
|
+
switch (this.getQuality(control)) {
|
|
157
|
+
case ScSuggestionAddressQuality.undetermined:
|
|
158
|
+
return 'Не удалось определить полноту адреса, проверьте его';
|
|
159
|
+
case ScSuggestionAddressQuality.incomplete:
|
|
160
|
+
return this.blockIncompleteAddress && control.hasValidator(this.validator) ? null : 'Адрес неполный, проверьте его';
|
|
161
|
+
default:
|
|
162
|
+
return null;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Возвращает сигнал состояния качества для контрола, создавая его при первом обращении.
|
|
167
|
+
*
|
|
168
|
+
* @param control Контрол адреса.
|
|
169
|
+
*/
|
|
170
|
+
stateOf(control) {
|
|
171
|
+
let state = this.states.get(control);
|
|
172
|
+
if (!state) {
|
|
173
|
+
state = signal(null);
|
|
174
|
+
this.states.set(control, state);
|
|
175
|
+
}
|
|
176
|
+
return state;
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Возвращает сигнал признака включённого контроля качества для контрола, создавая его при первом обращении.
|
|
180
|
+
*
|
|
181
|
+
* @param control Контрол адреса.
|
|
182
|
+
*/
|
|
183
|
+
checkEnabledOf(control) {
|
|
184
|
+
let checkEnabled = this.checkEnabledStates.get(control);
|
|
185
|
+
if (!checkEnabled) {
|
|
186
|
+
checkEnabled = signal(true);
|
|
187
|
+
this.checkEnabledStates.set(control, checkEnabled);
|
|
188
|
+
}
|
|
189
|
+
return checkEnabled;
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Сбрасывает сохранённое качество адреса, если поле очищено.
|
|
193
|
+
*
|
|
194
|
+
* @param control Контрол адреса.
|
|
195
|
+
*/
|
|
196
|
+
resetQualityOfEmptyAddress(control) {
|
|
197
|
+
const state = this.states.get(control);
|
|
198
|
+
if (state && untracked(state) && ScAddressQualityService.isEmptyAddress(control.value)) {
|
|
199
|
+
// Проверка возможна во время отрисовки шаблона, где запись сигналов запрещена.
|
|
200
|
+
untracked(() => {
|
|
201
|
+
state.set(null);
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScAddressQualityService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
206
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScAddressQualityService, providedIn: 'root' }); }
|
|
207
|
+
}
|
|
208
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScAddressQualityService, decorators: [{
|
|
209
|
+
type: Injectable,
|
|
210
|
+
args: [{
|
|
211
|
+
providedIn: 'root',
|
|
212
|
+
}]
|
|
213
|
+
}] });
|
|
214
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtYWRkcmVzcy1xdWFsaXR5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvZGlyZWN0aXZlcy9hZGRyZXNzLXF1YWxpdHkvc2MtYWRkcmVzcy1xdWFsaXR5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFFdEYsT0FBTyxFQUE2QiwwQkFBMEIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQy9GLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRWxDLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDOztBQUcxRjs7Ozs7Ozs7R0FRRztBQUlILE1BQU0sT0FBTyx1QkFBdUI7SUFIcEM7UUFhSTs7Ozs7V0FLRztRQUNhLGNBQVMsR0FBZ0IsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFN0U7O1dBRUc7UUFDYywyQkFBc0IsR0FBWSxNQUFNLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUV2Rjs7V0FFRztRQUNjLDJCQUFzQixHQUFHLElBQUksa0JBQWtCLENBQUMsNERBQTRELENBQUMsQ0FBQztRQUUvSDs7V0FFRztRQUNjLFdBQU0sR0FBRyxJQUFJLE9BQU8sRUFBa0UsQ0FBQztRQUV4Rzs7V0FFRztRQUNjLHVCQUFrQixHQUFHLElBQUksT0FBTyxFQUE0QyxDQUFDO0tBc0xqRztJQXpORzs7OztPQUlHO0lBQ0ssTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFjO1FBQ3hDLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxLQUFLLEtB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QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgc2lnbmFsLCB1bnRyYWNrZWQsIFdyaXRhYmxlU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU2NJU3VnZ2VzdGlvbk9yZ2FuaXphdGlvbiwgU2NTdWdnZXN0aW9uQWRkcmVzc1F1YWxpdHkgfSBmcm9tICdAc25hYmNlbnRyL2NsaWVudC1jb3JlJztcbmltcG9ydCB7IFR1aVZhbGlkYXRpb25FcnJvciB9IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHsgaXNOaWwgfSBmcm9tICdsb2Rhc2gtZXMnO1xuXG5pbXBvcnQgeyBTQ19CTE9DS19JTkNPTVBMRVRFX0FERFJFU1MgfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvc2MtYmxvY2staW5jb21wbGV0ZS1hZGRyZXNzJztcbmltcG9ydCB7IFNjSUFkZHJlc3NRdWFsaXR5U3RhdGUgfSBmcm9tICcuL3NjLWktYWRkcmVzcy1xdWFsaXR5LXN0YXRlJztcblxuLyoqXG4gKiDQodC10YDQstC40YEt0YDQtdC10YHRgtGAINC60LDRh9C10YHRgtCy0LAg0LDQtNGA0LXRgdC+0LIsINCy0YvQsdGA0LDQvdC90YvRhSDQuNC3INC/0L7QtNGB0LrQsNC30L7Qui5cbiAqXG4gKiDQpdGA0LDQvdC40YIg0LrQsNGH0LXRgdGC0LLQviDQv9C+0YHQu9C10LTQvdC10LPQviDQstGL0LHRgNCw0L3QvdC+0LPQviDQsNC00YDQtdGB0LAg0LTQu9GPINC60LDQttC00L7Qs9C+INC60L7QvdGC0YDQvtC70LAuINCa0LDRh9C10YHRgtCy0L4g0L/QvtC70L3QvtCz0L4g0LDQtNGA0LXRgdCwXG4gKiDQtNC10LnRgdGC0LLRg9C10YIsINC/0L7QutCwINC30L3QsNGH0LXQvdC40LUg0LrQvtC90YLRgNC+0LvQsCDQvdC1INC40LfQvNC10L3QuNC70L7RgdGMINC/0L7RgdC70LUg0LLRi9Cx0L7RgNCwOiDRgNGD0YfQvdCw0Y8g0L/RgNCw0LLQutCwINCy0L7Qt9Cy0YDQsNGJ0LDQtdGCINCw0LTRgNC10YFcbiAqINCyINGA0LDQt9GA0Y/QtCDQvdC10L/RgNC+0LLQtdGA0Y/QtdC80YvRhS4g0JrQsNGH0LXRgdGC0LLQviDQvdC10L/QvtC70L3QvtCz0L4g0LDQtNGA0LXRgdCwINC4INCw0LTRgNC10YHQsCDRgSDQvdC10L7Qv9GA0LXQtNC10LvRkdC90L3QvtC5INC/0L7Qu9C90L7RgtC+0Lkg0YHQvtGF0YDQsNC90Y/QtdGC0YHRj1xuICog0Lgg0L/RgNC4INGA0YPRh9C90L7QuSDQv9GA0LDQstC60LUg0YLQtdC60YHRgtCwOiDQtdCz0L4g0LfQsNC80LXQvdGP0LXRgiDRgtC+0LvRjNC60L4g0LLRi9Cx0L7RgCDQtNGA0YPQs9C+0Lkg0L/QvtC00YHQutCw0LfQutC4INC/0L4g0Y3RgtC+0LzRgyDQv9C+0LvRji5cbiAqINCf0L7Qu9C90LDRjyDQvtGH0LjRgdGC0LrQsCDQv9C+0LvRjyDRgdCx0YDQsNGB0YvQstCw0LXRgiDQutCw0YfQtdGB0YLQstC+OiDQsNC00YDQtdGBLCDQstCy0LXQtNGR0L3QvdGL0Lkg0L/QvtGB0LvQtSDQvdC10ZEsINGB0YfQuNGC0LDQtdGC0YHRjyDRgNGD0YfQvdGL0LwuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFNjQWRkcmVzc1F1YWxpdHlTZXJ2aWNlIHtcbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDQv9GA0LjQt9C90LDQuiwg0YfRgtC+INC30L3QsNGH0LXQvdC40LUg0L/QvtC70Y8g0LDQtNGA0LXRgdCwINC/0YPRgdGC0L7QtSDQsdC10Lcg0YPRh9GR0YLQsCDQv9GA0L7QsdC10LvQvtCyLlxuICAgICAqXG4gICAgICogQHBhcmFtIHZhbHVlINCX0L3QsNGH0LXQvdC40LUg0L/QvtC70Y8g0LDQtNGA0LXRgdCwLlxuICAgICAqL1xuICAgIHByaXZhdGUgc3RhdGljIGlzRW1wdHlBZGRyZXNzKHZhbHVlOiB1bmtub3duKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBpc05pbCh2YWx1ZSkgfHwgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgIXZhbHVlLnRyaW0oKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQsNC70LjQtNCw0YLQvtGALCDQt9Cw0L/RgNC10YnQsNGO0YnQuNC5INC+0YLQv9GA0LDQstC60YMg0YTQvtGA0LzRiyDRgSDQvdC10L/QvtC70L3Ri9C8INCw0LTRgNC10YHQvtC8LCDQv9C+0LrQsCDQsdC70L7QutC40YDQvtCy0LrQsCDQstC60LvRjtGH0LXQvdCwINGC0L7QutC10L3QvtC8IHtAbGluayBTQ19CTE9DS19JTkNPTVBMRVRFX0FERFJFU1N9LlxuICAgICAqINCf0L7QtNC60LvRjtGH0LDQtdGC0YHRjyDQuiDQutC+0L3RgtGA0L7Qu9GDINCw0LTRgNC10YHQsCDQv9GA0Lgg0LXQs9C+INGB0L7Qt9C00LDQvdC40Lg7INC00LjRgNC10LrRgtC40LLQsCDQutCw0YfQtdGB0YLQstCwINCw0LTRgNC10YHQsCDRgtC+0LvRjNC60L4g0L/QvtC60LDQt9GL0LLQsNC10YIg0L/RgNC10LTRg9C/0YDQtdC20LTQtdC90LjQtS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb250cm9sINCa0L7QvdGC0YDQvtC7INCw0LTRgNC10YHQsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgdmFsaWRhdG9yOiBWYWxpZGF0b3JGbiA9IChjb250cm9sKSA9PiB0aGlzLnZhbGlkYXRlKGNvbnRyb2wpO1xuXG4gICAgLyoqXG4gICAgICog0J/RgNC40LfQvdCw0LosINGH0YLQviDQvtGC0L/RgNCw0LLQutCwINGE0L7RgNC8INGBINC90LXQv9C+0LvQvdGL0Lwg0LDQtNGA0LXRgdC+0Lwg0LfQsNCx0LvQvtC60LjRgNC+0LLQsNC90LAuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBibG9ja0luY29tcGxldGVBZGRyZXNzOiBib29sZWFuID0gaW5qZWN0KFNDX0JMT0NLX0lOQ09NUExFVEVfQUREUkVTUyk7XG5cbiAgICAvKipcbiAgICAgKiDQntGI0LjQsdC60LAg0LLQsNC70LjQtNCw0YbQuNC4INC90LXQv9C+0LvQvdC+0LPQviDQsNC00YDQtdGB0LAuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBpbmNvbXBsZXRlQWRkcmVzc0Vycm9yID0gbmV3IFR1aVZhbGlkYXRpb25FcnJvcign0JDQtNGA0LXRgSDQvdC10L/QvtC70L3Ri9C5LCDQstGL0LHQtdGA0LjRgtC1INCx0L7Qu9C10LUg0YLQvtGH0L3Ri9C5INCy0LDRgNC40LDQvdGCINC40Lcg0L/QvtC00YHQutCw0LfQvtC6Jyk7XG5cbiAgICAvKipcbiAgICAgKiDQoNC10LXRgdGC0YAg0YHQvtGB0YLQvtGP0L3QuNC5INC60LDRh9C10YHRgtCy0LAg0L/QviDQutC+0L3RgtGA0L7Qu9Cw0Lwg0LDQtNGA0LXRgdC+0LIuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBzdGF0ZXMgPSBuZXcgV2Vha01hcDxBYnN0cmFjdENvbnRyb2wsIFdyaXRhYmxlU2lnbmFsPFNjSUFkZHJlc3NRdWFsaXR5U3RhdGUgfCBudWxsPj4oKTtcblxuICAgIC8qKlxuICAgICAqINCg0LXQtdGB0YLRgCDQv9GA0LjQt9C90LDQutC+0LIg0LLQutC70Y7Rh9GR0L3QvdC+0LPQviDQutC+0L3RgtGA0L7Qu9GPINC60LDRh9C10YHRgtCy0LAg0L/QviDQutC+0L3RgtGA0L7Qu9Cw0Lwg0LDQtNGA0LXRgdC+0LIuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBjaGVja0VuYWJsZWRTdGF0ZXMgPSBuZXcgV2Vha01hcDxBYnN0cmFjdENvbnRyb2wsIFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+PigpO1xuXG4gICAgLyoqXG4gICAgICog0JfQsNC00LDRkdGCINC60LDRh9C10YHRgtCy0L4g0LDQtNGA0LXRgdCwLCDQstGL0LHRgNCw0L3QvdC+0LPQviDQsiDQutC+0L3RgtGA0L7Qu9C1LCDQuCDQv9C10YDQtdGB0YfQuNGC0YvQstCw0LXRgiDQstCw0LvQuNC00L3QvtGB0YLRjCDQutC+0L3RgtGA0L7Qu9CwXG4gICAgICog0LHQtdC3INGA0LDRgdGB0YvQu9C60Lgg0YHQvtCx0YvRgtC40LksINGH0YLQvtCx0Ysg0L3QtSDQvdCw0YDRg9GI0LDRgtGMINC/0L7QtNCw0LLQu9C10L3QuNC1IHZhbHVlQ2hhbmdlcyDQv9GA0Lgg0LLRi9Cx0L7RgNC1INC/0L7QtNGB0LrQsNC30LrQuC5cbiAgICAgKiDQmtC+0L3RgtGA0L7QuyDQsNC00YDQtdGB0LAsINGC0YDQtdCx0YPRjtGJ0LXQs9C+INCy0L3QuNC80LDQvdC40Y8g0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPLCDQv9C+0LzQtdGH0LDQtdGC0YHRjyDQt9Cw0YLRgNC+0L3Rg9GC0YvQvCwg0YfRgtC+0LHRiyDRgdC+0L7QsdGJ0LXQvdC40Y8g0L/QvtC60LDQt9Cw0LvQuNGB0Ywg0YHRgNCw0LfRgy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb250cm9sINCa0L7QvdGC0YDQvtC7INCw0LTRgNC10YHQsC5cbiAgICAgKiBAcGFyYW0gcXVhbGl0eSDQmtCw0YfQtdGB0YLQstC+ICjQv9C+0LvQvdC+0YLQsCkg0LDQtNGA0LXRgdCwINC40LvQuCBudWxsLCDQtdGB0LvQuCDQutCw0YfQtdGB0YLQstC+INC90LXQuNC30LLQtdGB0YLQvdC+LlxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRRdWFsaXR5KGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgcXVhbGl0eTogU2NTdWdnZXN0aW9uQWRkcmVzc1F1YWxpdHkgfCBudWxsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RhdGVPZihjb250cm9sKS5zZXQocXVhbGl0eSA9PT0gbnVsbCA/IG51bGwgOiB7IHF1YWxpdHksIHZhbHVlOiBjb250cm9sLnZhbHVlIH0pO1xuXG4gICAgICAgIGlmIChxdWFsaXR5ID09PSBTY1N1Z2dlc3Rpb25BZGRyZXNzUXVhbGl0eS5pbmNvbXBsZXRlIHx8IHF1YWxpdHkgPT09IFNjU3VnZ2VzdGlvbkFkZHJlc3NRdWFsaXR5LnVuZGV0ZXJtaW5lZCkge1xuICAgICAgICAgICAgY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINC60LDRh9C10YHRgtCy0L4g0LDQtNGA0LXRgdCwLCDQstGL0LHRgNCw0L3QvdC+0LPQviDQsiDQutC+0L3RgtGA0L7Qu9C1LCDQu9C40LHQviBudWxsLCDQtdGB0LvQuCDQsNC00YDQtdGBINC40Lcg0L/QvtC00YHQutCw0LfQvtC6XG4gICAgICog0L3QtSDQstGL0LHQuNGA0LDQu9GB0Y8g0LjQu9C4INC/0L7Qu9C1INC/0YPRgdGC0L7QtS4g0JrQsNGH0LXRgdGC0LLQviDQv9C+0LvQvdC+0LPQviDQsNC00YDQtdGB0LAg0LTQtdC50YHRgtCy0YPQtdGCLCDRgtC+0LvRjNC60L4g0L/QvtC60LAg0LfQvdCw0YfQtdC90LjQtSDQutC+0L3RgtGA0L7Qu9CwINC90LUg0LjQt9C80LXQvdC40LvQvtGB0YxcbiAgICAgKiDQv9C+0YHQu9C1INCy0YvQsdC+0YDQsDsg0LrQsNGH0LXRgdGC0LLQviDQvdC10L/QvtC70L3QvtCz0L4g0LDQtNGA0LXRgdCwINC4INCw0LTRgNC10YHQsCDRgSDQvdC10L7Qv9GA0LXQtNC10LvRkdC90L3QvtC5INC/0L7Qu9C90L7RgtC+0Lkg0LTQtdC50YHRgtCy0YPQtdGCXG4gICAgICog0LTQviDQstGL0LHQvtGA0LAg0LTRgNGD0LPQvtC5INC/0L7QtNGB0LrQsNC30LrQuCDQuNC70Lgg0L/QvtC70L3QvtC5INC+0YfQuNGB0YLQutC4INC/0L7Qu9GPLCDQsiDRgtC+0Lwg0YfQuNGB0LvQtSDQv9C+0YHQu9C1INGA0YPRh9C90L7QuSDQv9GA0LDQstC60Lgg0YLQtdC60YHRgtCwLlxuICAgICAqXG4gICAgICogQHBhcmFtIGNvbnRyb2wg0JrQvtC90YLRgNC+0Lsg0LDQtNGA0LXRgdCwLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRRdWFsaXR5KGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFNjU3VnZ2VzdGlvbkFkZHJlc3NRdWFsaXR5IHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zdGF0ZU9mKGNvbnRyb2wpKCk7XG5cbiAgICAgICAgaWYgKCFzdGF0ZSB8fCBTY0FkZHJlc3NRdWFsaXR5U2VydmljZS5pc0VtcHR5QWRkcmVzcyhjb250cm9sLnZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3RhdGUucXVhbGl0eSA9PT0gU2NTdWdnZXN0aW9uQWRkcmVzc1F1YWxpdHkuY29tcGxldGUpIHtcbiAgICAgICAgICAgIHJldHVybiBzdGF0ZS52YWx1ZSA9PT0gY29udHJvbC52YWx1ZSA/IFNjU3VnZ2VzdGlvbkFkZHJlc3NRdWFsaXR5LmNvbXBsZXRlIDogbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdGF0ZS5xdWFsaXR5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCX0LDQtNCw0ZHRgiDQutCw0YfQtdGB0YLQstC+INCw0LTRgNC10YHQvtCyINC+0YDQs9Cw0L3QuNC30LDRhtC40Lgg0LrQvtC90YLRgNC+0LvQsNC8INCz0YDRg9C/0L/RiyDQvdCwINC+0YHQvdC+0LLQtSDQstGL0LHRgNCw0L3QvdC+0Lkg0L/QvtC00YHQutCw0LfQutC4LlxuICAgICAqINCa0LDRh9C10YHRgtCy0L4g0L/RgNC40LzQtdC90Y/QtdGC0YHRjyDRgtC+0LvRjNC60L4g0Log0LfQsNC/0L7Qu9C90LXQvdC90YvQvCDQsNC00YDQtdGB0LDQvCDQv9C+0LTRgdC60LDQt9C60Lg6INC00LvRjyDQv9GD0YHRgtC+0LPQviDQsNC00YDQtdGB0LBcbiAgICAgKiDQvtC90L4g0YHQsdGA0LDRgdGL0LLQsNC10YLRgdGPLCDQtNCw0LbQtSDQtdGB0LvQuCDRgdC10YDQstC40YEg0L/QvtC00YHQutCw0LfQvtC6INC/0YDQuNGB0LvQsNC7INC00LvRjyDQvdC10LPQviDQt9C90LDRh9C10L3QuNC1LlxuICAgICAqXG4gICAgICogQHBhcmFtIGdyb3VwINCT0YDRg9C/0L/QsCDRgSDQutC+0L3RgtGA0L7Qu9Cw0LzQuCDQsNC00YDQtdGB0L7QsiDQvtGA0LPQsNC90LjQt9Cw0YbQuNC4LlxuICAgICAqIEBwYXJhbSBzdWdnZXN0aW9uINCe0LHRitC10LrRgiDQv9C+0LTRgdC60LDQt9C60Lgg0L/QviDQvtGA0LPQsNC90LjQt9Cw0YbQuNC4LlxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRPcmdhbml6YXRpb25BZGRyZXNzUXVhbGl0aWVzKGdyb3VwOiBBYnN0cmFjdENvbnRyb2wsIHN1Z2dlc3Rpb246IFNjSVN1Z2dlc3Rpb25Pcmdhbml6YXRpb24pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcXVhbGl0aWVzOiBSZWFkb25seUFycmF5PFtzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZCwgU2NTdWdnZXN0aW9uQWRkcmVzc1F1YWxpdHkgfCB1bmRlZmluZWRdPiA9IFtcbiAgICAgICAgICAgIFsnbGVnYWxBZGRyZXNzJywgc3VnZ2VzdGlvbi5sZWdhbEFkZHJlc3MsIHN1Z2dlc3Rpb24ubGVnYWxBZGRyZXNzUXVhbGl0eV0sXG4gICAgICAgICAgICBbJ3Bvc3RhbEFkZHJlc3MnLCBzdWdnZXN0aW9uLnBvc3RhbEFkZHJlc3MsIHN1Z2dlc3Rpb24ucG9zdGFsQWRkcmVzc1F1YWxpdHldLFxuICAgICAgICAgICAgWydhY3R1YWxBZGRyZXNzJywgc3VnZ2VzdGlvbi5hY3R1YWxBZGRyZXNzLCBzdWdnZXN0aW9uLmFjdHVhbEFkZHJlc3NRdWFsaXR5XSxcbiAgICAgICAgXTtcblxuICAgICAgICBxdWFsaXRpZXMuZm9yRWFjaCgoW2NvbnRyb2xOYW1lLCBhZGRyZXNzLCBxdWFsaXR5XSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29udHJvbCA9IGdyb3VwLmdldChjb250cm9sTmFtZSk7XG5cbiAgICAgICAgICAgIGlmIChjb250cm9sKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRRdWFsaXR5KGNvbnRyb2wsIGFkZHJlc3MgPyAocXVhbGl0eSA/PyBudWxsKSA6IG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC60LvRjtGH0LDQtdGCINC40LvQuCDQvtGC0LrQu9GO0YfQsNC10YIg0LrQvtC90YLRgNC+0LvRjCDQutCw0YfQtdGB0YLQstCwINCw0LTRgNC10YHQsCDQtNC70Y8g0LrQvtC90YLRgNC+0LvQsCDQuCDQv9C10YDQtdGB0YfQuNGC0YvQstCw0LXRgiDQtdCz0L4g0LLQsNC70LjQtNC90L7RgdGC0Ywg0LHQtdC3INGA0LDRgdGB0YvQu9C60Lgg0YHQvtCx0YvRgtC40LkuXG4gICAgICog0KHQvtGF0YDQsNC90ZHQvdC90L7QtSDQutCw0YfQtdGB0YLQstC+INC/0YDQuCDQvtGC0LrQu9GO0YfQtdC90LjQuCDQvdC1INGC0LXRgNGP0LXRgtGB0Y8g0Lgg0YHQvdC+0LLQsCDRg9GH0LjRgtGL0LLQsNC10YLRgdGPINC/0L7RgdC70LUg0LLQutC70Y7Rh9C10L3QuNGPLlxuICAgICAqINCS0YvQt9GL0LLQsNGC0Ywg0L/RgNC4INGB0LzQtdC90LUg0LfQvdCw0YfQtdC90LjRjyDRhNC+0YDQvNGLLCDQsCDQvdC1INC40Lcg0YXRg9C60L7QsiDQv9GA0L7QstC10YDQutC4INC40LfQvNC10L3QtdC90LjQuSAobmdPbkNoYW5nZXMg0Lgg0YIu0L8uKSxcbiAgICAgKiDRh9GC0L7QsdGLINGA0L7QtNC40YLQtdC70YzRgdC60LjQtSDRiNCw0LHQu9C+0L3RiyDRgdGA0LDQt9GDINCy0LjQtNC10LvQuCDQsNC60YLRg9Cw0LvRjNC90YPRjiDQstCw0LvQuNC00L3QvtGB0YLRjC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb250cm9sINCa0L7QvdGC0YDQvtC7INCw0LTRgNC10YHQsC5cbiAgICAgKiBAcGFyYW0gZW5hYmxlZCDQn9GA0LjQt9C90LDQuiwg0YfRgtC+INC60L7QvdGC0YDQvtC70Ywg0LrQsNGH0LXRgdGC0LLQsCDQsNC00YDQtdGB0LAg0LLQutC70Y7Rh9GR0L0uXG4gICAgICovXG4gICAgcHVibGljIHNldFF1YWxpdHlDaGVja0VuYWJsZWQoY29udHJvbDogQWJzdHJhY3RDb250cm9sLCBlbmFibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNoZWNrRW5hYmxlZCA9IHRoaXMuY2hlY2tFbmFibGVkT2YoY29udHJvbCk7XG5cbiAgICAgICAgaWYgKHVudHJhY2tlZChjaGVja0VuYWJsZWQpID09PSBlbmFibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyDQktGL0LfQvtCyINCy0L7Qt9C80L7QttC10L0g0LLQviDQstGA0LXQvNGPINC+0YLRgNC40YHQvtCy0LrQuCDRiNCw0LHQu9C+0L3QsCAo0L/QtdGA0LLQsNGPINC/0L7QtNC/0LjRgdC60LAgYXN5bmMgcGlwZSksINCz0LTQtSDQt9Cw0L/QuNGB0Ywg0YHQuNCz0L3QsNC70L7QsiDQt9Cw0L/RgNC10YnQtdC90LAuXG4gICAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgICAgICBjaGVja0VuYWJsZWQuc2V0KGVuYWJsZWQpO1xuICAgICAgICB9KTtcbiAgICAgICAgY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDQv9GA0LjQt9C90LDQuiwg0YfRgtC+INC60L7QvdGC0YDQvtC70Ywg0LrQsNGH0LXRgdGC0LLQsCDQsNC00YDQtdGB0LAg0LTQu9GPINC60L7QvdGC0YDQvtC70LAg0LLQutC70Y7Rh9GR0L0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29udHJvbCDQmtC+0L3RgtGA0L7QuyDQsNC00YDQtdGB0LAuXG4gICAgICovXG4gICAgcHVibGljIGlzUXVhbGl0eUNoZWNrRW5hYmxlZChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tFbmFibGVkT2YoY29udHJvbCkoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDQvtGI0LjQsdC60YMg0L3QtdC/0L7Qu9C90L7Qs9C+INCw0LTRgNC10YHQsCDQu9C40LHQviBudWxsLCDQtdGB0LvQuCDQutC+0L3RgtGA0L7QuyDQvNC+0LbQvdC+INC+0YLQv9GA0LDQstC70Y/RgtGMOiDQutC+0L3RgtGA0L7Qu9GMINC60LDRh9C10YHRgtCy0LAg0L7RgtC60LvRjtGH0ZHQvSxcbiAgICAgKiDQsdC70L7QutC40YDQvtCy0LrQsCDQstGL0LrQu9GO0YfQtdC90LAg0YLQvtC60LXQvdC+0Lwge0BsaW5rIFNDX0JMT0NLX0lOQ09NUExFVEVfQUREUkVTU30g0LjQu9C4INCw0LTRgNC10YEg0L3QtSDQvdC10L/QvtC70L3Ri9C5LlxuICAgICAqINCU0LvRjyDQvtGH0LjRidC10L3QvdC+0LPQviDQv9C+0LvRjyDRgdCx0YDQsNGB0YvQstCw0LXRgiDRgdC+0YXRgNCw0L3RkdC90L3QvtC1INC60LDRh9C10YHRgtCy0L4g0LDQtNGA0LXRgdCwLlxuICAgICAqXG4gICAgICogQHBhcmFtIGNvbnRyb2wg0JrQvtC90YLRgNC+0Lsg0LDQtNGA0LXRgdCwLlxuICAgICAqL1xuICAgIHB1YmxpYyB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgICAgIHRoaXMucmVzZXRRdWFsaXR5T2ZFbXB0eUFkZHJlc3MoY29udHJvbCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYmxvY2tJbmNvbXBsZXRlQWRkcmVzcyAmJiB0aGlzLmlzUXVhbGl0eUNoZWNrRW5hYmxlZChjb250cm9sKSAmJiB0aGlzLmdldFF1YWxpdHkoY29udHJvbCkgPT09IFNjU3VnZ2VzdGlvbkFkZHJlc3NRdWFsaXR5LmluY29tcGxldGVcbiAgICAgICAgICAgID8geyBpbmNvbXBsZXRlQWRkcmVzczogdGhpcy5pbmNvbXBsZXRlQWRkcmVzc0Vycm9yIH1cbiAgICAgICAgICAgIDogbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDRgtC10LrRgdGCINC/0YDQtdC00YPQv9GA0LXQttC00LXQvdC40Y8g0L4g0L3QtdC+0LHRhdC+0LTQuNC80L7RgdGC0Lgg0L/RgNC+0LLQtdGA0LjRgtGMINCy0YvQsdGA0LDQvdC90YvQuSDQsNC00YDQtdGBINC70LjQsdC+IG51bGwsINC60L7Qs9C00LAg0L/RgNC10LTRg9C/0YDQtdC20LTQtdC90LjQtSDQvdC1INGC0YDQtdCx0YPQtdGC0YHRjyxcbiAgICAgKiDQsiDRgtC+0Lwg0YfQuNGB0LvQtSDQtNC70Y8g0L/Rg9GB0YLQvtCz0L4g0L/QvtC70Y8uINCU0LvRjyDQvdC10L/QvtC70L3QvtCz0L4g0LDQtNGA0LXRgdCwINC/0YDQuCDQstC60LvRjtGH0ZHQvdC90L7QuSDQsdC70L7QutC40YDQvtCy0LrQtSDQvtGC0L/RgNCw0LLQutC4INCy0LzQtdGB0YLQviDQv9GA0LXQtNGD0L/RgNC10LbQtNC10L3QuNGPXG4gICAgICog0L/QvtC60LDQt9GL0LLQsNC10YLRgdGPINC+0YjQuNCx0LrQsCDQstCw0LvQuNC00LDRgtC+0YDQsCB7QGxpbmsgdmFsaWRhdG9yfSwg0LXRgdC70Lgg0L7QvSDQv9C+0LTQutC70Y7Rh9GR0L0g0Log0LrQvtC90YLRgNC+0LvRgy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb250cm9sINCa0L7QvdGC0YDQvtC7INCw0LTRgNC10YHQsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0V2FybmluZ01lc3NhZ2UoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIGlmICghdGhpcy5pc1F1YWxpdHlDaGVja0VuYWJsZWQoY29udHJvbCkpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgc3dpdGNoICh0aGlzLmdldFF1YWxpdHkoY29udHJvbCkpIHtcbiAgICAgICAgICAgIGNhc2UgU2NTdWdnZXN0aW9uQWRkcmVzc1F1YWxpdHkudW5kZXRlcm1pbmVkOlxuICAgICAgICAgICAgICAgIHJldHVybiAn0J3QtSDRg9C00LDQu9C+0YHRjCDQvtC/0YDQtdC00LXQu9C40YLRjCDQv9C+0LvQvdC+0YLRgyDQsNC00YDQtdGB0LAsINC/0YDQvtCy0LXRgNGM0YLQtSDQtdCz0L4nO1xuICAgICAgICAgICAgY2FzZSBTY1N1Z2dlc3Rpb25BZGRyZXNzUXVhbGl0eS5pbmNvbXBsZXRlOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmJsb2NrSW5jb21wbGV0ZUFkZHJlc3MgJiYgY29udHJvbC5oYXNWYWxpZGF0b3IodGhpcy52YWxpZGF0b3IpID8gbnVsbCA6ICfQkNC00YDQtdGBINC90LXQv9C+0LvQvdGL0LksINC/0YDQvtCy0LXRgNGM0YLQtSDQtdCz0L4nO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINGB0LjQs9C90LDQuyDRgdC+0YHRgtC+0Y/QvdC40Y8g0LrQsNGH0LXRgdGC0LLQsCDQtNC70Y8g0LrQvtC90YLRgNC+0LvQsCwg0YHQvtC30LTQsNCy0LDRjyDQtdCz0L4g0L/RgNC4INC/0LXRgNCy0L7QvCDQvtCx0YDQsNGJ0LXQvdC40LguXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29udHJvbCDQmtC+0L3RgtGA0L7QuyDQsNC00YDQtdGB0LAuXG4gICAgICovXG4gICAgcHJpdmF0ZSBzdGF0ZU9mKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFdyaXRhYmxlU2lnbmFsPFNjSUFkZHJlc3NRdWFsaXR5U3RhdGUgfCBudWxsPiB7XG4gICAgICAgIGxldCBzdGF0ZSA9IHRoaXMuc3RhdGVzLmdldChjb250cm9sKTtcblxuICAgICAgICBpZiAoIXN0YXRlKSB7XG4gICAgICAgICAgICBzdGF0ZSA9IHNpZ25hbDxTY0lBZGRyZXNzUXVhbGl0eVN0YXRlIHwgbnVsbD4obnVsbCk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlcy5zZXQoY29udHJvbCwgc3RhdGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHN0YXRlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINGB0LjQs9C90LDQuyDQv9GA0LjQt9C90LDQutCwINCy0LrQu9GO0YfRkdC90L3QvtCz0L4g0LrQvtC90YLRgNC+0LvRjyDQutCw0YfQtdGB0YLQstCwINC00LvRjyDQutC+0L3RgtGA0L7Qu9CwLCDRgdC+0LfQtNCw0LLQsNGPINC10LPQviDQv9GA0Lgg0L/QtdGA0LLQvtC8INC+0LHRgNCw0YnQtdC90LjQuC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb250cm9sINCa0L7QvdGC0YDQvtC7INCw0LTRgNC10YHQsC5cbiAgICAgKi9cbiAgICBwcml2YXRlIGNoZWNrRW5hYmxlZE9mKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+IHtcbiAgICAgICAgbGV0IGNoZWNrRW5hYmxlZCA9IHRoaXMuY2hlY2tFbmFibGVkU3RhdGVzLmdldChjb250cm9sKTtcblxuICAgICAgICBpZiAoIWNoZWNrRW5hYmxlZCkge1xuICAgICAgICAgICAgY2hlY2tFbmFibGVkID0gc2lnbmFsKHRydWUpO1xuICAgICAgICAgICAgdGhpcy5jaGVja0VuYWJsZWRTdGF0ZXMuc2V0KGNvbnRyb2wsIGNoZWNrRW5hYmxlZCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY2hlY2tFbmFibGVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCh0LHRgNCw0YHRi9Cy0LDQtdGCINGB0L7RhdGA0LDQvdGR0L3QvdC+0LUg0LrQsNGH0LXRgdGC0LLQviDQsNC00YDQtdGB0LAsINC10YHQu9C4INC/0L7Qu9C1INC+0YfQuNGJ0LXQvdC+LlxuICAgICAqXG4gICAgICogQHBhcmFtIGNvbnRyb2wg0JrQvtC90YLRgNC+0Lsg0LDQtNGA0LXRgdCwLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVzZXRRdWFsaXR5T2ZFbXB0eUFkZHJlc3MoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zdGF0ZXMuZ2V0KGNvbnRyb2wpO1xuXG4gICAgICAgIGlmIChzdGF0ZSAmJiB1bnRyYWNrZWQoc3RhdGUpICYmIFNjQWRkcmVzc1F1YWxpdHlTZXJ2aWNlLmlzRW1wdHlBZGRyZXNzKGNvbnRyb2wudmFsdWUpKSB7XG4gICAgICAgICAgICAvLyDQn9GA0L7QstC10YDQutCwINCy0L7Qt9C80L7QttC90LAg0LLQviDQstGA0LXQvNGPINC+0YLRgNC40YHQvtCy0LrQuCDRiNCw0LHQu9C+0L3QsCwg0LPQtNC1INC30LDQv9C40YHRjCDRgdC40LPQvdCw0LvQvtCyINC30LDQv9GA0LXRidC10L3QsC5cbiAgICAgICAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgc3RhdGUuc2V0KG51bGwpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtaS1hZGRyZXNzLXF1YWxpdHktc3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvZGlyZWN0aXZlcy9hZGRyZXNzLXF1YWxpdHkvc2MtaS1hZGRyZXNzLXF1YWxpdHktc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNjU3VnZ2VzdGlvbkFkZHJlc3NRdWFsaXR5IH0gZnJvbSAnQHNuYWJjZW50ci9jbGllbnQtY29yZSc7XG5cbi8qKlxuICog0KHQvtGB0YLQvtGP0L3QuNC1INC60LDRh9C10YHRgtCy0LAg0LDQtNGA0LXRgdCwLCDQstGL0LHRgNCw0L3QvdC+0LPQviDQuNC3INC/0L7QtNGB0LrQsNC30L7Qui5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTY0lBZGRyZXNzUXVhbGl0eVN0YXRlIHtcbiAgICAvKipcbiAgICAgKiDQmtCw0YfQtdGB0YLQstC+ICjQv9C+0LvQvdC+0YLQsCkg0LDQtNGA0LXRgdCwLlxuICAgICAqL1xuICAgIHF1YWxpdHk6IFNjU3VnZ2VzdGlvbkFkZHJlc3NRdWFsaXR5O1xuXG4gICAgLyoqXG4gICAgICog0JfQvdCw0YfQtdC90LjQtSDQutC+0L3RgtGA0L7Qu9CwINC90LAg0LzQvtC80LXQvdGCINCy0YvQsdC+0YDQsCDQsNC00YDQtdGB0LAuXG4gICAgICovXG4gICAgdmFsdWU6IHVua25vd247XG59XG4iXX0=
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export * from './abstract-price-card/abstract-sc-price-card.directive';
|
|
2
|
+
export * from './address-quality/sc-address-quality.directive';
|
|
3
|
+
export * from './address-quality/sc-address-quality.service';
|
|
4
|
+
export * from './links';
|
|
5
|
+
export * from './next-input-focus/sc-next-input-focus.directive';
|
|
6
|
+
export * from './next-input-focus/sc-next-input-focus.module';
|
|
7
|
+
export * from './print/sc-print.directive';
|
|
8
|
+
export * from './sc-date-value-transformer.directive';
|
|
9
|
+
export * from './sc-focus-first-invalid-field.directive';
|
|
10
|
+
export * from './select-on-focusin/sc-select-on-focusin.directive';
|
|
11
|
+
export * from './terminal-link/sc-terminal-link.directive';
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvZGlyZWN0aXZlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHdEQUF3RCxDQUFDO0FBQ3ZFLGNBQWMsZ0RBQWdELENBQUM7QUFDL0QsY0FBYyw4Q0FBOEMsQ0FBQztBQUM3RCxjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLGtEQUFrRCxDQUFDO0FBQ2pFLGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYyxvREFBb0QsQ0FBQztBQUNuRSxjQUFjLDRDQUE0QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hYnN0cmFjdC1wcmljZS1jYXJkL2Fic3RyYWN0LXNjLXByaWNlLWNhcmQuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vYWRkcmVzcy1xdWFsaXR5L3NjLWFkZHJlc3MtcXVhbGl0eS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9hZGRyZXNzLXF1YWxpdHkvc2MtYWRkcmVzcy1xdWFsaXR5LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saW5rcyc7XG5leHBvcnQgKiBmcm9tICcuL25leHQtaW5wdXQtZm9jdXMvc2MtbmV4dC1pbnB1dC1mb2N1cy5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9uZXh0LWlucHV0LWZvY3VzL3NjLW5leHQtaW5wdXQtZm9jdXMubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vcHJpbnQvc2MtcHJpbnQuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vc2MtZGF0ZS12YWx1ZS10cmFuc2Zvcm1lci5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9zYy1mb2N1cy1maXJzdC1pbnZhbGlkLWZpZWxkLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlbGVjdC1vbi1mb2N1c2luL3NjLXNlbGVjdC1vbi1mb2N1c2luLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3Rlcm1pbmFsLWxpbmsvc2MtdGVybWluYWwtbGluay5kaXJlY3RpdmUnO1xuIl19
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export * from './sc-links';
|
|
2
|
+
export * from './sc-link-location';
|
|
3
|
+
export * from './sc-email-link.directive';
|
|
4
|
+
export * from './sc-tel-link.directive';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvZGlyZWN0aXZlcy9saW5rcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyx5QkFBeUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc2MtbGlua3MnO1xuZXhwb3J0ICogZnJvbSAnLi9zYy1saW5rLWxvY2F0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vc2MtZW1haWwtbGluay5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9zYy10ZWwtbGluay5kaXJlY3RpdmUnO1xuIl19
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { Directive, ElementRef, HostListener, inject, Input } from '@angular/core';
|
|
2
|
+
import { ScUserMetrikaGoalsEnum, ScUserMetrikaService } from '@snabcentr/client-core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
/**
|
|
5
|
+
* Директива, которая управляет свойствами ссылки адреса электронной почты.
|
|
6
|
+
*/
|
|
7
|
+
export class ScEmailLinkDirective {
|
|
8
|
+
constructor() {
|
|
9
|
+
/**
|
|
10
|
+
* Ссылка на HTML элемент тега `<a>`.
|
|
11
|
+
*/
|
|
12
|
+
this.elementReference = inject(ElementRef);
|
|
13
|
+
/**
|
|
14
|
+
* Сервис для сбора метрик о действиях пользователей.
|
|
15
|
+
*/
|
|
16
|
+
this.userMetrikaService = inject(ScUserMetrikaService);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Обработчик клика по ссылке.
|
|
20
|
+
*/
|
|
21
|
+
click() {
|
|
22
|
+
const email = /mailto:([^?]+)/.exec(this.elementReference.nativeElement.href)?.at(1);
|
|
23
|
+
if (email) {
|
|
24
|
+
this.userMetrikaService.emitUserMetrikaEvent({
|
|
25
|
+
target: ScUserMetrikaGoalsEnum.emailClick,
|
|
26
|
+
params: {
|
|
27
|
+
emailLocation: this.linkLocation,
|
|
28
|
+
email: email,
|
|
29
|
+
},
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScEmailLinkDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
34
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: ScEmailLinkDirective, isStandalone: true, selector: "a[scEmailLink]", inputs: { linkLocation: "linkLocation" }, host: { listeners: { "click": "click()" } }, ngImport: i0 }); }
|
|
35
|
+
}
|
|
36
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScEmailLinkDirective, decorators: [{
|
|
37
|
+
type: Directive,
|
|
38
|
+
args: [{
|
|
39
|
+
standalone: true,
|
|
40
|
+
selector: 'a[scEmailLink]',
|
|
41
|
+
}]
|
|
42
|
+
}], propDecorators: { linkLocation: [{
|
|
43
|
+
type: Input,
|
|
44
|
+
args: [{ required: true }]
|
|
45
|
+
}], click: [{
|
|
46
|
+
type: HostListener,
|
|
47
|
+
args: ['click']
|
|
48
|
+
}] } });
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtZW1haWwtbGluay5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvZGlyZWN0aXZlcy9saW5rcy9zYy1lbWFpbC1saW5rLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFJdEY7O0dBRUc7QUFLSCxNQUFNLE9BQU8sb0JBQW9CO0lBSmpDO1FBS0k7O1dBRUc7UUFDSyxxQkFBZ0IsR0FBa0MsTUFBTSxDQUFnQyxVQUFVLENBQUMsQ0FBQztRQVE1Rzs7V0FFRztRQUNjLHVCQUFrQixHQUF5QixNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztLQW1CNUY7SUFqQkc7O09BRUc7SUFFSyxLQUFLO1FBQ1QsTUFBTSxLQUFLLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXJGLElBQUksS0FBSyxFQUFFLENBQUM7WUFDUixJQUFJLENBQUMsa0JBQWtCLENBQUMsb0JBQW9CLENBQUM7Z0JBQ3pDLE1BQU0sRUFBRSxzQkFBc0IsQ0FBQyxVQUFVO2dCQUN6QyxNQUFNLEVBQUU7b0JBQ0osYUFBYSxFQUFFLElBQUksQ0FBQyxZQUFZO29CQUNoQyxLQUFLLEVBQUUsS0FBSztpQkFDZjthQUNKLENBQUMsQ0FBQztRQUNQLENBQUM7SUFDTCxDQUFDOytHQWpDUSxvQkFBb0I7bUdBQXBCLG9CQUFvQjs7NEZBQXBCLG9CQUFvQjtrQkFKaEMsU0FBUzttQkFBQztvQkFDUCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLGdCQUFnQjtpQkFDN0I7OEJBV1UsWUFBWTtzQkFEbEIsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBWWpCLEtBQUs7c0JBRFosWUFBWTt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIGluamVjdCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNjVXNlck1ldHJpa2FHb2Fsc0VudW0sIFNjVXNlck1ldHJpa2FTZXJ2aWNlIH0gZnJvbSAnQHNuYWJjZW50ci9jbGllbnQtY29yZSc7XG5cbmltcG9ydCB7IFNjTGlua0xvY2F0aW9uIH0gZnJvbSAnLi9zYy1saW5rLWxvY2F0aW9uJztcblxuLyoqXG4gKiDQlNC40YDQtdC60YLQuNCy0LAsINC60L7RgtC+0YDQsNGPINGD0L/RgNCw0LLQu9GP0LXRgiDRgdCy0L7QudGB0YLQstCw0LzQuCDRgdGB0YvQu9C60Lgg0LDQtNGA0LXRgdCwINGN0LvQtdC60YLRgNC+0L3QvdC+0Lkg0L/QvtGH0YLRiy5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ2Fbc2NFbWFpbExpbmtdJyxcbn0pXG5leHBvcnQgY2xhc3MgU2NFbWFpbExpbmtEaXJlY3RpdmUge1xuICAgIC8qKlxuICAgICAqINCh0YHRi9C70LrQsCDQvdCwIEhUTUwg0Y3Qu9C10LzQtdC90YIg0YLQtdCz0LAgYDxhPmAuXG4gICAgICovXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmZXJlbmNlOiBFbGVtZW50UmVmPEhUTUxBbmNob3JFbGVtZW50PiA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxBbmNob3JFbGVtZW50Pj4oRWxlbWVudFJlZik7XG5cbiAgICAvKipcbiAgICAgKiDQo9GB0LvQvtCy0L3QvtC1INC90LDQt9Cy0LDQvdC40LUg0LHQu9C+0LrQsCDQs9C00LUg0YDQsNGB0L/QvtC70L7QttC10L3QsCDRgdGB0YvQu9C60LAuXG4gICAgICovXG4gICAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgICBwdWJsaWMgbGlua0xvY2F0aW9uITogU2NMaW5rTG9jYXRpb247XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0LTQu9GPINGB0LHQvtGA0LAg0LzQtdGC0YDQuNC6INC+INC00LXQudGB0YLQstC40Y/RhSDQv9C+0LvRjNC30L7QstCw0YLQtdC70LXQuS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHVzZXJNZXRyaWthU2VydmljZTogU2NVc2VyTWV0cmlrYVNlcnZpY2UgPSBpbmplY3QoU2NVc2VyTWV0cmlrYVNlcnZpY2UpO1xuXG4gICAgLyoqXG4gICAgICog0J7QsdGA0LDQsdC+0YLRh9C40Log0LrQu9C40LrQsCDQv9C+INGB0YHRi9C70LrQtS5cbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gICAgcHJpdmF0ZSBjbGljaygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZW1haWwgPSAvbWFpbHRvOihbXj9dKykvLmV4ZWModGhpcy5lbGVtZW50UmVmZXJlbmNlLm5hdGl2ZUVsZW1lbnQuaHJlZik/LmF0KDEpO1xuXG4gICAgICAgIGlmIChlbWFpbCkge1xuICAgICAgICAgICAgdGhpcy51c2VyTWV0cmlrYVNlcnZpY2UuZW1pdFVzZXJNZXRyaWthRXZlbnQoe1xuICAgICAgICAgICAgICAgIHRhcmdldDogU2NVc2VyTWV0cmlrYUdvYWxzRW51bS5lbWFpbENsaWNrLFxuICAgICAgICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgICAgICAgICBlbWFpbExvY2F0aW9uOiB0aGlzLmxpbmtMb2NhdGlvbixcbiAgICAgICAgICAgICAgICAgICAgZW1haWw6IGVtYWlsLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtbGluay1sb2NhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9kaXJlY3RpdmVzL2xpbmtzL3NjLWxpbmstbG9jYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFR1aUxvb3NlVW5pb24gfSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcblxuLyoqXG4gKiDQotC40L8g0LTQsNC90L3Ri9GFINGD0YHQu9C+0LLQvdC+0LPQviDQvdCw0LfQstCw0L3QuNGPINCx0LvQvtC60LAg0LPQtNC1INGA0LDRgdC/0L7Qu9C+0LbQtdC90LAg0YHRgdGL0LvQutCwLlxuICovXG5leHBvcnQgdHlwZSBTY0xpbmtMb2NhdGlvbiA9IFR1aUxvb3NlVW5pb248XG4gICAgJ2NvbnRhY3QnIHwgJ3F1ZXN0aW9ucy1hbmQtYW5zd2VycycgfCAncHJvZmlsZScgfCAndXNlci1tYW5hZ2VycycgfCAnbWFuYWdlci1jYXJkJyB8ICdyZXRhaWxzLW1hcCcgfCAnbGFuZGluZycgfCAnZm9vdGVyJyB8ICdvcmRlcicgfCAndmFjYW5jaWVzJyB8ICdoZWFkZXInXG4+O1xuIl19
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ScPhoneFormatPipe } from '../../pipes';
|
|
2
|
+
import { ScEmailLinkDirective } from './sc-email-link.directive';
|
|
3
|
+
import { ScTelLinkDirective } from './sc-tel-link.directive';
|
|
4
|
+
/**
|
|
5
|
+
* Список директив ссылок.
|
|
6
|
+
*/
|
|
7
|
+
export const ScLinks = [ScTelLinkDirective, ScEmailLinkDirective, ScPhoneFormatPipe];
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtbGlua3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvZGlyZWN0aXZlcy9saW5rcy9zYy1saW5rcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDaEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFN0Q7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsQ0FBQyxrQkFBa0IsRUFBRSxvQkFBb0IsRUFBRSxpQkFBaUIsQ0FBVSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2NQaG9uZUZvcm1hdFBpcGUgfSBmcm9tICcuLi8uLi9waXBlcyc7XG5pbXBvcnQgeyBTY0VtYWlsTGlua0RpcmVjdGl2ZSB9IGZyb20gJy4vc2MtZW1haWwtbGluay5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgU2NUZWxMaW5rRGlyZWN0aXZlIH0gZnJvbSAnLi9zYy10ZWwtbGluay5kaXJlY3RpdmUnO1xuXG4vKipcbiAqINCh0L/QuNGB0L7QuiDQtNC40YDQtdC60YLQuNCyINGB0YHRi9C70L7Qui5cbiAqL1xuZXhwb3J0IGNvbnN0IFNjTGlua3MgPSBbU2NUZWxMaW5rRGlyZWN0aXZlLCBTY0VtYWlsTGlua0RpcmVjdGl2ZSwgU2NQaG9uZUZvcm1hdFBpcGVdIGFzIGNvbnN0O1xuIl19
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { Directive, ElementRef, HostListener, inject, Input, Renderer2 } from '@angular/core';
|
|
2
|
+
import { ScPhoneService, ScUserMetrikaGoalsEnum, ScUserMetrikaService } from '@snabcentr/client-core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
/**
|
|
5
|
+
* Директива, которая управляет свойствами ссылки номера телефона для валидации значения номера телефона.
|
|
6
|
+
*/
|
|
7
|
+
export class ScTelLinkDirective {
|
|
8
|
+
constructor() {
|
|
9
|
+
/**
|
|
10
|
+
* Экземпляр базового класса для реализации пользовательского рендеринга.
|
|
11
|
+
*/
|
|
12
|
+
this.renderer = inject(Renderer2);
|
|
13
|
+
/**
|
|
14
|
+
* Ссылка на HTML элемент тега `<a>`.
|
|
15
|
+
*/
|
|
16
|
+
this.elementReference = inject(ElementRef);
|
|
17
|
+
/**
|
|
18
|
+
* Сервис для сбора метрик о действиях пользователей.
|
|
19
|
+
*/
|
|
20
|
+
this.userMetrikaService = inject(ScUserMetrikaService);
|
|
21
|
+
}
|
|
22
|
+
/** @inheritDoc */
|
|
23
|
+
ngOnChanges(changes) {
|
|
24
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
25
|
+
if (changes['tel']) {
|
|
26
|
+
this.updateLinkState();
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Обработчик клика по ссылке.
|
|
31
|
+
*/
|
|
32
|
+
click() {
|
|
33
|
+
if (ScPhoneService.isValidPhoneNumber(this.tel)) {
|
|
34
|
+
this.userMetrikaService.emitUserMetrikaEvent({
|
|
35
|
+
target: ScUserMetrikaGoalsEnum.phoneClick,
|
|
36
|
+
params: {
|
|
37
|
+
phoneLocation: this.linkLocation,
|
|
38
|
+
phone: this.tel,
|
|
39
|
+
},
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Обновляет состояние ссылки на основе валидности номера телефона.
|
|
45
|
+
*/
|
|
46
|
+
updateLinkState() {
|
|
47
|
+
if (ScPhoneService.isValidPhoneNumber(this.tel)) {
|
|
48
|
+
// Если номер валиден, активируем ссылку.
|
|
49
|
+
this.renderer.removeAttribute(this.elementReference.nativeElement, 'aria-disabled');
|
|
50
|
+
this.renderer.removeClass(this.elementReference.nativeElement, 'disabled');
|
|
51
|
+
this.renderer.setAttribute(this.elementReference.nativeElement, 'href', `tel:${ScPhoneService.formatPhoneNumber(this.tel)}`);
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
// Если номер невалиден, отключаем ссылку.
|
|
55
|
+
this.renderer.setAttribute(this.elementReference.nativeElement, 'aria-disabled', 'true');
|
|
56
|
+
this.renderer.addClass(this.elementReference.nativeElement, 'disabled');
|
|
57
|
+
this.renderer.removeAttribute(this.elementReference.nativeElement, 'href');
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScTelLinkDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
61
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: ScTelLinkDirective, isStandalone: true, selector: "a[scTelLink]", inputs: { tel: ["scTelLink", "tel"], linkLocation: "linkLocation" }, host: { listeners: { "click": "click()" } }, usesOnChanges: true, ngImport: i0 }); }
|
|
62
|
+
}
|
|
63
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScTelLinkDirective, decorators: [{
|
|
64
|
+
type: Directive,
|
|
65
|
+
args: [{
|
|
66
|
+
standalone: true,
|
|
67
|
+
selector: 'a[scTelLink]',
|
|
68
|
+
}]
|
|
69
|
+
}], propDecorators: { tel: [{
|
|
70
|
+
type: Input,
|
|
71
|
+
args: [{ alias: 'scTelLink', required: true }]
|
|
72
|
+
}], linkLocation: [{
|
|
73
|
+
type: Input,
|
|
74
|
+
args: [{ required: true }]
|
|
75
|
+
}], click: [{
|
|
76
|
+
type: HostListener,
|
|
77
|
+
args: ['click']
|
|
78
|
+
}] } });
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtdGVsLWxpbmsuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2RpcmVjdGl2ZXMvbGlua3Mvc2MtdGVsLWxpbmsuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFhLFNBQVMsRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDeEgsT0FBTyxFQUFFLGNBQWMsRUFBRSxzQkFBc0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQUl0Rzs7R0FFRztBQUtILE1BQU0sT0FBTyxrQkFBa0I7SUFKL0I7UUFLSTs7V0FFRztRQUNjLGFBQVEsR0FBYyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFekQ7O1dBRUc7UUFDSyxxQkFBZ0IsR0FBa0MsTUFBTSxDQUFnQyxVQUFVLENBQUMsQ0FBQztRQWM1Rzs7V0FFRztRQUNjLHVCQUFrQixHQUF5QixNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztLQTBDNUY7SUF4Q0csa0JBQWtCO0lBQ1gsV0FBVyxDQUFDLE9BQXNCO1FBQ3JDLHVFQUF1RTtRQUN2RSxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUMzQixDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBRUssS0FBSztRQUNULElBQUksY0FBYyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzlDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxvQkFBb0IsQ0FBQztnQkFDekMsTUFBTSxFQUFFLHNCQUFzQixDQUFDLFVBQVU7Z0JBQ3pDLE1BQU0sRUFBRTtvQkFDSixhQUFhLEVBQUUsSUFBSSxDQUFDLFlBQVk7b0JBQ2hDLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRztpQkFDbEI7YUFDSixDQUFDLENBQUM7UUFDUCxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ssZUFBZTtRQUNuQixJQUFJLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM5Qyx5Q0FBeUM7WUFDekMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsRUFBRSxlQUFlLENBQUMsQ0FBQztZQUNwRixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQzNFLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLEVBQUUsTUFBTSxFQUFFLE9BQU8sY0FBYyxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDakksQ0FBQzthQUFNLENBQUM7WUFDSiwwQ0FBMEM7WUFDMUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsRUFBRSxlQUFlLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDekYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsRUFBRSxVQUFVLENBQUMsQ0FBQztZQUN4RSxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQy9FLENBQUM7SUFDTCxDQUFDOytHQW5FUSxrQkFBa0I7bUdBQWxCLGtCQUFrQjs7NEZBQWxCLGtCQUFrQjtrQkFKOUIsU0FBUzttQkFBQztvQkFDUCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLGNBQWM7aUJBQzNCOzhCQWdCVSxHQUFHO3NCQURULEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBT3RDLFlBQVk7c0JBRGxCLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQW9CakIsS0FBSztzQkFEWixZQUFZO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgaW5qZWN0LCBJbnB1dCwgT25DaGFuZ2VzLCBSZW5kZXJlcjIsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNjUGhvbmVTZXJ2aWNlLCBTY1VzZXJNZXRyaWthR29hbHNFbnVtLCBTY1VzZXJNZXRyaWthU2VydmljZSB9IGZyb20gJ0BzbmFiY2VudHIvY2xpZW50LWNvcmUnO1xuXG5pbXBvcnQgeyBTY0xpbmtMb2NhdGlvbiB9IGZyb20gJy4vc2MtbGluay1sb2NhdGlvbic7XG5cbi8qKlxuICog0JTQuNGA0LXQutGC0LjQstCwLCDQutC+0YLQvtGA0LDRjyDRg9C/0YDQsNCy0LvRj9C10YIg0YHQstC+0LnRgdGC0LLQsNC80Lgg0YHRgdGL0LvQutC4INC90L7QvNC10YDQsCDRgtC10LvQtdGE0L7QvdCwINC00LvRjyDQstCw0LvQuNC00LDRhtC40Lgg0LfQvdCw0YfQtdC90LjRjyDQvdC+0LzQtdGA0LAg0YLQtdC70LXRhNC+0L3QsC5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ2Fbc2NUZWxMaW5rXScsXG59KVxuZXhwb3J0IGNsYXNzIFNjVGVsTGlua0RpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gICAgLyoqXG4gICAgICog0K3QutC30LXQvNC/0LvRj9GAINCx0LDQt9C+0LLQvtCz0L4g0LrQu9Cw0YHRgdCwINC00LvRjyDRgNC10LDQu9C40LfQsNGG0LjQuCDQv9C+0LvRjNC30L7QstCw0YLQtdC70YzRgdC60L7Qs9C+INGA0LXQvdC00LXRgNC40L3Qs9CwLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVuZGVyZXI6IFJlbmRlcmVyMiA9IGluamVjdChSZW5kZXJlcjIpO1xuXG4gICAgLyoqXG4gICAgICog0KHRgdGL0LvQutCwINC90LAgSFRNTCDRjdC70LXQvNC10L3RgiDRgtC10LPQsCBgPGE+YC5cbiAgICAgKi9cbiAgICBwcml2YXRlIGVsZW1lbnRSZWZlcmVuY2U6IEVsZW1lbnRSZWY8SFRNTEFuY2hvckVsZW1lbnQ+ID0gaW5qZWN0PEVsZW1lbnRSZWY8SFRNTEFuY2hvckVsZW1lbnQ+PihFbGVtZW50UmVmKTtcblxuICAgIC8qKlxuICAgICAqINCd0L7QvNC10YAg0YLQtdC70LXRhNC+0L3QsCwg0LrQvtGC0L7RgNGL0Lkg0LHRg9C00LXRgiDQv9GA0L7QstC10YDQtdC9INC90LAg0LLQsNC70LjQtNC90L7RgdGC0YwuXG4gICAgICovXG4gICAgQElucHV0KHsgYWxpYXM6ICdzY1RlbExpbmsnLCByZXF1aXJlZDogdHJ1ZSB9KVxuICAgIHB1YmxpYyB0ZWwhOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiDQo9GB0LvQvtCy0L3QvtC1INC90LDQt9Cy0LDQvdC40LUg0LHQu9C+0LrQsCDQs9C00LUg0YDQsNGB0L/QvtC70L7QttC10L3QsCDRgdGB0YvQu9C60LAuXG4gICAgICovXG4gICAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgICBwdWJsaWMgbGlua0xvY2F0aW9uITogU2NMaW5rTG9jYXRpb247XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0LTQu9GPINGB0LHQvtGA0LAg0LzQtdGC0YDQuNC6INC+INC00LXQudGB0YLQstC40Y/RhSDQv9C+0LvRjNC30L7QstCw0YLQtdC70LXQuS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHVzZXJNZXRyaWthU2VydmljZTogU2NVc2VyTWV0cmlrYVNlcnZpY2UgPSBpbmplY3QoU2NVc2VyTWV0cmlrYVNlcnZpY2UpO1xuXG4gICAgLyoqIEBpbmhlcml0RG9jICovXG4gICAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bm5lY2Vzc2FyeS1jb25kaXRpb25cbiAgICAgICAgaWYgKGNoYW5nZXNbJ3RlbCddKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUxpbmtTdGF0ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0J7QsdGA0LDQsdC+0YLRh9C40Log0LrQu9C40LrQsCDQv9C+INGB0YHRi9C70LrQtS5cbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gICAgcHJpdmF0ZSBjbGljaygpOiB2b2lkIHtcbiAgICAgICAgaWYgKFNjUGhvbmVTZXJ2aWNlLmlzVmFsaWRQaG9uZU51bWJlcih0aGlzLnRlbCkpIHtcbiAgICAgICAgICAgIHRoaXMudXNlck1ldHJpa2FTZXJ2aWNlLmVtaXRVc2VyTWV0cmlrYUV2ZW50KHtcbiAgICAgICAgICAgICAgICB0YXJnZXQ6IFNjVXNlck1ldHJpa2FHb2Fsc0VudW0ucGhvbmVDbGljayxcbiAgICAgICAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgICAgICAgICAgcGhvbmVMb2NhdGlvbjogdGhpcy5saW5rTG9jYXRpb24sXG4gICAgICAgICAgICAgICAgICAgIHBob25lOiB0aGlzLnRlbCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQntCx0L3QvtCy0LvRj9C10YIg0YHQvtGB0YLQvtGP0L3QuNC1INGB0YHRi9C70LrQuCDQvdCwINC+0YHQvdC+0LLQtSDQstCw0LvQuNC00L3QvtGB0YLQuCDQvdC+0LzQtdGA0LAg0YLQtdC70LXRhNC+0L3QsC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHVwZGF0ZUxpbmtTdGF0ZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKFNjUGhvbmVTZXJ2aWNlLmlzVmFsaWRQaG9uZU51bWJlcih0aGlzLnRlbCkpIHtcbiAgICAgICAgICAgIC8vINCV0YHQu9C4INC90L7QvNC10YAg0LLQsNC70LjQtNC10L0sINCw0LrRgtC40LLQuNGA0YPQtdC8INGB0YHRi9C70LrRgy5cbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQXR0cmlidXRlKHRoaXMuZWxlbWVudFJlZmVyZW5jZS5uYXRpdmVFbGVtZW50LCAnYXJpYS1kaXNhYmxlZCcpO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLmVsZW1lbnRSZWZlcmVuY2UubmF0aXZlRWxlbWVudCwgJ2Rpc2FibGVkJyk7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmVsZW1lbnRSZWZlcmVuY2UubmF0aXZlRWxlbWVudCwgJ2hyZWYnLCBgdGVsOiR7U2NQaG9uZVNlcnZpY2UuZm9ybWF0UGhvbmVOdW1iZXIodGhpcy50ZWwpfWApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8g0JXRgdC70Lgg0L3QvtC80LXRgCDQvdC10LLQsNC70LjQtNC10L0sINC+0YLQutC70Y7Rh9Cw0LXQvCDRgdGB0YvQu9C60YMuXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmVsZW1lbnRSZWZlcmVuY2UubmF0aXZlRWxlbWVudCwgJ2FyaWEtZGlzYWJsZWQnLCAndHJ1ZScpO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmVsZW1lbnRSZWZlcmVuY2UubmF0aXZlRWxlbWVudCwgJ2Rpc2FibGVkJyk7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUF0dHJpYnV0ZSh0aGlzLmVsZW1lbnRSZWZlcmVuY2UubmF0aXZlRWxlbWVudCwgJ2hyZWYnKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/* eslint-disable lodash/prefer-lodash-method */
|
|
2
|
+
import { ContentChildren, Directive, ElementRef, HostListener, inject } from '@angular/core';
|
|
3
|
+
import { AbstractTuiControl } from '@taiga-ui/legacy';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
/**
|
|
6
|
+
* Директива для перехода по нажатию клавиши enter на следующее поле ввода формы.
|
|
7
|
+
* Поддерживает как legacy Taiga UI v3 контролы (AbstractTuiControl), так и новые v4
|
|
8
|
+
* (tui-textfield + нативные input) — через DOM-fallback.
|
|
9
|
+
*/
|
|
10
|
+
export class ScNextInputFocusDirective {
|
|
11
|
+
constructor() {
|
|
12
|
+
/**
|
|
13
|
+
* Элемент формы.
|
|
14
|
+
*/
|
|
15
|
+
this.el = inject(ElementRef);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* По Enter — переход на следующее редактируемое поле формы.
|
|
19
|
+
* Сначала пробует legacy Taiga UI v3 контролы, затем DOM fallback для v4.
|
|
20
|
+
*
|
|
21
|
+
* @param event Событие нажатия клавиши.
|
|
22
|
+
*/
|
|
23
|
+
onFormKeyDownEnter(event) {
|
|
24
|
+
if (event.code !== 'Enter' && event.key !== 'Enter') {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
event.preventDefault();
|
|
28
|
+
// Taiga UI v3: переход через AbstractTuiControl (legacy-обёртки tui-input, tui-input-number и др.).
|
|
29
|
+
const legacy = this.legacyControls.toArray();
|
|
30
|
+
const legacyIndex = legacy.findIndex((control) => control.focused);
|
|
31
|
+
if (legacyIndex !== -1) {
|
|
32
|
+
const next = legacy[legacyIndex + 1]?.nativeFocusableElement;
|
|
33
|
+
if (next) {
|
|
34
|
+
next.focus();
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
// Taiga UI v4: переход через DOM — ищем нативные input внутри формы (tui-textfield + директивы).
|
|
39
|
+
const { target } = event;
|
|
40
|
+
if (!(target instanceof HTMLInputElement) || target.type === 'range') {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
// eslint-disable-next-line unicorn/prefer-spread
|
|
44
|
+
const inputs = Array.from(this.el.nativeElement.querySelectorAll('input')).filter((element) => element.type !== 'range' && !element.readOnly && !element.disabled);
|
|
45
|
+
const currentIndex = inputs.indexOf(target);
|
|
46
|
+
if (currentIndex === -1) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
const nextInput = inputs.at(currentIndex + 1);
|
|
50
|
+
if (nextInput) {
|
|
51
|
+
nextInput.focus();
|
|
52
|
+
nextInput.select();
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScNextInputFocusDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
56
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: ScNextInputFocusDirective, selector: "form[ScNextInputFocus]", host: { listeners: { "keydown": "onFormKeyDownEnter($event)" } }, queries: [{ propertyName: "legacyControls", predicate: AbstractTuiControl, descendants: true }], ngImport: i0 }); }
|
|
57
|
+
}
|
|
58
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScNextInputFocusDirective, decorators: [{
|
|
59
|
+
type: Directive,
|
|
60
|
+
args: [{
|
|
61
|
+
selector: 'form[ScNextInputFocus]',
|
|
62
|
+
}]
|
|
63
|
+
}], propDecorators: { legacyControls: [{
|
|
64
|
+
type: ContentChildren,
|
|
65
|
+
args: [AbstractTuiControl, { descendants: true }]
|
|
66
|
+
}], onFormKeyDownEnter: [{
|
|
67
|
+
type: HostListener,
|
|
68
|
+
args: ['keydown', ['$event']]
|
|
69
|
+
}] } });
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtbmV4dC1pbnB1dC1mb2N1cy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvZGlyZWN0aXZlcy9uZXh0LWlucHV0LWZvY3VzL3NjLW5leHQtaW5wdXQtZm9jdXMuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdEQUFnRDtBQUVoRCxPQUFPLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUN4RyxPQUFPLEVBQUUsa0JBQWtCLEVBQStCLE1BQU0sa0JBQWtCLENBQUM7O0FBRW5GOzs7O0dBSUc7QUFJSCxNQUFNLE9BQU8seUJBQXlCO0lBSHRDO1FBWUk7O1dBRUc7UUFDYyxPQUFFLEdBQWdDLE1BQU0sQ0FBOEIsVUFBVSxDQUFDLENBQUM7S0FzRHRHO0lBcERHOzs7OztPQUtHO0lBRUksa0JBQWtCLENBQUMsS0FBb0I7UUFDMUMsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLE9BQU8sSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLE9BQU8sRUFBRSxDQUFDO1lBQ2xELE9BQU87UUFDWCxDQUFDO1FBRUQsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBRXZCLG9HQUFvRztRQUNwRyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzdDLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVuRSxJQUFJLFdBQVcsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3JCLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLEVBQUUsc0JBQXNCLENBQUM7WUFFN0QsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDUCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBRWIsT0FBTztZQUNYLENBQUM7UUFDTCxDQUFDO1FBRUQsaUdBQWlHO1FBQ2pHLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFFekIsSUFBSSxDQUFDLENBQUMsTUFBTSxZQUFZLGdCQUFnQixDQUFDLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUNuRSxPQUFPO1FBQ1gsQ0FBQztRQUVELGlEQUFpRDtRQUNqRCxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFtQixPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FDL0YsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEtBQUssT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQ2xGLENBQUM7UUFDRixNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTVDLElBQUksWUFBWSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDdEIsT0FBTztRQUNYLENBQUM7UUFFRCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQztRQUU5QyxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ1osU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2xCLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN2QixDQUFDO0lBQ0wsQ0FBQzsrR0FqRVEseUJBQXlCO21HQUF6Qix5QkFBeUIsK0pBTWpCLGtCQUFrQjs7NEZBTjFCLHlCQUF5QjtrQkFIckMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsd0JBQXdCO2lCQUNyQzs4QkFRb0IsY0FBYztzQkFEOUIsZUFBZTt1QkFBQyxrQkFBa0IsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7Z0JBZW5ELGtCQUFrQjtzQkFEeEIsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBsb2Rhc2gvcHJlZmVyLWxvZGFzaC1tZXRob2QgKi9cblxuaW1wb3J0IHsgQ29udGVudENoaWxkcmVuLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgaW5qZWN0LCBRdWVyeUxpc3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0VHVpQ29udHJvbCwgVHVpRm9jdXNhYmxlRWxlbWVudEFjY2Vzc29yIH0gZnJvbSAnQHRhaWdhLXVpL2xlZ2FjeSc7XG5cbi8qKlxuICog0JTQuNGA0LXQutGC0LjQstCwINC00LvRjyDQv9C10YDQtdGF0L7QtNCwINC/0L4g0L3QsNC20LDRgtC40Y4g0LrQu9Cw0LLQuNGI0LggZW50ZXIg0L3QsCDRgdC70LXQtNGD0Y7RidC10LUg0L/QvtC70LUg0LLQstC+0LTQsCDRhNC+0YDQvNGLLlxuICog0J/QvtC00LTQtdGA0LbQuNCy0LDQtdGCINC60LDQuiBsZWdhY3kgVGFpZ2EgVUkgdjMg0LrQvtC90YLRgNC+0LvRiyAoQWJzdHJhY3RUdWlDb250cm9sKSwg0YLQsNC6INC4INC90L7QstGL0LUgdjRcbiAqICh0dWktdGV4dGZpZWxkICsg0L3QsNGC0LjQstC90YvQtSBpbnB1dCkg4oCUINGH0LXRgNC10LcgRE9NLWZhbGxiYWNrLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ2Zvcm1bU2NOZXh0SW5wdXRGb2N1c10nLFxufSlcbmV4cG9ydCBjbGFzcyBTY05leHRJbnB1dEZvY3VzRGlyZWN0aXZlIHtcbiAgICAvKipcbiAgICAgKiBMZWdhY3kgVGFpZ2EgVUkgdjMg0LrQvtC90YLRgNC+0LvRiyAodHVpLWlucHV0LCB0dWktaW5wdXQtbnVtYmVyINC4INGCLtC0LikuXG4gICAgICpcbiAgICAgKiBAZGVwcmVjYXRlZCDQkdGD0LTQtdGCINGD0LTQsNC70LXQvdC+INC/0L7RgdC70LUg0L/QtdGA0LXRhdC+0LTQsCDQvdCwIFRhaWdhIFVJIHY1LlxuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oQWJzdHJhY3RUdWlDb250cm9sLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gICAgcHJpdmF0ZSByZWFkb25seSBsZWdhY3lDb250cm9sczogUXVlcnlMaXN0PFR1aUZvY3VzYWJsZUVsZW1lbnRBY2Nlc3Nvcj47XG5cbiAgICAvKipcbiAgICAgKiDQrdC70LXQvNC10L3RgiDRhNC+0YDQvNGLLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZWw6IEVsZW1lbnRSZWY8SFRNTEZvcm1FbGVtZW50PiA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxGb3JtRWxlbWVudD4+KEVsZW1lbnRSZWYpO1xuXG4gICAgLyoqXG4gICAgICog0J/QviBFbnRlciDigJQg0L/QtdGA0LXRhdC+0LQg0L3QsCDRgdC70LXQtNGD0Y7RidC10LUg0YDQtdC00LDQutGC0LjRgNGD0LXQvNC+0LUg0L/QvtC70LUg0YTQvtGA0LzRiy5cbiAgICAgKiDQodC90LDRh9Cw0LvQsCDQv9GA0L7QsdGD0LXRgiBsZWdhY3kgVGFpZ2EgVUkgdjMg0LrQvtC90YLRgNC+0LvRiywg0LfQsNGC0LXQvCBET00gZmFsbGJhY2sg0LTQu9GPIHY0LlxuICAgICAqXG4gICAgICogQHBhcmFtIGV2ZW50INCh0L7QsdGL0YLQuNC1INC90LDQttCw0YLQuNGPINC60LvQsNCy0LjRiNC4LlxuICAgICAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyBvbkZvcm1LZXlEb3duRW50ZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50LmNvZGUgIT09ICdFbnRlcicgJiYgZXZlbnQua2V5ICE9PSAnRW50ZXInKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgIC8vIFRhaWdhIFVJIHYzOiDQv9C10YDQtdGF0L7QtCDRh9C10YDQtdC3IEFic3RyYWN0VHVpQ29udHJvbCAobGVnYWN5LdC+0LHRkdGA0YLQutC4IHR1aS1pbnB1dCwgdHVpLWlucHV0LW51bWJlciDQuCDQtNGALikuXG4gICAgICAgIGNvbnN0IGxlZ2FjeSA9IHRoaXMubGVnYWN5Q29udHJvbHMudG9BcnJheSgpO1xuICAgICAgICBjb25zdCBsZWdhY3lJbmRleCA9IGxlZ2FjeS5maW5kSW5kZXgoKGNvbnRyb2wpID0+IGNvbnRyb2wuZm9jdXNlZCk7XG5cbiAgICAgICAgaWYgKGxlZ2FjeUluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgY29uc3QgbmV4dCA9IGxlZ2FjeVtsZWdhY3lJbmRleCArIDFdPy5uYXRpdmVGb2N1c2FibGVFbGVtZW50O1xuXG4gICAgICAgICAgICBpZiAobmV4dCkge1xuICAgICAgICAgICAgICAgIG5leHQuZm9jdXMoKTtcblxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRhaWdhIFVJIHY0OiDQv9C10YDQtdGF0L7QtCDRh9C10YDQtdC3IERPTSDigJQg0LjRidC10Lwg0L3QsNGC0LjQstC90YvQtSBpbnB1dCDQstC90YPRgtGA0Lgg0YTQvtGA0LzRiyAodHVpLXRleHRmaWVsZCArINC00LjRgNC10LrRgtC40LLRiykuXG4gICAgICAgIGNvbnN0IHsgdGFyZ2V0IH0gPSBldmVudDtcblxuICAgICAgICBpZiAoISh0YXJnZXQgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50KSB8fCB0YXJnZXQudHlwZSA9PT0gJ3JhbmdlJykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vcHJlZmVyLXNwcmVhZFxuICAgICAgICBjb25zdCBpbnB1dHMgPSBBcnJheS5mcm9tKHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsPEhUTUxJbnB1dEVsZW1lbnQ+KCdpbnB1dCcpKS5maWx0ZXIoXG4gICAgICAgICAgICAoZWxlbWVudCkgPT4gZWxlbWVudC50eXBlICE9PSAncmFuZ2UnICYmICFlbGVtZW50LnJlYWRPbmx5ICYmICFlbGVtZW50LmRpc2FibGVkXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IGlucHV0cy5pbmRleE9mKHRhcmdldCk7XG5cbiAgICAgICAgaWYgKGN1cnJlbnRJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG5leHRJbnB1dCA9IGlucHV0cy5hdChjdXJyZW50SW5kZXggKyAxKTtcblxuICAgICAgICBpZiAobmV4dElucHV0KSB7XG4gICAgICAgICAgICBuZXh0SW5wdXQuZm9jdXMoKTtcbiAgICAgICAgICAgIG5leHRJbnB1dC5zZWxlY3QoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { ScNextInputFocusDirective } from './sc-next-input-focus.directive';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
/**
|
|
5
|
+
* Модуль директивы для перехода по нажатию клавиши enter на следующее поле ввода формы.
|
|
6
|
+
*/
|
|
7
|
+
export class ScNextInputFocusModule {
|
|
8
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScNextInputFocusModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
9
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: ScNextInputFocusModule, declarations: [ScNextInputFocusDirective], exports: [ScNextInputFocusDirective] }); }
|
|
10
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScNextInputFocusModule }); }
|
|
11
|
+
}
|
|
12
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScNextInputFocusModule, decorators: [{
|
|
13
|
+
type: NgModule,
|
|
14
|
+
args: [{
|
|
15
|
+
declarations: [ScNextInputFocusDirective],
|
|
16
|
+
exports: [ScNextInputFocusDirective],
|
|
17
|
+
}]
|
|
18
|
+
}] });
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtbmV4dC1pbnB1dC1mb2N1cy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvZGlyZWN0aXZlcy9uZXh0LWlucHV0LWZvY3VzL3NjLW5leHQtaW5wdXQtZm9jdXMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saUNBQWlDLENBQUM7O0FBRTVFOztHQUVHO0FBS0gsTUFBTSxPQUFPLHNCQUFzQjsrR0FBdEIsc0JBQXNCO2dIQUF0QixzQkFBc0IsaUJBSGhCLHlCQUF5QixhQUM5Qix5QkFBeUI7Z0hBRTFCLHNCQUFzQjs7NEZBQXRCLHNCQUFzQjtrQkFKbEMsUUFBUTttQkFBQztvQkFDTixZQUFZLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQztvQkFDekMsT0FBTyxFQUFFLENBQUMseUJBQXlCLENBQUM7aUJBQ3ZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU2NOZXh0SW5wdXRGb2N1c0RpcmVjdGl2ZSB9IGZyb20gJy4vc2MtbmV4dC1pbnB1dC1mb2N1cy5kaXJlY3RpdmUnO1xuXG4vKipcbiAqINCc0L7QtNGD0LvRjCDQtNC40YDQtdC60YLQuNCy0Ysg0LTQu9GPINC/0LXRgNC10YXQvtC00LAg0L/QviDQvdCw0LbQsNGC0LjRjiDQutC70LDQstC40YjQuCBlbnRlciDQvdCwINGB0LvQtdC00YPRjtGJ0LXQtSDQv9C+0LvQtSDQstCy0L7QtNCwINGE0L7RgNC80YsuXG4gKi9cbkBOZ01vZHVsZSh7XG4gICAgZGVjbGFyYXRpb25zOiBbU2NOZXh0SW5wdXRGb2N1c0RpcmVjdGl2ZV0sXG4gICAgZXhwb3J0czogW1NjTmV4dElucHV0Rm9jdXNEaXJlY3RpdmVdLFxufSlcbmV4cG9ydCBjbGFzcyBTY05leHRJbnB1dEZvY3VzTW9kdWxlIHt9XG4iXX0=
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { computed, Directive, inject, input } from '@angular/core';
|
|
2
|
+
import { toSignal } from '@angular/core/rxjs-interop';
|
|
3
|
+
import { SC_HIDDEN_PRINT_ELEMENTS } from '../../providers/sc-hidden-print-elements.token';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
/**
|
|
6
|
+
* Директива печати страницы.
|
|
7
|
+
*/
|
|
8
|
+
export class ScPrintDirective {
|
|
9
|
+
constructor() {
|
|
10
|
+
/**
|
|
11
|
+
* Идентификатор элемента.
|
|
12
|
+
*/
|
|
13
|
+
this.elementId = input.required({ alias: 'scPrint' });
|
|
14
|
+
/**
|
|
15
|
+
* {@link BehaviorSubject} данных скрытых элементов.
|
|
16
|
+
*/
|
|
17
|
+
this.hiddenElements = toSignal(inject(SC_HIDDEN_PRINT_ELEMENTS), { requireSync: true });
|
|
18
|
+
/**
|
|
19
|
+
* Признак, что элемент скрыт при печати.
|
|
20
|
+
*/
|
|
21
|
+
this.isHidden = computed(() => this.hiddenElements().includes(this.elementId()) || this.elementId() === 'defaultNoPrint');
|
|
22
|
+
}
|
|
23
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScPrintDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
24
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.14", type: ScPrintDirective, isStandalone: true, selector: "[scPrint]", inputs: { elementId: { classPropertyName: "elementId", publicName: "scPrint", isSignal: true, isRequired: true, transformFunction: null } }, host: { properties: { "class.no-print": "isHidden()" } }, ngImport: i0 }); }
|
|
25
|
+
}
|
|
26
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScPrintDirective, decorators: [{
|
|
27
|
+
type: Directive,
|
|
28
|
+
args: [{
|
|
29
|
+
standalone: true,
|
|
30
|
+
selector: '[scPrint]',
|
|
31
|
+
host: {
|
|
32
|
+
'[class.no-print]': 'isHidden()',
|
|
33
|
+
},
|
|
34
|
+
}]
|
|
35
|
+
}] });
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtcHJpbnQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2RpcmVjdGl2ZXMvcHJpbnQvc2MtcHJpbnQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQWUsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXRELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDOztBQUUxRjs7R0FFRztBQVFILE1BQU0sT0FBTyxnQkFBZ0I7SUFQN0I7UUFRSTs7V0FFRztRQUNhLGNBQVMsR0FBd0IsS0FBSyxDQUFDLFFBQVEsQ0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBRTlGOztXQUVHO1FBQ2MsbUJBQWMsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLHdCQUF3QixDQUFDLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUVwRzs7V0FFRztRQUNnQixhQUFRLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLGdCQUFnQixDQUFDLENBQUM7S0FDM0k7K0dBZlksZ0JBQWdCO21HQUFoQixnQkFBZ0I7OzRGQUFoQixnQkFBZ0I7a0JBUDVCLFNBQVM7bUJBQUM7b0JBQ1AsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSxXQUFXO29CQUNyQixJQUFJLEVBQUU7d0JBQ0Ysa0JBQWtCLEVBQUUsWUFBWTtxQkFDbkM7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21wdXRlZCwgRGlyZWN0aXZlLCBpbmplY3QsIGlucHV0LCBJbnB1dFNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbmltcG9ydCB7IFNDX0hJRERFTl9QUklOVF9FTEVNRU5UUyB9IGZyb20gJy4uLy4uL3Byb3ZpZGVycy9zYy1oaWRkZW4tcHJpbnQtZWxlbWVudHMudG9rZW4nO1xuXG4vKipcbiAqINCU0LjRgNC10LrRgtC40LLQsCDQv9C10YfQsNGC0Lgg0YHRgtGA0LDQvdC40YbRiy5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ1tzY1ByaW50XScsXG4gICAgaG9zdDoge1xuICAgICAgICAnW2NsYXNzLm5vLXByaW50XSc6ICdpc0hpZGRlbigpJyxcbiAgICB9LFxufSlcbmV4cG9ydCBjbGFzcyBTY1ByaW50RGlyZWN0aXZlIHtcbiAgICAvKipcbiAgICAgKiDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDRjdC70LXQvNC10L3RgtCwLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBlbGVtZW50SWQ6IElucHV0U2lnbmFsPHN0cmluZz4gPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KHsgYWxpYXM6ICdzY1ByaW50JyB9KTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBCZWhhdmlvclN1YmplY3R9INC00LDQvdC90YvRhSDRgdC60YDRi9GC0YvRhSDRjdC70LXQvNC10L3RgtC+0LIuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBoaWRkZW5FbGVtZW50cyA9IHRvU2lnbmFsKGluamVjdChTQ19ISURERU5fUFJJTlRfRUxFTUVOVFMpLCB7IHJlcXVpcmVTeW5jOiB0cnVlIH0pO1xuXG4gICAgLyoqXG4gICAgICog0J/RgNC40LfQvdCw0LosINGH0YLQviDRjdC70LXQvNC10L3RgiDRgdC60YDRi9GCINC/0YDQuCDQv9C10YfQsNGC0LguXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzSGlkZGVuID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5oaWRkZW5FbGVtZW50cygpLmluY2x1ZGVzKHRoaXMuZWxlbWVudElkKCkpIHx8IHRoaXMuZWxlbWVudElkKCkgPT09ICdkZWZhdWx0Tm9QcmludCcpO1xufVxuIl19
|