Skip to main content

TextField
component

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.

Use a text field to allow merchants to input or modify multiline text.

string
required

The content to use as the field label.

A button under the text field to provide extra functionality.

boolean

Whether the field can be modified.

string

Indicates an error to the user. The field is given specific stylistic treatment to communicate problems that have to be resolved immediately.

string

The label under the text field which provides guidance or instructions that assist users.

number

The maximum number of characters allowed in the input field.

() => void

The callback when focus is removed.

(value: string) => void

The callback when the user has finished editing a field.

() => void

The callback when input is focused.

(value: string) => void

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.

string

A short hint that describes the expected value of the field.

boolean

Whether the field needs a value.

string

The current value for the field. Defaults to now. You should update this value in response to the onChange callback.

Was this section helpful?

Name Input

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 />
));

Preview

  • When a merchant opens a new form, the first text field should be in a focused state.
  • If the merchant is actively focused in a text field, then the keyboard should come up and the label should move to the top of the field.
  • If focus goes away from the text field, then the keyboard should hide.
  • Text fields always take up the full screen width.
  • Text fields don’t change height. If text entered is longer than the width of the text field, then the oldest text on the left should be hidden to make room.
  • When it makes sense, provide autocomplete options (for example, entering an address).
Was this section helpful?

  • If a text field is required, then it should indicate Required.
  • Label titles should be brief and written in sentence case.
  • Use the same terms for similar label titles throughout the app.
Was this section helpful?