UNPKG

@zohodesk/components

Version:

In this Package, we Provide Some Basic Components to Build Web App

325 lines (272 loc) • 13.2 kB
"use strict"; function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _react = _interopRequireDefault(require("react")); var _propTypes = require("./props/propTypes"); var _defaultProps = require("./props/defaultProps"); var _virtualizer = require("@zohodesk/virtualizer"); var _Layout = require("../Layout"); var _icons = require("@zohodesk/icons"); var _Heading = _interopRequireDefault(require("../Heading/Heading")); var _YearViewModule = _interopRequireDefault(require("../../DateTime/YearView.module.css")); var _dateFormatUtils = require("../../DateTime/dateFormatUtils"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var monthNamesData = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; function getYears() { var years = []; var _getYearDetails = (0, _dateFormatUtils.getYearDetails)(), startPoint = _getYearDetails.startPoint, endPoint = _getYearDetails.endPoint; for (var i = startPoint; i <= endPoint; i++) { years.push(i); } return years; } var Year = /*#__PURE__*/function (_React$PureComponent) { _inherits(Year, _React$PureComponent); var _super = _createSuper(Year); function Year(props) { var _this; _classCallCheck(this, Year); _this = _super.call(this, props); _this.handleClick = _this.handleClick.bind(_assertThisInitialized(_this)); return _this; } _createClass(Year, [{ key: "handleClick", value: function handleClick() { var _this$props = this.props, year = _this$props.year, onClick = _this$props.onClick; onClick && onClick(year); } }, { key: "render", value: function render() { var _this$props2 = this.props, year = _this$props2.year, isActive = _this$props2.isActive, isOpen = _this$props2.isOpen; return /*#__PURE__*/_react["default"].createElement(_Layout.Box, { className: "".concat(_YearViewModule["default"].year, " ").concat(isActive ? _YearViewModule["default"].isActive : ''), onClick: this.handleClick, dataId: isActive ? "yearAtv_".concat(year) : "year_".concat(year) }, /*#__PURE__*/_react["default"].createElement(_Layout.Container, { alignBox: "row", align: "vertical" }, /*#__PURE__*/_react["default"].createElement(_Layout.Box, { flexible: true }, /*#__PURE__*/_react["default"].createElement(_Heading["default"], { className: _YearViewModule["default"].yearText, title: year, a11y: { tabindex: '0' }, tagName: "h4" })), /*#__PURE__*/_react["default"].createElement(_icons.Icon, { name: "ZD-arrowDownSingle", size: "7", isBold: true, iconClass: isOpen ? "".concat(_YearViewModule["default"].arrow, " ").concat(_YearViewModule["default"].arrowActive) : _YearViewModule["default"].arrow }))); } }]); return Year; }(_react["default"].PureComponent); var Month = /*#__PURE__*/function (_React$PureComponent2) { _inherits(Month, _React$PureComponent2); var _super2 = _createSuper(Month); function Month(props) { var _this2; _classCallCheck(this, Month); _this2 = _super2.call(this, props); _this2.handleClick = _this2.handleClick.bind(_assertThisInitialized(_this2)); return _this2; } _createClass(Month, [{ key: "handleClick", value: function handleClick() { var _this$props3 = this.props, month = _this$props3.month, onClick = _this$props3.onClick; var monthIndex = monthNamesData.indexOf(month); monthIndex = monthIndex === -1 ? 0 : monthIndex; onClick && onClick(monthIndex); } }, { key: "render", value: function render() { var _this$props4 = this.props, month = _this$props4.month, isActive = _this$props4.isActive, displayText = _this$props4.displayText, hoverText = _this$props4.hoverText; return /*#__PURE__*/_react["default"].createElement(_Layout.Box, { dataId: "month_".concat(month), className: "".concat(_YearViewModule["default"].month, " ").concat(isActive ? _YearViewModule["default"].currentMonth : ''), onClick: this.handleClick, "data-title": hoverText, "aria-label": month }, displayText); } }]); return Month; }(_react["default"].PureComponent); var YearView = /*#__PURE__*/function (_React$PureComponent3) { _inherits(YearView, _React$PureComponent3); var _super3 = _createSuper(YearView); function YearView(props) { var _this3; _classCallCheck(this, YearView); _this3 = _super3.call(this, props); _this3.renderListItem = _this3.renderListItem.bind(_assertThisInitialized(_this3)); _this3.handleMonthClick = _this3.handleMonthClick.bind(_assertThisInitialized(_this3)); _this3.handleYearClick = _this3.handleYearClick.bind(_assertThisInitialized(_this3)); _this3.getPublicMethods = _this3.getPublicMethods.bind(_assertThisInitialized(_this3)); _this3.handleScrollToYear = _this3.handleScrollToYear.bind(_assertThisInitialized(_this3)); _this3.handleUpdateLocalYear = _this3.handleUpdateLocalYear.bind(_assertThisInitialized(_this3)); _this3.years = getYears(); _this3.state = { localYear: '' }; return _this3; } _createClass(YearView, [{ key: "componentDidMount", value: function componentDidMount() { this.handleScrollToYear(this.props); this.handleUpdateLocalYear(this.props); } }, { key: "componentDidUpdate", value: function componentDidUpdate(prevProps) { var viewedYear = this.props.viewedYear; viewedYear = parseInt(viewedYear) || 0; var oldViewedYear = prevProps.viewedYear; oldViewedYear = parseInt(oldViewedYear) || 0; if (viewedYear !== oldViewedYear) { this.handleScrollToYear(this.props); this.handleUpdateLocalYear(this.props); } } }, { key: "handleUpdateLocalYear", value: function handleUpdateLocalYear(props) { var _this4 = this; var viewedYear = props.viewedYear; viewedYear = parseInt(viewedYear) || 0; setTimeout(function () { _this4.setState({ localYear: viewedYear }); }, 150); } }, { key: "handleScrollToYear", value: function handleScrollToYear(props) { var _this$years = this.years, years = _this$years === void 0 ? [] : _this$years, scrollToIndex = this.scrollToIndex; var viewedYear = props.viewedYear; viewedYear = parseInt(viewedYear) || 0; var yearIndex = years.indexOf(viewedYear); yearIndex >= 0 && scrollToIndex && scrollToIndex(yearIndex, 0, { duration: 0 }); } }, { key: "getPublicMethods", value: function getPublicMethods(methods) { var scrollToIndex = methods.scrollToIndex; this.scrollToIndex = scrollToIndex; } }, { key: "handleMonthClick", value: function handleMonthClick(month) { var onSelectMonth = this.props.onSelectMonth; onSelectMonth && onSelectMonth(month); } }, { key: "handleYearClick", value: function handleYearClick(year) { var onSelectYear = this.props.onSelectYear; onSelectYear && onSelectYear(year); } }, { key: "renderListItem", value: function renderListItem(_ref) { var _this5 = this; var index = _ref.index, virtualizerStyle = _ref.style, ref = _ref.ref; var years = this.years; var year = years[index]; var _this$props5 = this.props, viewedYear = _this$props5.viewedYear, viewedMonth = _this$props5.viewedMonth, monthNamesShort = _this$props5.monthNamesShort, isMonthOpen = _this$props5.isMonthOpen; viewedYear = parseInt(viewedYear) || 0; var localYear = this.state.localYear; localYear = parseInt(localYear) || 0; return /*#__PURE__*/_react["default"].createElement(_Layout.Container, { isCover: false, className: _YearViewModule["default"].yearBox, eleRef: ref, style: virtualizerStyle }, /*#__PURE__*/_react["default"].createElement(Year, { year: year, onClick: this.handleYearClick, isActive: viewedYear === year, isOpen: isMonthOpen }), viewedYear === year && isMonthOpen ? /*#__PURE__*/_react["default"].createElement(_Layout.Box, { flexible: true }, /*#__PURE__*/_react["default"].createElement(_Layout.Container, { alignBox: "row", wrap: "wrap", align: "between", className: "".concat(_YearViewModule["default"].yearContainer, " ").concat(viewedYear !== localYear && viewedYear === year ? _YearViewModule["default"].toggleYear : '') }, monthNamesData.map(function (month, index) { var monthIndex = monthNamesData.indexOf(month); return /*#__PURE__*/_react["default"].createElement(Month, { key: month, month: month, onClick: _this5.handleMonthClick, isActive: monthIndex === viewedMonth, displayText: monthNamesShort[index] // hoverText={monthNames[index]} }); }))) : null); } }, { key: "render", value: function render() { var _this$years2 = this.years, years = _this$years2 === void 0 ? [] : _this$years2; return /*#__PURE__*/_react["default"].createElement(_virtualizer.Virtualizer, { elementRenderer: this.renderListItem, elementsCount: years.length, className: _YearViewModule["default"].container, getExposedPublicMethods: this.getPublicMethods, isElementsFixedHeight: false, dataId: "yearList" }); } }]); return YearView; }(_react["default"].PureComponent); exports["default"] = YearView; YearView.propTypes = _propTypes.YearView_propTypes; YearView.defaultProps = _defaultProps.YearView_defaultProps;