Streamfield: support label and hint text
This commit is contained in:
parent
a6f4f07d9f
commit
96401006ff
|
@ -3,9 +3,9 @@ import { v4 as uuidv4 } from 'uuid';
|
|||
|
||||
interface IFormGroup {
|
||||
/** Input label message. */
|
||||
hintText?: string | React.ReactNode,
|
||||
labelText: React.ReactNode,
|
||||
/** Input hint message. */
|
||||
labelText: string | React.ReactNode,
|
||||
hintText?: React.ReactNode,
|
||||
/** Input errors. */
|
||||
errors?: string[]
|
||||
}
|
||||
|
|
|
@ -4,19 +4,32 @@ import Button from '../button/button';
|
|||
import HStack from '../hstack/hstack';
|
||||
import IconButton from '../icon-button/icon-button';
|
||||
import Stack from '../stack/stack';
|
||||
import Text from '../text/text';
|
||||
|
||||
interface IStreamfield {
|
||||
/** Array of values for the streamfield. */
|
||||
values: any[],
|
||||
/** Input label message. */
|
||||
labelText?: React.ReactNode,
|
||||
/** Input hint message. */
|
||||
hintText?: React.ReactNode,
|
||||
/** Callback to add an item. */
|
||||
onAddItem?: () => void,
|
||||
/** Callback to remove an item by index. */
|
||||
onRemoveItem?: (i: number) => void,
|
||||
/** Callback when values are changed. */
|
||||
onChange: (values: any[]) => void,
|
||||
/** Input to render for each value. */
|
||||
component: React.ComponentType<{ onChange: (value: any) => void, value: any }>,
|
||||
/** Maximum number of allowed inputs. */
|
||||
maxItems?: number,
|
||||
}
|
||||
|
||||
/** List of inputs that can be added or removed. */
|
||||
const Streamfield: React.FC<IStreamfield> = ({
|
||||
values,
|
||||
labelText,
|
||||
hintText,
|
||||
onAddItem,
|
||||
onRemoveItem,
|
||||
onChange,
|
||||
|
@ -34,6 +47,10 @@ const Streamfield: React.FC<IStreamfield> = ({
|
|||
|
||||
return (
|
||||
<Stack space={4}>
|
||||
<Stack>
|
||||
{labelText && <Text size='sm' weight='medium'>{labelText}</Text>}
|
||||
{hintText && <Text size='xs' theme='muted'>{hintText}</Text>}
|
||||
</Stack>
|
||||
|
||||
<Stack>
|
||||
{values.map((value, i) => (
|
||||
|
|
|
@ -423,6 +423,8 @@ const EditProfile: React.FC = () => {
|
|||
</div>
|
||||
|
||||
<Streamfield
|
||||
labelText={<FormattedMessage id='edit_profile.fields.meta_fields_label' defaultMessage='Profile fields' />}
|
||||
hintText={<FormattedMessage id='edit_profile.hints.meta_fields' defaultMessage='You can have up to {count, plural, one {# custom field} other {# custom fields}} displayed on your profile.' values={{ count: maxFields }} />}
|
||||
values={data.fields_attributes || []}
|
||||
onChange={handleFieldsChange}
|
||||
onAddItem={handleAddField}
|
||||
|
|
Loading…
Reference in New Issue