Skip to content

Commit 4a50023

Browse files
authored
fix: forward received onItemPrepend/onItemAppend to ArrayFunctions (#7516)
1 parent 1a33125 commit 4a50023

File tree

3 files changed

+29
-45
lines changed

3 files changed

+29
-45
lines changed

packages/sanity/src/core/form/inputs/arrays/ArrayOfObjectsInput/Grid/GridArrayInput.tsx

+4-17
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@ export function GridArrayInput<Item extends ObjectItem>(props: ArrayOfObjectsInp
2424
elementProps,
2525
members,
2626
onChange,
27-
onInsert,
27+
onItemPrepend,
28+
onItemAppend,
2829
onItemMove,
2930
onUpload,
3031
readOnly,
@@ -40,20 +41,6 @@ export function GridArrayInput<Item extends ObjectItem>(props: ArrayOfObjectsInp
4041
} = props
4142
const {t} = useTranslation()
4243

43-
const handlePrepend = useCallback(
44-
(item: Item) => {
45-
onInsert({items: [item], position: 'before', referenceItem: 0})
46-
},
47-
[onInsert],
48-
)
49-
50-
const handleAppend = useCallback(
51-
(item: Item) => {
52-
onInsert({items: [item], position: 'after', referenceItem: -1})
53-
},
54-
[onInsert],
55-
)
56-
5744
const sortable = schemaType.options?.sortable !== false
5845

5946
const renderItem = useCallback(({key, ...itemProps}: Omit<ObjectItemProps, 'renderDefault'>) => {
@@ -118,8 +105,8 @@ export function GridArrayInput<Item extends ObjectItem>(props: ArrayOfObjectsInp
118105

119106
<ArrayFunctions
120107
onChange={onChange}
121-
onItemAppend={handleAppend}
122-
onItemPrepend={handlePrepend}
108+
onItemAppend={onItemAppend}
109+
onItemPrepend={onItemPrepend}
123110
onValueCreate={createProtoArrayValue}
124111
readOnly={readOnly}
125112
schemaType={schemaType}

packages/sanity/src/core/form/inputs/arrays/ArrayOfObjectsInput/List/ListArrayInput.tsx

+4-16
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ export function ListArrayInput<Item extends ObjectItem>(props: ArrayOfObjectsInp
3535
onUpload,
3636
focusPath,
3737
readOnly,
38+
onItemAppend,
39+
onItemPrepend,
3840
renderAnnotation,
3941
renderBlock,
4042
renderField,
@@ -52,20 +54,6 @@ export function ListArrayInput<Item extends ObjectItem>(props: ArrayOfObjectsInp
5254
const [activeDragItemIndex, setActiveDragItemIndex] = useState<number | null>(null)
5355
const {space} = useTheme().sanity
5456

55-
const handlePrepend = useCallback(
56-
(item: Item) => {
57-
onInsert({items: [item], position: 'before', referenceItem: 0})
58-
},
59-
[onInsert],
60-
)
61-
62-
const handleAppend = useCallback(
63-
(item: Item) => {
64-
onInsert({items: [item], position: 'after', referenceItem: -1})
65-
},
66-
[onInsert],
67-
)
68-
6957
const memberKeys = useMemoCompare(
7058
useMemo(() => members.map((member) => member.key), [members]),
7159
shallowEquals,
@@ -277,8 +265,8 @@ export function ListArrayInput<Item extends ObjectItem>(props: ArrayOfObjectsInp
277265
</UploadTargetCard>
278266
<ArrayFunctions
279267
onChange={onChange}
280-
onItemAppend={handleAppend}
281-
onItemPrepend={handlePrepend}
268+
onItemAppend={onItemAppend}
269+
onItemPrepend={onItemPrepend}
282270
onValueCreate={createProtoArrayValue}
283271
readOnly={readOnly}
284272
schemaType={schemaType}

packages/sanity/src/core/form/members/object/fields/ArrayOfObjectsField.tsx

+21-12
Original file line numberDiff line numberDiff line change
@@ -262,17 +262,26 @@ export function ArrayOfObjectsField(props: {
262262
[handleChange, member.field.value],
263263
)
264264

265-
const handlePrependItem = useCallback(
266-
(item: any) => {
267-
handleChange([setIfMissing([]), insert([ensureKey(item)], 'before', [0])])
265+
const handleItemPrepend = useCallback(
266+
(item: ObjectItem) => {
267+
handleInsert({
268+
items: [item],
269+
position: 'before',
270+
referenceItem: 0,
271+
})
268272
},
269-
[handleChange],
273+
[handleInsert],
270274
)
271-
const handleAppendItem = useCallback(
272-
(item: any) => {
273-
handleChange([setIfMissing([]), insert([ensureKey(item)], 'after', [-1])])
275+
276+
const handleItemAppend = useCallback(
277+
(item: ObjectItem) => {
278+
handleInsert({
279+
items: [item],
280+
position: 'after',
281+
referenceItem: -1,
282+
})
274283
},
275-
[handleChange],
284+
[handleInsert],
276285
)
277286

278287
const handleRemoveItem = useCallback(
@@ -379,8 +388,8 @@ export function ArrayOfObjectsField(props: {
379388
onInsert: handleInsert,
380389
onItemMove: handleMoveItem,
381390
onItemRemove: handleRemoveItem,
382-
onItemAppend: handleAppendItem,
383-
onItemPrepend: handlePrependItem,
391+
onItemAppend: handleItemAppend,
392+
onItemPrepend: handleItemPrepend,
384393
onPathFocus: handleFocusChildPath,
385394
resolveInitialValue,
386395
onUpload: handleUpload,
@@ -417,8 +426,8 @@ export function ArrayOfObjectsField(props: {
417426
handleInsert,
418427
handleMoveItem,
419428
handleRemoveItem,
420-
handleAppendItem,
421-
handlePrependItem,
429+
handleItemAppend,
430+
handleItemPrepend,
422431
handleFocusChildPath,
423432
resolveInitialValue,
424433
handleUpload,

0 commit comments

Comments
 (0)