@astral/ui 4.81.0 → 4.83.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/ConfirmDialog/ConfirmDialog.js +3 -1
- package/components/ConfirmDialog/constants.d.ts +4 -0
- package/components/ConfirmDialog/constants.js +5 -0
- package/components/ConfirmDialog/index.d.ts +1 -0
- package/components/ConfirmDialog/index.js +1 -0
- package/components/ConfirmDialog/public.d.ts +1 -0
- package/components/ConfirmDialog/public.js +1 -0
- package/components/ConfirmDialog/types.d.ts +1 -1
- package/components/NewPopover/NewPopover.d.ts +1 -1
- package/components/NewPopover/NewPopover.js +14 -5
- package/components/NewPopover/constants.d.ts +7 -0
- package/components/NewPopover/constants.js +11 -0
- package/components/NewPopover/styles.d.ts +4 -0
- package/components/NewPopover/styles.js +100 -4
- package/components/NewPopover/types.d.ts +13 -0
- package/components/NewPopover/useLogic/useLogic.d.ts +7 -3
- package/components/NewPopover/useLogic/useLogic.js +15 -1
- package/components/Onboarding/Onboarding.d.ts +35 -0
- package/components/Onboarding/Onboarding.js +46 -0
- package/components/Onboarding/constants.d.ts +34 -0
- package/components/Onboarding/constants.js +34 -0
- package/components/Onboarding/core/ActiveStepStore/ActiveStepStore.d.ts +50 -0
- package/components/Onboarding/core/ActiveStepStore/ActiveStepStore.js +63 -0
- package/components/Onboarding/core/ActiveStepStore/index.d.ts +1 -0
- package/components/Onboarding/core/ActiveStepStore/index.js +1 -0
- package/components/Onboarding/core/ExitController/ExitController.d.ts +46 -0
- package/components/Onboarding/core/ExitController/ExitController.js +56 -0
- package/components/Onboarding/core/ExitController/index.d.ts +1 -0
- package/components/Onboarding/core/ExitController/index.js +1 -0
- package/components/Onboarding/core/OnboardingTour/OnboardingTour.d.ts +101 -0
- package/components/Onboarding/core/OnboardingTour/OnboardingTour.js +262 -0
- package/components/Onboarding/core/OnboardingTour/index.d.ts +1 -0
- package/components/Onboarding/core/OnboardingTour/index.js +1 -0
- package/components/Onboarding/core/ProgressStorage/ProgressStorage.d.ts +22 -0
- package/components/Onboarding/core/ProgressStorage/ProgressStorage.js +58 -0
- package/components/Onboarding/core/ProgressStorage/index.d.ts +1 -0
- package/components/Onboarding/core/ProgressStorage/index.js +1 -0
- package/components/Onboarding/core/StepNavigator/StepNavigator.d.ts +28 -0
- package/components/Onboarding/core/StepNavigator/StepNavigator.js +73 -0
- package/components/Onboarding/core/StepNavigator/index.d.ts +1 -0
- package/components/Onboarding/core/StepNavigator/index.js +1 -0
- package/components/Onboarding/core/StepResolver/StepResolver.d.ts +19 -0
- package/components/Onboarding/core/StepResolver/StepResolver.js +49 -0
- package/components/Onboarding/core/StepResolver/index.d.ts +1 -0
- package/components/Onboarding/core/StepResolver/index.js +1 -0
- package/components/Onboarding/core/StepsController/StepsController.d.ts +16 -0
- package/components/Onboarding/core/StepsController/StepsController.js +35 -0
- package/components/Onboarding/core/StepsController/index.d.ts +1 -0
- package/components/Onboarding/core/StepsController/index.js +1 -0
- package/components/Onboarding/faker.d.ts +27 -0
- package/components/Onboarding/faker.js +79 -0
- package/components/Onboarding/index.d.ts +5 -0
- package/components/Onboarding/index.js +3 -0
- package/components/Onboarding/public.d.ts +5 -0
- package/components/Onboarding/public.js +3 -0
- package/components/Onboarding/services/LocalStorageSaveStrategy/LocalStorageSaveStrategy.d.ts +20 -0
- package/components/Onboarding/services/LocalStorageSaveStrategy/LocalStorageSaveStrategy.js +24 -0
- package/components/Onboarding/services/LocalStorageSaveStrategy/index.d.ts +1 -0
- package/components/Onboarding/services/LocalStorageSaveStrategy/index.js +1 -0
- package/components/Onboarding/types/config.d.ts +18 -0
- package/components/Onboarding/types/config.js +1 -0
- package/components/Onboarding/types/index.d.ts +4 -0
- package/components/Onboarding/types/index.js +4 -0
- package/components/Onboarding/types/progress.d.ts +28 -0
- package/components/Onboarding/types/progress.js +1 -0
- package/components/Onboarding/types/step.d.ts +144 -0
- package/components/Onboarding/types/step.js +1 -0
- package/components/Onboarding/types/tour.d.ts +168 -0
- package/components/Onboarding/types/tour.js +1 -0
- package/components/Onboarding/ui/ConfirmExit/ConfirmExit.d.ts +10 -0
- package/components/Onboarding/ui/ConfirmExit/ConfirmExit.js +6 -0
- package/components/Onboarding/ui/ConfirmExit/index.d.ts +2 -0
- package/components/Onboarding/ui/ConfirmExit/index.js +1 -0
- package/components/Onboarding/ui/ConfirmExit/styles.d.ts +30 -0
- package/components/Onboarding/ui/ConfirmExit/styles.js +11 -0
- package/components/Onboarding/ui/OnboardingContainer/OnboardingContainer.d.ts +12 -0
- package/components/Onboarding/ui/OnboardingContainer/OnboardingContainer.js +15 -0
- package/components/Onboarding/ui/OnboardingContainer/OnboardingErrorBoundary/OnboardingErrorBoundary.d.ts +22 -0
- package/components/Onboarding/ui/OnboardingContainer/OnboardingErrorBoundary/OnboardingErrorBoundary.js +20 -0
- package/components/Onboarding/ui/OnboardingContainer/OnboardingErrorBoundary/index.d.ts +2 -0
- package/components/Onboarding/ui/OnboardingContainer/OnboardingErrorBoundary/index.js +1 -0
- package/components/Onboarding/ui/OnboardingContainer/index.d.ts +1 -0
- package/components/Onboarding/ui/OnboardingContainer/index.js +1 -0
- package/components/Onboarding/ui/OnboardingContainer/useLogic/index.d.ts +1 -0
- package/components/Onboarding/ui/OnboardingContainer/useLogic/index.js +1 -0
- package/components/Onboarding/ui/OnboardingContainer/useLogic/useLogic.d.ts +10 -0
- package/components/Onboarding/ui/OnboardingContainer/useLogic/useLogic.js +14 -0
- package/components/Onboarding/ui/Overlay/Overlay.d.ts +29 -0
- package/components/Onboarding/ui/Overlay/Overlay.js +24 -0
- package/components/Onboarding/ui/Overlay/constants.d.ts +7 -0
- package/components/Onboarding/ui/Overlay/constants.js +8 -0
- package/components/Onboarding/ui/Overlay/index.d.ts +2 -0
- package/components/Onboarding/ui/Overlay/index.js +1 -0
- package/components/Onboarding/ui/Overlay/styles.d.ts +22 -0
- package/components/Onboarding/ui/Overlay/styles.js +57 -0
- package/components/Onboarding/ui/Overlay/useLogic/index.d.ts +1 -0
- package/components/Onboarding/ui/Overlay/useLogic/index.js +1 -0
- package/components/Onboarding/ui/Overlay/useLogic/useLogic.d.ts +13 -0
- package/components/Onboarding/ui/Overlay/useLogic/useLogic.js +10 -0
- package/components/Onboarding/ui/StepStrategy/StepStrategy.d.ts +6 -0
- package/components/Onboarding/ui/StepStrategy/StepStrategy.js +17 -0
- package/components/Onboarding/ui/StepStrategy/index.d.ts +1 -0
- package/components/Onboarding/ui/StepStrategy/index.js +1 -0
- package/components/Onboarding/ui/StepStrategy/steps/HighlightStep/HighlightStep.d.ts +6 -0
- package/components/Onboarding/ui/StepStrategy/steps/HighlightStep/HighlightStep.js +19 -0
- package/components/Onboarding/ui/StepStrategy/steps/HighlightStep/index.d.ts +2 -0
- package/components/Onboarding/ui/StepStrategy/steps/HighlightStep/index.js +1 -0
- package/components/Onboarding/ui/StepStrategy/steps/HighlightStep/styles.d.ts +25 -0
- package/components/Onboarding/ui/StepStrategy/steps/HighlightStep/styles.js +56 -0
- package/components/Onboarding/ui/StepStrategy/steps/HighlightStep/useLogic/index.d.ts +1 -0
- package/components/Onboarding/ui/StepStrategy/steps/HighlightStep/useLogic/index.js +1 -0
- package/components/Onboarding/ui/StepStrategy/steps/HighlightStep/useLogic/useLogic.d.ts +12 -0
- package/components/Onboarding/ui/StepStrategy/steps/HighlightStep/useLogic/useLogic.js +37 -0
- package/components/Onboarding/ui/StepStrategy/steps/StandaloneStep/StandaloneStep.d.ts +6 -0
- package/components/Onboarding/ui/StepStrategy/steps/StandaloneStep/StandaloneStep.js +11 -0
- package/components/Onboarding/ui/StepStrategy/steps/StandaloneStep/index.d.ts +2 -0
- package/components/Onboarding/ui/StepStrategy/steps/StandaloneStep/index.js +1 -0
- package/components/Onboarding/ui/StepStrategy/steps/StandaloneStep/styles.d.ts +13 -0
- package/components/Onboarding/ui/StepStrategy/steps/StandaloneStep/styles.js +9 -0
- package/components/Onboarding/ui/StepStrategy/steps/StepFooter/ProgressDots/ProgressDots.d.ts +6 -0
- package/components/Onboarding/ui/StepStrategy/steps/StepFooter/ProgressDots/ProgressDots.js +15 -0
- package/components/Onboarding/ui/StepStrategy/steps/StepFooter/ProgressDots/constants.d.ts +4 -0
- package/components/Onboarding/ui/StepStrategy/steps/StepFooter/ProgressDots/constants.js +5 -0
- package/components/Onboarding/ui/StepStrategy/steps/StepFooter/ProgressDots/index.d.ts +2 -0
- package/components/Onboarding/ui/StepStrategy/steps/StepFooter/ProgressDots/index.js +1 -0
- package/components/Onboarding/ui/StepStrategy/steps/StepFooter/ProgressDots/styles.d.ts +9 -0
- package/components/Onboarding/ui/StepStrategy/steps/StepFooter/ProgressDots/styles.js +34 -0
- package/components/Onboarding/ui/StepStrategy/steps/StepFooter/StepFooter.d.ts +9 -0
- package/components/Onboarding/ui/StepStrategy/steps/StepFooter/StepFooter.js +18 -0
- package/components/Onboarding/ui/StepStrategy/steps/StepFooter/constants.d.ts +4 -0
- package/components/Onboarding/ui/StepStrategy/steps/StepFooter/constants.js +4 -0
- package/components/Onboarding/ui/StepStrategy/steps/StepFooter/index.d.ts +2 -0
- package/components/Onboarding/ui/StepStrategy/steps/StepFooter/index.js +1 -0
- package/components/Onboarding/ui/StepStrategy/steps/StepFooter/styles.d.ts +21 -0
- package/components/Onboarding/ui/StepStrategy/steps/StepFooter/styles.js +28 -0
- package/components/Onboarding/ui/StepStrategy/steps/StepFooter/useLogic/index.d.ts +1 -0
- package/components/Onboarding/ui/StepStrategy/steps/StepFooter/useLogic/index.js +1 -0
- package/components/Onboarding/ui/StepStrategy/steps/StepFooter/useLogic/useLogic.d.ts +16 -0
- package/components/Onboarding/ui/StepStrategy/steps/StepFooter/useLogic/useLogic.js +22 -0
- package/components/Onboarding/ui/StepStrategy/steps/types.d.ts +16 -0
- package/components/Onboarding/ui/StepStrategy/steps/types.js +1 -0
- package/components/Onboarding/ui/StepStrategy/useLogic/index.d.ts +1 -0
- package/components/Onboarding/ui/StepStrategy/useLogic/index.js +1 -0
- package/components/Onboarding/ui/StepStrategy/useLogic/useLogic.d.ts +47 -0
- package/components/Onboarding/ui/StepStrategy/useLogic/useLogic.js +51 -0
- package/components/Onboarding/ui/hooks/useActiveStep/index.d.ts +1 -0
- package/components/Onboarding/ui/hooks/useActiveStep/index.js +1 -0
- package/components/Onboarding/ui/hooks/useActiveStep/useActiveStep.d.ts +6 -0
- package/components/Onboarding/ui/hooks/useActiveStep/useActiveStep.js +7 -0
- package/components/Onboarding/ui/hooks/useDelayedActiveStep/index.d.ts +1 -0
- package/components/Onboarding/ui/hooks/useDelayedActiveStep/index.js +1 -0
- package/components/Onboarding/ui/hooks/useDelayedActiveStep/useDelayedActiveStep.d.ts +15 -0
- package/components/Onboarding/ui/hooks/useDelayedActiveStep/useDelayedActiveStep.js +19 -0
- package/components/Onboarding/ui/hooks/useFocusTrap/index.d.ts +1 -0
- package/components/Onboarding/ui/hooks/useFocusTrap/index.js +1 -0
- package/components/Onboarding/ui/hooks/useFocusTrap/useFocusTrap.d.ts +6 -0
- package/components/Onboarding/ui/hooks/useFocusTrap/useFocusTrap.js +33 -0
- package/components/Onboarding/ui/hooks/useKeyboardNav/index.d.ts +1 -0
- package/components/Onboarding/ui/hooks/useKeyboardNav/index.js +1 -0
- package/components/Onboarding/ui/hooks/useKeyboardNav/useKeyboardNav.d.ts +11 -0
- package/components/Onboarding/ui/hooks/useKeyboardNav/useKeyboardNav.js +62 -0
- package/components/Onboarding/ui/hooks/useStepTransition/index.d.ts +1 -0
- package/components/Onboarding/ui/hooks/useStepTransition/index.js +1 -0
- package/components/Onboarding/ui/hooks/useStepTransition/useStepTransition.d.ts +30 -0
- package/components/Onboarding/ui/hooks/useStepTransition/useStepTransition.js +46 -0
- package/components/Onboarding/ui/hooks/useTargetAnchor/index.d.ts +1 -0
- package/components/Onboarding/ui/hooks/useTargetAnchor/index.js +1 -0
- package/components/Onboarding/ui/hooks/useTargetAnchor/useTargetAnchor.d.ts +37 -0
- package/components/Onboarding/ui/hooks/useTargetAnchor/useTargetAnchor.js +56 -0
- package/components/Onboarding/ui/hooks/useTrackedRect/index.d.ts +1 -0
- package/components/Onboarding/ui/hooks/useTrackedRect/index.js +1 -0
- package/components/Onboarding/ui/hooks/useTrackedRect/useTrackedRect.d.ts +5 -0
- package/components/Onboarding/ui/hooks/useTrackedRect/useTrackedRect.js +43 -0
- package/components/Onboarding/ui/hooks/useViewportSize/index.d.ts +1 -0
- package/components/Onboarding/ui/hooks/useViewportSize/index.js +1 -0
- package/components/Onboarding/ui/hooks/useViewportSize/useViewportSize.d.ts +5 -0
- package/components/Onboarding/ui/hooks/useViewportSize/useViewportSize.js +14 -0
- package/components/Onboarding/ui/styles.d.ts +5 -0
- package/components/Onboarding/ui/styles.js +15 -0
- package/components/Onboarding/utils/createVirtualAnchor/createVirtualAnchor.d.ts +12 -0
- package/components/Onboarding/utils/createVirtualAnchor/createVirtualAnchor.js +6 -0
- package/components/Onboarding/utils/createVirtualAnchor/index.d.ts +1 -0
- package/components/Onboarding/utils/createVirtualAnchor/index.js +1 -0
- package/components/Onboarding/utils/geometry/index.d.ts +4 -0
- package/components/Onboarding/utils/geometry/index.js +4 -0
- package/components/Onboarding/utils/geometry/overlayPath/index.d.ts +1 -0
- package/components/Onboarding/utils/geometry/overlayPath/index.js +1 -0
- package/components/Onboarding/utils/geometry/overlayPath/overlayPath.d.ts +6 -0
- package/components/Onboarding/utils/geometry/overlayPath/overlayPath.js +29 -0
- package/components/Onboarding/utils/geometry/parseOffset/index.d.ts +1 -0
- package/components/Onboarding/utils/geometry/parseOffset/index.js +1 -0
- package/components/Onboarding/utils/geometry/parseOffset/parseOffset.d.ts +4 -0
- package/components/Onboarding/utils/geometry/parseOffset/parseOffset.js +5 -0
- package/components/Onboarding/utils/geometry/rect/index.d.ts +2 -0
- package/components/Onboarding/utils/geometry/rect/index.js +1 -0
- package/components/Onboarding/utils/geometry/rect/rect.d.ts +34 -0
- package/components/Onboarding/utils/geometry/rect/rect.js +60 -0
- package/components/Onboarding/utils/geometry/viewport/index.d.ts +2 -0
- package/components/Onboarding/utils/geometry/viewport/index.js +1 -0
- package/components/Onboarding/utils/geometry/viewport/viewport.d.ts +14 -0
- package/components/Onboarding/utils/geometry/viewport/viewport.js +10 -0
- package/components/Onboarding/utils/getScrollParents/getScrollParents.d.ts +7 -0
- package/components/Onboarding/utils/getScrollParents/getScrollParents.js +24 -0
- package/components/Onboarding/utils/getScrollParents/index.d.ts +1 -0
- package/components/Onboarding/utils/getScrollParents/index.js +1 -0
- package/components/Onboarding/utils/getTargetElement/getTargetElement.d.ts +4 -0
- package/components/Onboarding/utils/getTargetElement/getTargetElement.js +9 -0
- package/components/Onboarding/utils/getTargetElement/index.d.ts +1 -0
- package/components/Onboarding/utils/getTargetElement/index.js +1 -0
- package/components/Onboarding/utils/observeRemoval/index.d.ts +1 -0
- package/components/Onboarding/utils/observeRemoval/index.js +1 -0
- package/components/Onboarding/utils/observeRemoval/observeRemoval.d.ts +4 -0
- package/components/Onboarding/utils/observeRemoval/observeRemoval.js +13 -0
- package/components/Onboarding/utils/scrollIntoView/index.d.ts +1 -0
- package/components/Onboarding/utils/scrollIntoView/index.js +1 -0
- package/components/Onboarding/utils/scrollIntoView/scrollIntoView.d.ts +13 -0
- package/components/Onboarding/utils/scrollIntoView/scrollIntoView.js +85 -0
- package/components/Onboarding/utils/waitForElement/index.d.ts +2 -0
- package/components/Onboarding/utils/waitForElement/index.js +1 -0
- package/components/Onboarding/utils/waitForElement/waitForElement.d.ts +21 -0
- package/components/Onboarding/utils/waitForElement/waitForElement.js +45 -0
- package/components/Onboarding/validation/index.d.ts +1 -0
- package/components/Onboarding/validation/index.js +1 -0
- package/components/Onboarding/validation/validateTourConfig/index.d.ts +1 -0
- package/components/Onboarding/validation/validateTourConfig/index.js +1 -0
- package/components/Onboarding/validation/validateTourConfig/validateTourConfig.d.ts +12 -0
- package/components/Onboarding/validation/validateTourConfig/validateTourConfig.js +52 -0
- package/components/TagsList/Tag/Tag.js +3 -2
- package/node/components/ConfirmDialog/ConfirmDialog.js +3 -1
- package/node/components/ConfirmDialog/constants.d.ts +4 -0
- package/node/components/ConfirmDialog/constants.js +8 -0
- package/node/components/ConfirmDialog/index.d.ts +1 -0
- package/node/components/ConfirmDialog/index.js +3 -0
- package/node/components/ConfirmDialog/public.d.ts +1 -0
- package/node/components/ConfirmDialog/public.js +3 -0
- package/node/components/ConfirmDialog/types.d.ts +1 -1
- package/node/components/NewPopover/NewPopover.d.ts +1 -1
- package/node/components/NewPopover/NewPopover.js +12 -3
- package/node/components/NewPopover/constants.d.ts +7 -0
- package/node/components/NewPopover/constants.js +12 -1
- package/node/components/NewPopover/styles.d.ts +4 -0
- package/node/components/NewPopover/styles.js +101 -5
- package/node/components/NewPopover/types.d.ts +13 -0
- package/node/components/NewPopover/useLogic/useLogic.d.ts +7 -3
- package/node/components/NewPopover/useLogic/useLogic.js +15 -1
- package/node/components/Onboarding/Onboarding.d.ts +35 -0
- package/node/components/Onboarding/Onboarding.js +51 -0
- package/node/components/Onboarding/constants.d.ts +34 -0
- package/node/components/Onboarding/constants.js +37 -0
- package/node/components/Onboarding/core/ActiveStepStore/ActiveStepStore.d.ts +50 -0
- package/node/components/Onboarding/core/ActiveStepStore/ActiveStepStore.js +67 -0
- package/node/components/Onboarding/core/ActiveStepStore/index.d.ts +1 -0
- package/node/components/Onboarding/core/ActiveStepStore/index.js +17 -0
- package/node/components/Onboarding/core/ExitController/ExitController.d.ts +46 -0
- package/node/components/Onboarding/core/ExitController/ExitController.js +60 -0
- package/node/components/Onboarding/core/ExitController/index.d.ts +1 -0
- package/node/components/Onboarding/core/ExitController/index.js +17 -0
- package/node/components/Onboarding/core/OnboardingTour/OnboardingTour.d.ts +101 -0
- package/node/components/Onboarding/core/OnboardingTour/OnboardingTour.js +266 -0
- package/node/components/Onboarding/core/OnboardingTour/index.d.ts +1 -0
- package/node/components/Onboarding/core/OnboardingTour/index.js +5 -0
- package/node/components/Onboarding/core/ProgressStorage/ProgressStorage.d.ts +22 -0
- package/node/components/Onboarding/core/ProgressStorage/ProgressStorage.js +62 -0
- package/node/components/Onboarding/core/ProgressStorage/index.d.ts +1 -0
- package/node/components/Onboarding/core/ProgressStorage/index.js +17 -0
- package/node/components/Onboarding/core/StepNavigator/StepNavigator.d.ts +28 -0
- package/node/components/Onboarding/core/StepNavigator/StepNavigator.js +77 -0
- package/node/components/Onboarding/core/StepNavigator/index.d.ts +1 -0
- package/node/components/Onboarding/core/StepNavigator/index.js +17 -0
- package/node/components/Onboarding/core/StepResolver/StepResolver.d.ts +19 -0
- package/node/components/Onboarding/core/StepResolver/StepResolver.js +53 -0
- package/node/components/Onboarding/core/StepResolver/index.d.ts +1 -0
- package/node/components/Onboarding/core/StepResolver/index.js +17 -0
- package/node/components/Onboarding/core/StepsController/StepsController.d.ts +16 -0
- package/node/components/Onboarding/core/StepsController/StepsController.js +39 -0
- package/node/components/Onboarding/core/StepsController/index.d.ts +1 -0
- package/node/components/Onboarding/core/StepsController/index.js +17 -0
- package/node/components/Onboarding/faker.d.ts +27 -0
- package/node/components/Onboarding/faker.js +88 -0
- package/node/components/Onboarding/index.d.ts +5 -0
- package/node/components/Onboarding/index.js +9 -0
- package/node/components/Onboarding/public.d.ts +5 -0
- package/node/components/Onboarding/public.js +9 -0
- package/node/components/Onboarding/services/LocalStorageSaveStrategy/LocalStorageSaveStrategy.d.ts +20 -0
- package/node/components/Onboarding/services/LocalStorageSaveStrategy/LocalStorageSaveStrategy.js +29 -0
- package/node/components/Onboarding/services/LocalStorageSaveStrategy/index.d.ts +1 -0
- package/node/components/Onboarding/services/LocalStorageSaveStrategy/index.js +17 -0
- package/node/components/Onboarding/types/config.d.ts +18 -0
- package/node/components/Onboarding/types/config.js +2 -0
- package/node/components/Onboarding/types/index.d.ts +4 -0
- package/node/components/Onboarding/types/index.js +20 -0
- package/node/components/Onboarding/types/progress.d.ts +28 -0
- package/node/components/Onboarding/types/progress.js +2 -0
- package/node/components/Onboarding/types/step.d.ts +144 -0
- package/node/components/Onboarding/types/step.js +2 -0
- package/node/components/Onboarding/types/tour.d.ts +168 -0
- package/node/components/Onboarding/types/tour.js +2 -0
- package/node/components/Onboarding/ui/ConfirmExit/ConfirmExit.d.ts +10 -0
- package/node/components/Onboarding/ui/ConfirmExit/ConfirmExit.js +10 -0
- package/node/components/Onboarding/ui/ConfirmExit/index.d.ts +2 -0
- package/node/components/Onboarding/ui/ConfirmExit/index.js +5 -0
- package/node/components/Onboarding/ui/ConfirmExit/styles.d.ts +30 -0
- package/node/components/Onboarding/ui/ConfirmExit/styles.js +14 -0
- package/node/components/Onboarding/ui/OnboardingContainer/OnboardingContainer.d.ts +12 -0
- package/node/components/Onboarding/ui/OnboardingContainer/OnboardingContainer.js +19 -0
- package/node/components/Onboarding/ui/OnboardingContainer/OnboardingErrorBoundary/OnboardingErrorBoundary.d.ts +22 -0
- package/node/components/Onboarding/ui/OnboardingContainer/OnboardingErrorBoundary/OnboardingErrorBoundary.js +24 -0
- package/node/components/Onboarding/ui/OnboardingContainer/OnboardingErrorBoundary/index.d.ts +2 -0
- package/node/components/Onboarding/ui/OnboardingContainer/OnboardingErrorBoundary/index.js +5 -0
- package/node/components/Onboarding/ui/OnboardingContainer/index.d.ts +1 -0
- package/node/components/Onboarding/ui/OnboardingContainer/index.js +5 -0
- package/node/components/Onboarding/ui/OnboardingContainer/useLogic/index.d.ts +1 -0
- package/node/components/Onboarding/ui/OnboardingContainer/useLogic/index.js +5 -0
- package/node/components/Onboarding/ui/OnboardingContainer/useLogic/useLogic.d.ts +10 -0
- package/node/components/Onboarding/ui/OnboardingContainer/useLogic/useLogic.js +18 -0
- package/node/components/Onboarding/ui/Overlay/Overlay.d.ts +29 -0
- package/node/components/Onboarding/ui/Overlay/Overlay.js +28 -0
- package/node/components/Onboarding/ui/Overlay/constants.d.ts +7 -0
- package/node/components/Onboarding/ui/Overlay/constants.js +11 -0
- package/node/components/Onboarding/ui/Overlay/index.d.ts +2 -0
- package/node/components/Onboarding/ui/Overlay/index.js +5 -0
- package/node/components/Onboarding/ui/Overlay/styles.d.ts +22 -0
- package/node/components/Onboarding/ui/Overlay/styles.js +60 -0
- package/node/components/Onboarding/ui/Overlay/useLogic/index.d.ts +1 -0
- package/node/components/Onboarding/ui/Overlay/useLogic/index.js +5 -0
- package/node/components/Onboarding/ui/Overlay/useLogic/useLogic.d.ts +13 -0
- package/node/components/Onboarding/ui/Overlay/useLogic/useLogic.js +14 -0
- package/node/components/Onboarding/ui/StepStrategy/StepStrategy.d.ts +6 -0
- package/node/components/Onboarding/ui/StepStrategy/StepStrategy.js +21 -0
- package/node/components/Onboarding/ui/StepStrategy/index.d.ts +1 -0
- package/node/components/Onboarding/ui/StepStrategy/index.js +17 -0
- package/node/components/Onboarding/ui/StepStrategy/steps/HighlightStep/HighlightStep.d.ts +6 -0
- package/node/components/Onboarding/ui/StepStrategy/steps/HighlightStep/HighlightStep.js +23 -0
- package/node/components/Onboarding/ui/StepStrategy/steps/HighlightStep/index.d.ts +2 -0
- package/node/components/Onboarding/ui/StepStrategy/steps/HighlightStep/index.js +5 -0
- package/node/components/Onboarding/ui/StepStrategy/steps/HighlightStep/styles.d.ts +25 -0
- package/node/components/Onboarding/ui/StepStrategy/steps/HighlightStep/styles.js +59 -0
- package/node/components/Onboarding/ui/StepStrategy/steps/HighlightStep/useLogic/index.d.ts +1 -0
- package/node/components/Onboarding/ui/StepStrategy/steps/HighlightStep/useLogic/index.js +5 -0
- package/node/components/Onboarding/ui/StepStrategy/steps/HighlightStep/useLogic/useLogic.d.ts +12 -0
- package/node/components/Onboarding/ui/StepStrategy/steps/HighlightStep/useLogic/useLogic.js +41 -0
- package/node/components/Onboarding/ui/StepStrategy/steps/StandaloneStep/StandaloneStep.d.ts +6 -0
- package/node/components/Onboarding/ui/StepStrategy/steps/StandaloneStep/StandaloneStep.js +15 -0
- package/node/components/Onboarding/ui/StepStrategy/steps/StandaloneStep/index.d.ts +2 -0
- package/node/components/Onboarding/ui/StepStrategy/steps/StandaloneStep/index.js +5 -0
- package/node/components/Onboarding/ui/StepStrategy/steps/StandaloneStep/styles.d.ts +13 -0
- package/node/components/Onboarding/ui/StepStrategy/steps/StandaloneStep/styles.js +12 -0
- package/node/components/Onboarding/ui/StepStrategy/steps/StepFooter/ProgressDots/ProgressDots.d.ts +6 -0
- package/node/components/Onboarding/ui/StepStrategy/steps/StepFooter/ProgressDots/ProgressDots.js +19 -0
- package/node/components/Onboarding/ui/StepStrategy/steps/StepFooter/ProgressDots/constants.d.ts +4 -0
- package/node/components/Onboarding/ui/StepStrategy/steps/StepFooter/ProgressDots/constants.js +8 -0
- package/node/components/Onboarding/ui/StepStrategy/steps/StepFooter/ProgressDots/index.d.ts +2 -0
- package/node/components/Onboarding/ui/StepStrategy/steps/StepFooter/ProgressDots/index.js +5 -0
- package/node/components/Onboarding/ui/StepStrategy/steps/StepFooter/ProgressDots/styles.d.ts +9 -0
- package/node/components/Onboarding/ui/StepStrategy/steps/StepFooter/ProgressDots/styles.js +37 -0
- package/node/components/Onboarding/ui/StepStrategy/steps/StepFooter/StepFooter.d.ts +9 -0
- package/node/components/Onboarding/ui/StepStrategy/steps/StepFooter/StepFooter.js +22 -0
- package/node/components/Onboarding/ui/StepStrategy/steps/StepFooter/constants.d.ts +4 -0
- package/node/components/Onboarding/ui/StepStrategy/steps/StepFooter/constants.js +7 -0
- package/node/components/Onboarding/ui/StepStrategy/steps/StepFooter/index.d.ts +2 -0
- package/node/components/Onboarding/ui/StepStrategy/steps/StepFooter/index.js +5 -0
- package/node/components/Onboarding/ui/StepStrategy/steps/StepFooter/styles.d.ts +21 -0
- package/node/components/Onboarding/ui/StepStrategy/steps/StepFooter/styles.js +31 -0
- package/node/components/Onboarding/ui/StepStrategy/steps/StepFooter/useLogic/index.d.ts +1 -0
- package/node/components/Onboarding/ui/StepStrategy/steps/StepFooter/useLogic/index.js +5 -0
- package/node/components/Onboarding/ui/StepStrategy/steps/StepFooter/useLogic/useLogic.d.ts +16 -0
- package/node/components/Onboarding/ui/StepStrategy/steps/StepFooter/useLogic/useLogic.js +26 -0
- package/node/components/Onboarding/ui/StepStrategy/steps/types.d.ts +16 -0
- package/node/components/Onboarding/ui/StepStrategy/steps/types.js +2 -0
- package/node/components/Onboarding/ui/StepStrategy/useLogic/index.d.ts +1 -0
- package/node/components/Onboarding/ui/StepStrategy/useLogic/index.js +5 -0
- package/node/components/Onboarding/ui/StepStrategy/useLogic/useLogic.d.ts +47 -0
- package/node/components/Onboarding/ui/StepStrategy/useLogic/useLogic.js +55 -0
- package/node/components/Onboarding/ui/hooks/useActiveStep/index.d.ts +1 -0
- package/node/components/Onboarding/ui/hooks/useActiveStep/index.js +5 -0
- package/node/components/Onboarding/ui/hooks/useActiveStep/useActiveStep.d.ts +6 -0
- package/node/components/Onboarding/ui/hooks/useActiveStep/useActiveStep.js +11 -0
- package/node/components/Onboarding/ui/hooks/useDelayedActiveStep/index.d.ts +1 -0
- package/node/components/Onboarding/ui/hooks/useDelayedActiveStep/index.js +17 -0
- package/node/components/Onboarding/ui/hooks/useDelayedActiveStep/useDelayedActiveStep.d.ts +15 -0
- package/node/components/Onboarding/ui/hooks/useDelayedActiveStep/useDelayedActiveStep.js +23 -0
- package/node/components/Onboarding/ui/hooks/useFocusTrap/index.d.ts +1 -0
- package/node/components/Onboarding/ui/hooks/useFocusTrap/index.js +5 -0
- package/node/components/Onboarding/ui/hooks/useFocusTrap/useFocusTrap.d.ts +6 -0
- package/node/components/Onboarding/ui/hooks/useFocusTrap/useFocusTrap.js +37 -0
- package/node/components/Onboarding/ui/hooks/useKeyboardNav/index.d.ts +1 -0
- package/node/components/Onboarding/ui/hooks/useKeyboardNav/index.js +5 -0
- package/node/components/Onboarding/ui/hooks/useKeyboardNav/useKeyboardNav.d.ts +11 -0
- package/node/components/Onboarding/ui/hooks/useKeyboardNav/useKeyboardNav.js +66 -0
- package/node/components/Onboarding/ui/hooks/useStepTransition/index.d.ts +1 -0
- package/node/components/Onboarding/ui/hooks/useStepTransition/index.js +5 -0
- package/node/components/Onboarding/ui/hooks/useStepTransition/useStepTransition.d.ts +30 -0
- package/node/components/Onboarding/ui/hooks/useStepTransition/useStepTransition.js +50 -0
- package/node/components/Onboarding/ui/hooks/useTargetAnchor/index.d.ts +1 -0
- package/node/components/Onboarding/ui/hooks/useTargetAnchor/index.js +17 -0
- package/node/components/Onboarding/ui/hooks/useTargetAnchor/useTargetAnchor.d.ts +37 -0
- package/node/components/Onboarding/ui/hooks/useTargetAnchor/useTargetAnchor.js +60 -0
- package/node/components/Onboarding/ui/hooks/useTrackedRect/index.d.ts +1 -0
- package/node/components/Onboarding/ui/hooks/useTrackedRect/index.js +5 -0
- package/node/components/Onboarding/ui/hooks/useTrackedRect/useTrackedRect.d.ts +5 -0
- package/node/components/Onboarding/ui/hooks/useTrackedRect/useTrackedRect.js +47 -0
- package/node/components/Onboarding/ui/hooks/useViewportSize/index.d.ts +1 -0
- package/node/components/Onboarding/ui/hooks/useViewportSize/index.js +5 -0
- package/node/components/Onboarding/ui/hooks/useViewportSize/useViewportSize.d.ts +5 -0
- package/node/components/Onboarding/ui/hooks/useViewportSize/useViewportSize.js +18 -0
- package/node/components/Onboarding/ui/styles.d.ts +5 -0
- package/node/components/Onboarding/ui/styles.js +19 -0
- package/node/components/Onboarding/utils/createVirtualAnchor/createVirtualAnchor.d.ts +12 -0
- package/node/components/Onboarding/utils/createVirtualAnchor/createVirtualAnchor.js +10 -0
- package/node/components/Onboarding/utils/createVirtualAnchor/index.d.ts +1 -0
- package/node/components/Onboarding/utils/createVirtualAnchor/index.js +17 -0
- package/node/components/Onboarding/utils/geometry/index.d.ts +4 -0
- package/node/components/Onboarding/utils/geometry/index.js +20 -0
- package/node/components/Onboarding/utils/geometry/overlayPath/index.d.ts +1 -0
- package/node/components/Onboarding/utils/geometry/overlayPath/index.js +5 -0
- package/node/components/Onboarding/utils/geometry/overlayPath/overlayPath.d.ts +6 -0
- package/node/components/Onboarding/utils/geometry/overlayPath/overlayPath.js +33 -0
- package/node/components/Onboarding/utils/geometry/parseOffset/index.d.ts +1 -0
- package/node/components/Onboarding/utils/geometry/parseOffset/index.js +5 -0
- package/node/components/Onboarding/utils/geometry/parseOffset/parseOffset.d.ts +4 -0
- package/node/components/Onboarding/utils/geometry/parseOffset/parseOffset.js +9 -0
- package/node/components/Onboarding/utils/geometry/rect/index.d.ts +2 -0
- package/node/components/Onboarding/utils/geometry/rect/index.js +9 -0
- package/node/components/Onboarding/utils/geometry/rect/rect.d.ts +34 -0
- package/node/components/Onboarding/utils/geometry/rect/rect.js +69 -0
- package/node/components/Onboarding/utils/geometry/viewport/index.d.ts +2 -0
- package/node/components/Onboarding/utils/geometry/viewport/index.js +5 -0
- package/node/components/Onboarding/utils/geometry/viewport/viewport.d.ts +14 -0
- package/node/components/Onboarding/utils/geometry/viewport/viewport.js +14 -0
- package/node/components/Onboarding/utils/getScrollParents/getScrollParents.d.ts +7 -0
- package/node/components/Onboarding/utils/getScrollParents/getScrollParents.js +28 -0
- package/node/components/Onboarding/utils/getScrollParents/index.d.ts +1 -0
- package/node/components/Onboarding/utils/getScrollParents/index.js +5 -0
- package/node/components/Onboarding/utils/getTargetElement/getTargetElement.d.ts +4 -0
- package/node/components/Onboarding/utils/getTargetElement/getTargetElement.js +13 -0
- package/node/components/Onboarding/utils/getTargetElement/index.d.ts +1 -0
- package/node/components/Onboarding/utils/getTargetElement/index.js +5 -0
- package/node/components/Onboarding/utils/observeRemoval/index.d.ts +1 -0
- package/node/components/Onboarding/utils/observeRemoval/index.js +17 -0
- package/node/components/Onboarding/utils/observeRemoval/observeRemoval.d.ts +4 -0
- package/node/components/Onboarding/utils/observeRemoval/observeRemoval.js +17 -0
- package/node/components/Onboarding/utils/scrollIntoView/index.d.ts +1 -0
- package/node/components/Onboarding/utils/scrollIntoView/index.js +5 -0
- package/node/components/Onboarding/utils/scrollIntoView/scrollIntoView.d.ts +13 -0
- package/node/components/Onboarding/utils/scrollIntoView/scrollIntoView.js +89 -0
- package/node/components/Onboarding/utils/waitForElement/index.d.ts +2 -0
- package/node/components/Onboarding/utils/waitForElement/index.js +5 -0
- package/node/components/Onboarding/utils/waitForElement/waitForElement.d.ts +21 -0
- package/node/components/Onboarding/utils/waitForElement/waitForElement.js +49 -0
- package/node/components/Onboarding/validation/index.d.ts +1 -0
- package/node/components/Onboarding/validation/index.js +6 -0
- package/node/components/Onboarding/validation/validateTourConfig/index.d.ts +1 -0
- package/node/components/Onboarding/validation/validateTourConfig/index.js +6 -0
- package/node/components/Onboarding/validation/validateTourConfig/validateTourConfig.d.ts +12 -0
- package/node/components/Onboarding/validation/validateTourConfig/validateTourConfig.js +80 -0
- package/node/components/TagsList/Tag/Tag.js +3 -2
- package/package.json +3 -2
|
@@ -4,6 +4,8 @@ import { Dialog } from '../Dialog';
|
|
|
4
4
|
import { DialogActions } from '../DialogActions';
|
|
5
5
|
import { DialogContent } from '../DialogContent';
|
|
6
6
|
import { DialogContentText } from '../DialogContentText';
|
|
7
|
+
import { classNames } from '../utils/classNames';
|
|
8
|
+
import { confirmDialogClassnames } from './constants';
|
|
7
9
|
import { CancelButton } from './styles';
|
|
8
10
|
import { useLogic } from './useLogic';
|
|
9
11
|
export const ConfirmDialog = (props) => {
|
|
@@ -11,5 +13,5 @@ export const ConfirmDialog = (props) => {
|
|
|
11
13
|
const { open, title, description, actions, onClose, size = 'sm', ...restProps } = props;
|
|
12
14
|
const { text: confirmText, ...confirmButtonProps } = actions.confirm;
|
|
13
15
|
const { text: cancelText, variant, onClick, ...restCancelProps } = actions.cancel || {};
|
|
14
|
-
return (_jsxs(Dialog, { size: size, title: title, open: open, onClose: onClose, ...restProps, children: [description && (_jsx(DialogContent, { children: typeof description === 'string' ? (_jsx(DialogContentText, { children: description })) : (description) })), _jsxs(DialogActions, { children: [isShowCancelButton && (_jsx(CancelButton, { ...restCancelProps, ...cancelButtonProps, children: cancelText })), _jsx(Button, { ...confirmButtonProps, children: confirmText })] })] }));
|
|
16
|
+
return (_jsxs(Dialog, { size: size, title: title, open: open, onClose: onClose, ...restProps, children: [description && (_jsx(DialogContent, { children: typeof description === 'string' ? (_jsx(DialogContentText, { children: description })) : (description) })), _jsxs(DialogActions, { children: [isShowCancelButton && (_jsx(CancelButton, { ...restCancelProps, ...cancelButtonProps, className: classNames(actions.cancel?.className, confirmDialogClassnames.cancelButton), children: cancelText })), _jsx(Button, { ...confirmButtonProps, className: classNames(confirmButtonProps.className, confirmDialogClassnames.confirmButton), children: confirmText })] })] }));
|
|
15
17
|
};
|
|
@@ -33,4 +33,4 @@ export type ConfirmDialogProps = {
|
|
|
33
33
|
text: string;
|
|
34
34
|
};
|
|
35
35
|
};
|
|
36
|
-
} & Pick<DialogProps, 'aria-labelledby' | 'aria-describedby' | 'disableBackdropClick' | 'disablePortal' | 'disableScrollLock' | 'hideBackdrop' | 'keepMounted' | 'open' | 'size'>;
|
|
36
|
+
} & Pick<DialogProps, 'aria-labelledby' | 'aria-describedby' | 'disableBackdropClick' | 'disablePortal' | 'disableScrollLock' | 'hideBackdrop' | 'keepMounted' | 'open' | 'size' | 'className'>;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { type NewPopoverProps } from './types';
|
|
2
|
-
export declare const NewPopover: ({ children, onClose, isOpen, title, className, style, placement, anchorEl, disablePortal, disableAutoFocus, }: NewPopoverProps) => import("react/jsx-runtime").JSX.Element;
|
|
2
|
+
export declare const NewPopover: ({ children, onClose, isOpen, title, className, style, placement, anchorEl, disablePortal, disableAutoFocus, hasArrow, }: NewPopoverProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,23 +1,32 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { BottomDrawer } from '../BottomDrawer';
|
|
3
3
|
import { classNames } from '../utils/classNames';
|
|
4
4
|
import { cva } from '../utils/cva';
|
|
5
5
|
import { popoverClassnames } from './constants';
|
|
6
|
-
import { AnimatedWrapper, InnerContainer, StyledMuiPopper } from './styles';
|
|
6
|
+
import { AnimatedWrapper, InnerContainer, PopoverArrow, StyledMuiPopper, } from './styles';
|
|
7
7
|
import { useLogic } from './useLogic';
|
|
8
8
|
const animatedWrapperCva = cva(popoverClassnames.animatedWrapper, {
|
|
9
9
|
variants: {
|
|
10
10
|
isOpen: {
|
|
11
11
|
true: popoverClassnames.animatedWrapperOpen,
|
|
12
12
|
},
|
|
13
|
+
hasArrow: {
|
|
14
|
+
true: popoverClassnames.animatedWrapperHasArrow,
|
|
15
|
+
},
|
|
13
16
|
},
|
|
14
17
|
});
|
|
15
|
-
export const NewPopover = ({ children, onClose, isOpen, title, className, style, placement = 'bottom', anchorEl, disablePortal, disableAutoFocus, }) => {
|
|
16
|
-
const { isMobile, isOpened, shouldRender, handleAnimationEnd, handleClose, setContainerRef, } = useLogic({
|
|
18
|
+
export const NewPopover = ({ children, onClose, isOpen, title, className, style, placement = 'bottom', anchorEl, disablePortal, disableAutoFocus, hasArrow, }) => {
|
|
19
|
+
const { isMobile, isOpened, shouldRender, handleAnimationEnd, handleClose, setContainerRef, setArrowElement, mergedModifiers, } = useLogic({
|
|
20
|
+
isOpen,
|
|
21
|
+
anchorEl,
|
|
22
|
+
onClose,
|
|
23
|
+
disableAutoFocus,
|
|
24
|
+
hasArrow,
|
|
25
|
+
});
|
|
17
26
|
if (isMobile) {
|
|
18
27
|
return (_jsx(BottomDrawer, { title: title, onClose: handleClose, open: isOpened, className: className, style: style, ModalProps: {
|
|
19
28
|
disableAutoFocus,
|
|
20
29
|
}, children: children }));
|
|
21
30
|
}
|
|
22
|
-
return (_jsx(StyledMuiPopper, { className: popoverClassnames.root, open: shouldRender, placement: placement, anchorEl: anchorEl, disablePortal: disablePortal, children:
|
|
31
|
+
return (_jsx(StyledMuiPopper, { className: classNames(popoverClassnames.root, className), style: style, open: shouldRender, placement: placement, anchorEl: anchorEl, disablePortal: disablePortal, modifiers: mergedModifiers, children: _jsxs(AnimatedWrapper, { className: animatedWrapperCva({ isOpen: isOpened, hasArrow }), onAnimationEnd: handleAnimationEnd, children: [hasArrow && (_jsx(PopoverArrow, { ref: setArrowElement, className: popoverClassnames.arrow })), _jsx(InnerContainer, { ref: setContainerRef, tabIndex: -1, className: popoverClassnames.innerContainer, children: children })] }) }));
|
|
23
32
|
};
|
|
@@ -1,6 +1,13 @@
|
|
|
1
|
+
import { type NewPopoverModifier } from './types';
|
|
1
2
|
export declare const popoverClassnames: {
|
|
2
3
|
root: string;
|
|
3
4
|
innerContainer: string;
|
|
4
5
|
animatedWrapper: string;
|
|
5
6
|
animatedWrapperOpen: string;
|
|
7
|
+
animatedWrapperHasArrow: string;
|
|
8
|
+
arrow: string;
|
|
6
9
|
};
|
|
10
|
+
/**
|
|
11
|
+
* Базовые модификаторы Popper.js. У MUI Popper (popper.js)
|
|
12
|
+
*/
|
|
13
|
+
export declare const DEFAULT_MODIFIERS: NewPopoverModifier[];
|
|
@@ -4,4 +4,15 @@ export const popoverClassnames = {
|
|
|
4
4
|
innerContainer: createUIKitClassname('popover__inner-container'),
|
|
5
5
|
animatedWrapper: createUIKitClassname('popover__animated-wrapper'),
|
|
6
6
|
animatedWrapperOpen: createUIKitClassname('popover__animated-wrapper_is-open'),
|
|
7
|
+
animatedWrapperHasArrow: createUIKitClassname('popover__animated-wrapper_has-arrow'),
|
|
8
|
+
arrow: createUIKitClassname('popover__arrow'),
|
|
7
9
|
};
|
|
10
|
+
/**
|
|
11
|
+
* Базовые модификаторы Popper.js. У MUI Popper (popper.js)
|
|
12
|
+
*/
|
|
13
|
+
export const DEFAULT_MODIFIERS = [
|
|
14
|
+
{
|
|
15
|
+
name: 'preventOverflow',
|
|
16
|
+
options: { altAxis: true, tether: false, padding: 8 },
|
|
17
|
+
},
|
|
18
|
+
];
|
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
export declare const StyledMuiPopper: import("../styled").StyledComponent<import("@mui/material/Popper").PopperProps & import("react").RefAttributes<HTMLDivElement> & {
|
|
3
3
|
theme?: import("@emotion/react").Theme | undefined;
|
|
4
4
|
}, {}, {}>;
|
|
5
|
+
export declare const PopoverArrow: import("../styled").StyledComponent<{
|
|
6
|
+
theme?: import("@emotion/react").Theme | undefined;
|
|
7
|
+
as?: import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> | undefined;
|
|
8
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, {}>;
|
|
5
9
|
export declare const AnimatedWrapper: import("../styled").StyledComponent<{
|
|
6
10
|
theme?: import("@emotion/react").Theme | undefined;
|
|
7
11
|
as?: import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> | undefined;
|
|
@@ -6,6 +6,12 @@ export const StyledMuiPopper = styled(MuiPopper) `
|
|
|
6
6
|
z-index: ${({ theme }) => theme.zIndex.tooltip};
|
|
7
7
|
}
|
|
8
8
|
|
|
9
|
+
/* Anchor ушёл за скролл/вьюпорт — popper вешает reference-hidden.
|
|
10
|
+
Стрелка иначе тянется к пропавшему anchor и торчит криво — прячем её. */
|
|
11
|
+
&[data-popper-reference-hidden] .${popoverClassnames.arrow} {
|
|
12
|
+
visibility: hidden;
|
|
13
|
+
}
|
|
14
|
+
|
|
9
15
|
&&[data-popper-placement*='top'] .${popoverClassnames.animatedWrapper} {
|
|
10
16
|
transform-origin: bottom center;
|
|
11
17
|
|
|
@@ -29,16 +35,106 @@ export const StyledMuiPopper = styled(MuiPopper) `
|
|
|
29
35
|
|
|
30
36
|
margin-left: ${({ theme }) => theme.spacing(2)};
|
|
31
37
|
}
|
|
38
|
+
|
|
39
|
+
/* Со стрелкой отступ больше */
|
|
40
|
+
&&[data-popper-placement*='top']
|
|
41
|
+
.${popoverClassnames.animatedWrapperHasArrow} {
|
|
42
|
+
margin-bottom: ${({ theme }) => theme.spacing(4)};
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
&&[data-popper-placement*='bottom']
|
|
46
|
+
.${popoverClassnames.animatedWrapperHasArrow} {
|
|
47
|
+
margin-top: ${({ theme }) => theme.spacing(4)};
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
&&[data-popper-placement*='left']
|
|
51
|
+
.${popoverClassnames.animatedWrapperHasArrow} {
|
|
52
|
+
margin-right: ${({ theme }) => theme.spacing(4)};
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
&&[data-popper-placement*='right']
|
|
56
|
+
.${popoverClassnames.animatedWrapperHasArrow} {
|
|
57
|
+
margin-left: ${({ theme }) => theme.spacing(4)};
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
&&[data-popper-placement*='bottom'] .${popoverClassnames.arrow} {
|
|
61
|
+
top: -16px;
|
|
62
|
+
|
|
63
|
+
width: 23px;
|
|
64
|
+
height: 16px;
|
|
65
|
+
|
|
66
|
+
&::before {
|
|
67
|
+
border-color: transparent transparent
|
|
68
|
+
${({ theme }) => theme.palette.background.paper};
|
|
69
|
+
border-width: 0 11.5px 16px;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
&&[data-popper-placement*='top'] .${popoverClassnames.arrow} {
|
|
74
|
+
bottom: -16px;
|
|
75
|
+
|
|
76
|
+
width: 23px;
|
|
77
|
+
height: 16px;
|
|
78
|
+
|
|
79
|
+
&::before {
|
|
80
|
+
border-color: ${({ theme }) => theme.palette.background.paper} transparent
|
|
81
|
+
transparent;
|
|
82
|
+
border-width: 16px 11.5px 0;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
&&[data-popper-placement*='right'] .${popoverClassnames.arrow} {
|
|
87
|
+
left: -16px;
|
|
88
|
+
|
|
89
|
+
width: 16px;
|
|
90
|
+
height: 23px;
|
|
91
|
+
|
|
92
|
+
&::before {
|
|
93
|
+
border-color: transparent ${({ theme }) => theme.palette.background.paper}
|
|
94
|
+
transparent transparent;
|
|
95
|
+
border-width: 11.5px 16px 11.5px 0;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
&&[data-popper-placement*='left'] .${popoverClassnames.arrow} {
|
|
100
|
+
right: -16px;
|
|
101
|
+
|
|
102
|
+
width: 16px;
|
|
103
|
+
height: 23px;
|
|
104
|
+
|
|
105
|
+
&::before {
|
|
106
|
+
border-color: transparent transparent transparent
|
|
107
|
+
${({ theme }) => theme.palette.background.paper};
|
|
108
|
+
border-width: 11.5px 0 11.5px 16px;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
`;
|
|
112
|
+
export const PopoverArrow = styled.span `
|
|
113
|
+
position: absolute;
|
|
114
|
+
|
|
115
|
+
&::before {
|
|
116
|
+
content: '';
|
|
117
|
+
|
|
118
|
+
display: block;
|
|
119
|
+
|
|
120
|
+
width: 0;
|
|
121
|
+
height: 0;
|
|
122
|
+
margin: auto;
|
|
123
|
+
|
|
124
|
+
border-style: solid;
|
|
125
|
+
}
|
|
32
126
|
`;
|
|
33
127
|
export const AnimatedWrapper = styled.div `
|
|
128
|
+
position: relative;
|
|
129
|
+
|
|
34
130
|
animation: popover-grow-out
|
|
35
|
-
${({ theme }) => theme.transitions.duration.
|
|
36
|
-
${({ theme }) => theme.transitions.easing.
|
|
131
|
+
${({ theme }) => theme.transitions.duration.leavingScreen}ms
|
|
132
|
+
${({ theme }) => theme.transitions.easing.easeIn} forwards;
|
|
37
133
|
|
|
38
134
|
&.${popoverClassnames.animatedWrapperOpen} {
|
|
39
135
|
animation: popover-grow-in
|
|
40
|
-
${({ theme }) => theme.transitions.duration.
|
|
41
|
-
${({ theme }) => theme.transitions.easing.
|
|
136
|
+
${({ theme }) => theme.transitions.duration.standard}ms
|
|
137
|
+
${({ theme }) => theme.transitions.easing.easeOut} forwards;
|
|
42
138
|
}
|
|
43
139
|
|
|
44
140
|
@keyframes popover-grow-in {
|
|
@@ -5,6 +5,14 @@ type NewPopoverVirtualElement = {
|
|
|
5
5
|
getBoundingClientRect: () => DOMRect;
|
|
6
6
|
};
|
|
7
7
|
export type NewPopoverAnchorEl = null | NewPopoverVirtualElement | HTMLElement | (() => HTMLElement) | (() => NewPopoverVirtualElement);
|
|
8
|
+
/**
|
|
9
|
+
* Модификатор Popper.js.
|
|
10
|
+
*/
|
|
11
|
+
export type NewPopoverModifier = {
|
|
12
|
+
name: string;
|
|
13
|
+
enabled?: boolean;
|
|
14
|
+
options?: Record<string, unknown>;
|
|
15
|
+
};
|
|
8
16
|
export type NewPopoverProps = {
|
|
9
17
|
/**
|
|
10
18
|
* Якорь позиционирования
|
|
@@ -49,5 +57,10 @@ export type NewPopoverProps = {
|
|
|
49
57
|
* @default false
|
|
50
58
|
*/
|
|
51
59
|
disableAutoFocus?: boolean;
|
|
60
|
+
/**
|
|
61
|
+
* Показывать стрелку, указывающую на anchorEl
|
|
62
|
+
* @default false
|
|
63
|
+
*/
|
|
64
|
+
hasArrow?: boolean;
|
|
52
65
|
};
|
|
53
66
|
export {};
|
|
@@ -1,11 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { type NewPopoverModifier, type NewPopoverProps } from '../types';
|
|
3
|
+
type UseLogicParams = Pick<NewPopoverProps, 'isOpen' | 'anchorEl' | 'onClose' | 'disableAutoFocus' | 'hasArrow'>;
|
|
4
|
+
export declare const useLogic: ({ isOpen, anchorEl, onClose, disableAutoFocus, hasArrow, }: UseLogicParams) => {
|
|
4
5
|
isMobile: boolean;
|
|
5
6
|
isOpened: boolean;
|
|
6
7
|
shouldRender: boolean;
|
|
7
8
|
handleAnimationEnd: () => void;
|
|
8
9
|
handleClose: (event: Event) => void;
|
|
9
10
|
setContainerRef: (node: HTMLDivElement | null) => void;
|
|
11
|
+
arrowElement: HTMLSpanElement | null;
|
|
12
|
+
setArrowElement: import("react").Dispatch<import("react").SetStateAction<HTMLSpanElement | null>>;
|
|
13
|
+
mergedModifiers: NewPopoverModifier[];
|
|
10
14
|
};
|
|
11
15
|
export {};
|
|
@@ -4,10 +4,12 @@ import { useEscapeClickEffect } from '../../useEscapeClickEffect';
|
|
|
4
4
|
import { useFocusTrapEffect } from '../../useFocusTrapEffect';
|
|
5
5
|
import { usePopoverAnimation } from '../../usePopoverAnimation';
|
|
6
6
|
import { useViewportType } from '../../useViewportType';
|
|
7
|
+
import { DEFAULT_MODIFIERS } from '../constants';
|
|
7
8
|
import { resolveAnchorNode } from '../utils';
|
|
8
|
-
export const useLogic = ({ isOpen, anchorEl, onClose, disableAutoFocus, }) => {
|
|
9
|
+
export const useLogic = ({ isOpen, anchorEl, onClose, disableAutoFocus, hasArrow, }) => {
|
|
9
10
|
const containerRef = useRef(null);
|
|
10
11
|
const [isContainerMounted, setIsContainerMounted] = useState(false);
|
|
12
|
+
const [arrowElement, setArrowElement] = useState(null);
|
|
11
13
|
const setContainerRef = useCallback((node) => {
|
|
12
14
|
containerRef.current = node;
|
|
13
15
|
setIsContainerMounted(Boolean(node));
|
|
@@ -43,6 +45,15 @@ export const useLogic = ({ isOpen, anchorEl, onClose, disableAutoFocus, }) => {
|
|
|
43
45
|
allowOutsideClick: true,
|
|
44
46
|
fallbackFocus: () => containerRef.current || document.body,
|
|
45
47
|
});
|
|
48
|
+
const mergedModifiers = useMemo(() => {
|
|
49
|
+
if (!hasArrow) {
|
|
50
|
+
return DEFAULT_MODIFIERS;
|
|
51
|
+
}
|
|
52
|
+
return [
|
|
53
|
+
...DEFAULT_MODIFIERS,
|
|
54
|
+
{ name: 'arrow', enabled: true, options: { element: arrowElement } },
|
|
55
|
+
];
|
|
56
|
+
}, [hasArrow, arrowElement]);
|
|
46
57
|
return {
|
|
47
58
|
isMobile,
|
|
48
59
|
isOpened,
|
|
@@ -50,5 +61,8 @@ export const useLogic = ({ isOpen, anchorEl, onClose, disableAutoFocus, }) => {
|
|
|
50
61
|
handleAnimationEnd,
|
|
51
62
|
handleClose,
|
|
52
63
|
setContainerRef,
|
|
64
|
+
arrowElement,
|
|
65
|
+
setArrowElement,
|
|
66
|
+
mergedModifiers,
|
|
53
67
|
};
|
|
54
68
|
};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { ErrorService } from '../services/ErrorService';
|
|
2
|
+
import { ActiveStepStore } from './core/ActiveStepStore';
|
|
3
|
+
import { OnboardingTour } from './core/OnboardingTour';
|
|
4
|
+
import { type OnboardingConfig, type OnboardingTourConfig, type SaveStrategyFactory, type Step } from './types';
|
|
5
|
+
/**
|
|
6
|
+
* Фасад Onboarding, который собирает туры.
|
|
7
|
+
*
|
|
8
|
+
* Создаётся через createOnboarding.
|
|
9
|
+
*/
|
|
10
|
+
export declare class Onboarding {
|
|
11
|
+
private readonly saveStrategyFactory;
|
|
12
|
+
private readonly errorService;
|
|
13
|
+
readonly activeStepStore: ActiveStepStore;
|
|
14
|
+
constructor(saveStrategyFactory: SaveStrategyFactory, errorService: ErrorService);
|
|
15
|
+
/**
|
|
16
|
+
* Создаёт тур.
|
|
17
|
+
*/
|
|
18
|
+
createTour: <const TSteps extends readonly Step[]>(tourConfig: OnboardingTourConfig<TSteps>) => OnboardingTour<TSteps>;
|
|
19
|
+
/**
|
|
20
|
+
* Закрывает показанный сейчас тур.
|
|
21
|
+
*/
|
|
22
|
+
closeActiveTour: () => void;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Создаёт экземпляр онбординга.
|
|
26
|
+
*
|
|
27
|
+
* Экземпляр передаётся контейнеру явно: `<OnboardingContainer onboarding={...}/>`.
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* const onboarding = createOnboarding({ saveStrategy });
|
|
31
|
+
* const tour = onboarding.createTour({ name: 'intro', steps: [...] });
|
|
32
|
+
* <OnboardingContainer onboarding={onboarding} />
|
|
33
|
+
* tour.start();
|
|
34
|
+
*/
|
|
35
|
+
export declare const createOnboarding: (config?: OnboardingConfig) => Onboarding;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { ErrorService } from '../services/ErrorService';
|
|
2
|
+
import { ActiveStepStore } from './core/ActiveStepStore';
|
|
3
|
+
import { OnboardingTour } from './core/OnboardingTour';
|
|
4
|
+
import { ProgressStorage } from './core/ProgressStorage';
|
|
5
|
+
import { createLocalStorageSaveStrategy } from './services/LocalStorageSaveStrategy';
|
|
6
|
+
import { validateTourConfig } from './validation';
|
|
7
|
+
/**
|
|
8
|
+
* Фасад Onboarding, который собирает туры.
|
|
9
|
+
*
|
|
10
|
+
* Создаётся через createOnboarding.
|
|
11
|
+
*/
|
|
12
|
+
export class Onboarding {
|
|
13
|
+
constructor(saveStrategyFactory, errorService) {
|
|
14
|
+
this.saveStrategyFactory = saveStrategyFactory;
|
|
15
|
+
this.errorService = errorService;
|
|
16
|
+
this.activeStepStore = new ActiveStepStore();
|
|
17
|
+
/**
|
|
18
|
+
* Создаёт тур.
|
|
19
|
+
*/
|
|
20
|
+
this.createTour = (tourConfig) => {
|
|
21
|
+
// Fail-fast на некорректной конфигурации до сборки тура.
|
|
22
|
+
validateTourConfig(tourConfig);
|
|
23
|
+
// Ключ хранилища уникален на тур, поэтому стратегия строится на createTour.
|
|
24
|
+
const progressStorage = new ProgressStorage(this.saveStrategyFactory(tourConfig.name));
|
|
25
|
+
return new OnboardingTour(tourConfig, progressStorage, this.activeStepStore, this.errorService);
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Закрывает показанный сейчас тур.
|
|
29
|
+
*/
|
|
30
|
+
this.closeActiveTour = () => {
|
|
31
|
+
this.activeStepStore.closeActiveTour();
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Создаёт экземпляр онбординга.
|
|
37
|
+
*
|
|
38
|
+
* Экземпляр передаётся контейнеру явно: `<OnboardingContainer onboarding={...}/>`.
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* const onboarding = createOnboarding({ saveStrategy });
|
|
42
|
+
* const tour = onboarding.createTour({ name: 'intro', steps: [...] });
|
|
43
|
+
* <OnboardingContainer onboarding={onboarding} />
|
|
44
|
+
* tour.start();
|
|
45
|
+
*/
|
|
46
|
+
export const createOnboarding = (config = {}) => new Onboarding(config.saveStrategy ?? createLocalStorageSaveStrategy, ErrorService.getInstance());
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* data-атрибут, по которому highlight-шаг находит свой элемент.
|
|
3
|
+
*/
|
|
4
|
+
export declare const TOUR_ID_ATTR = "data-tour-id";
|
|
5
|
+
/**
|
|
6
|
+
* Тайм-аут по умолчанию ожидания элемента highlight-шага в DOM (мс).
|
|
7
|
+
* `0` — элемент ищется синхронно. Ожидание включается только при заданном
|
|
8
|
+
* `waitForTimeout`.
|
|
9
|
+
*/
|
|
10
|
+
export declare const DEFAULT_WAIT_ELEMENT_TIMEOUT_MS = 0;
|
|
11
|
+
/**
|
|
12
|
+
* Базовый отступ hole overlay вокруг подсвечиваемого элемента (px).
|
|
13
|
+
* Применяется, когда у шага не задан `highlightOffset`.
|
|
14
|
+
*/
|
|
15
|
+
export declare const DEFAULT_HIGHLIGHT_PADDING = 8;
|
|
16
|
+
/**
|
|
17
|
+
* Скругление углов hole overlay (px).
|
|
18
|
+
*/
|
|
19
|
+
export declare const DEFAULT_HIGHLIGHT_RADIUS = 8;
|
|
20
|
+
/**
|
|
21
|
+
* Поведение автоскролла к элементу highlight-шага.
|
|
22
|
+
*/
|
|
23
|
+
export declare const SCROLL_BEHAVIOR: ScrollBehavior;
|
|
24
|
+
/**
|
|
25
|
+
* Надбавки к z-index собственных поверхностей онбординга поверх
|
|
26
|
+
* `theme.zIndex.tooltip`, чтобы они перекрывали
|
|
27
|
+
* обычные UIKit-модалки/подсказки.
|
|
28
|
+
*/
|
|
29
|
+
export declare const ONBOARDING_Z_INDEX_OFFSET: {
|
|
30
|
+
/** Overlay-backdrop и диалоги (standalone-шаг, confirm-exit). */
|
|
31
|
+
readonly base: 10;
|
|
32
|
+
/** Highlight-popover — всплывает над базовым слоем. */
|
|
33
|
+
readonly popover: 30;
|
|
34
|
+
};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* data-атрибут, по которому highlight-шаг находит свой элемент.
|
|
3
|
+
*/
|
|
4
|
+
export const TOUR_ID_ATTR = 'data-tour-id';
|
|
5
|
+
/**
|
|
6
|
+
* Тайм-аут по умолчанию ожидания элемента highlight-шага в DOM (мс).
|
|
7
|
+
* `0` — элемент ищется синхронно. Ожидание включается только при заданном
|
|
8
|
+
* `waitForTimeout`.
|
|
9
|
+
*/
|
|
10
|
+
export const DEFAULT_WAIT_ELEMENT_TIMEOUT_MS = 0;
|
|
11
|
+
/**
|
|
12
|
+
* Базовый отступ hole overlay вокруг подсвечиваемого элемента (px).
|
|
13
|
+
* Применяется, когда у шага не задан `highlightOffset`.
|
|
14
|
+
*/
|
|
15
|
+
export const DEFAULT_HIGHLIGHT_PADDING = 8;
|
|
16
|
+
/**
|
|
17
|
+
* Скругление углов hole overlay (px).
|
|
18
|
+
*/
|
|
19
|
+
export const DEFAULT_HIGHLIGHT_RADIUS = 8;
|
|
20
|
+
/**
|
|
21
|
+
* Поведение автоскролла к элементу highlight-шага.
|
|
22
|
+
*/
|
|
23
|
+
export const SCROLL_BEHAVIOR = 'smooth';
|
|
24
|
+
/**
|
|
25
|
+
* Надбавки к z-index собственных поверхностей онбординга поверх
|
|
26
|
+
* `theme.zIndex.tooltip`, чтобы они перекрывали
|
|
27
|
+
* обычные UIKit-модалки/подсказки.
|
|
28
|
+
*/
|
|
29
|
+
export const ONBOARDING_Z_INDEX_OFFSET = {
|
|
30
|
+
/** Overlay-backdrop и диалоги (standalone-шаг, confirm-exit). */
|
|
31
|
+
base: 10,
|
|
32
|
+
/** Highlight-popover — всплывает над базовым слоем. */
|
|
33
|
+
popover: 30,
|
|
34
|
+
};
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { type ActiveStepState } from '../../types';
|
|
2
|
+
type Listener = VoidFunction;
|
|
3
|
+
/**
|
|
4
|
+
* Ссылка на тур, которую держит store: по ней он опознаёт владельца слота
|
|
5
|
+
* (сравнение по идентичности экземпляра, а не по имени) и может закрыть тур.
|
|
6
|
+
*/
|
|
7
|
+
export type TourHandle = {
|
|
8
|
+
/**
|
|
9
|
+
* Закрытие тура штатным путём (используется `Onboarding.closeActiveTour`).
|
|
10
|
+
*/
|
|
11
|
+
close: () => void;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Store активного шага, связывающий туры с `<OnboardingContainer/>`.
|
|
15
|
+
*/
|
|
16
|
+
export declare class ActiveStepStore {
|
|
17
|
+
private activeStep;
|
|
18
|
+
private activeTour;
|
|
19
|
+
private readonly listeners;
|
|
20
|
+
subscribe: (listener: Listener) => () => void;
|
|
21
|
+
/**
|
|
22
|
+
* Состояние активного шага (null — тур не показан).
|
|
23
|
+
*/
|
|
24
|
+
getActiveStep: () => ActiveStepState | null;
|
|
25
|
+
/**
|
|
26
|
+
* Публикует шаг тура и делает этот тур владельцем слота.
|
|
27
|
+
*/
|
|
28
|
+
setActiveStep: (step: ActiveStepState, tour: TourHandle) => void;
|
|
29
|
+
/**
|
|
30
|
+
* Владеет ли слотом сейчас именно тур (пустой store — `false`).
|
|
31
|
+
*/
|
|
32
|
+
isActiveTour: (tour: TourHandle) => boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Показан ли сейчас шаг тура. Имена шагов могут совпадать
|
|
35
|
+
* в разных турах, поэтому проверяется и тур, и имя.
|
|
36
|
+
*/
|
|
37
|
+
isActiveStep: (tour: TourHandle, stepName: string) => boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Освобождает слот, если тур сейчас его владелец.
|
|
40
|
+
*/
|
|
41
|
+
release: (tour: TourHandle) => void;
|
|
42
|
+
/**
|
|
43
|
+
* Закрытие активного тура обычным путём.
|
|
44
|
+
* Внешний триггер: размонтирование онбординга, смена юзера.
|
|
45
|
+
*/
|
|
46
|
+
closeActiveTour: () => void;
|
|
47
|
+
private clear;
|
|
48
|
+
private emit;
|
|
49
|
+
}
|
|
50
|
+
export {};
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Store активного шага, связывающий туры с `<OnboardingContainer/>`.
|
|
3
|
+
*/
|
|
4
|
+
export class ActiveStepStore {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.activeStep = null;
|
|
7
|
+
this.activeTour = null;
|
|
8
|
+
this.listeners = new Set();
|
|
9
|
+
this.subscribe = (listener) => {
|
|
10
|
+
this.listeners.add(listener);
|
|
11
|
+
return () => {
|
|
12
|
+
this.listeners.delete(listener);
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Состояние активного шага (null — тур не показан).
|
|
17
|
+
*/
|
|
18
|
+
this.getActiveStep = () => this.activeStep;
|
|
19
|
+
/**
|
|
20
|
+
* Публикует шаг тура и делает этот тур владельцем слота.
|
|
21
|
+
*/
|
|
22
|
+
this.setActiveStep = (step, tour) => {
|
|
23
|
+
this.activeStep = step;
|
|
24
|
+
this.activeTour = tour;
|
|
25
|
+
this.emit();
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Владеет ли слотом сейчас именно тур (пустой store — `false`).
|
|
29
|
+
*/
|
|
30
|
+
this.isActiveTour = (tour) => this.activeTour === tour;
|
|
31
|
+
/**
|
|
32
|
+
* Показан ли сейчас шаг тура. Имена шагов могут совпадать
|
|
33
|
+
* в разных турах, поэтому проверяется и тур, и имя.
|
|
34
|
+
*/
|
|
35
|
+
this.isActiveStep = (tour, stepName) => this.isActiveTour(tour) && this.activeStep?.step.name === stepName;
|
|
36
|
+
/**
|
|
37
|
+
* Освобождает слот, если тур сейчас его владелец.
|
|
38
|
+
*/
|
|
39
|
+
this.release = (tour) => {
|
|
40
|
+
if (this.isActiveTour(tour)) {
|
|
41
|
+
this.clear();
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Закрытие активного тура обычным путём.
|
|
46
|
+
* Внешний триггер: размонтирование онбординга, смена юзера.
|
|
47
|
+
*/
|
|
48
|
+
this.closeActiveTour = () => {
|
|
49
|
+
this.activeTour?.close();
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
clear() {
|
|
53
|
+
if (this.activeStep === null) {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
this.activeStep = null;
|
|
57
|
+
this.activeTour = null;
|
|
58
|
+
this.emit();
|
|
59
|
+
}
|
|
60
|
+
emit() {
|
|
61
|
+
this.listeners.forEach((listener) => listener());
|
|
62
|
+
}
|
|
63
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './ActiveStepStore';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './ActiveStepStore';
|