Files
Iliyan Angelov 306b20e24a Frontend start
2025-09-14 00:54:48 +03:00

177 lines
6.1 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
import _extends from "@babel/runtime/helpers/esm/extends";
const _excluded = ["ampm", "parsedValue", "isMobileKeyboardViewOpen", "onChange", "openView", "setOpenView", "toggleMobileKeyboardView", "toolbarFormat", "toolbarPlaceholder", "toolbarTitle", "views"];
import * as React from 'react';
import { styled, useThemeProps } from '@mui/material/styles';
import { unstable_composeClasses as composeClasses } from '@mui/material';
import { PickersToolbarText } from '../internals/components/PickersToolbarText';
import { PickersToolbar } from '../internals/components/PickersToolbar';
import { pickersToolbarClasses } from '../internals/components/pickersToolbarClasses';
import { PickersToolbarButton } from '../internals/components/PickersToolbarButton';
import { useLocaleText, useUtils } from '../internals/hooks/useUtils';
import { getDateTimePickerToolbarUtilityClass } from './dateTimePickerToolbarClasses';
import { resolveViewTypeFromView } from './shared';
import { jsx as _jsx } from "react/jsx-runtime";
import { jsxs as _jsxs } from "react/jsx-runtime";
const useUtilityClasses = ownerState => {
const {
classes
} = ownerState;
const slots = {
root: ['root'],
dateContainer: ['dateContainer'],
timeContainer: ['timeContainer'],
separator: ['separator']
};
return composeClasses(slots, getDateTimePickerToolbarUtilityClass, classes);
};
const DateTimePickerToolbarRoot = styled(PickersToolbar, {
name: 'MuiDateTimePickerToolbar',
slot: 'Root',
overridesResolver: (props, styles) => styles.root
})(({
theme
}) => ({
paddingLeft: 16,
paddingRight: 16,
justifyContent: 'space-around',
position: 'relative',
[`& .${pickersToolbarClasses.penIconButton}`]: _extends({
position: 'absolute',
top: 8
}, theme.direction === 'rtl' ? {
left: 8
} : {
right: 8
})
}));
const DateTimePickerToolbarDateContainer = styled('div', {
name: 'MuiDateTimePickerToolbar',
slot: 'DateContainer',
overridesResolver: (props, styles) => styles.dateContainer
})({
display: 'flex',
flexDirection: 'column',
alignItems: 'flex-start'
});
const DateTimePickerToolbarTimeContainer = styled('div', {
name: 'MuiDateTimePickerToolbar',
slot: 'TimeContainer',
overridesResolver: (props, styles) => styles.timeContainer
})({
display: 'flex'
});
const DateTimePickerToolbarSeparator = styled(PickersToolbarText, {
name: 'MuiDateTimePickerToolbar',
slot: 'Separator',
overridesResolver: (props, styles) => styles.separator
})({
margin: '0 4px 0 2px',
cursor: 'default'
});
/**
* @ignore - internal component.
*/
export function DateTimePickerToolbar(inProps) {
const props = useThemeProps({
props: inProps,
name: 'MuiDateTimePickerToolbar'
});
const {
ampm,
parsedValue,
isMobileKeyboardViewOpen,
openView,
setOpenView,
toggleMobileKeyboardView,
toolbarFormat,
toolbarPlaceholder = '',
toolbarTitle: toolbarTitleProp,
views
} = props,
other = _objectWithoutPropertiesLoose(props, _excluded);
const ownerState = props;
const utils = useUtils();
const localeText = useLocaleText();
const classes = useUtilityClasses(ownerState);
const toolbarTitle = toolbarTitleProp ?? localeText.dateTimePickerDefaultToolbarTitle;
const formatHours = time => ampm ? utils.format(time, 'hours12h') : utils.format(time, 'hours24h');
const dateText = React.useMemo(() => {
if (!parsedValue) {
return toolbarPlaceholder;
}
if (toolbarFormat) {
return utils.formatByString(parsedValue, toolbarFormat);
}
return utils.format(parsedValue, 'shortDate');
}, [parsedValue, toolbarFormat, toolbarPlaceholder, utils]);
return /*#__PURE__*/_jsxs(DateTimePickerToolbarRoot, _extends({
toolbarTitle: toolbarTitle,
isMobileKeyboardViewOpen: isMobileKeyboardViewOpen,
toggleMobileKeyboardView: toggleMobileKeyboardView,
className: classes.root,
viewType: resolveViewTypeFromView(openView)
}, other, {
isLandscape: false,
ownerState: ownerState,
children: [/*#__PURE__*/_jsxs(DateTimePickerToolbarDateContainer, {
className: classes.dateContainer,
ownerState: ownerState,
children: [views.includes('year') && /*#__PURE__*/_jsx(PickersToolbarButton, {
tabIndex: -1,
variant: "subtitle1",
onClick: () => setOpenView('year'),
selected: openView === 'year',
value: parsedValue ? utils.format(parsedValue, 'year') : ''
}), views.includes('day') && /*#__PURE__*/_jsx(PickersToolbarButton, {
tabIndex: -1,
variant: "h4",
onClick: () => setOpenView('day'),
selected: openView === 'day',
value: dateText
})]
}), /*#__PURE__*/_jsxs(DateTimePickerToolbarTimeContainer, {
className: classes.timeContainer,
ownerState: ownerState,
children: [views.includes('hours') && /*#__PURE__*/_jsx(PickersToolbarButton, {
variant: "h3",
onClick: () => setOpenView('hours'),
selected: openView === 'hours',
value: parsedValue ? formatHours(parsedValue) : '--'
}), views.includes('minutes') && /*#__PURE__*/_jsxs(React.Fragment, {
children: [/*#__PURE__*/_jsx(DateTimePickerToolbarSeparator, {
variant: "h3",
value: ":",
className: classes.separator,
ownerState: ownerState
}), /*#__PURE__*/_jsx(PickersToolbarButton, {
variant: "h3",
onClick: () => setOpenView('minutes'),
selected: openView === 'minutes',
value: parsedValue ? utils.format(parsedValue, 'minutes') : '--'
})]
}), views.includes('seconds') && /*#__PURE__*/_jsxs(React.Fragment, {
children: [/*#__PURE__*/_jsx(DateTimePickerToolbarSeparator, {
variant: "h3",
value: ":",
className: classes.separator,
ownerState: ownerState
}), /*#__PURE__*/_jsx(PickersToolbarButton, {
variant: "h3",
onClick: () => setOpenView('seconds'),
selected: openView === 'seconds',
value: parsedValue ? utils.format(parsedValue, 'seconds') : '--'
})]
})]
})]
}));
}