Use a text field to allow merchants to enter or edit text. If you want to specify the kind of input, then use a formatted text field.
import React, {useState} from 'react';
import {
TextField,
Screen,
ScrollView,
Navigator,
reactExtension,
Text,
} from '@shopify/ui-extensions-react/point-of-sale';
const SmartGridModal = () => {
const [name, setName] = useState('');
return (
<Navigator>
<Screen name="TextField" title="Text Field Example">
<ScrollView>
<TextField
label="Name"
placeholder="Input your name here"
required={true}
value={name}
onChange={setName}
/>
<Text>{name ? `Hello ${name}!` : ''}</Text>
</ScrollView>
</Screen>
</Navigator>
);
};
export default reactExtension('pos.home.modal.render', () => (
<SmartGridModal />
));
import {
Navigator,
Screen,
ScrollView,
Text,
TextField,
extension,
} from '@shopify/ui-extensions/point-of-sale';
export default extension('pos.home.modal.render', (root, api) => {
const textField = root.createComponent(TextField, {
label: 'Name',
placeholder: 'Input your name here',
required: true,
value: '',
});
const textBox = root.createComponent(Text);
const onChangeHandler = (newValue: string) => {
textField.updateProps({value: newValue});
const greeting = newValue ? `Hello ${newValue}!` : '';
textBox.replaceChildren(greeting);
};
textField.updateProps({onChange: onChangeHandler});
const scrollView = root.createComponent(ScrollView);
scrollView.append(textField);
scrollView.append(textBox);
const screen = root.createComponent(Screen, {
name: 'TextField',
title: 'Text Field Example',
});
screen.append(scrollView);
const navigator = root.createComponent(Navigator);
navigator.append(screen);
root.append(navigator);
});
Use a text field to allow merchants to input or modify multiline text.
A button under the text field to provide extra functionality.
Whether the field can be modified.
Indicates an error to the user. The field is given specific stylistic treatment to communicate problems that have to be resolved immediately.
The label under the text field which provides guidance or instructions that assist users.
The content to use as the field label.
The maximum number of characters allowed in the input field.
The callback when focus is removed.
The callback when the user has finished editing a field.
The callback when input is focused.
Callback when the user makes any changes in the field. As noted in the documentation for `onChange`, you **must not** use this to update `value` — use the `onChange` callback for that purpose. Use the `onInput` prop when you need to do something as soon as the user makes a change, like clearing validation errors that apply to the field as soon as the user begins making the necessary adjustments.
A short hint that describes the expected value of the field.
Whether the field needs a value.
The current value for the field. Defaults to now. You should update this value in response to the `onChange` callback.
Whether the button can be pressed.
The text displayed in the button.
A callback to be performed.