sanity-plugin-internationalized-array 1.9.1 → 1.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sanity-plugin-internationalized-array",
3
- "version": "1.9.1",
3
+ "version": "1.10.1",
4
4
  "description": "Store localized fields in an array to save on attributes",
5
5
  "keywords": [
6
6
  "sanity",
@@ -1,17 +1,17 @@
1
1
  import {AddIcon} from '@sanity/icons'
2
2
  import {useLanguageFilterStudioContext} from '@sanity/language-filter'
3
- import {Button, Card, Grid, Stack, Text, useToast} from '@sanity/ui'
4
- import React, {useCallback, useEffect, useMemo} from 'react'
3
+ import {Button, Card, Stack, Text, useToast} from '@sanity/ui'
4
+ import React, {useCallback, useEffect, useMemo, useState} from 'react'
5
5
  import {
6
6
  ArrayOfObjectsInputProps,
7
7
  ArrayOfObjectsItem,
8
8
  ArraySchemaType,
9
+ MemberItemError,
9
10
  set,
10
11
  setIfMissing,
11
12
  useFormValue,
12
13
  } from 'sanity'
13
14
 
14
- import {MAX_COLUMNS} from '../constants'
15
15
  import type {Value} from '../types'
16
16
  import {checkAllLanguagesArePresent} from '../utils/checkAllLanguagesArePresent'
17
17
  import {createAddAllTitle} from '../utils/createAddAllTitle'
@@ -103,18 +103,33 @@ export default function InternationalizedArray(
103
103
 
104
104
  // Create default fields if the document is not yet created
105
105
  const documentCreatedAt = useFormValue(['_createdAt'])
106
+ const [hasAddedDefaultLanguages, setHasAddedDefaultLanguages] =
107
+ useState(false)
106
108
 
107
- if (
108
- // Array field is empty
109
- !value &&
110
- // Document form is in "not yet created" state
111
- !documentCreatedAt &&
112
- // Plugin config included default languages
113
- defaultLanguages &&
114
- defaultLanguages?.length > 0
115
- ) {
116
- handleAddLanguage(defaultLanguages)
117
- }
109
+ // Write default languages
110
+ useEffect(() => {
111
+ if (
112
+ // Hasn't already added default languages
113
+ // (This prevents the document being recreated when deleted)
114
+ !hasAddedDefaultLanguages &&
115
+ // This array field is empty
116
+ !value &&
117
+ // Document form is in "not yet created" state
118
+ !documentCreatedAt &&
119
+ // Plugin config included default languages
120
+ defaultLanguages &&
121
+ defaultLanguages?.length > 0
122
+ ) {
123
+ handleAddLanguage(defaultLanguages)
124
+ setHasAddedDefaultLanguages(true)
125
+ }
126
+ }, [
127
+ defaultLanguages,
128
+ documentCreatedAt,
129
+ handleAddLanguage,
130
+ hasAddedDefaultLanguages,
131
+ value,
132
+ ])
118
133
 
119
134
  // TODO: This is reordering and re-setting the whole array, it could be surgical
120
135
  const handleRestoreOrder = useCallback(() => {
@@ -216,17 +231,14 @@ export default function InternationalizedArray(
216
231
  if (member.kind === 'item') {
217
232
  return (
218
233
  <ArrayOfObjectsItem
234
+ {...props}
219
235
  key={member.key}
220
236
  member={member}
221
- renderItem={props.renderItem}
222
- renderField={props.renderField}
223
- renderInput={props.renderInput}
224
- renderPreview={props.renderPreview}
225
237
  />
226
238
  )
227
239
  }
228
240
 
229
- return null
241
+ return <MemberItemError key={member.key} member={member} />
230
242
  })}
231
243
  </>
232
244
  ) : null}
@@ -53,7 +53,7 @@ const createTranslateFieldActions: (
53
53
  type: 'action',
54
54
  icon: AddIcon,
55
55
  onAction,
56
- title: language.id.toLocaleUpperCase(),
56
+ title: language.title,
57
57
  hidden,
58
58
  disabled,
59
59
  }