UNPKG

@dotconnor/grommet

Version:

focus on the essential experience

136 lines (113 loc) 6.54 kB
"use strict"; exports.__esModule = true; exports.StyledDay = exports.StyledDayContainer = exports.StyledWeek = exports.StyledWeeks = exports.StyledWeeksContainer = exports.StyledCalendar = void 0; var _styledComponents = _interopRequireWildcard(require("styled-components")); var _utils = require("../../utils"); var _defaultProps = require("../../default-props"); function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } var sizeStyle = function sizeStyle(props) { var data = props.theme.calendar[props.sizeProp]; var width = props.fillContainer ? '100%' : props.theme.global.size[props.sizeProp]; return (0, _styledComponents.css)(["font-size:", ";line-height:", ";width:", ";", ""], data.fontSize, data.lineHeight, width, function (p) { return p.fillContainer && 'height: 100%;'; }); }; var StyledCalendar = _styledComponents["default"].div.withConfig({ displayName: "StyledCalendar", componentId: "sc-1y4xhmp-0" })(["", " ", " ", ""], _utils.genericStyles, function (props) { return sizeStyle(props); }, function (props) { return props.theme.calendar && props.theme.calendar.extend; }); exports.StyledCalendar = StyledCalendar; StyledCalendar.defaultProps = {}; Object.setPrototypeOf(StyledCalendar.defaultProps, _defaultProps.defaultProps); var weeksContainerSizeStyle = function weeksContainerSizeStyle(props) { var height = props.fillContainer ? '100%' : (0, _utils.parseMetricToNum)(props.theme.calendar[props.sizeProp].daySize) * 6 + "px"; return "\n height: " + height + ";\n\n "; }; var StyledWeeksContainer = _styledComponents["default"].div.withConfig({ displayName: "StyledCalendar__StyledWeeksContainer", componentId: "sc-1y4xhmp-1" })(["overflow:hidden;", " ", ";"], function (props) { return weeksContainerSizeStyle(props); }, function (props) { return props.focus && !props.plain && (0, _utils.focusStyle)(); }); exports.StyledWeeksContainer = StyledWeeksContainer; StyledWeeksContainer.defaultProps = {}; Object.setPrototypeOf(StyledWeeksContainer.defaultProps, _defaultProps.defaultProps); var slideStyle = function slideStyle(props) { var _props$slide = props.slide, direction = _props$slide.direction, weeks = _props$slide.weeks, sizeProp = props.sizeProp, theme = props.theme; var _theme$calendar$sizeP = theme.calendar[sizeProp], daySize = _theme$calendar$sizeP.daySize, slideDuration = _theme$calendar$sizeP.slideDuration; var amount = (0, _utils.parseMetricToNum)(daySize) * weeks; var translateYFrom = direction === 'down' ? "-" + amount + "px" : '0'; var translateYTo = direction === 'up' ? "-" + amount + "px" : '0'; var slideTransition = (0, _styledComponents.css)(["0%{transform:translateY(", ");}100%{transform:translateY(", ");}"], translateYFrom, translateYTo); return (0, _styledComponents.css)(["animation:", " ", " forwards;"], (0, _styledComponents.keyframes)(["", ""], slideTransition), slideDuration); }; var weeksSizeStyle = function weeksSizeStyle() { return (0, _styledComponents.css)(["display:flex;flex-direction:column;height:100%;"]); }; var StyledWeeks = _styledComponents["default"].div.withConfig({ displayName: "StyledCalendar__StyledWeeks", componentId: "sc-1y4xhmp-2" })(["position:relative;", " ", ";"], function (props) { return props.fillContainer && weeksSizeStyle(); }, function (props) { return props.slide && slideStyle(props); }); exports.StyledWeeks = StyledWeeks; StyledWeeks.defaultProps = {}; Object.setPrototypeOf(StyledWeeks.defaultProps, _defaultProps.defaultProps); var StyledWeek = _styledComponents["default"].div.withConfig({ displayName: "StyledCalendar__StyledWeek", componentId: "sc-1y4xhmp-3" })(["display:flex;justify-content:space-between;", ""], function (props) { return props.fillContainer && 'flex: 1;'; }); exports.StyledWeek = StyledWeek; StyledWeek.defaultProps = {}; Object.setPrototypeOf(StyledWeek.defaultProps, _defaultProps.defaultProps); // The width of 14.3% is derived from dividing 100/7. We want the // widths of 7 days to equally fill 100% of the row. var StyledDayContainer = _styledComponents["default"].div.withConfig({ displayName: "StyledCalendar__StyledDayContainer", componentId: "sc-1y4xhmp-4" })(["flex:0 0 auto;", ""], function (props) { return props.fillContainer && 'width: 14.3%;'; }); exports.StyledDayContainer = StyledDayContainer; StyledDayContainer.defaultProps = {}; Object.setPrototypeOf(StyledDayContainer.defaultProps, _defaultProps.defaultProps); var daySizeStyle = function daySizeStyle(props) { var data = props.theme.calendar[props.sizeProp]; return (0, _styledComponents.css)(["width:", ";height:", ";"], props.fillContainer ? '100%' : data.daySize, props.fillContainer ? '100%' : data.daySize); }; var StyledDay = _styledComponents["default"].div.withConfig({ displayName: "StyledCalendar__StyledDay", componentId: "sc-1y4xhmp-5" })(["display:flex;justify-content:center;align-items:center;", " ", " ", " ", " ", ""], function (props) { return daySizeStyle(props); }, function (props) { return props.isSelected && (0, _utils.backgroundStyle)('control', props.theme) || props.inRange && (0, _utils.backgroundStyle)({ color: 'control', opacity: 'weak' }, props.theme); }, function (props) { return props.otherMonth && 'opacity: 0.5;'; }, function (props) { return props.isSelected && 'font-weight: bold;'; }, function (props) { return props.theme.calendar && props.theme.calendar.day && props.theme.calendar.day.extend; }); exports.StyledDay = StyledDay; StyledDay.defaultProps = {}; Object.setPrototypeOf(StyledDay.defaultProps, _defaultProps.defaultProps);