406 lines
7.4 KiB
JavaScript
406 lines
7.4 KiB
JavaScript
import styled from 'styled-components';
|
|
import Button from '/imports/ui/components/common/button/component';
|
|
import {
|
|
smPaddingX,
|
|
smPaddingY,
|
|
lgPaddingX,
|
|
borderRadius,
|
|
borderSize,
|
|
pollInputHeight,
|
|
pollSmMargin,
|
|
pollMdMargin,
|
|
} from '/imports/ui/stylesheets/styled-components/general';
|
|
import {
|
|
colorText,
|
|
colorBlueLight,
|
|
colorGray,
|
|
colorGrayLight,
|
|
colorGrayLighter,
|
|
colorGrayLightest,
|
|
colorDanger,
|
|
colorWarning,
|
|
colorHeading,
|
|
colorPrimary,
|
|
colorGrayDark,
|
|
colorWhite,
|
|
pollBlue,
|
|
} from '/imports/ui/stylesheets/styled-components/palette';
|
|
import { fontSizeBase, fontSizeSmall } from '/imports/ui/stylesheets/styled-components/typography';
|
|
|
|
const ToggleLabel = styled.span`
|
|
margin-right: ${smPaddingX};
|
|
|
|
[dir="rtl"] & {
|
|
margin: 0 0 0 ${smPaddingX};
|
|
}
|
|
`;
|
|
|
|
const PollOptionInput = styled.input`
|
|
margin-right: 1rem;
|
|
|
|
[dir="rtl"] & {
|
|
margin-right: 0;
|
|
margin-left: 1rem;
|
|
}
|
|
|
|
&:focus {
|
|
outline: none;
|
|
border-radius: ${borderSize};
|
|
box-shadow: 0 0 0 ${borderSize} ${colorBlueLight}, inset 0 0 0 1px ${colorPrimary};
|
|
}
|
|
|
|
width: 100%;
|
|
color: ${colorText};
|
|
-webkit-appearance: none;
|
|
padding: calc(${smPaddingY} * 2) ${smPaddingX};
|
|
border-radius: ${borderRadius};
|
|
font-size: ${fontSizeBase};
|
|
border: 1px solid ${colorGrayLighter};
|
|
box-shadow: 0 0 0 1px ${colorGrayLighter};
|
|
`;
|
|
|
|
const DeletePollOptionButton = styled(Button)`
|
|
font-size: ${fontSizeBase};
|
|
flex: none;
|
|
width: 40px;
|
|
position: relative;
|
|
& > i {
|
|
font-size: 150%;
|
|
}
|
|
`;
|
|
|
|
const ErrorSpacer = styled.div`
|
|
position: relative;
|
|
height: 1.25rem;
|
|
`;
|
|
|
|
const InputError = styled(ErrorSpacer)`
|
|
color: ${colorDanger};
|
|
font-size: ${fontSizeSmall};
|
|
`;
|
|
|
|
const Instructions = styled.div`
|
|
margin-bottom: ${lgPaddingX};
|
|
color: ${colorText};
|
|
`;
|
|
|
|
const PollQuestionArea = styled.textarea`
|
|
resize: none;
|
|
|
|
&:focus {
|
|
outline: none;
|
|
border-radius: ${borderSize};
|
|
box-shadow: 0 0 0 ${borderSize} ${colorBlueLight}, inset 0 0 0 1px ${colorPrimary};
|
|
}
|
|
|
|
width: 100%;
|
|
color: ${colorText};
|
|
-webkit-appearance: none;
|
|
padding: calc(${smPaddingY} * 2) ${smPaddingX};
|
|
border-radius: ${borderRadius};
|
|
font-size: ${fontSizeBase};
|
|
border: 1px solid ${colorGrayLighter};
|
|
box-shadow: 0 0 0 1px ${colorGrayLighter};
|
|
|
|
${({ hasError }) => hasError && `
|
|
border-color: ${colorDanger};
|
|
box-shadow: 0 0 0 1px ${colorDanger};
|
|
`}
|
|
`;
|
|
|
|
const SectionHeading = styled.h4`
|
|
margin-top: 0;
|
|
font-weight: 600;
|
|
color: ${colorHeading};
|
|
`;
|
|
|
|
const ResponseType = styled.div`
|
|
display: flex;
|
|
justify-content: space-between;
|
|
flex-flow: wrap;
|
|
overflow-wrap: break-word;
|
|
position: relative;
|
|
width: 100%;
|
|
margin-bottom: ${lgPaddingX};
|
|
|
|
& > button {
|
|
position: relative;
|
|
width: 100%;
|
|
}
|
|
`;
|
|
|
|
const PollConfigButton = styled(Button)`
|
|
border: solid ${colorGrayLight} 1px;
|
|
min-height: ${pollInputHeight};
|
|
font-size: ${fontSizeBase};
|
|
white-space: pre-wrap;
|
|
width: 100%;
|
|
margin-bottom: 1rem;
|
|
|
|
& > span {
|
|
&:hover {
|
|
opacity: 1;
|
|
}
|
|
}
|
|
|
|
${({ selected }) => selected && `
|
|
background-color: ${colorGrayLightest};
|
|
font-size: ${fontSizeBase};
|
|
|
|
&:hover,
|
|
&:focus,
|
|
&:active {
|
|
background-color: ${colorGrayLightest} !important;
|
|
box-shadow: none !important;
|
|
}
|
|
`}
|
|
|
|
${({ small }) => small && `
|
|
width: 49% !important;
|
|
`}
|
|
|
|
${({ full }) => full && `
|
|
width: 100%;
|
|
`}
|
|
`;
|
|
|
|
const PollParagraph = styled.div`
|
|
color: ${colorText};
|
|
margin-bottom: 0.9rem;
|
|
`;
|
|
|
|
const PollCheckbox = styled.div`
|
|
display: inline-block;
|
|
margin-right: ${pollSmMargin};
|
|
margin-bottom: ${pollMdMargin};
|
|
`;
|
|
|
|
const AddItemButton = styled(Button)`
|
|
top: 1px;
|
|
position: relative;
|
|
display: block;
|
|
width: 100%;
|
|
text-align: left;
|
|
color: ${colorPrimary};
|
|
padding-left: 0;
|
|
padding-right: 0;
|
|
font-size: ${fontSizeBase};
|
|
white-space: pre-wrap;
|
|
|
|
&:hover {
|
|
& > span {
|
|
opacity: 1;
|
|
}
|
|
}
|
|
`;
|
|
|
|
const Row = styled.div`
|
|
display: flex;
|
|
flex-flow: wrap;
|
|
flex-grow: 1;
|
|
justify-content: space-between;
|
|
margin-top: 0.7rem;
|
|
margin-bottom: 0.7rem;
|
|
`;
|
|
|
|
const Warning = styled.div`
|
|
color: ${colorWarning};
|
|
font-size: ${fontSizeSmall};
|
|
`;
|
|
|
|
const CustomInputRow = styled.div`
|
|
display: flex;
|
|
flex-flow: nowrap;
|
|
flex-grow: 1;
|
|
justify-content: space-between;
|
|
`;
|
|
|
|
const Col = styled.div`
|
|
display: flex;
|
|
position: relative;
|
|
flex-flow: column;
|
|
flex-grow: 1;
|
|
|
|
&:last-child {
|
|
padding-right: 0;
|
|
padding-left: 1rem;
|
|
|
|
[dir="rtl"] & {
|
|
padding-right: 0.1rem;
|
|
padding-left: 0;
|
|
}
|
|
}
|
|
`;
|
|
|
|
const Toggle = styled.label`
|
|
margin-left: auto;
|
|
display: flex;
|
|
align-items: center;
|
|
`;
|
|
|
|
const StartPollBtn = styled(Button)`
|
|
position: relative;
|
|
width: 100%;
|
|
min-height: ${pollInputHeight};
|
|
margin-top: 1rem;
|
|
font-size: ${fontSizeBase};
|
|
overflow-wrap: break-word;
|
|
white-space: pre-wrap;
|
|
|
|
&:hover {
|
|
& > span {
|
|
opacity: 1;
|
|
}
|
|
}
|
|
`;
|
|
|
|
const NoSlidePanelContainer = styled.div`
|
|
color: ${colorGrayDark};
|
|
text-align: center;
|
|
`;
|
|
|
|
const PollButton = styled(Button)`
|
|
margin-top: ${smPaddingY};
|
|
margin-bottom: ${smPaddingY};
|
|
background-color: ${colorWhite};
|
|
box-shadow: 0 0 0 1px ${colorGray};
|
|
color: ${colorGray};
|
|
|
|
& > span {
|
|
color: ${colorGray};
|
|
}
|
|
|
|
& > span:hover {
|
|
color: ${pollBlue};
|
|
opacity: 1;
|
|
}
|
|
|
|
&:active {
|
|
background-color: ${colorWhite};
|
|
box-shadow: 0 0 0 1px ${pollBlue};
|
|
|
|
& > span {
|
|
color: ${pollBlue};
|
|
}
|
|
}
|
|
|
|
&:focus {
|
|
background-color: ${colorWhite};
|
|
box-shadow: 0 0 0 1px ${pollBlue};
|
|
|
|
& > span {
|
|
color: ${pollBlue};
|
|
}
|
|
}
|
|
|
|
&:nth-child(even) {
|
|
margin-right: inherit;
|
|
margin-left: ${smPaddingY};
|
|
|
|
[dir="rtl"] & {
|
|
margin-right: ${smPaddingY};
|
|
margin-left: inherit;
|
|
}
|
|
}
|
|
|
|
&:nth-child(odd) {
|
|
margin-right: 1rem;
|
|
margin-left: inherit;
|
|
|
|
[dir="rtl"] & {
|
|
margin-right: inherit;
|
|
margin-left: ${smPaddingY};
|
|
}
|
|
}
|
|
|
|
&:hover {
|
|
box-shadow: 0 0 0 1px ${pollBlue};
|
|
background-color: ${colorWhite};
|
|
color: ${pollBlue};
|
|
|
|
& > span {
|
|
color: ${pollBlue};
|
|
opacity: 1;
|
|
}
|
|
}
|
|
`;
|
|
|
|
const DragAndDropPollContainer = styled.div`
|
|
width: 200px !important;
|
|
height: 200px !important;
|
|
`;
|
|
|
|
const Question = styled.div`
|
|
margin-bottom: ${lgPaddingX};
|
|
`;
|
|
|
|
const OptionWrapper = styled.div`
|
|
display: flex;
|
|
justify-content: space-between;
|
|
`;
|
|
|
|
const ResponseArea = styled.div`
|
|
display: flex;
|
|
flex-flow: column wrap;
|
|
`;
|
|
|
|
const CustomInputHeading = styled(SectionHeading)`
|
|
overflow: hidden;
|
|
white-space: nowrap;
|
|
text-overflow: ellipsis;
|
|
`;
|
|
|
|
const CustomInputHeadingCol = styled(Col)`
|
|
overflow: hidden;
|
|
`;
|
|
|
|
const CustomInputToggleCol = styled(Col)`
|
|
flex-shrink: 0;
|
|
`;
|
|
|
|
const AnonymousHeading = styled(CustomInputHeading)``;
|
|
|
|
const AnonymousHeadingCol = styled(CustomInputHeadingCol)``;
|
|
|
|
const AnonymousToggleCol = styled(CustomInputToggleCol)``;
|
|
|
|
const AnonymousRow = styled(Row)`
|
|
flex-flow: nowrap;
|
|
width: 100%;
|
|
`;
|
|
|
|
export default {
|
|
ToggleLabel,
|
|
PollOptionInput,
|
|
DeletePollOptionButton,
|
|
ErrorSpacer,
|
|
InputError,
|
|
Instructions,
|
|
PollQuestionArea,
|
|
SectionHeading,
|
|
ResponseType,
|
|
PollConfigButton,
|
|
PollParagraph,
|
|
PollCheckbox,
|
|
AddItemButton,
|
|
Row,
|
|
Col,
|
|
Toggle,
|
|
StartPollBtn,
|
|
NoSlidePanelContainer,
|
|
PollButton,
|
|
DragAndDropPollContainer,
|
|
Warning,
|
|
CustomInputRow,
|
|
Question,
|
|
OptionWrapper,
|
|
ResponseArea,
|
|
CustomInputHeading,
|
|
CustomInputHeadingCol,
|
|
CustomInputToggleCol,
|
|
AnonymousHeading,
|
|
AnonymousHeadingCol,
|
|
AnonymousToggleCol,
|
|
AnonymousRow,
|
|
};
|