diff --git a/web/components/admin/TextField.tsx b/web/components/admin/TextField.tsx index cc9b37721..9f649e2e9 100644 --- a/web/components/admin/TextField.tsx +++ b/web/components/admin/TextField.tsx @@ -1,6 +1,6 @@ -import React, { FC } from 'react'; +import React, { FC, useEffect } from 'react'; import classNames from 'classnames'; -import { Input, InputNumber } from 'antd'; +import { Input, Form, InputNumber } from 'antd'; import { FieldUpdaterFunc } from '../../types/config-section'; // import InfoTip from '../info-tip'; import { StatusState } from '../../utils/input-statuses'; @@ -61,6 +61,13 @@ export const TextField: FC = ({ } }; + const [form] = Form.useForm(); + + useEffect(() => { + // console.log('value: ', value); + form.setFieldsValue({ adminPassword: value }); + }, [value]); + // if you blur a required field with an empty value, restore its original value in state (parent's state), if an onChange from parent is available. const handleBlur = (e: any) => { const val = e.target.value; @@ -128,25 +135,76 @@ export const TextField: FC = ({ ) : null} -
-
- + {fieldName !== 'adminPassword' ? ( +
+
+ +
+ +

{tip}

- -

{tip}

-
+ ) : ( +
+
+
+ + + + +

{tip}

+ +
+
+ )}
); }; diff --git a/web/components/admin/TextFieldAdmin.tsx b/web/components/admin/TextFieldAdmin.tsx deleted file mode 100644 index 8ef84813e..000000000 --- a/web/components/admin/TextFieldAdmin.tsx +++ /dev/null @@ -1,168 +0,0 @@ -import React, { FC, useEffect } from 'react'; -import classNames from 'classnames'; -import { Input, Form } from 'antd'; -import { FieldUpdaterFunc } from '../../types/config-section'; -// import InfoTip from '../info-tip'; -import { StatusState } from '../../utils/input-statuses'; -// import { FormStatusIndicator } from './FormStatusIndicator'; - -export const TEXTFIELD_TYPE_TEXT = 'default'; -export const TEXTFIELD_TYPE_PASSWORD = 'password'; // Input.Password -export const TEXTFIELD_TYPE_NUMBER = 'numeric'; // InputNumber -export const TEXTFIELD_TYPE_TEXTAREA = 'textarea'; // Input.TextArea -export const TEXTFIELD_TYPE_URL = 'url'; - -export type TextFieldAdminProps = { - fieldName: string; - - onSubmit?: () => void; - onPressEnter?: () => void; - - className?: string; - disabled?: boolean; - label?: string; - placeholder?: string; - required?: boolean; - status?: StatusState; - tip?: string; - type?: string; - useTrim?: boolean; - useTrimLead?: boolean; - value?: string | number; - onBlur?: FieldUpdaterFunc; - onChange?: FieldUpdaterFunc; -}; - -export const TextFieldAdmin: FC = ({ - className, - disabled, - fieldName, - label, - onBlur, - onChange, - onPressEnter, - placeholder, - required, - status, - type, - useTrim, - value, -}) => { - const handleChange = (e: any) => { - // if an extra onChange handler was sent in as a prop, let's run that too. - if (onChange) { - const val = type === TEXTFIELD_TYPE_NUMBER ? e : e.target.value; - onChange({ fieldName, value: useTrim ? val.trim() : val }); - } - }; - - const [form] = Form.useForm(); - // const formRef = useRef(null); - - useEffect(() => { - // console.log('value: ', value); - form.setFieldsValue({ adminPassword: value }); - }, [value]); - - // if you blur a required field with an empty value, restore its original value in state (parent's state), if an onChange from parent is available. - const handleBlur = (e: any) => { - const val = e.target.value; - if (onBlur) { - onBlur({ value: val }); - } - }; - - const handlePressEnter = () => { - if (onPressEnter) { - onPressEnter(); - } - }; - - const onFinish = (values: Store) => { - console.log('Received values of form: ', values); - }; - - // display the appropriate Ant text field - // let Field = Input as typeof Input.Password; - // let fieldProps = {}; - // Field = Input.Password; - // fieldProps = { - // visibilityToggle: true, - // }; - - const fieldId = `field-${fieldName}`; - - const { type: statusType } = status || {}; - - const containerClass = classNames({ - 'formfield-container': true, - 'textfield-container': true, - [`type-${type}`]: true, - required, - [`status-${statusType}`]: status, - }); - - return ( -
-
- - - -
-
- ); -}; -export default TextFieldAdmin; - -TextFieldAdmin.defaultProps = { - className: '', - disabled: false, - - placeholder: '', - required: false, - status: null, - tip: '', - type: TEXTFIELD_TYPE_TEXT, - value: '', - - useTrim: false, - useTrimLead: false, - - onSubmit: () => {}, - onBlur: () => {}, - onChange: () => {}, - onPressEnter: () => {}, -}; diff --git a/web/components/admin/TextFieldWithSubmit.tsx b/web/components/admin/TextFieldWithSubmit.tsx index 760682512..ce89c7030 100644 --- a/web/components/admin/TextFieldWithSubmit.tsx +++ b/web/components/admin/TextFieldWithSubmit.tsx @@ -13,7 +13,6 @@ import { import { ServerStatusContext } from '../../utils/server-status-context'; import { FormStatusIndicator } from './FormStatusIndicator'; import { TextField, TextFieldProps } from './TextField'; -import { TextFieldAdmin } from './TextFieldAdmin'; export const TEXTFIELD_TYPE_TEXT = 'default'; export const TEXTFIELD_TYPE_PASSWORD = 'password'; // Input.Password @@ -122,21 +121,12 @@ export const TextFieldWithSubmit: FC = ({ return (
- {textFieldProps.fieldName !== 'adminPassword' ? ( - - ) : ( - - )} +