@@ -52,6 +52,11 @@ type Args = {
52
52
rootTableIDColType : IDType
53
53
rootTableName : string
54
54
versions : boolean
55
+ /**
56
+ * Tracks whether or not this table is built
57
+ * from the result of a localized array or block field at some point
58
+ */
59
+ withinLocalizedArrayOrBlock ?: boolean
55
60
}
56
61
57
62
type Result = {
@@ -84,6 +89,7 @@ export const traverseFields = ({
84
89
rootTableIDColType,
85
90
rootTableName,
86
91
versions,
92
+ withinLocalizedArrayOrBlock,
87
93
} : Args ) : Result => {
88
94
let hasLocalizedField = false
89
95
let hasLocalizedRelationshipField = false
@@ -150,7 +156,11 @@ export const traverseFields = ({
150
156
switch ( field . type ) {
151
157
case 'text' : {
152
158
if ( field . hasMany ) {
153
- if ( field . localized ) {
159
+ const isLocalized =
160
+ Boolean ( field . localized && adapter . payload . config . localization ) ||
161
+ withinLocalizedArrayOrBlock
162
+
163
+ if ( isLocalized ) {
154
164
hasLocalizedManyTextField = true
155
165
}
156
166
@@ -179,7 +189,11 @@ export const traverseFields = ({
179
189
180
190
case 'number' : {
181
191
if ( field . hasMany ) {
182
- if ( field . localized ) {
192
+ const isLocalized =
193
+ Boolean ( field . localized && adapter . payload . config . localization ) ||
194
+ withinLocalizedArrayOrBlock
195
+
196
+ if ( isLocalized ) {
183
197
hasLocalizedManyNumberField = true
184
198
}
185
199
@@ -255,7 +269,11 @@ export const traverseFields = ({
255
269
parentIdx : ( cols ) => index ( `${ selectTableName } _parent_idx` ) . on ( cols . parent ) ,
256
270
}
257
271
258
- if ( field . localized ) {
272
+ const isLocalized =
273
+ Boolean ( field . localized && adapter . payload . config . localization ) ||
274
+ withinLocalizedArrayOrBlock
275
+
276
+ if ( isLocalized ) {
259
277
baseColumns . locale = text ( 'locale' , { enum : locales } ) . notNull ( )
260
278
baseExtraConfig . localeIdx = ( cols ) =>
261
279
index ( `${ selectTableName } _locale_idx` ) . on ( cols . locale )
@@ -337,13 +355,20 @@ export const traverseFields = ({
337
355
_parentIDIdx : ( cols ) => index ( `${ arrayTableName } _parent_id_idx` ) . on ( cols . _parentID ) ,
338
356
}
339
357
340
- if ( field . localized && adapter . payload . config . localization ) {
358
+ const isLocalized =
359
+ Boolean ( field . localized && adapter . payload . config . localization ) ||
360
+ withinLocalizedArrayOrBlock
361
+
362
+ if ( isLocalized ) {
341
363
baseColumns . _locale = text ( '_locale' , { enum : locales } ) . notNull ( )
342
364
baseExtraConfig . _localeIdx = ( cols ) =>
343
365
index ( `${ arrayTableName } _locale_idx` ) . on ( cols . _locale )
344
366
}
345
367
346
368
const {
369
+ hasLocalizedManyNumberField : subHasLocalizedManyNumberField ,
370
+ hasLocalizedManyTextField : subHasLocalizedManyTextField ,
371
+ hasLocalizedRelationshipField : subHasLocalizedRelationshipField ,
347
372
hasManyNumberField : subHasManyNumberField ,
348
373
hasManyTextField : subHasManyTextField ,
349
374
relationsToBuild : subRelationsToBuild ,
@@ -360,8 +385,21 @@ export const traverseFields = ({
360
385
rootTableName,
361
386
tableName : arrayTableName ,
362
387
versions,
388
+ withinLocalizedArrayOrBlock : isLocalized ,
363
389
} )
364
390
391
+ if ( subHasLocalizedManyNumberField ) {
392
+ hasLocalizedManyNumberField = subHasLocalizedManyNumberField
393
+ }
394
+
395
+ if ( subHasLocalizedRelationshipField ) {
396
+ hasLocalizedRelationshipField = subHasLocalizedRelationshipField
397
+ }
398
+
399
+ if ( subHasLocalizedManyTextField ) {
400
+ hasLocalizedManyTextField = subHasLocalizedManyTextField
401
+ }
402
+
365
403
if ( subHasManyTextField ) {
366
404
if ( ! hasManyTextField || subHasManyTextField === 'index' )
367
405
hasManyTextField = subHasManyTextField
@@ -453,13 +491,20 @@ export const traverseFields = ({
453
491
_pathIdx : ( cols ) => index ( `${ blockTableName } _path_idx` ) . on ( cols . _path ) ,
454
492
}
455
493
456
- if ( field . localized && adapter . payload . config . localization ) {
494
+ const isLocalized =
495
+ Boolean ( field . localized && adapter . payload . config . localization ) ||
496
+ withinLocalizedArrayOrBlock
497
+
498
+ if ( isLocalized ) {
457
499
baseColumns . _locale = text ( '_locale' , { enum : locales } ) . notNull ( )
458
500
baseExtraConfig . _localeIdx = ( cols ) =>
459
501
index ( `${ blockTableName } _locale_idx` ) . on ( cols . _locale )
460
502
}
461
503
462
504
const {
505
+ hasLocalizedManyNumberField : subHasLocalizedManyNumberField ,
506
+ hasLocalizedManyTextField : subHasLocalizedManyTextField ,
507
+ hasLocalizedRelationshipField : subHasLocalizedRelationshipField ,
463
508
hasManyNumberField : subHasManyNumberField ,
464
509
hasManyTextField : subHasManyTextField ,
465
510
relationsToBuild : subRelationsToBuild ,
@@ -476,8 +521,21 @@ export const traverseFields = ({
476
521
rootTableName,
477
522
tableName : blockTableName ,
478
523
versions,
524
+ withinLocalizedArrayOrBlock : isLocalized ,
479
525
} )
480
526
527
+ if ( subHasLocalizedManyNumberField ) {
528
+ hasLocalizedManyNumberField = subHasLocalizedManyNumberField
529
+ }
530
+
531
+ if ( subHasLocalizedRelationshipField ) {
532
+ hasLocalizedRelationshipField = subHasLocalizedRelationshipField
533
+ }
534
+
535
+ if ( subHasLocalizedManyTextField ) {
536
+ hasLocalizedManyTextField = subHasLocalizedManyTextField
537
+ }
538
+
481
539
if ( subHasManyTextField ) {
482
540
if ( ! hasManyTextField || subHasManyTextField === 'index' )
483
541
hasManyTextField = subHasManyTextField
@@ -577,6 +635,7 @@ export const traverseFields = ({
577
635
rootTableIDColType,
578
636
rootTableName,
579
637
versions,
638
+ withinLocalizedArrayOrBlock,
580
639
} )
581
640
582
641
if ( groupHasLocalizedField ) hasLocalizedField = true
@@ -618,6 +677,7 @@ export const traverseFields = ({
618
677
rootTableIDColType,
619
678
rootTableName,
620
679
versions,
680
+ withinLocalizedArrayOrBlock,
621
681
} )
622
682
623
683
if ( groupHasLocalizedField ) hasLocalizedField = true
@@ -660,6 +720,7 @@ export const traverseFields = ({
660
720
rootTableIDColType,
661
721
rootTableName,
662
722
versions,
723
+ withinLocalizedArrayOrBlock,
663
724
} )
664
725
665
726
if ( tabHasLocalizedField ) hasLocalizedField = true
@@ -702,6 +763,7 @@ export const traverseFields = ({
702
763
rootTableIDColType,
703
764
rootTableName,
704
765
versions,
766
+ withinLocalizedArrayOrBlock,
705
767
} )
706
768
707
769
if ( rowHasLocalizedField ) hasLocalizedField = true
@@ -753,7 +815,10 @@ export const traverseFields = ({
753
815
}
754
816
break
755
817
}
756
- if ( adapter . payload . config . localization && field . localized ) {
818
+ if (
819
+ Boolean ( field . localized && adapter . payload . config . localization ) ||
820
+ withinLocalizedArrayOrBlock
821
+ ) {
757
822
hasLocalizedRelationshipField = true
758
823
}
759
824
0 commit comments