// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 import styled, { css } from 'styled-components'; import { baseSpacing, baseStyles } from '../Base'; import { FieldWrapperProps } from './'; export const stack = css` &.ch-form-field-input, &.ch-form-field-select, &.ch-form-field-textarea { display: flex; flex-direction: column; label { display: block; margin-bottom: 0.5rem; } input, select { width: 100%; } } &.ch-form-field-checkbox { display: grid; grid-template-columns: 1.5rem 1fr; grid-template-rows: auto; gap: 0px 0.5rem; .ch-checkbox { grid-column: 1; grid-row: 1; } .ch-checkbox-label { line-height: 1.3; grid-column: 2; } .ch-help-text { grid-row: 2; grid-column: 1/3; } } &.ch-form-field-radiogroup { flex-direction: column; .ch-radio-wrapper { display: block; margin-bottom: 0.5rem; padding-left: 0.125rem; display: grid; grid-template-columns: 1.5rem 1fr; grid-template-rows: auto; align-items: center; } .ch-radio-label { margin-left: 1rem; position: relative; bottom: -0.5px; } } `; export const horizontal = css` @media (max-width: 599px) { ${stack}; } @media (min-width: 600px) { &.ch-form-field-input, &.ch-form-field-select, &.ch-form-field-textarea, &.ch-form-field-checkbox { display: grid; grid-template-columns: 30% 1fr; grid-template-rows: auto; gap: 0px 0.5rem; align-items: center; input { width: 100%; } .ch-help-text { grid-column: 2; } } &.ch-form-field-radiogroup { flex-wrap: wrap; fieldset { width: 100%; } .ch-radio-wrapper { display: grid; grid-template-columns: 30% 1fr; grid-template-rows: auto; gap: 0px 0.5rem; align-items: center; margin-bottom: 0.5rem; } .ch-radio { grid-column: 2; grid-row: 1; margin-top: -4px; } .ch-radio-label { grid-column: 1; padding-right: 1rem; margin-left: 0; } .ch-help-text { width: 100%; } } } `; export const inputOnly = css` &.ch-form-field-input, &.ch-form-field-select, &.ch-form-field-textarea { display: flex; flex-direction: column; input { width: 100%; } } &.ch-form-field-checkbox { display: flex; flex-wrap: wrap; align-items: center; .ch-checkbox { order: 1; } .ch-checkbox-label { order: 2; padding-left: 1rem; } .ch-help-text { width: 100%; order: 3; } } &.ch-form-field-radiogroup { flex-direction: column; .ch-radio-wrapper { display: block; margin-bottom: 0.5rem; } .ch-radio-label { margin-left: 1rem; } } `; const layoutMap = { stack, horizontal, 'input-only': inputOnly, }; export const StyledFormField = styled.div` display: flex; margin-bottom: 1rem; position: relative; fieldset { margin: 0; border: none; padding: 0; } .ch-help-text { font-size: ${(props) => props.theme.fontSizes.small.fontSize}; margin-top: 0.5rem; color: ${(props) => props.error ? props.theme.inputs.error.fontColor : props.theme.inputs.fontColor}; } legend { font-size: ${(props) => props.theme.fontSizes.text.fontSize}; color: ${(props) => props.theme.inputs.fontColor}; margin-bottom: 0.5rem; } ${(props) => !!props.layout && layoutMap[props.layout]} ${baseSpacing} ${baseStyles} `;