UNPKG

@fluentui/react-northstar

Version:
130 lines (128 loc) 5.2 kB
import _invoke from "lodash/invoke"; import * as React from 'react'; import { datepickerCalendarHeaderBehavior } from '@fluentui/accessibility'; import { DEFAULT_CALENDAR_STRINGS } from '../../utils/date-time-utilities'; import { getElementType, useAccessibility, useFluentContext, useStyles, useTelemetry, useUnhandledProps } from '@fluentui/react-bindings'; import * as customPropTypes from '@fluentui/react-proptypes'; import * as PropTypes from 'prop-types'; import { commonPropTypes, createShorthand, createShorthandFactory } from '../../utils'; import { DatepickerCalendarHeaderAction } from './DatepickerCalendarHeaderAction'; import { Text } from '../Text/Text'; export var datepickerCalendarHeaderClassName = 'ui-datepicker__calendarheader'; /** * A DatepickerCalendarHeader is used to display header block above calendar grid. */ export var DatepickerCalendarHeader = /*#__PURE__*/function () { var DatepickerCalendarHeader = /*#__PURE__*/React.forwardRef(function (props, ref) { var context = useFluentContext(); var _useTelemetry = useTelemetry(DatepickerCalendarHeader.displayName, context.telemetry), setStart = _useTelemetry.setStart, setEnd = _useTelemetry.setEnd; setStart(); var className = props.className, design = props.design, styles = props.styles, variables = props.variables, label = props.label, nextButton = props.nextButton, previousButton = props.previousButton, onPreviousClick = props.onPreviousClick, onNextClick = props.onNextClick; var ElementType = getElementType(props); var unhandledProps = useUnhandledProps(DatepickerCalendarHeader.handledProps, props); var getA11yProps = useAccessibility(props.accessibility, { debugName: DatepickerCalendarHeader.displayName, actionHandlers: {}, rtl: context.rtl }); var _useStyles = useStyles(DatepickerCalendarHeader.displayName, { className: datepickerCalendarHeaderClassName, mapPropsToInlineStyles: function mapPropsToInlineStyles() { return { className: className, design: design, styles: styles, variables: variables }; }, rtl: context.rtl }), classes = _useStyles.classes; var element = /*#__PURE__*/React.createElement(ElementType, getA11yProps('root', Object.assign({ className: classes.root, ref: ref }, unhandledProps)), createShorthand(Text, label, { defaultProps: function defaultProps() { return getA11yProps('label', { className: classes.label }); } }), createShorthand(DatepickerCalendarHeaderAction, previousButton, { defaultProps: function defaultProps() { return getA11yProps('previousButton', { title: props.prevMonthAriaLabel, direction: 'previous', 'aria-disabled': props.disabledPreviousButton, disabledNavigatableButton: props.disabledPreviousButton }); }, overrideProps: function overrideProps(predefinedProps) { return { onClick: function onClick(e, data) { if (!props.disabledPreviousButton) { onPreviousClick(e, data); _invoke(predefinedProps, 'onClick', e, data); } } }; } }), createShorthand(DatepickerCalendarHeaderAction, nextButton, { defaultProps: function defaultProps() { return getA11yProps('nextButton', { title: props.nextMonthAriaLabel, direction: 'next', 'aria-disabled': props.disabledNextButton, disabledNavigatableButton: props.disabledNextButton }); }, overrideProps: function overrideProps(predefinedProps) { return { onClick: function onClick(e, data) { if (!props.disabledNextButton) { onNextClick(e, data); _invoke(predefinedProps, 'onClick', e, data); } } }; } })); setEnd(); return element; }); DatepickerCalendarHeader.displayName = 'DatepickerCalendarHeader'; DatepickerCalendarHeader.propTypes = Object.assign({}, commonPropTypes.createCommon(), { label: customPropTypes.itemShorthand, nextButton: customPropTypes.itemShorthand, previousButton: customPropTypes.itemShorthand, onPreviousClick: PropTypes.func, onNextClick: PropTypes.func, disabledNextButton: PropTypes.bool, disabledPreviousButton: PropTypes.bool, prevMonthAriaLabel: PropTypes.string, nextMonthAriaLabel: PropTypes.string }); DatepickerCalendarHeader.defaultProps = { accessibility: datepickerCalendarHeaderBehavior, nextButton: {}, previousButton: {}, label: {}, prevMonthAriaLabel: DEFAULT_CALENDAR_STRINGS.prevMonthAriaLabel, nextMonthAriaLabel: DEFAULT_CALENDAR_STRINGS.nextMonthAriaLabel }; DatepickerCalendarHeader.handledProps = Object.keys(DatepickerCalendarHeader.propTypes); DatepickerCalendarHeader.create = createShorthandFactory({ Component: DatepickerCalendarHeader }); return DatepickerCalendarHeader; }(); //# sourceMappingURL=DatepickerCalendarHeader.js.map