stupa-pdf-api/frontend/node_modules/@mui/x-date-pickers/legacy/PickersCalendarHeader/PickersCalendarHeader.js

293 lines
11 KiB
JavaScript

import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
import _extends from "@babel/runtime/helpers/esm/extends";
var _excluded = ["slots", "slotProps", "components", "componentsProps", "currentMonth", "disabled", "disableFuture", "disablePast", "maxDate", "minDate", "onMonthChange", "onViewChange", "view", "reduceAnimations", "views", "labelId", "className", "timezone"],
_excluded2 = ["ownerState"];
import * as React from 'react';
import PropTypes from 'prop-types';
import clsx from 'clsx';
import Fade from '@mui/material/Fade';
import { styled, useThemeProps } from '@mui/material/styles';
import { useSlotProps } from '@mui/base/utils';
import { unstable_composeClasses as composeClasses } from '@mui/utils';
import IconButton from '@mui/material/IconButton';
import { useLocaleText, useUtils } from '../internals/hooks/useUtils';
import { PickersFadeTransitionGroup } from '../DateCalendar/PickersFadeTransitionGroup';
import { ArrowDropDownIcon } from '../icons';
import { PickersArrowSwitcher } from '../internals/components/PickersArrowSwitcher';
import { usePreviousMonthDisabled, useNextMonthDisabled } from '../internals/hooks/date-helpers-hooks';
import { getPickersCalendarHeaderUtilityClass, pickersCalendarHeaderClasses } from './pickersCalendarHeaderClasses';
import { jsx as _jsx } from "react/jsx-runtime";
import { jsxs as _jsxs } from "react/jsx-runtime";
var useUtilityClasses = function useUtilityClasses(ownerState) {
var classes = ownerState.classes;
var slots = {
root: ['root'],
labelContainer: ['labelContainer'],
label: ['label'],
switchViewButton: ['switchViewButton'],
switchViewIcon: ['switchViewIcon']
};
return composeClasses(slots, getPickersCalendarHeaderUtilityClass, classes);
};
var PickersCalendarHeaderRoot = styled('div', {
name: 'MuiPickersCalendarHeader',
slot: 'Root',
overridesResolver: function overridesResolver(_, styles) {
return styles.root;
}
})({
display: 'flex',
alignItems: 'center',
marginTop: 16,
marginBottom: 8,
paddingLeft: 24,
paddingRight: 12,
// prevent jumping in safari
maxHeight: 30,
minHeight: 30
});
var PickersCalendarHeaderLabelContainer = styled('div', {
name: 'MuiPickersCalendarHeader',
slot: 'LabelContainer',
overridesResolver: function overridesResolver(_, styles) {
return styles.labelContainer;
}
})(function (_ref) {
var theme = _ref.theme;
return _extends({
display: 'flex',
overflow: 'hidden',
alignItems: 'center',
cursor: 'pointer',
marginRight: 'auto'
}, theme.typography.body1, {
fontWeight: theme.typography.fontWeightMedium
});
});
var PickersCalendarHeaderLabel = styled('div', {
name: 'MuiPickersCalendarHeader',
slot: 'Label',
overridesResolver: function overridesResolver(_, styles) {
return styles.label;
}
})({
marginRight: 6
});
var PickersCalendarHeaderSwitchViewButton = styled(IconButton, {
name: 'MuiPickersCalendarHeader',
slot: 'SwitchViewButton',
overridesResolver: function overridesResolver(_, styles) {
return styles.switchViewButton;
}
})(function (_ref2) {
var ownerState = _ref2.ownerState;
return _extends({
marginRight: 'auto'
}, ownerState.view === 'year' && _defineProperty({}, ".".concat(pickersCalendarHeaderClasses.switchViewIcon), {
transform: 'rotate(180deg)'
}));
});
var PickersCalendarHeaderSwitchViewIcon = styled(ArrowDropDownIcon, {
name: 'MuiPickersCalendarHeader',
slot: 'SwitchViewIcon',
overridesResolver: function overridesResolver(_, styles) {
return styles.switchViewIcon;
}
})(function (_ref4) {
var theme = _ref4.theme;
return {
willChange: 'transform',
transition: theme.transitions.create('transform'),
transform: 'rotate(0deg)'
};
});
/**
* Demos:
*
* - [DateCalendar](https://mui.com/x/react-date-pickers/date-calendar/)
* - [DateRangeCalendar](https://mui.com/x/react-date-pickers/date-range-calendar/)
* - [Custom slots and subcomponents](https://mui.com/x/react-date-pickers/custom-components/)
*
* API:
*
* - [PickersCalendarHeader API](https://mui.com/x/api/date-pickers/pickers-calendar-header/)
*/
var PickersCalendarHeader = /*#__PURE__*/React.forwardRef(function PickersCalendarHeader(inProps, ref) {
var _ref5, _slots$switchViewButt, _ref6, _slots$switchViewIcon;
var localeText = useLocaleText();
var utils = useUtils();
var props = useThemeProps({
props: inProps,
name: 'MuiPickersCalendarHeader'
});
var slots = props.slots,
slotProps = props.slotProps,
components = props.components,
componentsProps = props.componentsProps,
month = props.currentMonth,
disabled = props.disabled,
disableFuture = props.disableFuture,
disablePast = props.disablePast,
maxDate = props.maxDate,
minDate = props.minDate,
onMonthChange = props.onMonthChange,
onViewChange = props.onViewChange,
view = props.view,
reduceAnimations = props.reduceAnimations,
views = props.views,
labelId = props.labelId,
className = props.className,
timezone = props.timezone,
other = _objectWithoutProperties(props, _excluded);
var ownerState = props;
var classes = useUtilityClasses(props);
var SwitchViewButton = (_ref5 = (_slots$switchViewButt = slots == null ? void 0 : slots.switchViewButton) != null ? _slots$switchViewButt : components == null ? void 0 : components.SwitchViewButton) != null ? _ref5 : PickersCalendarHeaderSwitchViewButton;
var switchViewButtonProps = useSlotProps({
elementType: SwitchViewButton,
externalSlotProps: slotProps == null ? void 0 : slotProps.switchViewButton,
additionalProps: {
size: 'small',
'aria-label': localeText.calendarViewSwitchingButtonAriaLabel(view)
},
ownerState: ownerState,
className: classes.switchViewButton
});
var SwitchViewIcon = (_ref6 = (_slots$switchViewIcon = slots == null ? void 0 : slots.switchViewIcon) != null ? _slots$switchViewIcon : components == null ? void 0 : components.SwitchViewIcon) != null ? _ref6 : PickersCalendarHeaderSwitchViewIcon;
// The spread is here to avoid this bug mui/material-ui#34056
var _useSlotProps = useSlotProps({
elementType: SwitchViewIcon,
externalSlotProps: slotProps == null ? void 0 : slotProps.switchViewIcon,
ownerState: undefined,
className: classes.switchViewIcon
}),
switchViewIconOwnerState = _useSlotProps.ownerState,
switchViewIconProps = _objectWithoutProperties(_useSlotProps, _excluded2);
var selectNextMonth = function selectNextMonth() {
return onMonthChange(utils.addMonths(month, 1), 'left');
};
var selectPreviousMonth = function selectPreviousMonth() {
return onMonthChange(utils.addMonths(month, -1), 'right');
};
var isNextMonthDisabled = useNextMonthDisabled(month, {
disableFuture: disableFuture,
maxDate: maxDate,
timezone: timezone
});
var isPreviousMonthDisabled = usePreviousMonthDisabled(month, {
disablePast: disablePast,
minDate: minDate,
timezone: timezone
});
var handleToggleView = function handleToggleView() {
if (views.length === 1 || !onViewChange || disabled) {
return;
}
if (views.length === 2) {
onViewChange(views.find(function (el) {
return el !== view;
}) || views[0]);
} else {
// switching only between first 2
var nextIndexToOpen = views.indexOf(view) !== 0 ? 0 : 1;
onViewChange(views[nextIndexToOpen]);
}
};
// No need to display more information
if (views.length === 1 && views[0] === 'year') {
return null;
}
return /*#__PURE__*/_jsxs(PickersCalendarHeaderRoot, _extends({}, other, {
ownerState: ownerState,
className: clsx(className, classes.root),
ref: ref,
children: [/*#__PURE__*/_jsxs(PickersCalendarHeaderLabelContainer, {
role: "presentation",
onClick: handleToggleView,
ownerState: ownerState
// putting this on the label item element below breaks when using transition
,
"aria-live": "polite",
className: classes.labelContainer,
children: [/*#__PURE__*/_jsx(PickersFadeTransitionGroup, {
reduceAnimations: reduceAnimations,
transKey: utils.format(month, 'monthAndYear'),
children: /*#__PURE__*/_jsx(PickersCalendarHeaderLabel, {
id: labelId,
ownerState: ownerState,
className: classes.label,
children: utils.format(month, 'monthAndYear')
})
}), views.length > 1 && !disabled && /*#__PURE__*/_jsx(SwitchViewButton, _extends({}, switchViewButtonProps, {
children: /*#__PURE__*/_jsx(SwitchViewIcon, _extends({}, switchViewIconProps))
}))]
}), /*#__PURE__*/_jsx(Fade, {
in: view === 'day',
children: /*#__PURE__*/_jsx(PickersArrowSwitcher, {
slots: slots,
slotProps: slotProps,
onGoToPrevious: selectPreviousMonth,
isPreviousDisabled: isPreviousMonthDisabled,
previousLabel: localeText.previousMonth,
onGoToNext: selectNextMonth,
isNextDisabled: isNextMonthDisabled,
nextLabel: localeText.nextMonth
})
})]
}));
});
process.env.NODE_ENV !== "production" ? PickersCalendarHeader.propTypes = {
// ----------------------------- Warning --------------------------------
// | These PropTypes are generated from the TypeScript type definitions |
// | To update them edit the TypeScript types and run "yarn proptypes" |
// ----------------------------------------------------------------------
/**
* Override or extend the styles applied to the component.
*/
classes: PropTypes.object,
/**
* className applied to the root element.
*/
className: PropTypes.string,
/**
* Overridable components.
* @default {}
* @deprecated Please use `slots`.
*/
components: PropTypes.object,
/**
* The props used for each component slot.
* @default {}
* @deprecated Please use `slotProps`.
*/
componentsProps: PropTypes.object,
currentMonth: PropTypes.any.isRequired,
disabled: PropTypes.bool,
disableFuture: PropTypes.bool,
disablePast: PropTypes.bool,
labelId: PropTypes.string,
maxDate: PropTypes.any.isRequired,
minDate: PropTypes.any.isRequired,
onMonthChange: PropTypes.func.isRequired,
onViewChange: PropTypes.func,
reduceAnimations: PropTypes.bool.isRequired,
/**
* The props used for each component slot.
* @default {}
*/
slotProps: PropTypes.object,
/**
* Overridable component slots.
* @default {}
*/
slots: PropTypes.object,
/**
* The system prop that allows defining system overrides as well as additional CSS styles.
*/
sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),
timezone: PropTypes.string.isRequired,
view: PropTypes.oneOf(['day', 'month', 'year']).isRequired,
views: PropTypes.arrayOf(PropTypes.oneOf(['day', 'month', 'year']).isRequired).isRequired
} : void 0;
export { PickersCalendarHeader };