UNPKG

grommet

Version:

focus on the essential experience

90 lines (84 loc) 3.93 kB
import styled, { css, keyframes } from 'styled-components'; import { backgroundStyle, genericStyles, parseMetricToNum } from '../../utils'; import { defaultProps } from '../../default-props'; var sizeStyle = function sizeStyle(props) { var data = props.theme.calendar[props.sizeProp]; return css(["font-size:", ";line-height:", ";width:", ";"], data.fontSize, data.lineHeight, props.theme.global.size[props.sizeProp]); }; var StyledCalendar = styled.div.withConfig({ displayName: "StyledCalendar", componentId: "sc-1y4xhmp-0" })(["", " ", " ", ""], genericStyles, function (props) { return sizeStyle(props); }, function (props) { return props.theme.calendar && props.theme.calendar.extend; }); StyledCalendar.defaultProps = {}; Object.setPrototypeOf(StyledCalendar.defaultProps, defaultProps); var StyledWeeksContainer = styled.div.withConfig({ displayName: "StyledCalendar__StyledWeeksContainer", componentId: "sc-1y4xhmp-1" })(["overflow:hidden;", ";"], function (props) { return "height: " + parseMetricToNum(props.theme.calendar[props.sizeProp].daySize) * 6 + "px;"; }); StyledWeeksContainer.defaultProps = {}; Object.setPrototypeOf(StyledWeeksContainer.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 = parseMetricToNum(daySize) * weeks; var translateYFrom = direction === 'down' ? "-" + amount + "px" : '0'; var translateYTo = direction === 'up' ? "-" + amount + "px" : '0'; var slideTransition = css(["0%{transform:translateY(", ");}100%{transform:translateY(", ");}"], translateYFrom, translateYTo); return css(["animation:", " ", " forwards;"], keyframes(["", ""], slideTransition), slideDuration); }; var StyledWeeks = styled.div.withConfig({ displayName: "StyledCalendar__StyledWeeks", componentId: "sc-1y4xhmp-2" })(["position:relative;", ";"], function (props) { return props.slide && slideStyle(props); }); StyledWeeks.defaultProps = {}; Object.setPrototypeOf(StyledWeeks.defaultProps, defaultProps); var StyledWeek = styled.div.withConfig({ displayName: "StyledCalendar__StyledWeek", componentId: "sc-1y4xhmp-3" })(["display:flex;flex-direction:row;flex-justify:between;"]); StyledWeek.defaultProps = {}; Object.setPrototypeOf(StyledWeek.defaultProps, defaultProps); var StyledDayContainer = styled.div.withConfig({ displayName: "StyledCalendar__StyledDayContainer", componentId: "sc-1y4xhmp-4" })(["flex:0 0 auto;"]); StyledDayContainer.defaultProps = {}; Object.setPrototypeOf(StyledDayContainer.defaultProps, defaultProps); var daySizeStyle = function daySizeStyle(props) { var data = props.theme.calendar[props.sizeProp]; return css(["width:", ";height:", ";"], data.daySize, data.daySize); }; var StyledDay = styled.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 && backgroundStyle('control', props.theme) || props.inRange && 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; }); StyledDay.defaultProps = {}; Object.setPrototypeOf(StyledDay.defaultProps, defaultProps); export { StyledCalendar, StyledWeeksContainer, StyledWeeks, StyledWeek, StyledDayContainer, StyledDay };