@redneckz/wildless-cms-uni-blocks 0.14.600 → 0.14.601
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/bundle/EventBus/EventBus.d.ts +4 -17
- package/bundle/EventBus/defaultEventBus.d.ts +13 -2
- package/bundle/EventBus/useLatestEvent.d.ts +2 -0
- package/bundle/bundle.umd.js +89 -131
- package/bundle/bundle.umd.min.js +1 -1
- package/bundle/components/CarouselTariffsCard/CarouselTariffsCardAction.d.ts +6 -0
- package/bundle/hooks/useLocation.d.ts +1 -2
- package/bundle/ui-kit/Foldable/Foldable.d.ts +1 -11
- package/dist/EventBus/EventBus.d.ts +4 -17
- package/dist/EventBus/EventBus.js +10 -29
- package/dist/EventBus/EventBus.js.map +1 -1
- package/dist/EventBus/defaultEventBus.d.ts +13 -2
- package/dist/EventBus/defaultEventBus.js.map +1 -1
- package/dist/EventBus/useLatestEvent.d.ts +2 -0
- package/dist/EventBus/useLatestEvent.js +11 -0
- package/dist/EventBus/useLatestEvent.js.map +1 -0
- package/dist/components/CarouselTariffsCard/CarouselTariffsCard.js +25 -11
- package/dist/components/CarouselTariffsCard/CarouselTariffsCard.js.map +1 -1
- package/dist/components/CarouselTariffsCard/CarouselTariffsCardAction.d.ts +6 -0
- package/dist/components/CarouselTariffsCard/CarouselTariffsCardAction.js +2 -0
- package/dist/components/CarouselTariffsCard/CarouselTariffsCardAction.js.map +1 -0
- package/dist/components/ExchangeRateTile/ExchangeRateTile.js +1 -1
- package/dist/components/ExchangeRateTile/ExchangeRateTile.js.map +1 -1
- package/dist/components/Header/HeaderSecondaryMenu.js +1 -1
- package/dist/components/Header/HeaderSecondaryMenu.js.map +1 -1
- package/dist/components/OfficesAtmsMap/AtmsMap.js +1 -1
- package/dist/components/OfficesAtmsMap/AtmsMap.js.map +1 -1
- package/dist/components/OfficesAtmsMap/OfficesMap.js +1 -1
- package/dist/components/OfficesAtmsMap/OfficesMap.js.map +1 -1
- package/dist/components/StickyBottomMenu/BurgerMenuDialog.js +1 -1
- package/dist/components/StickyBottomMenu/BurgerMenuDialog.js.map +1 -1
- package/dist/hooks/useLocation.d.ts +1 -2
- package/dist/hooks/useLocation.js +33 -27
- package/dist/hooks/useLocation.js.map +1 -1
- package/dist/hooks/useRegions.js +1 -3
- package/dist/hooks/useRegions.js.map +1 -1
- package/dist/ui-kit/DialogManager/useDialogManager.js +3 -3
- package/dist/ui-kit/DialogManager/useDialogManager.js.map +1 -1
- package/dist/ui-kit/DialogManager/useDialogsList.js +1 -1
- package/dist/ui-kit/DialogManager/useDialogsList.js.map +1 -1
- package/dist/ui-kit/Foldable/Foldable.d.ts +1 -11
- package/dist/ui-kit/Foldable/Foldable.js +2 -10
- package/dist/ui-kit/Foldable/Foldable.js.map +1 -1
- package/dist/ui-kit/FormField/constants.js +0 -1
- package/dist/ui-kit/FormField/constants.js.map +1 -1
- package/dist/ui-kit/FormField/getValidation.js +0 -1
- package/dist/ui-kit/FormField/getValidation.js.map +1 -1
- package/dist/ui-kit/LocationDialog/LocationDialog.js +12 -9
- package/dist/ui-kit/LocationDialog/LocationDialog.js.map +1 -1
- package/dist/ui-kit/PopupManager/PopupManager.js +1 -1
- package/dist/ui-kit/PopupManager/PopupManager.js.map +1 -1
- package/dist/ui-kit/PopupManager/usePopupManager.js +3 -3
- package/dist/ui-kit/PopupManager/usePopupManager.js.map +1 -1
- package/lib/EventBus/EventBus.d.ts +4 -17
- package/lib/EventBus/EventBus.js +10 -29
- package/lib/EventBus/EventBus.js.map +1 -1
- package/lib/EventBus/defaultEventBus.d.ts +13 -2
- package/lib/EventBus/defaultEventBus.js.map +1 -1
- package/lib/EventBus/useLatestEvent.d.ts +2 -0
- package/lib/EventBus/useLatestEvent.js +8 -0
- package/lib/EventBus/useLatestEvent.js.map +1 -0
- package/lib/common.css +1 -1
- package/lib/components/CarouselTariffsCard/CarouselTariffsCard.js +26 -12
- package/lib/components/CarouselTariffsCard/CarouselTariffsCard.js.map +1 -1
- package/lib/components/CarouselTariffsCard/CarouselTariffsCardAction.d.ts +6 -0
- package/lib/components/CarouselTariffsCard/CarouselTariffsCardAction.js +2 -0
- package/lib/components/CarouselTariffsCard/CarouselTariffsCardAction.js.map +1 -0
- package/lib/components/ExchangeRateTile/ExchangeRateTile.js +2 -2
- package/lib/components/ExchangeRateTile/ExchangeRateTile.js.map +1 -1
- package/lib/components/Header/HeaderSecondaryMenu.js +2 -2
- package/lib/components/Header/HeaderSecondaryMenu.js.map +1 -1
- package/lib/components/OfficesAtmsMap/AtmsMap.js +2 -2
- package/lib/components/OfficesAtmsMap/AtmsMap.js.map +1 -1
- package/lib/components/OfficesAtmsMap/OfficesAtmsMapLayout.d.ts +1 -1
- package/lib/components/OfficesAtmsMap/OfficesMap.js +2 -2
- package/lib/components/OfficesAtmsMap/OfficesMap.js.map +1 -1
- package/lib/components/StickyBottomMenu/BurgerMenuDialog.js +2 -2
- package/lib/components/StickyBottomMenu/BurgerMenuDialog.js.map +1 -1
- package/lib/hooks/useLocation.d.ts +1 -2
- package/lib/hooks/useLocation.js +33 -26
- package/lib/hooks/useLocation.js.map +1 -1
- package/lib/hooks/useRegions.js +1 -3
- package/lib/hooks/useRegions.js.map +1 -1
- package/lib/ui-kit/DialogManager/useDialogManager.js +3 -3
- package/lib/ui-kit/DialogManager/useDialogManager.js.map +1 -1
- package/lib/ui-kit/DialogManager/useDialogsList.js +1 -1
- package/lib/ui-kit/DialogManager/useDialogsList.js.map +1 -1
- package/lib/ui-kit/Foldable/Foldable.d.ts +1 -11
- package/lib/ui-kit/Foldable/Foldable.js +2 -10
- package/lib/ui-kit/Foldable/Foldable.js.map +1 -1
- package/lib/ui-kit/FormField/constants.js +0 -1
- package/lib/ui-kit/FormField/constants.js.map +1 -1
- package/lib/ui-kit/FormField/getValidation.js +0 -1
- package/lib/ui-kit/FormField/getValidation.js.map +1 -1
- package/lib/ui-kit/LocationDialog/LocationDialog.js +13 -10
- package/lib/ui-kit/LocationDialog/LocationDialog.js.map +1 -1
- package/lib/ui-kit/PopupManager/PopupManager.js +1 -1
- package/lib/ui-kit/PopupManager/PopupManager.js.map +1 -1
- package/lib/ui-kit/PopupManager/usePopupManager.js +3 -3
- package/lib/ui-kit/PopupManager/usePopupManager.js.map +1 -1
- package/mobile/bundle/EventBus/EventBus.d.ts +4 -17
- package/mobile/bundle/EventBus/defaultEventBus.d.ts +13 -2
- package/mobile/bundle/EventBus/useLatestEvent.d.ts +2 -0
- package/mobile/bundle/bundle.umd.js +89 -131
- package/mobile/bundle/bundle.umd.min.js +1 -1
- package/mobile/bundle/components/CarouselTariffsCard/CarouselTariffsCardAction.d.ts +6 -0
- package/mobile/bundle/hooks/useLocation.d.ts +1 -2
- package/mobile/bundle/ui-kit/Foldable/Foldable.d.ts +1 -11
- package/mobile/dist/EventBus/EventBus.d.ts +4 -17
- package/mobile/dist/EventBus/EventBus.js +10 -29
- package/mobile/dist/EventBus/EventBus.js.map +1 -1
- package/mobile/dist/EventBus/defaultEventBus.d.ts +13 -2
- package/mobile/dist/EventBus/defaultEventBus.js.map +1 -1
- package/mobile/dist/EventBus/useLatestEvent.d.ts +2 -0
- package/mobile/dist/EventBus/useLatestEvent.js +11 -0
- package/mobile/dist/EventBus/useLatestEvent.js.map +1 -0
- package/mobile/dist/components/CarouselTariffsCard/CarouselTariffsCard.js +25 -11
- package/mobile/dist/components/CarouselTariffsCard/CarouselTariffsCard.js.map +1 -1
- package/mobile/dist/components/CarouselTariffsCard/CarouselTariffsCardAction.d.ts +6 -0
- package/mobile/dist/components/CarouselTariffsCard/CarouselTariffsCardAction.js +2 -0
- package/mobile/dist/components/CarouselTariffsCard/CarouselTariffsCardAction.js.map +1 -0
- package/mobile/dist/components/ExchangeRateTile/ExchangeRateTile.js +1 -1
- package/mobile/dist/components/ExchangeRateTile/ExchangeRateTile.js.map +1 -1
- package/mobile/dist/components/Header/HeaderSecondaryMenu.js +1 -1
- package/mobile/dist/components/Header/HeaderSecondaryMenu.js.map +1 -1
- package/mobile/dist/components/OfficesAtmsMap/AtmsMap.js +1 -1
- package/mobile/dist/components/OfficesAtmsMap/AtmsMap.js.map +1 -1
- package/mobile/dist/components/OfficesAtmsMap/OfficesMap.js +1 -1
- package/mobile/dist/components/OfficesAtmsMap/OfficesMap.js.map +1 -1
- package/mobile/dist/components/StickyBottomMenu/BurgerMenuDialog.js +1 -1
- package/mobile/dist/components/StickyBottomMenu/BurgerMenuDialog.js.map +1 -1
- package/mobile/dist/hooks/useLocation.d.ts +1 -2
- package/mobile/dist/hooks/useLocation.js +33 -27
- package/mobile/dist/hooks/useLocation.js.map +1 -1
- package/mobile/dist/hooks/useRegions.js +1 -3
- package/mobile/dist/hooks/useRegions.js.map +1 -1
- package/mobile/dist/ui-kit/DialogManager/useDialogManager.js +3 -3
- package/mobile/dist/ui-kit/DialogManager/useDialogManager.js.map +1 -1
- package/mobile/dist/ui-kit/DialogManager/useDialogsList.js +1 -1
- package/mobile/dist/ui-kit/DialogManager/useDialogsList.js.map +1 -1
- package/mobile/dist/ui-kit/Foldable/Foldable.d.ts +1 -11
- package/mobile/dist/ui-kit/Foldable/Foldable.js +2 -10
- package/mobile/dist/ui-kit/Foldable/Foldable.js.map +1 -1
- package/mobile/dist/ui-kit/FormField/constants.js +0 -1
- package/mobile/dist/ui-kit/FormField/constants.js.map +1 -1
- package/mobile/dist/ui-kit/FormField/getValidation.js +0 -1
- package/mobile/dist/ui-kit/FormField/getValidation.js.map +1 -1
- package/mobile/dist/ui-kit/LocationDialog/LocationDialog.js +12 -9
- package/mobile/dist/ui-kit/LocationDialog/LocationDialog.js.map +1 -1
- package/mobile/dist/ui-kit/PopupManager/PopupManager.js +1 -1
- package/mobile/dist/ui-kit/PopupManager/PopupManager.js.map +1 -1
- package/mobile/dist/ui-kit/PopupManager/usePopupManager.js +3 -3
- package/mobile/dist/ui-kit/PopupManager/usePopupManager.js.map +1 -1
- package/mobile/lib/EventBus/EventBus.d.ts +4 -17
- package/mobile/lib/EventBus/EventBus.js +10 -29
- package/mobile/lib/EventBus/EventBus.js.map +1 -1
- package/mobile/lib/EventBus/defaultEventBus.d.ts +13 -2
- package/mobile/lib/EventBus/defaultEventBus.js.map +1 -1
- package/mobile/lib/EventBus/useLatestEvent.d.ts +2 -0
- package/mobile/lib/EventBus/useLatestEvent.js +8 -0
- package/mobile/lib/EventBus/useLatestEvent.js.map +1 -0
- package/mobile/lib/common.css +1 -1
- package/mobile/lib/components/CarouselTariffsCard/CarouselTariffsCard.js +26 -12
- package/mobile/lib/components/CarouselTariffsCard/CarouselTariffsCard.js.map +1 -1
- package/mobile/lib/components/CarouselTariffsCard/CarouselTariffsCardAction.d.ts +6 -0
- package/mobile/lib/components/CarouselTariffsCard/CarouselTariffsCardAction.js +2 -0
- package/mobile/lib/components/CarouselTariffsCard/CarouselTariffsCardAction.js.map +1 -0
- package/mobile/lib/components/ExchangeRateTile/ExchangeRateTile.js +2 -2
- package/mobile/lib/components/ExchangeRateTile/ExchangeRateTile.js.map +1 -1
- package/mobile/lib/components/Header/HeaderSecondaryMenu.js +2 -2
- package/mobile/lib/components/Header/HeaderSecondaryMenu.js.map +1 -1
- package/mobile/lib/components/OfficesAtmsMap/AtmsMap.js +2 -2
- package/mobile/lib/components/OfficesAtmsMap/AtmsMap.js.map +1 -1
- package/mobile/lib/components/OfficesAtmsMap/OfficesMap.js +2 -2
- package/mobile/lib/components/OfficesAtmsMap/OfficesMap.js.map +1 -1
- package/mobile/lib/components/StickyBottomMenu/BurgerMenuDialog.js +2 -2
- package/mobile/lib/components/StickyBottomMenu/BurgerMenuDialog.js.map +1 -1
- package/mobile/lib/hooks/useLocation.d.ts +1 -2
- package/mobile/lib/hooks/useLocation.js +33 -26
- package/mobile/lib/hooks/useLocation.js.map +1 -1
- package/mobile/lib/hooks/useRegions.js +1 -3
- package/mobile/lib/hooks/useRegions.js.map +1 -1
- package/mobile/lib/ui-kit/DialogManager/useDialogManager.js +3 -3
- package/mobile/lib/ui-kit/DialogManager/useDialogManager.js.map +1 -1
- package/mobile/lib/ui-kit/DialogManager/useDialogsList.js +1 -1
- package/mobile/lib/ui-kit/DialogManager/useDialogsList.js.map +1 -1
- package/mobile/lib/ui-kit/Foldable/Foldable.d.ts +1 -11
- package/mobile/lib/ui-kit/Foldable/Foldable.js +2 -10
- package/mobile/lib/ui-kit/Foldable/Foldable.js.map +1 -1
- package/mobile/lib/ui-kit/FormField/constants.js +0 -1
- package/mobile/lib/ui-kit/FormField/constants.js.map +1 -1
- package/mobile/lib/ui-kit/FormField/getValidation.js +0 -1
- package/mobile/lib/ui-kit/FormField/getValidation.js.map +1 -1
- package/mobile/lib/ui-kit/LocationDialog/LocationDialog.js +13 -10
- package/mobile/lib/ui-kit/LocationDialog/LocationDialog.js.map +1 -1
- package/mobile/lib/ui-kit/PopupManager/PopupManager.js +1 -1
- package/mobile/lib/ui-kit/PopupManager/PopupManager.js.map +1 -1
- package/mobile/lib/ui-kit/PopupManager/usePopupManager.js +3 -3
- package/mobile/lib/ui-kit/PopupManager/usePopupManager.js.map +1 -1
- package/mobile/src/EventBus/EventBus.ts +15 -51
- package/mobile/src/EventBus/defaultEventBus.ts +14 -2
- package/mobile/src/EventBus/useLatestEvent.ts +16 -0
- package/mobile/src/components/CarouselTariffsCard/CarouselTariffsCard.tsx +66 -23
- package/mobile/src/components/CarouselTariffsCard/CarouselTariffsCardAction.ts +6 -0
- package/mobile/src/components/ExchangeRateTile/ExchangeRateTile.tsx +2 -2
- package/mobile/src/components/Header/HeaderSecondaryMenu.tsx +2 -2
- package/mobile/src/components/OfficesAtmsMap/AtmsMap.tsx +3 -2
- package/mobile/src/components/OfficesAtmsMap/OfficesMap.tsx +2 -2
- package/mobile/src/components/StickyBottomMenu/BurgerMenuDialog.tsx +2 -2
- package/mobile/src/hooks/useLocation.ts +44 -30
- package/mobile/src/hooks/useRegions.ts +1 -4
- package/mobile/src/ui-kit/DialogManager/useDialogManager.ts +3 -3
- package/mobile/src/ui-kit/DialogManager/useDialogsList.ts +1 -1
- package/mobile/src/ui-kit/Foldable/Foldable.tsx +5 -21
- package/mobile/src/ui-kit/FormField/constants.tsx +0 -1
- package/mobile/src/ui-kit/FormField/getValidation.tsx +0 -1
- package/mobile/src/ui-kit/LocationDialog/LocationDialog.tsx +25 -13
- package/mobile/src/ui-kit/PopupManager/PopupManager.tsx +1 -1
- package/mobile/src/ui-kit/PopupManager/usePopupManager.tsx +3 -3
- package/package.json +1 -1
- package/src/EventBus/EventBus.ts +15 -51
- package/src/EventBus/defaultEventBus.ts +14 -2
- package/src/EventBus/useLatestEvent.ts +16 -0
- package/src/components/CarouselTariffsCard/CarouselTariffsCard.tsx +66 -23
- package/src/components/CarouselTariffsCard/CarouselTariffsCardAction.ts +6 -0
- package/src/components/ExchangeRateTile/ExchangeRateTile.tsx +2 -2
- package/src/components/Header/HeaderSecondaryMenu.tsx +2 -2
- package/src/components/OfficesAtmsMap/AtmsMap.tsx +3 -2
- package/src/components/OfficesAtmsMap/OfficesMap.tsx +2 -2
- package/src/components/StickyBottomMenu/BurgerMenuDialog.tsx +2 -2
- package/src/hooks/useLocation.ts +44 -30
- package/src/hooks/useRegions.ts +1 -4
- package/src/ui-kit/DialogManager/useDialogManager.ts +3 -3
- package/src/ui-kit/DialogManager/useDialogsList.ts +1 -1
- package/src/ui-kit/Foldable/Foldable.tsx +5 -21
- package/src/ui-kit/FormField/constants.tsx +0 -1
- package/src/ui-kit/FormField/getValidation.tsx +0 -1
- package/src/ui-kit/LocationDialog/LocationDialog.tsx +25 -13
- package/src/ui-kit/PopupManager/PopupManager.tsx +1 -1
- package/src/ui-kit/PopupManager/usePopupManager.tsx +3 -3
- package/bundle/EventBus/useSubject.d.ts +0 -2
- package/bundle/EventBus/useSubjectState.d.ts +0 -2
- package/bundle/components/CarouselTariffsCard/CardCellsSection.d.ts +0 -9
- package/bundle/components/CarouselTariffsCard/carouselTariffsCardEventBus.d.ts +0 -9
- package/bundle/hooks/useReducer.d.ts +0 -4
- package/bundle/ui-kit/LocationDialog/SelectedLocation.d.ts +0 -5
- package/dist/EventBus/useSubject.d.ts +0 -2
- package/dist/EventBus/useSubject.js +0 -17
- package/dist/EventBus/useSubject.js.map +0 -1
- package/dist/EventBus/useSubjectState.d.ts +0 -2
- package/dist/EventBus/useSubjectState.js +0 -10
- package/dist/EventBus/useSubjectState.js.map +0 -1
- package/dist/components/CarouselTariffsCard/CardCellsSection.d.ts +0 -9
- package/dist/components/CarouselTariffsCard/CardCellsSection.js +0 -18
- package/dist/components/CarouselTariffsCard/CardCellsSection.js.map +0 -1
- package/dist/components/CarouselTariffsCard/carouselTariffsCardEventBus.d.ts +0 -9
- package/dist/components/CarouselTariffsCard/carouselTariffsCardEventBus.js +0 -5
- package/dist/components/CarouselTariffsCard/carouselTariffsCardEventBus.js.map +0 -1
- package/dist/hooks/useReducer.d.ts +0 -4
- package/dist/hooks/useReducer.js +0 -12
- package/dist/hooks/useReducer.js.map +0 -1
- package/dist/ui-kit/LocationDialog/SelectedLocation.d.ts +0 -5
- package/dist/ui-kit/LocationDialog/SelectedLocation.js +0 -15
- package/dist/ui-kit/LocationDialog/SelectedLocation.js.map +0 -1
- package/lib/EventBus/useSubject.d.ts +0 -2
- package/lib/EventBus/useSubject.js +0 -14
- package/lib/EventBus/useSubject.js.map +0 -1
- package/lib/EventBus/useSubjectState.d.ts +0 -2
- package/lib/EventBus/useSubjectState.js +0 -7
- package/lib/EventBus/useSubjectState.js.map +0 -1
- package/lib/components/CarouselTariffsCard/CardCellsSection.d.ts +0 -9
- package/lib/components/CarouselTariffsCard/CardCellsSection.js +0 -16
- package/lib/components/CarouselTariffsCard/CardCellsSection.js.map +0 -1
- package/lib/components/CarouselTariffsCard/carouselTariffsCardEventBus.d.ts +0 -9
- package/lib/components/CarouselTariffsCard/carouselTariffsCardEventBus.js +0 -3
- package/lib/components/CarouselTariffsCard/carouselTariffsCardEventBus.js.map +0 -1
- package/lib/hooks/useReducer.d.ts +0 -4
- package/lib/hooks/useReducer.js +0 -9
- package/lib/hooks/useReducer.js.map +0 -1
- package/lib/ui-kit/LocationDialog/SelectedLocation.d.ts +0 -5
- package/lib/ui-kit/LocationDialog/SelectedLocation.js +0 -13
- package/lib/ui-kit/LocationDialog/SelectedLocation.js.map +0 -1
- package/mobile/bundle/EventBus/useSubject.d.ts +0 -2
- package/mobile/bundle/EventBus/useSubjectState.d.ts +0 -2
- package/mobile/bundle/components/CarouselTariffsCard/CardCellsSection.d.ts +0 -9
- package/mobile/bundle/components/CarouselTariffsCard/carouselTariffsCardEventBus.d.ts +0 -9
- package/mobile/bundle/hooks/useReducer.d.ts +0 -4
- package/mobile/bundle/ui-kit/LocationDialog/SelectedLocation.d.ts +0 -5
- package/mobile/dist/EventBus/useSubject.d.ts +0 -2
- package/mobile/dist/EventBus/useSubject.js +0 -17
- package/mobile/dist/EventBus/useSubject.js.map +0 -1
- package/mobile/dist/EventBus/useSubjectState.d.ts +0 -2
- package/mobile/dist/EventBus/useSubjectState.js +0 -10
- package/mobile/dist/EventBus/useSubjectState.js.map +0 -1
- package/mobile/dist/components/CarouselTariffsCard/CardCellsSection.d.ts +0 -9
- package/mobile/dist/components/CarouselTariffsCard/CardCellsSection.js +0 -18
- package/mobile/dist/components/CarouselTariffsCard/CardCellsSection.js.map +0 -1
- package/mobile/dist/components/CarouselTariffsCard/carouselTariffsCardEventBus.d.ts +0 -9
- package/mobile/dist/components/CarouselTariffsCard/carouselTariffsCardEventBus.js +0 -5
- package/mobile/dist/components/CarouselTariffsCard/carouselTariffsCardEventBus.js.map +0 -1
- package/mobile/dist/hooks/useReducer.d.ts +0 -4
- package/mobile/dist/hooks/useReducer.js +0 -12
- package/mobile/dist/hooks/useReducer.js.map +0 -1
- package/mobile/dist/ui-kit/LocationDialog/SelectedLocation.d.ts +0 -5
- package/mobile/dist/ui-kit/LocationDialog/SelectedLocation.js +0 -15
- package/mobile/dist/ui-kit/LocationDialog/SelectedLocation.js.map +0 -1
- package/mobile/lib/EventBus/useSubject.d.ts +0 -2
- package/mobile/lib/EventBus/useSubject.js +0 -14
- package/mobile/lib/EventBus/useSubject.js.map +0 -1
- package/mobile/lib/EventBus/useSubjectState.d.ts +0 -2
- package/mobile/lib/EventBus/useSubjectState.js +0 -7
- package/mobile/lib/EventBus/useSubjectState.js.map +0 -1
- package/mobile/lib/components/CarouselTariffsCard/CardCellsSection.d.ts +0 -9
- package/mobile/lib/components/CarouselTariffsCard/CardCellsSection.js +0 -16
- package/mobile/lib/components/CarouselTariffsCard/CardCellsSection.js.map +0 -1
- package/mobile/lib/components/CarouselTariffsCard/carouselTariffsCardEventBus.d.ts +0 -9
- package/mobile/lib/components/CarouselTariffsCard/carouselTariffsCardEventBus.js +0 -3
- package/mobile/lib/components/CarouselTariffsCard/carouselTariffsCardEventBus.js.map +0 -1
- package/mobile/lib/hooks/useReducer.d.ts +0 -4
- package/mobile/lib/hooks/useReducer.js +0 -9
- package/mobile/lib/hooks/useReducer.js.map +0 -1
- package/mobile/lib/ui-kit/LocationDialog/SelectedLocation.d.ts +0 -5
- package/mobile/lib/ui-kit/LocationDialog/SelectedLocation.js +0 -13
- package/mobile/lib/ui-kit/LocationDialog/SelectedLocation.js.map +0 -1
- package/mobile/src/EventBus/useSubject.ts +0 -19
- package/mobile/src/EventBus/useSubjectState.ts +0 -13
- package/mobile/src/components/CarouselTariffsCard/CardCellsSection.tsx +0 -54
- package/mobile/src/components/CarouselTariffsCard/carouselTariffsCardEventBus.ts +0 -11
- package/mobile/src/hooks/useReducer.ts +0 -21
- package/mobile/src/ui-kit/LocationDialog/SelectedLocation.tsx +0 -27
- package/src/EventBus/useSubject.ts +0 -19
- package/src/EventBus/useSubjectState.ts +0 -13
- package/src/components/CarouselTariffsCard/CardCellsSection.tsx +0 -54
- package/src/components/CarouselTariffsCard/carouselTariffsCardEventBus.ts +0 -11
- package/src/hooks/useReducer.ts +0 -21
- package/src/ui-kit/LocationDialog/SelectedLocation.tsx +0 -27
package/package.json
CHANGED
package/src/EventBus/EventBus.ts
CHANGED
|
@@ -1,72 +1,36 @@
|
|
|
1
|
-
export
|
|
2
|
-
|
|
3
|
-
type Cleanup = () => void;
|
|
4
|
-
|
|
5
|
-
export interface EventBusObservable<EM extends Record<string, any>> {
|
|
6
|
-
subscribe<K extends keyof EM>(type: K, listener: Subscriber<EM[K]>): Cleanup;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
export interface EventBusEmitter<EM extends Record<string, any>> {
|
|
10
|
-
fire<K extends keyof EM>(type: K, event: EM[K]): void;
|
|
11
|
-
subject<K extends keyof EM>(type: K, event: EM[K]): Cleanup;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
export class EventBus<EM extends Record<string, any>>
|
|
15
|
-
implements EventBusObservable<EM>, EventBusEmitter<EM>
|
|
16
|
-
{
|
|
17
|
-
private subscribersMap: Partial<Record<keyof EM, Subscriber<EM[keyof EM]>[]>> = {};
|
|
1
|
+
export class EventBus<EM extends Record<string, any>> {
|
|
2
|
+
private subscribers: Partial<Record<keyof EM, Array<(ev: EM[keyof EM]) => void>>> = {};
|
|
18
3
|
private subjectsStateMap: Partial<EM> = {};
|
|
19
4
|
|
|
20
|
-
|
|
21
|
-
|
|
5
|
+
subscribe<K extends keyof EM>(type: K, listener: (event: EM[K]) => void) {
|
|
6
|
+
this.subscribers[type] = (this.subscribers[type] || []).concat(
|
|
7
|
+
listener as (ev: EM[keyof EM]) => void,
|
|
8
|
+
);
|
|
22
9
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
this.fireSubscribers([listener], this.subjectsStateMap[type]);
|
|
10
|
+
const latestEvent = this.subjectsStateMap[type];
|
|
11
|
+
if (latestEvent) {
|
|
12
|
+
listener(latestEvent as EM[K]);
|
|
13
|
+
}
|
|
28
14
|
|
|
29
15
|
return () => {
|
|
30
16
|
this.unsubscribe(type, listener);
|
|
31
17
|
};
|
|
32
18
|
}
|
|
33
19
|
|
|
34
|
-
private unsubscribe<K extends keyof EM>(type: K, listener:
|
|
35
|
-
|
|
36
|
-
if (index && index !== -1) {
|
|
37
|
-
this.subscribersMap[type]?.splice(index, 1);
|
|
38
|
-
}
|
|
20
|
+
private unsubscribe<K extends keyof EM>(type: K, listener: (event: EM[K]) => void) {
|
|
21
|
+
this.subscribers[type] = this.subscribers[type]?.filter((s) => s !== listener);
|
|
39
22
|
}
|
|
40
23
|
|
|
41
24
|
fire<K extends keyof EM>(type: K, event: EM[K]) {
|
|
42
25
|
const isSubjectDeclared = type in this.subjectsStateMap;
|
|
43
26
|
if (isSubjectDeclared) {
|
|
44
|
-
this.subject(type, event);
|
|
45
|
-
} else {
|
|
46
|
-
this.fireSubscribers(this.subscribersMap[type], event);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
subject<K extends keyof EM>(type: K, event: EM[K]): Cleanup {
|
|
51
|
-
if (this.subjectsStateMap[type] !== event) {
|
|
52
27
|
this.subjectsStateMap[type] = event;
|
|
53
|
-
this.fireSubscribers(this.subscribersMap[type], event);
|
|
54
28
|
}
|
|
55
29
|
|
|
56
|
-
|
|
57
|
-
delete this.subjectsStateMap[type];
|
|
58
|
-
};
|
|
30
|
+
this.subscribers[type]?.forEach((s) => s(event));
|
|
59
31
|
}
|
|
60
32
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
event: EM[K] | undefined,
|
|
64
|
-
) {
|
|
65
|
-
if (!subscribers || !event) {
|
|
66
|
-
return;
|
|
67
|
-
}
|
|
68
|
-
for (const _ of subscribers) {
|
|
69
|
-
_(event);
|
|
70
|
-
}
|
|
33
|
+
subject<K extends keyof EM>(type: K, event: EM[K]) {
|
|
34
|
+
this.subjectsStateMap[type] = event;
|
|
71
35
|
}
|
|
72
36
|
}
|
|
@@ -1,10 +1,22 @@
|
|
|
1
|
+
import { type CarouselTariffsCardAction } from '../components/CarouselTariffsCard/CarouselTariffsCardAction';
|
|
2
|
+
import { type Tab } from '../components/TabsLayout/TabsLayoutContent';
|
|
1
3
|
import { type Region } from '../hooks/useRegions';
|
|
2
4
|
import { type DialogAction } from '../ui-kit/DialogManager/DialogAction';
|
|
3
5
|
import { type PopupAction } from '../ui-kit/PopupManager/PopupAction';
|
|
4
6
|
import { EventBus } from './EventBus';
|
|
5
7
|
|
|
6
|
-
|
|
8
|
+
interface TabActivationEvent {
|
|
9
|
+
type?: Tab['type'];
|
|
10
|
+
groupName?: string;
|
|
11
|
+
label?: string;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
interface GlobalEventMap {
|
|
7
15
|
location: Region;
|
|
8
16
|
dialog: DialogAction;
|
|
9
17
|
popup: PopupAction;
|
|
10
|
-
|
|
18
|
+
tab: TabActivationEvent;
|
|
19
|
+
fold: CarouselTariffsCardAction;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export const defaultEventBus = new EventBus<GlobalEventMap>();
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { useCallback, useEffect, useState } from '@redneckz/uni-jsx/lib/hooks';
|
|
2
|
+
import { type EventBus } from './EventBus';
|
|
3
|
+
|
|
4
|
+
export const useLatestEvent = <EM extends Record<string, any>, K extends keyof EM>(
|
|
5
|
+
eventBus: EventBus<EM>,
|
|
6
|
+
type: K,
|
|
7
|
+
initialEvent?: EM[K],
|
|
8
|
+
): [EM[K] | null, (_: EM[K]) => void] => {
|
|
9
|
+
const [latestEvent, setLatestEvent] = useState<EM[K] | null>(initialEvent || null);
|
|
10
|
+
|
|
11
|
+
useEffect(() => eventBus.subscribe(type, (_) => setLatestEvent(_)), [eventBus, type]);
|
|
12
|
+
|
|
13
|
+
const fireEvent = useCallback((_: EM[K]) => eventBus.fire(type, _), [eventBus, type]);
|
|
14
|
+
|
|
15
|
+
return [latestEvent, fireEvent];
|
|
16
|
+
};
|
|
@@ -1,22 +1,28 @@
|
|
|
1
1
|
import { JSX } from '@redneckz/uni-jsx';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { useEffect, useState } from '@redneckz/uni-jsx/lib/hooks';
|
|
3
|
+
import { defaultEventBus } from '../../EventBus/defaultEventBus';
|
|
4
|
+
import { type AspectsDef } from '../../model/AspectsProps';
|
|
5
|
+
import { type Slot } from '../../model/ContentPageDef';
|
|
6
|
+
import { type VNode } from '../../model/VNode';
|
|
4
7
|
import { BlockWrapper } from '../../ui-kit/BlockWrapper';
|
|
8
|
+
import { Foldable } from '../../ui-kit/Foldable/Foldable';
|
|
9
|
+
import { FoldableSection } from '../../ui-kit/Foldable/FoldableSection';
|
|
5
10
|
import { Heading } from '../../ui-kit/Heading/Heading';
|
|
11
|
+
import { Icon } from '../../ui-kit/Icon/Icon';
|
|
6
12
|
import { Img } from '../../ui-kit/Img/Img';
|
|
7
13
|
import { LinkButton } from '../../ui-kit/LinkButton/LinkButton';
|
|
8
14
|
import { type UniBlockProps } from '../../UniBlock/UniBlockProps';
|
|
15
|
+
import { getAspectsAttributes } from '../../utils/dataAttributes';
|
|
9
16
|
import { isIcon } from '../../utils/isIcon';
|
|
10
17
|
import { style } from '../../utils/style';
|
|
11
|
-
import { CardCellsSection } from './CardCellsSection';
|
|
12
18
|
import { type CarouselTariffsCardContent } from './CarouselTariffsCardContent';
|
|
13
|
-
import {
|
|
19
|
+
import { renderCardInfo } from './renderCardInfo';
|
|
14
20
|
|
|
15
21
|
export interface CarouselTariffsCardProps extends CarouselTariffsCardContent, UniBlockProps {}
|
|
16
22
|
|
|
17
23
|
export const CarouselTariffsCard = JSX<CarouselTariffsCardProps>(
|
|
18
24
|
({
|
|
19
|
-
className,
|
|
25
|
+
className = '',
|
|
20
26
|
title,
|
|
21
27
|
align = 'text-center',
|
|
22
28
|
icon,
|
|
@@ -27,20 +33,22 @@ export const CarouselTariffsCard = JSX<CarouselTariffsCardProps>(
|
|
|
27
33
|
data,
|
|
28
34
|
...rest
|
|
29
35
|
}) => {
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
+
const cellsNode = cardCells.map(renderCardInfo);
|
|
37
|
+
|
|
38
|
+
const [visibleCells, hiddenCells] =
|
|
39
|
+
visibleCellsCount > 0
|
|
40
|
+
? [cellsNode.slice(0, visibleCellsCount), cellsNode.slice(visibleCellsCount)]
|
|
41
|
+
: [cellsNode, []];
|
|
42
|
+
const [isVisible, setIsVisible] = useState(false);
|
|
36
43
|
|
|
37
|
-
|
|
44
|
+
useEffect(
|
|
38
45
|
() =>
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
46
|
+
defaultEventBus.subscribe('fold', (event) => {
|
|
47
|
+
if (options?.parent !== undefined && event.parent === options?.parent) {
|
|
48
|
+
setIsVisible(event.isUnfolded);
|
|
49
|
+
}
|
|
42
50
|
}),
|
|
43
|
-
[
|
|
51
|
+
[options?.parent],
|
|
44
52
|
);
|
|
45
53
|
|
|
46
54
|
return (
|
|
@@ -54,14 +62,49 @@ export const CarouselTariffsCard = JSX<CarouselTariffsCardProps>(
|
|
|
54
62
|
<Heading className={style('pt-xs', align)} headingType="h5" title={title} />
|
|
55
63
|
) : null}
|
|
56
64
|
{button?.text ? <LinkButton className="w-full mt-m mb-lg" {...button} /> : null}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
65
|
+
{hiddenCells.length ? (
|
|
66
|
+
<Foldable
|
|
67
|
+
renderFoldableSection={() => (
|
|
68
|
+
<div>
|
|
69
|
+
{visibleCells}
|
|
70
|
+
<FoldableSection isUnfolded={isVisible}>{hiddenCells}</FoldableSection>
|
|
71
|
+
</div>
|
|
72
|
+
)}
|
|
73
|
+
renderFoldButton={
|
|
74
|
+
cardCells.length >= visibleCellsCount
|
|
75
|
+
? renderFoldButton(options?.parent, data, isVisible)
|
|
76
|
+
: null
|
|
77
|
+
}
|
|
78
|
+
/>
|
|
79
|
+
) : (
|
|
80
|
+
<div>{visibleCells}</div>
|
|
81
|
+
)}
|
|
64
82
|
</BlockWrapper>
|
|
65
83
|
);
|
|
66
84
|
},
|
|
67
85
|
);
|
|
86
|
+
|
|
87
|
+
const renderFoldButton =
|
|
88
|
+
(parent?: Slot, data?: AspectsDef[], isUnfolded = false) =>
|
|
89
|
+
(): VNode =>
|
|
90
|
+
(
|
|
91
|
+
<button
|
|
92
|
+
className="w-full cursor-pointer text-primary-main pt-lg flex justify-between items-center"
|
|
93
|
+
onClick={() => {
|
|
94
|
+
if (parent !== undefined) {
|
|
95
|
+
defaultEventBus.fire('fold', { type: 'fold', isUnfolded: !isUnfolded, parent });
|
|
96
|
+
}
|
|
97
|
+
}}
|
|
98
|
+
type="button"
|
|
99
|
+
// eslint-disable-next-line react/jsx-props-no-spreading
|
|
100
|
+
{...(isUnfolded ? getAspectsAttributes(data) : {})}
|
|
101
|
+
>
|
|
102
|
+
<div>{isUnfolded ? 'Скрыть' : 'Подробнее о тарифе'}</div>
|
|
103
|
+
<Icon
|
|
104
|
+
className="text-primary-text"
|
|
105
|
+
name={isUnfolded ? 'ArrowUpIcon' : 'ArrowDownIcon'}
|
|
106
|
+
width="16"
|
|
107
|
+
height="16"
|
|
108
|
+
/>
|
|
109
|
+
</button>
|
|
110
|
+
);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { JSX } from '@redneckz/uni-jsx';
|
|
2
|
-
import {
|
|
2
|
+
import { useLocation } from '../../hooks/useLocation';
|
|
3
3
|
import { BaseTile } from '../../ui-kit/BaseTile/BaseTile';
|
|
4
4
|
import { BlockWrapper } from '../../ui-kit/BlockWrapper';
|
|
5
5
|
import { Heading } from '../../ui-kit/Heading/Heading';
|
|
@@ -19,7 +19,7 @@ export interface ExchangeRateTileProps extends ExchangeRateTileContent, UniBlock
|
|
|
19
19
|
|
|
20
20
|
export const ExchangeRateTile = JSX<ExchangeRateTileProps>(
|
|
21
21
|
({ className = '', title = 'Курсы обмена валют', button, ...rest }) => {
|
|
22
|
-
const currentLocation =
|
|
22
|
+
const [currentLocation] = useLocation();
|
|
23
23
|
const exchangeRates = useFetchExchangeRateData(currentLocation);
|
|
24
24
|
|
|
25
25
|
const currencyRates = getCurrencyRates(exchangeRates?.exchangeRate?.currencies);
|
|
@@ -4,7 +4,7 @@ import { type SearchHeaderProps } from '../../data/CommonData';
|
|
|
4
4
|
import { type HeaderData } from '../../data/HeaderData';
|
|
5
5
|
import { type NavigationData } from '../../data/NavigationData';
|
|
6
6
|
import { getAspectsWithInclude } from '../../hooks/useAspects/aspects/getAspectsWithInclude';
|
|
7
|
-
import {
|
|
7
|
+
import { useLocation } from '../../hooks/useLocation';
|
|
8
8
|
import { type BlockVersion } from '../../model/BlockVersion';
|
|
9
9
|
import { type IconVersion } from '../../model/IconVersion';
|
|
10
10
|
import { useLocationDialog } from '../../ui-kit/LocationDialog/useLocationDialog';
|
|
@@ -22,7 +22,7 @@ export const HeaderSecondaryMenu = JSX<HeaderSecondaryMenuProps>(
|
|
|
22
22
|
({ className, version, ...rest }) => {
|
|
23
23
|
const iconVersion: IconVersion = version === 'transparent' ? 'white' : 'black';
|
|
24
24
|
|
|
25
|
-
const currentLocation =
|
|
25
|
+
const [currentLocation] = useLocation(rest?.branches?.default);
|
|
26
26
|
|
|
27
27
|
const searchDialog = useSearchDialog(rest);
|
|
28
28
|
const locationDialog = useLocationDialog(rest);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { JSX } from '@redneckz/uni-jsx';
|
|
2
|
-
import {
|
|
2
|
+
import { useLocation } from '../../hooks/useLocation';
|
|
3
3
|
import { type AtmsDef } from './OfficesAtmsMapContent';
|
|
4
4
|
import { OfficesAtmsMapLayout } from './OfficesAtmsMapLayout';
|
|
5
5
|
import { type Atm } from './OfficesAtmsMapProps';
|
|
@@ -30,7 +30,8 @@ export interface AtmsMapProps {
|
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
export const AtmsMap = JSX<AtmsMapProps>(({ descriptionData, className }) => {
|
|
33
|
-
const currentLocation =
|
|
33
|
+
const [currentLocation] = useLocation();
|
|
34
|
+
|
|
34
35
|
const regionCode = currentLocation?.code ?? '000';
|
|
35
36
|
|
|
36
37
|
const { data: officesData, isLoad } = useAtms(regionCode);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { JSX } from '@redneckz/uni-jsx';
|
|
2
|
-
import {
|
|
2
|
+
import { useLocation } from '../../hooks/useLocation';
|
|
3
3
|
import { OfficesAtmsMapLayout } from './OfficesAtmsMapLayout';
|
|
4
4
|
import { getOfficePoint, renderOfficeCard } from './renderOfficeCard';
|
|
5
5
|
import { getRemoteWorkplacePoint, renderRemoteWorkplaceCard } from './renderRemoteWorkplaceCard';
|
|
@@ -10,7 +10,7 @@ export interface OfficesMapProps {
|
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
export const OfficesMap = JSX<OfficesMapProps>(({ className }) => {
|
|
13
|
-
const currentLocation =
|
|
13
|
+
const [currentLocation] = useLocation();
|
|
14
14
|
const regionCode = currentLocation?.code ?? '000';
|
|
15
15
|
const { data, isLoad } = useOffices(regionCode);
|
|
16
16
|
|
|
@@ -4,7 +4,7 @@ import { type HeaderData } from '../../data/HeaderData';
|
|
|
4
4
|
import { type JSONRefObject } from '../../data/JSONRefObject';
|
|
5
5
|
import { type StickyMenuItem } from '../../data/StickyMobileData';
|
|
6
6
|
import { env } from '../../Env';
|
|
7
|
-
import {
|
|
7
|
+
import { useLocation } from '../../hooks/useLocation';
|
|
8
8
|
import { Heading } from '../../ui-kit/Heading/Heading';
|
|
9
9
|
import { useLocationDialog } from '../../ui-kit/LocationDialog/useLocationDialog';
|
|
10
10
|
import { getBasePath } from '../../utils/getBasePath';
|
|
@@ -22,7 +22,7 @@ export interface BurgerMenuDialogProps {
|
|
|
22
22
|
export const BurgerMenuDialog = JSX<BurgerMenuDialogProps>(
|
|
23
23
|
({ menuRef, menuItem, locationDialogProps, closeAll }) => {
|
|
24
24
|
const locationDialog = useLocationDialog(locationDialogProps || {});
|
|
25
|
-
const { name: location } =
|
|
25
|
+
const [{ name: location }] = useLocation();
|
|
26
26
|
const menuDimensions = menuRef?.current?.getBoundingClientRect();
|
|
27
27
|
const basePath = getBasePath(env.SITE_URL);
|
|
28
28
|
|
package/src/hooks/useLocation.ts
CHANGED
|
@@ -1,40 +1,54 @@
|
|
|
1
|
-
import { useEffect } from '@redneckz/uni-jsx/lib/hooks';
|
|
1
|
+
import { useCallback, useEffect } from '@redneckz/uni-jsx/lib/hooks';
|
|
2
|
+
import { useAsyncData } from '@redneckz/uni-jsx/lib/hooks/useAsyncData';
|
|
2
3
|
import { defaultEventBus } from '../EventBus/defaultEventBus';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { fetchJSON } from '../utils/fetchJSON';
|
|
4
|
+
import { useLatestEvent } from '../EventBus/useLatestEvent';
|
|
5
|
+
import { fetchJSONUnsafe, type FetchJSONUnsafeType } from '../utils/fetchJSON';
|
|
6
6
|
import { type Region } from './useRegions';
|
|
7
7
|
|
|
8
8
|
const REGION_URL = '/api/v1/region';
|
|
9
9
|
const LOCATION_STORAGE_KEY = 'location';
|
|
10
10
|
|
|
11
|
-
export function useLocation(defaultLocation = 'Москва'): (_: Region) => void {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
} catch (ex) {
|
|
31
|
-
// Do nothing
|
|
11
|
+
export function useLocation(defaultLocation = 'Москва'): [Region, (_: Region) => void] {
|
|
12
|
+
const [currentLocation, fireCurrentLocation] = useLatestEvent(
|
|
13
|
+
defaultEventBus,
|
|
14
|
+
'location',
|
|
15
|
+
restoreLocation() ?? { name: defaultLocation },
|
|
16
|
+
);
|
|
17
|
+
|
|
18
|
+
const selectCurrentLocation = useCallback((_: Region) => {
|
|
19
|
+
storeLocation(_);
|
|
20
|
+
fireCurrentLocation(_);
|
|
21
|
+
}, []);
|
|
22
|
+
|
|
23
|
+
const { data } = useAsyncData(
|
|
24
|
+
hasStoredLocation() ? null : REGION_URL,
|
|
25
|
+
fetchJSONUnsafe as FetchJSONUnsafeType<Region>,
|
|
26
|
+
);
|
|
27
|
+
useEffect(() => {
|
|
28
|
+
if (data && !hasStoredLocation()) {
|
|
29
|
+
fireCurrentLocation(data);
|
|
32
30
|
}
|
|
31
|
+
}, [data]);
|
|
33
32
|
|
|
34
|
-
|
|
35
|
-
};
|
|
33
|
+
return [currentLocation ?? { name: defaultLocation }, selectCurrentLocation];
|
|
36
34
|
}
|
|
37
35
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
36
|
+
const hasStoredLocation = () => Boolean(globalThis.localStorage?.getItem(LOCATION_STORAGE_KEY));
|
|
37
|
+
|
|
38
|
+
const restoreLocation = (): Region | null => {
|
|
39
|
+
try {
|
|
40
|
+
const data = globalThis.localStorage?.getItem(LOCATION_STORAGE_KEY);
|
|
41
|
+
|
|
42
|
+
return data && JSON.parse(data);
|
|
43
|
+
} catch (ex) {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
const storeLocation = (_: Region) => {
|
|
49
|
+
try {
|
|
50
|
+
globalThis.localStorage?.setItem(LOCATION_STORAGE_KEY, JSON.stringify(_));
|
|
51
|
+
} catch (ex) {
|
|
52
|
+
// Do nothing
|
|
53
|
+
}
|
|
54
|
+
};
|
package/src/hooks/useRegions.ts
CHANGED
|
@@ -11,11 +11,8 @@ export interface Region {
|
|
|
11
11
|
localities?: string[];
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
-
const EMPTY_REGIONS: Region[] = [];
|
|
15
|
-
|
|
16
|
-
// TODO Почему url можно менять? Разве смысл не в инкапсуляции api url. Тоже под рефакторинг попадает
|
|
17
14
|
export function useRegions(url: string = REGIONS_URL): Region[] {
|
|
18
15
|
const { data } = useAsyncData(url, fetchJSONUnsafe as FetchJSONUnsafeType<Region[]>);
|
|
19
16
|
|
|
20
|
-
return Array.isArray(data) ? data :
|
|
17
|
+
return Array.isArray(data) ? data : [];
|
|
21
18
|
}
|
|
@@ -8,7 +8,7 @@ export interface DialogOptions {
|
|
|
8
8
|
|
|
9
9
|
export const useDialogManager = () => ({
|
|
10
10
|
open: (dialog: VNode, options: DialogOptions = {}) =>
|
|
11
|
-
defaultEventBus.
|
|
12
|
-
close: () => defaultEventBus.
|
|
13
|
-
closeAll: () => defaultEventBus.
|
|
11
|
+
defaultEventBus.fire('dialog', { type: 'open', dialog, ...options }),
|
|
12
|
+
close: () => defaultEventBus.fire('dialog', { type: 'close' }),
|
|
13
|
+
closeAll: () => defaultEventBus.fire('dialog', { type: 'close', all: true }),
|
|
14
14
|
});
|
|
@@ -3,30 +3,14 @@ import { useCallback, useState } from '@redneckz/uni-jsx/lib/hooks';
|
|
|
3
3
|
import { type VNode } from '../../model/VNode';
|
|
4
4
|
import { type FoldablePartProps } from './FoldablePartProps';
|
|
5
5
|
|
|
6
|
-
export interface
|
|
6
|
+
export interface FoldableProps {
|
|
7
7
|
className?: string;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
export interface FoldableProps extends FoldableWrapperProps {
|
|
11
8
|
unfoldedByDefault?: boolean;
|
|
12
9
|
isFoldButtonOnTop?: boolean;
|
|
13
10
|
renderFoldableSection: (props: FoldablePartProps) => VNode;
|
|
14
11
|
renderFoldButton?: ((props: FoldablePartProps) => VNode) | null;
|
|
15
12
|
}
|
|
16
13
|
|
|
17
|
-
export const FoldableWrapper = JSX<FoldableWrapperProps>(({ className, children }) => (
|
|
18
|
-
<div className={className} role="group">
|
|
19
|
-
{children}
|
|
20
|
-
</div>
|
|
21
|
-
));
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* Какой то бесполезный компонент. Его можно заменить на useBool
|
|
25
|
-
* Лучше оставить только обёрточный div с необходимой атрибутикой
|
|
26
|
-
* и сделать пассивный компонент
|
|
27
|
-
*
|
|
28
|
-
* @deprecated
|
|
29
|
-
*/
|
|
30
14
|
export const Foldable = JSX<FoldableProps>(
|
|
31
15
|
({
|
|
32
16
|
className = '',
|
|
@@ -45,15 +29,15 @@ export const Foldable = JSX<FoldableProps>(
|
|
|
45
29
|
const buttonNode = renderFoldButton ? renderFoldButton({ isUnfolded, onToggle }) : null;
|
|
46
30
|
|
|
47
31
|
return isFoldButtonOnTop ? (
|
|
48
|
-
<
|
|
32
|
+
<div className={className} role="group">
|
|
49
33
|
{buttonNode}
|
|
50
34
|
{sectionNode}
|
|
51
|
-
</
|
|
35
|
+
</div>
|
|
52
36
|
) : (
|
|
53
|
-
<
|
|
37
|
+
<div className={className} role="group">
|
|
54
38
|
{sectionNode}
|
|
55
39
|
{buttonNode}
|
|
56
|
-
</
|
|
40
|
+
</div>
|
|
57
41
|
);
|
|
58
42
|
},
|
|
59
43
|
);
|
|
@@ -2,6 +2,5 @@ import { type FieldProps } from '../../hooks/useForm';
|
|
|
2
2
|
import { type Validator } from '../../validation/validator';
|
|
3
3
|
import { withValidator } from '../../validation/withValidator';
|
|
4
4
|
|
|
5
|
-
// TODO Зачем это?
|
|
6
5
|
export const getValidation = (field: FieldProps<any>, validator: Validator, required = false) =>
|
|
7
6
|
required ? withValidator(field, validator) : field;
|
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
import { JSX } from '@redneckz/uni-jsx';
|
|
2
|
-
import { useCallback,
|
|
2
|
+
import { useCallback, useState } from '@redneckz/uni-jsx/lib/hooks';
|
|
3
3
|
import { type BranchesHeader, type ForeignOfficeProps } from '../../data/HeaderData';
|
|
4
|
+
import { useLink } from '../../hooks/useLink';
|
|
4
5
|
import { useLocation } from '../../hooks/useLocation';
|
|
5
6
|
import { useRegions, type Region } from '../../hooks/useRegions';
|
|
6
7
|
import { groupBy } from '../../utils/groupBy';
|
|
7
8
|
import { jaroWinklerDistance } from '../../utils/jaroWinklerDistance';
|
|
8
9
|
import { Dialog } from '../DialogManager/Dialog';
|
|
9
10
|
import { useDialogManager } from '../DialogManager/useDialogManager';
|
|
11
|
+
import { LinkWrapper } from '../LinkWrapper/LinkWrapper';
|
|
12
|
+
import { Paragraph } from '../Paragraph/Paragraph';
|
|
10
13
|
import { Text } from '../Text/Text';
|
|
11
14
|
import { renderForeignOffices } from './renderForeignOffices';
|
|
12
15
|
import { renderRegion } from './renderRegion';
|
|
13
16
|
import { renderRegionGroup } from './renderRegionGroup';
|
|
14
17
|
import { SearchBar } from './SearchBar';
|
|
15
|
-
import { SelectedLocation } from './SelectedLocation';
|
|
16
18
|
|
|
17
19
|
const SEARCH_TERM_MIN_LENGTH = 3;
|
|
18
20
|
|
|
@@ -22,21 +24,22 @@ export interface LocationDialogProps {
|
|
|
22
24
|
}
|
|
23
25
|
|
|
24
26
|
export const LocationDialog = JSX<LocationDialogProps>(({ foreignOffices, branches }) => {
|
|
25
|
-
const
|
|
27
|
+
const [currentLocation, selectCurrentLocation] = useLocation(branches?.default);
|
|
28
|
+
|
|
29
|
+
const link = useLink();
|
|
30
|
+
const { href } = link({ href: `/branches/${currentLocation.slug}` });
|
|
26
31
|
|
|
27
32
|
const [query, setQuery] = useState('');
|
|
28
33
|
|
|
29
|
-
const
|
|
30
|
-
|
|
31
|
-
() => cleanUpRegions(rawRegions).sort((a, b) => (a.name ?? '').localeCompare(b.name ?? '')),
|
|
32
|
-
[rawRegions],
|
|
34
|
+
const regions: Region[] = cleanUpRegions(useRegions()).sort((a, b) =>
|
|
35
|
+
a.name.localeCompare(b.name),
|
|
33
36
|
);
|
|
34
|
-
const regionsGroupByLetter
|
|
37
|
+
const regionsGroupByLetter: Map<string, Region[]> = groupBy(regions, regionFirstLetter);
|
|
35
38
|
|
|
36
39
|
const { close } = useDialogManager();
|
|
37
40
|
|
|
38
41
|
const handleChangeLocation = useCallback((region: Region) => {
|
|
39
|
-
|
|
42
|
+
selectCurrentLocation(region);
|
|
40
43
|
close();
|
|
41
44
|
}, []);
|
|
42
45
|
|
|
@@ -48,7 +51,16 @@ export const LocationDialog = JSX<LocationDialogProps>(({ foreignOffices, branch
|
|
|
48
51
|
<Text size="text-h4" color="text-primary-text">
|
|
49
52
|
Выберите филиал
|
|
50
53
|
</Text>
|
|
51
|
-
|
|
54
|
+
{currentLocation ? (
|
|
55
|
+
<div className="mb-s">
|
|
56
|
+
<Paragraph size="text-l" color="text-primary-text">
|
|
57
|
+
Сейчас выбран:
|
|
58
|
+
<LinkWrapper href={href} className="inline mx-2xs text-primary-main">
|
|
59
|
+
{currentLocation.name}
|
|
60
|
+
</LinkWrapper>
|
|
61
|
+
</Paragraph>
|
|
62
|
+
</div>
|
|
63
|
+
) : null}
|
|
52
64
|
<SearchBar onSearch={setQuery} searchTerm={query} />
|
|
53
65
|
</div>
|
|
54
66
|
}
|
|
@@ -74,10 +86,10 @@ export const LocationDialog = JSX<LocationDialogProps>(({ foreignOffices, branch
|
|
|
74
86
|
);
|
|
75
87
|
});
|
|
76
88
|
|
|
77
|
-
const regionFirstLetter = (region: Region) => region.name?.charAt(0)
|
|
89
|
+
const regionFirstLetter = (region: Region) => region.name?.charAt(0) || '';
|
|
78
90
|
|
|
79
|
-
const cleanUpRegions = (regions: Region[])
|
|
91
|
+
const cleanUpRegions = (regions: Region[]) =>
|
|
80
92
|
regions.map((region) => ({
|
|
81
93
|
...region,
|
|
82
|
-
name: region.name?.replace(/республика|область|край'/gi, '').trim()
|
|
94
|
+
name: region.name?.replace(/республика|область|край'/gi, '').trim() || '',
|
|
83
95
|
}));
|