@redneckz/wildless-cms-uni-blocks 0.12.11 → 0.12.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/migration-scripts/0.12.10.js +59 -0
- package/bundle/BlockRenderer/renderBlock.d.ts +2 -4
- package/bundle/BlockRenderer/renderBlockList.d.ts +5 -2
- package/bundle/BlockRenderer/renderChildren.d.ts +5 -4
- package/bundle/blocks.schema.json +1 -1
- package/bundle/bundle.umd.js +322 -380
- package/bundle/bundle.umd.min.js +1 -1
- package/bundle/components/ApplicationForm/ApplicationFormContent.d.ts +52 -6
- package/bundle/components/ApplicationForm/ApplicationFormGrantSupport.d.ts +2 -0
- package/bundle/components/ApplicationForm/ApplicationFormsProps.d.ts +1 -0
- package/bundle/components/ApplicationForm/EmbeddableForms.d.ts +8 -0
- package/bundle/components/BonusBenefitsBlock/renderBonusBenefits.mobile.d.ts +1 -1
- package/bundle/components/Carousel/Carousel.d.ts +1 -1
- package/bundle/components/Carousel/CarouselContent.d.ts +3 -9
- package/bundle/components/Carousel/CarouselScrollButtons.d.ts +5 -6
- package/bundle/components/Carousel/renderControlButtons.d.ts +2 -3
- package/bundle/components/CarouselBankHistoryCard/CarouselBankHistoryCard.d.ts +2 -2
- package/bundle/components/CarouselCard/CarouselCard.d.ts +1 -1
- package/bundle/components/CarouselLinks/CarouselLinks.d.ts +1 -0
- package/bundle/components/CarouselLinks/CarouselLinksContent.d.ts +2 -0
- package/bundle/components/Footer/Contacts.d.ts +0 -1
- package/bundle/components/Footer/Footer.d.ts +1 -4
- package/bundle/components/Footer/Footer.mobile.d.ts +1 -4
- package/bundle/components/Footer/FooterProps.d.ts +6 -0
- package/bundle/components/Footer/MediaButton.d.ts +1 -1
- package/bundle/components/Footer/buttonSizeStyles.d.ts +4 -0
- package/bundle/components/Footer/buttonSizeStyles.mobile.d.ts +4 -0
- package/bundle/components/Header/Header.d.ts +1 -4
- package/bundle/components/Header/Header.mobile.d.ts +2 -5
- package/bundle/components/Header/HeaderContent.d.ts +0 -2
- package/bundle/components/Header/HeaderProps.d.ts +8 -0
- package/bundle/components/HorizontalLayout/HorizontalLayout.mobile.d.ts +5 -0
- package/bundle/components/SafeDepositRental/RadioButtons.d.ts +6 -0
- package/bundle/components/VerticalLayout/VerticalLayoutContent.d.ts +0 -2
- package/bundle/hooks/useCarouselControls.d.ts +1 -1
- package/bundle/services/regionsGrantSupport/RegionsGrantSupportData.d.ts +7 -0
- package/bundle/ui-kit/BaseProductTile/BaseProductTileContent.d.ts +5 -5
- package/bundle/ui-kit/SwipeListControl/useSwipeListScroll.d.ts +1 -2
- package/dist/BlockRenderer/renderBlock.d.ts +2 -4
- package/dist/BlockRenderer/renderBlock.js +1 -2
- package/dist/BlockRenderer/renderBlock.js.map +1 -1
- package/dist/BlockRenderer/renderBlockList.d.ts +5 -2
- package/dist/BlockRenderer/renderBlockList.js +12 -7
- package/dist/BlockRenderer/renderBlockList.js.map +1 -1
- package/dist/BlockRenderer/renderChildren.d.ts +5 -4
- package/dist/BlockRenderer/renderChildren.js +2 -2
- package/dist/BlockRenderer/renderChildren.js.map +1 -1
- package/dist/components/ApplicationForm/ApplicationForm.js +16 -14
- package/dist/components/ApplicationForm/ApplicationForm.js.map +1 -1
- package/dist/components/ApplicationForm/ApplicationFormContent.d.ts +52 -6
- package/dist/components/ApplicationForm/ApplicationFormGrantSupport.d.ts +2 -0
- package/dist/components/ApplicationForm/ApplicationFormGrantSupport.js +22 -0
- package/dist/components/ApplicationForm/ApplicationFormGrantSupport.js.map +1 -0
- package/dist/components/ApplicationForm/ApplicationFormsProps.d.ts +1 -0
- package/dist/components/ApplicationForm/EmbeddableForms.d.ts +8 -0
- package/dist/components/ApplicationForm/EmbeddableForms.js +17 -0
- package/dist/components/ApplicationForm/EmbeddableForms.js.map +1 -0
- package/dist/components/BenefitsBlock/BenefitsBlock.js +1 -1
- package/dist/components/Blocks.mobile.js +6 -0
- package/dist/components/Blocks.mobile.js.map +1 -1
- package/dist/components/Bonus/Bonus.js +10 -13
- package/dist/components/Bonus/Bonus.js.map +1 -1
- package/dist/components/BonusBenefitsBlock/renderBonusBenefits.mobile.d.ts +1 -1
- package/dist/components/BonusBenefitsBlock/renderBonusBenefits.mobile.js.map +1 -1
- package/dist/components/Calculator/BusinessDepositCalculatorForm.js +4 -4
- package/dist/components/Calculator/BusinessDepositCalculatorForm.js.map +1 -1
- package/dist/components/Calculator/CreditCalculatorForm.js +1 -1
- package/dist/components/Calculator/CreditCalculatorForm.js.map +1 -1
- package/dist/components/Calculator/DepositCalculatorForm.js +3 -3
- package/dist/components/Calculator/DepositCalculatorForm.js.map +1 -1
- package/dist/components/Calculator/UnknownRate.js +1 -1
- package/dist/components/Calculator/UnknownRate.js.map +1 -1
- package/dist/components/Carousel/Carousel.d.ts +1 -1
- package/dist/components/Carousel/Carousel.js +18 -33
- package/dist/components/Carousel/Carousel.js.map +1 -1
- package/dist/components/Carousel/CarouselContent.d.ts +3 -9
- package/dist/components/Carousel/CarouselScrollButtons.d.ts +5 -6
- package/dist/components/Carousel/CarouselScrollButtons.js +4 -4
- package/dist/components/Carousel/CarouselScrollButtons.js.map +1 -1
- package/dist/components/Carousel/renderControlButtons.d.ts +2 -3
- package/dist/components/Carousel/renderControlButtons.js +3 -3
- package/dist/components/Carousel/renderControlButtons.js.map +1 -1
- package/dist/components/CarouselBankHistoryCard/CarouselBankHistoryCard.d.ts +2 -2
- package/dist/components/CarouselBankHistoryCard/CarouselBankHistoryCard.js +7 -40
- package/dist/components/CarouselBankHistoryCard/CarouselBankHistoryCard.js.map +1 -1
- package/dist/components/CarouselBankHistoryCard/CarouselBankHistoryCard.mobile.js +1 -2
- package/dist/components/CarouselBankHistoryCard/CarouselBankHistoryCard.mobile.js.map +1 -1
- package/dist/components/CarouselCard/CarouselCard.d.ts +1 -1
- package/dist/components/CarouselCard/CarouselCard.js +6 -5
- package/dist/components/CarouselCard/CarouselCard.js.map +1 -1
- package/dist/components/CarouselCard/constants.js +2 -2
- package/dist/components/CarouselCard/constants.js.map +1 -1
- package/dist/components/CarouselCatalogCard/CarouselCatalogCard.js +2 -2
- package/dist/components/CarouselCatalogCard/CarouselCatalogCard.js.map +1 -1
- package/dist/components/CarouselEventCard/CarouselEventCard.js +1 -2
- package/dist/components/CarouselEventCard/CarouselEventCard.js.map +1 -1
- package/dist/components/CarouselInvestmentCard/CarouselInvestmentCard.js +1 -1
- package/dist/components/CarouselInvestmentCard/CarouselInvestmentCard.js.map +1 -1
- package/dist/components/CarouselLinks/CarouselLinks.d.ts +1 -0
- package/dist/components/CarouselLinks/CarouselLinks.js +7 -8
- package/dist/components/CarouselLinks/CarouselLinks.js.map +1 -1
- package/dist/components/CarouselLinks/CarouselLinksContent.d.ts +2 -0
- package/dist/components/CarouselProductCard/CarouselProductCard.js +4 -4
- package/dist/components/CarouselProductCard/CarouselProductCard.js.map +1 -1
- package/dist/components/CarouselProgramsCard/CarouselProgramsCard.js +1 -4
- package/dist/components/CarouselProgramsCard/CarouselProgramsCard.js.map +1 -1
- package/dist/components/CarouselRecommendationCard/CarouselRecommendationCard.js +3 -4
- package/dist/components/CarouselRecommendationCard/CarouselRecommendationCard.js.map +1 -1
- package/dist/components/CarouselRecommendationCard/CarouselRecommendationCard.mobile.js +1 -2
- package/dist/components/CarouselRecommendationCard/CarouselRecommendationCard.mobile.js.map +1 -1
- package/dist/components/CarouselRichTextCard/CarouselRichTextCard.js +1 -2
- package/dist/components/CarouselRichTextCard/CarouselRichTextCard.js.map +1 -1
- package/dist/components/CarouselTariffsCard/CarouselTariffsCard.js +2 -2
- package/dist/components/CarouselTariffsCard/CarouselTariffsCard.js.map +1 -1
- package/dist/components/ComparisonTable/ComparisonTable.js +1 -1
- package/dist/components/ComparisonTable/ComparisonTable.js.map +1 -1
- package/dist/components/ComparisonTable/ComparisonTable.mobile.js +1 -1
- package/dist/components/ComparisonTable/ComparisonTable.mobile.js.map +1 -1
- package/dist/components/ComparisonTable/ComparisonTableBody.js +1 -1
- package/dist/components/ComparisonTable/ComparisonTableBody.js.map +1 -1
- package/dist/components/ComparisonTable/ComparisonTableRows.js +1 -1
- package/dist/components/ComparisonTable/ComparisonTableRows.js.map +1 -1
- package/dist/components/ComparisonTable/HeaderCell.js +1 -1
- package/dist/components/ComparisonTable/HeaderCell.js.map +1 -1
- package/dist/components/ContactsBlock/ContactsBlock.js +1 -1
- package/dist/components/ContactsBlock/ContactsBlock.js.map +1 -1
- package/dist/components/ContentPage/ContentPage.js +17 -10
- package/dist/components/ContentPage/ContentPage.js.map +1 -1
- package/dist/components/ExchangeRateTile/CurrencyTable.js +4 -3
- package/dist/components/ExchangeRateTile/CurrencyTable.js.map +1 -1
- package/dist/components/ExchangeRateTile/CurrentLocation.js +3 -2
- package/dist/components/ExchangeRateTile/CurrentLocation.js.map +1 -1
- package/dist/components/ExchangeRateTile/ExchangeCurrencyCalculator.js +1 -1
- package/dist/components/ExchangeRateTile/ExchangeCurrencyCalculator.js.map +1 -1
- package/dist/components/ExchangeRateTile/ExchangeRateTile.js +1 -1
- package/dist/components/ExchangeRateTile/ExchangeRateTile.js.map +1 -1
- package/dist/components/Footer/Contacts.d.ts +0 -1
- package/dist/components/Footer/Contacts.js +3 -4
- package/dist/components/Footer/Contacts.js.map +1 -1
- package/dist/components/Footer/Footer.d.ts +1 -4
- package/dist/components/Footer/Footer.js +4 -6
- package/dist/components/Footer/Footer.js.map +1 -1
- package/dist/components/Footer/Footer.mobile.d.ts +1 -4
- package/dist/components/Footer/Footer.mobile.js +5 -6
- package/dist/components/Footer/Footer.mobile.js.map +1 -1
- package/dist/components/Footer/FooterProps.d.ts +6 -0
- package/dist/components/Footer/FooterProps.js +2 -0
- package/dist/components/Footer/FooterProps.js.map +1 -0
- package/dist/components/Footer/HorizontalNavigation.js +1 -1
- package/dist/components/Footer/HorizontalNavigation.js.map +1 -1
- package/dist/components/Footer/HorizontalNavigation.mobile.js +1 -1
- package/dist/components/Footer/HorizontalNavigation.mobile.js.map +1 -1
- package/dist/components/Footer/MediaButton.d.ts +1 -1
- package/dist/components/Footer/SocialMedia.js +2 -1
- package/dist/components/Footer/SocialMedia.js.map +1 -1
- package/dist/components/Footer/TextInformation.js +1 -1
- package/dist/components/Footer/TextInformation.js.map +1 -1
- package/dist/components/Footer/buttonSizeStyles.d.ts +4 -0
- package/dist/components/Footer/buttonSizeStyles.js +7 -0
- package/dist/components/Footer/buttonSizeStyles.js.map +1 -0
- package/dist/components/Footer/buttonSizeStyles.mobile.d.ts +4 -0
- package/dist/components/Footer/buttonSizeStyles.mobile.js +7 -0
- package/dist/components/Footer/buttonSizeStyles.mobile.js.map +1 -0
- package/dist/components/Footer/buttonStylesWithText.js +2 -5
- package/dist/components/Footer/buttonStylesWithText.js.map +1 -1
- package/dist/components/GracePeriod/GracePeriod.js +2 -2
- package/dist/components/GracePeriod/GracePeriod.js.map +1 -1
- package/dist/components/Header/Header.d.ts +1 -4
- package/dist/components/Header/Header.js +3 -9
- package/dist/components/Header/Header.js.map +1 -1
- package/dist/components/Header/Header.mobile.d.ts +2 -5
- package/dist/components/Header/Header.mobile.js +2 -5
- package/dist/components/Header/Header.mobile.js.map +1 -1
- package/dist/components/Header/HeaderContent.d.ts +0 -2
- package/dist/components/Header/HeaderProps.d.ts +8 -0
- package/dist/components/Header/HeaderProps.js +2 -0
- package/dist/components/Header/HeaderProps.js.map +1 -0
- package/dist/components/Header/HeaderTop.js +1 -1
- package/dist/components/Header/HeaderTop.js.map +1 -1
- package/dist/components/HorizontalLayout/HorizontalLayout.mobile.d.ts +5 -0
- package/dist/components/HorizontalLayout/HorizontalLayout.mobile.js +8 -0
- package/dist/components/HorizontalLayout/HorizontalLayout.mobile.js.map +1 -0
- package/dist/components/InsuranceAmountBlock/InsuranceAmountBlockInner.js +1 -1
- package/dist/components/InsuranceAmountBlock/InsuranceAmountBlockInner.js.map +1 -1
- package/dist/components/InvestmentInfo/InvestmentInfo.js +5 -5
- package/dist/components/InvestmentInfo/InvestmentInfo.js.map +1 -1
- package/dist/components/LinkDocs/LinkDocs.js +2 -2
- package/dist/components/LinkDocs/LinkDocs.js.map +1 -1
- package/dist/components/MobileAppTile/MobileAppTile.js +1 -1
- package/dist/components/MobileAppTile/MobileAppTile.js.map +1 -1
- package/dist/components/MobileAppTile/renderDescription.js +1 -1
- package/dist/components/MobileAppTile/renderDescription.js.map +1 -1
- package/dist/components/OfficeMap/OfficeMap.js +1 -1
- package/dist/components/OfficeMap/OfficeMap.js.map +1 -1
- package/dist/components/OfficeServicesBlock/OfficeServicesBlock.js +2 -2
- package/dist/components/OfficeServicesBlock/OfficeServicesBlock.js.map +1 -1
- package/dist/components/RepresentativeOfficeInfo/RepresentativeOfficeInfo.js +4 -8
- package/dist/components/RepresentativeOfficeInfo/RepresentativeOfficeInfo.js.map +1 -1
- package/dist/components/RollupItem/RollupItem.js +5 -2
- package/dist/components/RollupItem/RollupItem.js.map +1 -1
- package/dist/components/SafeDepositRental/RadioButtons.d.ts +6 -0
- package/dist/components/SafeDepositRental/RadioButtons.js +13 -0
- package/dist/components/SafeDepositRental/RadioButtons.js.map +1 -0
- package/dist/components/SafeDepositRental/RegionsAndBranches.js +1 -1
- package/dist/components/SafeDepositRental/RegionsAndBranches.js.map +1 -1
- package/dist/components/SafeDepositRental/RentalPeriod.js +2 -1
- package/dist/components/SafeDepositRental/RentalPeriod.js.map +1 -1
- package/dist/components/SafeDepositRental/SafeBoxCases.js +1 -1
- package/dist/components/SafeDepositRental/SafeBoxCases.js.map +1 -1
- package/dist/components/SafeDepositRental/SafeDepositRentalFields.js +2 -2
- package/dist/components/SafeDepositRental/SafeDepositRentalFields.js.map +1 -1
- package/dist/components/SafeDepositRental/SafeDepositRentalForm.js +1 -1
- package/dist/components/SafeDepositRental/SafeDepositRentalForm.js.map +1 -1
- package/dist/components/SafeDepositRental/SafeDepositRentalTotal.js +4 -3
- package/dist/components/SafeDepositRental/SafeDepositRentalTotal.js.map +1 -1
- package/dist/components/StepsBlock/renderStep.js +1 -1
- package/dist/components/StepsBlock/renderStep.js.map +1 -1
- package/dist/components/Tabs/ScrollableTabs.js +0 -1
- package/dist/components/Tabs/ScrollableTabs.js.map +1 -1
- package/dist/components/TariffsTable/TariffsTable.js +3 -3
- package/dist/components/TariffsTable/TariffsTable.js.map +1 -1
- package/dist/components/VerticalLayout/VerticalLayout.js +4 -14
- package/dist/components/VerticalLayout/VerticalLayout.js.map +1 -1
- package/dist/components/VerticalLayout/VerticalLayoutContent.d.ts +0 -2
- package/dist/hooks/useCarouselControls.d.ts +1 -1
- package/dist/hooks/useCarouselControls.js +5 -6
- package/dist/hooks/useCarouselControls.js.map +1 -1
- package/dist/services/regionsGrantSupport/RegionsGrantSupportData.d.ts +7 -0
- package/dist/services/regionsGrantSupport/RegionsGrantSupportData.js +2 -0
- package/dist/services/regionsGrantSupport/RegionsGrantSupportData.js.map +1 -0
- package/dist/ui-kit/BaseProductTile/BaseProductTileContent.d.ts +5 -5
- package/dist/ui-kit/BaseTile/BaseTile.js +1 -1
- package/dist/ui-kit/BaseTile/BaseTile.js.map +1 -1
- package/dist/ui-kit/BlockWrapper.js +1 -1
- package/dist/ui-kit/BlockWrapper.js.map +1 -1
- package/dist/ui-kit/LinkButton/LinkButton.js +4 -3
- package/dist/ui-kit/LinkButton/LinkButton.js.map +1 -1
- package/dist/ui-kit/LinkList/LinkList.js +2 -2
- package/dist/ui-kit/LinkList/LinkList.js.map +1 -1
- package/dist/ui-kit/LocationDialog/LocationDialog.js +2 -2
- package/dist/ui-kit/LocationDialog/LocationDialog.js.map +1 -1
- package/dist/ui-kit/LocationDialog/SearchBar.js +1 -1
- package/dist/ui-kit/LocationDialog/SearchBar.js.map +1 -1
- package/dist/ui-kit/SearchDialog/SearchDialog.js +1 -1
- package/dist/ui-kit/SearchDialog/SearchDialog.js.map +1 -1
- package/dist/ui-kit/SlideCheckbox/SlideCheckbox.js +1 -1
- package/dist/ui-kit/SlideCheckbox/SlideCheckbox.js.map +1 -1
- package/dist/ui-kit/SwipeListControl/SwipeListContainer.js +1 -1
- package/dist/ui-kit/SwipeListControl/SwipeListContainer.js.map +1 -1
- package/dist/ui-kit/SwipeListControl/useSwipeListScroll.d.ts +1 -2
- package/dist/ui-kit/SwipeListControl/useSwipeListScroll.js +11 -11
- package/dist/ui-kit/SwipeListControl/useSwipeListScroll.js.map +1 -1
- package/dist/ui-kit/TableArrowScrollControl/TableArrowScrollControl.js +1 -1
- package/dist/ui-kit/TableArrowScrollControl/TableArrowScrollControl.js.map +1 -1
- package/dist/ui-kit/YandexMap/YandexMap.js +1 -1
- package/dist/ui-kit/YandexMap/YandexMap.js.map +1 -1
- package/lib/BlockRenderer/renderBlock.d.ts +2 -4
- package/lib/BlockRenderer/renderBlock.js +1 -2
- package/lib/BlockRenderer/renderBlock.js.map +1 -1
- package/lib/BlockRenderer/renderBlockList.d.ts +5 -2
- package/lib/BlockRenderer/renderBlockList.js +12 -7
- package/lib/BlockRenderer/renderBlockList.js.map +1 -1
- package/lib/BlockRenderer/renderChildren.d.ts +5 -4
- package/lib/BlockRenderer/renderChildren.js +2 -2
- package/lib/BlockRenderer/renderChildren.js.map +1 -1
- package/lib/common.css +1 -1
- package/lib/components/ApplicationForm/ApplicationForm.fixture.d.ts +1 -0
- package/lib/components/ApplicationForm/ApplicationForm.fixture.mobile.d.ts +1 -0
- package/lib/components/ApplicationForm/ApplicationForm.js +16 -14
- package/lib/components/ApplicationForm/ApplicationForm.js.map +1 -1
- package/lib/components/ApplicationForm/ApplicationFormContent.d.ts +52 -6
- package/lib/components/ApplicationForm/ApplicationFormGrantSupport.d.ts +2 -0
- package/lib/components/ApplicationForm/ApplicationFormGrantSupport.js +20 -0
- package/lib/components/ApplicationForm/ApplicationFormGrantSupport.js.map +1 -0
- package/lib/components/ApplicationForm/ApplicationFormsProps.d.ts +1 -0
- package/lib/components/ApplicationForm/EmbeddableForms.d.ts +8 -0
- package/lib/components/ApplicationForm/EmbeddableForms.js +15 -0
- package/lib/components/ApplicationForm/EmbeddableForms.js.map +1 -0
- package/lib/components/BenefitsBlock/BenefitsBlock.js +1 -1
- package/lib/components/Blocks.mobile.js +6 -0
- package/lib/components/Blocks.mobile.js.map +1 -1
- package/lib/components/Bonus/Bonus.fixture.mobile.d.ts +8 -0
- package/lib/components/Bonus/Bonus.js +10 -13
- package/lib/components/Bonus/Bonus.js.map +1 -1
- package/lib/components/BonusBenefitsBlock/renderBonusBenefits.mobile.d.ts +1 -1
- package/lib/components/BonusBenefitsBlock/renderBonusBenefits.mobile.js.map +1 -1
- package/lib/components/Calculator/BusinessDepositCalculatorForm.js +4 -4
- package/lib/components/Calculator/BusinessDepositCalculatorForm.js.map +1 -1
- package/lib/components/Calculator/CreditCalculatorForm.js +1 -1
- package/lib/components/Calculator/CreditCalculatorForm.js.map +1 -1
- package/lib/components/Calculator/DepositCalculatorForm.js +3 -3
- package/lib/components/Calculator/DepositCalculatorForm.js.map +1 -1
- package/lib/components/Calculator/UnknownRate.js +1 -1
- package/lib/components/Calculator/UnknownRate.js.map +1 -1
- package/lib/components/Carousel/Carousel.d.ts +1 -1
- package/lib/components/Carousel/Carousel.js +18 -33
- package/lib/components/Carousel/Carousel.js.map +1 -1
- package/lib/components/Carousel/CarouselContent.d.ts +3 -9
- package/lib/components/Carousel/CarouselScrollButtons.d.ts +5 -6
- package/lib/components/Carousel/CarouselScrollButtons.js +4 -4
- package/lib/components/Carousel/CarouselScrollButtons.js.map +1 -1
- package/lib/components/Carousel/renderControlButtons.d.ts +3 -3
- package/lib/components/Carousel/renderControlButtons.js +3 -3
- package/lib/components/Carousel/renderControlButtons.js.map +1 -1
- package/lib/components/CarouselBankHistoryCard/CarouselBankHistoryCard.d.ts +2 -2
- package/lib/components/CarouselBankHistoryCard/CarouselBankHistoryCard.js +7 -40
- package/lib/components/CarouselBankHistoryCard/CarouselBankHistoryCard.js.map +1 -1
- package/lib/components/CarouselBankHistoryCard/CarouselBankHistoryCard.mobile.js +1 -2
- package/lib/components/CarouselBankHistoryCard/CarouselBankHistoryCard.mobile.js.map +1 -1
- package/lib/components/CarouselCard/CarouselCard.d.ts +1 -1
- package/lib/components/CarouselCard/CarouselCard.js +6 -5
- package/lib/components/CarouselCard/CarouselCard.js.map +1 -1
- package/lib/components/CarouselCard/constants.js +2 -2
- package/lib/components/CarouselCard/constants.js.map +1 -1
- package/lib/components/CarouselCatalogCard/CarouselCatalogCard.js +2 -2
- package/lib/components/CarouselCatalogCard/CarouselCatalogCard.js.map +1 -1
- package/lib/components/CarouselEventCard/CarouselEventCard.js +1 -2
- package/lib/components/CarouselEventCard/CarouselEventCard.js.map +1 -1
- package/lib/components/CarouselInvestmentCard/CarouselInvestmentCard.js +1 -1
- package/lib/components/CarouselInvestmentCard/CarouselInvestmentCard.js.map +1 -1
- package/lib/components/CarouselLinks/CarouselLinks.d.ts +1 -0
- package/lib/components/CarouselLinks/CarouselLinks.fixture.mobile.d.ts +6 -0
- package/lib/components/CarouselLinks/CarouselLinks.js +7 -8
- package/lib/components/CarouselLinks/CarouselLinks.js.map +1 -1
- package/lib/components/CarouselLinks/CarouselLinksContent.d.ts +2 -0
- package/lib/components/CarouselProductCard/CarouselProductCard.js +4 -4
- package/lib/components/CarouselProductCard/CarouselProductCard.js.map +1 -1
- package/lib/components/CarouselProgramsCard/CarouselProgramsCard.js +1 -4
- package/lib/components/CarouselProgramsCard/CarouselProgramsCard.js.map +1 -1
- package/lib/components/CarouselRecommendationCard/CarouselRecommendationCard.js +4 -5
- package/lib/components/CarouselRecommendationCard/CarouselRecommendationCard.js.map +1 -1
- package/lib/components/CarouselRecommendationCard/CarouselRecommendationCard.mobile.js +1 -2
- package/lib/components/CarouselRecommendationCard/CarouselRecommendationCard.mobile.js.map +1 -1
- package/lib/components/CarouselRichTextCard/CarouselRichTextCard.js +1 -2
- package/lib/components/CarouselRichTextCard/CarouselRichTextCard.js.map +1 -1
- package/lib/components/CarouselTariffsCard/CarouselTariffsCard.js +2 -2
- package/lib/components/CarouselTariffsCard/CarouselTariffsCard.js.map +1 -1
- package/lib/components/ComparisonTable/ComparisonTable.js +1 -1
- package/lib/components/ComparisonTable/ComparisonTable.js.map +1 -1
- package/lib/components/ComparisonTable/ComparisonTable.mobile.js +1 -1
- package/lib/components/ComparisonTable/ComparisonTable.mobile.js.map +1 -1
- package/lib/components/ComparisonTable/ComparisonTableBody.js +1 -1
- package/lib/components/ComparisonTable/ComparisonTableBody.js.map +1 -1
- package/lib/components/ComparisonTable/ComparisonTableRows.js +1 -1
- package/lib/components/ComparisonTable/ComparisonTableRows.js.map +1 -1
- package/lib/components/ComparisonTable/HeaderCell.js +1 -1
- package/lib/components/ComparisonTable/HeaderCell.js.map +1 -1
- package/lib/components/ContactsBlock/ContactsBlock.js +1 -1
- package/lib/components/ContactsBlock/ContactsBlock.js.map +1 -1
- package/lib/components/ContentPage/ContentPage.js +17 -10
- package/lib/components/ContentPage/ContentPage.js.map +1 -1
- package/lib/components/ExchangeRateTile/CurrencyTable.js +4 -3
- package/lib/components/ExchangeRateTile/CurrencyTable.js.map +1 -1
- package/lib/components/ExchangeRateTile/CurrentLocation.js +3 -2
- package/lib/components/ExchangeRateTile/CurrentLocation.js.map +1 -1
- package/lib/components/ExchangeRateTile/ExchangeCurrencyCalculator.js +1 -1
- package/lib/components/ExchangeRateTile/ExchangeCurrencyCalculator.js.map +1 -1
- package/lib/components/ExchangeRateTile/ExchangeRateTile.fixture.mobile.d.ts +6 -0
- package/lib/components/ExchangeRateTile/ExchangeRateTile.js +1 -1
- package/lib/components/ExchangeRateTile/ExchangeRateTile.js.map +1 -1
- package/lib/components/Footer/Contacts.d.ts +0 -1
- package/lib/components/Footer/Contacts.js +3 -4
- package/lib/components/Footer/Contacts.js.map +1 -1
- package/lib/components/Footer/Footer.d.ts +1 -4
- package/lib/components/Footer/Footer.js +4 -6
- package/lib/components/Footer/Footer.js.map +1 -1
- package/lib/components/Footer/Footer.mobile.d.ts +1 -4
- package/lib/components/Footer/Footer.mobile.js +5 -6
- package/lib/components/Footer/Footer.mobile.js.map +1 -1
- package/lib/components/Footer/FooterProps.d.ts +6 -0
- package/lib/components/Footer/FooterProps.js +2 -0
- package/lib/components/Footer/FooterProps.js.map +1 -0
- package/lib/components/Footer/HorizontalNavigation.js +1 -1
- package/lib/components/Footer/HorizontalNavigation.js.map +1 -1
- package/lib/components/Footer/HorizontalNavigation.mobile.js +1 -1
- package/lib/components/Footer/HorizontalNavigation.mobile.js.map +1 -1
- package/lib/components/Footer/MediaButton.d.ts +1 -1
- package/lib/components/Footer/SocialMedia.js +2 -1
- package/lib/components/Footer/SocialMedia.js.map +1 -1
- package/lib/components/Footer/TextInformation.js +1 -1
- package/lib/components/Footer/TextInformation.js.map +1 -1
- package/lib/components/Footer/buttonSizeStyles.d.ts +4 -0
- package/lib/components/Footer/buttonSizeStyles.js +5 -0
- package/lib/components/Footer/buttonSizeStyles.js.map +1 -0
- package/lib/components/Footer/buttonSizeStyles.mobile.d.ts +4 -0
- package/lib/components/Footer/buttonSizeStyles.mobile.js +5 -0
- package/lib/components/Footer/buttonSizeStyles.mobile.js.map +1 -0
- package/lib/components/Footer/buttonStylesWithText.js +1 -4
- package/lib/components/Footer/buttonStylesWithText.js.map +1 -1
- package/lib/components/GracePeriod/GracePeriod.js +2 -2
- package/lib/components/GracePeriod/GracePeriod.js.map +1 -1
- package/lib/components/Header/Header.d.ts +1 -4
- package/lib/components/Header/Header.fixture.d.ts +0 -1
- package/lib/components/Header/Header.js +3 -9
- package/lib/components/Header/Header.js.map +1 -1
- package/lib/components/Header/Header.mobile.d.ts +2 -5
- package/lib/components/Header/Header.mobile.js +2 -5
- package/lib/components/Header/Header.mobile.js.map +1 -1
- package/lib/components/Header/HeaderContent.d.ts +0 -2
- package/lib/components/Header/HeaderProps.d.ts +8 -0
- package/lib/components/Header/HeaderProps.js +2 -0
- package/lib/components/Header/HeaderProps.js.map +1 -0
- package/lib/components/Header/HeaderTop.js +1 -1
- package/lib/components/Header/HeaderTop.js.map +1 -1
- package/lib/components/HorizontalLayout/HorizontalLayout.fixture.mobile.d.ts +8 -0
- package/lib/components/HorizontalLayout/HorizontalLayout.mobile.d.ts +5 -0
- package/lib/components/HorizontalLayout/HorizontalLayout.mobile.js +6 -0
- package/lib/components/HorizontalLayout/HorizontalLayout.mobile.js.map +1 -0
- package/lib/components/InsuranceAmountBlock/InsuranceAmountBlockInner.js +1 -1
- package/lib/components/InsuranceAmountBlock/InsuranceAmountBlockInner.js.map +1 -1
- package/lib/components/InvestmentInfo/InvestmentInfo.js +5 -5
- package/lib/components/InvestmentInfo/InvestmentInfo.js.map +1 -1
- package/lib/components/LinkDocs/LinkDocs.js +2 -2
- package/lib/components/LinkDocs/LinkDocs.js.map +1 -1
- package/lib/components/MobileAppTile/MobileAppTile.js +1 -1
- package/lib/components/MobileAppTile/MobileAppTile.js.map +1 -1
- package/lib/components/MobileAppTile/renderDescription.js +1 -1
- package/lib/components/MobileAppTile/renderDescription.js.map +1 -1
- package/lib/components/OfficeMap/OfficeMap.js +1 -1
- package/lib/components/OfficeMap/OfficeMap.js.map +1 -1
- package/lib/components/OfficeServicesBlock/OfficeServicesBlock.js +2 -2
- package/lib/components/OfficeServicesBlock/OfficeServicesBlock.js.map +1 -1
- package/lib/components/ProductTile/ProductTile.fixture.mobile.d.ts +16 -0
- package/lib/components/RepresentativeOfficeInfo/RepresentativeOfficeInfo.js +4 -8
- package/lib/components/RepresentativeOfficeInfo/RepresentativeOfficeInfo.js.map +1 -1
- package/lib/components/RollupItem/RollupItem.js +5 -2
- package/lib/components/RollupItem/RollupItem.js.map +1 -1
- package/lib/components/SafeDepositRental/RadioButtons.d.ts +6 -0
- package/lib/components/SafeDepositRental/RadioButtons.js +11 -0
- package/lib/components/SafeDepositRental/RadioButtons.js.map +1 -0
- package/lib/components/SafeDepositRental/RegionsAndBranches.js +1 -1
- package/lib/components/SafeDepositRental/RegionsAndBranches.js.map +1 -1
- package/lib/components/SafeDepositRental/RentalPeriod.js +2 -1
- package/lib/components/SafeDepositRental/RentalPeriod.js.map +1 -1
- package/lib/components/SafeDepositRental/SafeBoxCases.js +1 -1
- package/lib/components/SafeDepositRental/SafeBoxCases.js.map +1 -1
- package/lib/components/SafeDepositRental/SafeDepositRental.fixture.mobile.d.ts +6 -0
- package/lib/components/SafeDepositRental/SafeDepositRentalFields.js +2 -2
- package/lib/components/SafeDepositRental/SafeDepositRentalFields.js.map +1 -1
- package/lib/components/SafeDepositRental/SafeDepositRentalForm.js +1 -1
- package/lib/components/SafeDepositRental/SafeDepositRentalForm.js.map +1 -1
- package/lib/components/SafeDepositRental/SafeDepositRentalTotal.js +4 -3
- package/lib/components/SafeDepositRental/SafeDepositRentalTotal.js.map +1 -1
- package/lib/components/StepsBlock/renderStep.js +1 -1
- package/lib/components/StepsBlock/renderStep.js.map +1 -1
- package/lib/components/Tabs/ScrollableTabs.js +0 -1
- package/lib/components/Tabs/ScrollableTabs.js.map +1 -1
- package/lib/components/TariffsTable/TariffsTable.js +3 -3
- package/lib/components/TariffsTable/TariffsTable.js.map +1 -1
- package/lib/components/VerticalLayout/VerticalLayout.fixture.d.ts +2 -2
- package/lib/components/VerticalLayout/VerticalLayout.js +4 -14
- package/lib/components/VerticalLayout/VerticalLayout.js.map +1 -1
- package/lib/components/VerticalLayout/VerticalLayoutContent.d.ts +0 -2
- package/lib/hooks/useCarouselControls.d.ts +1 -1
- package/lib/hooks/useCarouselControls.js +5 -6
- package/lib/hooks/useCarouselControls.js.map +1 -1
- package/lib/services/regionsGrantSupport/RegionsGrantSupportData.d.ts +7 -0
- package/lib/services/regionsGrantSupport/RegionsGrantSupportData.js +2 -0
- package/lib/services/regionsGrantSupport/RegionsGrantSupportData.js.map +1 -0
- package/lib/ui-kit/BaseProductTile/BaseProductTileContent.d.ts +5 -5
- package/lib/ui-kit/BaseTile/BaseTile.js +1 -1
- package/lib/ui-kit/BaseTile/BaseTile.js.map +1 -1
- package/lib/ui-kit/BlockWrapper.js +1 -1
- package/lib/ui-kit/BlockWrapper.js.map +1 -1
- package/lib/ui-kit/LinkButton/LinkButton.fixture.mobile.d.ts +6 -0
- package/lib/ui-kit/LinkButton/LinkButton.js +4 -3
- package/lib/ui-kit/LinkButton/LinkButton.js.map +1 -1
- package/lib/ui-kit/LinkList/LinkList.js +2 -2
- package/lib/ui-kit/LinkList/LinkList.js.map +1 -1
- package/lib/ui-kit/LocationDialog/LocationDialog.js +2 -2
- package/lib/ui-kit/LocationDialog/LocationDialog.js.map +1 -1
- package/lib/ui-kit/LocationDialog/SearchBar.js +1 -1
- package/lib/ui-kit/LocationDialog/SearchBar.js.map +1 -1
- package/lib/ui-kit/SearchDialog/SearchDialog.js +1 -1
- package/lib/ui-kit/SearchDialog/SearchDialog.js.map +1 -1
- package/lib/ui-kit/SlideCheckbox/SlideCheckbox.js +1 -1
- package/lib/ui-kit/SlideCheckbox/SlideCheckbox.js.map +1 -1
- package/lib/ui-kit/SwipeListControl/SwipeListContainer.js +1 -1
- package/lib/ui-kit/SwipeListControl/SwipeListContainer.js.map +1 -1
- package/lib/ui-kit/SwipeListControl/useSwipeListScroll.d.ts +1 -2
- package/lib/ui-kit/SwipeListControl/useSwipeListScroll.js +11 -11
- package/lib/ui-kit/SwipeListControl/useSwipeListScroll.js.map +1 -1
- package/lib/ui-kit/TableArrowScrollControl/TableArrowScrollControl.js +1 -1
- package/lib/ui-kit/TableArrowScrollControl/TableArrowScrollControl.js.map +1 -1
- package/lib/ui-kit/YandexMap/YandexMap.js +1 -1
- package/lib/ui-kit/YandexMap/YandexMap.js.map +1 -1
- package/lib/ui-kit/YandexMap/renderOpenMap.d.ts +0 -1
- package/lib/ui-kit/YandexMap/renderSearchField.d.ts +0 -1
- package/lib/ui-kit/YandexMap/renderUserGeolocation.d.ts +0 -1
- package/mobile/bundle/BlockRenderer/renderBlock.d.ts +2 -4
- package/mobile/bundle/BlockRenderer/renderBlockList.d.ts +5 -2
- package/mobile/bundle/BlockRenderer/renderChildren.d.ts +5 -4
- package/mobile/bundle/bundle.umd.js +1071 -200
- package/mobile/bundle/bundle.umd.min.js +1 -1
- package/mobile/bundle/components/ApplicationForm/ApplicationFormContent.d.ts +52 -6
- package/mobile/bundle/components/ApplicationForm/ApplicationFormGrantSupport.d.ts +2 -0
- package/mobile/bundle/components/ApplicationForm/ApplicationFormsProps.d.ts +1 -0
- package/mobile/bundle/components/ApplicationForm/EmbeddableForms.d.ts +8 -0
- package/mobile/bundle/components/BonusBenefitsBlock/renderBonusBenefits.d.ts +1 -1
- package/mobile/bundle/components/Carousel/Carousel.d.ts +1 -1
- package/mobile/bundle/components/Carousel/CarouselContent.d.ts +3 -9
- package/mobile/bundle/components/Carousel/CarouselScrollButtons.d.ts +5 -6
- package/mobile/bundle/components/Carousel/renderControlButtons.d.ts +2 -3
- package/mobile/bundle/components/CarouselCard/CarouselCard.d.ts +1 -1
- package/mobile/bundle/components/CarouselLinks/CarouselLinks.d.ts +1 -0
- package/mobile/bundle/components/CarouselLinks/CarouselLinksContent.d.ts +2 -0
- package/mobile/bundle/components/Footer/Contacts.d.ts +0 -1
- package/mobile/bundle/components/Footer/Footer.d.ts +1 -4
- package/mobile/bundle/components/Footer/FooterProps.d.ts +6 -0
- package/mobile/bundle/components/Footer/MediaButton.d.ts +1 -1
- package/mobile/bundle/components/Footer/SocialMedia.d.ts +4 -2
- package/mobile/bundle/components/Footer/buttonSizeStyles.d.ts +4 -0
- package/mobile/bundle/components/Header/Header.d.ts +2 -5
- package/mobile/bundle/components/Header/HeaderContent.d.ts +0 -2
- package/mobile/bundle/components/Header/HeaderProps.d.ts +8 -0
- package/mobile/bundle/components/SafeDepositRental/RadioButtons.d.ts +6 -0
- package/mobile/bundle/components/VerticalLayout/VerticalLayoutContent.d.ts +0 -2
- package/mobile/bundle/hooks/useCarouselControls.d.ts +1 -1
- package/mobile/bundle/services/regionsGrantSupport/RegionsGrantSupportData.d.ts +7 -0
- package/mobile/bundle/ui-kit/BaseProductTile/BaseProductTileContent.d.ts +5 -5
- package/mobile/bundle/ui-kit/SwipeListControl/useSwipeListScroll.d.ts +1 -2
- package/mobile/dist/BlockRenderer/renderBlock.d.ts +2 -4
- package/mobile/dist/BlockRenderer/renderBlock.js +1 -2
- package/mobile/dist/BlockRenderer/renderBlock.js.map +1 -1
- package/mobile/dist/BlockRenderer/renderBlockList.d.ts +5 -2
- package/mobile/dist/BlockRenderer/renderBlockList.js +12 -7
- package/mobile/dist/BlockRenderer/renderBlockList.js.map +1 -1
- package/mobile/dist/BlockRenderer/renderChildren.d.ts +5 -4
- package/mobile/dist/BlockRenderer/renderChildren.js +2 -2
- package/mobile/dist/BlockRenderer/renderChildren.js.map +1 -1
- package/mobile/dist/components/ApplicationForm/ApplicationForm.js +16 -14
- package/mobile/dist/components/ApplicationForm/ApplicationForm.js.map +1 -1
- package/mobile/dist/components/ApplicationForm/ApplicationFormContent.d.ts +52 -6
- package/mobile/dist/components/ApplicationForm/ApplicationFormGrantSupport.d.ts +2 -0
- package/mobile/dist/components/ApplicationForm/ApplicationFormGrantSupport.js +22 -0
- package/mobile/dist/components/ApplicationForm/ApplicationFormGrantSupport.js.map +1 -0
- package/mobile/dist/components/ApplicationForm/ApplicationFormsProps.d.ts +1 -0
- package/mobile/dist/components/ApplicationForm/EmbeddableForms.d.ts +8 -0
- package/mobile/dist/components/ApplicationForm/EmbeddableForms.js +17 -0
- package/mobile/dist/components/ApplicationForm/EmbeddableForms.js.map +1 -0
- package/mobile/dist/components/BenefitsBlock/BenefitsBlock.js +1 -1
- package/mobile/dist/components/Blocks.js +6 -0
- package/mobile/dist/components/Blocks.js.map +1 -1
- package/mobile/dist/components/Bonus/Bonus.js +10 -13
- package/mobile/dist/components/Bonus/Bonus.js.map +1 -1
- package/mobile/dist/components/BonusBenefitsBlock/renderBonusBenefits.d.ts +1 -1
- package/mobile/dist/components/BonusBenefitsBlock/renderBonusBenefits.js.map +1 -1
- package/mobile/dist/components/Calculator/BusinessDepositCalculatorForm.js +4 -4
- package/mobile/dist/components/Calculator/BusinessDepositCalculatorForm.js.map +1 -1
- package/mobile/dist/components/Calculator/CreditCalculatorForm.js +1 -1
- package/mobile/dist/components/Calculator/CreditCalculatorForm.js.map +1 -1
- package/mobile/dist/components/Calculator/DepositCalculatorForm.js +3 -3
- package/mobile/dist/components/Calculator/DepositCalculatorForm.js.map +1 -1
- package/mobile/dist/components/Calculator/UnknownRate.js +1 -1
- package/mobile/dist/components/Calculator/UnknownRate.js.map +1 -1
- package/mobile/dist/components/Carousel/Carousel.d.ts +1 -1
- package/mobile/dist/components/Carousel/Carousel.js +18 -33
- package/mobile/dist/components/Carousel/Carousel.js.map +1 -1
- package/mobile/dist/components/Carousel/CarouselContent.d.ts +3 -9
- package/mobile/dist/components/Carousel/CarouselScrollButtons.d.ts +5 -6
- package/mobile/dist/components/Carousel/CarouselScrollButtons.js +4 -4
- package/mobile/dist/components/Carousel/CarouselScrollButtons.js.map +1 -1
- package/mobile/dist/components/Carousel/renderControlButtons.d.ts +2 -3
- package/mobile/dist/components/Carousel/renderControlButtons.js +3 -3
- package/mobile/dist/components/Carousel/renderControlButtons.js.map +1 -1
- package/mobile/dist/components/CarouselBankHistoryCard/CarouselBankHistoryCard.js +1 -2
- package/mobile/dist/components/CarouselBankHistoryCard/CarouselBankHistoryCard.js.map +1 -1
- package/mobile/dist/components/CarouselCard/CarouselCard.d.ts +1 -1
- package/mobile/dist/components/CarouselCard/CarouselCard.js +6 -5
- package/mobile/dist/components/CarouselCard/CarouselCard.js.map +1 -1
- package/mobile/dist/components/CarouselCard/constants.js +2 -2
- package/mobile/dist/components/CarouselCard/constants.js.map +1 -1
- package/mobile/dist/components/CarouselCatalogCard/CarouselCatalogCard.js +2 -2
- package/mobile/dist/components/CarouselCatalogCard/CarouselCatalogCard.js.map +1 -1
- package/mobile/dist/components/CarouselEventCard/CarouselEventCard.js +1 -2
- package/mobile/dist/components/CarouselEventCard/CarouselEventCard.js.map +1 -1
- package/mobile/dist/components/CarouselInvestmentCard/CarouselInvestmentCard.js +1 -1
- package/mobile/dist/components/CarouselInvestmentCard/CarouselInvestmentCard.js.map +1 -1
- package/mobile/dist/components/CarouselLinks/CarouselLinks.d.ts +1 -0
- package/mobile/dist/components/CarouselLinks/CarouselLinks.js +7 -8
- package/mobile/dist/components/CarouselLinks/CarouselLinks.js.map +1 -1
- package/mobile/dist/components/CarouselLinks/CarouselLinksContent.d.ts +2 -0
- package/mobile/dist/components/CarouselProductCard/CarouselProductCard.js +4 -4
- package/mobile/dist/components/CarouselProductCard/CarouselProductCard.js.map +1 -1
- package/mobile/dist/components/CarouselProgramsCard/CarouselProgramsCard.js +1 -4
- package/mobile/dist/components/CarouselProgramsCard/CarouselProgramsCard.js.map +1 -1
- package/mobile/dist/components/CarouselRecommendationCard/CarouselRecommendationCard.js +1 -2
- package/mobile/dist/components/CarouselRecommendationCard/CarouselRecommendationCard.js.map +1 -1
- package/mobile/dist/components/CarouselRichTextCard/CarouselRichTextCard.js +1 -2
- package/mobile/dist/components/CarouselRichTextCard/CarouselRichTextCard.js.map +1 -1
- package/mobile/dist/components/CarouselTariffsCard/CarouselTariffsCard.js +2 -2
- package/mobile/dist/components/CarouselTariffsCard/CarouselTariffsCard.js.map +1 -1
- package/mobile/dist/components/ComparisonTable/ComparisonTable.js +1 -1
- package/mobile/dist/components/ComparisonTable/ComparisonTable.js.map +1 -1
- package/mobile/dist/components/ComparisonTable/ComparisonTableBody.js +1 -1
- package/mobile/dist/components/ComparisonTable/ComparisonTableBody.js.map +1 -1
- package/mobile/dist/components/ComparisonTable/ComparisonTableRows.js +1 -1
- package/mobile/dist/components/ComparisonTable/ComparisonTableRows.js.map +1 -1
- package/mobile/dist/components/ContactsBlock/ContactsBlock.js +1 -1
- package/mobile/dist/components/ContactsBlock/ContactsBlock.js.map +1 -1
- package/mobile/dist/components/ContentPage/ContentPage.js +17 -10
- package/mobile/dist/components/ContentPage/ContentPage.js.map +1 -1
- package/mobile/dist/components/ExchangeRateTile/CurrencyTable.js +4 -3
- package/mobile/dist/components/ExchangeRateTile/CurrencyTable.js.map +1 -1
- package/mobile/dist/components/ExchangeRateTile/CurrentLocation.js +3 -2
- package/mobile/dist/components/ExchangeRateTile/CurrentLocation.js.map +1 -1
- package/mobile/dist/components/ExchangeRateTile/ExchangeCurrencyCalculator.js +1 -1
- package/mobile/dist/components/ExchangeRateTile/ExchangeCurrencyCalculator.js.map +1 -1
- package/mobile/dist/components/ExchangeRateTile/ExchangeRateTile.js +1 -1
- package/mobile/dist/components/ExchangeRateTile/ExchangeRateTile.js.map +1 -1
- package/mobile/dist/components/Footer/Contacts.d.ts +0 -1
- package/mobile/dist/components/Footer/Contacts.js +3 -4
- package/mobile/dist/components/Footer/Contacts.js.map +1 -1
- package/mobile/dist/components/Footer/Footer.d.ts +1 -4
- package/mobile/dist/components/Footer/Footer.js +5 -6
- package/mobile/dist/components/Footer/Footer.js.map +1 -1
- package/mobile/dist/components/Footer/FooterProps.d.ts +6 -0
- package/mobile/dist/components/Footer/FooterProps.js +2 -0
- package/mobile/dist/components/Footer/FooterProps.js.map +1 -0
- package/mobile/dist/components/Footer/HorizontalNavigation.js +1 -1
- package/mobile/dist/components/Footer/HorizontalNavigation.js.map +1 -1
- package/mobile/dist/components/Footer/MediaButton.d.ts +1 -1
- package/mobile/dist/components/Footer/SocialMedia.d.ts +4 -2
- package/mobile/dist/components/Footer/SocialMedia.js +3 -1
- package/mobile/dist/components/Footer/SocialMedia.js.map +1 -1
- package/mobile/dist/components/Footer/TextInformation.js +1 -1
- package/mobile/dist/components/Footer/TextInformation.js.map +1 -1
- package/mobile/dist/components/Footer/buttonSizeStyles.d.ts +4 -0
- package/mobile/dist/components/Footer/buttonSizeStyles.js +7 -0
- package/mobile/dist/components/Footer/buttonSizeStyles.js.map +1 -0
- package/mobile/dist/components/Footer/buttonStylesWithText.js +2 -5
- package/mobile/dist/components/Footer/buttonStylesWithText.js.map +1 -1
- package/mobile/dist/components/GracePeriod/GracePeriod.js +2 -2
- package/mobile/dist/components/GracePeriod/GracePeriod.js.map +1 -1
- package/mobile/dist/components/Header/Header.d.ts +2 -5
- package/mobile/dist/components/Header/Header.js +2 -5
- package/mobile/dist/components/Header/Header.js.map +1 -1
- package/mobile/dist/components/Header/HeaderContent.d.ts +0 -2
- package/mobile/dist/components/Header/HeaderProps.d.ts +8 -0
- package/mobile/dist/components/Header/HeaderProps.js +2 -0
- package/mobile/dist/components/Header/HeaderProps.js.map +1 -0
- package/mobile/dist/components/Header/HeaderTop.js +1 -1
- package/mobile/dist/components/Header/HeaderTop.js.map +1 -1
- package/mobile/dist/components/HorizontalLayout/HorizontalLayout.js +3 -8
- package/mobile/dist/components/HorizontalLayout/HorizontalLayout.js.map +1 -1
- package/mobile/dist/components/InsuranceAmountBlock/InsuranceAmountBlockInner.js +1 -1
- package/mobile/dist/components/InsuranceAmountBlock/InsuranceAmountBlockInner.js.map +1 -1
- package/mobile/dist/components/InvestmentInfo/InvestmentInfo.js +5 -5
- package/mobile/dist/components/InvestmentInfo/InvestmentInfo.js.map +1 -1
- package/mobile/dist/components/LinkDocs/LinkDocs.js +2 -2
- package/mobile/dist/components/LinkDocs/LinkDocs.js.map +1 -1
- package/mobile/dist/components/MobileAppTile/MobileAppTile.js +1 -1
- package/mobile/dist/components/MobileAppTile/MobileAppTile.js.map +1 -1
- package/mobile/dist/components/MobileAppTile/renderDescription.js +1 -1
- package/mobile/dist/components/MobileAppTile/renderDescription.js.map +1 -1
- package/mobile/dist/components/OfficeMap/OfficeMap.js +1 -1
- package/mobile/dist/components/OfficeMap/OfficeMap.js.map +1 -1
- package/mobile/dist/components/OfficeServicesBlock/OfficeServicesBlock.js +2 -2
- package/mobile/dist/components/OfficeServicesBlock/OfficeServicesBlock.js.map +1 -1
- package/mobile/dist/components/RepresentativeOfficeInfo/RepresentativeOfficeInfo.js +4 -8
- package/mobile/dist/components/RepresentativeOfficeInfo/RepresentativeOfficeInfo.js.map +1 -1
- package/mobile/dist/components/RollupItem/RollupItem.js +5 -2
- package/mobile/dist/components/RollupItem/RollupItem.js.map +1 -1
- package/mobile/dist/components/SafeDepositRental/RadioButtons.d.ts +6 -0
- package/mobile/dist/components/SafeDepositRental/RadioButtons.js +13 -0
- package/mobile/dist/components/SafeDepositRental/RadioButtons.js.map +1 -0
- package/mobile/dist/components/SafeDepositRental/RegionsAndBranches.js +1 -1
- package/mobile/dist/components/SafeDepositRental/RegionsAndBranches.js.map +1 -1
- package/mobile/dist/components/SafeDepositRental/RentalPeriod.js +2 -1
- package/mobile/dist/components/SafeDepositRental/RentalPeriod.js.map +1 -1
- package/mobile/dist/components/SafeDepositRental/SafeBoxCases.js +1 -1
- package/mobile/dist/components/SafeDepositRental/SafeBoxCases.js.map +1 -1
- package/mobile/dist/components/SafeDepositRental/SafeDepositRentalFields.js +2 -2
- package/mobile/dist/components/SafeDepositRental/SafeDepositRentalFields.js.map +1 -1
- package/mobile/dist/components/SafeDepositRental/SafeDepositRentalForm.js +1 -1
- package/mobile/dist/components/SafeDepositRental/SafeDepositRentalForm.js.map +1 -1
- package/mobile/dist/components/SafeDepositRental/SafeDepositRentalTotal.js +4 -3
- package/mobile/dist/components/SafeDepositRental/SafeDepositRentalTotal.js.map +1 -1
- package/mobile/dist/components/StepsBlock/renderStep.js +1 -1
- package/mobile/dist/components/StepsBlock/renderStep.js.map +1 -1
- package/mobile/dist/components/Tabs/ScrollableTabs.js +0 -1
- package/mobile/dist/components/Tabs/ScrollableTabs.js.map +1 -1
- package/mobile/dist/components/VerticalLayout/VerticalLayout.js +4 -14
- package/mobile/dist/components/VerticalLayout/VerticalLayout.js.map +1 -1
- package/mobile/dist/components/VerticalLayout/VerticalLayoutContent.d.ts +0 -2
- package/mobile/dist/hooks/useCarouselControls.d.ts +1 -1
- package/mobile/dist/hooks/useCarouselControls.js +5 -6
- package/mobile/dist/hooks/useCarouselControls.js.map +1 -1
- package/mobile/dist/services/regionsGrantSupport/RegionsGrantSupportData.d.ts +7 -0
- package/mobile/dist/services/regionsGrantSupport/RegionsGrantSupportData.js +2 -0
- package/mobile/dist/services/regionsGrantSupport/RegionsGrantSupportData.js.map +1 -0
- package/mobile/dist/ui-kit/BaseProductTile/BaseProductTileContent.d.ts +5 -5
- package/mobile/dist/ui-kit/BaseTile/BaseTile.js +1 -1
- package/mobile/dist/ui-kit/BaseTile/BaseTile.js.map +1 -1
- package/mobile/dist/ui-kit/BlockWrapper.js +1 -1
- package/mobile/dist/ui-kit/BlockWrapper.js.map +1 -1
- package/mobile/dist/ui-kit/LinkButton/LinkButton.js +4 -3
- package/mobile/dist/ui-kit/LinkButton/LinkButton.js.map +1 -1
- package/mobile/dist/ui-kit/LinkList/LinkList.js +2 -2
- package/mobile/dist/ui-kit/LinkList/LinkList.js.map +1 -1
- package/mobile/dist/ui-kit/LocationDialog/LocationDialog.js +2 -2
- package/mobile/dist/ui-kit/LocationDialog/LocationDialog.js.map +1 -1
- package/mobile/dist/ui-kit/LocationDialog/SearchBar.js +1 -1
- package/mobile/dist/ui-kit/LocationDialog/SearchBar.js.map +1 -1
- package/mobile/dist/ui-kit/SearchDialog/SearchDialog.js +1 -1
- package/mobile/dist/ui-kit/SearchDialog/SearchDialog.js.map +1 -1
- package/mobile/dist/ui-kit/SlideCheckbox/SlideCheckbox.js +1 -1
- package/mobile/dist/ui-kit/SlideCheckbox/SlideCheckbox.js.map +1 -1
- package/mobile/dist/ui-kit/SwipeListControl/SwipeListContainer.js +1 -1
- package/mobile/dist/ui-kit/SwipeListControl/SwipeListContainer.js.map +1 -1
- package/mobile/dist/ui-kit/SwipeListControl/useSwipeListScroll.d.ts +1 -2
- package/mobile/dist/ui-kit/SwipeListControl/useSwipeListScroll.js +11 -11
- package/mobile/dist/ui-kit/SwipeListControl/useSwipeListScroll.js.map +1 -1
- package/mobile/dist/ui-kit/TableArrowScrollControl/TableArrowScrollControl.js +1 -1
- package/mobile/dist/ui-kit/TableArrowScrollControl/TableArrowScrollControl.js.map +1 -1
- package/mobile/dist/ui-kit/YandexMap/YandexMap.js +1 -1
- package/mobile/dist/ui-kit/YandexMap/YandexMap.js.map +1 -1
- package/mobile/lib/BlockRenderer/renderBlock.d.ts +2 -4
- package/mobile/lib/BlockRenderer/renderBlock.js +1 -2
- package/mobile/lib/BlockRenderer/renderBlock.js.map +1 -1
- package/mobile/lib/BlockRenderer/renderBlockList.d.ts +5 -2
- package/mobile/lib/BlockRenderer/renderBlockList.js +12 -7
- package/mobile/lib/BlockRenderer/renderBlockList.js.map +1 -1
- package/mobile/lib/BlockRenderer/renderChildren.d.ts +5 -4
- package/mobile/lib/BlockRenderer/renderChildren.js +2 -2
- package/mobile/lib/BlockRenderer/renderChildren.js.map +1 -1
- package/mobile/lib/common.css +1 -1
- package/mobile/lib/components/ApplicationForm/ApplicationForm.js +16 -14
- package/mobile/lib/components/ApplicationForm/ApplicationForm.js.map +1 -1
- package/mobile/lib/components/ApplicationForm/ApplicationFormContent.d.ts +52 -6
- package/mobile/lib/components/ApplicationForm/ApplicationFormGrantSupport.d.ts +2 -0
- package/mobile/lib/components/ApplicationForm/ApplicationFormGrantSupport.js +20 -0
- package/mobile/lib/components/ApplicationForm/ApplicationFormGrantSupport.js.map +1 -0
- package/mobile/lib/components/ApplicationForm/ApplicationFormsProps.d.ts +1 -0
- package/mobile/lib/components/ApplicationForm/EmbeddableForms.d.ts +8 -0
- package/mobile/lib/components/ApplicationForm/EmbeddableForms.js +15 -0
- package/mobile/lib/components/ApplicationForm/EmbeddableForms.js.map +1 -0
- package/mobile/lib/components/BenefitsBlock/BenefitsBlock.js +1 -1
- package/mobile/lib/components/Blocks.js +6 -0
- package/mobile/lib/components/Blocks.js.map +1 -1
- package/mobile/lib/components/Bonus/Bonus.js +10 -13
- package/mobile/lib/components/Bonus/Bonus.js.map +1 -1
- package/mobile/lib/components/BonusBenefitsBlock/renderBonusBenefits.d.ts +1 -1
- package/mobile/lib/components/BonusBenefitsBlock/renderBonusBenefits.js.map +1 -1
- package/mobile/lib/components/Calculator/BusinessDepositCalculatorForm.js +4 -4
- package/mobile/lib/components/Calculator/BusinessDepositCalculatorForm.js.map +1 -1
- package/mobile/lib/components/Calculator/CreditCalculatorForm.js +1 -1
- package/mobile/lib/components/Calculator/CreditCalculatorForm.js.map +1 -1
- package/mobile/lib/components/Calculator/DepositCalculatorForm.js +3 -3
- package/mobile/lib/components/Calculator/DepositCalculatorForm.js.map +1 -1
- package/mobile/lib/components/Calculator/UnknownRate.js +1 -1
- package/mobile/lib/components/Calculator/UnknownRate.js.map +1 -1
- package/mobile/lib/components/Carousel/Carousel.d.ts +1 -1
- package/mobile/lib/components/Carousel/Carousel.js +18 -33
- package/mobile/lib/components/Carousel/Carousel.js.map +1 -1
- package/mobile/lib/components/Carousel/CarouselContent.d.ts +3 -9
- package/mobile/lib/components/Carousel/CarouselScrollButtons.d.ts +5 -6
- package/mobile/lib/components/Carousel/CarouselScrollButtons.js +4 -4
- package/mobile/lib/components/Carousel/CarouselScrollButtons.js.map +1 -1
- package/mobile/lib/components/Carousel/renderControlButtons.d.ts +2 -3
- package/mobile/lib/components/Carousel/renderControlButtons.js +3 -3
- package/mobile/lib/components/Carousel/renderControlButtons.js.map +1 -1
- package/mobile/lib/components/CarouselBankHistoryCard/CarouselBankHistoryCard.js +1 -2
- package/mobile/lib/components/CarouselBankHistoryCard/CarouselBankHistoryCard.js.map +1 -1
- package/mobile/lib/components/CarouselCard/CarouselCard.d.ts +1 -1
- package/mobile/lib/components/CarouselCard/CarouselCard.js +6 -5
- package/mobile/lib/components/CarouselCard/CarouselCard.js.map +1 -1
- package/mobile/lib/components/CarouselCard/constants.js +2 -2
- package/mobile/lib/components/CarouselCard/constants.js.map +1 -1
- package/mobile/lib/components/CarouselCatalogCard/CarouselCatalogCard.js +2 -2
- package/mobile/lib/components/CarouselCatalogCard/CarouselCatalogCard.js.map +1 -1
- package/mobile/lib/components/CarouselEventCard/CarouselEventCard.js +1 -2
- package/mobile/lib/components/CarouselEventCard/CarouselEventCard.js.map +1 -1
- package/mobile/lib/components/CarouselInvestmentCard/CarouselInvestmentCard.js +1 -1
- package/mobile/lib/components/CarouselInvestmentCard/CarouselInvestmentCard.js.map +1 -1
- package/mobile/lib/components/CarouselLinks/CarouselLinks.d.ts +1 -0
- package/mobile/lib/components/CarouselLinks/CarouselLinks.js +7 -8
- package/mobile/lib/components/CarouselLinks/CarouselLinks.js.map +1 -1
- package/mobile/lib/components/CarouselLinks/CarouselLinksContent.d.ts +2 -0
- package/mobile/lib/components/CarouselProductCard/CarouselProductCard.js +4 -4
- package/mobile/lib/components/CarouselProductCard/CarouselProductCard.js.map +1 -1
- package/mobile/lib/components/CarouselProgramsCard/CarouselProgramsCard.js +1 -4
- package/mobile/lib/components/CarouselProgramsCard/CarouselProgramsCard.js.map +1 -1
- package/mobile/lib/components/CarouselRecommendationCard/CarouselRecommendationCard.js +1 -2
- package/mobile/lib/components/CarouselRecommendationCard/CarouselRecommendationCard.js.map +1 -1
- package/mobile/lib/components/CarouselRichTextCard/CarouselRichTextCard.js +1 -2
- package/mobile/lib/components/CarouselRichTextCard/CarouselRichTextCard.js.map +1 -1
- package/mobile/lib/components/CarouselTariffsCard/CarouselTariffsCard.js +2 -2
- package/mobile/lib/components/CarouselTariffsCard/CarouselTariffsCard.js.map +1 -1
- package/mobile/lib/components/ComparisonTable/ComparisonTable.js +1 -1
- package/mobile/lib/components/ComparisonTable/ComparisonTable.js.map +1 -1
- package/mobile/lib/components/ComparisonTable/ComparisonTableBody.js +1 -1
- package/mobile/lib/components/ComparisonTable/ComparisonTableBody.js.map +1 -1
- package/mobile/lib/components/ComparisonTable/ComparisonTableRows.js +1 -1
- package/mobile/lib/components/ComparisonTable/ComparisonTableRows.js.map +1 -1
- package/mobile/lib/components/ContactsBlock/ContactsBlock.js +1 -1
- package/mobile/lib/components/ContactsBlock/ContactsBlock.js.map +1 -1
- package/mobile/lib/components/ContentPage/ContentPage.js +17 -10
- package/mobile/lib/components/ContentPage/ContentPage.js.map +1 -1
- package/mobile/lib/components/ExchangeRateTile/CurrencyTable.js +4 -3
- package/mobile/lib/components/ExchangeRateTile/CurrencyTable.js.map +1 -1
- package/mobile/lib/components/ExchangeRateTile/CurrentLocation.js +3 -2
- package/mobile/lib/components/ExchangeRateTile/CurrentLocation.js.map +1 -1
- package/mobile/lib/components/ExchangeRateTile/ExchangeCurrencyCalculator.js +1 -1
- package/mobile/lib/components/ExchangeRateTile/ExchangeCurrencyCalculator.js.map +1 -1
- package/mobile/lib/components/ExchangeRateTile/ExchangeRateTile.js +1 -1
- package/mobile/lib/components/ExchangeRateTile/ExchangeRateTile.js.map +1 -1
- package/mobile/lib/components/Footer/Contacts.d.ts +0 -1
- package/mobile/lib/components/Footer/Contacts.js +3 -4
- package/mobile/lib/components/Footer/Contacts.js.map +1 -1
- package/mobile/lib/components/Footer/Footer.d.ts +1 -4
- package/mobile/lib/components/Footer/Footer.js +5 -6
- package/mobile/lib/components/Footer/Footer.js.map +1 -1
- package/mobile/lib/components/Footer/FooterProps.d.ts +6 -0
- package/mobile/lib/components/Footer/FooterProps.js +2 -0
- package/mobile/lib/components/Footer/FooterProps.js.map +1 -0
- package/mobile/lib/components/Footer/HorizontalNavigation.js +1 -1
- package/mobile/lib/components/Footer/HorizontalNavigation.js.map +1 -1
- package/mobile/lib/components/Footer/MediaButton.d.ts +1 -1
- package/mobile/lib/components/Footer/SocialMedia.d.ts +4 -2
- package/mobile/lib/components/Footer/SocialMedia.js +4 -2
- package/mobile/lib/components/Footer/SocialMedia.js.map +1 -1
- package/mobile/lib/components/Footer/TextInformation.js +1 -1
- package/mobile/lib/components/Footer/TextInformation.js.map +1 -1
- package/mobile/lib/components/Footer/buttonSizeStyles.d.ts +4 -0
- package/mobile/lib/components/Footer/buttonSizeStyles.js +5 -0
- package/mobile/lib/components/Footer/buttonSizeStyles.js.map +1 -0
- package/mobile/lib/components/Footer/buttonStylesWithText.js +1 -4
- package/mobile/lib/components/Footer/buttonStylesWithText.js.map +1 -1
- package/mobile/lib/components/GracePeriod/GracePeriod.js +2 -2
- package/mobile/lib/components/GracePeriod/GracePeriod.js.map +1 -1
- package/mobile/lib/components/Header/Header.d.ts +2 -5
- package/mobile/lib/components/Header/Header.js +2 -5
- package/mobile/lib/components/Header/Header.js.map +1 -1
- package/mobile/lib/components/Header/HeaderContent.d.ts +0 -2
- package/mobile/lib/components/Header/HeaderProps.d.ts +8 -0
- package/mobile/lib/components/Header/HeaderProps.js +2 -0
- package/mobile/lib/components/Header/HeaderProps.js.map +1 -0
- package/mobile/lib/components/Header/HeaderTop.js +1 -1
- package/mobile/lib/components/Header/HeaderTop.js.map +1 -1
- package/mobile/lib/components/HorizontalLayout/HorizontalLayout.js +3 -8
- package/mobile/lib/components/HorizontalLayout/HorizontalLayout.js.map +1 -1
- package/mobile/lib/components/InsuranceAmountBlock/InsuranceAmountBlockInner.js +1 -1
- package/mobile/lib/components/InsuranceAmountBlock/InsuranceAmountBlockInner.js.map +1 -1
- package/mobile/lib/components/InvestmentInfo/InvestmentInfo.js +5 -5
- package/mobile/lib/components/InvestmentInfo/InvestmentInfo.js.map +1 -1
- package/mobile/lib/components/LinkDocs/LinkDocs.js +2 -2
- package/mobile/lib/components/LinkDocs/LinkDocs.js.map +1 -1
- package/mobile/lib/components/MobileAppTile/MobileAppTile.js +1 -1
- package/mobile/lib/components/MobileAppTile/MobileAppTile.js.map +1 -1
- package/mobile/lib/components/MobileAppTile/renderDescription.js +1 -1
- package/mobile/lib/components/MobileAppTile/renderDescription.js.map +1 -1
- package/mobile/lib/components/OfficeMap/OfficeMap.js +1 -1
- package/mobile/lib/components/OfficeMap/OfficeMap.js.map +1 -1
- package/mobile/lib/components/OfficeServicesBlock/OfficeServicesBlock.js +2 -2
- package/mobile/lib/components/OfficeServicesBlock/OfficeServicesBlock.js.map +1 -1
- package/mobile/lib/components/RepresentativeOfficeInfo/RepresentativeOfficeInfo.js +4 -8
- package/mobile/lib/components/RepresentativeOfficeInfo/RepresentativeOfficeInfo.js.map +1 -1
- package/mobile/lib/components/RollupItem/RollupItem.js +5 -2
- package/mobile/lib/components/RollupItem/RollupItem.js.map +1 -1
- package/mobile/lib/components/SafeDepositRental/RadioButtons.d.ts +6 -0
- package/mobile/lib/components/SafeDepositRental/RadioButtons.js +11 -0
- package/mobile/lib/components/SafeDepositRental/RadioButtons.js.map +1 -0
- package/mobile/lib/components/SafeDepositRental/RegionsAndBranches.js +1 -1
- package/mobile/lib/components/SafeDepositRental/RegionsAndBranches.js.map +1 -1
- package/mobile/lib/components/SafeDepositRental/RentalPeriod.js +2 -1
- package/mobile/lib/components/SafeDepositRental/RentalPeriod.js.map +1 -1
- package/mobile/lib/components/SafeDepositRental/SafeBoxCases.js +1 -1
- package/mobile/lib/components/SafeDepositRental/SafeBoxCases.js.map +1 -1
- package/mobile/lib/components/SafeDepositRental/SafeDepositRentalFields.js +2 -2
- package/mobile/lib/components/SafeDepositRental/SafeDepositRentalFields.js.map +1 -1
- package/mobile/lib/components/SafeDepositRental/SafeDepositRentalForm.js +1 -1
- package/mobile/lib/components/SafeDepositRental/SafeDepositRentalForm.js.map +1 -1
- package/mobile/lib/components/SafeDepositRental/SafeDepositRentalTotal.js +4 -3
- package/mobile/lib/components/SafeDepositRental/SafeDepositRentalTotal.js.map +1 -1
- package/mobile/lib/components/StepsBlock/renderStep.js +1 -1
- package/mobile/lib/components/StepsBlock/renderStep.js.map +1 -1
- package/mobile/lib/components/Tabs/ScrollableTabs.js +0 -1
- package/mobile/lib/components/Tabs/ScrollableTabs.js.map +1 -1
- package/mobile/lib/components/VerticalLayout/VerticalLayout.js +4 -14
- package/mobile/lib/components/VerticalLayout/VerticalLayout.js.map +1 -1
- package/mobile/lib/components/VerticalLayout/VerticalLayoutContent.d.ts +0 -2
- package/mobile/lib/hooks/useCarouselControls.d.ts +1 -1
- package/mobile/lib/hooks/useCarouselControls.js +5 -6
- package/mobile/lib/hooks/useCarouselControls.js.map +1 -1
- package/mobile/lib/services/regionsGrantSupport/RegionsGrantSupportData.d.ts +7 -0
- package/mobile/lib/services/regionsGrantSupport/RegionsGrantSupportData.js +2 -0
- package/mobile/lib/services/regionsGrantSupport/RegionsGrantSupportData.js.map +1 -0
- package/mobile/lib/ui-kit/BaseProductTile/BaseProductTileContent.d.ts +5 -5
- package/mobile/lib/ui-kit/BaseTile/BaseTile.js +1 -1
- package/mobile/lib/ui-kit/BaseTile/BaseTile.js.map +1 -1
- package/mobile/lib/ui-kit/BlockWrapper.js +1 -1
- package/mobile/lib/ui-kit/BlockWrapper.js.map +1 -1
- package/mobile/lib/ui-kit/LinkButton/LinkButton.js +4 -3
- package/mobile/lib/ui-kit/LinkButton/LinkButton.js.map +1 -1
- package/mobile/lib/ui-kit/LinkList/LinkList.js +2 -2
- package/mobile/lib/ui-kit/LinkList/LinkList.js.map +1 -1
- package/mobile/lib/ui-kit/LocationDialog/LocationDialog.js +2 -2
- package/mobile/lib/ui-kit/LocationDialog/LocationDialog.js.map +1 -1
- package/mobile/lib/ui-kit/LocationDialog/SearchBar.js +1 -1
- package/mobile/lib/ui-kit/LocationDialog/SearchBar.js.map +1 -1
- package/mobile/lib/ui-kit/SearchDialog/SearchDialog.js +1 -1
- package/mobile/lib/ui-kit/SearchDialog/SearchDialog.js.map +1 -1
- package/mobile/lib/ui-kit/SlideCheckbox/SlideCheckbox.js +1 -1
- package/mobile/lib/ui-kit/SlideCheckbox/SlideCheckbox.js.map +1 -1
- package/mobile/lib/ui-kit/SwipeListControl/SwipeListContainer.js +1 -1
- package/mobile/lib/ui-kit/SwipeListControl/SwipeListContainer.js.map +1 -1
- package/mobile/lib/ui-kit/SwipeListControl/useSwipeListScroll.d.ts +1 -2
- package/mobile/lib/ui-kit/SwipeListControl/useSwipeListScroll.js +11 -11
- package/mobile/lib/ui-kit/SwipeListControl/useSwipeListScroll.js.map +1 -1
- package/mobile/lib/ui-kit/TableArrowScrollControl/TableArrowScrollControl.js +1 -1
- package/mobile/lib/ui-kit/TableArrowScrollControl/TableArrowScrollControl.js.map +1 -1
- package/mobile/lib/ui-kit/YandexMap/YandexMap.js +1 -1
- package/mobile/lib/ui-kit/YandexMap/YandexMap.js.map +1 -1
- package/mobile/src/BlockRenderer/renderBlock.tsx +3 -6
- package/mobile/src/BlockRenderer/renderBlockList.tsx +29 -12
- package/mobile/src/BlockRenderer/renderChildren.ts +7 -6
- package/mobile/src/common.css +1 -1
- package/mobile/src/components/ApplicationForm/ApplicationForm.tsx +31 -19
- package/mobile/src/components/ApplicationForm/ApplicationForm.ui.json +12 -0
- package/mobile/src/components/ApplicationForm/ApplicationFormContent.ts +70 -11
- package/mobile/src/components/ApplicationForm/ApplicationFormGrantSupport.tsx +51 -0
- package/mobile/src/components/ApplicationForm/ApplicationFormsProps.ts +1 -0
- package/mobile/src/components/ApplicationForm/EmbeddableForms.tsx +15 -0
- package/mobile/src/components/BenefitsBlock/BenefitsBlock.tsx +1 -1
- package/mobile/src/components/Blocks.ts +6 -0
- package/mobile/src/components/Bonus/Bonus.tsx +33 -28
- package/mobile/src/components/BonusBenefitsBlock/renderBonusBenefits.tsx +2 -1
- package/mobile/src/components/Calculator/BusinessDepositCalculatorForm.tsx +11 -6
- package/mobile/src/components/Calculator/CreditCalculatorForm.tsx +1 -1
- package/mobile/src/components/Calculator/DepositCalculatorForm.tsx +3 -3
- package/mobile/src/components/Calculator/UnknownRate.tsx +1 -1
- package/mobile/src/components/Carousel/Carousel.tsx +51 -47
- package/mobile/src/components/Carousel/CarouselContent.ts +3 -9
- package/mobile/src/components/Carousel/CarouselScrollButtons.tsx +30 -26
- package/mobile/src/components/Carousel/renderControlButtons.tsx +2 -4
- package/mobile/src/components/CarouselBankHistoryCard/CarouselBankHistoryCard.tsx +1 -2
- package/mobile/src/components/CarouselCard/CarouselCard.tsx +15 -21
- package/mobile/src/components/CarouselCard/constants.ts +2 -2
- package/mobile/src/components/CarouselCatalogCard/CarouselCatalogCard.tsx +3 -5
- package/mobile/src/components/CarouselEventCard/CarouselEventCard.tsx +3 -4
- package/mobile/src/components/CarouselInvestmentCard/CarouselInvestmentCard.tsx +1 -9
- package/mobile/src/components/CarouselLinks/CarouselLinks.tsx +23 -17
- package/mobile/src/components/CarouselLinks/CarouselLinksContent.ts +2 -0
- package/mobile/src/components/CarouselProductCard/CarouselProductCard.tsx +6 -11
- package/mobile/src/components/CarouselProgramsCard/CarouselProgramsCard.tsx +15 -22
- package/mobile/src/components/CarouselRecommendationCard/CarouselRecommendationCard.tsx +1 -6
- package/mobile/src/components/CarouselRichTextCard/CarouselRichTextCard.tsx +1 -2
- package/mobile/src/components/CarouselTariffsCard/CarouselTariffsCard.tsx +3 -3
- package/mobile/src/components/ComparisonTable/ComparisonTable.tsx +2 -2
- package/mobile/src/components/ComparisonTable/ComparisonTableBody.tsx +1 -1
- package/mobile/src/components/ComparisonTable/ComparisonTableRows.tsx +1 -1
- package/mobile/src/components/ContactsBlock/ContactsBlock.tsx +1 -1
- package/mobile/src/components/ContentPage/ContentPage.tsx +68 -50
- package/mobile/src/components/ExchangeRateTile/CurrencyTable.tsx +24 -8
- package/mobile/src/components/ExchangeRateTile/CurrentLocation.tsx +5 -2
- package/mobile/src/components/ExchangeRateTile/ExchangeCurrencyCalculator.tsx +1 -1
- package/mobile/src/components/ExchangeRateTile/ExchangeRateTile.tsx +1 -1
- package/mobile/src/components/Footer/Contacts.tsx +15 -19
- package/mobile/src/components/Footer/Footer.tsx +30 -20
- package/mobile/src/components/Footer/FooterProps.ts +7 -0
- package/mobile/src/components/Footer/HorizontalNavigation.tsx +10 -3
- package/mobile/src/components/Footer/MediaButton.tsx +1 -1
- package/mobile/src/components/Footer/SocialMedia.tsx +22 -9
- package/mobile/src/components/Footer/TextInformation.tsx +2 -2
- package/mobile/src/components/Footer/buttonSizeStyles.ts +6 -0
- package/mobile/src/components/Footer/buttonStylesWithText.ts +1 -5
- package/mobile/src/components/GracePeriod/GracePeriod.tsx +10 -4
- package/mobile/src/components/Header/Header.tsx +4 -15
- package/mobile/src/components/Header/HeaderContent.ts +0 -2
- package/mobile/src/components/Header/HeaderProps.ts +9 -0
- package/mobile/src/components/Header/HeaderTop.tsx +1 -1
- package/mobile/src/components/Header/sitemap.wcms-resource.json +144 -0
- package/mobile/src/components/HorizontalLayout/HorizontalLayout.tsx +3 -25
- package/mobile/src/components/InsuranceAmountBlock/InsuranceAmountBlockInner.tsx +1 -1
- package/mobile/src/components/InvestmentInfo/InvestmentInfo.tsx +5 -5
- package/mobile/src/components/LinkDocs/LinkDocs.tsx +3 -2
- package/mobile/src/components/MobileAppTile/MobileAppTile.tsx +1 -1
- package/mobile/src/components/MobileAppTile/renderDescription.tsx +1 -1
- package/mobile/src/components/OfficeMap/OfficeMap.tsx +6 -6
- package/mobile/src/components/OfficeServicesBlock/OfficeServicesBlock.tsx +5 -5
- package/mobile/src/components/RepresentativeOfficeInfo/RepresentativeOfficeInfo.tsx +15 -16
- package/mobile/src/components/RollupItem/RollupItem.tsx +6 -3
- package/mobile/src/components/SafeDepositRental/{RenderRadioButtons.tsx → RadioButtons.tsx} +7 -2
- package/mobile/src/components/SafeDepositRental/RegionsAndBranches.tsx +3 -3
- package/mobile/src/components/SafeDepositRental/RentalPeriod.tsx +5 -2
- package/mobile/src/components/SafeDepositRental/SafeBoxCases.tsx +3 -3
- package/mobile/src/components/SafeDepositRental/SafeDepositRentalFields.tsx +10 -8
- package/mobile/src/components/SafeDepositRental/SafeDepositRentalForm.tsx +1 -1
- package/mobile/src/components/SafeDepositRental/SafeDepositRentalTotal.tsx +15 -12
- package/mobile/src/components/StepsBlock/renderStep.tsx +2 -2
- package/mobile/src/components/Tabs/ScrollableTabs.tsx +0 -1
- package/mobile/src/components/VerticalLayout/VerticalLayout.example.json +0 -1
- package/mobile/src/components/VerticalLayout/VerticalLayout.tsx +14 -35
- package/mobile/src/components/VerticalLayout/VerticalLayoutContent.ts +0 -2
- package/mobile/src/hooks/useCarouselControls.ts +8 -7
- package/mobile/src/services/regionsGrantSupport/RegionsGrantSupportData.ts +8 -0
- package/mobile/src/ui-kit/BaseProductTile/BaseProductTileContent.ts +5 -5
- package/mobile/src/ui-kit/BaseTile/BaseTile.tsx +5 -3
- package/mobile/src/ui-kit/BlockWrapper.tsx +1 -1
- package/mobile/src/ui-kit/LinkButton/LinkButton.tsx +22 -9
- package/mobile/src/ui-kit/LinkList/LinkList.tsx +3 -3
- package/mobile/src/ui-kit/LocationDialog/LocationDialog.tsx +2 -3
- package/mobile/src/ui-kit/LocationDialog/SearchBar.tsx +1 -1
- package/mobile/src/ui-kit/SearchDialog/SearchDialog.tsx +1 -4
- package/mobile/src/ui-kit/SlideCheckbox/SlideCheckbox.tsx +3 -3
- package/mobile/src/ui-kit/SwipeListControl/SwipeListContainer.tsx +1 -1
- package/mobile/src/ui-kit/SwipeListControl/useSwipeListScroll.ts +10 -12
- package/mobile/src/ui-kit/TableArrowScrollControl/TableArrowScrollControl.tsx +1 -1
- package/mobile/src/ui-kit/YandexMap/YandexMap.tsx +1 -1
- package/package.json +2 -1
- package/src/BlockRenderer/renderBlock.tsx +3 -6
- package/src/BlockRenderer/renderBlockList.tsx +29 -12
- package/src/BlockRenderer/renderChildren.ts +7 -6
- package/src/common.css +1 -1
- package/src/components/ApplicationForm/ApplicationForm.fixture.mobile.tsx +41 -7
- package/src/components/ApplicationForm/ApplicationForm.fixture.tsx +41 -7
- package/src/components/ApplicationForm/ApplicationForm.tsx +31 -19
- package/src/components/ApplicationForm/ApplicationForm.ui.json +12 -0
- package/src/components/ApplicationForm/ApplicationFormContent.ts +70 -11
- package/src/components/ApplicationForm/ApplicationFormGrantSupport.tsx +51 -0
- package/src/components/ApplicationForm/ApplicationFormsProps.ts +1 -0
- package/src/components/ApplicationForm/EmbeddableForms.tsx +15 -0
- package/src/components/BenefitsBlock/BenefitsBlock.tsx +1 -1
- package/src/components/Blocks.mobile.ts +6 -0
- package/src/components/Bonus/Bonus.fixture.mobile.tsx +72 -0
- package/src/components/Bonus/Bonus.tsx +33 -28
- package/src/components/BonusBenefitsBlock/renderBonusBenefits.mobile.tsx +2 -1
- package/src/components/Calculator/BusinessDepositCalculatorForm.tsx +11 -6
- package/src/components/Calculator/CreditCalculatorForm.tsx +1 -1
- package/src/components/Calculator/DepositCalculatorForm.tsx +3 -3
- package/src/components/Calculator/UnknownRate.tsx +1 -1
- package/src/components/Carousel/Carousel.fixture.mobile.tsx +8 -53
- package/src/components/Carousel/Carousel.fixture.tsx +4 -26
- package/src/components/Carousel/Carousel.tsx +51 -47
- package/src/components/Carousel/CarouselContent.ts +3 -9
- package/src/components/Carousel/CarouselScrollButtons.tsx +30 -26
- package/src/components/Carousel/renderControlButtons.tsx +2 -4
- package/src/components/CarouselBankHistoryCard/CarouselBankHistoryCard.fixture.tsx +2 -7
- package/src/components/CarouselBankHistoryCard/CarouselBankHistoryCard.mobile.tsx +1 -2
- package/src/components/CarouselBankHistoryCard/CarouselBankHistoryCard.tsx +34 -67
- package/src/components/CarouselCard/CarouselCard.fixture.mobile.tsx +1 -1
- package/src/components/CarouselCard/CarouselCard.fixture.tsx +1 -1
- package/src/components/CarouselCard/CarouselCard.tsx +15 -21
- package/src/components/CarouselCard/constants.ts +2 -2
- package/src/components/CarouselCatalogCard/CarouselCatalogCard.tsx +3 -5
- package/src/components/CarouselEventCard/CarouselEventCard.fixture.tsx +5 -3
- package/src/components/CarouselEventCard/CarouselEventCard.tsx +3 -4
- package/src/components/CarouselInvestmentCard/CarouselInvestmentCard.tsx +1 -9
- package/src/components/CarouselLinks/CarouselLinks.fixture.mobile.tsx +34 -0
- package/src/components/CarouselLinks/CarouselLinks.fixture.tsx +3 -0
- package/src/components/CarouselLinks/CarouselLinks.tsx +23 -17
- package/src/components/CarouselLinks/CarouselLinksContent.ts +2 -0
- package/src/components/CarouselProductCard/CarouselProductCard.fixture.tsx +5 -2
- package/src/components/CarouselProductCard/CarouselProductCard.tsx +6 -11
- package/src/components/CarouselProgramsCard/CarouselProgramsCard.tsx +15 -22
- package/src/components/CarouselRecommendationCard/CarouselRecommendationCard.mobile.tsx +1 -6
- package/src/components/CarouselRecommendationCard/CarouselRecommendationCard.tsx +25 -31
- package/src/components/CarouselRichTextCard/CarouselRichTextCard.fixture.tsx +1 -1
- package/src/components/CarouselRichTextCard/CarouselRichTextCard.tsx +1 -2
- package/src/components/CarouselTariffsCard/CarouselTariffsCard.tsx +3 -3
- package/src/components/ComparisonTable/ComparisonTable.mobile.tsx +2 -2
- package/src/components/ComparisonTable/ComparisonTable.tsx +1 -1
- package/src/components/ComparisonTable/ComparisonTableBody.tsx +1 -1
- package/src/components/ComparisonTable/ComparisonTableRows.tsx +1 -1
- package/src/components/ComparisonTable/HeaderCell.tsx +5 -10
- package/src/components/ContactsBlock/ContactsBlock.tsx +1 -1
- package/src/components/ContentPage/ContentPage.tsx +68 -50
- package/src/components/ExchangeRateTile/CurrencyTable.tsx +24 -8
- package/src/components/ExchangeRateTile/CurrentLocation.tsx +5 -2
- package/src/components/ExchangeRateTile/ExchangeCurrencyCalculator.tsx +1 -1
- package/src/components/ExchangeRateTile/ExchangeRateTile.fixture.mobile.tsx +19 -0
- package/src/components/ExchangeRateTile/ExchangeRateTile.tsx +1 -1
- package/src/components/Footer/Contacts.tsx +15 -19
- package/src/components/Footer/Footer.fixture.mobile.tsx +3 -1
- package/src/components/Footer/Footer.fixture.tsx +4 -17
- package/src/components/Footer/Footer.mobile.tsx +30 -20
- package/src/components/Footer/Footer.tsx +12 -18
- package/src/components/Footer/FooterProps.ts +7 -0
- package/src/components/Footer/HorizontalNavigation.mobile.tsx +10 -3
- package/src/components/Footer/HorizontalNavigation.tsx +1 -1
- package/src/components/Footer/MediaButton.tsx +1 -1
- package/src/components/Footer/SocialMedia.tsx +9 -6
- package/src/components/Footer/TextInformation.tsx +2 -2
- package/src/components/Footer/buttonSizeStyles.mobile.ts +6 -0
- package/src/components/Footer/buttonSizeStyles.ts +6 -0
- package/src/components/Footer/buttonStylesWithText.ts +1 -5
- package/src/components/GracePeriod/GracePeriod.tsx +10 -4
- package/src/components/Header/Header.fixture.mobile.tsx +5 -2
- package/src/components/Header/Header.fixture.tsx +4 -3
- package/src/components/Header/Header.mobile.tsx +4 -15
- package/src/components/Header/Header.tsx +8 -29
- package/src/components/Header/HeaderContent.ts +0 -2
- package/src/components/Header/HeaderProps.ts +9 -0
- package/src/components/Header/HeaderTop.tsx +1 -1
- package/src/components/Header/sitemap.wcms-resource.json +144 -0
- package/src/components/HorizontalLayout/HorizontalLayout.fixture.mobile.tsx +72 -0
- package/src/components/HorizontalLayout/HorizontalLayout.mobile.tsx +12 -0
- package/src/components/InsuranceAmountBlock/InsuranceAmountBlockInner.tsx +1 -1
- package/src/components/InvestmentInfo/InvestmentInfo.tsx +5 -5
- package/src/components/LinkDocs/LinkDocs.tsx +3 -2
- package/src/components/MobileAppTile/MobileAppTile.tsx +1 -1
- package/src/components/MobileAppTile/renderDescription.tsx +1 -1
- package/src/components/OfficeMap/OfficeMap.tsx +6 -6
- package/src/components/OfficeServicesBlock/OfficeServicesBlock.tsx +5 -5
- package/src/components/ProductTile/ProductTile.fixture.mobile.tsx +214 -0
- package/src/components/RepresentativeOfficeInfo/RepresentativeOfficeInfo.fixture.mobile.tsx +1 -1
- package/src/components/RepresentativeOfficeInfo/RepresentativeOfficeInfo.fixture.tsx +1 -1
- package/src/components/RepresentativeOfficeInfo/RepresentativeOfficeInfo.tsx +15 -16
- package/src/components/RollupItem/RollupItem.fixture.mobile.tsx +15 -19
- package/src/components/RollupItem/RollupItem.tsx +6 -3
- package/src/components/SafeDepositRental/{RenderRadioButtons.tsx → RadioButtons.tsx} +7 -2
- package/src/components/SafeDepositRental/RegionsAndBranches.tsx +3 -3
- package/src/components/SafeDepositRental/RentalPeriod.tsx +5 -2
- package/src/components/SafeDepositRental/SafeBoxCases.tsx +3 -3
- package/src/components/SafeDepositRental/SafeDepositRental.fixture.mobile.tsx +15 -0
- package/src/components/SafeDepositRental/SafeDepositRentalFields.tsx +10 -8
- package/src/components/SafeDepositRental/SafeDepositRentalForm.tsx +1 -1
- package/src/components/SafeDepositRental/SafeDepositRentalTotal.tsx +15 -12
- package/src/components/StepsBlock/renderStep.tsx +2 -2
- package/src/components/Tabs/ScrollableTabs.tsx +0 -1
- package/src/components/TariffsTable/TariffsTable.tsx +3 -3
- package/src/components/VerticalLayout/VerticalLayout.example.json +0 -1
- package/src/components/VerticalLayout/VerticalLayout.fixture.mobile.tsx +0 -3
- package/src/components/VerticalLayout/VerticalLayout.fixture.tsx +2 -9
- package/src/components/VerticalLayout/VerticalLayout.tsx +14 -35
- package/src/components/VerticalLayout/VerticalLayoutContent.ts +0 -2
- package/src/hooks/useCarouselControls.ts +8 -7
- package/src/services/regionsGrantSupport/RegionsGrantSupportData.ts +8 -0
- package/src/ui-kit/BaseProductTile/BaseProductTileContent.ts +5 -5
- package/src/ui-kit/BaseTile/BaseTile.tsx +5 -3
- package/src/ui-kit/BlockWrapper.tsx +1 -1
- package/src/ui-kit/LinkButton/LinkButton.fixture.mobile.tsx +11 -0
- package/src/ui-kit/LinkButton/LinkButton.fixture.tsx +1 -1
- package/src/ui-kit/LinkButton/LinkButton.tsx +22 -9
- package/src/ui-kit/LinkList/LinkList.tsx +3 -3
- package/src/ui-kit/LocationDialog/LocationDialog.tsx +2 -3
- package/src/ui-kit/LocationDialog/SearchBar.tsx +1 -1
- package/src/ui-kit/SearchDialog/SearchDialog.tsx +1 -4
- package/src/ui-kit/SlideCheckbox/SlideCheckbox.tsx +3 -3
- package/src/ui-kit/SwipeListControl/SwipeListContainer.tsx +1 -1
- package/src/ui-kit/SwipeListControl/useSwipeListScroll.ts +10 -12
- package/src/ui-kit/TableArrowScrollControl/TableArrowScrollControl.tsx +1 -1
- package/src/ui-kit/YandexMap/YandexMap.tsx +1 -1
- package/tailwind.config.cjs +6 -12
- package/bundle/components/Calculator/renderProposalMortgage.d.ts +0 -8
- package/bundle/components/CarouselCard/getCardWidth.d.ts +0 -1
- package/bundle/components/CarouselRecommendationCard/cardStyle.d.ts +0 -1
- package/bundle/components/Footer/SocialMedia.mobile.d.ts +0 -6
- package/bundle/components/Footer/buttonStylesWithText.mobile.d.ts +0 -2
- package/bundle/components/Header/HeaderBurger.d.ts +0 -9
- package/bundle/components/SafeDepositRental/RenderRadioButtons.d.ts +0 -2
- package/dist/components/Calculator/renderProposalMortgage.d.ts +0 -8
- package/dist/components/Calculator/renderProposalMortgage.js +0 -10
- package/dist/components/Calculator/renderProposalMortgage.js.map +0 -1
- package/dist/components/CarouselCard/getCardWidth.d.ts +0 -1
- package/dist/components/CarouselCard/getCardWidth.js +0 -18
- package/dist/components/CarouselCard/getCardWidth.js.map +0 -1
- package/dist/components/CarouselRecommendationCard/cardStyle.d.ts +0 -1
- package/dist/components/CarouselRecommendationCard/cardStyle.js +0 -4
- package/dist/components/CarouselRecommendationCard/cardStyle.js.map +0 -1
- package/dist/components/Footer/SocialMedia.mobile.d.ts +0 -6
- package/dist/components/Footer/SocialMedia.mobile.js +0 -7
- package/dist/components/Footer/SocialMedia.mobile.js.map +0 -1
- package/dist/components/Footer/buttonStylesWithText.mobile.d.ts +0 -2
- package/dist/components/Footer/buttonStylesWithText.mobile.js +0 -12
- package/dist/components/Footer/buttonStylesWithText.mobile.js.map +0 -1
- package/dist/components/Header/HeaderBurger.d.ts +0 -9
- package/dist/components/Header/HeaderBurger.js +0 -17
- package/dist/components/Header/HeaderBurger.js.map +0 -1
- package/dist/components/SafeDepositRental/RenderRadioButtons.d.ts +0 -2
- package/dist/components/SafeDepositRental/RenderRadioButtons.js +0 -12
- package/dist/components/SafeDepositRental/RenderRadioButtons.js.map +0 -1
- package/lib/components/Calculator/renderProposalMortgage.d.ts +0 -8
- package/lib/components/Calculator/renderProposalMortgage.js +0 -7
- package/lib/components/Calculator/renderProposalMortgage.js.map +0 -1
- package/lib/components/CarouselCard/getCardWidth.d.ts +0 -1
- package/lib/components/CarouselCard/getCardWidth.js +0 -15
- package/lib/components/CarouselCard/getCardWidth.js.map +0 -1
- package/lib/components/CarouselRecommendationCard/cardStyle.d.ts +0 -1
- package/lib/components/CarouselRecommendationCard/cardStyle.js +0 -2
- package/lib/components/CarouselRecommendationCard/cardStyle.js.map +0 -1
- package/lib/components/Footer/SocialMedia.mobile.d.ts +0 -6
- package/lib/components/Footer/SocialMedia.mobile.js +0 -5
- package/lib/components/Footer/SocialMedia.mobile.js.map +0 -1
- package/lib/components/Footer/buttonStylesWithText.mobile.d.ts +0 -2
- package/lib/components/Footer/buttonStylesWithText.mobile.js +0 -9
- package/lib/components/Footer/buttonStylesWithText.mobile.js.map +0 -1
- package/lib/components/Header/HeaderBurger.d.ts +0 -9
- package/lib/components/Header/HeaderBurger.js +0 -15
- package/lib/components/Header/HeaderBurger.js.map +0 -1
- package/lib/components/SafeDepositRental/RenderRadioButtons.d.ts +0 -2
- package/lib/components/SafeDepositRental/RenderRadioButtons.js +0 -10
- package/lib/components/SafeDepositRental/RenderRadioButtons.js.map +0 -1
- package/mobile/bundle/components/Calculator/renderProposalMortgage.d.ts +0 -8
- package/mobile/bundle/components/CarouselCard/getCardWidth.d.ts +0 -1
- package/mobile/bundle/components/CarouselRecommendationCard/cardStyle.d.ts +0 -1
- package/mobile/bundle/components/Header/HeaderBurger.d.ts +0 -9
- package/mobile/bundle/components/SafeDepositRental/RenderRadioButtons.d.ts +0 -2
- package/mobile/dist/components/Calculator/renderProposalMortgage.d.ts +0 -8
- package/mobile/dist/components/Calculator/renderProposalMortgage.js +0 -10
- package/mobile/dist/components/Calculator/renderProposalMortgage.js.map +0 -1
- package/mobile/dist/components/CarouselCard/getCardWidth.d.ts +0 -1
- package/mobile/dist/components/CarouselCard/getCardWidth.js +0 -18
- package/mobile/dist/components/CarouselCard/getCardWidth.js.map +0 -1
- package/mobile/dist/components/CarouselRecommendationCard/cardStyle.d.ts +0 -1
- package/mobile/dist/components/CarouselRecommendationCard/cardStyle.js +0 -4
- package/mobile/dist/components/CarouselRecommendationCard/cardStyle.js.map +0 -1
- package/mobile/dist/components/Header/HeaderBurger.d.ts +0 -9
- package/mobile/dist/components/Header/HeaderBurger.js +0 -17
- package/mobile/dist/components/Header/HeaderBurger.js.map +0 -1
- package/mobile/dist/components/SafeDepositRental/RenderRadioButtons.d.ts +0 -2
- package/mobile/dist/components/SafeDepositRental/RenderRadioButtons.js +0 -12
- package/mobile/dist/components/SafeDepositRental/RenderRadioButtons.js.map +0 -1
- package/mobile/lib/components/Calculator/renderProposalMortgage.d.ts +0 -8
- package/mobile/lib/components/Calculator/renderProposalMortgage.js +0 -7
- package/mobile/lib/components/Calculator/renderProposalMortgage.js.map +0 -1
- package/mobile/lib/components/CarouselCard/getCardWidth.d.ts +0 -1
- package/mobile/lib/components/CarouselCard/getCardWidth.js +0 -15
- package/mobile/lib/components/CarouselCard/getCardWidth.js.map +0 -1
- package/mobile/lib/components/CarouselRecommendationCard/cardStyle.d.ts +0 -1
- package/mobile/lib/components/CarouselRecommendationCard/cardStyle.js +0 -2
- package/mobile/lib/components/CarouselRecommendationCard/cardStyle.js.map +0 -1
- package/mobile/lib/components/Header/HeaderBurger.d.ts +0 -9
- package/mobile/lib/components/Header/HeaderBurger.js +0 -15
- package/mobile/lib/components/Header/HeaderBurger.js.map +0 -1
- package/mobile/lib/components/SafeDepositRental/RenderRadioButtons.d.ts +0 -2
- package/mobile/lib/components/SafeDepositRental/RenderRadioButtons.js +0 -10
- package/mobile/lib/components/SafeDepositRental/RenderRadioButtons.js.map +0 -1
- package/mobile/src/components/Calculator/renderProposalMortgage.tsx +0 -22
- package/mobile/src/components/CarouselCard/getCardWidth.tsx +0 -16
- package/mobile/src/components/CarouselRecommendationCard/cardStyle.ts +0 -2
- package/mobile/src/components/Header/HeaderBurger.tsx +0 -54
- package/src/components/Calculator/renderProposalMortgage.tsx +0 -22
- package/src/components/CarouselCard/getCardWidth.tsx +0 -16
- package/src/components/CarouselRecommendationCard/cardStyle.ts +0 -2
- package/src/components/Footer/SocialMedia.mobile.tsx +0 -16
- package/src/components/Footer/buttonStylesWithText.mobile.ts +0 -15
- package/src/components/Header/HeaderBurger.tsx +0 -54
|
@@ -345,7 +345,7 @@
|
|
|
345
345
|
setHidden(Boolean(event.label && block?.labels?.length && !block.labels.includes(event.label)));
|
|
346
346
|
}), [block]);
|
|
347
347
|
const isGroup = version && isTheme;
|
|
348
|
-
return (jsx(Tag, { className: style('font-sans', isGroup ? 'group' : '', blockStyles[version], isHidden ? 'hidden' : '', padding || defaultPadding, className), ...(isGroup ? { 'data-ver': version } : {}), ...(block?.anchor ? { id: block.anchor, ref } : {}), role: role, children: children }));
|
|
348
|
+
return (jsx(Tag, { className: style('@container font-sans', isGroup ? 'group' : '', blockStyles[version], isHidden ? 'hidden' : '', padding || defaultPadding, className), ...(isGroup ? { 'data-ver': version } : {}), ...(block?.anchor ? { id: block.anchor, ref } : {}), role: role, children: children }));
|
|
349
349
|
});
|
|
350
350
|
|
|
351
351
|
const mobileHeadingTagMap = {
|
|
@@ -358,7 +358,7 @@
|
|
|
358
358
|
};
|
|
359
359
|
const headingTag = (tag) => mobileHeadingTagMap[tag] || 'h3';
|
|
360
360
|
|
|
361
|
-
const styles = {
|
|
361
|
+
const styles$4 = {
|
|
362
362
|
h0: 'text-h0',
|
|
363
363
|
h1: 'text-h1',
|
|
364
364
|
h2: 'text-h2',
|
|
@@ -369,7 +369,7 @@
|
|
|
369
369
|
};
|
|
370
370
|
const Heading = JSX(({ className = '', headingType = 'h3', as = 'h3', title, children }) => {
|
|
371
371
|
const Tag = headingTag(as);
|
|
372
|
-
return (jsx(Tag, { className: style('font-sans m-0', styles[headingType], className), children: title || children }));
|
|
372
|
+
return (jsx(Tag, { className: style('font-sans m-0', styles$4[headingType], className), children: title || children }));
|
|
373
373
|
});
|
|
374
374
|
|
|
375
375
|
const identity = (_) => _;
|
|
@@ -505,11 +505,11 @@
|
|
|
505
505
|
return await response.json();
|
|
506
506
|
}
|
|
507
507
|
|
|
508
|
-
const REGIONS_URL = '/api/v1/regions';
|
|
509
|
-
const EMPTY_VALUE$
|
|
508
|
+
const REGIONS_URL$1 = '/api/v1/regions';
|
|
509
|
+
const EMPTY_VALUE$3 = [];
|
|
510
510
|
function useGetRegions() {
|
|
511
|
-
const { data } = useAsyncData(REGIONS_URL, fetchJSONUnsafe);
|
|
512
|
-
return data || EMPTY_VALUE$
|
|
511
|
+
const { data } = useAsyncData(REGIONS_URL$1, fetchJSONUnsafe);
|
|
512
|
+
return data || EMPTY_VALUE$3;
|
|
513
513
|
}
|
|
514
514
|
|
|
515
515
|
const useDialog = (id = '') => ({
|
|
@@ -818,7 +818,7 @@
|
|
|
818
818
|
|
|
819
819
|
const renderAcquiringRegion = ({ regions, field }) => (jsxs("div", { className: "mb-4 pb-1 border-b border-b-main-divider sm:flex sm:justify-between sm:gap-5 sm:mb-7 sm:border-none sm:pb-0", children: [jsx("div", { className: "mb-3 sm:mb-0 sm:w-1/2", children: jsx(SelectControl, { label: "\u0412\u0438\u0434 \u044D\u043A\u0432\u0430\u0439\u0440\u0438\u043D\u0433\u0430", placeholder: "\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u044D\u043A\u0432\u0430\u0439\u0440\u0438\u043D\u0433", options: ACQUIRING_TYPES.map(({ name: key = '' }) => ({ key, text: key })), ...withValidator(field('acquiringType'), defaultValidator) }) }), jsx("div", { className: "mb-3 sm:mb-0 sm:w-1/2", children: jsx(SelectControl, { label: "\u0410\u0434\u0440\u0435\u0441", placeholder: "\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0430\u0434\u0440\u0435\u0441", options: regions.map(({ code = '', name = '' }) => ({ key: code, text: name })), ...withValidator(field('region'), defaultValidator) }) })] }));
|
|
820
820
|
|
|
821
|
-
const SlideCheckbox = JSX(({ value = false, text, type = 'checkbox', onChange }) => (jsxs("div", { role: type, "aria-checked": value, className: "flex justify-start items-center w-full cursor-pointer mb-
|
|
821
|
+
const SlideCheckbox = JSX(({ value = false, text, type = 'checkbox', onChange }) => (jsxs("div", { role: type, "aria-checked": value, className: "flex justify-start items-center w-full cursor-pointer mb-s", onClick: () => onChange && onChange(!value), children: [jsx("div", { className: style('relative flex-shrink-0 duration-300 w-9 h-5 mr-s rounded-2xl', value ? 'bg-primary-main' : 'bg-main-divider'), children: jsx("div", { className: style('absolute opacity-80 duration-500 top-0.5 w-4 h-4 bg-white rounded-full', value ? 'left-1/2' : 'left-[5%]') }) }), jsx(Text, { size: "text-l", font: "font-light", color: "text-primary-text", children: text })] })));
|
|
822
822
|
|
|
823
823
|
const renderSlideCheckboxes = (field) => (jsxs("div", { className: "sm:mb-5", children: [jsx(SlideCheckbox, { text: "\u0425\u043E\u0447\u0443 \u043A\u0443\u043F\u0438\u0442\u044C \u043E\u043D\u043B\u0430\u0439\u043D-\u043A\u0430\u0441\u0441\u0443", ...field('onlineCheckout') }), jsx(SlideCheckbox, { text: "\u0425\u043E\u0447\u0443 \u043A\u0443\u043F\u0438\u0442\u044C POS-\u0442\u0435\u0440\u043C\u0438\u043D\u0430\u043B", ...field('posTerminal') })] }));
|
|
824
824
|
|
|
@@ -869,7 +869,7 @@
|
|
|
869
869
|
|
|
870
870
|
const renderBusinessCardDataOrganization = (field) => (jsxs("div", { className: "sm:flex sm:justify-between sm:gap-5", children: [jsxs("div", { className: "sm:w-1/2", children: [jsx(InputControl, { className: "shrink-0 w-full mb-3", label: "\u041A\u043E\u043D\u0442\u0430\u043A\u0442\u043D\u043E\u0435 \u043B\u0438\u0446\u043E", ...withValidator(field('name'), nameValidator) }), jsx(InputControl, { className: "shrink-0 w-full mb-3", label: "\u0418\u041D\u041D", ...withValidator(field('inn'), innValidator) })] }), jsxs("div", { className: "sm:w-1/2", children: [jsx(PhoneInputControl, { className: "shrink-0 w-full mb-3", label: "\u0422\u0435\u043B\u0435\u0444\u043E\u043D", ...withValidator(field('phone'), phoneValidator) }), jsx(InputControl, { className: "shrink-0 w-full mb-3", label: "\u042D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u0430\u044F \u043F\u043E\u0447\u0442\u0430", ...withValidator(field('mail'), defaultValidator) })] })] }));
|
|
871
871
|
|
|
872
|
-
const renderRegion = ({ regions, field }) => (jsx("div", { className: "w-full mb-3 sm:mb-5", children: jsx(SelectControl, { label: "\u0420\u0435\u0433\u0438\u043E\u043D", placeholder: "\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0440\u0435\u0433\u0438\u043E\u043D", options: regions.map(({ code = '', name = '' }) => ({ key: code, text: name })), ...withValidator(field('region'), defaultValidator) }) }));
|
|
872
|
+
const renderRegion$1 = ({ regions, field }) => (jsx("div", { className: "w-full mb-3 sm:mb-5", children: jsx(SelectControl, { label: "\u0420\u0435\u0433\u0438\u043E\u043D", placeholder: "\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0440\u0435\u0433\u0438\u043E\u043D", options: regions.map(({ code = '', name = '' }) => ({ key: code, text: name })), ...withValidator(field('region'), defaultValidator) }) }));
|
|
873
873
|
|
|
874
874
|
const initialFormState$3 = {
|
|
875
875
|
name: '',
|
|
@@ -900,18 +900,18 @@
|
|
|
900
900
|
}, [onSubmit]);
|
|
901
901
|
const [, { field, ...formProps }] = useForm(initialFormState$3, handleSubmit);
|
|
902
902
|
const regions = useGetRegions();
|
|
903
|
-
return (jsxs("form", { className: "container", onSubmit: formProps.onSubmit, children: [renderRegion({ regions, field }), renderBusinessCardDataOrganization(field), renderSubmitButton(button, 'mb-4'), jsx(Footnote, { link: link })] }));
|
|
903
|
+
return (jsxs("form", { className: "container", onSubmit: formProps.onSubmit, children: [renderRegion$1({ regions, field }), renderBusinessCardDataOrganization(field), renderSubmitButton(button, 'mb-4'), jsx(Footnote, { link: link })] }));
|
|
904
904
|
});
|
|
905
905
|
|
|
906
906
|
const BRANCHES_URL = '/api/v1/branches';
|
|
907
|
-
const EMPTY_VALUE$
|
|
907
|
+
const EMPTY_VALUE$2 = [];
|
|
908
908
|
function useBranches(regionCode) {
|
|
909
|
-
const { data } = useAsyncData(regionCode ? `${BRANCHES_URL}?regionCode=${regionCode}` : null, fetchSafeBoxes);
|
|
910
|
-
return data || EMPTY_VALUE$
|
|
909
|
+
const { data } = useAsyncData(regionCode ? `${BRANCHES_URL}?regionCode=${regionCode}` : null, fetchSafeBoxes$1);
|
|
910
|
+
return data || EMPTY_VALUE$2;
|
|
911
911
|
}
|
|
912
|
-
const fetchSafeBoxes = async (url) => {
|
|
912
|
+
const fetchSafeBoxes$1 = async (url) => {
|
|
913
913
|
const result = await fetchJSON(url, { method: 'GET' });
|
|
914
|
-
return result || EMPTY_VALUE$
|
|
914
|
+
return result || EMPTY_VALUE$2;
|
|
915
915
|
};
|
|
916
916
|
|
|
917
917
|
const MIN_CREDIT_AMOUNT = 1000;
|
|
@@ -1054,6 +1054,26 @@
|
|
|
1054
1054
|
return (jsxs("form", { className: "container", onSubmit: formProps.onSubmit, children: [jsx(Heading, { headingType: "h6", title: "\u041E\u0441\u0442\u0430\u0432\u044C\u0442\u0435 \u0437\u0430\u044F\u0432\u043A\u0443 \u0438 \u043C\u044B \u043E\u0442\u0432\u0435\u0442\u0438\u043C \u043D\u0430 \u043B\u044E\u0431\u044B\u0435 \u0432\u043E\u043F\u0440\u043E\u0441\u044B \u043F\u043E \u0434\u0435\u043F\u043E\u0437\u0438\u0442\u0430\u043C", className: "sm:text-center mb-4" }), jsxs("div", { className: "max-w-[560px] m-auto", children: [jsx(InputControl, { className: "shrink-0 w-full mb-3", label: "\u0418\u043C\u044F", ...withValidator(field('name'), nameValidator) }), jsx(PhoneInputControl, { className: "shrink-0 w-full mb-3", label: "\u0422\u0435\u043B\u0435\u0444\u043E\u043D", ...withValidator(field('phone'), phoneValidator) })] }), jsxs("div", { className: "flex justify-between flex-col-reverse sm:items-center sm:flex-row max-w-[560px] m-auto", children: [jsx("div", { className: "flex-1 mt-4 sm:mt-0", children: jsx(Footnote, { link: link }) }), renderSubmitButton(button)] })] }));
|
|
1055
1055
|
});
|
|
1056
1056
|
|
|
1057
|
+
const EMPTY_VALUE$1 = {};
|
|
1058
|
+
function useSWRResource(filename, fallback = {}) {
|
|
1059
|
+
const { data } = useAsyncData(`/wcms-resources/${filename}.json`, fetchJSONUnsafe, {
|
|
1060
|
+
fallback,
|
|
1061
|
+
});
|
|
1062
|
+
return data || EMPTY_VALUE$1;
|
|
1063
|
+
}
|
|
1064
|
+
|
|
1065
|
+
const ApplicationFormGrantSupport = JSX((props) => {
|
|
1066
|
+
const { button, sourceBookDir } = props;
|
|
1067
|
+
const { regions } = useSWRResource(sourceBookDir || 'regions-grant-support');
|
|
1068
|
+
const [region, setRegion] = useState({ key: '' });
|
|
1069
|
+
const buttonStyle = getRegularButtonClasses({
|
|
1070
|
+
className: 'text-white',
|
|
1071
|
+
version: button?.version,
|
|
1072
|
+
});
|
|
1073
|
+
const regionHref = regions?.find((_) => _.name === region.key)?.href;
|
|
1074
|
+
return (jsxs("div", { className: "container space-y-s sm:space-y-lg", children: [regions ? (jsx(SelectControl, { label: "\u0412\u0430\u0448 \u0440\u0435\u0433\u0438\u043E\u043D", placeholder: "\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0440\u0435\u0433\u0438\u043E\u043D", options: regions.map(({ name = '' }) => ({ key: name })), value: region, onChange: setRegion })) : null, regionHref ? (jsx("div", { className: "text-center", children: jsx(Button, { href: regionHref, target: "_blank", className: style('p-4 w-full sm:w-auto', buttonStyle), children: button?.text ? button.text : 'Перейти' }) })) : null] }));
|
|
1075
|
+
});
|
|
1076
|
+
|
|
1057
1077
|
const sourcesComparator = (a, b) => a?.media && b?.media ? a.media - b.media : 0;
|
|
1058
1078
|
const ImgAsPicture = JSX(({ className = '', image, imageClassName = '', pathPrefix }) => {
|
|
1059
1079
|
const router = useRouter();
|
|
@@ -1148,30 +1168,45 @@
|
|
|
1148
1168
|
return (jsxs("form", { className: "container", onSubmit: formProps.onSubmit, children: [jsx(Heading, { headingType: "h6", title: "\u0414\u0430\u043D\u043D\u044B\u0435 \u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u0438", className: "sm:text-center mb-m" }), renderWedDataOrganization(field), jsx(Heading, { headingType: "h6", title: "\u0418\u043D\u0442\u0435\u0440\u0435\u0441\u0443\u044E\u0449\u0438\u0439 \u0432\u043E\u043F\u0440\u043E\u0441", className: "sm:text-center mb-m" }), renderQuestionsInterested(field), jsxs("div", { className: "flex flex-col border-b border-main-divider mb-5 pb-5 sm:items-center sm:flex-row sm:mb-9 sm:pb-9", children: [renderSubmitButton(button, 'mb-m sm:mr-lg sm:mb-0'), jsx(Footnote, { link: link })] }), jsx(Heading, { headingType: "h6", title: "\u0418\u043B\u0438 \u0441\u0432\u044F\u0436\u0438\u0442\u0435\u0441\u044C \u0441 \u043D\u0430\u043C\u0438 \u0443\u0434\u043E\u0431\u043D\u044B\u043C \u0441\u043F\u043E\u0441\u043E\u0431\u043E\u043C", className: "sm:text-center mb-m" }), renderContacts()] }));
|
|
1149
1169
|
});
|
|
1150
1170
|
|
|
1171
|
+
const EmbeddableForms = {
|
|
1172
|
+
ApplicationFormBusinessCard,
|
|
1173
|
+
ApplicationFormWed,
|
|
1174
|
+
ApplicationFormDeposit,
|
|
1175
|
+
ApplicationFormCredit,
|
|
1176
|
+
ApplicationFormAcquiring,
|
|
1177
|
+
ApplicationFormGrantSupport,
|
|
1178
|
+
};
|
|
1179
|
+
|
|
1151
1180
|
const ResponseNotification = JSX(({ responseType }) => {
|
|
1152
1181
|
const responseOK = responseType === 'OK';
|
|
1153
1182
|
const backgroundColor = responseOK ? 'bg-ok' : 'bg-fail';
|
|
1154
1183
|
return (jsxs("div", { className: `flex items-center mt-lg p-lg rounded-md space-x-m ${backgroundColor}`, children: [responseOK ? (jsx(Img, { image: { icon: 'ResponceOKIcon' }, width: "42", height: "42" })) : (jsx(Img, { image: { icon: 'ResponceFailIcon' }, width: "37", height: "34" })), jsxs("div", { children: [jsx(Heading, { headingType: "h6", title: responseOK ? 'Ваша заявка отправлена' : 'Не удалось отправить заявку', className: "mb-1" }), jsx(Text, { size: "text-l", font: "font-light", color: "text-secondary-text", children: responseOK ? 'Совсем скоро мы с вами свяжемся' : 'Пожалуйста, повторите позднее' })] })] }));
|
|
1155
1184
|
});
|
|
1156
1185
|
|
|
1157
|
-
const COMPONENTS_MAP = {
|
|
1158
|
-
credit: (props) => jsx(ApplicationFormCredit, { ...props }),
|
|
1159
|
-
acquiring: (props) => jsx(ApplicationFormAcquiring, { ...props }),
|
|
1160
|
-
'business-card': (props) => jsx(ApplicationFormBusinessCard, { ...props }),
|
|
1161
|
-
deposit: (props) => jsx(ApplicationFormDeposit, { ...props }),
|
|
1162
|
-
wed: (props) => jsx(ApplicationFormWed, { ...props }),
|
|
1163
|
-
};
|
|
1164
1186
|
const API = CorporateLeadAPI();
|
|
1165
1187
|
const ApplicationForm = JSX((props) => {
|
|
1166
|
-
const { className,
|
|
1188
|
+
const { className, formBlock, ...rest } = props;
|
|
1189
|
+
// const type = formBlock?.formType;
|
|
1190
|
+
// if (!type || !(type in EmbeddableForms)) {
|
|
1191
|
+
// return null;
|
|
1192
|
+
// }
|
|
1193
|
+
// const EmbeddedForm = EmbeddableForms[type];
|
|
1167
1194
|
const [responseType, setResponseType] = useState('');
|
|
1168
1195
|
const handleSubmit = useCallback(async (data) => {
|
|
1169
1196
|
const status = (await API.send(data)) ? 'OK' : 'Fail';
|
|
1170
1197
|
setResponseType(status);
|
|
1171
1198
|
return status;
|
|
1172
1199
|
}, []);
|
|
1173
|
-
return (jsx(BlockWrapper, { className: className, defaultPadding: "p-6xl", ...rest, children: jsxs("div", { className: "container max-w-[978px]", children: [title ? (jsx(Heading, { headingType: "h3", title: title, className: "mb-4 sm:mb-8 sm:text-center" })) : null,
|
|
1200
|
+
return (jsx(BlockWrapper, { className: className, defaultPadding: "p-6xl", ...rest, children: jsxs("div", { className: "container max-w-[978px]", children: [formBlock?.title ? (jsx(Heading, { headingType: "h3", title: formBlock.title, className: "mb-4 sm:mb-8 sm:text-center" })) : null, formBlock ? renderEmbeddedForm(formBlock, handleSubmit) : null, responseType ? jsx(ResponseNotification, { responseType: responseType }) : null] }) }));
|
|
1174
1201
|
});
|
|
1202
|
+
const renderEmbeddedForm = (formBlock, handleSubmit) => {
|
|
1203
|
+
const type = formBlock?.formType;
|
|
1204
|
+
if (!type || !(type in EmbeddableForms)) {
|
|
1205
|
+
return null;
|
|
1206
|
+
}
|
|
1207
|
+
const EmbeddedForm = EmbeddableForms[type];
|
|
1208
|
+
return jsx(EmbeddedForm, { ...formBlock, onSubmit: handleSubmit });
|
|
1209
|
+
};
|
|
1175
1210
|
|
|
1176
1211
|
const iconBgStyles = {
|
|
1177
1212
|
'': 'bg-main-divider group-data-secondary:bg-white/30',
|
|
@@ -1190,7 +1225,7 @@
|
|
|
1190
1225
|
const defaultIconSize = 56;
|
|
1191
1226
|
|
|
1192
1227
|
const BenefitsBlock = JSX(({ className = '', title, benefitList, ...rest }) => (jsxs(BlockWrapper, { className: className, defaultPadding: "p-6xl", ...rest, children: [title ? jsx(Heading, { headingType: "h3", as: "h2", className: "text-center", title: title }) : null, benefitList?.length ? (jsx("div", { className: "flex flex-wrap w-full sm:justify-center mt-xl gap-5xl", role: "list", children: benefitList.map(renderBenefit) })) : null] })));
|
|
1193
|
-
const renderBenefit = (benefit, i) => (jsxs("div", { className: "flex gap-m items-center md:basis-1/2 md:max-w-[
|
|
1228
|
+
const renderBenefit = (benefit, i) => (jsxs("div", { className: "flex gap-m items-center md:basis-1/2 md:max-w-[500px]", role: "listitem", children: [benefit?.icon?.icon ? (jsx(RoundedIcon, { className: "shrink-0", defaultIconSize: defaultIconSize, iconBgVersion: benefit?.iconBgVersion || '', ...benefit?.icon })) : null, benefit?.icon?.src ? jsx(Img, { className: "shrink-0", image: benefit.icon }) : null, benefit?.label ? (jsxs("div", { className: "sm:h-full", children: [jsx(Heading, { headingType: "h6", children: benefit.label }), renderDescription$3(benefit.description)] })) : null] }, String(i)));
|
|
1194
1229
|
const renderDescription$3 = (description) => {
|
|
1195
1230
|
const benefitType = description?.benefitType || null;
|
|
1196
1231
|
return description && benefitType ? (jsx("div", { className: "mt-xs text-l font-light text-secondary-text group-data-secondary:text-white/80", children: benefitType === 'list'
|
|
@@ -1286,7 +1321,7 @@
|
|
|
1286
1321
|
return (jsx("div", { className: `inline-block snap-always box-border ${className}`, style: style, "aria-current": Boolean(idx === activeIndex), ref: ref, children: children }));
|
|
1287
1322
|
});
|
|
1288
1323
|
|
|
1289
|
-
const childStyleMap = ['min-w-
|
|
1324
|
+
const childStyleMap = ['min-w-full', 'min-w-1/2', 'min-w-1/3', 'min-w-1/4'];
|
|
1290
1325
|
const SwipeListContainer = JSX(({ className = '', containerRef, activeIndex, visibleItemCount = 0, gap = 0, padding = 0, listType = 'horizontal-list', snapAlign = 'snap-center', minHeight, children, onVisibleItemsChange, onVisibleIndicesChange, }) => {
|
|
1291
1326
|
const observerOptions = {
|
|
1292
1327
|
sensitivity: 1,
|
|
@@ -1348,6 +1383,7 @@
|
|
|
1348
1383
|
|
|
1349
1384
|
const defaultDiscriminator = (_) => _;
|
|
1350
1385
|
const maxBy = (discriminator = defaultDiscriminator) => (list) => list.reduceRight((a, b) => (discriminator(a) > discriminator(b) ? a : b));
|
|
1386
|
+
const max = maxBy();
|
|
1351
1387
|
|
|
1352
1388
|
const minBy = (discriminator = defaultDiscriminator) => maxBy((_) => -discriminator(_));
|
|
1353
1389
|
|
|
@@ -1364,7 +1400,7 @@
|
|
|
1364
1400
|
container.scrollTo({ left: 0, behavior: 'smooth' });
|
|
1365
1401
|
};
|
|
1366
1402
|
|
|
1367
|
-
const useSwipeListScroll = ({ itemCount,
|
|
1403
|
+
const useSwipeListScroll = ({ itemCount, onVisibleIndicesChange, }) => {
|
|
1368
1404
|
const containerRef = useRef(null);
|
|
1369
1405
|
const [visibleIndices, setVisibleIndices] = useState([]);
|
|
1370
1406
|
const handleVisibleIndicesChange = useCallback((indices) => {
|
|
@@ -1380,31 +1416,31 @@
|
|
|
1380
1416
|
if (!containerRef.current) {
|
|
1381
1417
|
return;
|
|
1382
1418
|
}
|
|
1383
|
-
if (
|
|
1384
|
-
|
|
1419
|
+
if (canScrollLeft) {
|
|
1420
|
+
scrollBy(containerRef.current)(itemCount, -1);
|
|
1385
1421
|
}
|
|
1386
1422
|
else {
|
|
1387
|
-
|
|
1423
|
+
scrollToEnd(containerRef.current);
|
|
1388
1424
|
}
|
|
1389
|
-
}, [
|
|
1425
|
+
}, [itemCount, canScrollLeft]);
|
|
1390
1426
|
const scrollRight = useCallback(() => {
|
|
1391
1427
|
if (!containerRef.current) {
|
|
1392
1428
|
return;
|
|
1393
1429
|
}
|
|
1394
|
-
if (
|
|
1395
|
-
|
|
1430
|
+
if (canScrollRight) {
|
|
1431
|
+
scrollBy(containerRef.current)(itemCount, 1);
|
|
1396
1432
|
}
|
|
1397
1433
|
else {
|
|
1398
|
-
|
|
1434
|
+
scrollToStart(containerRef.current);
|
|
1399
1435
|
}
|
|
1400
|
-
}, [itemCount,
|
|
1436
|
+
}, [itemCount, canScrollRight]);
|
|
1401
1437
|
return [
|
|
1402
1438
|
containerRef,
|
|
1403
1439
|
{
|
|
1404
1440
|
scrollLeft,
|
|
1405
1441
|
scrollRight,
|
|
1406
|
-
canScrollLeft
|
|
1407
|
-
canScrollRight
|
|
1442
|
+
canScrollLeft,
|
|
1443
|
+
canScrollRight,
|
|
1408
1444
|
visibleIndicesRange: [minIndex, maxIndex],
|
|
1409
1445
|
handleVisibleIndicesChange,
|
|
1410
1446
|
},
|
|
@@ -1497,8 +1533,7 @@
|
|
|
1497
1533
|
}
|
|
1498
1534
|
const BlockComponent = type && blocksRegistry[type];
|
|
1499
1535
|
return blockDecorator({
|
|
1500
|
-
blockClassName: style(
|
|
1501
|
-
className, block.style || defaultStyle),
|
|
1536
|
+
blockClassName: style(block.style?.length ? block.style : defaultStyle, className),
|
|
1502
1537
|
block,
|
|
1503
1538
|
ancestors,
|
|
1504
1539
|
// Adjusted by decorator block and blockClassName
|
|
@@ -1512,24 +1547,49 @@
|
|
|
1512
1547
|
const DEFAULT_SLOT_NAME = null;
|
|
1513
1548
|
|
|
1514
1549
|
const EMPTY_ANCESTORS = [];
|
|
1515
|
-
const renderBlocksList = (blocks, { key, ancestors = EMPTY_ANCESTORS, slotName = DEFAULT_SLOT_NAME, renderProps = renderBlock, ...options }) =>
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
|
|
1520
|
-
|
|
1521
|
-
|
|
1550
|
+
const renderBlocksList = (blocks, { key, ancestors = EMPTY_ANCESTORS, slotName = DEFAULT_SLOT_NAME, extraProps, renderProps = renderBlock, ...options }) => {
|
|
1551
|
+
const renderChildBlock = extraProps
|
|
1552
|
+
? (childBlock, childOptions) => renderBlock(childBlock, childOptions, extraProps)
|
|
1553
|
+
: renderProps;
|
|
1554
|
+
return (blocks || []).map((_, i) => renderChildBlock(_, {
|
|
1555
|
+
...options,
|
|
1556
|
+
key: `${key ? key : _.type}-${i}`,
|
|
1557
|
+
ancestors: options.parent
|
|
1558
|
+
? [...(ancestors || EMPTY_ANCESTORS), [options.parent, slotName]]
|
|
1559
|
+
: ancestors,
|
|
1560
|
+
}, i));
|
|
1561
|
+
};
|
|
1522
1562
|
|
|
1523
|
-
function renderChildren({
|
|
1563
|
+
function renderChildren({ block, options, children, extraProps, renderProps, }) {
|
|
1524
1564
|
if (children) {
|
|
1525
1565
|
return children;
|
|
1526
1566
|
}
|
|
1527
1567
|
return block && options
|
|
1528
|
-
? renderBlocksList(block.blocks, { ...options, parent: block, renderProps })
|
|
1568
|
+
? renderBlocksList(block.blocks, { ...options, parent: block, extraProps, renderProps })
|
|
1529
1569
|
: null;
|
|
1530
1570
|
}
|
|
1531
1571
|
|
|
1532
|
-
const
|
|
1572
|
+
const useCarouselControls = (props, initialIndex = 0) => {
|
|
1573
|
+
const { itemCount, visibleItemCount } = props;
|
|
1574
|
+
const [activeIndex, setActiveIndex] = useState(initialIndex);
|
|
1575
|
+
const inc = useCallback(() => setActiveIndex((_) => Math.min(_ + 1, itemCount - 1)), [itemCount]);
|
|
1576
|
+
const dec = useCallback(() => setActiveIndex((_) => Math.max(_ - 1, 0)), [itemCount]);
|
|
1577
|
+
const canInc = visibleItemCount
|
|
1578
|
+
? itemCount > visibleItemCount && activeIndex < itemCount - visibleItemCount
|
|
1579
|
+
: activeIndex < itemCount - 1;
|
|
1580
|
+
const canDec = activeIndex > 0;
|
|
1581
|
+
const isScrollAvailable = canDec || canInc;
|
|
1582
|
+
return [
|
|
1583
|
+
activeIndex,
|
|
1584
|
+
{
|
|
1585
|
+
inc,
|
|
1586
|
+
dec,
|
|
1587
|
+
canInc,
|
|
1588
|
+
canDec,
|
|
1589
|
+
isScrollAvailable,
|
|
1590
|
+
},
|
|
1591
|
+
];
|
|
1592
|
+
};
|
|
1533
1593
|
|
|
1534
1594
|
const ArrowButton = JSX(({ className, disabled, ...rest }) => (jsx(Button, { rounded: true, className: `group/btn shadow-[0_4px_25px_rgba(0,0,0,0.07)] w-12 h-12 min-h-12 max-h-12 flex items-center justify-center ${disabled
|
|
1535
1595
|
? 'bg-secondary-light text-secondary-text'
|
|
@@ -1538,8 +1598,8 @@
|
|
|
1538
1598
|
const ScrollRightButton = JSX((props) => (jsx(ArrowButton, { ...props, className: `${props.className || ''} rotate-180`, ariaLabel: "\u041F\u0440\u043E\u043B\u0438\u0441\u0442\u0430\u0442\u044C \u0432\u043F\u0440\u0430\u0432\u043E", "data-block-control": "scroll-right" })));
|
|
1539
1599
|
|
|
1540
1600
|
const scrollButtonStyle$1 = 'absolute top-[calc(50%-24px)] z-40';
|
|
1541
|
-
const blurBaseStyle = 'absolute top-0 bottom-0 z-40 w-
|
|
1542
|
-
const CarouselScrollButtons = JSX(({ scroll,
|
|
1601
|
+
const blurBaseStyle = 'absolute top-0 bottom-0 z-40 hidden @lg:block w-20 pointer-events-none';
|
|
1602
|
+
const CarouselScrollButtons = JSX(({ scroll, activeIndex, itemCount, arrowsPadded, hasEdgeBlocks, onScrollLeft, onScrollRight, }) => {
|
|
1543
1603
|
const { canScrollLeft, canScrollRight, scrollLeft, scrollRight } = scroll;
|
|
1544
1604
|
const canMoveLeft = hasEdgeBlocks ? activeIndex > 0 : canScrollLeft;
|
|
1545
1605
|
const canMoveRight = hasEdgeBlocks ? activeIndex < itemCount - 1 : canScrollRight;
|
|
@@ -1561,52 +1621,33 @@
|
|
|
1561
1621
|
onScrollRight();
|
|
1562
1622
|
}
|
|
1563
1623
|
}, [scrollRight, onScrollRight, hasEdgeBlocks, canScrollLeft, activeIndex, itemCount]);
|
|
1564
|
-
return (jsxs("div", { children: [renderBlur(
|
|
1624
|
+
return (jsxs("div", { className: "hidden @lg:block", children: [renderBlur(scroll), canMoveLeft ? (jsx(ScrollLeftButton, { className: style(scrollButtonStyle$1, arrowsPadded ? 'left-1 @lg:left-8' : 'left-0'), onClick: handleScrollLeft })) : null, canMoveRight ? (jsx(ScrollRightButton, { className: style(scrollButtonStyle$1, arrowsPadded ? 'right-1 @lg:right-8' : 'right-0'), onClick: handleScrollRight })) : null] }));
|
|
1565
1625
|
});
|
|
1566
|
-
const renderBlur = (
|
|
1626
|
+
const renderBlur = (scroll) => (jsxs("div", { children: [scroll.canScrollLeft ? (jsx("div", { className: style(blurBaseStyle, 'left-0 bg-opacity-from-white group-data-secondary:bg-none') })) : null, scroll.canScrollRight ? (jsx("div", { className: style(blurBaseStyle, 'right-0 bg-opacity-to-white group-data-secondary:bg-none') })) : null] }));
|
|
1567
1627
|
|
|
1568
|
-
const
|
|
1569
|
-
return [
|
|
1570
|
-
showArrows ? jsx(CarouselScrollButtons, { ...scrollButtonsProps }, "0") : null,
|
|
1571
|
-
showDots ? jsx(SwipeListControlDots, { ...dotsProps, listType: "horizontal-list" }, "1") : null,
|
|
1572
|
-
];
|
|
1573
|
-
};
|
|
1628
|
+
const ITEMS_GAP = 16;
|
|
1574
1629
|
|
|
1575
|
-
const Carousel = JSX(({ className
|
|
1630
|
+
const Carousel = JSX(({ className, itemCount, visibleItemCount = 0, noCardBorder, isAlignCenter, showDots, arrowsPadded = true, isGap = true, ...rest }) => {
|
|
1576
1631
|
const { blocks: childBlocks = [] } = rest.block || {};
|
|
1577
1632
|
const count = itemCount || childBlocks?.length;
|
|
1578
|
-
const [activeIndex,
|
|
1579
|
-
const increaseActiveIndex = useCallback(() => setActiveIndex((_) => _ + 1), []);
|
|
1580
|
-
const decreaseActiveIndex = useCallback(() => setActiveIndex((_) => _ - 1), []);
|
|
1581
|
-
const [containerRef, scroll] = useSwipeListScroll({
|
|
1633
|
+
const [activeIndex, { inc: increaseActiveIndex, dec: decreaseActiveIndex }] = useCarouselControls({
|
|
1582
1634
|
itemCount: count,
|
|
1583
|
-
|
|
1584
|
-
});
|
|
1635
|
+
visibleItemCount,
|
|
1636
|
+
}, Math.floor(visibleItemCount / 2));
|
|
1637
|
+
const [containerRef, scroll] = useSwipeListScroll({ itemCount: count });
|
|
1585
1638
|
const [dotsActiveIndex] = scroll.visibleIndicesRange;
|
|
1639
|
+
// TODO Remove
|
|
1586
1640
|
const isBankHistoryCarousel = childBlocks && childBlocks[0]?.type === 'CarouselBankHistoryCard';
|
|
1587
|
-
return (jsx(BlockWrapper, { className: className, defaultPadding:
|
|
1641
|
+
return (jsx(BlockWrapper, { className: className, defaultPadding: "p-6xl", ...rest, children: jsxs("div", { className: style(isAlignCenter ? 'flex justify-center' : '', 'relative max-w-full'), children: [jsx(SwipeListContainer, { containerRef: containerRef, visibleItemCount: visibleItemCount, snapAlign: "snap-start", gap: isGap ? ITEMS_GAP : undefined, onVisibleIndicesChange: scroll.handleVisibleIndicesChange, children: renderChildren({
|
|
1588
1642
|
...rest,
|
|
1589
|
-
renderProps:
|
|
1590
|
-
|
|
1591
|
-
|
|
1592
|
-
|
|
1593
|
-
|
|
1594
|
-
:
|
|
1595
|
-
|
|
1596
|
-
|
|
1597
|
-
showDots,
|
|
1598
|
-
scrollButtonsProps: {
|
|
1599
|
-
scroll,
|
|
1600
|
-
arrowsPadded,
|
|
1601
|
-
isBlur,
|
|
1602
|
-
onScrollLeft: decreaseActiveIndex,
|
|
1603
|
-
onScrollRight: increaseActiveIndex,
|
|
1604
|
-
hasEdgeBlocks: isBankHistoryCarousel,
|
|
1605
|
-
activeIndex,
|
|
1606
|
-
itemCount: count,
|
|
1607
|
-
},
|
|
1608
|
-
dotsProps: { containerRef, activeIndex: dotsActiveIndex, dotCount: count },
|
|
1609
|
-
})] }) }));
|
|
1643
|
+
renderProps: (block, options, blockIndex) => renderBlock(block, options, {
|
|
1644
|
+
className: style('h-full min-w-80 sm:min-w-96', noCardBorder
|
|
1645
|
+
? ''
|
|
1646
|
+
: 'border border-solid border-gray group-data-secondary:border-white/50 group-data-gray:border-main-divider'),
|
|
1647
|
+
blockIndex,
|
|
1648
|
+
isActive: activeIndex === blockIndex,
|
|
1649
|
+
}),
|
|
1650
|
+
}) }), jsx(CarouselScrollButtons, { scroll: scroll, arrowsPadded: arrowsPadded, onScrollLeft: decreaseActiveIndex, onScrollRight: increaseActiveIndex, hasEdgeBlocks: isBankHistoryCarousel, activeIndex: activeIndex, itemCount: count }), showDots ? (jsx(SwipeListControlDots, { containerRef: containerRef, activeIndex: dotsActiveIndex, dotCount: count, listType: "horizontal-list" })) : null] }) }));
|
|
1610
1651
|
});
|
|
1611
1652
|
Carousel.childrenTypes = [
|
|
1612
1653
|
'CarouselCard',
|
|
@@ -1621,10 +1662,8 @@
|
|
|
1621
1662
|
'CarouselInvestmentCard',
|
|
1622
1663
|
'CarouselEventCard',
|
|
1623
1664
|
];
|
|
1624
|
-
const getPaddingStyle$1 = (isPadding) => (isPadding ? 'p-6xl' : '');
|
|
1625
|
-
const getAlignStyle = (isAlignCenter) => isAlignCenter ? 'flex justify-center' : '';
|
|
1626
1665
|
|
|
1627
|
-
const CarouselBankHistoryCard = JSX(({ title, description, className }) => (jsx(BlockWrapper, { className:
|
|
1666
|
+
const CarouselBankHistoryCard = JSX(({ title, description, className }) => (jsx(BlockWrapper, { className: className, defaultPadding: "p-6xl", children: jsx(Headline, { headlineVersion: "S", title: title, description: description, align: "text-left", className: "text-primary-text", isPadding: false }) })));
|
|
1628
1667
|
|
|
1629
1668
|
const LinkWrapper = JSX(({ className = '', href, target, isRemote = false, children }) => {
|
|
1630
1669
|
const link = useLink({ isRemote });
|
|
@@ -1636,9 +1675,7 @@
|
|
|
1636
1675
|
const cardTitleFont = 'font-light';
|
|
1637
1676
|
const cardDescriptionColor = '';
|
|
1638
1677
|
|
|
1639
|
-
const CarouselProgramsCard = JSX(({ className
|
|
1640
|
-
return (jsx(BlockWrapper, { className: style('border border-gray', className), defaultPadding: "p-3xl sm:p-0", ...rest, children: jsxs(LinkWrapper, { className: "sm:flex sm:items-center", href: href, target: target, children: [jsx("div", { className: "min-w-[200px] flex justify-center", children: icon?.src || icon?.icon ? jsx(Img, { image: icon }) : null }), jsxs("div", { className: "sm:px-s p-5xl", children: [title ? jsx(Heading, { className: "mb-xs sm:mb-m", headingType: "h6", title: title }) : null, list.length ? (jsx("div", { className: "flex flex-col gap-xs sm:gap-s", children: list?.map(renderList$2) })) : null] })] }) }));
|
|
1641
|
-
});
|
|
1678
|
+
const CarouselProgramsCard = JSX(({ className, title, icon, list = [], href, target, ...rest }) => (jsx(BlockWrapper, { className: className, defaultPadding: "p-3xl sm:p-0", ...rest, children: jsxs(LinkWrapper, { className: "sm:flex sm:items-center", href: href, target: target, children: [jsx("div", { className: "flex justify-center px-xl", children: icon?.src || icon?.icon ? jsx(Img, { image: icon }) : null }), jsxs("div", { className: "sm:px-s p-5xl", children: [title ? jsx(Heading, { className: "mb-xs sm:mb-m", headingType: "h6", title: title }) : null, list.length ? (jsx("div", { className: "flex flex-col gap-xs sm:gap-s", children: list?.map(renderList$2) })) : null] })] }) })));
|
|
1642
1679
|
const renderList$2 = (_, i) => (jsxs("div", { className: "flex flex-row-reverse justify-between gap-y-2xs sm:flex-col", children: [_.title ? (jsx(Text, { size: "text-l", font: cardTitleFont, children: _.title })) : null, _.description ? (jsx(Paragraph, { size: "text-l", font: "font-light", color: cardDescriptionColor, children: _.description })) : null] }, String(i)));
|
|
1643
1680
|
|
|
1644
1681
|
const DOT_SIZE_MAP = {
|
|
@@ -1662,8 +1699,9 @@
|
|
|
1662
1699
|
|
|
1663
1700
|
const buttonSizeStyles = {
|
|
1664
1701
|
default: 'w-24 h-14',
|
|
1665
|
-
|
|
1702
|
+
stretched: 'flex-1 h-14',
|
|
1666
1703
|
};
|
|
1704
|
+
|
|
1667
1705
|
const buttonStylesWithText = (text, buttonSize) => text
|
|
1668
1706
|
? ''
|
|
1669
1707
|
: style('group/media flex items-center justify-center box-border', buttonSizeStyles[buttonSize]);
|
|
@@ -1711,12 +1749,10 @@
|
|
|
1711
1749
|
});
|
|
1712
1750
|
const getFilteredIcon = (icon) => (icon?.src || icon?.icon ? icon : undefined);
|
|
1713
1751
|
|
|
1714
|
-
const SocialMedia = JSX(({ className = '', media }) => (
|
|
1715
|
-
|
|
1716
|
-
const BORDER_STYLE = 'border border-solid border-gray group-data-secondary:border-white/50 group-data-gray:border-main-divider';
|
|
1752
|
+
const SocialMedia = JSX(({ className = '', media, children, buttonSize }) => (jsxs("div", { className: "flex flex-col sm:flex-col-reverse gap-xs", children: [children ? (jsx(Text, { size: "text-s", font: "font-light", color: "text-secondary-text", children: children })) : null, jsx("div", { className: style('flex gap-xs', className), children: media?.map((_, index) => (jsx(MediaButton, { buttonSize: buttonSize, ..._ }, String(index)))) })] })));
|
|
1717
1753
|
|
|
1718
1754
|
const CarouselRecommendationCard = JSX(({ className = '', description, href, icon, items = [], socialMedia = [], target, title, align = 'text-left', ...rest }) => {
|
|
1719
|
-
return (jsx(BlockWrapper, { className: style('relative
|
|
1755
|
+
return (jsx(BlockWrapper, { className: style('relative group-data-gray:bg-main-divider/50', className), defaultPadding: "p-6xl", ...rest, children: jsxs(LinkWrapper, { href: href, target: target, children: [jsx(Headline, { className: "mb-xs", title: title, description: description, headlineVersion: "S", isPadding: false, align: align }), items.length ? (jsx(List, { className: "flex flex-col gap-2", items: items, listItemSize: "S" })) : null, renderIcon$1(icon), socialMedia.length ? jsx(SocialMedia, { className: "mt-5", media: socialMedia }) : null] }) }));
|
|
1720
1756
|
});
|
|
1721
1757
|
const renderIcon$1 = (icon) => icon?.src || icon?.icon ? (jsx("div", { children: jsx(Img, { image: icon }) })) : null;
|
|
1722
1758
|
|
|
@@ -1754,37 +1790,18 @@
|
|
|
1754
1790
|
const cellsNode = cardCells.map(renderCardInfo);
|
|
1755
1791
|
const visibleCells = cellsNode.slice(0, VISIBLE_CELLS_COUNT);
|
|
1756
1792
|
const hiddenCells = cellsNode.slice(VISIBLE_CELLS_COUNT);
|
|
1757
|
-
return (jsxs(BlockWrapper, { className: style('relative
|
|
1793
|
+
return (jsxs(BlockWrapper, { className: style('relative flex flex-col', className), defaultPadding: getPaddingStyle(isHighlighting), ...rest, children: [isHighlighting ? renderHitIcon() : null, renderIconBlock(icon), title ? (jsx(Heading, { className: style('pt-xs', align), headingType: "h5", title: title })) : null, button ? jsx(Button, { className: "w-full mt-m", ...button }) : null, cardCells.length ? (jsx(Foldable, { renderFoldableSection: ({ isUnfolded }) => (jsxs("div", { children: [visibleCells, jsx(FoldableSection, { isUnfolded: isUnfolded, children: hiddenCells })] })), renderFoldButton: cardCells.length > 1 ? renderFoldButton$1 : null })) : null] }));
|
|
1758
1794
|
});
|
|
1759
|
-
const renderIconBlock = (icon) => (jsx("div", { className: "
|
|
1795
|
+
const renderIconBlock = (icon) => (jsx("div", { className: "basis-full self-center", children: icon?.src || icon?.icon ? jsx(Img, { image: icon }) : null }));
|
|
1760
1796
|
const renderFoldButton$1 = ({ isUnfolded, onToggle }) => (jsxs("button", { className: "w-full cursor-pointer text-primary-main pt-5 flex justify-between items-center", onClick: onToggle, children: [jsx("div", { children: isUnfolded ? 'Скрыть' : 'Подробнее о тарифе' }), jsx(Icon, { className: "text-primary-text", name: isUnfolded ? 'ArrowUpIcon' : 'ArrowDownIcon', width: "16", height: "16" })] }));
|
|
1761
1797
|
const renderHitIcon = () => (jsxs("div", { className: "absolute -top-7 -right-4 h-[60px] w-[60px] bg-white flex flex-col items-center justify-center rounded-md shadow-[0_4px_25px_rgba(0,0,0,0.07)]", children: [jsx(Icon, { iconVersion: "black", name: "HeartIcon", width: "23", height: "22" }), jsx(Paragraph, { size: "text-s", font: "font-normal", align: "text-center", color: "text-primary-text", children: "\u0425\u0418\u0422" })] }));
|
|
1762
1798
|
|
|
1763
|
-
const getColSpan = (className) => {
|
|
1764
|
-
const colSpanPrefix = 'col-span-';
|
|
1765
|
-
const colSpanStr = className?.split(/\s+/).find((_) => _.startsWith(colSpanPrefix));
|
|
1766
|
-
return colSpanStr ? parseInt(colSpanStr.substring(colSpanPrefix.length), 10) : 12;
|
|
1767
|
-
};
|
|
1768
|
-
|
|
1769
|
-
const CARD_WIDTH_MAP = {
|
|
1770
|
-
normal: 'min-w-[970px]',
|
|
1771
|
-
small: 'min-w-[355px]',
|
|
1772
|
-
};
|
|
1773
|
-
function getCardWidth(className = '', carouselVersion = 'normal') {
|
|
1774
|
-
const colSpan = getColSpan(className);
|
|
1775
|
-
if (colSpan <= 4) {
|
|
1776
|
-
return 'w-[375px]';
|
|
1777
|
-
}
|
|
1778
|
-
else {
|
|
1779
|
-
return CARD_WIDTH_MAP[carouselVersion];
|
|
1780
|
-
}
|
|
1781
|
-
}
|
|
1782
|
-
|
|
1783
1799
|
const titleSize = 'XS';
|
|
1784
1800
|
|
|
1785
|
-
const
|
|
1786
|
-
const
|
|
1787
|
-
|
|
1801
|
+
const layerBaseStyle = 'z-10 border border-solid w-full h-full';
|
|
1802
|
+
const layerStyle = style(layerBaseStyle, 'absolute hidden sm:block border-transparent');
|
|
1803
|
+
const CarouselCard = JSX(({ className, title, description, button, ...rest }) => (jsx(BlockWrapper, { className: style('sm:pl-12 sm:pb-9', className), defaultPadding: "p-0", ...rest, children: jsxs("div", { className: "relative", children: [jsx("div", { className: style(layerStyle, 'top-9 right-12 bg-green-dark') }), jsx("div", { className: style(layerStyle, 'top-6 right-8 bg-green') }), jsx("div", { className: style(layerStyle, 'top-3 right-4 bg-green-light') }), jsxs("div", { className: style(layerBaseStyle, 'relative p-10 bg-white border-green-light'), children: [jsx(Headline, { title: title, description: description, headlineVersion: titleSize, align: "text-left", isPadding: false }), renderButtonsSection([button], {
|
|
1804
|
+
className: 'mt-6xl sm:justify-center',
|
|
1788
1805
|
isVertical: true,
|
|
1789
1806
|
})] })] }) })));
|
|
1790
1807
|
|
|
@@ -1792,13 +1809,13 @@
|
|
|
1792
1809
|
black: 'bg-black',
|
|
1793
1810
|
white: 'bg-white',
|
|
1794
1811
|
};
|
|
1795
|
-
const CarouselCatalogCard = JSX(({ className = '', title, description, image, price, button, colors, ...rest }) => (jsxs(BlockWrapper, { className: style('
|
|
1812
|
+
const CarouselCatalogCard = JSX(({ className = '', title, description, image, price, button, colors, ...rest }) => (jsxs(BlockWrapper, { className: style('flex flex-col justify-left gap-m', className), defaultPadding: "p-6xl sm:p-7", ...rest, children: [image?.src ? jsx(Img, { className: "flex justify-center", image: image }) : null, jsx(Headline, { title: title, description: description, headlineVersion: "XS", isPadding: false, align: "text-left" }), colors?.length ? (jsxs("div", { className: "flex text-secondary-text", children: [jsx("div", { className: "mr-xs", children: jsx(Text, { size: "text-s", align: "text-left", font: "font-light", children: "\u0426\u0432\u0435\u0442\u0430:" }) }), colors.map(renderColorOption)] })) : null, price ? (jsxs(Text, { size: "text-h3", align: "text-left", children: [price, "\u00A0\u20BD"] })) : null, renderButtonsSection([button], { buttonClassName: 'w-full' })] })));
|
|
1796
1813
|
const renderColorOption = (color, i) => (jsx("div", { role: "figure", className: `w-6 h-6 ml-1 sm:ml-3 border border-solid border-main-divider rounded-full ${cardStyleMap[color]}` }, String(i)));
|
|
1797
1814
|
|
|
1798
1815
|
const alignTextStyle = 'text-left';
|
|
1799
1816
|
|
|
1800
1817
|
const CarouselProductCard = JSX(({ additionalDescription, align = alignTextStyle, button = {}, className = '', description, headlineSmallVersion = 'H6', href, icon, isDotted = true, isButtonFullWidth = true, isImageFullWidth = false, isTopPosition = false, items = [], target, title, version = 'primary', ...rest }) => {
|
|
1801
|
-
return (jsxs(BlockWrapper, { className: style('
|
|
1818
|
+
return (jsxs(BlockWrapper, { className: style('flex flex-col justify-between', align, className), defaultPadding: "p-0", version: version, ...rest, children: [jsxs(LinkWrapper, { className: "p-m flex flex-col gap-xs", href: href, target: target, children: [renderCardTitle(headlineSmallVersion, title), renderDescription$2(description), renderItems(items, isDotted, version), renderAdditionalDescription(additionalDescription), renderImage$2(icon, isImageFullWidth, isTopPosition)] }), renderButtonsSection([button], {
|
|
1802
1819
|
className: style('p-m pt-0', isButtonFullWidth ? '' : 'self-center'),
|
|
1803
1820
|
isVertical: isButtonFullWidth,
|
|
1804
1821
|
})] }));
|
|
@@ -1835,7 +1852,7 @@
|
|
|
1835
1852
|
|
|
1836
1853
|
const ComparisonTable = JSX((props) => {
|
|
1837
1854
|
const { className, title } = props;
|
|
1838
|
-
return (jsxs("section", { className: `bg-white font-sans
|
|
1855
|
+
return (jsxs("section", { className: `bg-white font-sans p-6xl overflow-hidden text-primary-text relative space-y-lg ${className || ''}`, children: [title ? (jsx(Heading, { headingType: "h3", className: "font-medium text-center", title: title })) : null, jsx("div", { role: "table", children: jsx(TableInner, { ...props }) })] }));
|
|
1839
1856
|
});
|
|
1840
1857
|
const TableInner = JSX(({ columns = [], rowHeaders, isColoredFirstColumn, visibleRowLength, orientation, ...rest }) => {
|
|
1841
1858
|
const [columnsViewState, setColumnsViewState] = useState(new Array(columns.length).fill(!visibleRowLength));
|
|
@@ -1849,20 +1866,195 @@
|
|
|
1849
1866
|
return orientation === 'horizontal' ? (jsx(SwipeListControl, { onVisibleIndicesChange: handleSlideChange, children: tableColumns })) : (tableColumns);
|
|
1850
1867
|
});
|
|
1851
1868
|
|
|
1852
|
-
const
|
|
1853
|
-
|
|
1854
|
-
|
|
1855
|
-
|
|
1869
|
+
const imageAlignmentMap = {
|
|
1870
|
+
start: 'self-start',
|
|
1871
|
+
center: 'self-center',
|
|
1872
|
+
end: 'self-end',
|
|
1873
|
+
};
|
|
1874
|
+
const BaseTile = JSX(({ className, defaultPadding, padding, title = '', insetTitle = '', buttons, leftImage, rightImage, imageAlign, backImage, children, }) => (jsxs("div", { className: style('relative flex flex-col gap-3xl font-sans overflow-hidden', padding || defaultPadding, className), children: [title ? jsx("div", { className: "relative", children: title }) : null, jsxs("div", { className: "grow relative flex flex-wrap @xl:flex-nowrap justify-between items-stretch gap-3xl", children: [renderImageContainer(leftImage, { imageAlign }), jsxs("div", { className: style('flex flex-col gap-3xl max-w-[600px] xl:max-w-[728px]', leftImage ? '' : 'grow'), children: [insetTitle, jsx("div", { className: "grow", children: children }), backImage ? (jsx("div", { className: "mx-auto sm:absolute sm:-z-10 sm:-bottom-4 sm:-right-4", children: backImage })) : null, buttons] }), renderImageContainer(rightImage, { className: '-order-1 @xl:order-1', imageAlign })] })] })));
|
|
1875
|
+
const renderImageContainer = (image, { className, imageAlign }) => image ? (jsx("div", { className: style('flex-shrink-0', imageAlign && imageAlignmentMap[imageAlign], className), children: image })) : null;
|
|
1876
|
+
|
|
1877
|
+
var Currency;
|
|
1878
|
+
(function (Currency) {
|
|
1879
|
+
Currency["RUB"] = "RUB";
|
|
1880
|
+
Currency["EUR"] = "EUR";
|
|
1881
|
+
Currency["USD"] = "USD";
|
|
1882
|
+
})(Currency || (Currency = {}));
|
|
1883
|
+
|
|
1884
|
+
const currencyNumberFormat = new Intl.NumberFormat('ru', {
|
|
1885
|
+
style: 'currency',
|
|
1886
|
+
currency: Currency.RUB,
|
|
1887
|
+
});
|
|
1888
|
+
const formatCurrency = (value) => (value ? currencyNumberFormat.format(value) : '');
|
|
1889
|
+
|
|
1890
|
+
const TABLE_HEAD_STYLE = 'text-left text-m font-light text-secondary-text';
|
|
1891
|
+
const TABLE_HEAD_STYLE_WITH_PADDING = `${TABLE_HEAD_STYLE} pl-5xl`;
|
|
1892
|
+
const CURRENCY_ICONS_MAP = {
|
|
1893
|
+
USD: 'DollarIcon',
|
|
1894
|
+
EUR: 'EuroIcon',
|
|
1895
|
+
};
|
|
1896
|
+
const CurrencyTable = JSX(({ className, exchangeCurrencyItems }) => (jsxs("table", { className: `h-fit w-fit ${className}`, children: [jsx("thead", { children: jsxs("tr", { children: [jsx("th", { className: TABLE_HEAD_STYLE, children: jsx(Text, { size: "text-m", children: "\u0412\u0430\u043B\u044E\u0442\u0430" }) }), jsx("th", { className: TABLE_HEAD_STYLE_WITH_PADDING, children: jsx(Text, { size: "text-m", children: "\u041A\u0443\u043F\u0438\u0442\u044C" }) }), jsx("th", { className: TABLE_HEAD_STYLE_WITH_PADDING, children: jsx(Text, { size: "text-m", children: "\u041F\u0440\u043E\u0434\u0430\u0442\u044C" }) })] }) }), jsx("tbody", { children: exchangeCurrencyItems.map(renderCurrencyRow) })] })));
|
|
1897
|
+
const renderCurrencyRow = (exchangeCurrencyItem) => {
|
|
1898
|
+
const currency = exchangeCurrencyItem?.currency?.currency;
|
|
1899
|
+
return (jsxs("tr", { className: "pb-2xs text-h6", children: [jsx("td", { className: "pt-m", children: jsxs("div", { className: "flex items-center", children: [currency ? (jsx(Img, { image: { icon: CURRENCY_ICONS_MAP[currency] }, width: "24", height: "24", className: "mr-2" })) : null, jsx(Text, { size: "text-h6", children: currency })] }) }), jsx("td", { className: "pt-m pl-5xl", children: jsx(Text, { size: "text-h6", children: formatCurrency(exchangeCurrencyItem?.saleExchangeRate) }) }), jsx("td", { className: "pt-m pl-5xl", children: jsx(Text, { size: "text-h6", children: formatCurrency(exchangeCurrencyItem?.buyExchangeRate) }) })] }, currency));
|
|
1900
|
+
};
|
|
1901
|
+
|
|
1902
|
+
const icon = { icon: 'GpsIcon' };
|
|
1903
|
+
const CurrentLocation$1 = JSX(({ className = '', address }) => (jsxs("div", { className: `flex gap-s ${className}`, children: [jsx(RoundedIcon, { ...icon, iconBgVersion: "primary" }), jsxs("div", { className: "space-y-2xs", children: [address ? jsx("p", { className: "text-primary-main text-l", children: address }) : null, jsx("p", { className: "text-secondary-text text-m", children: "\u041A\u0443\u0440\u0441 \u0443\u043A\u0430\u0437\u0430\u043D \u0434\u043B\u044F \u0437\u0430\u0434\u0430\u043D\u043D\u043E\u0433\u043E \u043E\u0444\u0438\u0441\u0430" })] })] })));
|
|
1904
|
+
|
|
1905
|
+
const roundTo = (value, precision = 2) => {
|
|
1906
|
+
const factor = 10 ** precision;
|
|
1907
|
+
return Math.round(parseFloat(String(value)) * factor) / factor;
|
|
1908
|
+
};
|
|
1909
|
+
|
|
1910
|
+
const calculateResult = (value, rate, precision) => {
|
|
1911
|
+
const result = Number(formatValue(value)) * Math.pow(rate, precision ? -1 : 1);
|
|
1912
|
+
return Number.isInteger(result) ? result : roundTo(result);
|
|
1913
|
+
};
|
|
1914
|
+
const formatValue = (value) => value.replace(/[^\d.,]/g, '').replace(',', '.');
|
|
1915
|
+
|
|
1916
|
+
const tableFunc = (table) => (input) => {
|
|
1917
|
+
const [, output] = table.find(([predicate]) => predicate(input)) || [];
|
|
1918
|
+
return output;
|
|
1919
|
+
};
|
|
1920
|
+
|
|
1921
|
+
const callbackCurrencySelect = (props) => tableFunc([
|
|
1922
|
+
[
|
|
1923
|
+
(_) => _.value !== Currency.RUB && _.oppositeValue !== Currency.RUB,
|
|
1924
|
+
() => props.handleConvert(props.value, Currency.RUB),
|
|
1925
|
+
],
|
|
1926
|
+
[
|
|
1927
|
+
(_) => _.value === Currency.RUB && _.oppositeValue === Currency.RUB,
|
|
1928
|
+
() => props.handleConvert(props.value, Currency.USD),
|
|
1929
|
+
],
|
|
1930
|
+
[() => true, () => props.handleConvert(props.value)],
|
|
1931
|
+
])(props)?.();
|
|
1932
|
+
|
|
1933
|
+
function renderInput(props) {
|
|
1934
|
+
const { placeholder, rates, selected, value, setValue, setSelected } = props;
|
|
1935
|
+
const ratesOptions = rates.map((_) => ({
|
|
1936
|
+
key: _?.currency?.currency ?? '',
|
|
1937
|
+
text: _?.currency?.currency ?? '',
|
|
1938
|
+
}));
|
|
1939
|
+
const selectedValue = { key: selected, text: selected };
|
|
1940
|
+
return (jsxs("div", { className: "relative flex", children: [jsx(Input, { className: "shrink-0 text-l w-full appearance-none mr-[-90px]", placeholder: placeholder, type: "text", value: value, onChange: setValue }), ratesOptions.length ? (jsx(Select, { isBorder: false, onChange: (_) => setSelected(_.key), options: ratesOptions, value: selectedValue })) : null] }));
|
|
1941
|
+
}
|
|
1942
|
+
|
|
1943
|
+
const ExchangeCurrencyCalculator = JSX(({ className = '', currencyRatesBuy, currencyRatesSell, button }) => {
|
|
1944
|
+
const [calcState, setCalcState] = useState({
|
|
1945
|
+
inputSell: '',
|
|
1946
|
+
inputBuy: '',
|
|
1947
|
+
selectSell: currencyRatesBuy?.[0]?.currency?.currency || Currency.RUB,
|
|
1948
|
+
selectBuy: currencyRatesSell?.[0]?.currency?.currency || Currency.USD,
|
|
1856
1949
|
});
|
|
1857
|
-
|
|
1950
|
+
const handleSetCalcState = useCallback((newState) => setCalcState((oldState) => ({ ...oldState, ...newState })), []);
|
|
1951
|
+
return (jsxs("div", { className: `grid gap-m pt-2xl ${className}`, children: [renderInput({
|
|
1952
|
+
placeholder: 'Хочу продать',
|
|
1953
|
+
rates: currencyRatesSell,
|
|
1954
|
+
selected: calcState.selectSell,
|
|
1955
|
+
setSelected: handleSelectSell(calcState, handleSetCalcState, currencyRatesSell),
|
|
1956
|
+
value: calcState.inputSell,
|
|
1957
|
+
setValue: (value) => handleInputSell(handleSetCalcState, currencyRatesSell)(value, calcState.selectSell, calcState.selectBuy),
|
|
1958
|
+
}), renderInput({
|
|
1959
|
+
placeholder: 'Получу',
|
|
1960
|
+
rates: currencyRatesBuy,
|
|
1961
|
+
selected: calcState.selectBuy,
|
|
1962
|
+
setSelected: handleSelectBuy(calcState, handleSetCalcState, currencyRatesBuy),
|
|
1963
|
+
value: calcState.inputBuy,
|
|
1964
|
+
setValue: (value) => handleInputBuy(handleSetCalcState, currencyRatesBuy)(value, calcState.selectBuy, calcState.selectSell),
|
|
1965
|
+
}), button?.text ? (jsx(Button, { className: "py-4", version: button?.version, ...button, children: button.text })) : null] }));
|
|
1966
|
+
});
|
|
1967
|
+
const handleSelectSell = (calcState, setCalcState, currencyRatesSell) => (value) => {
|
|
1968
|
+
setCalcState({ selectSell: value });
|
|
1969
|
+
callbackCurrencySelect({
|
|
1970
|
+
value,
|
|
1971
|
+
oppositeValue: calcState.selectBuy,
|
|
1972
|
+
handleConvert: (currencyFrom = calcState.selectSell, currencyTo = calcState.selectBuy) => {
|
|
1973
|
+
handleInputSell(setCalcState, currencyRatesSell)(calcState.inputSell, currencyFrom, currencyTo);
|
|
1974
|
+
},
|
|
1975
|
+
});
|
|
1976
|
+
};
|
|
1977
|
+
const handleSelectBuy = (calcState, setCalcState, currencyRatesBuy) => (value) => {
|
|
1978
|
+
setCalcState({ selectBuy: value });
|
|
1979
|
+
callbackCurrencySelect({
|
|
1980
|
+
value,
|
|
1981
|
+
oppositeValue: calcState.selectSell,
|
|
1982
|
+
handleConvert: (currencyTo = calcState.selectBuy, currencyFrom = calcState.selectSell) => handleInputBuy(setCalcState, currencyRatesBuy)(calcState.inputBuy, currencyTo, currencyFrom),
|
|
1983
|
+
});
|
|
1984
|
+
};
|
|
1985
|
+
const handleInputSell = (setCalcState, currencyRatesSell) => (value, currencyFrom, currencyTo) => {
|
|
1986
|
+
setCalcState({ inputSell: formatValue(value), selectBuy: currencyTo });
|
|
1987
|
+
const rate = currencyRatesSell.find((_) => _.currency?.currency === currencyTo)?.buyExchangeRate ||
|
|
1988
|
+
currencyRatesSell.find((_) => _.currency?.currency === currencyFrom)?.saleExchangeRate;
|
|
1989
|
+
if (rate) {
|
|
1990
|
+
setCalcState({
|
|
1991
|
+
inputBuy: String(calculateResult(value, rate, currencyFrom === Currency.RUB) || ''),
|
|
1992
|
+
});
|
|
1993
|
+
}
|
|
1994
|
+
};
|
|
1995
|
+
const handleInputBuy = (setCalcState, currencyRatesBuy) => (value, currencyTo, currencyFrom) => {
|
|
1996
|
+
setCalcState({ inputBuy: formatValue(value), selectSell: currencyFrom });
|
|
1997
|
+
const rate = currencyRatesBuy.find((_) => _.currency?.currency === currencyFrom)?.saleExchangeRate ||
|
|
1998
|
+
currencyRatesBuy.find((_) => _.currency?.currency === currencyTo)?.buyExchangeRate;
|
|
1999
|
+
if (rate) {
|
|
2000
|
+
setCalcState({
|
|
2001
|
+
inputSell: String(calculateResult(value, rate, currencyTo === Currency.RUB) || ''),
|
|
2002
|
+
});
|
|
2003
|
+
}
|
|
2004
|
+
};
|
|
2005
|
+
|
|
2006
|
+
const EXCHANGE_RATES_URL = '/api/v1/exchangerates';
|
|
2007
|
+
const REGION_URL$1 = '/api/v1/region';
|
|
2008
|
+
function useFetchExchangeRateData() {
|
|
2009
|
+
const { data } = useAsyncData(EXCHANGE_RATES_URL, fetchData);
|
|
2010
|
+
return data || {};
|
|
1858
2011
|
}
|
|
2012
|
+
const fetchData = async (urlExchangeRates) => {
|
|
2013
|
+
const region = await fetchRegion();
|
|
2014
|
+
const regionCode = region?.code || '000';
|
|
2015
|
+
const exchangeRates = await fetchExchangeRates(urlExchangeRates, regionCode);
|
|
2016
|
+
return { region, exchangeRates };
|
|
2017
|
+
};
|
|
2018
|
+
const fetchRegion = async () => {
|
|
2019
|
+
try {
|
|
2020
|
+
return await fetchJSONUnsafe(REGION_URL$1, { method: 'GET' });
|
|
2021
|
+
}
|
|
2022
|
+
catch (error) {
|
|
2023
|
+
console.log(error);
|
|
2024
|
+
return {};
|
|
2025
|
+
}
|
|
2026
|
+
};
|
|
2027
|
+
const fetchExchangeRates = async (url, regionCode) => {
|
|
2028
|
+
try {
|
|
2029
|
+
return await fetchJSONUnsafe(url + `?regionCode=${regionCode}`, {
|
|
2030
|
+
method: 'GET',
|
|
2031
|
+
});
|
|
2032
|
+
}
|
|
2033
|
+
catch (error) {
|
|
2034
|
+
console.log(error);
|
|
2035
|
+
return {};
|
|
2036
|
+
}
|
|
2037
|
+
};
|
|
2038
|
+
|
|
2039
|
+
const ExchangeRateTile = JSX(({ className = '', title = 'Курсы обмена валют', button, ...rest }) => {
|
|
2040
|
+
const { exchangeRates } = useFetchExchangeRateData();
|
|
2041
|
+
const currencyRates = getCurrencyRates(exchangeRates?.exchangeRate?.currencies);
|
|
2042
|
+
const currencyRatesBuy = currencyRates.filter((_) => _.buyExchangeRate);
|
|
2043
|
+
currencyRatesBuy.unshift({ currency: { currency: Currency.RUB } });
|
|
2044
|
+
const currencyRatesSell = currencyRates.filter((_) => _.saleExchangeRate);
|
|
2045
|
+
currencyRatesSell.push({ currency: { currency: Currency.RUB } });
|
|
2046
|
+
return (jsx(BlockWrapper, { className: style('box-border min-h-80', className), ...rest, children: jsx(BaseTile, { className: "h-full", title: jsx(Heading, { headingType: "h4", title: title, className: "whitespace-pre-wrap" }), children: jsxs("div", { className: "flex gap-6xl flex-wrap", children: [jsxs("div", { children: [currencyRates ? (jsx(CurrencyTable, { className: "mb-xl", exchangeCurrencyItems: currencyRates })) : null, jsx(CurrentLocation$1, { address: exchangeRates?.address })] }), currencyRates.length && currencyRatesBuy.length && currencyRatesSell.length ? (jsx(ExchangeCurrencyCalculator, { className: "grow", currencyRatesBuy: currencyRatesBuy, currencyRatesSell: currencyRatesSell, button: button })) : null] }) }) }));
|
|
2047
|
+
});
|
|
2048
|
+
const getCurrencyRates = (currencies) => {
|
|
2049
|
+
return currencies?.filter((_) => _?.currency?.id === 1 || _?.currency?.id === 2) || [];
|
|
2050
|
+
};
|
|
1859
2051
|
|
|
1860
2052
|
const linkListStyles = '';
|
|
1861
2053
|
|
|
1862
|
-
const LinkList = JSX(({ className = '', items }) => items?.length ? (jsx("ul", { className: style('flex flex-col
|
|
2054
|
+
const LinkList = JSX(({ className = '', items }) => items?.length ? (jsx("ul", { className: style('flex flex-col', linkListStyles, className), children: items.map(renderLinkListItem) })) : null);
|
|
1863
2055
|
const renderLinkListItem = (item, i) => {
|
|
1864
2056
|
const { text, ...linkProps } = item;
|
|
1865
|
-
return (jsx("li", { className: "list-none
|
|
2057
|
+
return (jsx("li", { className: "list-none my-xs", children: jsx("a", { className: "hover:text-primary-main font-light", role: "link", ...linkProps, children: text ? text : null }) }, `list_item_${String(i)}`));
|
|
1866
2058
|
};
|
|
1867
2059
|
|
|
1868
2060
|
const DefaultFoldButton = JSX(({ className = '', label, icon, dataTheme = '', disabled = false, onClick }) => {
|
|
@@ -1885,7 +2077,10 @@
|
|
|
1885
2077
|
const rollupItemStyles = '';
|
|
1886
2078
|
|
|
1887
2079
|
const RollupItem = JSX(({ className = '', label = 'Развернуть', labelIcon, labelIconBgVersion, isExpanded, isFoldButtonOnTop = true, version = 'primary', ...rest }) => {
|
|
1888
|
-
return (jsx(BlockWrapper, { className: style('w-full', rollupItemStyles, className), defaultPadding: "p-0", tag: "div", version: "transparent", ...rest, children: jsx(Foldable, { isFoldButtonOnTop: isFoldButtonOnTop, unfoldedByDefault: isExpanded, renderFoldableSection: ({ isUnfolded }) => (jsx(FoldableSection, { className: style('gap-5
|
|
2080
|
+
return (jsx(BlockWrapper, { className: style('w-full', rollupItemStyles, className), defaultPadding: "p-0", tag: "div", version: "transparent", ...rest, children: jsx(Foldable, { isFoldButtonOnTop: isFoldButtonOnTop, unfoldedByDefault: isExpanded, renderFoldableSection: ({ isUnfolded }) => (jsx(FoldableSection, { className: style('gap-5', foldableSectionStyles), isUnfolded: isUnfolded, children: renderChildren({
|
|
2081
|
+
...rest,
|
|
2082
|
+
extraProps: { className: 'w-full', padding: 'p-0' },
|
|
2083
|
+
}) })), renderFoldButton: ({ isUnfolded, onToggle }) => renderFoldButton({
|
|
1889
2084
|
version,
|
|
1890
2085
|
label,
|
|
1891
2086
|
labelIcon,
|
|
@@ -1908,12 +2103,12 @@
|
|
|
1908
2103
|
})) : (jsx(DefaultFoldButton, { label: label, icon: isUnfolded ? 'ArrowUpIcon' : 'ArrowDownIcon', onClick: onToggle }));
|
|
1909
2104
|
};
|
|
1910
2105
|
const renderPrimaryFoldButton = ({ label, labelIconBgVersion, icon, onToggle, labelIcon, }) => {
|
|
1911
|
-
return (jsxs("button", { className: style('border-none bg-transparent
|
|
2106
|
+
return (jsxs("button", { className: style('border-none bg-transparent flex justify-between items-center w-full group/button', labelIcon?.icon ? 'py-xs' : 'py-lg'), onClick: onToggle, children: [jsxs("div", { className: "flex items-center group-hover/button:text-primary-main gap-s", children: [renderRoundedIcon(labelIcon, labelIconBgVersion), label ? (jsx(Text, { size: "text-h6", font: "font-normal", children: label })) : null] }), icon ? jsx(Icon, { name: icon, iconVersion: rollupIconVersion, width: "24", height: "24" }) : null] }));
|
|
1912
2107
|
};
|
|
1913
2108
|
|
|
1914
|
-
const Contacts = JSX(({ className = '', items
|
|
1915
|
-
const renderContactsGroup = (item, i) => (jsxs("div", { className: "
|
|
1916
|
-
const renderContact = (item, index) => (jsxs("div", { className: "
|
|
2109
|
+
const Contacts = JSX(({ className = '', items }) => (jsxs("div", { className: className, children: [items?.length ? items.map(renderContactsGroup) : null, jsx(Button, { version: "primary", className: "w-full", href: "https://www.rshb.ru/feedback/question/", target: "_blank", ariaLabel: "\u041E\u0431\u0440\u0430\u0442\u043D\u0430\u044F \u0441\u0432\u044F\u0437\u044C", text: "\u041E\u0431\u0440\u0430\u0442\u043D\u0430\u044F \u0441\u0432\u044F\u0437\u044C" })] })));
|
|
2110
|
+
const renderContactsGroup = (item, i) => (jsxs("div", { className: "mb-m", children: [jsx("div", { className: "mb-m", children: jsx(Text, { size: "text-l", font: "font-medium", children: item?.title }) }), jsx("div", { children: item.items?.map(renderContact) })] }, String(i)));
|
|
2111
|
+
const renderContact = (item, index) => (jsxs("div", { className: "mb-m", children: [jsx("div", { children: renderText(item.type, item.text) }), jsx("div", { className: "mt-2xs text-s font-light text-secondary-text", children: item.description })] }, String(index)));
|
|
1917
2112
|
const renderText = (type, text = '') => {
|
|
1918
2113
|
switch (type) {
|
|
1919
2114
|
case 'tel':
|
|
@@ -1934,7 +2129,7 @@
|
|
|
1934
2129
|
return (jsx("a", { className: style(horizontalNavigationLinkStyles, className), href: href, target: target, onClick: onClick, children: text || `Документ ${index}` }));
|
|
1935
2130
|
});
|
|
1936
2131
|
|
|
1937
|
-
const HorizontalNavigation = JSX(({ title, links, className = '' }) => (jsxs("div", { className: className, children: [jsx(Text, { size: "text-
|
|
2132
|
+
const HorizontalNavigation = JSX(({ title, links, className = '' }) => (jsxs("div", { className: className, children: [jsx(Text, { size: "text-l", font: "font-normal", children: title }), links?.length ? (jsx("div", { className: "flex flex-col gap-lg mt-lg", children: links.map((_, i) => (jsx(HorizontalNavigationLink, { className: "text-l font-light", index: i, ..._ }, String(i)))) })) : null] })));
|
|
1938
2133
|
|
|
1939
2134
|
const TextInformationLink = JSX(({ className = '', index, ...rest }) => {
|
|
1940
2135
|
const link = useLink({ isRemote: true });
|
|
@@ -1942,17 +2137,15 @@
|
|
|
1942
2137
|
return (jsx("a", { className: `text-xs font-light text-secondary-text visited:text-secondary-text hover:text-primary-main inline-block no-underline max-w-[292px] ${className}`, href: href, target: target, onClick: onClick, children: text || `Документ ${index}` }));
|
|
1943
2138
|
});
|
|
1944
2139
|
|
|
1945
|
-
const TextInformation = JSX(({ className = '', links }) => (jsxs("div", { className: className, children: [jsx("div", { className: "pt-
|
|
2140
|
+
const TextInformation = JSX(({ className = '', links }) => (jsxs("div", { className: className, children: [jsx("div", { className: "pt-lg", children: jsx(Text, { size: "text-xs", font: "font-light", color: "text-secondary-text", children: `\u00a9\u00A02000-${new Date().getFullYear()}\u00A0АО \u00ABРоссельхозбанк\u00BB Генеральная лицензия Банка России \u2116\u00A03349 от\u00A012.08.2015\u00A0г.` }) }), links?.length ? (jsx("div", { className: "flex flex-col sm:flex-row justify-start items-start gap-x-lg gap-y-xs pt-lg", children: links.map((_, i) => (jsx(TextInformationLink, { index: i, ..._ }, String(i)))) })) : null] })));
|
|
1946
2141
|
|
|
1947
|
-
const Footer = JSX(({ className
|
|
1948
|
-
const
|
|
1949
|
-
|
|
1950
|
-
const { relatedEnterprises, contacts, socialMedia, mobileApps, horizontalNavigationTitle } = useSWRResource(projectSettings.FOOTER || 'footer', fallback);
|
|
1951
|
-
return (jsxs(BlockWrapper, { tag: "footer", className: className, defaultPadding: "px-4 py-6", ...rest, children: [jsx("div", { className: "mb-4 pb-5 border-b border-main-divider", children: sitemap.topItems?.map((item, i) => (jsx(RollupItem, { label: item?.text, labelIcon: item?.icon, children: jsx(LinkList, { items: item.items, className: "my-3" }) }, String(i)))) }), jsx(Contacts, { className: "overflow-hidden", items: contacts }), jsx(SocialMedia, { className: "mb-4", media: socialMedia }), mobileApps?.map(renderButton), jsx(HorizontalNavigation, { className: "pt-m pb-2xl border-y border-main-divider", title: horizontalNavigationTitle, links: relatedEnterprises }), jsx(TextInformation, {})] }));
|
|
2142
|
+
const Footer = JSX(({ className, sitemap, ...rest }) => {
|
|
2143
|
+
const { relatedEnterprises, contacts, socialMedia, mobileApps, horizontalNavigationTitle, documents, } = useSWRResource(projectSettings.FOOTER || 'footer', rest.options?.page?.fallback);
|
|
2144
|
+
return (jsxs(BlockWrapper, { tag: "footer", className: className, ...rest, children: [jsx("div", { className: "mb-lg pb-xs border-b border-main-divider", children: sitemap?.topItems?.map((item, i) => (jsx(RollupItem, { label: item?.text, labelIcon: item?.icon, children: jsx(LinkList, { items: item.items }) }, String(i)))) }), jsx(Contacts, { className: "overflow-hidden", items: contacts }), jsxs("div", { className: "mt-xl", children: [jsx(SocialMedia, { className: "mb-xl", media: socialMedia, buttonSize: "stretched", children: "\u0421\u043E\u0446\u0441\u0435\u0442\u0438" }), jsx(Text, { size: "text-s", font: "font-light", color: "text-secondary-text", children: "\u041C\u043E\u0431\u0438\u043B\u044C\u043D\u043E\u0435 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435" }), jsx("div", { className: "mt-xs", children: mobileApps?.map(renderButton) })] }), jsx(HorizontalNavigation, { className: "py-lg border-y border-main-divider", title: horizontalNavigationTitle, links: relatedEnterprises }), jsx(TextInformation, { links: documents })] }));
|
|
1952
2145
|
});
|
|
1953
2146
|
const renderButton = ({ href = '/' }, i) => {
|
|
1954
2147
|
const { label } = findIconByHref(href);
|
|
1955
|
-
return (jsx(Button, { className: "w-full mb-
|
|
2148
|
+
return (jsx(Button, { className: "w-full mb-lg", text: label, version: "secondary", href: href, target: "_blank" }, String(i)));
|
|
1956
2149
|
};
|
|
1957
2150
|
|
|
1958
2151
|
const ICON_VERSION_MAP = {
|
|
@@ -1995,19 +2188,37 @@
|
|
|
1995
2188
|
return (jsxs("div", { className: "flex items-center justify-between w-full", children: [isRootLocation ? (jsx(Logo, { bgColor: bgColor, logo: logo })) : (jsxs(Button, { className: "flex items-center text-l", ariaLabel: "\u0412\u0435\u0440\u043D\u0443\u0442\u044C\u0441\u044F \u043D\u0430\u0437\u0430\u0434", onClick: onClick, children: [jsx(Img, { className: "w-6 h-6", image: {
|
|
1996
2189
|
icon: 'ChevronLeft',
|
|
1997
2190
|
iconVersion: 'black',
|
|
1998
|
-
} }), "\u0412\u0435\u0440\u043D\u0443\u0442\u044C\u0441\u044F \u043D\u0430\u0437\u0430\u0434"] })), internetBankUrl ? (jsx(Button, { href: internetBankUrl, ariaLabel: "\u0412\u043E\u0439\u0442\u0438", target: "_blank", className: style('p-
|
|
2191
|
+
} }), "\u0412\u0435\u0440\u043D\u0443\u0442\u044C\u0441\u044F \u043D\u0430\u0437\u0430\u0434"] })), internetBankUrl ? (jsx(Button, { href: internetBankUrl, ariaLabel: "\u0412\u043E\u0439\u0442\u0438", target: "_blank", className: style('p-s my-2xs text-s whitespace-nowrap text-primary-main hover:text-primary-hover', BUTTON_STYLE[version === 'transparent' ? 'transparent' : 'default']), children: "\u0412\u043E\u0439\u0442\u0438" })) : null] }));
|
|
1999
2192
|
});
|
|
2000
2193
|
|
|
2001
2194
|
const BG_COLOR_TO_BLOCK_VERSION = {
|
|
2002
2195
|
'bg-white': 'primary',
|
|
2003
2196
|
transparent: 'transparent',
|
|
2004
2197
|
};
|
|
2005
|
-
const Header = JSX(({ bgColor = 'bg-white', version = BG_COLOR_TO_BLOCK_VERSION[bgColor], ...rest }) => {
|
|
2006
|
-
const
|
|
2007
|
-
const { logo, internetBankUrl } = useSWRResource(projectSettings.SITEMAP || 'sitemap', fallback);
|
|
2198
|
+
const Header = JSX(({ bgColor = 'bg-white', version = BG_COLOR_TO_BLOCK_VERSION[bgColor], sitemap, ...rest }) => {
|
|
2199
|
+
const { logo, internetBankUrl } = sitemap || {};
|
|
2008
2200
|
return (jsx(BlockWrapper, { tag: "header", defaultPadding: "", version: version, ...rest, children: jsx("div", { className: "container px-4 py-2xs box-border", children: jsx(HeaderTop, { bgColor: bgColor, logo: logo, internetBankUrl: internetBankUrl, version: version, ...rest }) }) }));
|
|
2009
2201
|
});
|
|
2010
2202
|
|
|
2203
|
+
const gapStyles = {
|
|
2204
|
+
XXL: 'gap-6xl',
|
|
2205
|
+
XL: 'gap-5xl',
|
|
2206
|
+
L: 'gap-3xl',
|
|
2207
|
+
M: 'gap-m',
|
|
2208
|
+
S: 'gap-xs',
|
|
2209
|
+
XS: 'gap-2xs',
|
|
2210
|
+
'': '',
|
|
2211
|
+
};
|
|
2212
|
+
|
|
2213
|
+
const VerticalLayout = JSX(({ className = '', gap = '', isPadding = false, isInnerPadding = true, version = 'transparent', isTheme = false, ...rest }) => (jsx(BlockWrapper, { className: style('relative flex flex-col', gapStyles[gap], className), defaultPadding: isPadding ? 'p-6xl' : '', version: version, isTheme: isTheme, ...rest, children: renderChildren({
|
|
2214
|
+
...rest,
|
|
2215
|
+
extraProps: { className: 'w-full', padding: isInnerPadding ? '' : 'p-0' },
|
|
2216
|
+
}) })));
|
|
2217
|
+
VerticalLayout.childrenTypes = [];
|
|
2218
|
+
|
|
2219
|
+
const HorizontalLayout = JSX((props) => jsx(VerticalLayout, { ...props }));
|
|
2220
|
+
HorizontalLayout.childrenTypes = [];
|
|
2221
|
+
|
|
2011
2222
|
const ImgBlock = JSX((props) => {
|
|
2012
2223
|
const { className, image, ...rest } = props;
|
|
2013
2224
|
return (jsx(BlockWrapper, { className: className, defaultPadding: "p-0", ...rest, children: jsx(Img, { image: image }) }));
|
|
@@ -2046,7 +2257,7 @@
|
|
|
2046
2257
|
};
|
|
2047
2258
|
const LinkDocs = JSX(({ className = '', title, description, align = 'text-center', documents, icon = { icon: 'DocIcon' }, columnsMode = 'double', ...rest }) => {
|
|
2048
2259
|
const router = useRouter();
|
|
2049
|
-
return (jsxs(BlockWrapper, { className: className, defaultPadding: "p-6xl", ...rest, children: [jsx(Headline, {
|
|
2260
|
+
return (jsxs(BlockWrapper, { className: className, defaultPadding: "p-6xl", ...rest, children: [jsx(Headline, { title: title, description: description, align: align, headlineVersion: "M", as: "h2", isPadding: false }), documents?.length ? (jsx("div", { className: style('mt-5 sm:mt-8 flex flex-col gap-6', linkColumnsModeStyleMap[columnsMode]), role: "list", children: documents.map(renderLinkDocItem(router, columnsMode, icon)) })) : null] }));
|
|
2050
2261
|
});
|
|
2051
2262
|
const renderLinkDocItem = (router, columnsMode, icon) => (docBlockDef, i) => {
|
|
2052
2263
|
const href = docBlockDef?.docType === 'Attachment'
|
|
@@ -2055,7 +2266,7 @@
|
|
|
2055
2266
|
const fileSize = docBlockDef?.docType === 'Attachment'
|
|
2056
2267
|
? formatBytes(docBlockDef?.attachment?.fileSize || 0)
|
|
2057
2268
|
: docBlockDef?.fileSize;
|
|
2058
|
-
return (jsx("div", { className: columnsMode === 'double' ? 'basis-[calc(50%-20px)]' : '', role: "listitem", children: jsx(LinkDocItem, {
|
|
2269
|
+
return (jsx("div", { className: columnsMode === 'double' ? 'basis-[calc(50%-20px)]' : '', role: "listitem", children: jsx(LinkDocItem, { text: docBlockDef?.text, target: docBlockDef?.target, href: href, fileSize: fileSize, icon: icon ? jsx(Img, { className: linkIconStyle, image: icon, width: "24", height: "24" }) : null }) }, String(i)));
|
|
2059
2270
|
};
|
|
2060
2271
|
|
|
2061
2272
|
/**
|
|
@@ -2067,22 +2278,14 @@
|
|
|
2067
2278
|
right: 'text-right',
|
|
2068
2279
|
};
|
|
2069
2280
|
|
|
2070
|
-
const
|
|
2071
|
-
start: 'self-start',
|
|
2072
|
-
center: 'self-center',
|
|
2073
|
-
end: 'self-end',
|
|
2074
|
-
};
|
|
2075
|
-
const BaseTile = JSX(({ className, defaultPadding, padding, title = '', insetTitle = '', buttons, leftImage, rightImage, imageAlign, backImage, children, }) => (jsxs("div", { className: style('relative flex flex-col gap-3xl font-sans overflow-hidden', padding || defaultPadding, className), children: [backImage ? jsx("div", { className: "absolute bottom-0 right-0 z-0", children: backImage }) : null, title ? jsx("div", { className: "relative", children: title }) : null, jsxs("div", { className: "grow relative flex flex-wrap sm:flex-nowrap justify-between items-stretch gap-3xl", children: [renderImageContainer(leftImage, { imageAlign }), jsxs("div", { className: style('flex flex-col gap-3xl max-w-[600px] xl:max-w-[728px]', leftImage ? '' : 'grow'), children: [insetTitle, jsx("div", { className: "grow", children: children }), buttons] }), renderImageContainer(rightImage, { className: '-order-1 sm:order-1', imageAlign })] })] })));
|
|
2076
|
-
const renderImageContainer = (image, { className, imageAlign }) => image ? (jsx("div", { className: style('flex-shrink-0', imageAlign && imageAlignmentMap[imageAlign], className), children: image })) : null;
|
|
2077
|
-
|
|
2078
|
-
const renderDescription$1 = (description) => description ? (jsx("div", { className: "mb-5 pt-3xs sm:mb-0 sm:pt-0", children: jsx(Text, { size: "text-xl", "font-weight": "light", children: description }) })) : null;
|
|
2281
|
+
const renderDescription$1 = (description) => description ? (jsx("div", { className: "mb-lg pt-3xs", children: jsx(Text, { size: "text-xl", "font-weight": "light", children: description }) })) : null;
|
|
2079
2282
|
|
|
2080
2283
|
const renderList$1 = (items) => {
|
|
2081
2284
|
return items?.length ? (jsx(List, { items: items, className: "text-l font-light mb-xs last:mb-0" })) : (jsx("span", { className: "text-m font-light text-secondary-text", children: "\u041D\u0430\u0432\u0435\u0434\u0438\u0442\u0435 \u043A\u0430\u043C\u0435\u0440\u0443 \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0430 \u043D\u0430 QR-\u043A\u043E\u0434 \u0438 \u0441\u043A\u0430\u0447\u0430\u0439\u0442\u0435 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435" }));
|
|
2082
2285
|
};
|
|
2083
2286
|
|
|
2084
2287
|
const MobileAppTile = JSX(({ className, padding, alignTitle = 'left', buttons = [], description, headingType = 'h4', image, items, qr, title = 'Мобильное приложение', version = 'primary', ...rest }) => {
|
|
2085
|
-
const containerStyle = version === 'secondary' ? 'p-m min-w-
|
|
2288
|
+
const containerStyle = version === 'secondary' ? 'p-m min-w-32' : 'min-w-24';
|
|
2086
2289
|
return (jsx(BlockWrapper, { className: style('min-h-80', className), padding: "p-0", version: version, ...rest, children: jsxs(BaseTile, { className: "h-full", padding: padding, defaultPadding: "p-6xl", title: title ? (jsx(Heading, { headingType: headingType, title: title, className: style('whitespace-pre-wrap', AlignText[alignTitle]) })) : null, buttons: renderButtonsSection(buttons, { isVertical: buttons.length > 4 }), children: [renderDescription$1(description), jsxs("div", { className: "flex flex-1 flex-wrap gap-m items-center", children: [qr?.src ? (jsx("div", { className: style('flex justify-center bg-white rounded-md', containerStyle), children: jsx(Img, { className: "w-fit", image: qr }) })) : null, renderList$1(items), image?.src ? jsx(Img, { image: image }) : null] })] }) }));
|
|
2087
2290
|
});
|
|
2088
2291
|
|
|
@@ -2169,6 +2372,387 @@
|
|
|
2169
2372
|
return (jsx(BlockWrapper, { defaultPadding: "p-0", ...rest, children: jsx(RichText, { __html: __html, richVersion: richVersion }) }));
|
|
2170
2373
|
});
|
|
2171
2374
|
|
|
2375
|
+
const mockPoints = [
|
|
2376
|
+
{ coords: [55.77, 37.46], text: 'Трактир' },
|
|
2377
|
+
{ coords: [55.66, 37.48], text: 'Трактор' },
|
|
2378
|
+
{ coords: [55.65, 37.42], text: 'Ресторан' },
|
|
2379
|
+
{ coords: [55.64, 37.54], text: 'Музей' },
|
|
2380
|
+
{ coords: [55.54, 37.52], text: 'Библиотека' },
|
|
2381
|
+
{ coords: [55.53, 37.56], text: 'Школа' },
|
|
2382
|
+
{ coords: [55.61, 37.61], text: 'Аптека' },
|
|
2383
|
+
{ coords: [55.8, 37.58], text: 'Бар' },
|
|
2384
|
+
{ coords: [55.71, 37.35], text: 'Институт' },
|
|
2385
|
+
{ coords: [55.74, 37.57], text: 'Университет' },
|
|
2386
|
+
{ coords: [55.58, 37.69], text: 'Больница' },
|
|
2387
|
+
{ coords: [55.57, 37.7], text: 'Цирк' },
|
|
2388
|
+
{ coords: [55.55, 37.64], text: 'Магазин' },
|
|
2389
|
+
{ coords: [55.5, 37.75], text: 'Булочная' },
|
|
2390
|
+
{ coords: [55.81, 37.73], text: 'Полиция' },
|
|
2391
|
+
{ coords: [55.73, 37.68], text: 'Салон красоты' },
|
|
2392
|
+
{ coords: [55.86, 37.76], text: 'Баня' },
|
|
2393
|
+
{ coords: [55.38, 37.69], text: 'Гараж' },
|
|
2394
|
+
{ coords: [55.91, 37.5], text: 'Дом' },
|
|
2395
|
+
{ coords: [55.62, 37.32], text: 'Прачечная' },
|
|
2396
|
+
{ coords: [55.85, 37.41], text: 'Стадион' },
|
|
2397
|
+
{ coords: [55.67, 37.24], text: 'Вокзал' },
|
|
2398
|
+
{ coords: [55.79, 37.41], text: 'Кафе' },
|
|
2399
|
+
];
|
|
2400
|
+
|
|
2401
|
+
function renderClusterer(yandexMaps, map, points) {
|
|
2402
|
+
map.geoObjects.removeAll();
|
|
2403
|
+
const clusterIconContentLayout = yandexMaps.templateLayoutFactory.createClass('<div style="margin-top: -3px;">{{properties.geoObjects.length}}</div>');
|
|
2404
|
+
const clusterer = new yandexMaps.Clusterer({
|
|
2405
|
+
clusterIcons: [
|
|
2406
|
+
{
|
|
2407
|
+
href: 'icons/MapMarkerClusterIcon.svg',
|
|
2408
|
+
size: [78, 84],
|
|
2409
|
+
offset: [-35, -50],
|
|
2410
|
+
},
|
|
2411
|
+
],
|
|
2412
|
+
clusterIconContentLayout,
|
|
2413
|
+
clusterHideIconOnBalloonOpen: false,
|
|
2414
|
+
geoObjectHideIconOnBalloonOpen: false,
|
|
2415
|
+
});
|
|
2416
|
+
const geoObjects = points.map((point) => new yandexMaps.Placemark(point, {}, {
|
|
2417
|
+
iconLayout: 'default#image',
|
|
2418
|
+
iconImageHref: 'icons/MapMarkerSingleIcon.svg',
|
|
2419
|
+
iconImageSize: [78, 84],
|
|
2420
|
+
iconImageOffset: [-35, -50],
|
|
2421
|
+
}));
|
|
2422
|
+
clusterer.add(geoObjects);
|
|
2423
|
+
map.geoObjects.add(clusterer);
|
|
2424
|
+
// TODO: Fix
|
|
2425
|
+
// @ts-ignore
|
|
2426
|
+
map.setBounds(yandexMaps.util.bounds.fromPoints(points)).then(() => {
|
|
2427
|
+
if (map.getZoom() > 10) {
|
|
2428
|
+
map.setZoom(10);
|
|
2429
|
+
}
|
|
2430
|
+
});
|
|
2431
|
+
}
|
|
2432
|
+
|
|
2433
|
+
const styles$3 = {
|
|
2434
|
+
focus: 'focus:border-primary-text focus:border',
|
|
2435
|
+
hover: 'hover:bg-primary-hover',
|
|
2436
|
+
active: 'active:bg-primary-active',
|
|
2437
|
+
border: 'border border-transparent rounded-md',
|
|
2438
|
+
position: 'flex items-center justify-center',
|
|
2439
|
+
font: 'text-center font-sans',
|
|
2440
|
+
};
|
|
2441
|
+
const renderOpenMap = (pointsCenter) => {
|
|
2442
|
+
const getYandexMapUrl = () => {
|
|
2443
|
+
return `https://yandex.ru/maps/?ll=${[pointsCenter[1], pointsCenter[0]]}&z=10&l=map`;
|
|
2444
|
+
};
|
|
2445
|
+
return (jsx("a", { className: `select-none cursor-pointer px-9 h-12 bg-primary-main text-white ${Object.values(styles$3).join(' ')}`, href: getYandexMapUrl(), target: "_blank", children: "\u041E\u0442\u043A\u0440\u044B\u0442\u044C \u043D\u0430 \u043A\u0430\u0440\u0442\u0435" }));
|
|
2446
|
+
};
|
|
2447
|
+
|
|
2448
|
+
const styles$2 = {
|
|
2449
|
+
border: 'border border-transparent rounded-md',
|
|
2450
|
+
position: 'relative flex items-center',
|
|
2451
|
+
font: 'text-center font-sans',
|
|
2452
|
+
shadow: 'shadow-[0_4px_25px_rgba(0,0,0,0.07)]',
|
|
2453
|
+
};
|
|
2454
|
+
const renderSearchField = (points, yandexMaps, updatePointsToRender) => {
|
|
2455
|
+
const onChange = (e) => {
|
|
2456
|
+
const value = e.target?.value ? e.target?.value.toLowerCase() : '';
|
|
2457
|
+
if (value) {
|
|
2458
|
+
const searchResult = points.filter((_) => {
|
|
2459
|
+
const textLowerCase = _.text.toLowerCase();
|
|
2460
|
+
if (textLowerCase.indexOf(value) > -1) {
|
|
2461
|
+
return _;
|
|
2462
|
+
}
|
|
2463
|
+
return null;
|
|
2464
|
+
});
|
|
2465
|
+
updatePointsToRender(searchResult);
|
|
2466
|
+
}
|
|
2467
|
+
else {
|
|
2468
|
+
updatePointsToRender(null);
|
|
2469
|
+
}
|
|
2470
|
+
};
|
|
2471
|
+
return (jsxs("div", { className: `${Object.values(styles$2).join(' ')} bg-white py-s pl-5xl pr-m w-full`, children: [jsx(Icon, { name: "LoupeIcon", iconVersion: "black", width: "20", height: "20", className: "absolute left-4" }), jsx("input", { type: "text", placeholder: "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0430\u0434\u0440\u0435\u0441 \u0438\u043B\u0438 \u043C\u0435\u0442\u0440\u043E", onChange: onChange, className: "border-0 focus:border-0 outline-0 w-full" })] }));
|
|
2472
|
+
};
|
|
2473
|
+
|
|
2474
|
+
const styles$1 = {
|
|
2475
|
+
focus: 'focus:border-primary-text focus:border',
|
|
2476
|
+
hover: 'hover:bg-primary-hover',
|
|
2477
|
+
active: 'active:bg-primary-active',
|
|
2478
|
+
border: 'border border-transparent rounded-md',
|
|
2479
|
+
position: 'absolute flex items-center justify-center',
|
|
2480
|
+
font: 'text-center font-sans',
|
|
2481
|
+
};
|
|
2482
|
+
const renderUserGeolocation = (map, yandexMaps, className) => {
|
|
2483
|
+
const setUserGeoLocation = () => {
|
|
2484
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
2485
|
+
// @ts-ignore
|
|
2486
|
+
yandexMaps.geolocation
|
|
2487
|
+
.get({
|
|
2488
|
+
provider: 'yandex',
|
|
2489
|
+
autoReverseGeocode: true,
|
|
2490
|
+
mapStateAutoApply: true,
|
|
2491
|
+
})
|
|
2492
|
+
.then(function (result) {
|
|
2493
|
+
map.geoObjects.add(result.geoObjects);
|
|
2494
|
+
});
|
|
2495
|
+
};
|
|
2496
|
+
return (jsx("div", { className: `select-none cursor-pointer py-4 w-12 bg-white ${Object.values(styles$1).join(' ')} ${className}`, onClick: setUserGeoLocation, children: jsx(Icon, { name: "UserGeoLocationIcon", width: "20", height: "16" }) }));
|
|
2497
|
+
};
|
|
2498
|
+
|
|
2499
|
+
const getNS = (_) => globalThis[_];
|
|
2500
|
+
function useExternalNS(namespaceName, url) {
|
|
2501
|
+
const [externalNS, setExternalNS] = useState();
|
|
2502
|
+
const setNS = useCallback(() => setExternalNS(getNS(namespaceName)), [namespaceName]);
|
|
2503
|
+
useEffect(() => {
|
|
2504
|
+
const script = document.getElementById(url);
|
|
2505
|
+
if (script) {
|
|
2506
|
+
if (getNS(namespaceName)) {
|
|
2507
|
+
setNS();
|
|
2508
|
+
}
|
|
2509
|
+
else {
|
|
2510
|
+
script.addEventListener('load', setNS);
|
|
2511
|
+
return () => {
|
|
2512
|
+
script.removeEventListener('load', setNS);
|
|
2513
|
+
};
|
|
2514
|
+
}
|
|
2515
|
+
}
|
|
2516
|
+
else {
|
|
2517
|
+
const newScript = document.createElement('script');
|
|
2518
|
+
newScript.src = url;
|
|
2519
|
+
newScript.async = true;
|
|
2520
|
+
newScript.id = url;
|
|
2521
|
+
newScript.addEventListener('load', setNS);
|
|
2522
|
+
document.head.appendChild(newScript);
|
|
2523
|
+
return () => {
|
|
2524
|
+
document.head.removeChild(newScript);
|
|
2525
|
+
setExternalNS(undefined);
|
|
2526
|
+
};
|
|
2527
|
+
}
|
|
2528
|
+
return undefined;
|
|
2529
|
+
}, [namespaceName, url]);
|
|
2530
|
+
return externalNS;
|
|
2531
|
+
}
|
|
2532
|
+
|
|
2533
|
+
const YMAPS_NAMESPACE = 'ymaps';
|
|
2534
|
+
const useYandexMaps = () => {
|
|
2535
|
+
const url = `https://api-maps.yandex.ru/2.1/?apikey=${projectSettings.YANDEX_MAP_API_KEY || ''}&lang=ru_RU`;
|
|
2536
|
+
return useExternalNS(YMAPS_NAMESPACE, url);
|
|
2537
|
+
};
|
|
2538
|
+
|
|
2539
|
+
const styles = {
|
|
2540
|
+
focus: 'focus:border-primary-text focus:border',
|
|
2541
|
+
hover: 'hover:bg-primary-hover',
|
|
2542
|
+
active: 'active:bg-primary-active',
|
|
2543
|
+
border: 'border-b border-b-2 border-gray last:border-0',
|
|
2544
|
+
position: 'relative flex items-center justify-center',
|
|
2545
|
+
font: 'text-center font-sans text-l',
|
|
2546
|
+
};
|
|
2547
|
+
// TODO: Добавить метод определения центральной точки
|
|
2548
|
+
const ZoomButton = JSX(({ yandexMaps, direction = 'in' }) => {
|
|
2549
|
+
const iconName = direction === 'in' ? 'PlusIcon' : 'MinusIcon';
|
|
2550
|
+
const changeZoom = () => {
|
|
2551
|
+
const currentZoom = yandexMaps.current.getZoom();
|
|
2552
|
+
const newZoom = direction === 'in' ? currentZoom + 1 : currentZoom - 1;
|
|
2553
|
+
yandexMaps.current.setZoom(newZoom, { checkZoomRange: true });
|
|
2554
|
+
};
|
|
2555
|
+
return (jsx("div", { onClick: changeZoom, className: `${Object.values(styles).join(' ')} bg-white select-none cursor-pointer w-12 h-12`, children: jsx(Icon, { name: iconName, width: "20", height: "16" }) }));
|
|
2556
|
+
});
|
|
2557
|
+
|
|
2558
|
+
const FULLSCREEN_STYLES = {
|
|
2559
|
+
border: 'border border-transparent rounded-md ',
|
|
2560
|
+
position: 'absolute flex items-center justify-center',
|
|
2561
|
+
size: 'w-12 h-12',
|
|
2562
|
+
focus: 'focus:border-primary-text focus:border',
|
|
2563
|
+
font: 'text-center font-sans',
|
|
2564
|
+
active: 'active:bg-primary-active',
|
|
2565
|
+
hover: 'hover:bg-primary-hover',
|
|
2566
|
+
other: 'select-none cursor-pointer',
|
|
2567
|
+
};
|
|
2568
|
+
// TODO: Поле для поиска: невыяснено среди каких данных делать поиск (искать в имени офиса, в адресе, метро и т.д.).
|
|
2569
|
+
// Сейчас реализован поиск среди тестовых данных
|
|
2570
|
+
// TODO: Также выяснить что делать когда ничего не найдено
|
|
2571
|
+
// TODO: На макетах также когда есть поле поиска нет кнопки открыть на карте.
|
|
2572
|
+
const YandexMap = JSX(({ points, className = '', zoom = 5, showSearchField = false }) => {
|
|
2573
|
+
const map = useRef(null);
|
|
2574
|
+
const yandexMaps = useYandexMaps();
|
|
2575
|
+
const [isFullScreen, setIsFullScreen] = useState();
|
|
2576
|
+
const [pointsToRender, setPointsToRender] = useState(normalizePoints(mockPoints));
|
|
2577
|
+
const pointsCenter = getCenterPoint(points);
|
|
2578
|
+
useEffect(() => {
|
|
2579
|
+
if (!map?.current) {
|
|
2580
|
+
yandexMaps?.ready(() => {
|
|
2581
|
+
map.current = new yandexMaps.Map('map', {
|
|
2582
|
+
center: pointsCenter,
|
|
2583
|
+
zoom,
|
|
2584
|
+
controls: [],
|
|
2585
|
+
suppressMapOpenBlock: true,
|
|
2586
|
+
});
|
|
2587
|
+
renderClusterer(yandexMaps, map.current, pointsToRender);
|
|
2588
|
+
});
|
|
2589
|
+
}
|
|
2590
|
+
}, [yandexMaps, map, pointsToRender]);
|
|
2591
|
+
useEffect(() => {
|
|
2592
|
+
if (map.current && pointsToRender && yandexMaps) {
|
|
2593
|
+
const newPoints = pointsToRender.length < 1 ? normalizePoints(mockPoints) : pointsToRender;
|
|
2594
|
+
renderClusterer(yandexMaps, map.current, newPoints);
|
|
2595
|
+
}
|
|
2596
|
+
}, [map, pointsToRender, yandexMaps]);
|
|
2597
|
+
if (!yandexMaps) {
|
|
2598
|
+
return null;
|
|
2599
|
+
}
|
|
2600
|
+
const toggleFullscreen = () => {
|
|
2601
|
+
const container = map.current.container;
|
|
2602
|
+
if (!isFullScreen) {
|
|
2603
|
+
container.enterFullscreen();
|
|
2604
|
+
}
|
|
2605
|
+
else {
|
|
2606
|
+
container.exitFullscreen();
|
|
2607
|
+
}
|
|
2608
|
+
setIsFullScreen(container.isFullscreen());
|
|
2609
|
+
};
|
|
2610
|
+
const zIndex = isFullScreen ? 'z-[100000]' : 'z-10';
|
|
2611
|
+
const updatePointsToRender = (newPoints) => {
|
|
2612
|
+
if (newPoints) {
|
|
2613
|
+
const normalizedPoints = normalizePoints(newPoints);
|
|
2614
|
+
setPointsToRender(normalizedPoints);
|
|
2615
|
+
}
|
|
2616
|
+
};
|
|
2617
|
+
return (jsxs("div", { id: "map", className: `${isFullScreen ? '' : 'relative'} w-full ${className}`, children: [jsx("div", { className: `absolute flex left-2 top-4 w-1/2 ${zIndex}`, children: showSearchField
|
|
2618
|
+
? renderSearchField(mockPoints, yandexMaps, updatePointsToRender)
|
|
2619
|
+
: renderOpenMap(pointsCenter) }), jsx("div", { className: `${Object.values(FULLSCREEN_STYLES).join(' ')} ${zIndex} right-2 top-4 bg-white`, onClick: toggleFullscreen, children: jsx(Icon, { name: "FullScreenIcon", width: "16", height: "16" }) }), jsxs("div", { className: `absolute right-2 top-52 z-10 w-12 overflow-hidden border border-transparent rounded-md ${zIndex}`, children: [jsx(ZoomButton, { yandexMaps: map }), jsx(ZoomButton, { yandexMaps: map, direction: "out" })] }), renderUserGeolocation(map.current, yandexMaps, `right-2 top-80 ${zIndex}`)] }));
|
|
2620
|
+
});
|
|
2621
|
+
const getCenterPoint = (points) => [
|
|
2622
|
+
getArraySumAndAverage(mapByIndex(points, 0)),
|
|
2623
|
+
getArraySumAndAverage(mapByIndex(points, 1)),
|
|
2624
|
+
];
|
|
2625
|
+
const mapByIndex = (arr, index) => arr.map((a) => a[index]);
|
|
2626
|
+
const getArraySumAndAverage = (arr) => arr.reduce((a, b) => a + b) / arr.length;
|
|
2627
|
+
const normalizePoints = (points) => (points ? points.map((_) => _.coords) : null);
|
|
2628
|
+
|
|
2629
|
+
const WrapperSelect = JSX(({ data, fieldLabel, fieldValue, selected, placeholder = '', setSelected, label }) => {
|
|
2630
|
+
const dataFormat = data
|
|
2631
|
+
.filter(Boolean)
|
|
2632
|
+
.map((_) => ({ key: _?.[fieldValue || fieldLabel], text: _?.[fieldLabel] }));
|
|
2633
|
+
const selectedObj = dataFormat.find((_) => _.key === selected);
|
|
2634
|
+
return (jsx(Select, { options: dataFormat, label: label, placeholder: placeholder || selected, onChange: (_) => setSelected(_.key), value: selectedObj }));
|
|
2635
|
+
});
|
|
2636
|
+
|
|
2637
|
+
const RegionsAndBranches = JSX(({ regions = [], selectedRegion, onSelectedRegion: onSelectedRegion, branches = [], selectedBranch, onSelectedBranch, }) => (jsxs("div", { className: "flex flex-col sm:flex-row gap-m order-1", children: [jsx("div", { className: "flex-1 min-w-0", children: jsx(WrapperSelect, { data: regions, fieldValue: "code", fieldLabel: "name", selected: selectedRegion, setSelected: onSelectedRegion, label: "\u0420\u0435\u0433\u0438\u043E\u043D" }) }), jsx("div", { className: "flex-1 min-w-0", children: jsx(WrapperSelect, { data: branches, fieldValue: "branchCode", fieldLabel: "address", selected: selectedBranch, setSelected: onSelectedBranch, label: "\u041E\u0442\u0434\u0435\u043B\u0435\u043D\u0438\u0435", placeholder: "\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u043E\u0442\u0434\u0435\u043B\u0435\u043D\u0438\u0435" }) })] })));
|
|
2638
|
+
|
|
2639
|
+
const Radio = JSX(({ name, text, value, checked, onChange, className }) => (jsx("div", { className: className, children: jsxs("label", { className: "font-sans flex items-center relative cursor-pointer", children: [jsx("input", { className: "appearance-none flex justify-center items-center shrink-0 w-5 h-5 border border-gray hover:border-primary-hover\n checked:border-2 checked:!border-primary-main focus:checked:border-primary-main focus:border-primary-text active:border-primary-text\n after:block after:w-2.5 after:h-2.5 after:rounded-full checked:after:bg-primary-main outline-none rounded-full cursor-pointer", type: "radio", value: value, name: name, checked: checked, onChange: (_) => onChange(_.target.value) }), text ? jsx("span", { className: "text-primary-text ml-3 cursor-pointer", children: text }) : null] }) })));
|
|
2640
|
+
|
|
2641
|
+
const RadioButtons = JSX(({ className }) => {
|
|
2642
|
+
const [selectedOption, setSelectedOption] = useState('option2');
|
|
2643
|
+
const onChange = useCallback((_) => setSelectedOption(_), []);
|
|
2644
|
+
return (jsxs("div", { className: style('order-4', className), children: [jsx(Radio, { className: "mb-xs", name: "contractType", text: "\u041F\u0440\u043E\u0441\u0442\u043E\u0435 \u0445\u0440\u0430\u043D\u0435\u043D\u0438\u0435", value: "option1", checked: selectedOption === 'option1', onChange: onChange }), jsx(Radio, { name: "contractType", text: "\u0421\u0434\u0435\u043B\u043A\u0430 \u0441 \u043D\u0435\u0434\u0432\u0438\u0436\u0438\u043C\u043E\u0441\u0442\u044C\u044E", value: "option2", checked: selectedOption === 'option2', onChange: onChange })] }));
|
|
2645
|
+
});
|
|
2646
|
+
|
|
2647
|
+
const ITEMS = ['От 1 дня', 'До 365 дней'];
|
|
2648
|
+
const MIN = 1;
|
|
2649
|
+
const MAX = 365;
|
|
2650
|
+
const RentalPeriod = JSX(({ days, setDays }) => (jsxs("div", { className: "order-1", children: [jsx(Text, { size: "text-m", font: "font-light", children: "\u0421\u0440\u043E\u043A \u0430\u0440\u0435\u043D\u0434\u044B" }), jsx(InputRange, { min: MIN, max: MAX, value: days, items: ITEMS, onChange: setDays })] })));
|
|
2651
|
+
|
|
2652
|
+
const SafeBoxCases = JSX(({ caseVolumes = [], selectedCaseVolume, onSelectedCaseVolume, safeBoxCases = [], selectedBoxSize, onSelectedBoxSize, }) => {
|
|
2653
|
+
return (jsxs("div", { className: "flex flex-col sm:flex-row gap-4 order-1", children: [jsx("div", { className: "flex-1 min-w-0", children: jsx(WrapperSelect, { data: caseVolumes, fieldLabel: "volume", selected: selectedCaseVolume, setSelected: onSelectedCaseVolume, label: "\u0420\u0430\u0437\u043C\u0435\u0440", placeholder: "\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0440\u0430\u0437\u043C\u0435\u0440" }) }), jsx("div", { className: "flex-1 min-w-0", children: jsx(WrapperSelect, { data: safeBoxCases, fieldLabel: "safeBoxCasesSize", selected: selectedBoxSize, setSelected: onSelectedBoxSize, label: "\u041F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u044B \u044F\u0447\u0435\u0439\u043A\u0438, \u043C\u043C (\u0412\u0445\u0428\u0445\u0414)", placeholder: "\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 \u044F\u0447\u0435\u0439\u043A\u0438" }) })] }));
|
|
2654
|
+
});
|
|
2655
|
+
|
|
2656
|
+
const SafeDepositRentalFields = JSX(({ regions, selectedRegion, branches, selectedBranch, days, selectedCaseVolume, selectedBoxSize, safeBoxCases, caseVolumes, onChange, onClick, }) => {
|
|
2657
|
+
return (jsxs("div", { className: "contents sm:block flex-1 space-y-xl", children: [jsx(RegionsAndBranches, { regions: regions, selectedRegion: selectedRegion, onSelectedRegion: (value) => onChange({ selectedRegion: value }), branches: branches, selectedBranch: selectedBranch, onSelectedBranch: onSelectedBranch(onChange) }), jsx(RentalPeriod, { days: days, setDays: (value) => onChange({ days: value }) }), jsx(SafeBoxCases, { caseVolumes: caseVolumes, selectedCaseVolume: selectedCaseVolume, onSelectedCaseVolume: onSelectedCaseVolume(onChange), safeBoxCases: safeBoxCases, selectedBoxSize: selectedBoxSize, onSelectedBoxSize: (value) => onChange({ selectedBoxSize: value }) }), jsx("div", { className: "order-4", children: jsx(Text, { size: "text-l", font: "font-light", color: "text-secondary-text", children: "\u0422\u0438\u043F \u0434\u043E\u0433\u043E\u0432\u043E\u0440\u0430" }) }), jsxs("div", { className: "contents sm:flex justify-between items-center", children: [jsx(RadioButtons, { className: "mb-4 sm:mb-0" }), jsx(Button, { text: "\u041E\u0444\u0438\u0441\u044B \u043D\u0430 \u043A\u0430\u0440\u0442\u0435", version: "primary", onClick: onClick, className: "order-6" })] })] }));
|
|
2658
|
+
});
|
|
2659
|
+
const onSelectedBranch = (onChange) => (value) => {
|
|
2660
|
+
onChange({ selectedBranch: value, selectedCaseVolume: '', selectedBoxSize: '' });
|
|
2661
|
+
};
|
|
2662
|
+
const onSelectedCaseVolume = (onChange) => (value) => {
|
|
2663
|
+
onChange({ selectedCaseVolume: value, selectedBoxSize: '' });
|
|
2664
|
+
};
|
|
2665
|
+
|
|
2666
|
+
const SafeDepositRentalTotal = JSX(({ days, tariffs = [] }) => {
|
|
2667
|
+
const price = calculatePrice(days, tariffs);
|
|
2668
|
+
const imageDescription = 'На рисунке изображена пачка листов\nформата А4';
|
|
2669
|
+
return (jsxs("div", { className: "contents sm:flex flex-col justify-between order-2", children: [jsxs("div", { className: "flex flex-col sm:flex-row gap-x-11 gap-y-7 order-5 sm:order-none py-7 sm:py-0 border-t border-main-divider sm:border-none", children: [renderTotal('Аренда за', days), renderTotal('Цена', price + ' ₽')] }), jsx("span", { className: "sm:hidden order-3 mb-2 text-s-light text-secondary-text", children: imageDescription }), jsxs("div", { className: "flex flex-col items-center gap-3 order-3 sm:order-none mb-6 sm:mb-0 bg-primary-main py-3 sm:p-8 text-center", children: [jsx(Img, { image: { icon: 'PackA4Icon' }, className: "sm:h-[246px]" }), jsx("span", { className: "hidden sm:inline text-s font-light text-white opacity-80 whitespace-pre-line", children: imageDescription })] })] }));
|
|
2670
|
+
});
|
|
2671
|
+
const renderTotal = (label, total) => {
|
|
2672
|
+
return (jsxs("div", { className: "flex justify-between items-center gap-y-1 sm:flex-col sm:items-start", children: [jsx("div", { className: "text-l font-light text-secondary-text", children: label }), jsx("span", { className: "text-l sm:text-h3 text-primary-text", children: total })] }));
|
|
2673
|
+
};
|
|
2674
|
+
const calculatePrice = (days, tariffs) => {
|
|
2675
|
+
const tariffType = getTariffType(days);
|
|
2676
|
+
const tariffValue = tariffs?.find((_) => _.tariffType === String(tariffType))?.tariffValue || 0;
|
|
2677
|
+
return days * tariffValue;
|
|
2678
|
+
};
|
|
2679
|
+
const getTariffType = (days) => {
|
|
2680
|
+
let tariffType = 1;
|
|
2681
|
+
switch (true) {
|
|
2682
|
+
case days > 30 && days <= 90:
|
|
2683
|
+
tariffType = 2;
|
|
2684
|
+
break;
|
|
2685
|
+
case days > 90 && days <= 180:
|
|
2686
|
+
tariffType = 3;
|
|
2687
|
+
break;
|
|
2688
|
+
case days > 180 && days <= 365:
|
|
2689
|
+
tariffType = 4;
|
|
2690
|
+
break;
|
|
2691
|
+
}
|
|
2692
|
+
return tariffType;
|
|
2693
|
+
};
|
|
2694
|
+
|
|
2695
|
+
const getCoordinates = (data) => {
|
|
2696
|
+
if (Array.isArray(data)) {
|
|
2697
|
+
return data.map((_) => _.gpsLatitude && _.gpsLongitude ? [_.gpsLatitude, _.gpsLongitude] : []);
|
|
2698
|
+
}
|
|
2699
|
+
if (data?.gpsLatitude && data?.gpsLongitude) {
|
|
2700
|
+
return [[data.gpsLatitude, data.gpsLongitude]];
|
|
2701
|
+
}
|
|
2702
|
+
return [];
|
|
2703
|
+
};
|
|
2704
|
+
const getBranch = (branches, selectedBranch) => branches.find((_) => _.branchCode === selectedBranch);
|
|
2705
|
+
|
|
2706
|
+
const SafeDepositRentalForm = JSX((props) => {
|
|
2707
|
+
const { regions, data, branches, onChange, onClick } = props;
|
|
2708
|
+
useEffect(() => {
|
|
2709
|
+
onChange({
|
|
2710
|
+
selectedBranch: '',
|
|
2711
|
+
selectedCaseVolume: '',
|
|
2712
|
+
selectedBoxSize: '',
|
|
2713
|
+
});
|
|
2714
|
+
}, [data.selectedRegion, onChange]);
|
|
2715
|
+
const branch = getBranch(branches, data.selectedBranch);
|
|
2716
|
+
const caseVolumes = getCaseVolumes(branch?.safeBoxCaseVolumes);
|
|
2717
|
+
const safeBoxCases = getCaseVolume(branch?.safeBoxCaseVolumes, data.selectedCaseVolume)?.safeBoxCases;
|
|
2718
|
+
const tariffs = getTariffs(safeBoxCases, data.selectedBoxSize);
|
|
2719
|
+
return (jsxs("div", { className: "flex flex-col sm:flex-row gap-x-9 align-top mb-6", children: [jsx(SafeDepositRentalFields, { ...data, regions: regions, onClick: onClick, branches: branches, caseVolumes: caseVolumes, safeBoxCases: safeBoxCases, onChange: onChange }), jsx(SafeDepositRentalTotal, { days: data.days, tariffs: tariffs })] }));
|
|
2720
|
+
});
|
|
2721
|
+
const getCaseVolumes = (safeBoxCaseVolumes) => safeBoxCaseVolumes?.length ? safeBoxCaseVolumes?.filter((_) => _?.safeBoxCases?.length) : [];
|
|
2722
|
+
const getCaseVolume = (caseVolumes, selectedCaseVolume) => caseVolumes?.find((_) => _.volume === selectedCaseVolume);
|
|
2723
|
+
const getTariffs = (safeBoxCases, selectedBoxSize) => safeBoxCases?.find((_) => _.safeBoxCasesSize === selectedBoxSize)?.tariffs;
|
|
2724
|
+
|
|
2725
|
+
const SAFEBOXES_URL = '/api/v1/safeboxes';
|
|
2726
|
+
const EMPTY_VALUE = [];
|
|
2727
|
+
function useSafeBoxes(regionCode) {
|
|
2728
|
+
const { data } = useAsyncData(regionCode ? `${SAFEBOXES_URL}?regionCode=${regionCode}` : null, fetchSafeBoxes);
|
|
2729
|
+
return data || EMPTY_VALUE;
|
|
2730
|
+
}
|
|
2731
|
+
const fetchSafeBoxes = async (url) => {
|
|
2732
|
+
const result = await fetchJSON(url, { method: 'GET' });
|
|
2733
|
+
return result || EMPTY_VALUE;
|
|
2734
|
+
};
|
|
2735
|
+
|
|
2736
|
+
const DEFAULT_DAYS = 26;
|
|
2737
|
+
const SafeDepositRental = JSX(({ title, footnote, className = '', ...rest }) => {
|
|
2738
|
+
const [showMap, setShowMap] = useState(false);
|
|
2739
|
+
const handleShowMap = useCallback(() => setShowMap((_) => !_), []);
|
|
2740
|
+
const [safeDepositState, setStateDepositState] = useState({
|
|
2741
|
+
selectedRegion: '',
|
|
2742
|
+
selectedBranch: '',
|
|
2743
|
+
selectedCaseVolume: '',
|
|
2744
|
+
selectedBoxSize: '',
|
|
2745
|
+
days: DEFAULT_DAYS,
|
|
2746
|
+
});
|
|
2747
|
+
const regions = useGetRegions();
|
|
2748
|
+
const selectedRegion = normalizeSelectedRegion(safeDepositState.selectedRegion, regions);
|
|
2749
|
+
const branches = useSafeBoxes(selectedRegion);
|
|
2750
|
+
const handleChangeSafeDepositState = useCallback((state) => setStateDepositState((oldState) => ({ ...oldState, ...state })), [setStateDepositState]);
|
|
2751
|
+
const points = getCoordinates(getBranch(branches, safeDepositState.selectedBranch) || branches);
|
|
2752
|
+
return (jsxs(BlockWrapper, { className: className, defaultPadding: "", ...rest, children: [jsxs("div", { className: "p-4xl", children: [title ? (jsx(Heading, { title: title, headingType: "h3", as: "h2", className: "text-primary-text mb-s text-center" })) : null, jsx(SafeDepositRentalForm, { regions: regions, branches: branches, data: { ...safeDepositState, selectedRegion }, onClick: handleShowMap, onChange: handleChangeSafeDepositState }), footnote ? (jsx(Paragraph, { size: "text-s", font: "font-light", children: footnote })) : null] }), points.length && showMap ? jsx(YandexMap, { points: points, className: "h-[640px]" }) : null] }));
|
|
2753
|
+
});
|
|
2754
|
+
const normalizeSelectedRegion = (selectedRegion, regions) => !selectedRegion && regions?.length && regions[0]?.code ? regions[0].code : selectedRegion;
|
|
2755
|
+
|
|
2172
2756
|
function assertUnreachable(x) {
|
|
2173
2757
|
throw new Error(x);
|
|
2174
2758
|
}
|
|
@@ -2314,7 +2898,6 @@
|
|
|
2314
2898
|
const { tabs, ...rest } = props;
|
|
2315
2899
|
const [containerRef, scroll] = useSwipeListScroll({
|
|
2316
2900
|
itemCount: tabs?.length || 0,
|
|
2317
|
-
isCyclic: false,
|
|
2318
2901
|
});
|
|
2319
2902
|
return (jsxs("div", { className: "relative max-w-full m-auto", children: [jsx("div", { className: `font-sans max-w-full w-full overflow-hidden relative bg-white`, children: jsx(SwipeListContainer, { containerRef: containerRef, snapAlign: "snap-start", onVisibleIndicesChange: scroll.handleVisibleIndicesChange, children: tabs?.map(renderTab({ ...rest })) }) }), scroll.canScrollLeft ? (jsx(ScrollLeftButton, { className: `${scrollButtonStyle} left-6`, onClick: scroll.scrollLeft })) : null, scroll.canScrollRight ? (jsx(ScrollRightButton, { className: `${scrollButtonStyle} rotate-180 right-6`, onClick: scroll.scrollRight })) : null] }));
|
|
2320
2903
|
});
|
|
@@ -2410,31 +2993,6 @@
|
|
|
2410
2993
|
return (jsx("ul", { className: style('text-secondary-text group-data-secondary:text-white/80', listStyle), children: items.map((_, i) => (jsx("li", { children: jsx(Text, { size: "text-s", font: "font-light", children: _ }) }, `listItem-${i}`))) }));
|
|
2411
2994
|
};
|
|
2412
2995
|
|
|
2413
|
-
const gapStyles = {
|
|
2414
|
-
XXL: 'gap-6xl',
|
|
2415
|
-
XL: 'gap-5xl',
|
|
2416
|
-
L: 'gap-3xl',
|
|
2417
|
-
M: 'gap-m',
|
|
2418
|
-
S: 'gap-xs',
|
|
2419
|
-
XS: 'gap-2xs',
|
|
2420
|
-
'': '',
|
|
2421
|
-
};
|
|
2422
|
-
|
|
2423
|
-
const alignStyle = {
|
|
2424
|
-
stretch: 'items-stretch',
|
|
2425
|
-
left: 'items-start',
|
|
2426
|
-
center: 'items-center',
|
|
2427
|
-
right: 'items-end',
|
|
2428
|
-
};
|
|
2429
|
-
const VerticalLayout = JSX(({ className = '', gap = '', align = 'stretch', isPadding = false, isInnerPadding = true, version = 'transparent', isTheme = false, ...rest }) => {
|
|
2430
|
-
const innerPaddingStyle = isInnerPadding ? '' : '!p-0';
|
|
2431
|
-
return (jsx(BlockWrapper, { className: style('relative', 'flex flex-col [&>*]:max-w-full', gapStyles[gap], align && alignStyle[align], className), defaultPadding: isPadding ? 'p-6xl' : '', version: version, isTheme: isTheme, ...rest, children: renderChildren({
|
|
2432
|
-
...rest,
|
|
2433
|
-
renderProps: (block, options) => renderBlock(block, options, { className: innerPaddingStyle }),
|
|
2434
|
-
}) }));
|
|
2435
|
-
});
|
|
2436
|
-
VerticalLayout.childrenTypes = [];
|
|
2437
|
-
|
|
2438
2996
|
const Blocks = {
|
|
2439
2997
|
ApplicationForm,
|
|
2440
2998
|
ButtonsBlock,
|
|
@@ -2450,6 +3008,7 @@
|
|
|
2450
3008
|
Footer,
|
|
2451
3009
|
Header,
|
|
2452
3010
|
Headline,
|
|
3011
|
+
HorizontalLayout,
|
|
2453
3012
|
ImgBlock,
|
|
2454
3013
|
LinkDocs,
|
|
2455
3014
|
MobileAppTile,
|
|
@@ -2462,13 +3021,61 @@
|
|
|
2462
3021
|
TextBlock,
|
|
2463
3022
|
RichTextBlock,
|
|
2464
3023
|
RollupItem,
|
|
3024
|
+
SafeDepositRental,
|
|
2465
3025
|
VerticalLayout,
|
|
2466
3026
|
CarouselRecommendationCard,
|
|
3027
|
+
ExchangeRateTile,
|
|
2467
3028
|
CarouselProgramsCard,
|
|
2468
3029
|
ProductGallery,
|
|
2469
3030
|
BenefitsBlock,
|
|
2470
3031
|
};
|
|
2471
3032
|
|
|
3033
|
+
const STORAGE_DEFAULT_TTL = 86400000; // 24 * 60 * 60 * 1000
|
|
3034
|
+
function useCachedAsyncData(key, fetcher, storage = globalThis?.localStorage) {
|
|
3035
|
+
const cachedFetcher = useCallback(async (...args) => {
|
|
3036
|
+
const storageKey = `async:${key}`;
|
|
3037
|
+
const storageData = storage.getItem(storageKey);
|
|
3038
|
+
const cachedData = getParsedData(storageData);
|
|
3039
|
+
if (cachedData) {
|
|
3040
|
+
return cachedData;
|
|
3041
|
+
}
|
|
3042
|
+
const data = await fetcher(...args);
|
|
3043
|
+
storage.setItem(storageKey, JSON.stringify({ data, timestamp: Date.now() }));
|
|
3044
|
+
return data;
|
|
3045
|
+
}, [key, fetcher]);
|
|
3046
|
+
return useAsyncData(key, cachedFetcher);
|
|
3047
|
+
}
|
|
3048
|
+
function getParsedData(storageData) {
|
|
3049
|
+
const { data = null, timestamp = null } = storageData ? JSON.parse(storageData) : {};
|
|
3050
|
+
return data && Date.now() - timestamp < STORAGE_DEFAULT_TTL ? data : undefined;
|
|
3051
|
+
}
|
|
3052
|
+
|
|
3053
|
+
const REGION_URL = '/api/v1/region';
|
|
3054
|
+
function useLocation(defaultLocation = 'Москва') {
|
|
3055
|
+
const currentLocation = getLocalStorageLocation();
|
|
3056
|
+
const [location, setLocation] = useState(currentLocation?.region ?? { name: defaultLocation });
|
|
3057
|
+
const { data } = useCachedAsyncData(REGION_URL, fetchJSONUnsafe);
|
|
3058
|
+
useEffect(() => {
|
|
3059
|
+
setLocation(currentLocation?.region && currentLocation?.manual
|
|
3060
|
+
? currentLocation.region
|
|
3061
|
+
: data || { name: defaultLocation });
|
|
3062
|
+
}, [data]);
|
|
3063
|
+
const onChangeLocation = useCallback((region) => {
|
|
3064
|
+
globalThis.localStorage?.setItem('location', JSON.stringify({ manual: true, region }));
|
|
3065
|
+
setLocation(region);
|
|
3066
|
+
}, []);
|
|
3067
|
+
return [location, onChangeLocation];
|
|
3068
|
+
}
|
|
3069
|
+
const getLocalStorageLocation = () => {
|
|
3070
|
+
const localStorageLocation = globalThis.localStorage?.getItem('location');
|
|
3071
|
+
try {
|
|
3072
|
+
return localStorageLocation ? JSON.parse(localStorageLocation) : null;
|
|
3073
|
+
}
|
|
3074
|
+
catch (_) {
|
|
3075
|
+
return null;
|
|
3076
|
+
}
|
|
3077
|
+
};
|
|
3078
|
+
|
|
2472
3079
|
const debounce = (fn, delay = 600) => {
|
|
2473
3080
|
let timerId;
|
|
2474
3081
|
const debouncedCallback = (...args) => {
|
|
@@ -2597,6 +3204,269 @@
|
|
|
2597
3204
|
});
|
|
2598
3205
|
const getStyleLinkWrapper = (href) => ['inline mx-1', href ? 'text-green-dark' : ''];
|
|
2599
3206
|
|
|
3207
|
+
const REGIONS_URL = '/api/v1/regions';
|
|
3208
|
+
function useRegions() {
|
|
3209
|
+
const { data } = useAsyncData(REGIONS_URL, fetchJSONUnsafe);
|
|
3210
|
+
return data || [];
|
|
3211
|
+
}
|
|
3212
|
+
|
|
3213
|
+
const JARO_WINKLER_P = 0.1;
|
|
3214
|
+
const JARO_WINKLER_MAX_L = 4;
|
|
3215
|
+
const jaroWinklerDistance = (s1) => (s2) => {
|
|
3216
|
+
if (s1 === s2) {
|
|
3217
|
+
return 1;
|
|
3218
|
+
}
|
|
3219
|
+
if (!s1 || !s2) {
|
|
3220
|
+
return 0;
|
|
3221
|
+
}
|
|
3222
|
+
const { m, s1Matches, s2Matches } = computeM(s1, s2);
|
|
3223
|
+
if (m === 0) {
|
|
3224
|
+
return 0;
|
|
3225
|
+
}
|
|
3226
|
+
const t = computeT(s1, s2, { s1Matches, s2Matches });
|
|
3227
|
+
const jaroWeight = (m / s1.length + m / s2.length + (m - t / 2) / m) / 3;
|
|
3228
|
+
const winklerWeight = jaroWeight > 0.7 ? computePrefixL(s1, s2) * JARO_WINKLER_P : 0;
|
|
3229
|
+
return jaroWeight + winklerWeight * (1 - jaroWeight);
|
|
3230
|
+
};
|
|
3231
|
+
function computeM(s1, s2) {
|
|
3232
|
+
const range = Math.max(0, Math.floor(Math.max(s1.length, s2.length) / 2) - 1);
|
|
3233
|
+
const s1Matches = new Array(s1.length);
|
|
3234
|
+
const s2Matches = new Array(s2.length);
|
|
3235
|
+
let m = 0;
|
|
3236
|
+
for (let i = 0; i < s1.length; i++) {
|
|
3237
|
+
const low = Math.max(0, i - range);
|
|
3238
|
+
const high = Math.min(i + range, s2.length - 1);
|
|
3239
|
+
for (let j = low; j <= high; j++) {
|
|
3240
|
+
if (s1Matches[i] || s2Matches[j] || s1[i] !== s2[j]) {
|
|
3241
|
+
continue;
|
|
3242
|
+
}
|
|
3243
|
+
m++;
|
|
3244
|
+
s1Matches[i] = true;
|
|
3245
|
+
s2Matches[j] = true;
|
|
3246
|
+
}
|
|
3247
|
+
}
|
|
3248
|
+
return { m, s1Matches, s2Matches };
|
|
3249
|
+
}
|
|
3250
|
+
function computeT(s1, s2, { s1Matches, s2Matches }) {
|
|
3251
|
+
let t = 0;
|
|
3252
|
+
for (let i = 0, k = 0; i < s1.length; i++) {
|
|
3253
|
+
if (!s1Matches[i]) {
|
|
3254
|
+
continue;
|
|
3255
|
+
}
|
|
3256
|
+
let j = k;
|
|
3257
|
+
for (; j < s2.length; j++) {
|
|
3258
|
+
if (s2Matches[j]) {
|
|
3259
|
+
k = j + 1;
|
|
3260
|
+
break;
|
|
3261
|
+
}
|
|
3262
|
+
}
|
|
3263
|
+
if (s1[i] !== s2[j]) {
|
|
3264
|
+
t++;
|
|
3265
|
+
}
|
|
3266
|
+
}
|
|
3267
|
+
return t;
|
|
3268
|
+
}
|
|
3269
|
+
function computePrefixL(s1, s2) {
|
|
3270
|
+
let prefixL = 0;
|
|
3271
|
+
while (s1[prefixL] === s2[prefixL] && prefixL < JARO_WINKLER_MAX_L) {
|
|
3272
|
+
prefixL++;
|
|
3273
|
+
}
|
|
3274
|
+
return prefixL;
|
|
3275
|
+
}
|
|
3276
|
+
|
|
3277
|
+
const groupBy = (list, keyGetter) => {
|
|
3278
|
+
const result = new Map();
|
|
3279
|
+
for (const item of list) {
|
|
3280
|
+
const key = keyGetter(item);
|
|
3281
|
+
const group = result.get(key) || [];
|
|
3282
|
+
result.set(key, [...group, item]);
|
|
3283
|
+
}
|
|
3284
|
+
return result;
|
|
3285
|
+
};
|
|
3286
|
+
|
|
3287
|
+
const Dialog = JSX(({ className, isOpened, head, children, onClose }) => {
|
|
3288
|
+
useEffect(() => {
|
|
3289
|
+
const handleEscape = ({ key }) => {
|
|
3290
|
+
if (key === 'Escape') {
|
|
3291
|
+
onClose && onClose();
|
|
3292
|
+
}
|
|
3293
|
+
};
|
|
3294
|
+
globalThis.document?.addEventListener('keydown', handleEscape);
|
|
3295
|
+
return () => {
|
|
3296
|
+
globalThis.document?.removeEventListener('keydown', handleEscape);
|
|
3297
|
+
};
|
|
3298
|
+
}, [onClose]);
|
|
3299
|
+
return isOpened ? (jsx("div", { className: style('fixed inset-0 bg-white text-l font-light z-50 overflow-x-hidden overflow-y-scroll no-scrollbar', className), role: "dialog", children: jsxs("div", { className: "relative container pb-6xl min-h-full", children: [jsxs("div", { className: "sticky bg-white pt-xl top-0", children: [jsx(CloseButton, { className: "absolute top-0 -right-6xl", onClick: onClose }), head] }), children] }) })) : null;
|
|
3300
|
+
});
|
|
3301
|
+
|
|
3302
|
+
const SearchBar = JSX(({ className, searchTerm, onSearch }) => {
|
|
3303
|
+
return (jsxs("form", { className: `font-sans relative ${className}`, children: [jsx("div", { className: "absolute rounded h-full flex items-center justify-center pl-4 max-w-44 gap-3.5 pointer-events-none", children: searchTerm ? null : (jsx("label", { htmlFor: "search-bar-input", className: `text-secondary-text `, children: "\u041F\u043E\u0438\u0441\u043A \u043F\u043E \u0444\u0438\u043B\u0438\u0430\u043B\u0430\u043C" })) }), jsx("input", { id: "search-bar-input", className: `h-12 pl-4 w-full peer text-l text-black border border-solid rounded-md box-border
|
|
3304
|
+
outline-none border-gray hover:border-primary-hover active:border-primary-text focus:border-primary-text`, value: searchTerm, onChange: (e) => onSearch(e.target.value.toLowerCase()), type: "text", name: "location-search-bar-input" })] }));
|
|
3305
|
+
});
|
|
3306
|
+
|
|
3307
|
+
const SEARCH_TERM_MIN_LENGTH = 3;
|
|
3308
|
+
const LOCATION_DIALOG_ID = 'location';
|
|
3309
|
+
const LocationDialog = JSX(({ currentLocation, onChangeLocation, foreignOffices }) => {
|
|
3310
|
+
const dialogProps = useDialogProps(LOCATION_DIALOG_ID);
|
|
3311
|
+
const [query, setQuery] = useState('');
|
|
3312
|
+
const regions = cleanUpRegions(useRegions()).sort((a, b) => a.name.localeCompare(b.name));
|
|
3313
|
+
const regionsGroupByLetter = groupBy(regions, regionFirstLetter);
|
|
3314
|
+
const handleChangeLocation = useCallback((region) => {
|
|
3315
|
+
dialogProps.onClose && dialogProps.onClose();
|
|
3316
|
+
onChangeLocation && onChangeLocation(region);
|
|
3317
|
+
}, [dialogProps.onClose, onChangeLocation]);
|
|
3318
|
+
return (jsxs(Dialog, { ...dialogProps, head: jsxs("div", { children: [jsx(CurrentLocation, { currentLocation: currentLocation, onChangeLocation: handleChangeLocation }), jsx(SearchBar, { onSearch: setQuery, searchTerm: query })] }), children: [query && query.length >= SEARCH_TERM_MIN_LENGTH ? (jsx("div", { children: regions
|
|
3319
|
+
.filter(({ name }) => name && jaroWinklerDistance(name.toLowerCase())(query.toLowerCase()) >= 0.8)
|
|
3320
|
+
.map(renderRegion(handleChangeLocation)) })) : (jsx("div", { className: "columns-5", children: Array.from(regionsGroupByLetter.entries()).map(renderRegionGroup(handleChangeLocation)) })), jsx(ForeignOffices, { foreignOffices: foreignOffices })] }));
|
|
3321
|
+
});
|
|
3322
|
+
const regionFirstLetter = (region) => region.name?.charAt(0) || '';
|
|
3323
|
+
const cleanUpRegions = (regions) => regions.map((region) => ({
|
|
3324
|
+
...region,
|
|
3325
|
+
name: region.name?.replace(/республика|область|край'/gi, '').trim() || '',
|
|
3326
|
+
}));
|
|
3327
|
+
const CurrentLocation = JSX(({ currentLocation, onChangeLocation }) => currentLocation ? (jsxs("div", { className: "mb-4", children: [jsx(Text, { size: "text-l", font: "font-light", children: "\u0421\u0435\u0439\u0447\u0430\u0441 \u0432\u044B\u0431\u0440\u0430\u043D:\u00A0" }), jsx("button", { className: "cursor-pointer", onClick: () => {
|
|
3328
|
+
onChangeLocation && onChangeLocation(currentLocation);
|
|
3329
|
+
}, children: jsx(Text, { color: "text-primary-main", children: currentLocation.name }) })] })) : null);
|
|
3330
|
+
const renderRegionGroup = (onChangeLocation) => ([letter, regions]) => (jsxs("div", { className: "break-inside-avoid mb-2xl w-56", children: [jsx("div", { className: "mb-s", children: jsx(Text, { size: "text-h6", children: letter }) }), regions.map(renderRegion(onChangeLocation))] }, letter));
|
|
3331
|
+
const renderRegion = (onChangeLocation) => (region) => (jsx("div", { className: "mb-2xs", children: jsx("button", { className: "cursor-pointer hover:text-primary-hover", onClick: () => {
|
|
3332
|
+
onChangeLocation && onChangeLocation(region);
|
|
3333
|
+
}, children: region.name || '' }) }, region.id));
|
|
3334
|
+
const ForeignOffices = JSX(({ foreignOffices }) => foreignOffices?.length ? (jsxs("div", { className: "border-t border-main-divider mt-2xs pt-2xs", children: [jsx("div", { className: "mb-m", children: jsx(Text, { size: "text-m", font: "font-light", color: "text-secondary-text", children: "\u041F\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u0435\u043B\u044C\u0441\u0442\u0432\u0430 \u0437\u0430 \u0440\u0443\u0431\u0435\u0436\u043E\u043C:" }) }), jsx("div", { className: "flex gap-10", children: foreignOffices.map((office, i) => (jsx(ForeignOffice, { ...office }, String(i)))) })] })) : null);
|
|
3335
|
+
const ForeignOffice = JSX(({ icon, ...rest }) => {
|
|
3336
|
+
const link = useLink();
|
|
3337
|
+
const { text, target, href, onClick } = link(rest);
|
|
3338
|
+
return (jsxs("div", { className: "flex gap-x-3", children: [icon ? jsx(Img, { pathPrefix: "/wcms-resources/", image: icon }) : null, text ? (jsx("a", { className: "hover:text-primary-hover", href: href, target: target, onClick: onClick, children: text })) : null] }));
|
|
3339
|
+
});
|
|
3340
|
+
|
|
3341
|
+
const compareBy = (indexOf) => (a, b) => indexOf(a) - indexOf(b);
|
|
3342
|
+
const desc = (cmp) => (a, b) => -cmp(a, b);
|
|
3343
|
+
|
|
3344
|
+
function zip(firstCol, ...restCols) {
|
|
3345
|
+
return firstCol.map((firstEl, rowIndex) => [firstEl, ...restCols.map((col) => col[rowIndex])]);
|
|
3346
|
+
}
|
|
3347
|
+
|
|
3348
|
+
const joinMaps = (aggregate, emptyVal) => (acc, map) => {
|
|
3349
|
+
for (const [key, b] of map) {
|
|
3350
|
+
acc.set(key, aggregate(acc.get(key) || emptyVal, b));
|
|
3351
|
+
}
|
|
3352
|
+
return acc;
|
|
3353
|
+
};
|
|
3354
|
+
|
|
3355
|
+
const MIN_TERM_LEN = 3;
|
|
3356
|
+
const tokenize = (text) => text
|
|
3357
|
+
.toLowerCase()
|
|
3358
|
+
.split(/[^0-9a-zа-я-]+/)
|
|
3359
|
+
.filter((token) => token.length >= MIN_TERM_LEN && !/[0-9a-z]/.test(token));
|
|
3360
|
+
|
|
3361
|
+
const textRank = (queryTokens) => (text) => {
|
|
3362
|
+
const textTokens = tokenize(text || '');
|
|
3363
|
+
return textTokens.length
|
|
3364
|
+
? sum(queryTokens.map((qToken) => max(textTokens.map(jaroWinklerDistance(qToken)))))
|
|
3365
|
+
: 0;
|
|
3366
|
+
};
|
|
3367
|
+
|
|
3368
|
+
const JW_THRESHOLD = 0.8;
|
|
3369
|
+
const RANK_EPS = 0.001;
|
|
3370
|
+
const search = (query) => (searchIndex) => {
|
|
3371
|
+
const { corpus, dictionary } = searchIndex || {};
|
|
3372
|
+
if (!query || !corpus?.length || !dictionary || !Object.keys(dictionary).length) {
|
|
3373
|
+
return [];
|
|
3374
|
+
}
|
|
3375
|
+
const queryTokens = tokenize(query);
|
|
3376
|
+
if (!queryTokens.length) {
|
|
3377
|
+
return [];
|
|
3378
|
+
}
|
|
3379
|
+
const dictEntries = Object.entries(dictionary);
|
|
3380
|
+
const pagesRanking = queryTokens
|
|
3381
|
+
.map(computePagesRankingPerToken(dictEntries))
|
|
3382
|
+
.reduce(joinMaps((a, b) => a + b, 0), new Map());
|
|
3383
|
+
const relevantPages = [...pagesRanking.entries()]
|
|
3384
|
+
.filter(([, pageRank]) => pageRank >= (JW_THRESHOLD - RANK_EPS) * queryTokens.length) // Multiplication of query tokens
|
|
3385
|
+
.map(([pageIndex]) => corpus[pageIndex]);
|
|
3386
|
+
return sortResultsByRank(queryTokens)(relevantPages);
|
|
3387
|
+
};
|
|
3388
|
+
const computePagesRankingPerToken = (dictEntries) => (qToken) => dictEntries
|
|
3389
|
+
.map(([stem, pageIndices]) => [jaroWinklerDistance(qToken)(stem), pageIndices])
|
|
3390
|
+
.filter(([stemRank]) => stemRank >= JW_THRESHOLD)
|
|
3391
|
+
.map(([stemRank, pageIndices]) => fillMapWith(pageIndices, stemRank))
|
|
3392
|
+
.reduce(joinMaps(Math.max, 0), new Map());
|
|
3393
|
+
const sortResultsByRank = (queryTokens) => (results) => zip(results, results.map(({ title }) => title).map(textRank(queryTokens)))
|
|
3394
|
+
.sort(desc(compareBy(([, pageTitleRank]) => pageTitleRank)))
|
|
3395
|
+
.map(([corpusItem]) => corpusItem);
|
|
3396
|
+
const fillMapWith = (keys, value) => new Map(keys.map((_) => [_, value]));
|
|
3397
|
+
|
|
3398
|
+
const SEARCH_INDEX_FILENAME = 'search.index.json';
|
|
3399
|
+
const DEFAULT_BASE_PATH = ['/'];
|
|
3400
|
+
const useSearch = ({ basePathList = DEFAULT_BASE_PATH, initialQuery = '', wasOpened, }) => {
|
|
3401
|
+
const [query, setQuery] = useState(initialQuery || '');
|
|
3402
|
+
useEffect(() => {
|
|
3403
|
+
if (initialQuery !== undefined && initialQuery !== null) {
|
|
3404
|
+
setQuery(initialQuery);
|
|
3405
|
+
}
|
|
3406
|
+
}, [initialQuery]);
|
|
3407
|
+
const key = useMemo(() => basePathList.map((_) => (wasOpened ? _ : null)), // Load search index on very first search
|
|
3408
|
+
[wasOpened, basePathList]);
|
|
3409
|
+
const { data } = useAsyncData(key, fetchSearchIndex);
|
|
3410
|
+
const [result, setResult] = useState(null);
|
|
3411
|
+
useDebouncedEffect(() => {
|
|
3412
|
+
if (data) {
|
|
3413
|
+
setResult(data.map(search(query)));
|
|
3414
|
+
}
|
|
3415
|
+
}, [data, query]);
|
|
3416
|
+
return [result, { value: query, onChange: setQuery }];
|
|
3417
|
+
};
|
|
3418
|
+
const fetchSearchIndex = async (...basePathList) => (await Promise.allSettled(basePathList.map((basePath) => fetchJSON(joinPath(basePath, '/', SEARCH_INDEX_FILENAME))))).map((_) => (_.status === 'fulfilled' ? _.value : {}));
|
|
3419
|
+
|
|
3420
|
+
const Sitemap = JSX(({ className, topItems }) => {
|
|
3421
|
+
const link = useLink({ isRemote: true });
|
|
3422
|
+
return (jsx("div", { className: style('flex items-start justify-between', className), children: topItems?.map(link).map(renderColumn) }));
|
|
3423
|
+
});
|
|
3424
|
+
const renderColumn = (menuItem, index) => {
|
|
3425
|
+
const { text, items, href, target, onClick } = menuItem;
|
|
3426
|
+
return (jsxs("div", { className: "flex flex-col gap-3.5 w-1/4", children: [jsx("a", { className: "leading-5 text-l text-primary-text hover:text-primary-main no-underline", href: href, target: target || '_self', onClick: onClick, children: text || `Раздел ${index}` }), items?.map((_, i) => (jsx(ColumnItem, { ..._, basePath: appendSlash(href), index: i }, String(i))))] }, String(index)));
|
|
3427
|
+
};
|
|
3428
|
+
const ColumnItem = JSX(({ text, index, basePath, ...rest }) => {
|
|
3429
|
+
const isAnotherPortal = projectSettings.BASE_PATH && basePath ? !projectSettings.BASE_PATH.startsWith(basePath) : false;
|
|
3430
|
+
const link = useLink({ isRemote: isAnotherPortal, basePath });
|
|
3431
|
+
const { href, target, onClick } = link(rest);
|
|
3432
|
+
return (jsx("a", { className: style('text-l font-light text-secondary-text hover:text-primary-main no-underline', 'overflow-x-hidden overflow-ellipsis whitespace-nowrap'), href: href, target: target || '_self', onClick: onClick, children: text || `Раздел ${index}` }));
|
|
3433
|
+
});
|
|
3434
|
+
|
|
3435
|
+
const SearchInput = JSX(({ className, value, autoFocus, onChange, onFocus }) => {
|
|
3436
|
+
const handleChange = useCallback((ev) => {
|
|
3437
|
+
onChange && onChange(ev.target?.value || '');
|
|
3438
|
+
}, [onChange]);
|
|
3439
|
+
return (jsxs("div", { className: style('font-sans relative', className), role: "form", children: [jsx("div", { className: "absolute h-full flex items-center pl-m pointer-events-none", children: jsx(Img, { image: { icon: 'LoupeIcon' }, width: "24", height: "24" }) }), jsx("input", { className: style('h-12 pl-12 w-full text-l text-black outline-none box-border', 'border border-solid rounded-md border-gray hover:border-primary-hover active:border-primary-text focus:border-primary-text'), value: value, type: "text", name: "search-bar-input", placeholder: "\u041F\u043E\u0438\u0441\u043A \u043F\u043E \u0441\u0430\u0439\u0442\u0443", autoFocus: autoFocus, onChange: handleChange, onFocus: onFocus })] }));
|
|
3440
|
+
});
|
|
3441
|
+
|
|
3442
|
+
const SEARCH_DIALOG_ID = 'search';
|
|
3443
|
+
const SearchDialog = JSX(({ topItems }) => {
|
|
3444
|
+
const dialogProps = useDialogProps(SEARCH_DIALOG_ID);
|
|
3445
|
+
const basePathList = useMemo(() => topItems?.map((_) => _.href || '/'), [topItems]);
|
|
3446
|
+
const [searchResult, searchInputProps] = useSearch({
|
|
3447
|
+
basePathList,
|
|
3448
|
+
initialQuery: dialogProps.message,
|
|
3449
|
+
wasOpened: dialogProps.wasOpened,
|
|
3450
|
+
});
|
|
3451
|
+
const searchItems = useMemo(() => combineTopItemsAndSearchResult(topItems)(searchResult), [topItems, searchResult]);
|
|
3452
|
+
useEffect(() => printSearchItems(searchItems), [searchItems]); // Temp
|
|
3453
|
+
return (jsx(Dialog, { ...dialogProps, head: jsx(SearchInput, { autoFocus: true, ...searchInputProps }), children: jsx(Sitemap, { topItems: searchItems }) }));
|
|
3454
|
+
});
|
|
3455
|
+
const combineTopItemsAndSearchResult = (topItems) => (searchResult) => topItems?.length && searchResult?.length
|
|
3456
|
+
? zip(topItems, searchResult).map(([_, portalSearchResult]) => ({
|
|
3457
|
+
..._,
|
|
3458
|
+
items: portalSearchResult?.map(({ title, uri }) => ({ text: title, href: joinPath('/', uri) })),
|
|
3459
|
+
}))
|
|
3460
|
+
: [];
|
|
3461
|
+
// Temp
|
|
3462
|
+
function printSearchItems(topItems) {
|
|
3463
|
+
for (const _ of topItems.filter(({ items }) => items?.length)) {
|
|
3464
|
+
console.group(_.text);
|
|
3465
|
+
console.table(_.items, ['text', 'href']);
|
|
3466
|
+
console.groupEnd();
|
|
3467
|
+
}
|
|
3468
|
+
}
|
|
3469
|
+
|
|
2600
3470
|
const api = LikeAPI();
|
|
2601
3471
|
function useLikeService(pagePath) {
|
|
2602
3472
|
const [likeCount, setLikeCount] = useState(0);
|
|
@@ -2638,9 +3508,8 @@
|
|
|
2638
3508
|
return (jsxs("div", { className: `border-main border-2 border-solid bg-white flex w-[125px] items-center justify-center gap-3 p-2 font-sans ${className}`, children: [jsx(LikeButton, { onClick: handlerDecorator(likeService.like), ariaLabel: "\u041F\u043E\u0441\u0442\u0430\u0432\u0438\u0442\u044C \u043E\u0442\u043C\u0435\u0442\u043A\u0443 \u00AB\u043B\u0430\u0439\u043A\u00BB" }), jsx(LikeButton, { onClick: handlerDecorator(likeService.dislike), className: "rotate-180", ariaLabel: "\u041F\u043E\u0441\u0442\u0430\u0432\u0438\u0442\u044C \u043E\u0442\u043C\u0435\u0442\u043A\u0443 \u00AB\u0434\u0438\u0437\u043B\u0430\u0439\u043A\u00BB" }), jsx("span", { className: "select-none", children: likeService.likeCount })] }));
|
|
2639
3509
|
});
|
|
2640
3510
|
|
|
2641
|
-
const ContentPage = JSX((
|
|
2642
|
-
const {
|
|
2643
|
-
const { style: pageStyle, blocks, slots, likeControl, colorPalette = 'pc' } = data;
|
|
3511
|
+
const ContentPage = JSX(({ className, blocksRegistry, blockDecorator, data = {} }) => {
|
|
3512
|
+
const { style: pageStyle, slots, likeControl, colorPalette = 'pc' } = data;
|
|
2644
3513
|
const options = {
|
|
2645
3514
|
key: '',
|
|
2646
3515
|
page: data,
|
|
@@ -2648,21 +3517,23 @@
|
|
|
2648
3517
|
blockDecorator,
|
|
2649
3518
|
parent: data,
|
|
2650
3519
|
};
|
|
3520
|
+
const sitemap = useSWRResource(projectSettings.SITEMAP || 'sitemap', data?.fallback);
|
|
3521
|
+
const [location, onChangeLocation] = useLocation(sitemap?.defaultLocation);
|
|
2651
3522
|
useBlockRouterProvider();
|
|
2652
3523
|
const [isSomeDialogOpened, { setTrue: setSomeDialogOpened, setFalse: resetSomeDialogOpened }] = useBool();
|
|
2653
3524
|
useDialogHandlers({
|
|
2654
3525
|
onOpen: setSomeDialogOpened,
|
|
2655
3526
|
onClose: resetSomeDialogOpened,
|
|
2656
3527
|
});
|
|
2657
|
-
return (jsxs("section", { className: style('relative', pageStyle, className, isSomeDialogOpened ? 'overflow-hidden h-screen' : ''), "data-theme": colorPalette, children: [slots?.header ? (jsx("div", { className: "mb-5 shadow-[0_8px_32px_0px_#00000014]", children: renderBlocksList(slots?.header, {
|
|
3528
|
+
return (jsxs("section", { className: style('relative @container', pageStyle, className, isSomeDialogOpened ? 'overflow-hidden h-screen' : ''), "data-theme": colorPalette, children: [slots?.header ? (jsx("div", { className: "relative z-10 mb-5 shadow-[0_8px_32px_0px_#00000014]", children: renderBlocksList(slots?.header, {
|
|
2658
3529
|
...options,
|
|
2659
3530
|
slotName: 'header',
|
|
2660
|
-
|
|
2661
|
-
|
|
2662
|
-
|
|
2663
|
-
|
|
2664
|
-
}
|
|
2665
|
-
|
|
3531
|
+
extraProps: { sitemap, location },
|
|
3532
|
+
}) })) : null, jsxs("div", { className: "container @lg:grid @lg:grid-cols-12 @lg:gap-1", children: [renderChildren({ block: data, options, extraProps: { className: 'scroll-mt-12' } }), renderBlocksList(slots?.footer, {
|
|
3533
|
+
...options,
|
|
3534
|
+
slotName: 'footer',
|
|
3535
|
+
extraProps: { sitemap, location },
|
|
3536
|
+
})] }), likeControl ? renderLikeControl() : null, jsx(CookiePopup, { termLink: { href: '/pd-policy#cookie', target: '_blank' }, personalDataPolicyLink: { href: '/pd-policy', target: '_blank' } }), jsx(SearchDialog, { topItems: sitemap?.topItems }), jsx(LocationDialog, { currentLocation: location, foreignOffices: sitemap?.foreignOffices, onChangeLocation: onChangeLocation })] }));
|
|
2666
3537
|
});
|
|
2667
3538
|
ContentPage.childrenTypes = [];
|
|
2668
3539
|
ContentPage.slots = () => ['header', 'footer'];
|
|
@@ -2672,7 +3543,7 @@
|
|
|
2672
3543
|
|
|
2673
3544
|
const joinList = (sep) => (list) => list.reduce((acc, el, i) => (acc.length ? acc.concat({ ...sep, key: `sep-${i}` }, el) : [el]), []);
|
|
2674
3545
|
|
|
2675
|
-
const packageVersion = "0.12.
|
|
3546
|
+
const packageVersion = "0.12.13";
|
|
2676
3547
|
|
|
2677
3548
|
exports.Blocks = Blocks;
|
|
2678
3549
|
exports.ContentPage = ContentPage;
|