@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.
Files changed (572) hide show
  1. package/accordion/index.d.ts +3 -0
  2. package/accordion/sc-accordion-content.directive.d.ts +9 -0
  3. package/accordion/sc-accordion.component.d.ts +56 -0
  4. package/accordion/sc-accordion.module.d.ts +15 -0
  5. package/auth/enums/auth-method.d.ts +13 -0
  6. package/auth/index.d.ts +8 -0
  7. package/auth/interfaces/index.d.ts +2 -0
  8. package/auth/interfaces/sc-bank-account-form-group.d.ts +11 -0
  9. package/auth/interfaces/sc-contact-form-group.d.ts +10 -0
  10. package/auth/sc-auth.module.d.ts +27 -0
  11. package/auth/sc-sign-in-form/sc-sign-in-form-by-email/sc-sign-in-form-by-email.component.d.ts +55 -0
  12. package/auth/sc-sign-in-form/sc-sign-in-form-by-phone/sc-sign-in-form-by-phone.component.d.ts +45 -0
  13. package/auth/sc-sign-in-form/sc-sign-in-form.component.d.ts +53 -0
  14. package/auth/sc-simple-sign-up-form/sc-simple-sign-up-form.component.d.ts +113 -0
  15. package/auth/sign-up-form/sc-sign-up-form.component.d.ts +172 -0
  16. package/banner/index.d.ts +2 -0
  17. package/banner/sc-banner.component.d.ts +108 -0
  18. package/banner/sc-banner.module.d.ts +17 -0
  19. package/brands-list/index.d.ts +3 -0
  20. package/brands-list/sc-brand-list-item.d.ts +25 -0
  21. package/brands-list/sc-brands-list.component.d.ts +13 -0
  22. package/brands-list/sc-brands-list.module.d.ts +12 -0
  23. 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
  24. package/cart/add-or-editing-cart-item-dialog/index.d.ts +2 -0
  25. package/cart/add-or-editing-cart-item-dialog/sc-add-or-editing-cart-item-dialog.component.d.ts +49 -0
  26. package/cart/index.d.ts +2 -0
  27. package/cart/sc-cart-add-products-from-csv-dialog/sc-cart-add-products-from-csv-dialog.component.d.ts +62 -0
  28. package/catalog/catalog-filters/collapsible/sc-catalog-filter-collapsible.component.d.ts +47 -0
  29. package/catalog/catalog-filters/index.d.ts +4 -0
  30. package/catalog/catalog-filters/sc-catalog-filters.component.d.ts +199 -0
  31. package/catalog/catalog-filters/tokens/sc-catalog-products-filters.d.ts +7 -0
  32. package/catalog/catalog-filters/tokens/sc-catalog-show-products-recursively.d.ts +5 -0
  33. package/catalog/category-card/sc-category-card.component.d.ts +76 -0
  34. package/catalog/cost-with-discount/cost-with-discount.component.d.ts +23 -0
  35. package/catalog/download-price-list/sc-download-price-list.component.d.ts +38 -0
  36. package/catalog/hover-image-carousel/sc-hover-image-carousel.component.d.ts +48 -0
  37. package/catalog/index.d.ts +15 -0
  38. package/catalog/input-quantity/sc-input-quantity.component.d.ts +82 -0
  39. package/catalog/notify-when-in-stock-dialog/index.d.ts +2 -0
  40. package/catalog/notify-when-in-stock-dialog/sc-notify-when-in-stock-dialog.component.d.ts +90 -0
  41. package/catalog/notify-when-in-stock-dialog/sc-product-in-all-warehouses.pipe.d.ts +22 -0
  42. package/catalog/price-card/sc-price-card.component.d.ts +18 -0
  43. package/catalog/price-card-inline/sc-price-card-inline.component.d.ts +10 -0
  44. package/catalog/price-history/sc-price-history.component.d.ts +92 -0
  45. package/catalog/price-list-pagination/sc-price-list-pagination.component.d.ts +40 -0
  46. package/catalog/price-warehouse-stock/sc-price-warehouse-stock.component.d.ts +47 -0
  47. package/catalog/sc-catalog.module.d.ts +29 -0
  48. package/catalog/sc-favorite-button/sc-favorite-button.component.d.ts +25 -0
  49. package/catalog/seo-tags/sc-seo-tags.component.d.ts +20 -0
  50. package/configurators/index.d.ts +3 -0
  51. package/configurators/models/index.d.ts +3 -0
  52. package/configurators/models/sandwich/sc-i-configurator-search-product-sandwich.d.ts +22 -0
  53. package/configurators/models/sandwich/sc-i-sandwich-settings.d.ts +18 -0
  54. package/configurators/models/sandwich_m2/sc-i-sandwich-m2-settings.d.ts +18 -0
  55. package/configurators/sandwich/index.d.ts +3 -0
  56. package/configurators/sandwich/sandwich-skeleton/sc-sandwich-skeleton.component.d.ts +8 -0
  57. package/configurators/sandwich/sc-i-new-cart-item-sandwich.d.ts +14 -0
  58. package/configurators/sandwich/sc-sandwich.component.d.ts +186 -0
  59. package/configurators/sandwich_m2/index.d.ts +4 -0
  60. package/configurators/sandwich_m2/sandwich-m2-skeleton/sc-sandwich-m2-skeleton.component.d.ts +8 -0
  61. package/configurators/sandwich_m2/sc-i-new-cart-item-sandwich-m2.d.ts +23 -0
  62. package/configurators/sandwich_m2/sc-sandwich-m2-item-submit-state.d.ts +13 -0
  63. package/configurators/sandwich_m2/sc-sandwich-m2.component.d.ts +275 -0
  64. package/contacts/add-contact-dialog/sc-add-contact-dialog.component.d.ts +49 -0
  65. package/contacts/contacts-accordion/sc-contacts-accordion.component.d.ts +23 -0
  66. package/contacts/index.d.ts +7 -0
  67. package/contacts/manager-card/sc-manager-card.component.d.ts +22 -0
  68. package/contacts/manager-card-push/sc-manager-card-push.component.d.ts +18 -0
  69. package/contacts/new-contact-form/sc-new-contact-form.component.d.ts +28 -0
  70. package/contacts/sc-contacts.module.d.ts +28 -0
  71. package/contacts/tokens/index.d.ts +2 -0
  72. package/contacts/tokens/sc-manager-qr-handler.token.d.ts +6 -0
  73. package/contacts/tokens/sc-show-help-notification-in-phone-input.token.d.ts +5 -0
  74. package/contragents/add-contragent-bank-account-dialog/sc-add-contragent-bank-account-dialog.component.d.ts +49 -0
  75. package/contragents/add-contragent-dialog/sc-add-contragent-dialog.component.d.ts +158 -0
  76. package/contragents/contragents-accordion/contragents-accordion-item/sc-contragents-accordion-item.component.d.ts +66 -0
  77. package/contragents/contragents-accordion/sc-contragents-accordion.component.d.ts +49 -0
  78. package/contragents/index.d.ts +7 -0
  79. package/contragents/new-contragent-bank-account-form/sc-new-contragent-bank-account-form.component.d.ts +64 -0
  80. package/contragents/new-contragent-form/sc-new-contragent-form.component.d.ts +129 -0
  81. package/contragents/sc-contragents.module.d.ts +28 -0
  82. package/delivery-address/add-delivery-address-dialog/sc-add-delivery-address-dialog.component.d.ts +148 -0
  83. package/delivery-address/delivery-address-accordion/delivery-address-accordion-item/sc-delivery-address-accordion-item.component.d.ts +50 -0
  84. package/delivery-address/delivery-address-accordion/sc-delivery-address-accordion.component.d.ts +49 -0
  85. package/delivery-address/index.d.ts +4 -0
  86. package/delivery-address/sc-delivery-address.module.d.ts +25 -0
  87. package/dialogs/index.d.ts +1 -0
  88. package/dialogs/sc-resource-preview/sc-resource-preview.component.d.ts +42 -0
  89. package/directives/abstract-price-card/abstract-sc-price-card.directive.d.ts +136 -0
  90. package/directives/address-quality/sc-address-quality.directive.d.ts +23 -0
  91. package/directives/address-quality/sc-address-quality.service.d.ts +122 -0
  92. package/directives/address-quality/sc-i-address-quality-state.d.ts +14 -0
  93. package/directives/index.d.ts +11 -0
  94. package/directives/links/index.d.ts +4 -0
  95. package/directives/links/sc-email-link.directive.d.ts +25 -0
  96. package/directives/links/sc-link-location.d.ts +5 -0
  97. package/directives/links/sc-links.d.ts +7 -0
  98. package/directives/links/sc-tel-link.directive.d.ts +40 -0
  99. package/directives/next-input-focus/sc-next-input-focus.directive.d.ts +27 -0
  100. package/directives/next-input-focus/sc-next-input-focus.module.d.ts +10 -0
  101. package/directives/print/sc-print.directive.d.ts +21 -0
  102. package/directives/sc-date-value-transformer.directive.d.ts +8 -0
  103. package/directives/sc-focus-first-invalid-field.directive.d.ts +30 -0
  104. package/directives/sc-null-on-empty-value-transformer.directive.d.ts +8 -0
  105. package/directives/select-on-focusin/sc-select-on-focusin.directive.d.ts +14 -0
  106. package/directives/terminal-link/sc-terminal-link.directive.d.ts +34 -0
  107. package/error-handler/consts/error-change-handler.providers.d.ts +6 -0
  108. package/error-handler/error-block-status/error-block-status.component.d.ts +55 -0
  109. package/error-handler/index.d.ts +4 -0
  110. package/error-handler/interfaces/i-block-error.d.ts +17 -0
  111. package/error-handler/sc-error-handler.component.d.ts +40 -0
  112. package/esm2022/accordion/index.mjs +4 -0
  113. package/esm2022/accordion/sc-accordion-content.directive.mjs +17 -0
  114. package/esm2022/accordion/sc-accordion.component.mjs +92 -0
  115. package/esm2022/accordion/sc-accordion.module.mjs +26 -0
  116. package/esm2022/auth/enums/auth-method.mjs +15 -0
  117. package/esm2022/auth/index.mjs +9 -0
  118. package/esm2022/auth/interfaces/index.mjs +3 -0
  119. package/esm2022/auth/interfaces/sc-bank-account-form-group.mjs +2 -0
  120. package/esm2022/auth/interfaces/sc-contact-form-group.mjs +2 -0
  121. package/esm2022/auth/sc-auth.module.mjs +103 -0
  122. package/esm2022/auth/sc-sign-in-form/sc-sign-in-form-by-email/sc-sign-in-form-by-email.component.mjs +100 -0
  123. package/esm2022/auth/sc-sign-in-form/sc-sign-in-form-by-phone/sc-sign-in-form-by-phone.component.mjs +81 -0
  124. package/esm2022/auth/sc-sign-in-form/sc-sign-in-form.component.mjs +89 -0
  125. package/esm2022/auth/sc-simple-sign-up-form/sc-simple-sign-up-form.component.mjs +203 -0
  126. package/esm2022/auth/sign-up-form/sc-sign-up-form.component.mjs +345 -0
  127. package/esm2022/banner/index.mjs +3 -0
  128. package/esm2022/banner/sc-banner.component.mjs +176 -0
  129. package/esm2022/banner/sc-banner.module.mjs +29 -0
  130. package/esm2022/brands-list/index.mjs +4 -0
  131. package/esm2022/brands-list/sc-brand-list-item.mjs +2 -0
  132. package/esm2022/brands-list/sc-brands-list.component.mjs +24 -0
  133. package/esm2022/brands-list/sc-brands-list.module.mjs +22 -0
  134. 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
  135. package/esm2022/cart/add-or-editing-cart-item-dialog/index.mjs +3 -0
  136. package/esm2022/cart/add-or-editing-cart-item-dialog/sc-add-or-editing-cart-item-dialog.component.mjs +75 -0
  137. package/esm2022/cart/index.mjs +3 -0
  138. package/esm2022/cart/sc-cart-add-products-from-csv-dialog/sc-cart-add-products-from-csv-dialog.component.mjs +110 -0
  139. package/esm2022/catalog/catalog-filters/collapsible/sc-catalog-filter-collapsible.component.mjs +59 -0
  140. package/esm2022/catalog/catalog-filters/index.mjs +5 -0
  141. package/esm2022/catalog/catalog-filters/sc-catalog-filters.component.mjs +451 -0
  142. package/esm2022/catalog/catalog-filters/tokens/sc-catalog-products-filters.mjs +10 -0
  143. package/esm2022/catalog/catalog-filters/tokens/sc-catalog-show-products-recursively.mjs +6 -0
  144. package/esm2022/catalog/category-card/sc-category-card.component.mjs +102 -0
  145. package/esm2022/catalog/cost-with-discount/cost-with-discount.component.mjs +38 -0
  146. package/esm2022/catalog/download-price-list/sc-download-price-list.component.mjs +56 -0
  147. package/esm2022/catalog/hover-image-carousel/sc-hover-image-carousel.component.mjs +76 -0
  148. package/esm2022/catalog/index.mjs +16 -0
  149. package/esm2022/catalog/input-quantity/sc-input-quantity.component.mjs +190 -0
  150. package/esm2022/catalog/notify-when-in-stock-dialog/index.mjs +3 -0
  151. package/esm2022/catalog/notify-when-in-stock-dialog/sc-notify-when-in-stock-dialog.component.mjs +173 -0
  152. package/esm2022/catalog/notify-when-in-stock-dialog/sc-product-in-all-warehouses.pipe.mjs +35 -0
  153. package/esm2022/catalog/price-card/sc-price-card.component.mjs +71 -0
  154. package/esm2022/catalog/price-card-inline/sc-price-card-inline.component.mjs +54 -0
  155. package/esm2022/catalog/price-history/sc-price-history.component.mjs +144 -0
  156. package/esm2022/catalog/price-list-pagination/sc-price-list-pagination.component.mjs +65 -0
  157. package/esm2022/catalog/price-warehouse-stock/sc-price-warehouse-stock.component.mjs +61 -0
  158. package/esm2022/catalog/sc-catalog.module.mjs +128 -0
  159. package/esm2022/catalog/sc-favorite-button/sc-favorite-button.component.mjs +42 -0
  160. package/esm2022/catalog/seo-tags/sc-seo-tags.component.mjs +25 -0
  161. package/esm2022/configurators/index.mjs +4 -0
  162. package/esm2022/configurators/models/index.mjs +4 -0
  163. package/esm2022/configurators/models/sandwich/sc-i-configurator-search-product-sandwich.mjs +2 -0
  164. package/esm2022/configurators/models/sandwich/sc-i-sandwich-settings.mjs +2 -0
  165. package/esm2022/configurators/models/sandwich_m2/sc-i-sandwich-m2-settings.mjs +2 -0
  166. package/esm2022/configurators/sandwich/index.mjs +4 -0
  167. package/esm2022/configurators/sandwich/sandwich-skeleton/sc-sandwich-skeleton.component.mjs +14 -0
  168. package/esm2022/configurators/sandwich/sc-i-new-cart-item-sandwich.mjs +2 -0
  169. package/esm2022/configurators/sandwich/sc-sandwich.component.mjs +387 -0
  170. package/esm2022/configurators/sandwich_m2/index.mjs +5 -0
  171. package/esm2022/configurators/sandwich_m2/sandwich-m2-skeleton/sc-sandwich-m2-skeleton.component.mjs +14 -0
  172. package/esm2022/configurators/sandwich_m2/sc-i-new-cart-item-sandwich-m2.mjs +2 -0
  173. package/esm2022/configurators/sandwich_m2/sc-sandwich-m2-item-submit-state.mjs +5 -0
  174. package/esm2022/configurators/sandwich_m2/sc-sandwich-m2.component.mjs +569 -0
  175. package/esm2022/contacts/add-contact-dialog/sc-add-contact-dialog.component.mjs +91 -0
  176. package/esm2022/contacts/contacts-accordion/sc-contacts-accordion.component.mjs +37 -0
  177. package/esm2022/contacts/index.mjs +8 -0
  178. package/esm2022/contacts/manager-card/sc-manager-card.component.mjs +58 -0
  179. package/esm2022/contacts/manager-card-push/sc-manager-card-push.component.mjs +28 -0
  180. package/esm2022/contacts/new-contact-form/sc-new-contact-form.component.mjs +38 -0
  181. package/esm2022/contacts/sc-contacts.module.mjs +92 -0
  182. package/esm2022/contacts/tokens/index.mjs +3 -0
  183. package/esm2022/contacts/tokens/sc-manager-qr-handler.token.mjs +25 -0
  184. package/esm2022/contacts/tokens/sc-show-help-notification-in-phone-input.token.mjs +9 -0
  185. package/esm2022/contragents/add-contragent-bank-account-dialog/sc-add-contragent-bank-account-dialog.component.mjs +81 -0
  186. package/esm2022/contragents/add-contragent-dialog/sc-add-contragent-dialog.component.mjs +266 -0
  187. package/esm2022/contragents/contragents-accordion/contragents-accordion-item/sc-contragents-accordion-item.component.mjs +79 -0
  188. package/esm2022/contragents/contragents-accordion/sc-contragents-accordion.component.mjs +68 -0
  189. package/esm2022/contragents/index.mjs +8 -0
  190. package/esm2022/contragents/new-contragent-bank-account-form/sc-new-contragent-bank-account-form.component.mjs +72 -0
  191. package/esm2022/contragents/new-contragent-form/sc-new-contragent-form.component.mjs +241 -0
  192. package/esm2022/contragents/sc-contragents.module.mjs +121 -0
  193. package/esm2022/delivery-address/add-delivery-address-dialog/sc-add-delivery-address-dialog.component.mjs +261 -0
  194. package/esm2022/delivery-address/delivery-address-accordion/delivery-address-accordion-item/sc-delivery-address-accordion-item.component.mjs +60 -0
  195. package/esm2022/delivery-address/delivery-address-accordion/sc-delivery-address-accordion.component.mjs +68 -0
  196. package/esm2022/delivery-address/index.mjs +5 -0
  197. package/esm2022/delivery-address/sc-delivery-address.module.mjs +96 -0
  198. package/esm2022/dialogs/index.mjs +2 -0
  199. package/esm2022/dialogs/sc-resource-preview/sc-resource-preview.component.mjs +73 -0
  200. package/esm2022/directives/abstract-price-card/abstract-sc-price-card.directive.mjs +170 -0
  201. package/esm2022/directives/address-quality/sc-address-quality.directive.mjs +40 -0
  202. package/esm2022/directives/address-quality/sc-address-quality.service.mjs +214 -0
  203. package/esm2022/directives/address-quality/sc-i-address-quality-state.mjs +2 -0
  204. package/esm2022/directives/index.mjs +12 -0
  205. package/esm2022/directives/links/index.mjs +5 -0
  206. package/esm2022/directives/links/sc-email-link.directive.mjs +49 -0
  207. package/esm2022/directives/links/sc-link-location.mjs +2 -0
  208. package/esm2022/directives/links/sc-links.mjs +8 -0
  209. package/esm2022/directives/links/sc-tel-link.directive.mjs +79 -0
  210. package/esm2022/directives/next-input-focus/sc-next-input-focus.directive.mjs +70 -0
  211. package/esm2022/directives/next-input-focus/sc-next-input-focus.module.mjs +19 -0
  212. package/esm2022/directives/print/sc-print.directive.mjs +36 -0
  213. package/esm2022/directives/sc-date-value-transformer.directive.mjs +30 -0
  214. package/esm2022/directives/sc-focus-first-invalid-field.directive.mjs +85 -0
  215. package/esm2022/directives/sc-null-on-empty-value-transformer.directive.mjs +30 -0
  216. package/esm2022/directives/select-on-focusin/sc-select-on-focusin.directive.mjs +36 -0
  217. package/esm2022/directives/terminal-link/sc-terminal-link.directive.mjs +69 -0
  218. package/esm2022/error-handler/consts/error-change-handler.providers.mjs +10 -0
  219. package/esm2022/error-handler/error-block-status/error-block-status.component.mjs +101 -0
  220. package/esm2022/error-handler/index.mjs +5 -0
  221. package/esm2022/error-handler/interfaces/i-block-error.mjs +2 -0
  222. package/esm2022/error-handler/sc-error-handler.component.mjs +58 -0
  223. package/esm2022/feedback/feedback-form/sc-feedback-form.component.mjs +344 -0
  224. package/esm2022/feedback/gratitude/sc-gratitude.component.mjs +32 -0
  225. package/esm2022/feedback/index.mjs +4 -0
  226. package/esm2022/feedback/interfaces/index.mjs +2 -0
  227. package/esm2022/feedback/interfaces/sc-feedback-form-config.mjs +2 -0
  228. package/esm2022/files/directives/index.mjs +3 -0
  229. package/esm2022/files/directives/tree-top.directive.mjs +63 -0
  230. package/esm2022/files/directives/tree.directive.mjs +47 -0
  231. package/esm2022/files/file-tree-item/file-tree-item.component.mjs +18 -0
  232. package/esm2022/files/files-and-documents/files-and-documents.component.mjs +61 -0
  233. package/esm2022/files/files-and-documents.module.mjs +28 -0
  234. package/esm2022/files/index.mjs +6 -0
  235. package/esm2022/files/interfaces/tree-node.mjs +2 -0
  236. package/esm2022/files/services/index.mjs +3 -0
  237. package/esm2022/files/services/tree-icon.service.mjs +49 -0
  238. package/esm2022/files/services/tree-loader.service.mjs +62 -0
  239. package/esm2022/form-fields/addresses-selection-field/sc-addresses-selection-field.component.mjs +155 -0
  240. package/esm2022/form-fields/form-fields.module.mjs +66 -0
  241. package/esm2022/form-fields/index.mjs +4 -0
  242. package/esm2022/form-fields/suggestion-field/sc-suggestion-field.component.mjs +235 -0
  243. package/esm2022/icons/index.mjs +2 -0
  244. package/esm2022/icons/sc-client-ui-icons-name.mjs +99 -0
  245. package/esm2022/loader/index.mjs +2 -0
  246. package/esm2022/loader/sc-i-loader.mjs +2 -0
  247. package/esm2022/masks/index.mjs +9 -0
  248. package/esm2022/masks/sc-account-number-mask.mjs +7 -0
  249. package/esm2022/masks/sc-bic-mask.mjs +7 -0
  250. package/esm2022/masks/sc-correspondent-account-mask.mjs +7 -0
  251. package/esm2022/masks/sc-inn-mask.mjs +13 -0
  252. package/esm2022/masks/sc-kpp-mask.mjs +7 -0
  253. package/esm2022/masks/sc-ogrn-mask.mjs +13 -0
  254. package/esm2022/masks/sc-okpo-mask.mjs +13 -0
  255. package/esm2022/masks/sc-phone-verification-code-mask.mjs +7 -0
  256. package/esm2022/methods/index.mjs +2 -0
  257. package/esm2022/methods/sc-get-current-route.mjs +14 -0
  258. package/esm2022/models/i-sc-image.mjs +2 -0
  259. package/esm2022/models/index.mjs +2 -0
  260. package/esm2022/news/index.mjs +4 -0
  261. package/esm2022/news/news-card/sc-news-card.component.mjs +34 -0
  262. package/esm2022/news/news-card-skeleton/sc-news-card-skeleton.component.mjs +31 -0
  263. package/esm2022/news/sc-news.module.mjs +25 -0
  264. package/esm2022/noindex-wrapper/directives/index.mjs +2 -0
  265. package/esm2022/noindex-wrapper/directives/sc-noindex.directive.mjs +58 -0
  266. package/esm2022/noindex-wrapper/index.mjs +3 -0
  267. package/esm2022/noindex-wrapper/sc-noindex-wrapper.component.mjs +18 -0
  268. package/esm2022/order/directives/index.mjs +3 -0
  269. package/esm2022/order/directives/sc-order-accessor.directive.mjs +28 -0
  270. package/esm2022/order/directives/sc-order-options.mjs +11 -0
  271. package/esm2022/order/draft/sc-draft.component.mjs +118 -0
  272. package/esm2022/order/index.mjs +14 -0
  273. package/esm2022/order/models/i-new-order-form.mjs +2 -0
  274. package/esm2022/order/models/sc-i-cart-items-by-direction.mjs +22 -0
  275. package/esm2022/order/order-direction-items/sc-order-direction-items.component.mjs +39 -0
  276. package/esm2022/order/order-form/sc-order-form.component.mjs +565 -0
  277. package/esm2022/order/order-form/sc-order-form.config.mjs +7 -0
  278. package/esm2022/order/order-item/sc-order-item.component.mjs +112 -0
  279. package/esm2022/order/order-items-list/sc-order-items-list.component.mjs +212 -0
  280. package/esm2022/order/order-items-list-by-directions/sc-order-items-list-by-directions.component.mjs +75 -0
  281. package/esm2022/order/order-items-list-by-stock/sc-order-items-list-by-stock.component.mjs +75 -0
  282. package/esm2022/order/sc-order.module.mjs +52 -0
  283. package/esm2022/order/sc-payment-status/sc-payment-status.component.mjs +35 -0
  284. package/esm2022/pages/frequently-asked-questions/sc-faq-query-params.mjs +5 -0
  285. package/esm2022/pages/frequently-asked-questions/sc-faq-question-anchor.mjs +23 -0
  286. package/esm2022/pages/frequently-asked-questions/sc-frequently-asked-questions.component.mjs +167 -0
  287. package/esm2022/pages/frequently-asked-questions/sc-get-faq-group-query-params.mjs +14 -0
  288. package/esm2022/pages/frequently-asked-questions/sc-page-size-options.mjs +8 -0
  289. package/esm2022/pages/frequently-asked-questions-group-selector/sc-frequently-asked-questions-group-selector.component.mjs +88 -0
  290. package/esm2022/pages/frequently-asked-questions-with-groups/sc-frequently-asked-questions-with-groups.component.mjs +123 -0
  291. package/esm2022/pages/index.mjs +11 -0
  292. package/esm2022/pages/news-list/sc-news-list.component.mjs +90 -0
  293. package/esm2022/pages/personal-data-processing-policy/sc-personal-data-processing-policy.component.mjs +46 -0
  294. package/esm2022/pages/privacy-policy/sc-privacy-policy.component.mjs +30 -0
  295. package/esm2022/pages/public-offer/sc-public-offer.component.mjs +50 -0
  296. package/esm2022/pagination/index.mjs +2 -0
  297. package/esm2022/pagination/sc-pagination-links/sc-pagination-links.component.mjs +99 -0
  298. package/esm2022/pipes/index.mjs +3 -0
  299. package/esm2022/pipes/sc-format-date.mjs +33 -0
  300. package/esm2022/pipes/sc-phone-format.mjs +44 -0
  301. package/esm2022/profile/index.mjs +3 -0
  302. package/esm2022/profile/sc-profile-accordions-content/sc-profile-accordions-content.component.mjs +174 -0
  303. package/esm2022/profile/sc-profile.module.mjs +73 -0
  304. package/esm2022/providers/cleanup-recaptcha-artifacts.mjs +30 -0
  305. package/esm2022/providers/date-value-transformer/index.mjs +4 -0
  306. package/esm2022/providers/date-value-transformer/sc-date-value-transformer-types.mjs +2 -0
  307. package/esm2022/providers/date-value-transformer/sc-date-value-transformer-with-end-time.mjs +26 -0
  308. package/esm2022/providers/date-value-transformer/sc-date-value-transformer-with-start-time.mjs +37 -0
  309. package/esm2022/providers/index.mjs +18 -0
  310. package/esm2022/providers/null-on-empty-value-transformer/index.mjs +2 -0
  311. package/esm2022/providers/null-on-empty-value-transformer/sc-null-on-empty-value-transformer.mjs +31 -0
  312. package/esm2022/providers/sc-allow-select-terminated.mjs +8 -0
  313. package/esm2022/providers/sc-banner-duration.mjs +8 -0
  314. package/esm2022/providers/sc-block-incomplete-address.mjs +8 -0
  315. package/esm2022/providers/sc-country-ids.mjs +8 -0
  316. package/esm2022/providers/sc-date-formatter.mjs +15 -0
  317. package/esm2022/providers/sc-date-value-transformer.mjs +12 -0
  318. package/esm2022/providers/sc-debounce-time-default.mjs +9 -0
  319. package/esm2022/providers/sc-dialog-service.providers.mjs +6 -0
  320. package/esm2022/providers/sc-help-notification-close.mjs +9 -0
  321. package/esm2022/providers/sc-help-notification-limit.mjs +8 -0
  322. package/esm2022/providers/sc-hidden-print-elements.token.mjs +10 -0
  323. package/esm2022/providers/sc-max-files-in-form-input.mjs +8 -0
  324. package/esm2022/providers/sc-notify-when-in-stock-required-fields.mjs +8 -0
  325. package/esm2022/providers/sc-page-size-options.mjs +8 -0
  326. package/esm2022/providers/sc-user-providers.mjs +38 -0
  327. package/esm2022/providers/sc-verification-code-timeout.mjs +8 -0
  328. package/esm2022/public-api.mjs +36 -0
  329. package/esm2022/qrcode/index.mjs +3 -0
  330. package/esm2022/qrcode/qrcode-dialog/sc-qrcode-dialog.component.mjs +58 -0
  331. package/esm2022/qrcode/sc-qrcode.module.mjs +25 -0
  332. package/esm2022/samples/index.mjs +5 -0
  333. package/esm2022/samples/interfaces/index.mjs +3 -0
  334. package/esm2022/samples/interfaces/sc-i-preview-sample.mjs +2 -0
  335. package/esm2022/samples/interfaces/sc-preview-mosquito-config.mjs +2 -0
  336. package/esm2022/samples/preview-sample/sc-preview-sample.component.mjs +42 -0
  337. package/esm2022/samples/sc-preview-samples-mosquito/sc-preview-samples-mosquito.component.mjs +63 -0
  338. package/esm2022/samples/sc-sample.module.mjs +66 -0
  339. package/esm2022/services/index.mjs +3 -0
  340. package/esm2022/services/print.service.mjs +49 -0
  341. package/esm2022/services/sc-help-notification.service.mjs +100 -0
  342. package/esm2022/share/index.mjs +6 -0
  343. package/esm2022/share/sc-share-dialog-data.mjs +2 -0
  344. package/esm2022/share/sc-share.service.mjs +40 -0
  345. package/esm2022/share/share-button/sc-share-button.component.mjs +99 -0
  346. package/esm2022/share/share-dialog/sc-share-dialog.component.mjs +139 -0
  347. package/esm2022/share/share-messengers-links/sc-share-messengers-links.component.mjs +84 -0
  348. package/esm2022/snabcentr-client-ui.mjs +5 -0
  349. package/esm2022/user/index.mjs +6 -0
  350. package/esm2022/user/reset-user-password/sc-reset-user-password.component.mjs +74 -0
  351. package/esm2022/user/sc-user.module.mjs +86 -0
  352. package/esm2022/user/update-user-info-dialog/sc-update-user-info-dialog.component.mjs +121 -0
  353. package/esm2022/user/user-managers/sc-user-managers.component.mjs +40 -0
  354. package/esm2022/user/user-phone-approve-dialog/sc-user-phone-approve-dialog.component.mjs +105 -0
  355. package/esm2022/validators/index.mjs +7 -0
  356. package/esm2022/validators/sc-at-least-one-required-validator.mjs +25 -0
  357. package/esm2022/validators/sc-bic-validator.mjs +10 -0
  358. package/esm2022/validators/sc-correspondent-account-validator.mjs +10 -0
  359. package/esm2022/validators/sc-password-confirm-matching-validator.mjs +17 -0
  360. package/esm2022/validators/sc-phone-validator.mjs +14 -0
  361. package/esm2022/validators/step-validator.mjs +18 -0
  362. package/esm2022/verification/index.mjs +3 -0
  363. package/esm2022/verification/sc-verification.module.mjs +86 -0
  364. package/esm2022/verification/verification-phone-check-form/sc-verification-phone-check-form.component.mjs +259 -0
  365. package/feedback/feedback-form/sc-feedback-form.component.d.ts +163 -0
  366. package/feedback/gratitude/sc-gratitude.component.d.ts +20 -0
  367. package/feedback/index.d.ts +3 -0
  368. package/feedback/interfaces/index.d.ts +1 -0
  369. package/feedback/interfaces/sc-feedback-form-config.d.ts +23 -0
  370. package/fesm2022/snabcentr-client-ui.mjs +5826 -4942
  371. package/fesm2022/snabcentr-client-ui.mjs.map +1 -1
  372. package/files/directives/index.d.ts +2 -0
  373. package/files/directives/tree-top.directive.d.ts +33 -0
  374. package/files/directives/tree.directive.d.ts +35 -0
  375. package/files/file-tree-item/file-tree-item.component.d.ts +9 -0
  376. package/files/files-and-documents/files-and-documents.component.d.ts +27 -0
  377. package/files/files-and-documents.module.d.ts +17 -0
  378. package/files/index.d.ts +5 -0
  379. package/files/interfaces/tree-node.d.ts +29 -0
  380. package/files/services/index.d.ts +2 -0
  381. package/files/services/tree-icon.service.d.ts +23 -0
  382. package/files/services/tree-loader.service.d.ts +43 -0
  383. package/form-fields/addresses-selection-field/sc-addresses-selection-field.component.d.ts +80 -0
  384. package/form-fields/form-fields.module.d.ts +18 -0
  385. package/form-fields/index.d.ts +3 -0
  386. package/form-fields/suggestion-field/sc-suggestion-field.component.d.ts +107 -0
  387. package/icons/index.d.ts +1 -0
  388. package/icons/sc-client-ui-icons-name.d.ts +4 -0
  389. package/icons/svg-pack/application.svg +1 -1
  390. package/icons/svg-pack/back.svg +1 -1
  391. package/icons/svg-pack/bag.svg +1 -1
  392. package/icons/svg-pack/banknote-arrow-in-top.svg +1 -1
  393. package/icons/svg-pack/catalog/aluminum-systems.svg +1 -1
  394. package/icons/svg-pack/catalog/arm-profile.svg +1 -1
  395. package/icons/svg-pack/catalog/batten.svg +1 -1
  396. package/icons/svg-pack/catalog/brusbox.svg +1 -1
  397. package/icons/svg-pack/catalog/canopy.svg +1 -1
  398. package/icons/svg-pack/catalog/configurator.svg +1 -1
  399. package/icons/svg-pack/catalog/covering-material.svg +1 -1
  400. package/icons/svg-pack/catalog/door-accessories.svg +1 -1
  401. package/icons/svg-pack/catalog/drainage-system.svg +1 -1
  402. package/icons/svg-pack/catalog/fastener.svg +1 -1
  403. package/icons/svg-pack/catalog/finishing-materials.svg +1 -1
  404. package/icons/svg-pack/catalog/fixing-impost.svg +1 -1
  405. package/icons/svg-pack/catalog/flask.svg +1 -1
  406. package/icons/svg-pack/catalog/foam-balloon.svg +1 -1
  407. package/icons/svg-pack/catalog/foam.svg +1 -1
  408. package/icons/svg-pack/catalog/glue.svg +1 -1
  409. package/icons/svg-pack/catalog/handle.svg +1 -1
  410. package/icons/svg-pack/catalog/instrument.svg +1 -1
  411. package/icons/svg-pack/catalog/kve-profile.svg +1 -1
  412. package/icons/svg-pack/catalog/lubricants.svg +1 -1
  413. package/icons/svg-pack/catalog/mosquito-net.svg +1 -1
  414. package/icons/svg-pack/catalog/mounting-accessories.svg +1 -1
  415. package/icons/svg-pack/catalog/net-order.svg +1 -1
  416. package/icons/svg-pack/catalog/panel-1.svg +1 -1
  417. package/icons/svg-pack/catalog/panel.svg +1 -1
  418. package/icons/svg-pack/catalog/polyethylene-film.svg +1 -1
  419. package/icons/svg-pack/catalog/profile-plastic.svg +1 -1
  420. package/icons/svg-pack/catalog/promo-materials.svg +1 -1
  421. package/icons/svg-pack/catalog/psul.svg +1 -1
  422. package/icons/svg-pack/catalog/rehau-profile.svg +1 -1
  423. package/icons/svg-pack/catalog/sandwich-plastic.svg +1 -1
  424. package/icons/svg-pack/catalog/sealer.svg +1 -1
  425. package/icons/svg-pack/catalog/siding-2.svg +1 -1
  426. package/icons/svg-pack/catalog/siding.svg +1 -1
  427. package/icons/svg-pack/catalog/start-finish-profile.svg +1 -1
  428. package/icons/svg-pack/catalog/steam-waterproofing.svg +1 -1
  429. package/icons/svg-pack/catalog/stiz.svg +1 -1
  430. package/icons/svg-pack/catalog/thermometer.svg +1 -1
  431. package/icons/svg-pack/catalog/windowsill.svg +1 -1
  432. package/icons/svg-pack/chart-column-plus.svg +1 -1
  433. package/icons/svg-pack/circle-arrow-in-right.svg +1 -1
  434. package/icons/svg-pack/contacts.svg +1 -1
  435. package/icons/svg-pack/deadline.svg +1 -1
  436. package/icons/svg-pack/file-p.svg +1 -1
  437. package/icons/svg-pack/file-search.svg +1 -1
  438. package/icons/svg-pack/file-w.svg +1 -1
  439. package/icons/svg-pack/file-x.svg +1 -1
  440. package/icons/svg-pack/grid-height-arrow.svg +1 -1
  441. package/icons/svg-pack/grid-width-arrow.svg +1 -1
  442. package/icons/svg-pack/layout-list-tree.svg +1 -1
  443. package/icons/svg-pack/list.svg +1 -1
  444. package/icons/svg-pack/puzzle.svg +1 -1
  445. package/icons/svg-pack/reclamation.svg +1 -1
  446. package/icons/svg-pack/retail-store.svg +1 -1
  447. package/icons/svg-pack/send.svg +1 -1
  448. package/index.d.ts +5 -0
  449. package/loader/index.d.ts +1 -0
  450. package/loader/sc-i-loader.d.ts +9 -0
  451. package/masks/index.d.ts +8 -0
  452. package/masks/sc-account-number-mask.d.ts +5 -0
  453. package/masks/sc-bic-mask.d.ts +5 -0
  454. package/masks/sc-correspondent-account-mask.d.ts +5 -0
  455. package/masks/sc-inn-mask.d.ts +9 -0
  456. package/masks/sc-kpp-mask.d.ts +5 -0
  457. package/masks/sc-ogrn-mask.d.ts +9 -0
  458. package/masks/sc-okpo-mask.d.ts +9 -0
  459. package/masks/sc-phone-verification-code-mask.d.ts +5 -0
  460. package/methods/index.d.ts +1 -0
  461. package/methods/sc-get-current-route.d.ts +8 -0
  462. package/models/i-sc-image.d.ts +17 -0
  463. package/models/index.d.ts +1 -0
  464. package/news/index.d.ts +3 -0
  465. package/news/news-card/sc-news-card.component.d.ts +22 -0
  466. package/news/news-card-skeleton/sc-news-card-skeleton.component.d.ts +16 -0
  467. package/news/sc-news.module.d.ts +15 -0
  468. package/noindex-wrapper/directives/index.d.ts +1 -0
  469. package/noindex-wrapper/directives/sc-noindex.directive.d.ts +29 -0
  470. package/noindex-wrapper/index.d.ts +2 -0
  471. package/noindex-wrapper/sc-noindex-wrapper.component.d.ts +9 -0
  472. package/order/directives/index.d.ts +2 -0
  473. package/order/directives/sc-order-accessor.directive.d.ts +13 -0
  474. package/order/directives/sc-order-options.d.ts +14 -0
  475. package/order/draft/sc-draft.component.d.ts +63 -0
  476. package/order/index.d.ts +13 -0
  477. package/order/models/i-new-order-form.d.ts +39 -0
  478. package/order/models/sc-i-cart-items-by-direction.d.ts +25 -0
  479. package/order/order-direction-items/sc-order-direction-items.component.d.ts +29 -0
  480. package/order/order-form/sc-order-form.component.d.ts +283 -0
  481. package/order/order-form/sc-order-form.config.d.ts +20 -0
  482. package/order/order-item/sc-order-item.component.d.ts +43 -0
  483. package/order/order-items-list/sc-order-items-list.component.d.ts +113 -0
  484. package/order/order-items-list-by-directions/sc-order-items-list-by-directions.component.d.ts +58 -0
  485. package/order/order-items-list-by-stock/sc-order-items-list-by-stock.component.d.ts +55 -0
  486. package/order/sc-order.module.d.ts +18 -0
  487. package/order/sc-payment-status/sc-payment-status.component.d.ts +25 -0
  488. package/package.json +37 -35
  489. package/pages/frequently-asked-questions/sc-faq-query-params.d.ts +4 -0
  490. package/pages/frequently-asked-questions/sc-faq-question-anchor.d.ts +16 -0
  491. package/pages/frequently-asked-questions/sc-frequently-asked-questions.component.d.ts +84 -0
  492. package/pages/frequently-asked-questions/sc-get-faq-group-query-params.d.ts +10 -0
  493. package/pages/frequently-asked-questions/sc-page-size-options.d.ts +5 -0
  494. package/pages/frequently-asked-questions-group-selector/sc-frequently-asked-questions-group-selector.component.d.ts +47 -0
  495. package/pages/frequently-asked-questions-with-groups/sc-frequently-asked-questions-with-groups.component.d.ts +89 -0
  496. package/pages/index.d.ts +10 -0
  497. package/pages/news-list/sc-news-list.component.d.ts +57 -0
  498. package/pages/personal-data-processing-policy/sc-personal-data-processing-policy.component.d.ts +17 -0
  499. package/pages/privacy-policy/sc-privacy-policy.component.d.ts +17 -0
  500. package/pages/public-offer/sc-public-offer.component.d.ts +22 -0
  501. package/pagination/index.d.ts +1 -0
  502. package/pagination/sc-pagination-links/sc-pagination-links.component.d.ts +60 -0
  503. package/pipes/index.d.ts +2 -0
  504. package/pipes/sc-format-date.d.ts +20 -0
  505. package/pipes/sc-phone-format.d.ts +21 -0
  506. package/profile/index.d.ts +2 -0
  507. package/profile/sc-profile-accordions-content/sc-profile-accordions-content.component.d.ts +126 -0
  508. package/profile/sc-profile.module.d.ts +23 -0
  509. package/providers/cleanup-recaptcha-artifacts.d.ts +7 -0
  510. package/providers/date-value-transformer/index.d.ts +3 -0
  511. package/providers/date-value-transformer/sc-date-value-transformer-types.d.ts +9 -0
  512. package/providers/date-value-transformer/sc-date-value-transformer-with-end-time.d.ts +16 -0
  513. package/providers/date-value-transformer/sc-date-value-transformer-with-start-time.d.ts +22 -0
  514. package/providers/index.d.ts +17 -0
  515. package/providers/null-on-empty-value-transformer/index.d.ts +1 -0
  516. package/providers/null-on-empty-value-transformer/sc-null-on-empty-value-transformer.d.ts +21 -0
  517. package/providers/sc-allow-select-terminated.d.ts +5 -0
  518. package/providers/sc-banner-duration.d.ts +5 -0
  519. package/providers/sc-block-incomplete-address.d.ts +5 -0
  520. package/providers/sc-country-ids.d.ts +5 -0
  521. package/providers/sc-date-formatter.d.ts +6 -0
  522. package/providers/sc-date-value-transformer.d.ts +5 -0
  523. package/providers/sc-debounce-time-default.d.ts +5 -0
  524. package/providers/sc-dialog-service.providers.d.ts +45 -0
  525. package/providers/sc-help-notification-close.d.ts +6 -0
  526. package/providers/sc-help-notification-limit.d.ts +5 -0
  527. package/providers/sc-hidden-print-elements.token.d.ts +6 -0
  528. package/providers/sc-max-files-in-form-input.d.ts +5 -0
  529. package/providers/sc-notify-when-in-stock-required-fields.d.ts +5 -0
  530. package/providers/sc-page-size-options.d.ts +5 -0
  531. package/providers/sc-user-providers.d.ts +21 -0
  532. package/providers/sc-verification-code-timeout.d.ts +5 -0
  533. package/public-api.d.ts +35 -0
  534. package/qrcode/index.d.ts +2 -0
  535. package/qrcode/qrcode-dialog/sc-qrcode-dialog.component.d.ts +37 -0
  536. package/qrcode/sc-qrcode.module.d.ts +14 -0
  537. package/release_notes.tmp +2 -16
  538. package/samples/index.d.ts +4 -0
  539. package/samples/interfaces/index.d.ts +2 -0
  540. package/samples/interfaces/sc-i-preview-sample.d.ts +56 -0
  541. package/samples/interfaces/sc-preview-mosquito-config.d.ts +62 -0
  542. package/samples/preview-sample/sc-preview-sample.component.d.ts +30 -0
  543. package/samples/sc-preview-samples-mosquito/sc-preview-samples-mosquito.component.d.ts +50 -0
  544. package/samples/sc-sample.module.d.ts +19 -0
  545. package/services/index.d.ts +2 -0
  546. package/services/print.service.d.ts +31 -0
  547. package/services/sc-help-notification.service.d.ts +70 -0
  548. package/share/index.d.ts +5 -0
  549. package/share/sc-share-dialog-data.d.ts +13 -0
  550. package/share/sc-share.service.d.ts +19 -0
  551. package/share/share-button/sc-share-button.component.d.ts +78 -0
  552. package/share/share-dialog/sc-share-dialog.component.d.ts +87 -0
  553. package/share/share-messengers-links/sc-share-messengers-links.component.d.ts +49 -0
  554. package/styles/taiga/variables.less +17 -35
  555. package/styles/tailwind/tailwind.scss +14 -56
  556. package/user/index.d.ts +5 -0
  557. package/user/reset-user-password/sc-reset-user-password.component.d.ts +46 -0
  558. package/user/sc-user.module.d.ts +24 -0
  559. package/user/update-user-info-dialog/sc-update-user-info-dialog.component.d.ts +63 -0
  560. package/user/user-managers/sc-user-managers.component.d.ts +23 -0
  561. package/user/user-phone-approve-dialog/sc-user-phone-approve-dialog.component.d.ts +53 -0
  562. package/validators/index.d.ts +6 -0
  563. package/validators/sc-at-least-one-required-validator.d.ts +10 -0
  564. package/validators/sc-bic-validator.d.ts +8 -0
  565. package/validators/sc-correspondent-account-validator.d.ts +8 -0
  566. package/validators/sc-password-confirm-matching-validator.d.ts +8 -0
  567. package/validators/sc-phone-validator.d.ts +5 -0
  568. package/validators/step-validator.d.ts +7 -0
  569. package/verification/index.d.ts +2 -0
  570. package/verification/sc-verification.module.d.ts +21 -0
  571. package/verification/verification-phone-check-form/sc-verification-phone-check-form.component.d.ts +145 -0
  572. package/types/snabcentr-client-ui.d.ts +0 -6787
@@ -0,0 +1,30 @@
1
+ import { Directive } from '@angular/core';
2
+ import { TUI_DATE_VALUE_TRANSFORMER } from '@taiga-ui/kit';
3
+ import { DateValueTransformerWithEndTime } from '../providers/date-value-transformer';
4
+ import * as i0 from "@angular/core";
5
+ /**
6
+ * Директива для преобразования даты в формат "YYYY-MM-DD 23:59:59".
7
+ */
8
+ export class FinishDateTimeTransformerDirective {
9
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FinishDateTimeTransformerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
10
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: FinishDateTimeTransformerDirective, isStandalone: true, selector: "tui-input-date[toFinishDateTime]", providers: [
11
+ {
12
+ provide: TUI_DATE_VALUE_TRANSFORMER,
13
+ useClass: DateValueTransformerWithEndTime,
14
+ },
15
+ ], ngImport: i0 }); }
16
+ }
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FinishDateTimeTransformerDirective, decorators: [{
18
+ type: Directive,
19
+ args: [{
20
+ standalone: true,
21
+ selector: 'tui-input-date[toFinishDateTime]',
22
+ providers: [
23
+ {
24
+ provide: TUI_DATE_VALUE_TRANSFORMER,
25
+ useClass: DateValueTransformerWithEndTime,
26
+ },
27
+ ],
28
+ }]
29
+ }] });
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtZGF0ZS12YWx1ZS10cmFuc2Zvcm1lci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvZGlyZWN0aXZlcy9zYy1kYXRlLXZhbHVlLXRyYW5zZm9ybWVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzRCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7QUFFdEY7O0dBRUc7QUFXSCxNQUFNLE9BQU8sa0NBQWtDOytHQUFsQyxrQ0FBa0M7bUdBQWxDLGtDQUFrQywrRUFQaEM7WUFDUDtnQkFDSSxPQUFPLEVBQUUsMEJBQTBCO2dCQUNuQyxRQUFRLEVBQUUsK0JBQStCO2FBQzVDO1NBQ0o7OzRGQUVRLGtDQUFrQztrQkFWOUMsU0FBUzttQkFBQztvQkFDUCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLGtDQUFrQztvQkFDNUMsU0FBUyxFQUFFO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSwwQkFBMEI7NEJBQ25DLFFBQVEsRUFBRSwrQkFBK0I7eUJBQzVDO3FCQUNKO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUVUlfREFURV9WQUxVRV9UUkFOU0ZPUk1FUiB9IGZyb20gJ0B0YWlnYS11aS9raXQnO1xuXG5pbXBvcnQgeyBEYXRlVmFsdWVUcmFuc2Zvcm1lcldpdGhFbmRUaW1lIH0gZnJvbSAnLi4vcHJvdmlkZXJzL2RhdGUtdmFsdWUtdHJhbnNmb3JtZXInO1xuXG4vKipcbiAqINCU0LjRgNC10LrRgtC40LLQsCDQtNC70Y8g0L/RgNC10L7QsdGA0LDQt9C+0LLQsNC90LjRjyDQtNCw0YLRiyDQsiDRhNC+0YDQvNCw0YIgXCJZWVlZLU1NLUREIDIzOjU5OjU5XCIuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICd0dWktaW5wdXQtZGF0ZVt0b0ZpbmlzaERhdGVUaW1lXScsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IFRVSV9EQVRFX1ZBTFVFX1RSQU5TRk9STUVSLFxuICAgICAgICAgICAgdXNlQ2xhc3M6IERhdGVWYWx1ZVRyYW5zZm9ybWVyV2l0aEVuZFRpbWUsXG4gICAgICAgIH0sXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRmluaXNoRGF0ZVRpbWVUcmFuc2Zvcm1lckRpcmVjdGl2ZSB7fVxuIl19
@@ -0,0 +1,85 @@
1
+ import { DOCUMENT } from '@angular/common';
2
+ import { Directive, inject, input } from '@angular/core';
3
+ import { FormGroupDirective } from '@angular/forms';
4
+ import * as i0 from "@angular/core";
5
+ /**
6
+ * Директива для автоматической установки фокуса на первое невалидное поле формы при submit.
7
+ */
8
+ export class ScFocusFirstInvalidFieldDirective {
9
+ constructor() {
10
+ /**
11
+ * Порядок проверки полей формы.
12
+ */
13
+ this.fieldOrder = input([]);
14
+ /**
15
+ * Объект {@link Document}, предоставляющий доступ к DOM страницы.
16
+ */
17
+ this.document = inject(DOCUMENT);
18
+ /**
19
+ * Директива формы.
20
+ */
21
+ this.formGroupDirective = inject(FormGroupDirective);
22
+ }
23
+ /**
24
+ * Обработчик события submit формы.
25
+ */
26
+ onSubmit() {
27
+ const { form } = this.formGroupDirective;
28
+ if (this.fieldOrder().length === 0) {
29
+ return;
30
+ }
31
+ if (form.valid) {
32
+ return;
33
+ }
34
+ const firstInvalidFieldName = this.fieldOrder().find((fieldName) => {
35
+ const control = form.get(fieldName);
36
+ return control && control.invalid && !control.disabled;
37
+ });
38
+ const firstInvalidField = firstInvalidFieldName ? form.get(firstInvalidFieldName) : null;
39
+ if (firstInvalidField) {
40
+ firstInvalidField.markAsTouched();
41
+ firstInvalidField.updateValueAndValidity();
42
+ }
43
+ setTimeout(() => {
44
+ this.focusFirstInvalidField(form);
45
+ }, 0);
46
+ }
47
+ /**
48
+ * Устанавливает фокус на первое поле формы с ошибкой.
49
+ *
50
+ * @param form Форма для проверки.
51
+ */
52
+ focusFirstInvalidField(form) {
53
+ const firstInvalidField = this.fieldOrder().find((fieldName) => {
54
+ const control = form.get(fieldName);
55
+ return control && control.invalid && control.touched && !control.disabled;
56
+ });
57
+ if (!firstInvalidField) {
58
+ return;
59
+ }
60
+ const element = this.document.querySelector(`[formControlName="${firstInvalidField}"]`);
61
+ if (!element) {
62
+ return;
63
+ }
64
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access
65
+ const queryResult = element.querySelector('input, select, textarea');
66
+ const nativeElement = element.nativeFocusableElement ?? (queryResult ? queryResult : null) ?? element;
67
+ if (nativeElement instanceof HTMLElement) {
68
+ nativeElement.focus();
69
+ nativeElement.scrollIntoView({ behavior: 'smooth', block: 'center' });
70
+ }
71
+ }
72
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScFocusFirstInvalidFieldDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
73
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.14", type: ScFocusFirstInvalidFieldDirective, isStandalone: true, selector: "form[formGroup][scFocusFirstInvalidField]", inputs: { fieldOrder: { classPropertyName: "fieldOrder", publicName: "fieldOrder", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "ngSubmit": "onSubmit()" } }, ngImport: i0 }); }
74
+ }
75
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScFocusFirstInvalidFieldDirective, decorators: [{
76
+ type: Directive,
77
+ args: [{
78
+ standalone: true,
79
+ selector: 'form[formGroup][scFocusFirstInvalidField]',
80
+ host: {
81
+ '(ngSubmit)': 'onSubmit()',
82
+ },
83
+ }]
84
+ }] });
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtZm9jdXMtZmlyc3QtaW52YWxpZC1maWVsZC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvZGlyZWN0aXZlcy9zYy1mb2N1cy1maXJzdC1pbnZhbGlkLWZpZWxkLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBYSxrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUUvRDs7R0FFRztBQVFILE1BQU0sT0FBTyxpQ0FBaUM7SUFQOUM7UUFRSTs7V0FFRztRQUNhLGVBQVUsR0FBRyxLQUFLLENBQVcsRUFBRSxDQUFDLENBQUM7UUFFakQ7O1dBRUc7UUFDYyxhQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTdDOztXQUVHO1FBQ2MsdUJBQWtCLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7S0FrRXBFO0lBaEVHOztPQUVHO0lBQ0ssUUFBUTtRQUNaLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUM7UUFFekMsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2pDLE9BQU87UUFDWCxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDYixPQUFPO1FBQ1gsQ0FBQztRQUVELE1BQU0scUJBQXFCLEdBQXVCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUNuRixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBRXBDLE9BQU8sT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO1FBQzNELENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxpQkFBaUIsR0FBRyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFFekYsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3BCLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ2xDLGlCQUFpQixDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDL0MsQ0FBQztRQUVELFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ1YsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxzQkFBc0IsQ0FBQyxJQUFlO1FBQzFDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQzNELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7WUFFcEMsT0FBTyxPQUFPLElBQUksT0FBTyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztRQUM5RSxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3JCLE9BQU87UUFDWCxDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMscUJBQXFCLGlCQUFpQixJQUFJLENBQUMsQ0FBQztRQUV4RixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDWCxPQUFPO1FBQ1gsQ0FBQztRQUVELCtHQUErRztRQUMvRyxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDckUsTUFBTSxhQUFhLEdBQ2QsT0FBb0QsQ0FBQyxzQkFBc0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUUsV0FBMkIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUssT0FBdUIsQ0FBQztRQUVwSyxJQUFJLGFBQWEsWUFBWSxXQUFXLEVBQUUsQ0FBQztZQUN2QyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDdEIsYUFBYSxDQUFDLGNBQWMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDMUUsQ0FBQztJQUNMLENBQUM7K0dBL0VRLGlDQUFpQzttR0FBakMsaUNBQWlDOzs0RkFBakMsaUNBQWlDO2tCQVA3QyxTQUFTO21CQUFDO29CQUNQLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsMkNBQTJDO29CQUNyRCxJQUFJLEVBQUU7d0JBQ0YsWUFBWSxFQUFFLFlBQVk7cUJBQzdCO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRGlyZWN0aXZlLCBpbmplY3QsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAsIEZvcm1Hcm91cERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuLyoqXG4gKiDQlNC40YDQtdC60YLQuNCy0LAg0LTQu9GPINCw0LLRgtC+0LzQsNGC0LjRh9C10YHQutC+0Lkg0YPRgdGC0LDQvdC+0LLQutC4INGE0L7QutGD0YHQsCDQvdCwINC/0LXRgNCy0L7QtSDQvdC10LLQsNC70LjQtNC90L7QtSDQv9C+0LvQtSDRhNC+0YDQvNGLINC/0YDQuCBzdWJtaXQuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdmb3JtW2Zvcm1Hcm91cF1bc2NGb2N1c0ZpcnN0SW52YWxpZEZpZWxkXScsXG4gICAgaG9zdDoge1xuICAgICAgICAnKG5nU3VibWl0KSc6ICdvblN1Ym1pdCgpJyxcbiAgICB9LFxufSlcbmV4cG9ydCBjbGFzcyBTY0ZvY3VzRmlyc3RJbnZhbGlkRmllbGREaXJlY3RpdmUge1xuICAgIC8qKlxuICAgICAqINCf0L7RgNGP0LTQvtC6INC/0YDQvtCy0LXRgNC60Lgg0L/QvtC70LXQuSDRhNC+0YDQvNGLLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBmaWVsZE9yZGVyID0gaW5wdXQ8c3RyaW5nW10+KFtdKTtcblxuICAgIC8qKlxuICAgICAqINCe0LHRitC10LrRgiB7QGxpbmsgRG9jdW1lbnR9LCDQv9GA0LXQtNC+0YHRgtCw0LLQu9GP0Y7RidC40Lkg0LTQvtGB0YLRg9C/INC6IERPTSDRgdGC0YDQsNC90LjRhtGLLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuXG4gICAgLyoqXG4gICAgICog0JTQuNGA0LXQutGC0LjQstCwINGE0L7RgNC80YsuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBmb3JtR3JvdXBEaXJlY3RpdmUgPSBpbmplY3QoRm9ybUdyb3VwRGlyZWN0aXZlKTtcblxuICAgIC8qKlxuICAgICAqINCe0LHRgNCw0LHQvtGC0YfQuNC6INGB0L7QsdGL0YLQuNGPIHN1Ym1pdCDRhNC+0YDQvNGLLlxuICAgICAqL1xuICAgIHByaXZhdGUgb25TdWJtaXQoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHsgZm9ybSB9ID0gdGhpcy5mb3JtR3JvdXBEaXJlY3RpdmU7XG5cbiAgICAgICAgaWYgKHRoaXMuZmllbGRPcmRlcigpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZvcm0udmFsaWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZpcnN0SW52YWxpZEZpZWxkTmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkID0gdGhpcy5maWVsZE9yZGVyKCkuZmluZCgoZmllbGROYW1lKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb250cm9sID0gZm9ybS5nZXQoZmllbGROYW1lKTtcblxuICAgICAgICAgICAgcmV0dXJuIGNvbnRyb2wgJiYgY29udHJvbC5pbnZhbGlkICYmICFjb250cm9sLmRpc2FibGVkO1xuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBmaXJzdEludmFsaWRGaWVsZCA9IGZpcnN0SW52YWxpZEZpZWxkTmFtZSA/IGZvcm0uZ2V0KGZpcnN0SW52YWxpZEZpZWxkTmFtZSkgOiBudWxsO1xuXG4gICAgICAgIGlmIChmaXJzdEludmFsaWRGaWVsZCkge1xuICAgICAgICAgICAgZmlyc3RJbnZhbGlkRmllbGQubWFya0FzVG91Y2hlZCgpO1xuICAgICAgICAgICAgZmlyc3RJbnZhbGlkRmllbGQudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzRmlyc3RJbnZhbGlkRmllbGQoZm9ybSk7XG4gICAgICAgIH0sIDApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCj0YHRgtCw0L3QsNCy0LvQuNCy0LDQtdGCINGE0L7QutGD0YEg0L3QsCDQv9C10YDQstC+0LUg0L/QvtC70LUg0YTQvtGA0LzRiyDRgSDQvtGI0LjQsdC60L7QuS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmb3JtINCk0L7RgNC80LAg0LTQu9GPINC/0YDQvtCy0LXRgNC60LguXG4gICAgICovXG4gICAgcHJpdmF0ZSBmb2N1c0ZpcnN0SW52YWxpZEZpZWxkKGZvcm06IEZvcm1Hcm91cCk6IHZvaWQge1xuICAgICAgICBjb25zdCBmaXJzdEludmFsaWRGaWVsZCA9IHRoaXMuZmllbGRPcmRlcigpLmZpbmQoKGZpZWxkTmFtZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29udHJvbCA9IGZvcm0uZ2V0KGZpZWxkTmFtZSk7XG5cbiAgICAgICAgICAgIHJldHVybiBjb250cm9sICYmIGNvbnRyb2wuaW52YWxpZCAmJiBjb250cm9sLnRvdWNoZWQgJiYgIWNvbnRyb2wuZGlzYWJsZWQ7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICghZmlyc3RJbnZhbGlkRmllbGQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYFtmb3JtQ29udHJvbE5hbWU9XCIke2ZpcnN0SW52YWxpZEZpZWxkfVwiXWApO1xuXG4gICAgICAgIGlmICghZWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtYXNzaWdubWVudCwgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1tZW1iZXItYWNjZXNzXG4gICAgICAgIGNvbnN0IHF1ZXJ5UmVzdWx0ID0gZWxlbWVudC5xdWVyeVNlbGVjdG9yKCdpbnB1dCwgc2VsZWN0LCB0ZXh0YXJlYScpO1xuICAgICAgICBjb25zdCBuYXRpdmVFbGVtZW50ID1cbiAgICAgICAgICAgIChlbGVtZW50IGFzIHsgbmF0aXZlRm9jdXNhYmxlRWxlbWVudD86IEhUTUxFbGVtZW50IH0pLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQgPz8gKHF1ZXJ5UmVzdWx0ID8gKHF1ZXJ5UmVzdWx0IGFzIEhUTUxFbGVtZW50KSA6IG51bGwpID8/IChlbGVtZW50IGFzIEhUTUxFbGVtZW50KTtcblxuICAgICAgICBpZiAobmF0aXZlRWxlbWVudCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XG4gICAgICAgICAgICBuYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgICBuYXRpdmVFbGVtZW50LnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ2NlbnRlcicgfSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,30 @@
1
+ import { Directive } from '@angular/core';
2
+ import { TuiValueTransformer } from '@taiga-ui/cdk';
3
+ import { NullOnEmptyValueTransformer } from '../providers/null-on-empty-value-transformer';
4
+ import * as i0 from "@angular/core";
5
+ /**
6
+ * Директива для замены пустой строки в значении текстового поля на null: очищенное необязательное поле не уходит в запрос.
7
+ */
8
+ export class NullOnEmptyTransformerDirective {
9
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NullOnEmptyTransformerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
10
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: NullOnEmptyTransformerDirective, isStandalone: true, selector: "tui-input[nullOnEmpty]", providers: [
11
+ {
12
+ provide: TuiValueTransformer,
13
+ useClass: NullOnEmptyValueTransformer,
14
+ },
15
+ ], ngImport: i0 }); }
16
+ }
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NullOnEmptyTransformerDirective, decorators: [{
18
+ type: Directive,
19
+ args: [{
20
+ standalone: true,
21
+ selector: 'tui-input[nullOnEmpty]',
22
+ providers: [
23
+ {
24
+ provide: TuiValueTransformer,
25
+ useClass: NullOnEmptyValueTransformer,
26
+ },
27
+ ],
28
+ }]
29
+ }] });
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtbnVsbC1vbi1lbXB0eS12YWx1ZS10cmFuc2Zvcm1lci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvZGlyZWN0aXZlcy9zYy1udWxsLW9uLWVtcHR5LXZhbHVlLXRyYW5zZm9ybWVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVwRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQzs7QUFFM0Y7O0dBRUc7QUFXSCxNQUFNLE9BQU8sK0JBQStCOytHQUEvQiwrQkFBK0I7bUdBQS9CLCtCQUErQixxRUFQN0I7WUFDUDtnQkFDSSxPQUFPLEVBQUUsbUJBQW1CO2dCQUM1QixRQUFRLEVBQUUsMkJBQTJCO2FBQ3hDO1NBQ0o7OzRGQUVRLCtCQUErQjtrQkFWM0MsU0FBUzttQkFBQztvQkFDUCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLHdCQUF3QjtvQkFDbEMsU0FBUyxFQUFFO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxtQkFBbUI7NEJBQzVCLFFBQVEsRUFBRSwyQkFBMkI7eUJBQ3hDO3FCQUNKO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUdWlWYWx1ZVRyYW5zZm9ybWVyIH0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5cbmltcG9ydCB7IE51bGxPbkVtcHR5VmFsdWVUcmFuc2Zvcm1lciB9IGZyb20gJy4uL3Byb3ZpZGVycy9udWxsLW9uLWVtcHR5LXZhbHVlLXRyYW5zZm9ybWVyJztcblxuLyoqXG4gKiDQlNC40YDQtdC60YLQuNCy0LAg0LTQu9GPINC30LDQvNC10L3RiyDQv9GD0YHRgtC+0Lkg0YHRgtGA0L7QutC4INCyINC30L3QsNGH0LXQvdC40Lgg0YLQtdC60YHRgtC+0LLQvtCz0L4g0L/QvtC70Y8g0L3QsCBudWxsOiDQvtGH0LjRidC10L3QvdC+0LUg0L3QtdC+0LHRj9C30LDRgtC10LvRjNC90L7QtSDQv9C+0LvQtSDQvdC1INGD0YXQvtC00LjRgiDQsiDQt9Cw0L/RgNC+0YEuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICd0dWktaW5wdXRbbnVsbE9uRW1wdHldJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogVHVpVmFsdWVUcmFuc2Zvcm1lcixcbiAgICAgICAgICAgIHVzZUNsYXNzOiBOdWxsT25FbXB0eVZhbHVlVHJhbnNmb3JtZXIsXG4gICAgICAgIH0sXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTnVsbE9uRW1wdHlUcmFuc2Zvcm1lckRpcmVjdGl2ZSB7fVxuIl19
@@ -0,0 +1,36 @@
1
+ import { Directive } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * Директива для обработки события фокуса поля ввода, для последующего выделения содержимого поля ввода.
5
+ */
6
+ export class ScSelectOnFocusinDirective {
7
+ /**
8
+ * Слушатель и обработчик события `focusin`.
9
+ *
10
+ * @param target Целевой объект события `focusin`.
11
+ */
12
+ // eslint-disable-next-line class-methods-use-this
13
+ onFocusIn(target) {
14
+ if (target instanceof HTMLInputElement) {
15
+ // Safari может сбрасывать выделение после focusin при клике мышью.
16
+ setTimeout(() => {
17
+ if (document.activeElement === target) {
18
+ target.select();
19
+ }
20
+ });
21
+ }
22
+ }
23
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScSelectOnFocusinDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
24
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: ScSelectOnFocusinDirective, isStandalone: true, selector: "tui-input-number, tui-input, tui-input-phone, tui-input-date, tui-input-password, input[tuiInputNumber], input[tuiTextfield], input[tuiInputSlider]", host: { listeners: { "focusin": "onFocusIn($event.target)" } }, ngImport: i0 }); }
25
+ }
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScSelectOnFocusinDirective, decorators: [{
27
+ type: Directive,
28
+ args: [{
29
+ standalone: true,
30
+ selector: 'tui-input-number, tui-input, tui-input-phone, tui-input-date, tui-input-password, input[tuiInputNumber], input[tuiTextfield], input[tuiInputSlider]',
31
+ host: {
32
+ '(focusin)': 'onFocusIn($event.target)',
33
+ },
34
+ }]
35
+ }] });
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Mtc2VsZWN0LW9uLWZvY3VzaW4uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2RpcmVjdGl2ZXMvc2VsZWN0LW9uLWZvY3VzaW4vc2Mtc2VsZWN0LW9uLWZvY3VzaW4uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRTFDOztHQUVHO0FBUUgsTUFBTSxPQUFPLDBCQUEwQjtJQUNuQzs7OztPQUlHO0lBQ0gsa0RBQWtEO0lBQ3hDLFNBQVMsQ0FBQyxNQUEwQjtRQUMxQyxJQUFJLE1BQU0sWUFBWSxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3JDLG1FQUFtRTtZQUNuRSxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNaLElBQUksUUFBUSxDQUFDLGFBQWEsS0FBSyxNQUFNLEVBQUUsQ0FBQztvQkFDcEMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNwQixDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO0lBQ0wsQ0FBQzsrR0FoQlEsMEJBQTBCO21HQUExQiwwQkFBMEI7OzRGQUExQiwwQkFBMEI7a0JBUHRDLFNBQVM7bUJBQUM7b0JBQ1AsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSxxSkFBcUo7b0JBQy9KLElBQUksRUFBRTt3QkFDRixXQUFXLEVBQUUsMEJBQTBCO3FCQUMxQztpQkFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqINCU0LjRgNC10LrRgtC40LLQsCDQtNC70Y8g0L7QsdGA0LDQsdC+0YLQutC4INGB0L7QsdGL0YLQuNGPINGE0L7QutGD0YHQsCDQv9C+0LvRjyDQstCy0L7QtNCwLCDQtNC70Y8g0L/QvtGB0LvQtdC00YPRjtGJ0LXQs9C+INCy0YvQtNC10LvQtdC90LjRjyDRgdC+0LTQtdGA0LbQuNC80L7Qs9C+INC/0L7Qu9GPINCy0LLQvtC00LAuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICd0dWktaW5wdXQtbnVtYmVyLCB0dWktaW5wdXQsIHR1aS1pbnB1dC1waG9uZSwgdHVpLWlucHV0LWRhdGUsIHR1aS1pbnB1dC1wYXNzd29yZCwgaW5wdXRbdHVpSW5wdXROdW1iZXJdLCBpbnB1dFt0dWlUZXh0ZmllbGRdLCBpbnB1dFt0dWlJbnB1dFNsaWRlcl0nLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJyhmb2N1c2luKSc6ICdvbkZvY3VzSW4oJGV2ZW50LnRhcmdldCknLFxuICAgIH0sXG59KVxuZXhwb3J0IGNsYXNzIFNjU2VsZWN0T25Gb2N1c2luRGlyZWN0aXZlIHtcbiAgICAvKipcbiAgICAgKiDQodC70YPRiNCw0YLQtdC70Ywg0Lgg0L7QsdGA0LDQsdC+0YLRh9C40Log0YHQvtCx0YvRgtC40Y8gYGZvY3VzaW5gLlxuICAgICAqXG4gICAgICogQHBhcmFtIHRhcmdldCDQptC10LvQtdCy0L7QuSDQvtCx0YrQtdC60YIg0YHQvtCx0YvRgtC40Y8gYGZvY3VzaW5gLlxuICAgICAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzXG4gICAgcHJvdGVjdGVkIG9uRm9jdXNJbih0YXJnZXQ6IEV2ZW50VGFyZ2V0IHwgbnVsbCk6IHZvaWQge1xuICAgICAgICBpZiAodGFyZ2V0IGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCkge1xuICAgICAgICAgICAgLy8gU2FmYXJpINC80L7QttC10YIg0YHQsdGA0LDRgdGL0LLQsNGC0Ywg0LLRi9C00LXQu9C10L3QuNC1INC/0L7RgdC70LUgZm9jdXNpbiDQv9GA0Lgg0LrQu9C40LrQtSDQvNGL0YjRjNGOLlxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRhcmdldCkge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc2VsZWN0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,69 @@
1
+ /* eslint-disable lodash/prefer-lodash-method */
2
+ import { Directive, ElementRef, HostListener, inject } from '@angular/core';
3
+ import { IS_RUNNING_ON_TERMINAL } from '@snabcentr/client-core';
4
+ import { TuiDialogService } from '@taiga-ui/core';
5
+ import { PolymorpheusComponent } from '@taiga-ui/polymorpheus';
6
+ import { ScQRCodeDialogComponent } from '../../qrcode';
7
+ import * as i0 from "@angular/core";
8
+ /**
9
+ * Директива открытия диалогового окна с QRCode для ссылок `tel:` и `mailto:` на терминале.
10
+ */
11
+ export class ScTerminalLinkDirective {
12
+ constructor() {
13
+ /**
14
+ * Ссылка на HTML элемент тега `<a>`.
15
+ */
16
+ this.elementReference = inject(ElementRef);
17
+ /**
18
+ * Сервис для работы с диалоговыми окнами TuiDialog.
19
+ */
20
+ this.dialog = inject(TuiDialogService);
21
+ /**
22
+ * Провайдер данных о терминале.
23
+ */
24
+ this.terminal = inject(IS_RUNNING_ON_TERMINAL);
25
+ }
26
+ /**
27
+ * Обработчик клика по ссылке.
28
+ *
29
+ * @param event Событие клика.
30
+ */
31
+ onClick(event) {
32
+ if (this.terminal.isRunningOnTerminal && this.isLinkTelOrMail()) {
33
+ // Отключение базового события для терминала.
34
+ event.preventDefault();
35
+ this.openQRCodeDialog();
36
+ }
37
+ }
38
+ /**
39
+ * Открывает диалоговое окно с QR-кодом.
40
+ */
41
+ openQRCodeDialog() {
42
+ this.dialog
43
+ .open(new PolymorpheusComponent(ScQRCodeDialogComponent), {
44
+ size: 's',
45
+ // Передаём ссылку формата `mailto:example@example.com` `tel:+70000000000` вместо vCard, так как для vCard данных недостаточно.
46
+ data: { qrdata: this.elementReference.nativeElement.href },
47
+ })
48
+ .subscribe();
49
+ }
50
+ /**
51
+ * Проверяет ведёт ли ссылка на телефон или адрес электронной почты.
52
+ */
53
+ isLinkTelOrMail() {
54
+ return this.elementReference.nativeElement.href.startsWith('tel:') || this.elementReference.nativeElement.href.startsWith('mailto:');
55
+ }
56
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScTerminalLinkDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
57
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: ScTerminalLinkDirective, isStandalone: true, selector: "a[href]", host: { listeners: { "click": "onClick($event)" } }, ngImport: i0 }); }
58
+ }
59
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScTerminalLinkDirective, decorators: [{
60
+ type: Directive,
61
+ args: [{
62
+ standalone: true,
63
+ selector: 'a[href]',
64
+ }]
65
+ }], propDecorators: { onClick: [{
66
+ type: HostListener,
67
+ args: ['click', ['$event']]
68
+ }] } });
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtdGVybWluYWwtbGluay5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvZGlyZWN0aXZlcy90ZXJtaW5hbC1saW5rL3NjLXRlcm1pbmFsLWxpbmsuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdEQUFnRDtBQUVoRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVFLE9BQU8sRUFBRSxzQkFBc0IsRUFBdUIsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUUvRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBRXZEOztHQUVHO0FBS0gsTUFBTSxPQUFPLHVCQUF1QjtJQUpwQztRQUtJOztXQUVHO1FBQ0sscUJBQWdCLEdBQWtDLE1BQU0sQ0FBZ0MsVUFBVSxDQUFDLENBQUM7UUFFNUc7O1dBRUc7UUFDSyxXQUFNLEdBQXFCLE1BQU0sQ0FBbUIsZ0JBQWdCLENBQUMsQ0FBQztRQUU5RTs7V0FFRztRQUNLLGFBQVEsR0FBd0IsTUFBTSxDQUFzQixzQkFBc0IsQ0FBQyxDQUFDO0tBbUMvRjtJQWpDRzs7OztPQUlHO0lBRUksT0FBTyxDQUFDLEtBQVk7UUFDdkIsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLG1CQUFtQixJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDO1lBQzlELDZDQUE2QztZQUM3QyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDNUIsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNJLGdCQUFnQjtRQUNuQixJQUFJLENBQUMsTUFBTTthQUNOLElBQUksQ0FBQyxJQUFJLHFCQUFxQixDQUFDLHVCQUF1QixDQUFDLEVBQUU7WUFDdEQsSUFBSSxFQUFFLEdBQUc7WUFDVCwrSEFBK0g7WUFDL0gsSUFBSSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFO1NBQzdELENBQUM7YUFDRCxTQUFTLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQ7O09BRUc7SUFDSyxlQUFlO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN6SSxDQUFDOytHQWhEUSx1QkFBdUI7bUdBQXZCLHVCQUF1Qjs7NEZBQXZCLHVCQUF1QjtrQkFKbkMsU0FBUzttQkFBQztvQkFDUCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLFNBQVM7aUJBQ3RCOzhCQXVCVSxPQUFPO3NCQURiLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbG9kYXNoL3ByZWZlci1sb2Rhc2gtbWV0aG9kICovXG5cbmltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElTX1JVTk5JTkdfT05fVEVSTUlOQUwsIFNjSVRlcm1pbmFsUHJvdmlkZXIgfSBmcm9tICdAc25hYmNlbnRyL2NsaWVudC1jb3JlJztcbmltcG9ydCB7IFR1aURpYWxvZ1NlcnZpY2UgfSBmcm9tICdAdGFpZ2EtdWkvY29yZSc7XG5pbXBvcnQgeyBQb2x5bW9ycGhldXNDb21wb25lbnQgfSBmcm9tICdAdGFpZ2EtdWkvcG9seW1vcnBoZXVzJztcblxuaW1wb3J0IHsgU2NRUkNvZGVEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi8uLi9xcmNvZGUnO1xuXG4vKipcbiAqINCU0LjRgNC10LrRgtC40LLQsCDQvtGC0LrRgNGL0YLQuNGPINC00LjQsNC70L7Qs9C+0LLQvtCz0L4g0L7QutC90LAg0YEgUVJDb2RlINC00LvRjyDRgdGB0YvQu9C+0LogYHRlbDpgINC4IGBtYWlsdG86YCDQvdCwINGC0LXRgNC80LjQvdCw0LvQtS5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ2FbaHJlZl0nLFxufSlcbmV4cG9ydCBjbGFzcyBTY1Rlcm1pbmFsTGlua0RpcmVjdGl2ZSB7XG4gICAgLyoqXG4gICAgICog0KHRgdGL0LvQutCwINC90LAgSFRNTCDRjdC70LXQvNC10L3RgiDRgtC10LPQsCBgPGE+YC5cbiAgICAgKi9cbiAgICBwcml2YXRlIGVsZW1lbnRSZWZlcmVuY2U6IEVsZW1lbnRSZWY8SFRNTEFuY2hvckVsZW1lbnQ+ID0gaW5qZWN0PEVsZW1lbnRSZWY8SFRNTEFuY2hvckVsZW1lbnQ+PihFbGVtZW50UmVmKTtcblxuICAgIC8qKlxuICAgICAqINCh0LXRgNCy0LjRgSDQtNC70Y8g0YDQsNCx0L7RgtGLINGBINC00LjQsNC70L7Qs9C+0LLRi9C80Lgg0L7QutC90LDQvNC4IFR1aURpYWxvZy5cbiAgICAgKi9cbiAgICBwcml2YXRlIGRpYWxvZzogVHVpRGlhbG9nU2VydmljZSA9IGluamVjdDxUdWlEaWFsb2dTZXJ2aWNlPihUdWlEaWFsb2dTZXJ2aWNlKTtcblxuICAgIC8qKlxuICAgICAqINCf0YDQvtCy0LDQudC00LXRgCDQtNCw0L3QvdGL0YUg0L4g0YLQtdGA0LzQuNC90LDQu9C1LlxuICAgICAqL1xuICAgIHByaXZhdGUgdGVybWluYWw6IFNjSVRlcm1pbmFsUHJvdmlkZXIgPSBpbmplY3Q8U2NJVGVybWluYWxQcm92aWRlcj4oSVNfUlVOTklOR19PTl9URVJNSU5BTCk7XG5cbiAgICAvKipcbiAgICAgKiDQntCx0YDQsNCx0L7RgtGH0LjQuiDQutC70LjQutCwINC/0L4g0YHRgdGL0LvQutC1LlxuICAgICAqXG4gICAgICogQHBhcmFtIGV2ZW50INCh0L7QsdGL0YLQuNC1INC60LvQuNC60LAuXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyBvbkNsaWNrKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy50ZXJtaW5hbC5pc1J1bm5pbmdPblRlcm1pbmFsICYmIHRoaXMuaXNMaW5rVGVsT3JNYWlsKCkpIHtcbiAgICAgICAgICAgIC8vINCe0YLQutC70Y7Rh9C10L3QuNC1INCx0LDQt9C+0LLQvtCz0L4g0YHQvtCx0YvRgtC40Y8g0LTQu9GPINGC0LXRgNC80LjQvdCw0LvQsC5cbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB0aGlzLm9wZW5RUkNvZGVEaWFsb2coKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCe0YLQutGA0YvQstCw0LXRgiDQtNC40LDQu9C+0LPQvtCy0L7QtSDQvtC60L3QviDRgSBRUi3QutC+0LTQvtC8LlxuICAgICAqL1xuICAgIHB1YmxpYyBvcGVuUVJDb2RlRGlhbG9nKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRpYWxvZ1xuICAgICAgICAgICAgLm9wZW4obmV3IFBvbHltb3JwaGV1c0NvbXBvbmVudChTY1FSQ29kZURpYWxvZ0NvbXBvbmVudCksIHtcbiAgICAgICAgICAgICAgICBzaXplOiAncycsXG4gICAgICAgICAgICAgICAgLy8g0J/QtdGA0LXQtNCw0ZHQvCDRgdGB0YvQu9C60YMg0YTQvtGA0LzQsNGC0LAgYG1haWx0bzpleGFtcGxlQGV4YW1wbGUuY29tYCBgdGVsOis3MDAwMDAwMDAwMGAg0LLQvNC10YHRgtC+IHZDYXJkLCDRgtCw0Log0LrQsNC6INC00LvRjyB2Q2FyZCDQtNCw0L3QvdGL0YUg0L3QtdC00L7RgdGC0LDRgtC+0YfQvdC+LlxuICAgICAgICAgICAgICAgIGRhdGE6IHsgcXJkYXRhOiB0aGlzLmVsZW1lbnRSZWZlcmVuY2UubmF0aXZlRWxlbWVudC5ocmVmIH0sXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCf0YDQvtCy0LXRgNGP0LXRgiDQstC10LTRkdGCINC70Lgg0YHRgdGL0LvQutCwINC90LAg0YLQtdC70LXRhNC+0L0g0LjQu9C4INCw0LTRgNC10YEg0Y3Qu9C10LrRgtGA0L7QvdC90L7QuSDQv9C+0YfRgtGLLlxuICAgICAqL1xuICAgIHByaXZhdGUgaXNMaW5rVGVsT3JNYWlsKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmZXJlbmNlLm5hdGl2ZUVsZW1lbnQuaHJlZi5zdGFydHNXaXRoKCd0ZWw6JykgfHwgdGhpcy5lbGVtZW50UmVmZXJlbmNlLm5hdGl2ZUVsZW1lbnQuaHJlZi5zdGFydHNXaXRoKCdtYWlsdG86Jyk7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,10 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ import { noop } from 'rxjs';
3
+ /**
4
+ * Токен обработчика смены ошибки.
5
+ */
6
+ // eslint-disable-next-line unicorn/consistent-function-scoping
7
+ export const SC_ERROR_CHANGE_HANDLER = new InjectionToken('SC_ERROR_CHANGE_HANDLER', {
8
+ factory: () => () => noop,
9
+ });
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItY2hhbmdlLWhhbmRsZXIucHJvdmlkZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2Vycm9yLWhhbmRsZXIvY29uc3RzL2Vycm9yLWNoYW5nZS1oYW5kbGVyLnByb3ZpZGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJNUI7O0dBRUc7QUFDSCwrREFBK0Q7QUFDL0QsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxjQUFjLENBQStCLHlCQUF5QixFQUFFO0lBQy9HLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJO0NBQzVCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBub29wIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IElCbG9ja0Vycm9yIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9pLWJsb2NrLWVycm9yJztcblxuLyoqXG4gKiDQotC+0LrQtdC9INC+0LHRgNCw0LHQvtGC0YfQuNC60LAg0YHQvNC10L3RiyDQvtGI0LjQsdC60LguXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL2NvbnNpc3RlbnQtZnVuY3Rpb24tc2NvcGluZ1xuZXhwb3J0IGNvbnN0IFNDX0VSUk9SX0NIQU5HRV9IQU5ETEVSID0gbmV3IEluamVjdGlvblRva2VuPChlcnJvcjogSUJsb2NrRXJyb3IpID0+IHZvaWQ+KCdTQ19FUlJPUl9DSEFOR0VfSEFORExFUicsIHtcbiAgICBmYWN0b3J5OiAoKSA9PiAoKSA9PiBub29wLFxufSk7XG4iXX0=
@@ -0,0 +1,101 @@
1
+ import { ChangeDetectionStrategy, Component, computed, effect, inject, output } from '@angular/core';
2
+ import { ActivatedRoute, RouterLink } from '@angular/router';
3
+ import { IS_SERVER, RESPONSE } from '@snabcentr/client-core';
4
+ import { TuiAppearance, TuiButton, TuiIcons, TuiWithAppearance, TuiWithIcons } from '@taiga-ui/core';
5
+ import { ScErrorHandlerComponent } from '../sc-error-handler.component';
6
+ import * as i0 from "@angular/core";
7
+ /**
8
+ * Компонент представления данных об ошибке.
9
+ */
10
+ export class ScErrorBlockStatusComponent {
11
+ /**
12
+ * Инициализирует экземпляр класса {@link ErrorPageComponent}.
13
+ */
14
+ constructor() {
15
+ /**
16
+ * Компонент управляющий кодом ошибки отображаемой на странице.
17
+ */
18
+ this.errorHandlerComponent = inject(ScErrorHandlerComponent, { skipSelf: true });
19
+ /**
20
+ * Сигнал кода ошибки.
21
+ */
22
+ this.code = this.errorHandlerComponent.getErrorCode();
23
+ /**
24
+ * Данные об ошибке.
25
+ */
26
+ // eslint-disable-next-line unicorn/consistent-function-scoping
27
+ this.error = computed(() => this.getErrorMessage(this.code()));
28
+ /**
29
+ * Создает сигнал изменения строкового представления об ошибке.
30
+ */
31
+ this.pageErrorChange = output();
32
+ /**
33
+ * Статус ответа, когда код ошибки не является HTTP-статусом (0 при обрыве соединения с API).
34
+ */
35
+ this.unavailableResponseStatus = 503;
36
+ /**
37
+ * Признак, что текущий скрипт исполняется на сервере.
38
+ */
39
+ this.isServer = inject(IS_SERVER);
40
+ /**
41
+ * Данные об ответе на запрос.
42
+ */
43
+ this.response = inject(RESPONSE, { optional: true });
44
+ // Если компонент отображён маршрутизацией из-за перехода по неизвестному маршруту, то устанавливаем код 404.
45
+ if (inject(ActivatedRoute).snapshot.data['routes_key'] === 'error') {
46
+ this.errorHandlerComponent.setErrorCode(404);
47
+ }
48
+ effect(() => {
49
+ if (this.code() !== null) {
50
+ this.pageErrorChange.emit(this.error());
51
+ if (this.isServer) {
52
+ // TODO: Angular 21: применить getResponseStatus и к RESPONSE_INIT.status, статус 0 роняет new Response.
53
+ this.response?.status(this.getResponseStatus(this.code()));
54
+ }
55
+ }
56
+ });
57
+ }
58
+ /**
59
+ * Возвращает HTTP-статус ответа для кода ошибки; код вне 400-599 заменяется на {@link unavailableResponseStatus}.
60
+ *
61
+ * @param code Код ошибки.
62
+ */
63
+ getResponseStatus(code) {
64
+ return code !== null && code >= 400 && code <= 599 ? code : this.unavailableResponseStatus;
65
+ }
66
+ /**
67
+ * Возвращает описание ошибки.
68
+ *
69
+ * @param code Код ошибки.
70
+ */
71
+ // eslint-disable-next-line class-methods-use-this
72
+ getErrorMessage(code) {
73
+ switch (code) {
74
+ case 403:
75
+ return {
76
+ message: 'К сожалению, у вас нет доступа к этому ресурсу',
77
+ description: 'Воспользуйтесь навигацией в шапке или подвале сайта, чтобы перейти в интересующий вас раздел',
78
+ code,
79
+ };
80
+ case 404:
81
+ return {
82
+ message: 'К сожалению, такой страницы нет',
83
+ description: 'Воспользуйтесь навигацией в шапке или подвале сайта, чтобы перейти в интересующий вас раздел',
84
+ code,
85
+ };
86
+ default:
87
+ return {
88
+ message: 'Неизвестная ошибка',
89
+ description: 'Пожалуйста обновите страницу или обратитесь к менеджеру',
90
+ code: 0,
91
+ };
92
+ }
93
+ }
94
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScErrorBlockStatusComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
95
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ScErrorBlockStatusComponent, isStandalone: true, selector: "sc-error-block-status", outputs: { pageErrorChange: "pageErrorChange" }, ngImport: i0, template: "<div class=\"flex flex-col items-center gap-8\">\n <div class=\"border-20 border-solid border-tui-primary text-center sm:border-32\">\n <div class=\"text-8xl leading-1.15 text-black sm:text-44\">\n {{ error().code }}\n </div>\n <div class=\"text-6xl leading-1.15 text-tui-primary sm:text-8xl\">ERROR</div>\n </div>\n <div class=\"flex flex-col gap-2 text-center\">\n <div class=\"text-h5 sm:text-h4\">{{ error().message }}</div>\n <div class=\"text-body-m-bold sm:text-h6\">{{ error().description }}</div>\n </div>\n <button\n tuiButton\n appearance=\"primary\"\n routerLink=\"/\"\n >\n \u0412\u0435\u0440\u043D\u0443\u0442\u044C\u0441\u044F \u043D\u0430 \u0433\u043B\u0430\u0432\u043D\u0443\u044E\n </button>\n</div>\n", dependencies: [{ kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
96
+ }
97
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScErrorBlockStatusComponent, decorators: [{
98
+ type: Component,
99
+ args: [{ standalone: true, selector: 'sc-error-block-status', imports: [TuiAppearance, TuiWithAppearance, TuiIcons, TuiWithIcons, TuiButton, RouterLink], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex flex-col items-center gap-8\">\n <div class=\"border-20 border-solid border-tui-primary text-center sm:border-32\">\n <div class=\"text-8xl leading-1.15 text-black sm:text-44\">\n {{ error().code }}\n </div>\n <div class=\"text-6xl leading-1.15 text-tui-primary sm:text-8xl\">ERROR</div>\n </div>\n <div class=\"flex flex-col gap-2 text-center\">\n <div class=\"text-h5 sm:text-h4\">{{ error().message }}</div>\n <div class=\"text-body-m-bold sm:text-h6\">{{ error().description }}</div>\n </div>\n <button\n tuiButton\n appearance=\"primary\"\n routerLink=\"/\"\n >\n \u0412\u0435\u0440\u043D\u0443\u0442\u044C\u0441\u044F \u043D\u0430 \u0433\u043B\u0430\u0432\u043D\u0443\u044E\n </button>\n</div>\n" }]
100
+ }], ctorParameters: () => [] });
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItYmxvY2stc3RhdHVzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9lcnJvci1oYW5kbGVyL2Vycm9yLWJsb2NrLXN0YXR1cy9lcnJvci1ibG9jay1zdGF0dXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2Vycm9yLWhhbmRsZXIvZXJyb3ItYmxvY2stc3RhdHVzL2Vycm9yLWJsb2NrLXN0YXR1cy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUM3RyxPQUFPLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdELE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3JHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLCtCQUErQixDQUFDOztBQUV4RTs7R0FFRztBQVFILE1BQU0sT0FBTywyQkFBMkI7SUFxQ3BDOztPQUVHO0lBQ0g7UUF2Q0E7O1dBRUc7UUFDZ0IsMEJBQXFCLEdBQTRCLE1BQU0sQ0FBQyx1QkFBdUIsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRXhIOztXQUVHO1FBQ2dCLFNBQUksR0FBMEIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBRTNGOztXQUVHO1FBQ0gsK0RBQStEO1FBQzVDLFVBQUssR0FBd0IsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVsRzs7V0FFRztRQUNnQixvQkFBZSxHQUFHLE1BQU0sRUFBZSxDQUFDO1FBRTNEOztXQUVHO1FBQ2MsOEJBQXlCLEdBQUcsR0FBRyxDQUFDO1FBRWpEOztXQUVHO1FBQ2MsYUFBUSxHQUFZLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUV2RDs7V0FFRztRQUNjLGFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFNN0QsNkdBQTZHO1FBQzdHLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssT0FBTyxFQUFFLENBQUM7WUFDakUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqRCxDQUFDO1FBRUQsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNSLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUN2QixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztnQkFFeEMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7b0JBQ2hCLHdHQUF3RztvQkFDeEcsSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQy9ELENBQUM7WUFDTCxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNPLGlCQUFpQixDQUFDLElBQW1CO1FBQzNDLE9BQU8sSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDO0lBQy9GLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsa0RBQWtEO0lBQ3hDLGVBQWUsQ0FBQyxJQUFtQjtRQUN6QyxRQUFRLElBQUksRUFBRSxDQUFDO1lBQ1gsS0FBSyxHQUFHO2dCQUNKLE9BQU87b0JBQ0gsT0FBTyxFQUFFLGdEQUFnRDtvQkFDekQsV0FBVyxFQUFFLDhGQUE4RjtvQkFDM0csSUFBSTtpQkFDUCxDQUFDO1lBRU4sS0FBSyxHQUFHO2dCQUNKLE9BQU87b0JBQ0gsT0FBTyxFQUFFLGlDQUFpQztvQkFDMUMsV0FBVyxFQUFFLDhGQUE4RjtvQkFDM0csSUFBSTtpQkFDUCxDQUFDO1lBRU47Z0JBQ0ksT0FBTztvQkFDSCxPQUFPLEVBQUUsb0JBQW9CO29CQUM3QixXQUFXLEVBQUUseURBQXlEO29CQUN0RSxJQUFJLEVBQUUsQ0FBQztpQkFDVixDQUFDO1FBQ1YsQ0FBQztJQUNMLENBQUM7K0dBaEdRLDJCQUEyQjttR0FBM0IsMkJBQTJCLGtJQ2xCeEMsZ3pCQW1CQSw0Q0RKd0UsU0FBUyxvSUFBRSxVQUFVOzs0RkFHaEYsMkJBQTJCO2tCQVB2QyxTQUFTO2lDQUNNLElBQUksWUFDTix1QkFBdUIsV0FFeEIsQ0FBQyxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsVUFBVSxDQUFDLG1CQUN6RSx1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIGVmZmVjdCwgaW5qZWN0LCBvdXRwdXQsIFNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlckxpbmsgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSVNfU0VSVkVSLCBSRVNQT05TRSB9IGZyb20gJ0BzbmFiY2VudHIvY2xpZW50LWNvcmUnO1xuaW1wb3J0IHsgVHVpQXBwZWFyYW5jZSwgVHVpQnV0dG9uLCBUdWlJY29ucywgVHVpV2l0aEFwcGVhcmFuY2UsIFR1aVdpdGhJY29ucyB9IGZyb20gJ0B0YWlnYS11aS9jb3JlJztcblxuaW1wb3J0IHsgSUJsb2NrRXJyb3IgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2ktYmxvY2stZXJyb3InO1xuaW1wb3J0IHsgU2NFcnJvckhhbmRsZXJDb21wb25lbnQgfSBmcm9tICcuLi9zYy1lcnJvci1oYW5kbGVyLmNvbXBvbmVudCc7XG5cbi8qKlxuICog0JrQvtC80L/QvtC90LXQvdGCINC/0YDQtdC00YHRgtCw0LLQu9C10L3QuNGPINC00LDQvdC90YvRhSDQvtCxINC+0YjQuNCx0LrQtS5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ3NjLWVycm9yLWJsb2NrLXN0YXR1cycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Vycm9yLWJsb2NrLXN0YXR1cy5jb21wb25lbnQuaHRtbCcsXG4gICAgaW1wb3J0czogW1R1aUFwcGVhcmFuY2UsIFR1aVdpdGhBcHBlYXJhbmNlLCBUdWlJY29ucywgVHVpV2l0aEljb25zLCBUdWlCdXR0b24sIFJvdXRlckxpbmtdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTY0Vycm9yQmxvY2tTdGF0dXNDb21wb25lbnQge1xuICAgIC8qKlxuICAgICAqINCa0L7QvNC/0L7QvdC10L3RgiDRg9C/0YDQsNCy0LvRj9GO0YnQuNC5INC60L7QtNC+0Lwg0L7RiNC40LHQutC4INC+0YLQvtCx0YDQsNC20LDQtdC80L7QuSDQvdCwINGB0YLRgNCw0L3QuNGG0LUuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGVycm9ySGFuZGxlckNvbXBvbmVudDogU2NFcnJvckhhbmRsZXJDb21wb25lbnQgPSBpbmplY3QoU2NFcnJvckhhbmRsZXJDb21wb25lbnQsIHsgc2tpcFNlbGY6IHRydWUgfSk7XG5cbiAgICAvKipcbiAgICAgKiDQodC40LPQvdCw0Lsg0LrQvtC00LAg0L7RiNC40LHQutC4LlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBjb2RlOiBTaWduYWw8bnVtYmVyIHwgbnVsbD4gPSB0aGlzLmVycm9ySGFuZGxlckNvbXBvbmVudC5nZXRFcnJvckNvZGUoKTtcblxuICAgIC8qKlxuICAgICAqINCU0LDQvdC90YvQtSDQvtCxINC+0YjQuNCx0LrQtS5cbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9jb25zaXN0ZW50LWZ1bmN0aW9uLXNjb3BpbmdcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZXJyb3I6IFNpZ25hbDxJQmxvY2tFcnJvcj4gPSBjb21wdXRlZCgoKSA9PiB0aGlzLmdldEVycm9yTWVzc2FnZSh0aGlzLmNvZGUoKSkpO1xuXG4gICAgLyoqXG4gICAgICog0KHQvtC30LTQsNC10YIg0YHQuNCz0L3QsNC7INC40LfQvNC10L3QtdC90LjRjyDRgdGC0YDQvtC60L7QstC+0LPQviDQv9GA0LXQtNGB0YLQsNCy0LvQtdC90LjRjyDQvtCxINC+0YjQuNCx0LrQtS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcGFnZUVycm9yQ2hhbmdlID0gb3V0cHV0PElCbG9ja0Vycm9yPigpO1xuXG4gICAgLyoqXG4gICAgICog0KHRgtCw0YLRg9GBINC+0YLQstC10YLQsCwg0LrQvtCz0LTQsCDQutC+0LQg0L7RiNC40LHQutC4INC90LUg0Y/QstC70Y/QtdGC0YHRjyBIVFRQLdGB0YLQsNGC0YPRgdC+0LwgKDAg0L/RgNC4INC+0LHRgNGL0LLQtSDRgdC+0LXQtNC40L3QtdC90LjRjyDRgSBBUEkpLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdW5hdmFpbGFibGVSZXNwb25zZVN0YXR1cyA9IDUwMztcblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6LCDRh9GC0L4g0YLQtdC60YPRidC40Lkg0YHQutGA0LjQv9GCINC40YHQv9C+0LvQvdGP0LXRgtGB0Y8g0L3QsCDRgdC10YDQstC10YDQtS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGlzU2VydmVyOiBib29sZWFuID0gaW5qZWN0KElTX1NFUlZFUik7XG5cbiAgICAvKipcbiAgICAgKiDQlNCw0L3QvdGL0LUg0L7QsSDQvtGC0LLQtdGC0LUg0L3QsCDQt9Cw0L/RgNC+0YEuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSByZXNwb25zZSA9IGluamVjdChSRVNQT05TRSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICAgIC8qKlxuICAgICAqINCY0L3QuNGG0LjQsNC70LjQt9C40YDRg9C10YIg0Y3QutC30LXQvNC/0LvRj9GAINC60LvQsNGB0YHQsCB7QGxpbmsgRXJyb3JQYWdlQ29tcG9uZW50fS5cbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIC8vINCV0YHQu9C4INC60L7QvNC/0L7QvdC10L3RgiDQvtGC0L7QsdGA0LDQttGR0L0g0LzQsNGA0YjRgNGD0YLQuNC30LDRhtC40LXQuSDQuNC3LdC30LAg0L/QtdGA0LXRhdC+0LTQsCDQv9C+INC90LXQuNC30LLQtdGB0YLQvdC+0LzRgyDQvNCw0YDRiNGA0YPRgtGDLCDRgtC+INGD0YHRgtCw0L3QsNCy0LvQuNCy0LDQtdC8INC60L7QtCA0MDQuXG4gICAgICAgIGlmIChpbmplY3QoQWN0aXZhdGVkUm91dGUpLnNuYXBzaG90LmRhdGFbJ3JvdXRlc19rZXknXSA9PT0gJ2Vycm9yJykge1xuICAgICAgICAgICAgdGhpcy5lcnJvckhhbmRsZXJDb21wb25lbnQuc2V0RXJyb3JDb2RlKDQwNCk7XG4gICAgICAgIH1cblxuICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuY29kZSgpICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wYWdlRXJyb3JDaGFuZ2UuZW1pdCh0aGlzLmVycm9yKCkpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNTZXJ2ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gVE9ETzogQW5ndWxhciAyMTog0L/RgNC40LzQtdC90LjRgtGMIGdldFJlc3BvbnNlU3RhdHVzINC4INC6IFJFU1BPTlNFX0lOSVQuc3RhdHVzLCDRgdGC0LDRgtGD0YEgMCDRgNC+0L3Rj9C10YIgbmV3IFJlc3BvbnNlLlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNlPy5zdGF0dXModGhpcy5nZXRSZXNwb25zZVN0YXR1cyh0aGlzLmNvZGUoKSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIgSFRUUC3RgdGC0LDRgtGD0YEg0L7RgtCy0LXRgtCwINC00LvRjyDQutC+0LTQsCDQvtGI0LjQsdC60Lg7INC60L7QtCDQstC90LUgNDAwLTU5OSDQt9Cw0LzQtdC90Y/QtdGC0YHRjyDQvdCwIHtAbGluayB1bmF2YWlsYWJsZVJlc3BvbnNlU3RhdHVzfS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb2RlINCa0L7QtCDQvtGI0LjQsdC60LguXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGdldFJlc3BvbnNlU3RhdHVzKGNvZGU6IG51bWJlciB8IG51bGwpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gY29kZSAhPT0gbnVsbCAmJiBjb2RlID49IDQwMCAmJiBjb2RlIDw9IDU5OSA/IGNvZGUgOiB0aGlzLnVuYXZhaWxhYmxlUmVzcG9uc2VTdGF0dXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0L7Qv9C40YHQsNC90LjQtSDQvtGI0LjQsdC60LguXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29kZSDQmtC+0LQg0L7RiNC40LHQutC4LlxuICAgICAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzXG4gICAgcHJvdGVjdGVkIGdldEVycm9yTWVzc2FnZShjb2RlOiBudW1iZXIgfCBudWxsKTogSUJsb2NrRXJyb3Ige1xuICAgICAgICBzd2l0Y2ggKGNvZGUpIHtcbiAgICAgICAgICAgIGNhc2UgNDAzOlxuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICfQmiDRgdC+0LbQsNC70LXQvdC40Y4sINGDINCy0LDRgSDQvdC10YIg0LTQvtGB0YLRg9C/0LAg0Log0Y3RgtC+0LzRgyDRgNC10YHRg9GA0YHRgycsXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAn0JLQvtGB0L/QvtC70YzQt9GD0LnRgtC10YHRjCDQvdCw0LLQuNCz0LDRhtC40LXQuSDQsiDRiNCw0L/QutC1INC40LvQuCDQv9C+0LTQstCw0LvQtSDRgdCw0LnRgtCwLCDRh9GC0L7QsdGLINC/0LXRgNC10LnRgtC4INCyINC40L3RgtC10YDQtdGB0YPRjtGJ0LjQuSDQstCw0YEg0YDQsNC30LTQtdC7JyxcbiAgICAgICAgICAgICAgICAgICAgY29kZSxcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBjYXNlIDQwNDpcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAn0Jog0YHQvtC20LDQu9C10L3QuNGOLCDRgtCw0LrQvtC5INGB0YLRgNCw0L3QuNGG0Ysg0L3QtdGCJyxcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICfQktC+0YHQv9C+0LvRjNC30YPQudGC0LXRgdGMINC90LDQstC40LPQsNGG0LjQtdC5INCyINGI0LDQv9C60LUg0LjQu9C4INC/0L7QtNCy0LDQu9C1INGB0LDQudGC0LAsINGH0YLQvtCx0Ysg0L/QtdGA0LXQudGC0Lgg0LIg0LjQvdGC0LXRgNC10YHRg9GO0YnQuNC5INCy0LDRgSDRgNCw0LfQtNC10LsnLFxuICAgICAgICAgICAgICAgICAgICBjb2RlLFxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ9Cd0LXQuNC30LLQtdGB0YLQvdCw0Y8g0L7RiNC40LHQutCwJyxcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICfQn9C+0LbQsNC70YPQudGB0YLQsCDQvtCx0L3QvtCy0LjRgtC1INGB0YLRgNCw0L3QuNGG0YMg0LjQu9C4INC+0LHRgNCw0YLQuNGC0LXRgdGMINC6INC80LXQvdC10LTQttC10YDRgycsXG4gICAgICAgICAgICAgICAgICAgIGNvZGU6IDAsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlciBnYXAtOFwiPlxuICAgIDxkaXYgY2xhc3M9XCJib3JkZXItMjAgYm9yZGVyLXNvbGlkIGJvcmRlci10dWktcHJpbWFyeSB0ZXh0LWNlbnRlciBzbTpib3JkZXItMzJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtOHhsIGxlYWRpbmctMS4xNSB0ZXh0LWJsYWNrIHNtOnRleHQtNDRcIj5cbiAgICAgICAgICAgIHt7IGVycm9yKCkuY29kZSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtNnhsIGxlYWRpbmctMS4xNSB0ZXh0LXR1aS1wcmltYXJ5IHNtOnRleHQtOHhsXCI+RVJST1I8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtMiB0ZXh0LWNlbnRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1oNSBzbTp0ZXh0LWg0XCI+e3sgZXJyb3IoKS5tZXNzYWdlIH19PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWJvZHktbS1ib2xkIHNtOnRleHQtaDZcIj57eyBlcnJvcigpLmRlc2NyaXB0aW9uIH19PC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGJ1dHRvblxuICAgICAgICB0dWlCdXR0b25cbiAgICAgICAgYXBwZWFyYW5jZT1cInByaW1hcnlcIlxuICAgICAgICByb3V0ZXJMaW5rPVwiL1wiXG4gICAgPlxuICAgICAgICDQktC10YDQvdGD0YLRjNGB0Y8g0L3QsCDQs9C70LDQstC90YPRjlxuICAgIDwvYnV0dG9uPlxuPC9kaXY+XG4iXX0=
@@ -0,0 +1,5 @@
1
+ export * from './interfaces/i-block-error';
2
+ export * from './consts/error-change-handler.providers';
3
+ export * from './sc-error-handler.component';
4
+ export * from './error-block-status/error-block-status.component';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvZXJyb3ItaGFuZGxlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLG1EQUFtRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9pbnRlcmZhY2VzL2ktYmxvY2stZXJyb3InO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHMvZXJyb3ItY2hhbmdlLWhhbmRsZXIucHJvdmlkZXJzJztcbmV4cG9ydCAqIGZyb20gJy4vc2MtZXJyb3ItaGFuZGxlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9lcnJvci1ibG9jay1zdGF0dXMvZXJyb3ItYmxvY2stc3RhdHVzLmNvbXBvbmVudCc7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaS1ibG9jay1lcnJvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9lcnJvci1oYW5kbGVyL2ludGVyZmFjZXMvaS1ibG9jay1lcnJvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiDQnNC+0LTQtdC70Ywg0LTQsNC90L3Ri9GFINC+0YjQuNCx0LrQuCDQtNC70Y8g0LHQu9C+0LrQsCDRgdC+0YHRgtC+0Y/QvdC40Y8g0L7RiNC40LHQutC4LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElCbG9ja0Vycm9yIHtcbiAgICAvKipcbiAgICAgKiDQmtC+0LQg0L7RiNC40LHQutC4LlxuICAgICAqL1xuICAgIGNvZGU6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqINCa0YDQsNGC0LrQvtC1INGB0L7QvtCx0YnQtdC90LjQtSDQvtCxINC+0YjQuNCx0LrQtSwg0YHQvtC+0YLQstC10YLRgdGC0LLRg9GO0YnQtdC1INC60L7QtNGDINC+0YjQuNCx0LrQuC5cbiAgICAgKi9cbiAgICBtZXNzYWdlOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiDQoNCw0LfQstGR0YDQvdGD0YLQvtC1INC+0L/QuNGB0LDQvdC40LUg0L7RiNC40LHQutC4LlxuICAgICAqL1xuICAgIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG59XG4iXX0=
@@ -0,0 +1,58 @@
1
+ import { ChangeDetectionStrategy, Component, inject, input, signal } from '@angular/core';
2
+ import { NavigationStart, Router } from '@angular/router';
3
+ import { filter } from 'rxjs';
4
+ import { SC_ERROR_CHANGE_HANDLER } from './consts/error-change-handler.providers';
5
+ import { ScErrorBlockStatusComponent } from './error-block-status/error-block-status.component';
6
+ import * as i0 from "@angular/core";
7
+ /**
8
+ * Компонент для управления кодом ошибки отображаемой на странице.
9
+ */
10
+ export class ScErrorHandlerComponent {
11
+ /**
12
+ * Инициирует экземпляр класса {@link ErrorHandlerComponent}.
13
+ */
14
+ constructor() {
15
+ /**
16
+ * Сигнал для хранения кода ошибки.
17
+ */
18
+ this.code = signal(null);
19
+ /**
20
+ * Сигнал дефолтного передаваемого из вне значения ошибки.
21
+ */
22
+ // eslint-disable-next-line @angular-eslint/no-input-rename
23
+ this.defaultCode = input(null, { alias: 'code' });
24
+ /**
25
+ * Сервис маршрутизации.
26
+ */
27
+ this.router = inject(Router);
28
+ /**
29
+ * Обработчик изменения ошибки.
30
+ */
31
+ this.errorChangeHandler = inject(SC_ERROR_CHANGE_HANDLER);
32
+ this.router.events.pipe(filter((event) => event instanceof NavigationStart)).subscribe(() => {
33
+ // Сбрасываем ошибку при переходе на новый маршрут.
34
+ this.code.set(this.defaultCode());
35
+ });
36
+ }
37
+ /**
38
+ * Возвращает текущий сигнал с кодом ошибки.
39
+ */
40
+ getErrorCode() {
41
+ return this.code;
42
+ }
43
+ /**
44
+ * Устанавливает новый код ошибки.
45
+ *
46
+ * @param code Новый код ошибки.
47
+ */
48
+ setErrorCode(code) {
49
+ this.code.set(code);
50
+ }
51
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScErrorHandlerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
52
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ScErrorHandlerComponent, isStandalone: true, selector: "sc-error-handler", inputs: { defaultCode: { classPropertyName: "defaultCode", publicName: "code", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (code() === null) {\n <ng-content />\n} @else {\n <sc-error-block-status (pageErrorChange)=\"errorChangeHandler($event)\"></sc-error-block-status>\n}\n", dependencies: [{ kind: "component", type: ScErrorBlockStatusComponent, selector: "sc-error-block-status", outputs: ["pageErrorChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
53
+ }
54
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScErrorHandlerComponent, decorators: [{
55
+ type: Component,
56
+ args: [{ standalone: true, selector: 'sc-error-handler', imports: [ScErrorBlockStatusComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (code() === null) {\n <ng-content />\n} @else {\n <sc-error-block-status (pageErrorChange)=\"errorChangeHandler($event)\"></sc-error-block-status>\n}\n" }]
57
+ }], ctorParameters: () => [] });
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtZXJyb3ItaGFuZGxlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvZXJyb3ItaGFuZGxlci9zYy1lcnJvci1oYW5kbGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9lcnJvci1oYW5kbGVyL3NjLWVycm9yLWhhbmRsZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFOUIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDbEYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sbURBQW1ELENBQUM7O0FBR2hHOztHQUVHO0FBUUgsTUFBTSxPQUFPLHVCQUF1QjtJQXNCaEM7O09BRUc7SUFDSDtRQXhCQTs7V0FFRztRQUNnQixTQUFJLEdBQUcsTUFBTSxDQUFnQixJQUFJLENBQUMsQ0FBQztRQUV0RDs7V0FFRztRQUNILDJEQUEyRDtRQUNwRCxnQkFBVyxHQUFHLEtBQUssQ0FBZ0IsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFFbkU7O1dBRUc7UUFDYyxXQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXpDOztXQUVHO1FBQ2dCLHVCQUFrQixHQUFpQyxNQUFNLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQU1sRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLFlBQVksZUFBZSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3hGLG1EQUFtRDtZQUNuRCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUN0QyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRDs7T0FFRztJQUNJLFlBQVk7UUFDZixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDckIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxZQUFZLENBQUMsSUFBWTtRQUM1QixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QixDQUFDOytHQTlDUSx1QkFBdUI7bUdBQXZCLHVCQUF1QiwyTkNsQnBDLG1LQUtBLDRDRFVjLDJCQUEyQjs7NEZBRzVCLHVCQUF1QjtrQkFQbkMsU0FBUztpQ0FDTSxJQUFJLFlBQ04sa0JBQWtCLFdBRW5CLENBQUMsMkJBQTJCLENBQUMsbUJBQ3JCLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBpbmplY3QsIGlucHV0LCBTaWduYWwsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmF2aWdhdGlvblN0YXJ0LCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNDX0VSUk9SX0NIQU5HRV9IQU5ETEVSIH0gZnJvbSAnLi9jb25zdHMvZXJyb3ItY2hhbmdlLWhhbmRsZXIucHJvdmlkZXJzJztcbmltcG9ydCB7IFNjRXJyb3JCbG9ja1N0YXR1c0NvbXBvbmVudCB9IGZyb20gJy4vZXJyb3ItYmxvY2stc3RhdHVzL2Vycm9yLWJsb2NrLXN0YXR1cy5jb21wb25lbnQnO1xuaW1wb3J0IHsgSUJsb2NrRXJyb3IgfSBmcm9tICcuL2ludGVyZmFjZXMvaS1ibG9jay1lcnJvcic7XG5cbi8qKlxuICog0JrQvtC80L/QvtC90LXQvdGCINC00LvRjyDRg9C/0YDQsNCy0LvQtdC90LjRjyDQutC+0LTQvtC8INC+0YjQuNCx0LrQuCDQvtGC0L7QsdGA0LDQttCw0LXQvNC+0Lkg0L3QsCDRgdGC0YDQsNC90LjRhtC1LlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnc2MtZXJyb3ItaGFuZGxlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NjLWVycm9yLWhhbmRsZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIGltcG9ydHM6IFtTY0Vycm9yQmxvY2tTdGF0dXNDb21wb25lbnRdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTY0Vycm9ySGFuZGxlckNvbXBvbmVudCB7XG4gICAgLyoqXG4gICAgICog0KHQuNCz0L3QsNC7INC00LvRjyDRhdGA0LDQvdC10L3QuNGPINC60L7QtNCwINC+0YjQuNCx0LrQuC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29kZSA9IHNpZ25hbDxudW1iZXIgfCBudWxsPihudWxsKTtcblxuICAgIC8qKlxuICAgICAqINCh0LjQs9C90LDQuyDQtNC10YTQvtC70YLQvdC+0LPQviDQv9C10YDQtdC00LDQstCw0LXQvNC+0LPQviDQuNC3INCy0L3QtSDQt9C90LDRh9C10L3QuNGPINC+0YjQuNCx0LrQuC5cbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0LXJlbmFtZVxuICAgIHB1YmxpYyBkZWZhdWx0Q29kZSA9IGlucHV0PG51bWJlciB8IG51bGw+KG51bGwsIHsgYWxpYXM6ICdjb2RlJyB9KTtcblxuICAgIC8qKlxuICAgICAqINCh0LXRgNCy0LjRgSDQvNCw0YDRiNGA0YPRgtC40LfQsNGG0LjQuC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuXG4gICAgLyoqXG4gICAgICog0J7QsdGA0LDQsdC+0YLRh9C40Log0LjQt9C80LXQvdC10L3QuNGPINC+0YjQuNCx0LrQuC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZXJyb3JDaGFuZ2VIYW5kbGVyOiAoZXJyb3I6IElCbG9ja0Vycm9yKSA9PiB2b2lkID0gaW5qZWN0KFNDX0VSUk9SX0NIQU5HRV9IQU5ETEVSKTtcblxuICAgIC8qKlxuICAgICAqINCY0L3QuNGG0LjQuNGA0YPQtdGCINGN0LrQt9C10LzQv9C70Y/RgCDQutC70LDRgdGB0LAge0BsaW5rIEVycm9ySGFuZGxlckNvbXBvbmVudH0uXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLnJvdXRlci5ldmVudHMucGlwZShmaWx0ZXIoKGV2ZW50KSA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAvLyDQodCx0YDQsNGB0YvQstCw0LXQvCDQvtGI0LjQsdC60YMg0L/RgNC4INC/0LXRgNC10YXQvtC00LUg0L3QsCDQvdC+0LLRi9C5INC80LDRgNGI0YDRg9GCLlxuICAgICAgICAgICAgdGhpcy5jb2RlLnNldCh0aGlzLmRlZmF1bHRDb2RlKCkpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDRgtC10LrRg9GJ0LjQuSDRgdC40LPQvdCw0Lsg0YEg0LrQvtC00L7QvCDQvtGI0LjQsdC60LguXG4gICAgICovXG4gICAgcHVibGljIGdldEVycm9yQ29kZSgpOiBTaWduYWw8bnVtYmVyIHwgbnVsbD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb2RlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCj0YHRgtCw0L3QsNCy0LvQuNCy0LDQtdGCINC90L7QstGL0Lkg0LrQvtC0INC+0YjQuNCx0LrQuC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb2RlINCd0L7QstGL0Lkg0LrQvtC0INC+0YjQuNCx0LrQuC5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0RXJyb3JDb2RlKGNvZGU6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLmNvZGUuc2V0KGNvZGUpO1xuICAgIH1cbn1cbiIsIkBpZiAoY29kZSgpID09PSBudWxsKSB7XG4gICAgPG5nLWNvbnRlbnQgLz5cbn0gQGVsc2Uge1xuICAgIDxzYy1lcnJvci1ibG9jay1zdGF0dXMgKHBhZ2VFcnJvckNoYW5nZSk9XCJlcnJvckNoYW5nZUhhbmRsZXIoJGV2ZW50KVwiPjwvc2MtZXJyb3ItYmxvY2stc3RhdHVzPlxufVxuIl19