Files
ETB/ETB-FrontEnd/node_modules/@mui/x-date-pickers/legacy/internals/hooks/useViews.js
Iliyan Angelov 306b20e24a Frontend start
2025-09-14 00:54:48 +03:00

55 lines
1.8 KiB
JavaScript

import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
import * as React from 'react';
import { useControlled } from '@mui/material/utils';
import { arrayIncludes } from '../utils/utils';
export function useViews(_ref) {
var _views, _views2;
var onChange = _ref.onChange,
onViewChange = _ref.onViewChange,
openTo = _ref.openTo,
view = _ref.view,
views = _ref.views;
var _useControlled = useControlled({
name: 'Picker',
state: 'view',
controlled: view,
default: openTo && arrayIncludes(views, openTo) ? openTo : views[0]
}),
_useControlled2 = _slicedToArray(_useControlled, 2),
openView = _useControlled2[0],
setOpenView = _useControlled2[1];
var previousView = (_views = views[views.indexOf(openView) - 1]) != null ? _views : null;
var nextView = (_views2 = views[views.indexOf(openView) + 1]) != null ? _views2 : null;
var changeView = React.useCallback(function (newView) {
setOpenView(newView);
if (onViewChange) {
onViewChange(newView);
}
}, [setOpenView, onViewChange]);
var openNext = React.useCallback(function () {
if (nextView) {
changeView(nextView);
}
}, [nextView, changeView]);
var handleChangeAndOpenNext = React.useCallback(function (date, currentViewSelectionState) {
var isSelectionFinishedOnCurrentView = currentViewSelectionState === 'finish';
var globalSelectionState = isSelectionFinishedOnCurrentView && Boolean(nextView) ? 'partial' : currentViewSelectionState;
onChange(date, globalSelectionState);
if (isSelectionFinishedOnCurrentView) {
openNext();
}
}, [nextView, onChange, openNext]);
return {
handleChangeAndOpenNext: handleChangeAndOpenNext,
nextView: nextView,
previousView: previousView,
openNext: openNext,
openView: openView,
setOpenView: changeView
};
}