wix-style-react
Version:
53 lines (50 loc) • 1.58 kB
JavaScript
import React from 'react';
import PropTypes from 'prop-types';
import { classes, st } from './YearDropdown.st.css';
import range from '../../../utils/operators/range';
import setYear from 'date-fns/setYear';
import DatePickerDropdown from '../../DatePickerDropdown';
var optionsOf = function optionsOf(items) {
return items.map(function (item, index) {
return {
value: item,
id: index
};
});
};
var YearDropdown = function YearDropdown(_ref) {
var className = _ref.className,
date = _ref.date,
_onChange = _ref.onChange,
ariaLabel = _ref.ariaLabel,
ariaLabelledBy = _ref.ariaLabelledBy;
var year = date.getFullYear();
var lowerLimit = 1899,
upperLimit = 2028;
var years = optionsOf(range(year > upperLimit ? year : upperLimit, lowerLimit));
var selectedYear = years.find(function (_ref2) {
var value = _ref2.value;
return value === year;
});
return /*#__PURE__*/React.createElement(DatePickerDropdown, {
dataHook: "datepicker-year-dropdown",
className: st(classes.root, className),
caption: selectedYear.value,
options: years,
selectedId: selectedYear.id,
onChange: function onChange(_ref3) {
var value = _ref3.value;
return _onChange(setYear(date, value));
},
ariaLabel: ariaLabel,
ariaLabelledBy: ariaLabelledBy
});
};
YearDropdown.propTypes = {
className: PropTypes.string,
date: PropTypes.object.isRequired,
onChange: PropTypes.func.isRequired,
ariaLabel: PropTypes.string,
ariaLabelledBy: PropTypes.string
};
export default YearDropdown;