@payloadcms/next 3.24.0-canary.f229d8d → 3.24.0

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.
Files changed (149) hide show
  1. package/dist/elements/DocumentHeader/Tabs/Tab/index.d.ts +2 -2
  2. package/dist/elements/DocumentHeader/Tabs/Tab/index.d.ts.map +1 -1
  3. package/dist/elements/DocumentHeader/Tabs/Tab/index.js.map +1 -1
  4. package/dist/elements/DocumentHeader/Tabs/index.d.ts.map +1 -1
  5. package/dist/elements/DocumentHeader/Tabs/index.js +2 -0
  6. package/dist/elements/DocumentHeader/Tabs/index.js.map +1 -1
  7. package/dist/prod/styles.css +1 -1
  8. package/dist/views/API/index.client.d.ts.map +1 -1
  9. package/dist/views/API/index.client.js +1 -2
  10. package/dist/views/API/index.client.js.map +1 -1
  11. package/dist/views/API/index.d.ts +3 -2
  12. package/dist/views/API/index.d.ts.map +1 -1
  13. package/dist/views/API/index.js +2 -2
  14. package/dist/views/API/index.js.map +1 -1
  15. package/dist/views/Account/ResetPreferences/index.d.ts.map +1 -1
  16. package/dist/views/Account/ResetPreferences/index.js +83 -56
  17. package/dist/views/Account/ResetPreferences/index.js.map +1 -1
  18. package/dist/views/Account/index.d.ts +2 -2
  19. package/dist/views/Account/index.d.ts.map +1 -1
  20. package/dist/views/Account/index.js +4 -3
  21. package/dist/views/Account/index.js.map +1 -1
  22. package/dist/views/CreateFirstUser/index.d.ts +2 -2
  23. package/dist/views/CreateFirstUser/index.d.ts.map +1 -1
  24. package/dist/views/CreateFirstUser/index.js +3 -3
  25. package/dist/views/CreateFirstUser/index.js.map +1 -1
  26. package/dist/views/Dashboard/Default/index.d.ts +7 -5
  27. package/dist/views/Dashboard/Default/index.d.ts.map +1 -1
  28. package/dist/views/Dashboard/Default/index.js +2 -2
  29. package/dist/views/Dashboard/Default/index.js.map +1 -1
  30. package/dist/views/Dashboard/index.d.ts +2 -2
  31. package/dist/views/Dashboard/index.d.ts.map +1 -1
  32. package/dist/views/Dashboard/index.js +3 -3
  33. package/dist/views/Dashboard/index.js.map +1 -1
  34. package/dist/views/Document/getVersions.d.ts +1 -1
  35. package/dist/views/Document/getVersions.d.ts.map +1 -1
  36. package/dist/views/Document/getVersions.js +9 -8
  37. package/dist/views/Document/getVersions.js.map +1 -1
  38. package/dist/views/Document/getViewsFromConfig.d.ts +4 -4
  39. package/dist/views/Document/getViewsFromConfig.d.ts.map +1 -1
  40. package/dist/views/Document/getViewsFromConfig.js.map +1 -1
  41. package/dist/views/Document/handleServerFunction.d.ts.map +1 -1
  42. package/dist/views/Document/handleServerFunction.js +2 -0
  43. package/dist/views/Document/handleServerFunction.js.map +1 -1
  44. package/dist/views/Document/index.d.ts +4 -3
  45. package/dist/views/Document/index.d.ts.map +1 -1
  46. package/dist/views/Document/index.js +7 -7
  47. package/dist/views/Document/index.js.map +1 -1
  48. package/dist/views/Document/renderDocumentSlots.d.ts.map +1 -1
  49. package/dist/views/Document/renderDocumentSlots.js +6 -5
  50. package/dist/views/Document/renderDocumentSlots.js.map +1 -1
  51. package/dist/views/Edit/index.d.ts +2 -2
  52. package/dist/views/Edit/index.js.map +1 -1
  53. package/dist/views/ForgotPassword/index.d.ts +2 -2
  54. package/dist/views/ForgotPassword/index.d.ts.map +1 -1
  55. package/dist/views/ForgotPassword/index.js +3 -3
  56. package/dist/views/ForgotPassword/index.js.map +1 -1
  57. package/dist/views/List/handleServerFunction.d.ts.map +1 -1
  58. package/dist/views/List/handleServerFunction.js +2 -0
  59. package/dist/views/List/handleServerFunction.js.map +1 -1
  60. package/dist/views/List/index.d.ts +6 -5
  61. package/dist/views/List/index.d.ts.map +1 -1
  62. package/dist/views/List/index.js +30 -30
  63. package/dist/views/List/index.js.map +1 -1
  64. package/dist/views/List/renderListViewSlots.d.ts +3 -4
  65. package/dist/views/List/renderListViewSlots.d.ts.map +1 -1
  66. package/dist/views/List/renderListViewSlots.js +20 -11
  67. package/dist/views/List/renderListViewSlots.js.map +1 -1
  68. package/dist/views/LivePreview/index.d.ts +3 -2
  69. package/dist/views/LivePreview/index.d.ts.map +1 -1
  70. package/dist/views/LivePreview/index.js +2 -2
  71. package/dist/views/LivePreview/index.js.map +1 -1
  72. package/dist/views/Login/index.d.ts +2 -2
  73. package/dist/views/Login/index.d.ts.map +1 -1
  74. package/dist/views/Login/index.js +3 -4
  75. package/dist/views/Login/index.js.map +1 -1
  76. package/dist/views/Logout/index.d.ts +3 -3
  77. package/dist/views/Logout/index.d.ts.map +1 -1
  78. package/dist/views/Logout/index.js +2 -2
  79. package/dist/views/Logout/index.js.map +1 -1
  80. package/dist/views/NotFound/index.d.ts +2 -2
  81. package/dist/views/NotFound/index.d.ts.map +1 -1
  82. package/dist/views/NotFound/index.js +2 -2
  83. package/dist/views/NotFound/index.js.map +1 -1
  84. package/dist/views/ResetPassword/index.d.ts +2 -2
  85. package/dist/views/ResetPassword/index.d.ts.map +1 -1
  86. package/dist/views/ResetPassword/index.js +3 -3
  87. package/dist/views/ResetPassword/index.js.map +1 -1
  88. package/dist/views/Root/getViewFromConfig.d.ts +3 -3
  89. package/dist/views/Root/getViewFromConfig.d.ts.map +1 -1
  90. package/dist/views/Root/getViewFromConfig.js.map +1 -1
  91. package/dist/views/Root/index.d.ts.map +1 -1
  92. package/dist/views/Root/index.js.map +1 -1
  93. package/dist/views/Unauthorized/index.d.ts +3 -2
  94. package/dist/views/Unauthorized/index.d.ts.map +1 -1
  95. package/dist/views/Unauthorized/index.js +3 -3
  96. package/dist/views/Unauthorized/index.js.map +1 -1
  97. package/dist/views/Verify/index.d.ts +2 -2
  98. package/dist/views/Verify/index.d.ts.map +1 -1
  99. package/dist/views/Verify/index.js +4 -4
  100. package/dist/views/Verify/index.js.map +1 -1
  101. package/dist/views/Version/RenderFieldsToDiff/DiffCollapser/index.d.ts +2 -0
  102. package/dist/views/Version/RenderFieldsToDiff/DiffCollapser/index.d.ts.map +1 -1
  103. package/dist/views/Version/RenderFieldsToDiff/DiffCollapser/index.js +26 -22
  104. package/dist/views/Version/RenderFieldsToDiff/DiffCollapser/index.js.map +1 -1
  105. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.d.ts +2 -1
  106. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.d.ts.map +1 -1
  107. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.js +14 -2
  108. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.js.map +1 -1
  109. package/dist/views/Version/RenderFieldsToDiff/fields/Collapsible/index.d.ts.map +1 -1
  110. package/dist/views/Version/RenderFieldsToDiff/fields/Collapsible/index.js +12 -8
  111. package/dist/views/Version/RenderFieldsToDiff/fields/Collapsible/index.js.map +1 -1
  112. package/dist/views/Version/RenderFieldsToDiff/fields/Group/index.d.ts.map +1 -1
  113. package/dist/views/Version/RenderFieldsToDiff/fields/Group/index.js +12 -8
  114. package/dist/views/Version/RenderFieldsToDiff/fields/Group/index.js.map +1 -1
  115. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.d.ts.map +1 -1
  116. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js +11 -7
  117. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js.map +1 -1
  118. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.d.ts.map +1 -1
  119. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.js +30 -21
  120. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.js.map +1 -1
  121. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.js +13 -9
  122. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.js.map +1 -1
  123. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.d.ts +4 -2
  124. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.d.ts.map +1 -1
  125. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.js +24 -3
  126. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.js.map +1 -1
  127. package/dist/views/Version/Restore/index.d.ts.map +1 -1
  128. package/dist/views/Version/Restore/index.js +8 -31
  129. package/dist/views/Version/Restore/index.js.map +1 -1
  130. package/dist/views/Version/index.d.ts +3 -2
  131. package/dist/views/Version/index.d.ts.map +1 -1
  132. package/dist/views/Version/index.js +3 -2
  133. package/dist/views/Version/index.js.map +1 -1
  134. package/dist/views/Versions/buildColumns.d.ts +1 -2
  135. package/dist/views/Versions/buildColumns.d.ts.map +1 -1
  136. package/dist/views/Versions/buildColumns.js.map +1 -1
  137. package/dist/views/Versions/index.client.d.ts +1 -2
  138. package/dist/views/Versions/index.client.d.ts.map +1 -1
  139. package/dist/views/Versions/index.client.js.map +1 -1
  140. package/dist/views/Versions/index.d.ts +3 -2
  141. package/dist/views/Versions/index.d.ts.map +1 -1
  142. package/dist/views/Versions/index.js +2 -2
  143. package/dist/views/Versions/index.js.map +1 -1
  144. package/package.json +7 -8
  145. package/dist/views/Account/ResetPreferences/ConfirmResetModal/index.d.ts +0 -6
  146. package/dist/views/Account/ResetPreferences/ConfirmResetModal/index.d.ts.map +0 -1
  147. package/dist/views/Account/ResetPreferences/ConfirmResetModal/index.js +0 -83
  148. package/dist/views/Account/ResetPreferences/ConfirmResetModal/index.js.map +0 -1
  149. package/dist/views/Account/ResetPreferences/ConfirmResetModal/index.scss +0 -40
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","getTranslation","useConfig","useTranslation","fieldIsArrayType","fieldIsBlockType","React","useSelectedLocales","DiffCollapser","RenderVersionFieldsToDiff","getFieldsForRowComparison","baseClass","Iterable","t0","$","baseVersionField","comparisonValue","field","locale","versionValue","i18n","selectedLocales","config","versionRowCount","Array","isArray","length","comparisonRowCount","maxRows","Math","max","Error","type","t1","label","_jsxs","children","_jsx","className","t2","comparison","isIterable","version","from","keys","map","row","i","versionRow","comparisonRow","fields","versionFields","rowNumber","String","padStart","rowLabel","locales","t","labels","plural"],"sources":["../../../../../../src/views/Version/RenderFieldsToDiff/fields/Iterable/index.tsx"],"sourcesContent":["'use client'\n\nimport type { FieldDiffClientProps } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { useConfig, useTranslation } from '@payloadcms/ui'\n\nimport './index.scss'\n\nimport { fieldIsArrayType, fieldIsBlockType } from 'payload/shared'\nimport React from 'react'\n\nimport { useSelectedLocales } from '../../../Default/SelectedLocalesContext.js'\nimport { DiffCollapser } from '../../DiffCollapser/index.js'\nimport { RenderVersionFieldsToDiff } from '../../RenderVersionFieldsToDiff.js'\nimport { getFieldsForRowComparison } from '../../utilities/getFieldsForRowComparison.js'\n\nconst baseClass = 'iterable-diff'\n\nexport const Iterable: React.FC<FieldDiffClientProps> = ({\n baseVersionField,\n comparisonValue,\n field,\n locale,\n versionValue,\n}) => {\n const { i18n } = useTranslation()\n const { selectedLocales } = useSelectedLocales()\n const { config } = useConfig()\n\n const versionRowCount = Array.isArray(versionValue) ? versionValue.length : 0\n const comparisonRowCount = Array.isArray(comparisonValue) ? comparisonValue.length : 0\n const maxRows = Math.max(versionRowCount, comparisonRowCount)\n\n if (!fieldIsArrayType(field) && !fieldIsBlockType(field)) {\n throw new Error(`Expected field to be an array or blocks type but got: ${field.type}`)\n }\n\n return (\n <div className={baseClass}>\n <DiffCollapser\n comparison={comparisonValue}\n field={field}\n isIterable\n label={\n 'label' in field &&\n field.label &&\n typeof field.label !== 'function' && (\n <span>\n {locale && <span className={`${baseClass}__locale-label`}>{locale}</span>}\n {getTranslation(field.label, i18n)}\n </span>\n )\n }\n locales={selectedLocales}\n version={versionValue}\n >\n {maxRows > 0 && (\n <div className={`${baseClass}__rows`}>\n {Array.from(Array(maxRows).keys()).map((row, i) => {\n const versionRow = versionValue?.[i] || {}\n const comparisonRow = comparisonValue?.[i] || {}\n\n const { fields, versionFields } = getFieldsForRowComparison({\n baseVersionField,\n comparisonRow,\n config,\n field,\n row: i,\n versionRow,\n })\n\n const rowNumber = String(i + 1).padStart(2, '0')\n const rowLabel = fieldIsArrayType(field) ? `Item ${rowNumber}` : `Block ${rowNumber}`\n\n return (\n <div className={`${baseClass}__row`} key={i}>\n <DiffCollapser\n comparison={comparisonRow}\n fields={fields}\n label={rowLabel}\n locales={selectedLocales}\n version={versionRow}\n >\n <RenderVersionFieldsToDiff versionFields={versionFields} />\n </DiffCollapser>\n </div>\n )\n })}\n </div>\n )}\n {maxRows === 0 && (\n <div className={`${baseClass}__no-rows`}>\n {i18n.t('version:noRowsFound', {\n label:\n 'labels' in field && field.labels?.plural\n ? getTranslation(field.labels.plural, i18n)\n : i18n.t('general:rows'),\n })}\n </div>\n )}\n </DiffCollapser>\n </div>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAIA,SAASC,cAAc,QAAQ;AAC/B,SAASC,SAAS,EAAEC,cAAc,QAAQ;AAI1C,SAASC,gBAAgB,EAAEC,gBAAgB,QAAQ;AACnD,OAAOC,KAAA,MAAW;AAElB,SAASC,kBAAkB,QAAQ;AACnC,SAASC,aAAa,QAAQ;AAC9B,SAASC,yBAAyB,QAAQ;AAC1C,SAASC,yBAAyB,QAAQ;AAE1C,MAAMC,SAAA,GAAY;AAElB,OAAO,MAAMC,QAAA,GAA2CC,EAAA;EAAA,MAAAC,CAAA,GAAAd,EAAA;EAAC;IAAAe,gBAAA;IAAAC,eAAA;IAAAC,KAAA;IAAAC,MAAA;IAAAC;EAAA,IAAAN,EAMxD;EACC;IAAAO;EAAA,IAAiBjB,cAAA;EACjB;IAAAkB;EAAA,IAA4Bd,kBAAA;EAC5B;IAAAe;EAAA,IAAmBpB,SAAA;EAEnB,MAAAqB,eAAA,GAAwBC,KAAA,CAAAC,OAAA,CAAcN,YAAA,IAAgBA,YAAA,CAAAO,MAAA,IAAsB;EAC5E,MAAAC,kBAAA,GAA2BH,KAAA,CAAAC,OAAA,CAAcT,eAAA,IAAmBA,eAAA,CAAAU,MAAA,IAAyB;EACrF,MAAAE,OAAA,GAAgBC,IAAA,CAAAC,GAAA,CAASP,eAAA,EAAiBI,kBAAA;EAAA,IAEtC,CAACvB,gBAAA,CAAiBa,KAAA,MAAWZ,gBAAA,CAAiBY,KAAA;IAAA,UAAAc,KAAA,CAChC,yDAAyDd,KAAA,CAAAe,IAAA,EAAY;EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAnB,CAAA,QAAAG,KAAA,IAAAH,CAAA,QAAAM,IAAA,IAAAN,CAAA,QAAAI,MAAA;IAU/Ee,EAAA,cAAWhB,KAAA,IACXA,KAAA,CAAAiB,KAAW,IACX,OAAOjB,KAAA,CAAAiB,KAAA,KAAgB,cACrBC,KAAA,CAAC;MAAAC,QAAA,GACElB,MAAA,IAAUmB,IAAA,CAAC;QAAAC,SAAA,EAAgB,GAAA3B,SAAA,gBAA4B;QAAAyB,QAAA,EAAGlB;MAAA,C,GAC1DjB,cAAA,CAAegB,KAAA,CAAAiB,KAAA,EAAad,IAAA;IAAA,C;;;;;;;;;;IAXvCmB,EAAA,GAAAF,IAAA,CAAC;MAAAC,SAAA,EAAA3B,SAAA;MAAAyB,QAAA,EACCD,KAAA,CAAA3B,aAAA;QAAAgC,UAAA,EACcxB,eAAA;QAAAC,KAAA;QAAAwB,UAAA;QAAAP,KAAA,EAIVD,E;iBASOZ,eAAA;QAAAqB,OAAA,EACAvB,YAAA;QAAAiB,QAAA,GAERR,OAAA,IAAU,IACTS,IAAA,CAAC;UAAAC,SAAA,EAAe,GAAA3B,SAAA,QAAoB;UAAAyB,QAAA,EACjCZ,KAAA,CAAAmB,IAAA,CAAWnB,KAAA,CAAMI,OAAA,EAAAgB,IAAA,CAAa,GAAAC,GAAA,EAAAC,GAAA,EAAAC,CAAA;YAC7B,MAAAC,UAAA,GAAmB7B,YAAA,GAAe4B,CAAA,OAAO;YACzC,MAAAE,aAAA,GAAsBjC,eAAA,GAAkB+B,CAAA,OAAO;YAE/C;cAAAG,MAAA;cAAAC;YAAA,IAAkCzC,yBAAA;cAAAK,gBAAA;cAAAkC,aAAA;cAAA3B,MAAA;cAAAL,KAAA;cAAA6B,GAAA,EAK3BC,CAAA;cAAAC;YAAA,CAEP;YAEA,MAAAI,SAAA,GAAkBC,MAAA,CAAON,CAAA,IAAI,EAAAO,QAAA,IAAe;YAC5C,MAAAC,QAAA,GAAiBnD,gBAAA,CAAiBa,KAAA,IAAS,QAAQmC,SAAA,EAAW,GAAG,SAASA,SAAA,EAAW;YAAA,OAGnFf,IAAA,CAAC;cAAAC,SAAA,EAAe,GAAA3B,SAAA,OAAmB;cAAAyB,QAAA,EACjCC,IAAA,CAAA7B,aAAA;gBAAAgC,UAAA,EACcS,aAAA;gBAAAC,MAAA;gBAAAhB,KAAA,EAELqB,QAAA;gBAAAC,OAAA,EACEnC,eAAA;gBAAAqB,OAAA,EACAM,UAAA;gBAAAZ,QAAA,EAETC,IAAA,CAAA5B,yBAAA;kBAAA0C;gBAAA,C;;eARsCJ,CAAA;UAAA,CAY9C;QAAA,C,GAGHnB,OAAA,MAAY,IACXS,IAAA,CAAC;UAAAC,SAAA,EAAe,GAAA3B,SAAA,WAAuB;UAAAyB,QAAA,EACpChB,IAAA,CAAAqC,CAAA,CAAO;YAAAvB,KAAA,EAEJ,YAAYjB,KAAA,IAASA,KAAA,CAAAyC,MAAA,EAAAC,MAAc,GAC/B1D,cAAA,CAAegB,KAAA,CAAAyC,MAAA,CAAAC,MAAA,EAAqBvC,IAAA,IACpCA,IAAA,CAAAqC,CAAA,CAAO;UAAA,CACf;QAAA,C;;;;;;;;;;;;;;;;SA3DRlB,E;CAiEJ","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","getTranslation","useConfig","useTranslation","fieldIsArrayType","fieldIsBlockType","React","useSelectedLocales","DiffCollapser","RenderVersionFieldsToDiff","getFieldsForRowComparison","baseClass","Iterable","t0","$","baseVersionField","comparisonValue","field","locale","parentIsLocalized","versionValue","i18n","selectedLocales","config","versionRowCount","Array","isArray","length","comparisonRowCount","maxRows","Math","max","Error","type","t1","label","_jsxs","children","_jsx","className","t2","comparison","isIterable","version","from","keys","map","row","i","versionRow","comparisonRow","fields","versionFields","rowNumber","String","padStart","rowLabel","locales","localized","t","labels","plural"],"sources":["../../../../../../src/views/Version/RenderFieldsToDiff/fields/Iterable/index.tsx"],"sourcesContent":["'use client'\n\nimport type { FieldDiffClientProps } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { useConfig, useTranslation } from '@payloadcms/ui'\n\nimport './index.scss'\n\nimport { fieldIsArrayType, fieldIsBlockType } from 'payload/shared'\nimport React from 'react'\n\nimport { useSelectedLocales } from '../../../Default/SelectedLocalesContext.js'\nimport { DiffCollapser } from '../../DiffCollapser/index.js'\nimport { RenderVersionFieldsToDiff } from '../../RenderVersionFieldsToDiff.js'\nimport { getFieldsForRowComparison } from '../../utilities/getFieldsForRowComparison.js'\n\nconst baseClass = 'iterable-diff'\n\nexport const Iterable: React.FC<FieldDiffClientProps> = ({\n baseVersionField,\n comparisonValue,\n field,\n locale,\n parentIsLocalized,\n versionValue,\n}) => {\n const { i18n } = useTranslation()\n const { selectedLocales } = useSelectedLocales()\n const { config } = useConfig()\n\n const versionRowCount = Array.isArray(versionValue) ? versionValue.length : 0\n const comparisonRowCount = Array.isArray(comparisonValue) ? comparisonValue.length : 0\n const maxRows = Math.max(versionRowCount, comparisonRowCount)\n\n if (!fieldIsArrayType(field) && !fieldIsBlockType(field)) {\n throw new Error(`Expected field to be an array or blocks type but got: ${field.type}`)\n }\n\n return (\n <div className={baseClass}>\n <DiffCollapser\n comparison={comparisonValue}\n field={field}\n isIterable\n label={\n 'label' in field &&\n field.label &&\n typeof field.label !== 'function' && (\n <span>\n {locale && <span className={`${baseClass}__locale-label`}>{locale}</span>}\n {getTranslation(field.label, i18n)}\n </span>\n )\n }\n locales={selectedLocales}\n parentIsLocalized={parentIsLocalized}\n version={versionValue}\n >\n {maxRows > 0 && (\n <div className={`${baseClass}__rows`}>\n {Array.from(Array(maxRows).keys()).map((row, i) => {\n const versionRow = versionValue?.[i] || {}\n const comparisonRow = comparisonValue?.[i] || {}\n\n const { fields, versionFields } = getFieldsForRowComparison({\n baseVersionField,\n comparisonRow,\n config,\n field,\n row: i,\n versionRow,\n })\n\n const rowNumber = String(i + 1).padStart(2, '0')\n const rowLabel = fieldIsArrayType(field) ? `Item ${rowNumber}` : `Block ${rowNumber}`\n\n return (\n <div className={`${baseClass}__row`} key={i}>\n <DiffCollapser\n comparison={comparisonRow}\n fields={fields}\n label={rowLabel}\n locales={selectedLocales}\n parentIsLocalized={parentIsLocalized || field.localized}\n version={versionRow}\n >\n <RenderVersionFieldsToDiff versionFields={versionFields} />\n </DiffCollapser>\n </div>\n )\n })}\n </div>\n )}\n {maxRows === 0 && (\n <div className={`${baseClass}__no-rows`}>\n {i18n.t('version:noRowsFound', {\n label:\n 'labels' in field && field.labels?.plural\n ? getTranslation(field.labels.plural, i18n)\n : i18n.t('general:rows'),\n })}\n </div>\n )}\n </DiffCollapser>\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/views/Version/RenderFieldsToDiff/fields/Relationship/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAGV,oCAAoC,EACrC,MAAM,SAAS,CAAA;AAShB,OAAO,cAAc,CAAA;AAsFrB,eAAO,MAAM,YAAY,EAAE,oCA8D1B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/views/Version/RenderFieldsToDiff/fields/Relationship/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAIV,oCAAoC,EACrC,MAAM,SAAS,CAAA;AAShB,OAAO,cAAc,CAAA;AAwFrB,eAAO,MAAM,YAAY,EAAE,oCAkF1B,CAAA"}
@@ -4,15 +4,15 @@ import { c as _c } from "react/compiler-runtime";
4
4
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
5
5
  import { getTranslation } from '@payloadcms/translations';
6
6
  import { useConfig, useTranslation } from '@payloadcms/ui';
7
- import { fieldAffectsData, fieldIsPresentationalOnly } from 'payload/shared';
7
+ import { fieldAffectsData, fieldIsPresentationalOnly, fieldShouldBeLocalized } from 'payload/shared';
8
8
  import React from 'react';
9
9
  import ReactDiffViewer from 'react-diff-viewer-continued';
10
10
  import Label from '../../Label/index.js';
11
11
  import { diffStyles } from '../styles.js';
12
12
  const baseClass = 'relationship-diff';
13
- const generateLabelFromValue = (collections, field, locale, value) => {
13
+ const generateLabelFromValue = (collections, field, locale, value, config, parentIsLocalized) => {
14
14
  if (Array.isArray(value)) {
15
- return value.map(v => generateLabelFromValue(collections, field, locale, v)).filter(Boolean) // Filters out any undefined or empty values
15
+ return value.map(v => generateLabelFromValue(collections, field, locale, v, config, parentIsLocalized)).filter(Boolean) // Filters out any undefined or empty values
16
16
  .join(', ');
17
17
  }
18
18
  let relatedDoc;
@@ -34,7 +34,10 @@ const generateLabelFromValue = (collections, field, locale, value) => {
34
34
  const useAsTitleField = relatedCollection.fields.find(f => fieldAffectsData(f) && !fieldIsPresentationalOnly(f) && f.name === useAsTitle);
35
35
  let titleFieldIsLocalized = false;
36
36
  if (useAsTitleField && fieldAffectsData(useAsTitleField)) {
37
- titleFieldIsLocalized = useAsTitleField.localized;
37
+ titleFieldIsLocalized = fieldShouldBeLocalized({
38
+ field: useAsTitleField,
39
+ parentIsLocalized
40
+ });
38
41
  }
39
42
  if (typeof relatedDoc?.[useAsTitle] !== 'undefined') {
40
43
  valueToReturn = relatedDoc[useAsTitle];
@@ -60,16 +63,20 @@ const generateLabelFromValue = (collections, field, locale, value) => {
60
63
  return valueToReturn;
61
64
  };
62
65
  export const Relationship = t0 => {
63
- const $ = _c(10);
66
+ const $ = _c(12);
64
67
  const {
65
68
  comparisonValue,
66
69
  field,
67
70
  locale,
71
+ parentIsLocalized,
68
72
  versionValue
69
73
  } = t0;
70
74
  const {
71
75
  i18n
72
76
  } = useTranslation();
77
+ const {
78
+ config
79
+ } = useConfig();
73
80
  const placeholder = `[${i18n.t("general:noValue")}]`;
74
81
  const {
75
82
  config: t1
@@ -78,34 +85,34 @@ export const Relationship = t0 => {
78
85
  collections
79
86
  } = t1;
80
87
  let t2;
81
- if ($[0] !== collections || $[1] !== comparisonValue || $[2] !== field || $[3] !== i18n || $[4] !== locale || $[5] !== placeholder || $[6] !== versionValue) {
88
+ if ($[0] !== collections || $[1] !== comparisonValue || $[2] !== config || $[3] !== field || $[4] !== i18n || $[5] !== locale || $[6] !== parentIsLocalized || $[7] !== placeholder || $[8] !== versionValue) {
82
89
  let versionToRender = placeholder;
83
90
  let comparisonToRender = placeholder;
84
91
  if (versionValue) {
85
92
  if ("hasMany" in field && field.hasMany && Array.isArray(versionValue)) {
86
- versionToRender = versionValue.map(val => generateLabelFromValue(collections, field, locale, val)).join(", ") || placeholder;
93
+ versionToRender = versionValue.map(val => generateLabelFromValue(collections, field, locale, val, config, parentIsLocalized)).join(", ") || placeholder;
87
94
  } else {
88
- versionToRender = generateLabelFromValue(collections, field, locale, versionValue) || placeholder;
95
+ versionToRender = generateLabelFromValue(collections, field, locale, versionValue, config, parentIsLocalized) || placeholder;
89
96
  }
90
97
  }
91
98
  if (comparisonValue) {
92
99
  if ("hasMany" in field && field.hasMany && Array.isArray(comparisonValue)) {
93
- comparisonToRender = comparisonValue.map(val_0 => generateLabelFromValue(collections, field, locale, val_0)).join(", ") || placeholder;
100
+ comparisonToRender = comparisonValue.map(val_0 => generateLabelFromValue(collections, field, locale, val_0, config, parentIsLocalized)).join(", ") || placeholder;
94
101
  } else {
95
- comparisonToRender = generateLabelFromValue(collections, field, locale, comparisonValue) || placeholder;
102
+ comparisonToRender = generateLabelFromValue(collections, field, locale, comparisonValue, config, parentIsLocalized) || placeholder;
96
103
  }
97
104
  }
98
105
  const label = "label" in field && typeof field.label !== "boolean" && typeof field.label !== "function" ? field.label : "";
99
106
  let t3;
100
- if ($[8] !== locale) {
107
+ if ($[10] !== locale) {
101
108
  t3 = locale && _jsx("span", {
102
109
  className: `${baseClass}__locale-label`,
103
110
  children: locale
104
111
  });
105
- $[8] = locale;
106
- $[9] = t3;
112
+ $[10] = locale;
113
+ $[11] = t3;
107
114
  } else {
108
- t3 = $[9];
115
+ t3 = $[11];
109
116
  }
110
117
  t2 = _jsxs("div", {
111
118
  className: baseClass,
@@ -122,14 +129,16 @@ export const Relationship = t0 => {
122
129
  });
123
130
  $[0] = collections;
124
131
  $[1] = comparisonValue;
125
- $[2] = field;
126
- $[3] = i18n;
127
- $[4] = locale;
128
- $[5] = placeholder;
129
- $[6] = versionValue;
130
- $[7] = t2;
132
+ $[2] = config;
133
+ $[3] = field;
134
+ $[4] = i18n;
135
+ $[5] = locale;
136
+ $[6] = parentIsLocalized;
137
+ $[7] = placeholder;
138
+ $[8] = versionValue;
139
+ $[9] = t2;
131
140
  } else {
132
- t2 = $[7];
141
+ t2 = $[9];
133
142
  }
134
143
  return t2;
135
144
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","getTranslation","useConfig","useTranslation","fieldAffectsData","fieldIsPresentationalOnly","React","ReactDiffViewer","Label","diffStyles","baseClass","generateLabelFromValue","collections","field","locale","value","Array","isArray","map","v","filter","Boolean","join","relatedDoc","valueToReturn","relationTo","undefined","String","relatedCollection","find","slug","useAsTitle","admin","useAsTitleField","fields","f","name","titleFieldIsLocalized","localized","id","JSON","stringify","Relationship","t0","$","comparisonValue","versionValue","i18n","placeholder","t","config","t1","t2","versionToRender","comparisonToRender","hasMany","val","val_0","label","t3","_jsx","className","children","_jsxs","hideLineNumbers","newValue","oldValue","showDiffOnly","splitView","styles"],"sources":["../../../../../../src/views/Version/RenderFieldsToDiff/fields/Relationship/index.tsx"],"sourcesContent":["'use client'\nimport type {\n ClientCollectionConfig,\n ClientField,\n RelationshipFieldDiffClientComponent,\n} from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { useConfig, useTranslation } from '@payloadcms/ui'\nimport { fieldAffectsData, fieldIsPresentationalOnly } from 'payload/shared'\nimport React from 'react'\nimport ReactDiffViewer from 'react-diff-viewer-continued'\n\nimport Label from '../../Label/index.js'\nimport './index.scss'\nimport { diffStyles } from '../styles.js'\n\nconst baseClass = 'relationship-diff'\n\ntype RelationshipValue = Record<string, any>\n\nconst generateLabelFromValue = (\n collections: ClientCollectionConfig[],\n field: ClientField,\n locale: string,\n value: { relationTo: string; value: RelationshipValue } | RelationshipValue,\n): string => {\n if (Array.isArray(value)) {\n return value\n .map((v) => generateLabelFromValue(collections, field, locale, v))\n .filter(Boolean) // Filters out any undefined or empty values\n .join(', ')\n }\n\n let relatedDoc: RelationshipValue\n let valueToReturn: RelationshipValue | string = ''\n\n const relationTo = 'relationTo' in field ? field.relationTo : undefined\n\n if (value === null || typeof value === 'undefined') {\n // eslint-disable-next-line @typescript-eslint/no-base-to-string -- We want to return a string specifilly for null and undefined\n return String(value)\n }\n\n if (typeof value === 'object' && 'relationTo' in value) {\n relatedDoc = value.value\n } else {\n // Non-polymorphic relationship\n relatedDoc = value\n }\n\n const relatedCollection = relationTo\n ? collections.find(\n (c) =>\n c.slug ===\n (typeof value === 'object' && 'relationTo' in value ? value.relationTo : relationTo),\n )\n : null\n\n if (relatedCollection) {\n const useAsTitle = relatedCollection?.admin?.useAsTitle\n const useAsTitleField = relatedCollection.fields.find(\n (f) => fieldAffectsData(f) && !fieldIsPresentationalOnly(f) && f.name === useAsTitle,\n )\n let titleFieldIsLocalized = false\n\n if (useAsTitleField && fieldAffectsData(useAsTitleField)) {\n titleFieldIsLocalized = useAsTitleField.localized\n }\n\n if (typeof relatedDoc?.[useAsTitle] !== 'undefined') {\n valueToReturn = relatedDoc[useAsTitle]\n } else if (typeof relatedDoc?.id !== 'undefined') {\n valueToReturn = relatedDoc.id\n } else {\n valueToReturn = relatedDoc\n }\n\n if (typeof valueToReturn === 'object' && titleFieldIsLocalized && valueToReturn?.[locale]) {\n valueToReturn = valueToReturn[locale]\n }\n } else if (relatedDoc) {\n // Handle non-polymorphic `hasMany` relationships or fallback\n if (typeof relatedDoc?.id !== 'undefined') {\n valueToReturn = String(relatedDoc.id)\n } else {\n valueToReturn = relatedDoc\n }\n }\n\n if (\n (valueToReturn && typeof valueToReturn === 'object' && valueToReturn !== null) ||\n typeof valueToReturn !== 'string'\n ) {\n valueToReturn = JSON.stringify(valueToReturn)\n }\n\n return valueToReturn\n}\n\nexport const Relationship: RelationshipFieldDiffClientComponent = ({\n comparisonValue,\n field,\n locale,\n versionValue,\n}) => {\n const { i18n } = useTranslation()\n\n const placeholder = `[${i18n.t('general:noValue')}]`\n\n const {\n config: { collections },\n } = useConfig()\n\n let versionToRender: string | undefined = placeholder\n let comparisonToRender: string | undefined = placeholder\n\n if (versionValue) {\n if ('hasMany' in field && field.hasMany && Array.isArray(versionValue)) {\n versionToRender =\n versionValue\n .map((val) => generateLabelFromValue(collections, field, locale, val))\n .join(', ') || placeholder\n } else {\n versionToRender =\n generateLabelFromValue(collections, field, locale, versionValue) || placeholder\n }\n }\n\n if (comparisonValue) {\n if ('hasMany' in field && field.hasMany && Array.isArray(comparisonValue)) {\n comparisonToRender =\n comparisonValue\n .map((val) => generateLabelFromValue(collections, field, locale, val))\n .join(', ') || placeholder\n } else {\n comparisonToRender =\n generateLabelFromValue(collections, field, locale, comparisonValue) || placeholder\n }\n }\n\n const label =\n 'label' in field && typeof field.label !== 'boolean' && typeof field.label !== 'function'\n ? field.label\n : ''\n\n return (\n <div className={baseClass}>\n <Label>\n {locale && <span className={`${baseClass}__locale-label`}>{locale}</span>}\n {getTranslation(label, i18n)}\n </Label>\n <ReactDiffViewer\n hideLineNumbers\n newValue={versionToRender}\n oldValue={comparisonToRender}\n showDiffOnly={false}\n splitView\n styles={diffStyles}\n />\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","getTranslation","useConfig","useTranslation","fieldAffectsData","fieldIsPresentationalOnly","fieldShouldBeLocalized","React","ReactDiffViewer","Label","diffStyles","baseClass","generateLabelFromValue","collections","field","locale","value","config","parentIsLocalized","Array","isArray","map","v","filter","Boolean","join","relatedDoc","valueToReturn","relationTo","undefined","String","relatedCollection","find","slug","useAsTitle","admin","useAsTitleField","fields","f","name","titleFieldIsLocalized","id","JSON","stringify","Relationship","t0","$","comparisonValue","versionValue","i18n","placeholder","t","t1","t2","versionToRender","comparisonToRender","hasMany","val","val_0","label","t3","_jsx","className","children","_jsxs","hideLineNumbers","newValue","oldValue","showDiffOnly","splitView","styles"],"sources":["../../../../../../src/views/Version/RenderFieldsToDiff/fields/Relationship/index.tsx"],"sourcesContent":["'use client'\nimport type {\n ClientCollectionConfig,\n ClientConfig,\n ClientField,\n RelationshipFieldDiffClientComponent,\n} from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { useConfig, useTranslation } from '@payloadcms/ui'\nimport { fieldAffectsData, fieldIsPresentationalOnly, fieldShouldBeLocalized } from 'payload/shared'\nimport React from 'react'\nimport ReactDiffViewer from 'react-diff-viewer-continued'\n\nimport Label from '../../Label/index.js'\nimport './index.scss'\nimport { diffStyles } from '../styles.js'\n\nconst baseClass = 'relationship-diff'\n\ntype RelationshipValue = Record<string, any>\n\nconst generateLabelFromValue = (\n collections: ClientCollectionConfig[],\n field: ClientField,\n locale: string,\n value: { relationTo: string; value: RelationshipValue } | RelationshipValue,\n config: ClientConfig,\n parentIsLocalized: boolean,\n): string => {\n if (Array.isArray(value)) {\n return value\n .map((v) => generateLabelFromValue(collections, field, locale, v, config, parentIsLocalized))\n .filter(Boolean) // Filters out any undefined or empty values\n .join(', ')\n }\n\n let relatedDoc: RelationshipValue\n let valueToReturn: RelationshipValue | string = ''\n\n const relationTo = 'relationTo' in field ? field.relationTo : undefined\n\n if (value === null || typeof value === 'undefined') {\n // eslint-disable-next-line @typescript-eslint/no-base-to-string -- We want to return a string specifilly for null and undefined\n return String(value)\n }\n\n if (typeof value === 'object' && 'relationTo' in value) {\n relatedDoc = value.value\n } else {\n // Non-polymorphic relationship\n relatedDoc = value\n }\n\n const relatedCollection = relationTo\n ? collections.find(\n (c) =>\n c.slug ===\n (typeof value === 'object' && 'relationTo' in value ? value.relationTo : relationTo),\n )\n : null\n\n if (relatedCollection) {\n const useAsTitle = relatedCollection?.admin?.useAsTitle\n const useAsTitleField = relatedCollection.fields.find(\n (f) => fieldAffectsData(f) && !fieldIsPresentationalOnly(f) && f.name === useAsTitle,\n )\n let titleFieldIsLocalized = false\n\n if (useAsTitleField && fieldAffectsData(useAsTitleField)) {\n titleFieldIsLocalized = fieldShouldBeLocalized({ field: useAsTitleField, parentIsLocalized })\n }\n\n if (typeof relatedDoc?.[useAsTitle] !== 'undefined') {\n valueToReturn = relatedDoc[useAsTitle]\n } else if (typeof relatedDoc?.id !== 'undefined') {\n valueToReturn = relatedDoc.id\n } else {\n valueToReturn = relatedDoc\n }\n\n if (typeof valueToReturn === 'object' && titleFieldIsLocalized && valueToReturn?.[locale]) {\n valueToReturn = valueToReturn[locale]\n }\n } else if (relatedDoc) {\n // Handle non-polymorphic `hasMany` relationships or fallback\n if (typeof relatedDoc?.id !== 'undefined') {\n valueToReturn = String(relatedDoc.id)\n } else {\n valueToReturn = relatedDoc\n }\n }\n\n if (\n (valueToReturn && typeof valueToReturn === 'object' && valueToReturn !== null) ||\n typeof valueToReturn !== 'string'\n ) {\n valueToReturn = JSON.stringify(valueToReturn)\n }\n\n return valueToReturn\n}\n\nexport const Relationship: RelationshipFieldDiffClientComponent = ({\n comparisonValue,\n field,\n locale,\n parentIsLocalized,\n versionValue,\n}) => {\n const { i18n } = useTranslation()\n const { config } = useConfig()\n\n const placeholder = `[${i18n.t('general:noValue')}]`\n\n const {\n config: { collections },\n } = useConfig()\n\n let versionToRender: string | undefined = placeholder\n let comparisonToRender: string | undefined = placeholder\n\n if (versionValue) {\n if ('hasMany' in field && field.hasMany && Array.isArray(versionValue)) {\n versionToRender =\n versionValue\n .map((val) =>\n generateLabelFromValue(collections, field, locale, val, config, parentIsLocalized),\n )\n .join(', ') || placeholder\n } else {\n versionToRender =\n generateLabelFromValue(\n collections,\n field,\n locale,\n versionValue,\n config,\n parentIsLocalized,\n ) || placeholder\n }\n }\n\n if (comparisonValue) {\n if ('hasMany' in field && field.hasMany && Array.isArray(comparisonValue)) {\n comparisonToRender =\n comparisonValue\n .map((val) =>\n generateLabelFromValue(collections, field, locale, val, config, parentIsLocalized),\n )\n .join(', ') || placeholder\n } else {\n comparisonToRender =\n generateLabelFromValue(\n collections,\n field,\n locale,\n comparisonValue,\n config,\n parentIsLocalized,\n ) || placeholder\n }\n }\n\n const label =\n 'label' in field && typeof field.label !== 'boolean' && typeof field.label !== 'function'\n ? field.label\n : ''\n\n return (\n <div className={baseClass}>\n <Label>\n {locale && <span className={`${baseClass}__locale-label`}>{locale}</span>}\n {getTranslation(label, i18n)}\n </Label>\n <ReactDiffViewer\n hideLineNumbers\n newValue={versionToRender}\n oldValue={comparisonToRender}\n showDiffOnly={false}\n splitView\n styles={diffStyles}\n />\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -101,11 +101,12 @@ export const Tabs = props => {
101
101
  return t0;
102
102
  };
103
103
  const Tab = t0 => {
104
- const $ = _c(11);
104
+ const $ = _c(12);
105
105
  const {
106
106
  comparisonValue,
107
107
  fieldTab,
108
108
  locale,
109
+ parentIsLocalized,
109
110
  tab,
110
111
  versionValue
111
112
  } = t0;
@@ -133,13 +134,15 @@ const Tab = t0 => {
133
134
  } else {
134
135
  t1 = $[3];
135
136
  }
136
- let t2;
137
- if ($[4] !== comparisonValue || $[5] !== fieldTab.fields || $[6] !== selectedLocales || $[7] !== t1 || $[8] !== tab.fields || $[9] !== versionValue) {
138
- t2 = _jsx(DiffCollapser, {
137
+ const t2 = parentIsLocalized || fieldTab.localized;
138
+ let t3;
139
+ if ($[4] !== comparisonValue || $[5] !== fieldTab.fields || $[6] !== selectedLocales || $[7] !== t1 || $[8] !== t2 || $[9] !== tab.fields || $[10] !== versionValue) {
140
+ t3 = _jsx(DiffCollapser, {
139
141
  comparison: comparisonValue,
140
142
  fields: fieldTab.fields,
141
143
  label: t1,
142
144
  locales: selectedLocales,
145
+ parentIsLocalized: t2,
143
146
  version: versionValue,
144
147
  children: _jsx(RenderVersionFieldsToDiff, {
145
148
  versionFields: tab.fields
@@ -149,12 +152,13 @@ const Tab = t0 => {
149
152
  $[5] = fieldTab.fields;
150
153
  $[6] = selectedLocales;
151
154
  $[7] = t1;
152
- $[8] = tab.fields;
153
- $[9] = versionValue;
154
- $[10] = t2;
155
+ $[8] = t2;
156
+ $[9] = tab.fields;
157
+ $[10] = versionValue;
158
+ $[11] = t3;
155
159
  } else {
156
- t2 = $[10];
160
+ t3 = $[11];
157
161
  }
158
- return t2;
162
+ return t3;
159
163
  };
160
164
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","getTranslation","useTranslation","React","useSelectedLocales","DiffCollapser","RenderVersionFieldsToDiff","baseClass","Tabs","props","$","baseVersionField","comparisonValue","field","versionValue","selectedLocales","t0","tabs","t1","tab","i","fields","length","fieldTab","_jsx","className","children","localized","map","locale","index","localizedTabProps","comparison","name","version","Tab","join","namedTabProps","i18n","label","_jsxs","t2","versionFields"],"sources":["../../../../../../src/views/Version/RenderFieldsToDiff/fields/Tabs/index.tsx"],"sourcesContent":["'use client'\nimport type {\n ClientTab,\n FieldDiffClientProps,\n TabsFieldClient,\n TabsFieldDiffClientComponent,\n VersionTab,\n} from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { useTranslation } from '@payloadcms/ui'\nimport React from 'react'\n\nimport './index.scss'\nimport { useSelectedLocales } from '../../../Default/SelectedLocalesContext.js'\nimport { DiffCollapser } from '../../DiffCollapser/index.js'\nimport { RenderVersionFieldsToDiff } from '../../RenderVersionFieldsToDiff.js'\n\nconst baseClass = 'tabs-diff'\n\nexport const Tabs: TabsFieldDiffClientComponent = (props) => {\n const { baseVersionField, comparisonValue, field, versionValue } = props\n const { selectedLocales } = useSelectedLocales()\n\n return (\n <div className={baseClass}>\n {baseVersionField.tabs.map((tab, i) => {\n if (!tab?.fields?.length) {\n return null\n }\n const fieldTab = field.tabs?.[i]\n return (\n <div className={`${baseClass}__tab`} key={i}>\n {(() => {\n if ('name' in fieldTab && selectedLocales && fieldTab.localized) {\n // Named localized tab\n return selectedLocales.map((locale, index) => {\n const localizedTabProps = {\n ...props,\n comparison: comparisonValue?.[tab.name]?.[locale],\n version: versionValue?.[tab.name]?.[locale],\n }\n return (\n <div className={`${baseClass}__tab-locale`} key={[locale, index].join('-')}>\n <div className={`${baseClass}__tab-locale-value`}>\n <Tab\n key={locale}\n {...localizedTabProps}\n fieldTab={fieldTab}\n locale={locale}\n tab={tab}\n />\n </div>\n </div>\n )\n })\n } else if ('name' in tab && tab.name) {\n // Named tab\n const namedTabProps = {\n ...props,\n comparison: comparisonValue?.[tab.name],\n version: versionValue?.[tab.name],\n }\n return <Tab fieldTab={fieldTab} key={i} {...namedTabProps} tab={tab} />\n } else {\n // Unnamed tab\n return <Tab fieldTab={fieldTab} key={i} {...props} tab={tab} />\n }\n })()}\n </div>\n )\n })}\n </div>\n )\n}\n\ntype TabProps = {\n fieldTab: ClientTab\n tab: VersionTab\n} & FieldDiffClientProps<TabsFieldClient>\n\nconst Tab: React.FC<TabProps> = ({ comparisonValue, fieldTab, locale, tab, versionValue }) => {\n const { i18n } = useTranslation()\n const { selectedLocales } = useSelectedLocales()\n\n if (!tab.fields?.length) {\n return null\n }\n\n return (\n <DiffCollapser\n comparison={comparisonValue}\n fields={fieldTab.fields}\n label={\n 'label' in tab &&\n tab.label &&\n typeof tab.label !== 'function' && (\n <span>\n {locale && <span className={`${baseClass}__locale-label`}>{locale}</span>}\n {getTranslation(tab.label, i18n)}\n </span>\n )\n }\n locales={selectedLocales}\n version={versionValue}\n >\n <RenderVersionFieldsToDiff versionFields={tab.fields} />\n </DiffCollapser>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","getTranslation","useTranslation","React","useSelectedLocales","DiffCollapser","RenderVersionFieldsToDiff","baseClass","Tabs","props","$","baseVersionField","comparisonValue","field","versionValue","selectedLocales","t0","tabs","t1","tab","i","fields","length","fieldTab","_jsx","className","children","localized","map","locale","index","localizedTabProps","comparison","name","version","Tab","join","namedTabProps","parentIsLocalized","i18n","label","_jsxs","t2","t3","versionFields"],"sources":["../../../../../../src/views/Version/RenderFieldsToDiff/fields/Tabs/index.tsx"],"sourcesContent":["'use client'\nimport type {\n ClientTab,\n FieldDiffClientProps,\n TabsFieldClient,\n TabsFieldDiffClientComponent,\n VersionTab,\n} from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { useTranslation } from '@payloadcms/ui'\nimport React from 'react'\n\nimport './index.scss'\nimport { useSelectedLocales } from '../../../Default/SelectedLocalesContext.js'\nimport { DiffCollapser } from '../../DiffCollapser/index.js'\nimport { RenderVersionFieldsToDiff } from '../../RenderVersionFieldsToDiff.js'\n\nconst baseClass = 'tabs-diff'\n\nexport const Tabs: TabsFieldDiffClientComponent = (props) => {\n const { baseVersionField, comparisonValue, field, versionValue } = props\n const { selectedLocales } = useSelectedLocales()\n\n return (\n <div className={baseClass}>\n {baseVersionField.tabs.map((tab, i) => {\n if (!tab?.fields?.length) {\n return null\n }\n const fieldTab = field.tabs?.[i]\n return (\n <div className={`${baseClass}__tab`} key={i}>\n {(() => {\n if ('name' in fieldTab && selectedLocales && fieldTab.localized) {\n // Named localized tab\n return selectedLocales.map((locale, index) => {\n const localizedTabProps = {\n ...props,\n comparison: comparisonValue?.[tab.name]?.[locale],\n version: versionValue?.[tab.name]?.[locale],\n }\n return (\n <div className={`${baseClass}__tab-locale`} key={[locale, index].join('-')}>\n <div className={`${baseClass}__tab-locale-value`}>\n <Tab\n key={locale}\n {...localizedTabProps}\n fieldTab={fieldTab}\n locale={locale}\n tab={tab}\n />\n </div>\n </div>\n )\n })\n } else if ('name' in tab && tab.name) {\n // Named tab\n const namedTabProps = {\n ...props,\n comparison: comparisonValue?.[tab.name],\n version: versionValue?.[tab.name],\n }\n return <Tab fieldTab={fieldTab} key={i} {...namedTabProps} tab={tab} />\n } else {\n // Unnamed tab\n return <Tab fieldTab={fieldTab} key={i} {...props} tab={tab} />\n }\n })()}\n </div>\n )\n })}\n </div>\n )\n}\n\ntype TabProps = {\n fieldTab: ClientTab\n tab: VersionTab\n} & FieldDiffClientProps<TabsFieldClient>\n\nconst Tab: React.FC<TabProps> = ({\n comparisonValue,\n fieldTab,\n locale,\n parentIsLocalized,\n tab,\n versionValue,\n}) => {\n const { i18n } = useTranslation()\n const { selectedLocales } = useSelectedLocales()\n\n if (!tab.fields?.length) {\n return null\n }\n\n return (\n <DiffCollapser\n comparison={comparisonValue}\n fields={fieldTab.fields}\n label={\n 'label' in tab &&\n tab.label &&\n typeof tab.label !== 'function' && (\n <span>\n {locale && <span className={`${baseClass}__locale-label`}>{locale}</span>}\n {getTranslation(tab.label, i18n)}\n </span>\n )\n }\n locales={selectedLocales}\n parentIsLocalized={parentIsLocalized || fieldTab.localized}\n version={versionValue}\n >\n <RenderVersionFieldsToDiff versionFields={tab.fields} />\n </DiffCollapser>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -4,20 +4,22 @@ type Args = {
4
4
  config: ClientConfig;
5
5
  fields: ClientField[];
6
6
  locales: string[] | undefined;
7
+ parentIsLocalized: boolean;
7
8
  version: unknown;
8
9
  };
9
10
  /**
10
11
  * Recursively counts the number of changed fields between comparison and
11
12
  * version data for a given set of fields.
12
13
  */
13
- export declare function countChangedFields({ comparison, config, fields, locales, version }: Args): number;
14
+ export declare function countChangedFields({ comparison, config, fields, locales, parentIsLocalized, version, }: Args): number;
14
15
  type countChangedFieldsInRowsArgs = {
15
16
  comparisonRows: unknown[];
16
17
  config: ClientConfig;
17
18
  field: ArrayFieldClient | BlocksFieldClient;
18
19
  locales: string[] | undefined;
20
+ parentIsLocalized: boolean;
19
21
  versionRows: unknown[];
20
22
  };
21
- export declare function countChangedFieldsInRows({ comparisonRows, config, field, locales, versionRows, }: countChangedFieldsInRowsArgs): number;
23
+ export declare function countChangedFieldsInRows({ comparisonRows, config, field, locales, parentIsLocalized, versionRows, }: countChangedFieldsInRowsArgs): number;
22
24
  export {};
23
25
  //# sourceMappingURL=countChangedFields.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"countChangedFields.d.ts","sourceRoot":"","sources":["../../../../../src/views/Version/RenderFieldsToDiff/utilities/countChangedFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAK7F,KAAK,IAAI,GAAG;IACV,UAAU,EAAE,OAAO,CAAA;IACnB,MAAM,EAAE,YAAY,CAAA;IACpB,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;IAC7B,OAAO,EAAE,OAAO,CAAA;CACjB,CAAA;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,UA0JxF;AAED,KAAK,4BAA4B,GAAG;IAClC,cAAc,EAAE,OAAO,EAAE,CAAA;IACzB,MAAM,EAAE,YAAY,CAAA;IACpB,KAAK,EAAE,gBAAgB,GAAG,iBAAiB,CAAA;IAC3C,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;IAC7B,WAAW,EAAE,OAAO,EAAE,CAAA;CACvB,CAAA;AAED,wBAAgB,wBAAwB,CAAC,EACvC,cAAmB,EACnB,MAAM,EACN,KAAK,EACL,OAAO,EACP,WAAgB,GACjB,EAAE,4BAA4B,UA4B9B"}
1
+ {"version":3,"file":"countChangedFields.d.ts","sourceRoot":"","sources":["../../../../../src/views/Version/RenderFieldsToDiff/utilities/countChangedFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAO7F,KAAK,IAAI,GAAG;IACV,UAAU,EAAE,OAAO,CAAA;IACnB,MAAM,EAAE,YAAY,CAAA;IACpB,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;IAC7B,iBAAiB,EAAE,OAAO,CAAA;IAC1B,OAAO,EAAE,OAAO,CAAA;CACjB,CAAA;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,UAAU,EACV,MAAM,EACN,MAAM,EACN,OAAO,EACP,iBAAiB,EACjB,OAAO,GACR,EAAE,IAAI,UAwKN;AAED,KAAK,4BAA4B,GAAG;IAClC,cAAc,EAAE,OAAO,EAAE,CAAA;IACzB,MAAM,EAAE,YAAY,CAAA;IACpB,KAAK,EAAE,gBAAgB,GAAG,iBAAiB,CAAA;IAC3C,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;IAC7B,iBAAiB,EAAE,OAAO,CAAA;IAC1B,WAAW,EAAE,OAAO,EAAE,CAAA;CACvB,CAAA;AAED,wBAAgB,wBAAwB,CAAC,EACvC,cAAmB,EACnB,MAAM,EACN,KAAK,EACL,OAAO,EACP,iBAAiB,EACjB,WAAgB,GACjB,EAAE,4BAA4B,UA6B9B"}
@@ -1,3 +1,4 @@
1
+ import { fieldShouldBeLocalized } from 'payload/shared';
1
2
  import { fieldHasChanges } from './fieldHasChanges.js';
2
3
  import { getFieldsForRowComparison } from './getFieldsForRowComparison.js';
3
4
  /**
@@ -9,6 +10,7 @@ export function countChangedFields({
9
10
  config,
10
11
  fields,
11
12
  locales,
13
+ parentIsLocalized,
12
14
  version
13
15
  }) {
14
16
  let count = 0;
@@ -24,7 +26,10 @@ export function countChangedFields({
24
26
  case 'array':
25
27
  case 'blocks':
26
28
  {
27
- if (locales && field.localized) {
29
+ if (locales && fieldShouldBeLocalized({
30
+ field,
31
+ parentIsLocalized
32
+ })) {
28
33
  locales.forEach(locale => {
29
34
  const comparisonRows = comparison?.[field.name]?.[locale] ?? [];
30
35
  const versionRows = version?.[field.name]?.[locale] ?? [];
@@ -33,6 +38,7 @@ export function countChangedFields({
33
38
  config,
34
39
  field,
35
40
  locales,
41
+ parentIsLocalized: parentIsLocalized || field.localized,
36
42
  versionRows
37
43
  });
38
44
  });
@@ -44,6 +50,7 @@ export function countChangedFields({
44
50
  config,
45
51
  field,
46
52
  locales,
53
+ parentIsLocalized: parentIsLocalized || field.localized,
47
54
  versionRows
48
55
  });
49
56
  }
@@ -67,7 +74,10 @@ export function countChangedFields({
67
74
  case 'upload':
68
75
  {
69
76
  // Fields that have a name and contain data. We can just check if the data has changed.
70
- if (locales && field.localized) {
77
+ if (locales && fieldShouldBeLocalized({
78
+ field,
79
+ parentIsLocalized
80
+ })) {
71
81
  locales.forEach(locale => {
72
82
  if (fieldHasChanges(version?.[field.name]?.[locale], comparison?.[field.name]?.[locale])) {
73
83
  count++;
@@ -87,6 +97,7 @@ export function countChangedFields({
87
97
  config,
88
98
  fields: field.fields,
89
99
  locales,
100
+ parentIsLocalized: parentIsLocalized || field.localized,
90
101
  version
91
102
  });
92
103
  break;
@@ -94,13 +105,17 @@ export function countChangedFields({
94
105
  // Fields that have nested fields and nest their fields' data.
95
106
  case 'group':
96
107
  {
97
- if (locales && field.localized) {
108
+ if (locales && fieldShouldBeLocalized({
109
+ field,
110
+ parentIsLocalized
111
+ })) {
98
112
  locales.forEach(locale => {
99
113
  count += countChangedFields({
100
114
  comparison: comparison?.[field.name]?.[locale],
101
115
  config,
102
116
  fields: field.fields,
103
117
  locales,
118
+ parentIsLocalized: parentIsLocalized || field.localized,
104
119
  version: version?.[field.name]?.[locale]
105
120
  });
106
121
  });
@@ -110,6 +125,7 @@ export function countChangedFields({
110
125
  config,
111
126
  fields: field.fields,
112
127
  locales,
128
+ parentIsLocalized: parentIsLocalized || field.localized,
113
129
  version: version?.[field.name]
114
130
  });
115
131
  }
@@ -128,6 +144,7 @@ export function countChangedFields({
128
144
  config,
129
145
  fields: tab.fields,
130
146
  locales,
147
+ parentIsLocalized: parentIsLocalized || tab.localized,
131
148
  version: version?.[tab.name]?.[locale]
132
149
  });
133
150
  });
@@ -138,6 +155,7 @@ export function countChangedFields({
138
155
  config,
139
156
  fields: tab.fields,
140
157
  locales,
158
+ parentIsLocalized: parentIsLocalized || tab.localized,
141
159
  version: version?.[tab.name]
142
160
  });
143
161
  } else {
@@ -147,6 +165,7 @@ export function countChangedFields({
147
165
  config,
148
166
  fields: tab.fields,
149
167
  locales,
168
+ parentIsLocalized: parentIsLocalized || tab.localized,
150
169
  version
151
170
  });
152
171
  }
@@ -173,6 +192,7 @@ export function countChangedFieldsInRows({
173
192
  config,
174
193
  field,
175
194
  locales,
195
+ parentIsLocalized,
176
196
  versionRows = []
177
197
  }) {
178
198
  let count = 0;
@@ -200,6 +220,7 @@ export function countChangedFieldsInRows({
200
220
  config,
201
221
  fields: rowFields,
202
222
  locales,
223
+ parentIsLocalized: parentIsLocalized || field.localized,
203
224
  version: versionRow
204
225
  });
205
226
  i++;
@@ -1 +1 @@
1
- {"version":3,"file":"countChangedFields.js","names":["fieldHasChanges","getFieldsForRowComparison","countChangedFields","comparison","config","fields","locales","version","count","forEach","field","name","fieldType","type","localized","locale","comparisonRows","versionRows","countChangedFieldsInRows","tabs","tab","_exhaustiveCheck","Error","String","i","comparisonRow","versionRow","rowFields","baseVersionField","path","schemaPath","row"],"sources":["../../../../../src/views/Version/RenderFieldsToDiff/utilities/countChangedFields.ts"],"sourcesContent":["import type { ArrayFieldClient, BlocksFieldClient, ClientConfig, ClientField } from 'payload'\n\nimport { fieldHasChanges } from './fieldHasChanges.js'\nimport { getFieldsForRowComparison } from './getFieldsForRowComparison.js'\n\ntype Args = {\n comparison: unknown\n config: ClientConfig\n fields: ClientField[]\n locales: string[] | undefined\n version: unknown\n}\n\n/**\n * Recursively counts the number of changed fields between comparison and\n * version data for a given set of fields.\n */\nexport function countChangedFields({ comparison, config, fields, locales, version }: Args) {\n let count = 0\n\n fields.forEach((field) => {\n // Don't count the id field since it is not displayed in the UI\n if ('name' in field && field.name === 'id') {\n return\n }\n const fieldType = field.type\n switch (fieldType) {\n // Iterable fields are arrays and blocks fields. We iterate over each row and\n // count the number of changed fields in each.\n case 'array':\n case 'blocks': {\n if (locales && field.localized) {\n locales.forEach((locale) => {\n const comparisonRows = comparison?.[field.name]?.[locale] ?? []\n const versionRows = version?.[field.name]?.[locale] ?? []\n count += countChangedFieldsInRows({\n comparisonRows,\n config,\n field,\n locales,\n versionRows,\n })\n })\n } else {\n const comparisonRows = comparison?.[field.name] ?? []\n const versionRows = version?.[field.name] ?? []\n count += countChangedFieldsInRows({ comparisonRows, config, field, locales, versionRows })\n }\n break\n }\n\n // Regular fields without nested fields.\n case 'checkbox':\n case 'code':\n case 'date':\n case 'email':\n case 'join':\n case 'json':\n case 'number':\n case 'point':\n case 'radio':\n case 'relationship':\n case 'richText':\n case 'select':\n case 'text':\n case 'textarea':\n case 'upload': {\n // Fields that have a name and contain data. We can just check if the data has changed.\n if (locales && field.localized) {\n locales.forEach((locale) => {\n if (\n fieldHasChanges(version?.[field.name]?.[locale], comparison?.[field.name]?.[locale])\n ) {\n count++\n }\n })\n } else if (fieldHasChanges(version?.[field.name], comparison?.[field.name])) {\n count++\n }\n break\n }\n // Fields that have nested fields, but don't nest their fields' data.\n case 'collapsible':\n case 'row': {\n count += countChangedFields({\n comparison,\n config,\n fields: field.fields,\n locales,\n version,\n })\n\n break\n }\n\n // Fields that have nested fields and nest their fields' data.\n case 'group': {\n if (locales && field.localized) {\n locales.forEach((locale) => {\n count += countChangedFields({\n comparison: comparison?.[field.name]?.[locale],\n config,\n fields: field.fields,\n locales,\n version: version?.[field.name]?.[locale],\n })\n })\n } else {\n count += countChangedFields({\n comparison: comparison?.[field.name],\n config,\n fields: field.fields,\n locales,\n version: version?.[field.name],\n })\n }\n break\n }\n\n // Each tab in a tabs field has nested fields. The fields data may be\n // nested or not depending on the existence of a name property.\n case 'tabs': {\n field.tabs.forEach((tab) => {\n if ('name' in tab && locales && tab.localized) {\n // Named localized tab\n locales.forEach((locale) => {\n count += countChangedFields({\n comparison: comparison?.[tab.name]?.[locale],\n config,\n fields: tab.fields,\n locales,\n version: version?.[tab.name]?.[locale],\n })\n })\n } else if ('name' in tab) {\n // Named tab\n count += countChangedFields({\n comparison: comparison?.[tab.name],\n config,\n fields: tab.fields,\n locales,\n version: version?.[tab.name],\n })\n } else {\n // Unnamed tab\n count += countChangedFields({\n comparison,\n config,\n fields: tab.fields,\n locales,\n version,\n })\n }\n })\n break\n }\n\n // UI fields don't have data and are not displayed in the version view\n // so we can ignore them.\n case 'ui': {\n break\n }\n\n default: {\n const _exhaustiveCheck: never = fieldType\n throw new Error(`Unexpected field.type in countChangedFields : ${String(fieldType)}`)\n }\n }\n })\n\n return count\n}\n\ntype countChangedFieldsInRowsArgs = {\n comparisonRows: unknown[]\n config: ClientConfig\n field: ArrayFieldClient | BlocksFieldClient\n locales: string[] | undefined\n versionRows: unknown[]\n}\n\nexport function countChangedFieldsInRows({\n comparisonRows = [],\n config,\n field,\n locales,\n versionRows = [],\n}: countChangedFieldsInRowsArgs) {\n let count = 0\n let i = 0\n\n while (comparisonRows[i] || versionRows[i]) {\n const comparisonRow = comparisonRows?.[i] || {}\n const versionRow = versionRows?.[i] || {}\n\n const { fields: rowFields } = getFieldsForRowComparison({\n baseVersionField: { type: 'text', fields: [], path: '', schemaPath: '' }, // Doesn't matter, as we don't need the versionFields output here\n comparisonRow,\n config,\n field,\n row: i,\n versionRow,\n })\n\n count += countChangedFields({\n comparison: comparisonRow,\n config,\n fields: rowFields,\n locales,\n version: versionRow,\n })\n\n i++\n }\n return count\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"countChangedFields.js","names":["fieldShouldBeLocalized","fieldHasChanges","getFieldsForRowComparison","countChangedFields","comparison","config","fields","locales","parentIsLocalized","version","count","forEach","field","name","fieldType","type","locale","comparisonRows","versionRows","countChangedFieldsInRows","localized","tabs","tab","_exhaustiveCheck","Error","String","i","comparisonRow","versionRow","rowFields","baseVersionField","path","schemaPath","row"],"sources":["../../../../../src/views/Version/RenderFieldsToDiff/utilities/countChangedFields.ts"],"sourcesContent":["import type { ArrayFieldClient, BlocksFieldClient, ClientConfig, ClientField } from 'payload'\n\nimport { fieldShouldBeLocalized } from 'payload/shared'\n\nimport { fieldHasChanges } from './fieldHasChanges.js'\nimport { getFieldsForRowComparison } from './getFieldsForRowComparison.js'\n\ntype Args = {\n comparison: unknown\n config: ClientConfig\n fields: ClientField[]\n locales: string[] | undefined\n parentIsLocalized: boolean\n version: unknown\n}\n\n/**\n * Recursively counts the number of changed fields between comparison and\n * version data for a given set of fields.\n */\nexport function countChangedFields({\n comparison,\n config,\n fields,\n locales,\n parentIsLocalized,\n version,\n}: Args) {\n let count = 0\n\n fields.forEach((field) => {\n // Don't count the id field since it is not displayed in the UI\n if ('name' in field && field.name === 'id') {\n return\n }\n const fieldType = field.type\n switch (fieldType) {\n // Iterable fields are arrays and blocks fields. We iterate over each row and\n // count the number of changed fields in each.\n case 'array':\n case 'blocks': {\n if (locales && fieldShouldBeLocalized({ field, parentIsLocalized })) {\n locales.forEach((locale) => {\n const comparisonRows = comparison?.[field.name]?.[locale] ?? []\n const versionRows = version?.[field.name]?.[locale] ?? []\n count += countChangedFieldsInRows({\n comparisonRows,\n config,\n field,\n locales,\n parentIsLocalized: parentIsLocalized || field.localized,\n versionRows,\n })\n })\n } else {\n const comparisonRows = comparison?.[field.name] ?? []\n const versionRows = version?.[field.name] ?? []\n count += countChangedFieldsInRows({\n comparisonRows,\n config,\n field,\n locales,\n parentIsLocalized: parentIsLocalized || field.localized,\n versionRows,\n })\n }\n break\n }\n\n // Regular fields without nested fields.\n case 'checkbox':\n case 'code':\n case 'date':\n case 'email':\n case 'join':\n case 'json':\n case 'number':\n case 'point':\n case 'radio':\n case 'relationship':\n case 'richText':\n case 'select':\n case 'text':\n case 'textarea':\n case 'upload': {\n // Fields that have a name and contain data. We can just check if the data has changed.\n if (locales && fieldShouldBeLocalized({ field, parentIsLocalized })) {\n locales.forEach((locale) => {\n if (\n fieldHasChanges(version?.[field.name]?.[locale], comparison?.[field.name]?.[locale])\n ) {\n count++\n }\n })\n } else if (fieldHasChanges(version?.[field.name], comparison?.[field.name])) {\n count++\n }\n break\n }\n // Fields that have nested fields, but don't nest their fields' data.\n case 'collapsible':\n case 'row': {\n count += countChangedFields({\n comparison,\n config,\n fields: field.fields,\n locales,\n parentIsLocalized: parentIsLocalized || field.localized,\n version,\n })\n\n break\n }\n\n // Fields that have nested fields and nest their fields' data.\n case 'group': {\n if (locales && fieldShouldBeLocalized({ field, parentIsLocalized })) {\n locales.forEach((locale) => {\n count += countChangedFields({\n comparison: comparison?.[field.name]?.[locale],\n config,\n fields: field.fields,\n locales,\n parentIsLocalized: parentIsLocalized || field.localized,\n version: version?.[field.name]?.[locale],\n })\n })\n } else {\n count += countChangedFields({\n comparison: comparison?.[field.name],\n config,\n fields: field.fields,\n locales,\n parentIsLocalized: parentIsLocalized || field.localized,\n version: version?.[field.name],\n })\n }\n break\n }\n\n // Each tab in a tabs field has nested fields. The fields data may be\n // nested or not depending on the existence of a name property.\n case 'tabs': {\n field.tabs.forEach((tab) => {\n if ('name' in tab && locales && tab.localized) {\n // Named localized tab\n locales.forEach((locale) => {\n count += countChangedFields({\n comparison: comparison?.[tab.name]?.[locale],\n config,\n fields: tab.fields,\n locales,\n parentIsLocalized: parentIsLocalized || tab.localized,\n version: version?.[tab.name]?.[locale],\n })\n })\n } else if ('name' in tab) {\n // Named tab\n count += countChangedFields({\n comparison: comparison?.[tab.name],\n config,\n fields: tab.fields,\n locales,\n parentIsLocalized: parentIsLocalized || tab.localized,\n version: version?.[tab.name],\n })\n } else {\n // Unnamed tab\n count += countChangedFields({\n comparison,\n config,\n fields: tab.fields,\n locales,\n parentIsLocalized: parentIsLocalized || tab.localized,\n version,\n })\n }\n })\n break\n }\n\n // UI fields don't have data and are not displayed in the version view\n // so we can ignore them.\n case 'ui': {\n break\n }\n\n default: {\n const _exhaustiveCheck: never = fieldType\n throw new Error(`Unexpected field.type in countChangedFields : ${String(fieldType)}`)\n }\n }\n })\n\n return count\n}\n\ntype countChangedFieldsInRowsArgs = {\n comparisonRows: unknown[]\n config: ClientConfig\n field: ArrayFieldClient | BlocksFieldClient\n locales: string[] | undefined\n parentIsLocalized: boolean\n versionRows: unknown[]\n}\n\nexport function countChangedFieldsInRows({\n comparisonRows = [],\n config,\n field,\n locales,\n parentIsLocalized,\n versionRows = [],\n}: countChangedFieldsInRowsArgs) {\n let count = 0\n let i = 0\n\n while (comparisonRows[i] || versionRows[i]) {\n const comparisonRow = comparisonRows?.[i] || {}\n const versionRow = versionRows?.[i] || {}\n\n const { fields: rowFields } = getFieldsForRowComparison({\n baseVersionField: { type: 'text', fields: [], path: '', schemaPath: '' }, // Doesn't matter, as we don't need the versionFields output here\n comparisonRow,\n config,\n field,\n row: i,\n versionRow,\n })\n\n count += countChangedFields({\n comparison: comparisonRow,\n config,\n fields: rowFields,\n locales,\n parentIsLocalized: parentIsLocalized || field.localized,\n version: versionRow,\n })\n\n i++\n }\n return count\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/views/Version/Restore/index.tsx"],"names":[],"mappings":"AAgBA,OAAO,KAA0C,MAAM,OAAO,CAAA;AAG9D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAEvC,OAAO,cAAc,CAAA;AAKrB,QAAA,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAqH5B,CAAA;AAED,eAAe,OAAO,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/views/Version/Restore/index.tsx"],"names":[],"mappings":"AAeA,OAAO,KAA0C,MAAM,OAAO,CAAA;AAE9D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAEvC,OAAO,cAAc,CAAA;AAKrB,QAAA,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAoG5B,CAAA;AAED,eAAe,OAAO,CAAA"}
@@ -2,11 +2,10 @@
2
2
 
3
3
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
4
  import { getTranslation } from '@payloadcms/translations';
5
- import { Button, Modal, PopupList, useConfig, useModal, useRouteTransition, useTranslation } from '@payloadcms/ui';
5
+ import { Button, ConfirmationModal, PopupList, toast, useConfig, useModal, useRouteTransition, useTranslation } from '@payloadcms/ui';
6
6
  import { formatAdminURL, requests } from '@payloadcms/ui/shared';
7
7
  import { useRouter } from 'next/navigation.js';
8
8
  import React, { Fragment, useCallback, useState } from 'react';
9
- import { toast } from 'sonner';
10
9
  const baseClass = 'restore-version';
11
10
  const modalSlug = 'restore-version';
12
11
  const Restore = ({
@@ -35,7 +34,6 @@ const Restore = ({
35
34
  const {
36
35
  toggleModal
37
36
  } = useModal();
38
- const [processing, setProcessing] = useState(false);
39
37
  const router = useRouter();
40
38
  const {
41
39
  i18n,
@@ -67,7 +65,6 @@ const Restore = ({
67
65
  });
68
66
  }
69
67
  const handleRestore = useCallback(async () => {
70
- setProcessing(true);
71
68
  const res = await requests.post(fetchURL, {
72
69
  headers: {
73
70
  'Accept-Language': i18n.language
@@ -76,7 +73,7 @@ const Restore = ({
76
73
  if (res.status === 200) {
77
74
  const json = await res.json();
78
75
  toast.success(json.message);
79
- startRouteTransition(() => router.push(redirectURL));
76
+ return startRouteTransition(() => router.push(redirectURL));
80
77
  } else {
81
78
  toast.error(t('version:problemRestoringVersion'));
82
79
  }
@@ -97,32 +94,12 @@ const Restore = ({
97
94
  }) : null,
98
95
  children: t('version:restoreThisVersion')
99
96
  })
100
- }), /*#__PURE__*/_jsx(Modal, {
101
- className: `${baseClass}__modal`,
102
- slug: modalSlug,
103
- children: /*#__PURE__*/_jsxs("div", {
104
- className: `${baseClass}__wrapper`,
105
- children: [/*#__PURE__*/_jsxs("div", {
106
- className: `${baseClass}__content`,
107
- children: [/*#__PURE__*/_jsx("h1", {
108
- children: t('version:confirmVersionRestoration')
109
- }), /*#__PURE__*/_jsx("p", {
110
- children: restoreMessage
111
- })]
112
- }), /*#__PURE__*/_jsxs("div", {
113
- className: `${baseClass}__controls`,
114
- children: [/*#__PURE__*/_jsx(Button, {
115
- buttonStyle: "secondary",
116
- onClick: processing ? undefined : () => toggleModal(modalSlug),
117
- size: "large",
118
- type: "button",
119
- children: t('general:cancel')
120
- }), /*#__PURE__*/_jsx(Button, {
121
- onClick: processing ? undefined : () => void handleRestore(),
122
- children: processing ? t('version:restoring') : t('general:confirm')
123
- })]
124
- })]
125
- })
97
+ }), /*#__PURE__*/_jsx(ConfirmationModal, {
98
+ body: restoreMessage,
99
+ confirmingLabel: t('version:restoring'),
100
+ heading: t('version:confirmVersionRestoration'),
101
+ modalSlug: modalSlug,
102
+ onConfirm: handleRestore
126
103
  })]
127
104
  });
128
105
  };