UNPKG

@material-ui/lab

Version:

Material-UI Lab - Incubator for Material-UI React components.

62 lines (53 loc) 1.77 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); Object.defineProperty(exports, "__esModule", { value: true }); exports.useViews = useViews; var React = _interopRequireWildcard(require("react")); var _core = require("@material-ui/core"); var _utils = require("../utils"); function useViews({ view, views, openTo, onChange, onViewChange }) { var _views, _views2; const [openView, setOpenView] = (0, _core.useControlled)({ name: 'Picker', state: 'view', controlled: view, default: openTo && (0, _utils.arrayIncludes)(views, openTo) ? openTo : views[0] }); const previousView = (_views = views[views.indexOf(openView) - 1]) !== null && _views !== void 0 ? _views : null; const nextView = (_views2 = views[views.indexOf(openView) + 1]) !== null && _views2 !== void 0 ? _views2 : null; const changeView = React.useCallback(newView => { setOpenView(newView); if (onViewChange) { onViewChange(newView); } }, [setOpenView, onViewChange]); const openNext = React.useCallback(() => { if (nextView) { changeView(nextView); } }, [nextView, changeView]); const handleChangeAndOpenNext = React.useCallback((date, currentViewSelectionState) => { const isSelectionFinishedOnCurrentView = currentViewSelectionState === 'finish'; const globalSelectionState = isSelectionFinishedOnCurrentView && Boolean(nextView) ? 'partial' : currentViewSelectionState; onChange(date, globalSelectionState); if (isSelectionFinishedOnCurrentView) { openNext(); } }, [nextView, onChange, openNext]); return { nextView, previousView, openNext, handleChangeAndOpenNext, openView, setOpenView: changeView }; }