Skip to content

Commit bd0239c

Browse files
authored
Merge pull request #3520 from Shopify/more-validation-examples-issues
Fix validation examples and issues across admin components and patterns
2 parents c60af22 + 7d1fb73 commit bd0239c

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+224
-231
lines changed

packages/ui-extensions/docs/surfaces/admin/build-docs.mjs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -356,7 +356,9 @@ const transformJson = async (filePath, isExtensions) => {
356356
);
357357

358358
const filteredDocs = shopifyDevDocsDocsParsed.filter(
359-
(entry) => entry.category !== 'Polaris web components',
359+
(entry) =>
360+
entry.category !== 'Polaris web components' &&
361+
entry.category !== 'Patterns', // Don't include old patterns
360362
);
361363

362364
// Combine arrays with shopify dev docs first, followed by new data
Lines changed: 30 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,36 @@
1-
import { render } from 'preact';
2-
import { useState } from 'preact/hooks';
3-
4-
export default async () => {
5-
render(<Extension />, document.body);
6-
}
7-
81
const defaultValues = {
92
text: 'default value',
103
number: 50,
114
};
125

13-
function Extension() {
14-
const [textValue, setTextValue] = useState('');
15-
const [numberValue, setNumberValue] = useState('');
6+
const [textValue, setTextValue] = useState('');
7+
const [numberValue, setNumberValue] = useState('');
168

17-
return (
18-
<s-admin-block title="My Block Extension">
19-
<s-form
20-
onSubmit={(event) => {
21-
event.waitUntil(fetch('app:save/data'));
22-
console.log('submit', {textValue, numberValue});
23-
}}
24-
onReset={() => console.log('automatically reset values')}
25-
>
26-
<s-stack direction="block" gap="base">
27-
<s-text-field
28-
label="Default Value"
29-
name="my-text"
30-
defaultValue={defaultValues.text}
31-
value={textValue}
32-
onChange={(e) => setTextValue(e.target.value)}
33-
/>
34-
<s-number-field
35-
label="Percentage field"
36-
name="my-number"
37-
defaultValue={defaultValues.number}
38-
value={numberValue}
39-
onChange={(e) => setNumberValue(e.target.value)}
40-
/>
41-
</s-stack>
42-
</s-form>
43-
</s-admin-block>
44-
);
45-
}
9+
return (
10+
<s-admin-block title="My Block Extension">
11+
<s-form
12+
onSubmit={(event) => {
13+
event.waitUntil(fetch('app:save/data'));
14+
console.log('submit', {textValue, numberValue});
15+
}}
16+
onReset={() => console.log('automatically reset values')}
17+
>
18+
<s-stack direction="block" gap="base">
19+
<s-text-field
20+
label="Default Value"
21+
name="my-text"
22+
defaultValue={defaultValues.text}
23+
value={textValue}
24+
onChange={(e) => setTextValue(e.target.value)}
25+
/>
26+
<s-number-field
27+
label="Percentage field"
28+
name="my-number"
29+
defaultValue={defaultValues.number}
30+
value={numberValue}
31+
onChange={(e) => setNumberValue(e.target.value)}
32+
/>
33+
</s-stack>
34+
</s-form>
35+
</s-admin-block>
36+
);

packages/ui-extensions/docs/surfaces/customer-account/staticPages/using-polaris-web-components.doc.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -312,12 +312,12 @@ Use methods when you need to trigger actions that can’t be achieved through pr
312312
tabs: [
313313
{
314314
code: './examples/form-default-value.jsx',
315-
language: 'tsx',
315+
language: 'preview-jsx',
316316
title: 'Using `defaultValue`',
317317
},
318318
{
319319
code: './examples/form-implicit-default.jsx',
320-
language: 'tsx',
320+
language: 'preview-jsx',
321321
title: 'Using implicit default',
322322
},
323323
],
Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
11
const [selectedItems, setSelectedItems] = useState([]);
22
const items = ['Item 1', 'Item 2', 'Item 3'];
33

4-
const toggleItem = (value, checked) => setSelectedItems(prev => checked ? [...prev, value] : prev.filter(item => item !== value));
4+
const toggleItem = (value, checked) => setSelectedItems(checked ? [...selectedItems, value] : selectedItems.filter(item => item !== value));
55
const toggleAll = (checked) => setSelectedItems(checked ? items : []);
66
const isSelected = (item) => selectedItems.includes(item);
77

88
return (
99
<s-stack gap="small">
10-
<s-checkbox
11-
label="Select all items"
12-
indeterminate={selectedItems.length > 0 && selectedItems.length < items.length}
10+
<s-checkbox
11+
label="Select all items"
12+
indeterminate={selectedItems.length !== 0 && selectedItems.length !== items.length}
1313
checked={selectedItems.length === items.length}
14-
onChange={e => toggleAll(e.target.checked)}
14+
onChange={e => toggleAll(e.currentTarget.checked)}
1515
/>
1616
<s-divider />
1717
{items.map(i => (
18-
<s-checkbox key={i} label={i} checked={isSelected(i)} onChange={e => toggleItem(i, e.target.checked)} />
18+
<s-checkbox key={i} label={i} checked={isSelected(i)} onChange={e => toggleItem(i, e.currentTarget.checked)} />
1919
))}
2020
</s-stack>
2121
);

packages/ui-extensions/src/surfaces/admin/components/Checkbox/examples/validation-example.jsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ return (
1111
checked={checked}
1212
error={error}
1313
onChange={(e) => {
14-
setChecked(e.target.checked);
15-
setError(e.target.checked ? '' : errorMessage);
14+
setChecked(e.currentTarget.checked);
15+
setError(e.currentTarget.checked ? '' : errorMessage);
1616
}}
1717
/>
1818
</s-stack>

packages/ui-extensions/src/surfaces/admin/components/ColorField/examples/validation-example.jsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ return (
1111
value={color}
1212
error={error}
1313
required
14-
onChange={(e) => {
15-
setColor(e.target.value);
16-
setError(/^#([0-9A-F]{3}){1,2}$/i.test(e.target.value) ? '' : 'Please enter a valid color format');
14+
onInput={(e) => {
15+
setColor(e.currentTarget.value);
16+
setError(/^#([0-9A-F]{3}){1,2}$/i.test(e.currentTarget.value) ? '' : 'Please enter a valid color format');
1717
}}
1818
/>
1919
</s-stack>

packages/ui-extensions/src/surfaces/admin/components/DateField/examples/validation-example.jsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ return (
1111
error={error}
1212
required
1313
onChange={(e) => {
14-
setDate(e.target.value);
15-
setError(e.target.value ? '' : 'Event date is required');
14+
setDate(e.currentTarget.value);
15+
setError(e.currentTarget.value ? '' : 'Event date is required');
1616
}}
1717
/>
1818
</s-stack>

packages/ui-extensions/src/surfaces/admin/components/DatePicker/examples/analytics-dashboard.jsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ return (
2626
view="2025-01"
2727
value={value}
2828
onChange={(event) => {
29-
console.log('Date range changed:', event.target.value);
30-
setValue(event.target.value);
29+
console.log('Date range changed:', event.currentTarget.value);
30+
setValue(event.currentTarget.value);
3131
}}
3232
/>
3333
<s-text>Selected range: {value}</s-text>

packages/ui-extensions/src/surfaces/admin/components/DatePicker/examples/form-integration.jsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,13 @@ return (
1414
label="Order number"
1515
placeholder="Search orders..."
1616
value={orderNumber}
17-
onChange={(event) => setOrderNumber(event.target.value)}
17+
onChange={(event) => setOrderNumber(event.currentTarget.value)}
1818
/>
1919
<s-date-picker
2020
type="range"
2121
name="order-date-range"
2222
value={dateRange}
23-
onChange={(event) => setDateRange(event.target.value)}
23+
onChange={(event) => setDateRange(event.currentTarget.value)}
2424
view="2024-01"
2525
/>
2626
<s-button onClick={handleApplyFilters}>Apply filters</s-button>

packages/ui-extensions/src/surfaces/admin/components/DropZone/examples/default.jsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
accessibilityLabel="Upload image of type jpg, png, or gif"
44
accept=".jpg,.png,.gif"
55
multiple
6-
onInput="console.log('onInput', event.currentTarget?.value)"
7-
onChange="console.log('onChange', event.currentTarget?.value)"
8-
onDropRejected="console.log('onDropRejected', event.currentTarget?.value)"
6+
onInput={(event) => console.log('onInput', event.currentTarget?.value)}
7+
onChange={(event) => console.log('onChange', event.currentTarget?.value)}
8+
onDropRejected={(event) => console.log('onDropRejected', event.currentTarget?.value)}
99
/>

0 commit comments

Comments
 (0)