import * as React from "react"; import styled from "styled-components"; import { get } from "lodash"; import { Grid } from "@material-ui/core"; import Icon from "@sc/plugins/webcomponents/v2/Icon"; import { TextFieldProps } from "../types"; import { EditorMode } from "../../../../Editor/types"; import { AttributeNames } from "@sc/modules/v2/CRUD/AttributeBuilder/types"; import { LiveFormFieldProps, SProps } from "../../LiveFormField/types"; import { AttributeContainer } from "@sc/modules/v2/CRUD/AttributeBuilder"; import { FormFieldTypes } from "../../types"; const Inpt = styled.input` &::placeholder { color: ${(p) => get(p.inputStyle, "color", "inherit")}; } box-sizing: border-box; `; /** * A component that shows a LIVE text input field or tools for configuring the text input field's look, feel, and behavior */ const TextField: React.FC = (props) => { // const [attributes, setAttributes] = React.useState(props); const { mode = EditorMode.LIVE, placeholder, disabled, styles = { labelStyle: {}, descriptionStyle: {}, inputStyle: {}, containerStyle: {}, validationStyle: {}, iconStyle: {}, }, type, name, label, description, defaultValue, icon, columns = 12, isExpanded = false, onChange = () => null, onBlur = () => null, attributeContainerDataSettings = {}, } = props; /** * • Deals with any changes that comes from the various attributes that are loaded * • Converts to LiveFormFieldProps shape * • Triggers (and passes along the mutated LiveFormFieldProps payload to) the onChange event * @params */ const handleChange = (data: LiveFormFieldProps): void => { onChange(data); }; const { iconStyle = {}, descriptionStyle = {}, containerStyle = {}, inputStyle = {}, validationStyle = {}, labelStyle = {}, } = styles; let formFieldType = "text"; if (type === FormFieldTypes.PASSWORD) formFieldType = "password"; return (
{mode === EditorMode.LIVE && (
{label &&
{label}
} {description &&
{description}
} {icon && ( )}
)} {mode === EditorMode.EDITOR && (
)}
); }; export default TextField;