@strapi/admin 4.1.6-alpha.1 → 4.1.8
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/admin/src/assets/images/icon_offline-cloud.svg +5 -0
- package/admin/src/content-manager/components/CollectionTypeFormWrapper/index.js +17 -3
- package/admin/src/content-manager/components/DynamicTable/CellContent/utils/hasContent.js +37 -2
- package/admin/src/content-manager/components/EditViewDataManagerProvider/index.js +37 -37
- package/admin/src/content-manager/components/EditViewDataManagerProvider/utils/getAPIInnerError.js +18 -0
- package/admin/src/content-manager/components/EditViewDataManagerProvider/utils/handleAPIError.js +15 -0
- package/admin/src/content-manager/components/EditViewDataManagerProvider/utils/index.js +0 -1
- package/admin/src/content-manager/components/EditViewDataManagerProvider/utils/schema.js +9 -7
- package/admin/src/content-manager/components/FieldComponent/index.js +0 -1
- package/admin/src/content-manager/components/InputUID/index.js +1 -5
- package/admin/src/content-manager/components/Inputs/index.js +4 -6
- package/admin/src/content-manager/components/RepeatableComponent/index.js +3 -18
- package/admin/src/content-manager/components/RepeatableComponent/utils/getComponentErrorKeys.js +10 -0
- package/admin/src/content-manager/components/SingleTypeFormWrapper/index.js +15 -3
- package/admin/src/content-manager/components/Wysiwyg/index.js +3 -4
- package/admin/src/content-manager/pages/EditSettingsView/components/ModalForm.js +6 -1
- package/admin/src/content-manager/pages/EditSettingsView/index.js +1 -1
- package/admin/src/content-manager/pages/EditSettingsView/utils/layout.js +7 -1
- package/admin/src/content-manager/pages/EditView/DeleteLink/index.js +1 -4
- package/admin/src/content-manager/pages/EditView/DraftAndPublishBadge/index.js +1 -4
- package/admin/src/content-manager/pages/ListView/selectors.js +3 -6
- package/admin/src/content-manager/testUtils/data.js +5 -1
- package/admin/src/content-manager/utils/isFieldTypeNumber.js +3 -0
- package/admin/src/hooks/useNavigatorOnLine/index.js +31 -0
- package/admin/src/pages/MarketplacePage/components/MissingPluginBanner/index.js +40 -0
- package/admin/src/pages/MarketplacePage/components/PageHeader/index.js +46 -0
- package/admin/src/pages/MarketplacePage/index.js +48 -26
- package/admin/src/translations/de.json +244 -23
- package/admin/src/translations/en.json +6 -0
- package/build/1856.e2bce2e8.chunk.js +171 -0
- package/build/2481.5fe150c7.chunk.js +184 -0
- package/build/2758.19d211ea.chunk.js +161 -0
- package/build/2912.5a7b0406.chunk.js +252 -0
- package/build/372.f3b7829c.chunk.js +896 -0
- package/build/4715.7f616cf6.chunk.js +387 -0
- package/build/4800.d3ebc81d.chunk.js +1 -0
- package/build/497.2ba35e90.chunk.js +284 -0
- package/build/4982.91235074.chunk.js +310 -0
- package/build/5289.ef1a4517.chunk.js +349 -0
- package/build/6404.25d0f0d8.chunk.js +508 -0
- package/build/6706.b0b5124d.chunk.js +113 -0
- package/build/6925.fafef528.chunk.js +761 -0
- package/build/7589.f3b26345.chunk.js +194 -0
- package/build/7841.0d73dde1.chunk.js +252 -0
- package/build/8469.3af1823d.chunk.js +1 -0
- package/build/9115.318a6841.chunk.js +1 -0
- package/build/9298.22f09063.chunk.js +345 -0
- package/build/948.d64fb515.chunk.js +2 -0
- package/build/9853.b7d6aba5.chunk.js +354 -0
- package/build/Admin-authenticatedApp.f7b81029.chunk.js +80 -0
- package/build/Admin_homePage.50b6c129.chunk.js +71 -0
- package/build/Admin_marketplace.514ace37.chunk.js +11 -0
- package/build/Admin_pluginsPage.e895d79f.chunk.js +1 -0
- package/build/Admin_profilePage.33cfed9b.chunk.js +15 -0
- package/build/Admin_settingsPage.f83a7c21.chunk.js +172 -0
- package/build/a6b842e0b6d2b61135d1.svg +5 -0
- package/build/admin-edit-roles-page.06f3d288.chunk.js +1 -0
- package/build/admin-edit-users.6a325cca.chunk.js +11 -0
- package/build/admin-users.b89adf82.chunk.js +12 -0
- package/build/api-tokens-create-page.635e20c8.chunk.js +1 -0
- package/build/api-tokens-edit-page.db07253e.chunk.js +1 -0
- package/build/api-tokens-list-page.346c2149.chunk.js +15 -0
- package/build/ar-json.d4cb26d9.chunk.js +1 -0
- package/build/codemirror-addon-closebrackets.c0f97916.chunk.js +2 -0
- package/build/codemirror-addon-lint-js.7c35dcb0.chunk.js +1 -0
- package/build/codemirror-addon-lint.505ff1d4.chunk.js +1 -0
- package/build/codemirror-addon-mark-selection.653e904d.chunk.js +1 -0
- package/build/codemirror-css.98490df3.chunk.js +346 -0
- package/build/codemirror-javacript.cafbda9c.chunk.js +1 -0
- package/build/codemirror-theme.b3c64617.chunk.js +34 -0
- package/build/content-manager.78e3f35c.chunk.js +1204 -0
- package/build/content-type-builder-translation-ar-json.142327af.chunk.js +1 -0
- package/build/content-type-builder-translation-cs-json.4aafb972.chunk.js +1 -0
- package/build/content-type-builder-translation-de-json.0d7696b9.chunk.js +1 -0
- package/build/{content-type-builder-translation-dk-json.52805572.chunk.js → content-type-builder-translation-dk-json.4729f055.chunk.js} +1 -1
- package/build/content-type-builder-translation-en-json.e5110288.chunk.js +1 -0
- package/build/{content-type-builder-translation-es-json.5a362abf.chunk.js → content-type-builder-translation-es-json.333cf47f.chunk.js} +1 -1
- package/build/content-type-builder-translation-fr-json.aa6eeea8.chunk.js +1 -0
- package/build/{content-type-builder-translation-id-json.4a21dfab.chunk.js → content-type-builder-translation-id-json.7c00a32a.chunk.js} +1 -1
- package/build/content-type-builder-translation-it-json.a906b389.chunk.js +1 -0
- package/build/content-type-builder-translation-ja-json.87f71930.chunk.js +1 -0
- package/build/content-type-builder-translation-ko-json.51201b12.chunk.js +1 -0
- package/build/{content-type-builder-translation-ms-json.3755f8c8.chunk.js → content-type-builder-translation-ms-json.963a1a01.chunk.js} +1 -1
- package/build/{content-type-builder-translation-nl-json.6f8d924b.chunk.js → content-type-builder-translation-nl-json.c46c8f30.chunk.js} +1 -1
- package/build/{content-type-builder-translation-pl-json.fc0b0c20.chunk.js → content-type-builder-translation-pl-json.a866acda.chunk.js} +1 -1
- package/build/content-type-builder-translation-pt-BR-json.5739a2aa.chunk.js +1 -0
- package/build/content-type-builder-translation-pt-json.766bd747.chunk.js +1 -0
- package/build/content-type-builder-translation-ru-json.cf8d7c5c.chunk.js +1 -0
- package/build/content-type-builder-translation-sk-json.3a6defe0.chunk.js +1 -0
- package/build/content-type-builder-translation-th-json.c96a2d3f.chunk.js +1 -0
- package/build/content-type-builder-translation-tr-json.2e52bc60.chunk.js +1 -0
- package/build/content-type-builder-translation-uk-json.d8c0b6dd.chunk.js +1 -0
- package/build/content-type-builder-translation-zh-Hans-json.92a27f59.chunk.js +1 -0
- package/build/content-type-builder-translation-zh-json.2cc55621.chunk.js +1 -0
- package/build/content-type-builder.0d8729ad.chunk.js +141 -0
- package/build/cropper-css.0055cd53.chunk.js +306 -0
- package/build/cs-json.c8f28ba8.chunk.js +1 -0
- package/build/de-json.0b92acd2.chunk.js +1 -0
- package/build/{dk-json.fb9ee45a.chunk.js → dk-json.9f1bc016.chunk.js} +1 -1
- package/build/email-settings-page.c520fd0d.chunk.js +103 -0
- package/build/{email-translation-de-json.559a7d5f.chunk.js → email-translation-ar-json.c624512d.chunk.js} +1 -1
- package/build/{email-translation-ar-json.95d90eb4.chunk.js → email-translation-cs-json.cb18caab.chunk.js} +1 -1
- package/build/{email-translation-it-json.3de61cb6.chunk.js → email-translation-de-json.54743260.chunk.js} +1 -1
- package/build/{email-translation-dk-json.f8a595bf.chunk.js → email-translation-dk-json.f323fe4e.chunk.js} +1 -1
- package/build/{email-translation-en-json.fa0dc92b.chunk.js → email-translation-en-json.6da7e388.chunk.js} +1 -1
- package/build/{email-translation-es-json.eb303dea.chunk.js → email-translation-es-json.9021417d.chunk.js} +1 -1
- package/build/{email-translation-fr-json.49c3c888.chunk.js → email-translation-fr-json.9f125db0.chunk.js} +1 -1
- package/build/email-translation-id-json.3bcae5f5.chunk.js +1 -0
- package/build/{email-translation-cs-json.dfd1f3f2.chunk.js → email-translation-it-json.6ffd1774.chunk.js} +1 -1
- package/build/email-translation-ja-json.72b3f73c.chunk.js +1 -0
- package/build/email-translation-ko-json.e61d4e7a.chunk.js +1 -0
- package/build/email-translation-ms-json.b2b11e05.chunk.js +1 -0
- package/build/email-translation-nl-json.5349635f.chunk.js +1 -0
- package/build/email-translation-pl-json.6da50d0f.chunk.js +1 -0
- package/build/email-translation-pt-BR-json.2c98ab20.chunk.js +1 -0
- package/build/email-translation-pt-json.959ea070.chunk.js +1 -0
- package/build/email-translation-ru-json.d508cf3e.chunk.js +1 -0
- package/build/email-translation-sk-json.fa1fd4b3.chunk.js +1 -0
- package/build/email-translation-th-json.989cfecc.chunk.js +1 -0
- package/build/email-translation-tr-json.87f2feb3.chunk.js +1 -0
- package/build/email-translation-uk-json.0396a803.chunk.js +1 -0
- package/build/email-translation-vi-json.c0d8c414.chunk.js +1 -0
- package/build/email-translation-zh-Hans-json.b463cb25.chunk.js +1 -0
- package/build/email-translation-zh-json.3455468b.chunk.js +1 -0
- package/build/en-json.3e1a222e.chunk.js +1 -0
- package/build/{es-json.8f4d89e2.chunk.js → es-json.2a5a9fc1.chunk.js} +1 -1
- package/build/fontawesome-css-all.b88d464e.chunk.js +4618 -0
- package/build/fontawesome-css.59dc4459.chunk.js +6 -0
- package/build/fontawesome-js.252cc5f3.chunk.js +7 -0
- package/build/fr-json.84064a0b.chunk.js +1 -0
- package/build/he-json.d40da459.chunk.js +1 -0
- package/build/highlight.js.9d8ef460.chunk.js +86 -0
- package/build/hu-json.c81ce352.chunk.js +1 -0
- package/build/i18n-settings-page.24c106d4.chunk.js +101 -0
- package/build/{i18n-translation-de-json.96ae1f68.chunk.js → i18n-translation-de-json.92534555.chunk.js} +1 -1
- package/build/{i18n-translation-dk-json.ecf02d28.chunk.js → i18n-translation-dk-json.54f410ca.chunk.js} +1 -1
- package/build/{i18n-translation-en-json.4d823f62.chunk.js → i18n-translation-en-json.85bc892c.chunk.js} +1 -1
- package/build/i18n-translation-es-json.488206ae.chunk.js +1 -0
- package/build/i18n-translation-fr-json.0839d68d.chunk.js +1 -0
- package/build/i18n-translation-ko-json.d0bc1203.chunk.js +1 -0
- package/build/i18n-translation-zh-Hans-json.560a98e3.chunk.js +1 -0
- package/build/{id-json.fef679cb.chunk.js → id-json.fad45d17.chunk.js} +1 -1
- package/build/index.html +1 -1
- package/build/it-json.12df4cdf.chunk.js +1 -0
- package/build/ja-json.850237e9.chunk.js +1 -0
- package/build/ko-json.2f3d256e.chunk.js +1 -0
- package/build/main.3ca0e44c.js +7918 -0
- package/build/{ms-json.f46167ef.chunk.js → ms-json.836ed013.chunk.js} +1 -1
- package/build/nl-json.465b173f.chunk.js +1 -0
- package/build/{no-json.17ecda5d.chunk.js → no-json.e8749dd4.chunk.js} +1 -1
- package/build/{pl-json.0db77f2c.chunk.js → pl-json.94f05d2c.chunk.js} +1 -1
- package/build/{pt-BR-json.4c90cb2d.chunk.js → pt-BR-json.6301d49b.chunk.js} +1 -1
- package/build/pt-json.c23020ab.chunk.js +1 -0
- package/build/ru-json.4560906c.chunk.js +1 -0
- package/build/runtime~main.fcd5a5b5.js +2 -0
- package/build/sk-json.5b33afc2.chunk.js +1 -0
- package/build/sso-settings-page.0b4d2106.chunk.js +1 -0
- package/build/sv-json.cdcac02d.chunk.js +1 -0
- package/build/th-json.3aadaec6.chunk.js +1 -0
- package/build/tr-json.276e59fe.chunk.js +1 -0
- package/build/uk-json.5b5b9c27.chunk.js +1 -0
- package/build/upload-settings.4fcb502d.chunk.js +101 -0
- package/build/upload-translation-de-json.b642da08.chunk.js +1 -0
- package/build/{upload-translation-dk-json.b74134c8.chunk.js → upload-translation-dk-json.fc61df13.chunk.js} +1 -1
- package/build/{upload-translation-en-json.c4e56528.chunk.js → upload-translation-en-json.59269508.chunk.js} +1 -1
- package/build/{upload-translation-es-json.15a3015f.chunk.js → upload-translation-es-json.8ec935ef.chunk.js} +1 -1
- package/build/upload-translation-fr-json.eb9b4f84.chunk.js +1 -0
- package/build/upload-translation-he-json.c226f2dc.chunk.js +1 -0
- package/build/upload-translation-it-json.8e58456e.chunk.js +1 -0
- package/build/upload-translation-ja-json.1378a2e7.chunk.js +1 -0
- package/build/upload-translation-ko-json.5e06e112.chunk.js +1 -0
- package/build/{upload-translation-ms-json.30974c82.chunk.js → upload-translation-ms-json.dc3bf0d7.chunk.js} +1 -1
- package/build/{upload-translation-pl-json.3740abed.chunk.js → upload-translation-pl-json.6071e38c.chunk.js} +1 -1
- package/build/upload-translation-pt-BR-json.7e8d9550.chunk.js +1 -0
- package/build/upload-translation-ru-json.da2529f3.chunk.js +1 -0
- package/build/upload-translation-sk-json.bfdf4f09.chunk.js +1 -0
- package/build/upload-translation-th-json.6a48b826.chunk.js +1 -0
- package/build/upload-translation-uk-json.6fb09148.chunk.js +1 -0
- package/build/upload-translation-zh-Hans-json.c9622577.chunk.js +1 -0
- package/build/upload-translation-zh-json.711f804b.chunk.js +1 -0
- package/build/upload.0ca61128.chunk.js +105 -0
- package/build/users-advanced-settings-page.a8c38517.chunk.js +101 -0
- package/build/users-email-settings-page.8b561ea3.chunk.js +1 -0
- package/build/users-permissions-translation-ar-json.e8123ed2.chunk.js +1 -0
- package/build/users-permissions-translation-cs-json.e6649c5f.chunk.js +1 -0
- package/build/{users-permissions-translation-de-json.a5c8db9c.chunk.js → users-permissions-translation-de-json.c3628843.chunk.js} +1 -1
- package/build/{users-permissions-translation-dk-json.1fe5e07a.chunk.js → users-permissions-translation-dk-json.fe39c74b.chunk.js} +1 -1
- package/build/users-permissions-translation-en-json.3fe86528.chunk.js +1 -0
- package/build/{users-permissions-translation-es-json.05669296.chunk.js → users-permissions-translation-es-json.1bb9cde2.chunk.js} +1 -1
- package/build/users-permissions-translation-fr-json.172aa69f.chunk.js +1 -0
- package/build/{users-permissions-translation-id-json.186a3f65.chunk.js → users-permissions-translation-id-json.5aadd143.chunk.js} +1 -1
- package/build/users-permissions-translation-it-json.7d377480.chunk.js +1 -0
- package/build/users-permissions-translation-ja-json.4967badf.chunk.js +1 -0
- package/build/users-permissions-translation-ko-json.3be77775.chunk.js +1 -0
- package/build/{users-permissions-translation-ms-json.3a128ff4.chunk.js → users-permissions-translation-ms-json.ea8a2baf.chunk.js} +1 -1
- package/build/{users-permissions-translation-nl-json.4146aed1.chunk.js → users-permissions-translation-nl-json.d638c4ce.chunk.js} +1 -1
- package/build/{users-permissions-translation-pl-json.a61de7ed.chunk.js → users-permissions-translation-pl-json.3c4fe81c.chunk.js} +1 -1
- package/build/users-permissions-translation-pt-BR-json.f6791a86.chunk.js +1 -0
- package/build/users-permissions-translation-pt-json.38afed04.chunk.js +1 -0
- package/build/users-permissions-translation-ru-json.319d51ef.chunk.js +1 -0
- package/build/users-permissions-translation-sk-json.ba1cd385.chunk.js +1 -0
- package/build/users-permissions-translation-sv-json.83c60841.chunk.js +1 -0
- package/build/users-permissions-translation-th-json.68873214.chunk.js +1 -0
- package/build/users-permissions-translation-tr-json.cdc49a3c.chunk.js +1 -0
- package/build/users-permissions-translation-uk-json.63eaa01c.chunk.js +1 -0
- package/build/users-permissions-translation-vi-json.dccc02fc.chunk.js +1 -0
- package/build/users-permissions-translation-zh-Hans-json.c3fd301b.chunk.js +1 -0
- package/build/users-permissions-translation-zh-json.e03ae2a4.chunk.js +1 -0
- package/build/users-providers-settings-page.82141ace.chunk.js +1 -0
- package/build/users-roles-settings-page.97d7092d.chunk.js +30 -0
- package/build/vi-json.3d14e91e.chunk.js +1 -0
- package/build/webhook-edit-page.2e6727ab.chunk.js +23 -0
- package/build/webhook-list-page.d893312b.chunk.js +132 -0
- package/build/zh-Hans-json.c84ce330.chunk.js +1 -0
- package/build/zh-json.96bf6019.chunk.js +1 -0
- package/package.json +8 -12
- package/scripts/build.js +1 -1
- package/server/bootstrap.js +3 -1
- package/server/config/index.js +0 -1
- package/server/controllers/admin.js +7 -1
- package/server/services/api-token.js +15 -14
- package/server/services/token.js +13 -0
- package/server/validation/permission.js +5 -1
- package/webpack.config.js +77 -58
- package/admin/src/content-manager/components/EditViewDataManagerProvider/utils/getYupInnerErrors.js +0 -17
- package/build/1094.e1db3a1a.chunk.js +0 -1
- package/build/1454.f065d92a.chunk.js +0 -2
- package/build/1454.f065d92a.chunk.js.LICENSE.txt +0 -7
- package/build/1856.a30bd09b.chunk.js +0 -1
- package/build/2481.4eae9408.chunk.js +0 -1
- package/build/2912.c5f76e65.chunk.js +0 -1
- package/build/4362.d8299f0c.chunk.js +0 -1
- package/build/4715.8a2db02a.chunk.js +0 -1
- package/build/4800.f4a1384a.chunk.js +0 -1
- package/build/497.3fcf6196.chunk.js +0 -1
- package/build/4982.601f6196.chunk.js +0 -1
- package/build/6404.3c2d0a81.chunk.js +0 -1
- package/build/6925.bd694b04.chunk.js +0 -2
- package/build/6925.bd694b04.chunk.js.LICENSE.txt +0 -5
- package/build/7841.490dbbf1.chunk.js +0 -1
- package/build/8042.1d66811a.chunk.js +0 -2
- package/build/8042.1d66811a.chunk.js.LICENSE.txt +0 -4
- package/build/8469.8d819a3c.chunk.js +0 -1
- package/build/849.82c29ba7.chunk.js +0 -1
- package/build/9235.ced8aebf.chunk.js +0 -1
- package/build/9260.4233fae2.chunk.js +0 -2
- package/build/9260.4233fae2.chunk.js.LICENSE.txt +0 -15
- package/build/9853.6ff595fa.chunk.js +0 -1
- package/build/9988.fe838ba6.chunk.js +0 -2
- package/build/9988.fe838ba6.chunk.js.LICENSE.txt +0 -9
- package/build/Admin-authenticatedApp.cf7104f9.chunk.js +0 -1
- package/build/Admin_homePage.4a3aa22e.chunk.js +0 -1
- package/build/Admin_marketplace.4748c8f6.chunk.js +0 -1
- package/build/Admin_pluginsPage.89a96d29.chunk.js +0 -1
- package/build/Admin_profilePage.7869a07a.chunk.js +0 -1
- package/build/Admin_settingsPage.2763454c.chunk.js +0 -1
- package/build/admin-edit-roles-page.fbcc195d.chunk.js +0 -1
- package/build/admin-edit-users.91e8f5e4.chunk.js +0 -1
- package/build/admin-users.0a6acd73.chunk.js +0 -1
- package/build/api-tokens-create-page.76e13a35.chunk.js +0 -1
- package/build/api-tokens-edit-page.b3d48a7f.chunk.js +0 -1
- package/build/api-tokens-list-page.4e822ac8.chunk.js +0 -1
- package/build/ar-json.cc19c13c.chunk.js +0 -1
- package/build/codemirror-addon-closebrackets.0cfe64d0.chunk.js +0 -1
- package/build/codemirror-addon-lint-js.a6eeef9c.chunk.js +0 -1
- package/build/codemirror-addon-lint.91580cda.chunk.js +0 -1
- package/build/codemirror-addon-mark-selection.4dca121f.chunk.js +0 -1
- package/build/codemirror-css.48b438c9.chunk.js +0 -1
- package/build/codemirror-javacript.8c7c015d.chunk.js +0 -1
- package/build/codemirror-theme.b5559efc.chunk.js +0 -1
- package/build/content-manager.2f6a2082.chunk.js +0 -1
- package/build/content-type-builder-translation-ar-json.ab0a0caa.chunk.js +0 -1
- package/build/content-type-builder-translation-cs-json.e3913c9f.chunk.js +0 -1
- package/build/content-type-builder-translation-de-json.5eb3135d.chunk.js +0 -1
- package/build/content-type-builder-translation-en-json.e51b2ec3.chunk.js +0 -1
- package/build/content-type-builder-translation-fr-json.afd4a12f.chunk.js +0 -1
- package/build/content-type-builder-translation-it-json.4fa203b1.chunk.js +0 -1
- package/build/content-type-builder-translation-ja-json.cbb3b88a.chunk.js +0 -1
- package/build/content-type-builder-translation-ko-json.7daf86c3.chunk.js +0 -1
- package/build/content-type-builder-translation-pt-BR-json.86b192fa.chunk.js +0 -1
- package/build/content-type-builder-translation-pt-json.b584f79f.chunk.js +0 -1
- package/build/content-type-builder-translation-ru-json.7648049a.chunk.js +0 -1
- package/build/content-type-builder-translation-sk-json.c12a8dec.chunk.js +0 -1
- package/build/content-type-builder-translation-th-json.668cd5f5.chunk.js +0 -1
- package/build/content-type-builder-translation-tr-json.0f52e1e8.chunk.js +0 -1
- package/build/content-type-builder-translation-uk-json.4bf80448.chunk.js +0 -1
- package/build/content-type-builder-translation-zh-Hans-json.76e58138.chunk.js +0 -1
- package/build/content-type-builder-translation-zh-json.0bec81f1.chunk.js +0 -1
- package/build/content-type-builder.19ae7eef.chunk.js +0 -1
- package/build/cropper-css.ace19575.chunk.js +0 -1
- package/build/cs-json.ce6f2e52.chunk.js +0 -1
- package/build/de-json.2087d61e.chunk.js +0 -1
- package/build/email-settings-page.40ee2bda.chunk.js +0 -1
- package/build/email-translation-id-json.e3c2101d.chunk.js +0 -1
- package/build/email-translation-ja-json.66337e44.chunk.js +0 -1
- package/build/email-translation-ko-json.52bbd7b4.chunk.js +0 -1
- package/build/email-translation-ms-json.e39256df.chunk.js +0 -1
- package/build/email-translation-nl-json.12d28adb.chunk.js +0 -1
- package/build/email-translation-pl-json.9585a84e.chunk.js +0 -1
- package/build/email-translation-pt-BR-json.6c04b3ef.chunk.js +0 -1
- package/build/email-translation-pt-json.0239be04.chunk.js +0 -1
- package/build/email-translation-ru-json.f3b4fecc.chunk.js +0 -1
- package/build/email-translation-sk-json.76dbaaa6.chunk.js +0 -1
- package/build/email-translation-th-json.25ad73e7.chunk.js +0 -1
- package/build/email-translation-tr-json.ae04a9f2.chunk.js +0 -1
- package/build/email-translation-uk-json.03b27b08.chunk.js +0 -1
- package/build/email-translation-vi-json.3e1dd5b3.chunk.js +0 -1
- package/build/email-translation-zh-Hans-json.0df4ca59.chunk.js +0 -1
- package/build/email-translation-zh-json.82978eb0.chunk.js +0 -1
- package/build/en-json.c55e5344.chunk.js +0 -1
- package/build/fontawesome-css-all.3b89f909.chunk.js +0 -1
- package/build/fontawesome-css.36cff9ae.chunk.js +0 -1
- package/build/fontawesome-js.2639263c.chunk.js +0 -2
- package/build/fontawesome-js.2639263c.chunk.js.LICENSE.txt +0 -4
- package/build/fr-json.2a0b93ed.chunk.js +0 -1
- package/build/he-json.917d416c.chunk.js +0 -1
- package/build/highlight.js.6321cb45.chunk.js +0 -1
- package/build/hu-json.bee23c51.chunk.js +0 -1
- package/build/i18n-settings-page.1f6be747.chunk.js +0 -1
- package/build/i18n-translation-es-json.7049afa2.chunk.js +0 -1
- package/build/i18n-translation-fr-json.c6367bc9.chunk.js +0 -1
- package/build/i18n-translation-ko-json.aecb7e01.chunk.js +0 -1
- package/build/i18n-translation-zh-Hans-json.258b2e1a.chunk.js +0 -1
- package/build/it-json.937b2108.chunk.js +0 -1
- package/build/ja-json.b4818378.chunk.js +0 -1
- package/build/ko-json.8294a7fc.chunk.js +0 -1
- package/build/main.06e1a4bf.js +0 -2
- package/build/main.06e1a4bf.js.LICENSE.txt +0 -91
- package/build/nl-json.86eae27d.chunk.js +0 -1
- package/build/pt-json.ef0efd89.chunk.js +0 -1
- package/build/ru-json.da33236d.chunk.js +0 -1
- package/build/runtime~main.b090a1bb.js +0 -1
- package/build/sk-json.797e898f.chunk.js +0 -1
- package/build/sso-settings-page.c5dda65d.chunk.js +0 -1
- package/build/sv-json.5bbe6a4f.chunk.js +0 -1
- package/build/th-json.c1393c06.chunk.js +0 -1
- package/build/tr-json.57cde8b0.chunk.js +0 -1
- package/build/uk-json.c6df66d2.chunk.js +0 -1
- package/build/upload-settings.9d3231f4.chunk.js +0 -1
- package/build/upload-translation-de-json.55a7e43a.chunk.js +0 -1
- package/build/upload-translation-fr-json.b12f7247.chunk.js +0 -1
- package/build/upload-translation-he-json.bee013d1.chunk.js +0 -1
- package/build/upload-translation-it-json.43ec0a8d.chunk.js +0 -1
- package/build/upload-translation-ja-json.03f1af04.chunk.js +0 -1
- package/build/upload-translation-ko-json.08ad9013.chunk.js +0 -1
- package/build/upload-translation-pt-BR-json.c7656183.chunk.js +0 -1
- package/build/upload-translation-ru-json.0dd4f526.chunk.js +0 -1
- package/build/upload-translation-sk-json.55cacd22.chunk.js +0 -1
- package/build/upload-translation-th-json.f7aa9392.chunk.js +0 -1
- package/build/upload-translation-uk-json.696a16f3.chunk.js +0 -1
- package/build/upload-translation-zh-Hans-json.de7bc63f.chunk.js +0 -1
- package/build/upload-translation-zh-json.bbc1ed41.chunk.js +0 -1
- package/build/upload.8edef1ea.chunk.js +0 -1
- package/build/users-advanced-settings-page.48c437f0.chunk.js +0 -1
- package/build/users-email-settings-page.f39866d6.chunk.js +0 -1
- package/build/users-permissions-translation-ar-json.667e7eee.chunk.js +0 -1
- package/build/users-permissions-translation-cs-json.995b5d76.chunk.js +0 -1
- package/build/users-permissions-translation-en-json.0e0bc290.chunk.js +0 -1
- package/build/users-permissions-translation-fr-json.3e3522c3.chunk.js +0 -1
- package/build/users-permissions-translation-it-json.ee5742c4.chunk.js +0 -1
- package/build/users-permissions-translation-ja-json.c9cafa6e.chunk.js +0 -1
- package/build/users-permissions-translation-ko-json.170f89c2.chunk.js +0 -1
- package/build/users-permissions-translation-pt-BR-json.51b1cc15.chunk.js +0 -1
- package/build/users-permissions-translation-pt-json.85f0e0e1.chunk.js +0 -1
- package/build/users-permissions-translation-ru-json.a19b2400.chunk.js +0 -1
- package/build/users-permissions-translation-sk-json.27af7260.chunk.js +0 -1
- package/build/users-permissions-translation-sv-json.739657b9.chunk.js +0 -1
- package/build/users-permissions-translation-th-json.f001fff3.chunk.js +0 -1
- package/build/users-permissions-translation-tr-json.3aae5dda.chunk.js +0 -1
- package/build/users-permissions-translation-uk-json.a66c7a8c.chunk.js +0 -1
- package/build/users-permissions-translation-vi-json.685c65cc.chunk.js +0 -1
- package/build/users-permissions-translation-zh-Hans-json.2202741e.chunk.js +0 -1
- package/build/users-permissions-translation-zh-json.429a3190.chunk.js +0 -1
- package/build/users-providers-settings-page.574ed765.chunk.js +0 -1
- package/build/users-roles-settings-page.b836dc30.chunk.js +0 -1
- package/build/vi-json.104a6f3a.chunk.js +0 -1
- package/build/webhook-edit-page.b791c6f9.chunk.js +0 -1
- package/build/webhook-list-page.502d1236.chunk.js +0 -1
- package/build/zh-Hans-json.9afc1adf.chunk.js +0 -1
- package/build/zh-json.f36abb77.chunk.js +0 -1
- package/server/config/api-token.js +0 -7
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<svg width="88" height="88" viewBox="0 0 88 88" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<rect x="0.5" y="0.5" width="87" height="87" rx="43.5" fill="#F0F0FF"/>
|
|
3
|
+
<path d="M34.0469 39.2969H30C27.4479 39.2969 25.2604 40.2448 23.4375 42.1406C21.6146 43.9635 20.7031 46.151 20.7031 48.7031C20.7031 51.2552 21.6146 53.4427 23.4375 55.2656C25.2604 57.0885 27.4479 58 30 58H52.75L34.0469 39.2969ZM23 28.25L25.9531 25.2969L65 64.3438L62.0469 67.2969L57.3438 62.7031H30C26.1354 62.7031 22.8177 61.3542 20.0469 58.6562C17.349 55.8854 16 52.5677 16 48.7031C16 44.9115 17.3125 41.6667 19.9375 38.9688C22.5625 36.2708 25.7344 34.849 29.4531 34.7031L23 28.25ZM61.1719 39.4062C64.1615 39.625 66.7135 40.8646 68.8281 43.125C70.9427 45.3125 72 47.9375 72 51C72 55.0104 70.3594 58.1823 67.0781 60.5156L63.6875 57.125C66.0938 55.8125 67.2969 53.7708 67.2969 51C67.2969 49.1042 66.6042 47.4635 65.2188 46.0781C63.8333 44.6927 62.1927 44 60.2969 44H56.7969V42.7969C56.7969 39.224 55.5573 36.1979 53.0781 33.7188C50.599 31.2396 47.5729 30 44 30C41.9583 30 39.9896 30.474 38.0938 31.4219L34.5938 28.0312C37.4375 26.2083 40.5729 25.2969 44 25.2969C47.9375 25.2969 51.5833 26.6823 54.9375 29.4531C58.3646 32.224 60.4427 35.5417 61.1719 39.4062Z" fill="#4945FF"/>
|
|
4
|
+
<rect x="0.5" y="0.5" width="87" height="87" rx="43.5" stroke="#D9D8FF"/>
|
|
5
|
+
</svg>
|
|
@@ -203,8 +203,6 @@ const CollectionTypeFormWrapper = ({ allLayoutData, children, slug, id, origin }
|
|
|
203
203
|
const displayErrors = useCallback(
|
|
204
204
|
err => {
|
|
205
205
|
const errorPayload = err.response.data;
|
|
206
|
-
console.error(errorPayload);
|
|
207
|
-
|
|
208
206
|
let errorMessage = get(errorPayload, ['error', 'message'], 'Bad Request');
|
|
209
207
|
|
|
210
208
|
// TODO handle errors correctly when back-end ready
|
|
@@ -272,10 +270,14 @@ const CollectionTypeFormWrapper = ({ allLayoutData, children, slug, id, origin }
|
|
|
272
270
|
dispatch(setStatus('resolved'));
|
|
273
271
|
|
|
274
272
|
replace(`/content-manager/collectionType/${slug}/${data.id}${rawQuery}`);
|
|
273
|
+
|
|
274
|
+
return Promise.resolve(data);
|
|
275
275
|
} catch (err) {
|
|
276
|
-
trackUsageRef.current('didNotCreateEntry', { error: err, trackerProperty });
|
|
277
276
|
displayErrors(err);
|
|
277
|
+
trackUsageRef.current('didNotCreateEntry', { error: err, trackerProperty });
|
|
278
278
|
dispatch(setStatus('resolved'));
|
|
279
|
+
|
|
280
|
+
return Promise.reject(err);
|
|
279
281
|
}
|
|
280
282
|
},
|
|
281
283
|
[
|
|
@@ -308,9 +310,13 @@ const CollectionTypeFormWrapper = ({ allLayoutData, children, slug, id, origin }
|
|
|
308
310
|
type: 'success',
|
|
309
311
|
message: { id: getTrad('success.record.publish') },
|
|
310
312
|
});
|
|
313
|
+
|
|
314
|
+
return Promise.resolve(data);
|
|
311
315
|
} catch (err) {
|
|
312
316
|
displayErrors(err);
|
|
313
317
|
dispatch(setStatus('resolved'));
|
|
318
|
+
|
|
319
|
+
return Promise.reject(err);
|
|
314
320
|
}
|
|
315
321
|
}, [cleanReceivedData, displayErrors, id, slug, dispatch, toggleNotification]);
|
|
316
322
|
|
|
@@ -334,11 +340,15 @@ const CollectionTypeFormWrapper = ({ allLayoutData, children, slug, id, origin }
|
|
|
334
340
|
dispatch(submitSucceeded(cleanReceivedData(data)));
|
|
335
341
|
|
|
336
342
|
dispatch(setStatus('resolved'));
|
|
343
|
+
|
|
344
|
+
return Promise.resolve(data);
|
|
337
345
|
} catch (err) {
|
|
338
346
|
trackUsageRef.current('didNotEditEntry', { error: err, trackerProperty });
|
|
339
347
|
displayErrors(err);
|
|
340
348
|
|
|
341
349
|
dispatch(setStatus('resolved'));
|
|
350
|
+
|
|
351
|
+
return Promise.reject(err);
|
|
342
352
|
}
|
|
343
353
|
},
|
|
344
354
|
[cleanReceivedData, displayErrors, slug, id, dispatch, toggleNotification]
|
|
@@ -362,9 +372,13 @@ const CollectionTypeFormWrapper = ({ allLayoutData, children, slug, id, origin }
|
|
|
362
372
|
|
|
363
373
|
dispatch(submitSucceeded(cleanReceivedData(data)));
|
|
364
374
|
dispatch(setStatus('resolved'));
|
|
375
|
+
|
|
376
|
+
return Promise.resolve(data);
|
|
365
377
|
} catch (err) {
|
|
366
378
|
dispatch(setStatus('resolved'));
|
|
367
379
|
displayErrors(err);
|
|
380
|
+
|
|
381
|
+
return Promise.reject(err);
|
|
368
382
|
}
|
|
369
383
|
}, [cleanReceivedData, displayErrors, id, slug, dispatch, toggleNotification]);
|
|
370
384
|
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import isEmpty from 'lodash/isEmpty';
|
|
2
|
+
import isNumber from 'lodash/isNumber';
|
|
2
3
|
|
|
3
4
|
import isSingleRelation from './isSingleRelation';
|
|
5
|
+
import isFieldTypeNumber from '../../../../utils/isFieldTypeNumber';
|
|
4
6
|
|
|
5
7
|
export default function hasContent(type, content, metadatas, fieldSchema) {
|
|
6
8
|
if (type === 'component') {
|
|
7
9
|
const {
|
|
8
|
-
mainField: { name: mainFieldName },
|
|
10
|
+
mainField: { name: mainFieldName, type: mainFieldType },
|
|
9
11
|
} = metadatas;
|
|
10
12
|
|
|
11
13
|
// Repeatable fields show the ID as fallback, in case the mainField
|
|
@@ -14,7 +16,28 @@ export default function hasContent(type, content, metadatas, fieldSchema) {
|
|
|
14
16
|
return content.length > 0;
|
|
15
17
|
}
|
|
16
18
|
|
|
17
|
-
|
|
19
|
+
const value = content?.[mainFieldName];
|
|
20
|
+
|
|
21
|
+
// relations, media ... show the id as fallback
|
|
22
|
+
if (mainFieldName === 'id' && ![undefined, null].includes(value)) {
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/* The ID field reports itself as type `integer`, which makes it
|
|
27
|
+
impossible to distinguish it from other number fields.
|
|
28
|
+
|
|
29
|
+
Biginteger fields need to be treated as strings, as `isNumber`
|
|
30
|
+
doesn't deal with them.
|
|
31
|
+
*/
|
|
32
|
+
if (
|
|
33
|
+
isFieldTypeNumber(mainFieldType) &&
|
|
34
|
+
mainFieldType !== 'biginteger' &&
|
|
35
|
+
mainFieldName !== 'id'
|
|
36
|
+
) {
|
|
37
|
+
return isNumber(value);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
return !isEmpty(value);
|
|
18
41
|
}
|
|
19
42
|
|
|
20
43
|
if (type === 'relation') {
|
|
@@ -25,5 +48,17 @@ export default function hasContent(type, content, metadatas, fieldSchema) {
|
|
|
25
48
|
return content.count > 0;
|
|
26
49
|
}
|
|
27
50
|
|
|
51
|
+
/*
|
|
52
|
+
Biginteger fields need to be treated as strings, as `isNumber`
|
|
53
|
+
doesn't deal with them.
|
|
54
|
+
*/
|
|
55
|
+
if (isFieldTypeNumber(type) && type !== 'biginteger') {
|
|
56
|
+
return isNumber(content);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
if (type === 'boolean') {
|
|
60
|
+
return content !== null;
|
|
61
|
+
}
|
|
62
|
+
|
|
28
63
|
return !isEmpty(content);
|
|
29
64
|
}
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import React, { useCallback, useEffect, useMemo, useRef, useReducer } from 'react';
|
|
2
|
-
import
|
|
2
|
+
import isEmpty from 'lodash/isEmpty';
|
|
3
|
+
import cloneDeep from 'lodash/cloneDeep';
|
|
4
|
+
import get from 'lodash/get';
|
|
5
|
+
import isEqual from 'lodash/isEqual';
|
|
6
|
+
import set from 'lodash/set';
|
|
3
7
|
import PropTypes from 'prop-types';
|
|
4
8
|
import { useIntl } from 'react-intl';
|
|
5
9
|
import { Prompt, Redirect } from 'react-router-dom';
|
|
@@ -10,10 +14,13 @@ import {
|
|
|
10
14
|
useNotification,
|
|
11
15
|
useOverlayBlocker,
|
|
12
16
|
useTracking,
|
|
17
|
+
getYupInnerErrors,
|
|
13
18
|
} from '@strapi/helper-plugin';
|
|
19
|
+
|
|
14
20
|
import { getTrad, removeKeyInObject } from '../../utils';
|
|
15
21
|
import reducer, { initialState } from './reducer';
|
|
16
|
-
import { cleanData, createYupSchema
|
|
22
|
+
import { cleanData, createYupSchema } from './utils';
|
|
23
|
+
import { getAPIInnerError } from './utils/getAPIInnerError';
|
|
17
24
|
|
|
18
25
|
const EditViewDataManagerProvider = ({
|
|
19
26
|
allLayoutData,
|
|
@@ -290,30 +297,27 @@ const EditViewDataManagerProvider = ({
|
|
|
290
297
|
e.preventDefault();
|
|
291
298
|
let errors = {};
|
|
292
299
|
|
|
293
|
-
// First validate the form
|
|
294
300
|
try {
|
|
295
301
|
await yupSchema.validate(modifiedData, { abortEarly: false });
|
|
296
|
-
|
|
297
|
-
const formData = createFormData(modifiedData);
|
|
298
|
-
|
|
299
|
-
if (isCreatingEntry) {
|
|
300
|
-
onPost(formData, trackerProperty);
|
|
301
|
-
} else {
|
|
302
|
-
onPut(formData, trackerProperty);
|
|
303
|
-
}
|
|
304
302
|
} catch (err) {
|
|
305
|
-
console.log('ValidationError');
|
|
306
|
-
console.log(err);
|
|
307
|
-
|
|
308
303
|
errors = getYupInnerErrors(err);
|
|
304
|
+
}
|
|
309
305
|
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
306
|
+
try {
|
|
307
|
+
if (isEmpty(errors)) {
|
|
308
|
+
const formData = createFormData(modifiedData);
|
|
309
|
+
|
|
310
|
+
if (isCreatingEntry) {
|
|
311
|
+
await onPost(formData, trackerProperty);
|
|
312
|
+
} else {
|
|
313
|
+
await onPut(formData, trackerProperty);
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
} catch (err) {
|
|
317
|
+
errors = {
|
|
318
|
+
...errors,
|
|
319
|
+
...getAPIInnerError(err),
|
|
320
|
+
};
|
|
317
321
|
}
|
|
318
322
|
|
|
319
323
|
dispatch({
|
|
@@ -321,16 +325,7 @@ const EditViewDataManagerProvider = ({
|
|
|
321
325
|
errors,
|
|
322
326
|
});
|
|
323
327
|
},
|
|
324
|
-
[
|
|
325
|
-
createFormData,
|
|
326
|
-
isCreatingEntry,
|
|
327
|
-
modifiedData,
|
|
328
|
-
onPost,
|
|
329
|
-
onPut,
|
|
330
|
-
toggleNotification,
|
|
331
|
-
trackerProperty,
|
|
332
|
-
yupSchema,
|
|
333
|
-
]
|
|
328
|
+
[createFormData, isCreatingEntry, modifiedData, onPost, onPut, trackerProperty, yupSchema]
|
|
334
329
|
);
|
|
335
330
|
|
|
336
331
|
const handlePublish = useCallback(async () => {
|
|
@@ -345,17 +340,22 @@ const EditViewDataManagerProvider = ({
|
|
|
345
340
|
let errors = {};
|
|
346
341
|
|
|
347
342
|
try {
|
|
348
|
-
// Validate the form using yup
|
|
349
343
|
await schema.validate(modifiedData, { abortEarly: false });
|
|
350
|
-
|
|
351
|
-
onPublish();
|
|
352
344
|
} catch (err) {
|
|
353
|
-
console.error('ValidationError');
|
|
354
|
-
console.error(err);
|
|
355
|
-
|
|
356
345
|
errors = getYupInnerErrors(err);
|
|
357
346
|
}
|
|
358
347
|
|
|
348
|
+
try {
|
|
349
|
+
if (isEmpty(errors)) {
|
|
350
|
+
await onPublish();
|
|
351
|
+
}
|
|
352
|
+
} catch (err) {
|
|
353
|
+
errors = {
|
|
354
|
+
...errors,
|
|
355
|
+
...getAPIInnerError(err),
|
|
356
|
+
};
|
|
357
|
+
}
|
|
358
|
+
|
|
359
359
|
dispatch({
|
|
360
360
|
type: 'SET_FORM_ERRORS',
|
|
361
361
|
errors,
|
package/admin/src/content-manager/components/EditViewDataManagerProvider/utils/getAPIInnerError.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { getTrad } from '../../../utils';
|
|
2
|
+
|
|
3
|
+
export function getAPIInnerError(error) {
|
|
4
|
+
const errorPayload = error.response.data.error.details.errors;
|
|
5
|
+
const validationErrors = errorPayload.reduce((acc, err) => {
|
|
6
|
+
acc[err.path.join('.')] = {
|
|
7
|
+
id: getTrad(`apiError.${err.message}`),
|
|
8
|
+
defaultMessage: err.message,
|
|
9
|
+
values: {
|
|
10
|
+
field: err.path[err.path.length - 1],
|
|
11
|
+
},
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
return acc;
|
|
15
|
+
}, {});
|
|
16
|
+
|
|
17
|
+
return validationErrors;
|
|
18
|
+
}
|
package/admin/src/content-manager/components/EditViewDataManagerProvider/utils/handleAPIError.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { getTrad } from '../../../utils';
|
|
2
|
+
|
|
3
|
+
export function handleAPIError(error) {
|
|
4
|
+
const errorPayload = error.response.data.error.details.errors;
|
|
5
|
+
const validationErrors = errorPayload.reduce((acc, err) => {
|
|
6
|
+
acc[err.path.join('.')] = {
|
|
7
|
+
id: getTrad(`apiError.${err.message}`),
|
|
8
|
+
defaultMessage: err.message,
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
return acc;
|
|
12
|
+
}, {});
|
|
13
|
+
|
|
14
|
+
return validationErrors;
|
|
15
|
+
}
|
|
@@ -7,6 +7,8 @@ import toNumber from 'lodash/toNumber';
|
|
|
7
7
|
import * as yup from 'yup';
|
|
8
8
|
import { translatedErrors as errorsTrads } from '@strapi/helper-plugin';
|
|
9
9
|
|
|
10
|
+
import isFieldTypeNumber from '../../../utils/isFieldTypeNumber';
|
|
11
|
+
|
|
10
12
|
yup.addMethod(yup.mixed, 'defined', function() {
|
|
11
13
|
return this.test('defined', errorsTrads.required, value => value !== undefined);
|
|
12
14
|
});
|
|
@@ -240,14 +242,14 @@ const createYupSchemaAttribute = (type, validations, options) => {
|
|
|
240
242
|
.typeError();
|
|
241
243
|
}
|
|
242
244
|
|
|
243
|
-
if (['date', 'datetime'].includes(type)) {
|
|
244
|
-
schema = yup.date();
|
|
245
|
-
}
|
|
246
|
-
|
|
247
245
|
if (type === 'biginteger') {
|
|
248
246
|
schema = yup.string().matches(/^-?\d*$/);
|
|
249
247
|
}
|
|
250
248
|
|
|
249
|
+
if (['date', 'datetime'].includes(type)) {
|
|
250
|
+
schema = yup.date();
|
|
251
|
+
}
|
|
252
|
+
|
|
251
253
|
Object.keys(validations).forEach(validation => {
|
|
252
254
|
const validationValue = validations[validation];
|
|
253
255
|
|
|
@@ -273,7 +275,7 @@ const createYupSchemaAttribute = (type, validations, options) => {
|
|
|
273
275
|
return true;
|
|
274
276
|
}
|
|
275
277
|
|
|
276
|
-
if (
|
|
278
|
+
if (isFieldTypeNumber(type)) {
|
|
277
279
|
if (value === 0) {
|
|
278
280
|
return true;
|
|
279
281
|
}
|
|
@@ -344,12 +346,12 @@ const createYupSchemaAttribute = (type, validations, options) => {
|
|
|
344
346
|
}
|
|
345
347
|
break;
|
|
346
348
|
case 'positive':
|
|
347
|
-
if (
|
|
349
|
+
if (isFieldTypeNumber(type)) {
|
|
348
350
|
schema = schema.positive();
|
|
349
351
|
}
|
|
350
352
|
break;
|
|
351
353
|
case 'negative':
|
|
352
|
-
if (
|
|
354
|
+
if (isFieldTypeNumber(type)) {
|
|
353
355
|
schema = schema.negative();
|
|
354
356
|
}
|
|
355
357
|
break;
|
|
@@ -82,7 +82,6 @@ const InputUID = ({
|
|
|
82
82
|
onChange({ target: { name, value: data, type: 'text' } }, shouldSetInitialValue);
|
|
83
83
|
setIsLoading(false);
|
|
84
84
|
} catch (err) {
|
|
85
|
-
console.error({ err });
|
|
86
85
|
setIsLoading(false);
|
|
87
86
|
}
|
|
88
87
|
};
|
|
@@ -107,7 +106,6 @@ const InputUID = ({
|
|
|
107
106
|
|
|
108
107
|
setIsLoading(false);
|
|
109
108
|
} catch (err) {
|
|
110
|
-
console.error({ err });
|
|
111
109
|
setIsLoading(false);
|
|
112
110
|
}
|
|
113
111
|
};
|
|
@@ -184,12 +182,10 @@ const InputUID = ({
|
|
|
184
182
|
onChange(e);
|
|
185
183
|
};
|
|
186
184
|
|
|
187
|
-
const formattedError = error ? formatMessage({ id: error, defaultMessage: error }) : undefined;
|
|
188
|
-
|
|
189
185
|
return (
|
|
190
186
|
<TextInput
|
|
191
187
|
disabled={disabled}
|
|
192
|
-
error={
|
|
188
|
+
error={error}
|
|
193
189
|
endAction={
|
|
194
190
|
<EndActionWrapper>
|
|
195
191
|
{availability && availability.isAvailable && !regenerateLabel && (
|
|
@@ -42,10 +42,7 @@ function Inputs({
|
|
|
42
42
|
|
|
43
43
|
const disabled = useMemo(() => !get(metadatas, 'editable', true), [metadatas]);
|
|
44
44
|
const type = fieldSchema.type;
|
|
45
|
-
|
|
46
|
-
const errorId = useMemo(() => {
|
|
47
|
-
return get(formErrors, [keys, 'id'], null);
|
|
48
|
-
}, [formErrors, keys]);
|
|
45
|
+
const error = get(formErrors, [keys], null);
|
|
49
46
|
|
|
50
47
|
const fieldName = useMemo(() => {
|
|
51
48
|
return getFieldName(keys);
|
|
@@ -177,7 +174,7 @@ function Inputs({
|
|
|
177
174
|
description={description ? { id: description, defaultMessage: description } : null}
|
|
178
175
|
intlLabel={{ id: label, defaultMessage: label }}
|
|
179
176
|
labelAction={labelAction}
|
|
180
|
-
error={
|
|
177
|
+
error={error && formatMessage(error)}
|
|
181
178
|
name={keys}
|
|
182
179
|
required={isRequired}
|
|
183
180
|
/>
|
|
@@ -215,6 +212,7 @@ function Inputs({
|
|
|
215
212
|
}
|
|
216
213
|
queryInfos={queryInfos}
|
|
217
214
|
value={value}
|
|
215
|
+
error={error && formatMessage(error)}
|
|
218
216
|
/>
|
|
219
217
|
);
|
|
220
218
|
}
|
|
@@ -228,7 +226,7 @@ function Inputs({
|
|
|
228
226
|
isNullable={inputType === 'bool' && [null, undefined].includes(fieldSchema.default)}
|
|
229
227
|
description={description ? { id: description, defaultMessage: description } : null}
|
|
230
228
|
disabled={shouldDisableField}
|
|
231
|
-
error={
|
|
229
|
+
error={error}
|
|
232
230
|
labelAction={labelAction}
|
|
233
231
|
contentTypeUID={currentContentTypeLayout.uid}
|
|
234
232
|
customInputs={{
|
|
@@ -5,7 +5,6 @@ import { useIntl } from 'react-intl';
|
|
|
5
5
|
import styled from 'styled-components';
|
|
6
6
|
import PropTypes from 'prop-types';
|
|
7
7
|
import get from 'lodash/get';
|
|
8
|
-
import take from 'lodash/take';
|
|
9
8
|
import { useNotification } from '@strapi/helper-plugin';
|
|
10
9
|
import { Box } from '@strapi/design-system/Box';
|
|
11
10
|
import { Flex } from '@strapi/design-system/Flex';
|
|
@@ -17,6 +16,7 @@ import ItemTypes from '../../utils/ItemTypes';
|
|
|
17
16
|
import ComponentInitializer from '../ComponentInitializer';
|
|
18
17
|
import connect from './utils/connect';
|
|
19
18
|
import select from './utils/select';
|
|
19
|
+
import getComponentErrorKeys from './utils/getComponentErrorKeys';
|
|
20
20
|
import DraggedItem from './DraggedItem';
|
|
21
21
|
import AccordionGroupCustom from './AccordionGroupCustom';
|
|
22
22
|
|
|
@@ -38,7 +38,6 @@ const RepeatableComponent = ({
|
|
|
38
38
|
componentUid,
|
|
39
39
|
componentValue,
|
|
40
40
|
componentValueLength,
|
|
41
|
-
isNested,
|
|
42
41
|
isReadOnly,
|
|
43
42
|
max,
|
|
44
43
|
min,
|
|
@@ -59,16 +58,7 @@ const RepeatableComponent = ({
|
|
|
59
58
|
return getMaxTempKey(componentValue || []) + 1;
|
|
60
59
|
}, [componentValue]);
|
|
61
60
|
|
|
62
|
-
const componentErrorKeys =
|
|
63
|
-
.filter(errorKey => {
|
|
64
|
-
return take(errorKey.split('.'), isNested ? 3 : 1).join('.') === name;
|
|
65
|
-
})
|
|
66
|
-
.map(errorKey => {
|
|
67
|
-
return errorKey
|
|
68
|
-
.split('.')
|
|
69
|
-
.slice(0, name.split('.').length + 1)
|
|
70
|
-
.join('.');
|
|
71
|
-
});
|
|
61
|
+
const componentErrorKeys = getComponentErrorKeys(name, formErrors);
|
|
72
62
|
|
|
73
63
|
const toggleCollapses = () => {
|
|
74
64
|
setCollapseToOpen('');
|
|
@@ -187,7 +177,6 @@ RepeatableComponent.defaultProps = {
|
|
|
187
177
|
componentValue: null,
|
|
188
178
|
componentValueLength: 0,
|
|
189
179
|
formErrors: {},
|
|
190
|
-
isNested: false,
|
|
191
180
|
max: Infinity,
|
|
192
181
|
min: 0,
|
|
193
182
|
};
|
|
@@ -198,7 +187,6 @@ RepeatableComponent.propTypes = {
|
|
|
198
187
|
componentValue: PropTypes.oneOfType([PropTypes.array, PropTypes.object]),
|
|
199
188
|
componentValueLength: PropTypes.number,
|
|
200
189
|
formErrors: PropTypes.object,
|
|
201
|
-
isNested: PropTypes.bool,
|
|
202
190
|
isReadOnly: PropTypes.bool.isRequired,
|
|
203
191
|
max: PropTypes.number,
|
|
204
192
|
min: PropTypes.number,
|
|
@@ -207,9 +195,6 @@ RepeatableComponent.propTypes = {
|
|
|
207
195
|
|
|
208
196
|
const Memoized = memo(RepeatableComponent);
|
|
209
197
|
|
|
210
|
-
export default connect(
|
|
211
|
-
Memoized,
|
|
212
|
-
select
|
|
213
|
-
);
|
|
198
|
+
export default connect(Memoized, select);
|
|
214
199
|
|
|
215
200
|
export { RepeatableComponent };
|
|
@@ -144,8 +144,6 @@ const SingleTypeFormWrapper = ({ allLayoutData, children, slug }) => {
|
|
|
144
144
|
const displayErrors = useCallback(
|
|
145
145
|
err => {
|
|
146
146
|
const errorPayload = err.response.payload;
|
|
147
|
-
console.error(errorPayload);
|
|
148
|
-
|
|
149
147
|
let errorMessage = get(errorPayload, ['message'], 'Bad Request');
|
|
150
148
|
|
|
151
149
|
// TODO handle errors correctly when back-end ready
|
|
@@ -178,10 +176,12 @@ const SingleTypeFormWrapper = ({ allLayoutData, children, slug }) => {
|
|
|
178
176
|
} catch (err) {
|
|
179
177
|
trackUsageRef.current('didNotDeleteEntry', { error: err, ...trackerProperty });
|
|
180
178
|
|
|
179
|
+
displayErrors(err);
|
|
180
|
+
|
|
181
181
|
return Promise.reject(err);
|
|
182
182
|
}
|
|
183
183
|
},
|
|
184
|
-
[slug, toggleNotification, searchToSend]
|
|
184
|
+
[slug, displayErrors, toggleNotification, searchToSend]
|
|
185
185
|
);
|
|
186
186
|
|
|
187
187
|
const onDeleteSucceeded = useCallback(() => {
|
|
@@ -211,12 +211,16 @@ const SingleTypeFormWrapper = ({ allLayoutData, children, slug }) => {
|
|
|
211
211
|
setIsCreatingEntry(false);
|
|
212
212
|
|
|
213
213
|
dispatch(setStatus('resolved'));
|
|
214
|
+
|
|
215
|
+
return Promise.resolve(data);
|
|
214
216
|
} catch (err) {
|
|
215
217
|
trackUsageRef.current('didNotCreateEntry', { error: err, trackerProperty });
|
|
216
218
|
|
|
217
219
|
displayErrors(err);
|
|
218
220
|
|
|
219
221
|
dispatch(setStatus('resolved'));
|
|
222
|
+
|
|
223
|
+
return Promise.reject(err);
|
|
220
224
|
}
|
|
221
225
|
},
|
|
222
226
|
[cleanReceivedData, displayErrors, slug, dispatch, rawQuery, toggleNotification, setCurrentStep]
|
|
@@ -239,10 +243,14 @@ const SingleTypeFormWrapper = ({ allLayoutData, children, slug }) => {
|
|
|
239
243
|
dispatch(submitSucceeded(cleanReceivedData(data)));
|
|
240
244
|
|
|
241
245
|
dispatch(setStatus('resolved'));
|
|
246
|
+
|
|
247
|
+
return Promise.resolve(data);
|
|
242
248
|
} catch (err) {
|
|
243
249
|
displayErrors(err);
|
|
244
250
|
|
|
245
251
|
dispatch(setStatus('resolved'));
|
|
252
|
+
|
|
253
|
+
return Promise.reject(err);
|
|
246
254
|
}
|
|
247
255
|
}, [cleanReceivedData, displayErrors, slug, searchToSend, dispatch, toggleNotification]);
|
|
248
256
|
|
|
@@ -267,12 +275,16 @@ const SingleTypeFormWrapper = ({ allLayoutData, children, slug }) => {
|
|
|
267
275
|
dispatch(submitSucceeded(cleanReceivedData(data)));
|
|
268
276
|
|
|
269
277
|
dispatch(setStatus('resolved'));
|
|
278
|
+
|
|
279
|
+
return Promise.resolve(data);
|
|
270
280
|
} catch (err) {
|
|
271
281
|
displayErrors(err);
|
|
272
282
|
|
|
273
283
|
trackUsageRef.current('didNotEditEntry', { error: err, trackerProperty });
|
|
274
284
|
|
|
275
285
|
dispatch(setStatus('resolved'));
|
|
286
|
+
|
|
287
|
+
return Promise.reject(err);
|
|
276
288
|
}
|
|
277
289
|
},
|
|
278
290
|
[cleanReceivedData, displayErrors, slug, dispatch, rawQuery, toggleNotification]
|
|
@@ -118,7 +118,6 @@ const Wysiwyg = ({
|
|
|
118
118
|
)
|
|
119
119
|
: '';
|
|
120
120
|
|
|
121
|
-
const errorMessage = error ? formatMessage({ id: error, defaultMessage: error }) : '';
|
|
122
121
|
const label = intlLabel.id
|
|
123
122
|
? formatMessage(
|
|
124
123
|
{ id: intlLabel.id, defaultMessage: intlLabel.defaultMessage },
|
|
@@ -157,7 +156,7 @@ const Wysiwyg = ({
|
|
|
157
156
|
disabled={disabled}
|
|
158
157
|
isExpandMode={isExpandMode}
|
|
159
158
|
editorRef={editorRef}
|
|
160
|
-
error={
|
|
159
|
+
error={error}
|
|
161
160
|
isPreviewMode={isPreviewMode}
|
|
162
161
|
name={name}
|
|
163
162
|
onChange={onChange}
|
|
@@ -171,10 +170,10 @@ const Wysiwyg = ({
|
|
|
171
170
|
<Hint description={description} name={name} error={error} />
|
|
172
171
|
</Stack>
|
|
173
172
|
|
|
174
|
-
{
|
|
173
|
+
{error && (
|
|
175
174
|
<Box paddingTop={1}>
|
|
176
175
|
<Typography variant="pi" textColor="danger600" data-strapi-field-error>
|
|
177
|
-
{
|
|
176
|
+
{error}
|
|
178
177
|
</Typography>
|
|
179
178
|
</Box>
|
|
180
179
|
)}
|
|
@@ -11,7 +11,12 @@ import { makeSelectModelAndComponentSchemas } from '../../App/selectors';
|
|
|
11
11
|
import getTrad from '../../../utils/getTrad';
|
|
12
12
|
import GenericInput from './GenericInput';
|
|
13
13
|
|
|
14
|
-
const FIELD_SIZES = [
|
|
14
|
+
const FIELD_SIZES = [
|
|
15
|
+
[4, '33%'],
|
|
16
|
+
[6, '50%'],
|
|
17
|
+
[8, '66%'],
|
|
18
|
+
[12, '100%'],
|
|
19
|
+
];
|
|
15
20
|
|
|
16
21
|
const NON_RESIZABLE_FIELD_TYPES = ['dynamiczone', 'component', 'json', 'richtext'];
|
|
17
22
|
|
|
@@ -28,7 +28,13 @@ const formatLayout = arr => {
|
|
|
28
28
|
|
|
29
29
|
return acc2;
|
|
30
30
|
}, []);
|
|
31
|
-
const rowId =
|
|
31
|
+
const rowId =
|
|
32
|
+
acc.length === 0
|
|
33
|
+
? 0
|
|
34
|
+
: Math.max.apply(
|
|
35
|
+
Math,
|
|
36
|
+
acc.map(o => o.rowId)
|
|
37
|
+
) + 1;
|
|
32
38
|
|
|
33
39
|
const currentRowSize = getRowSize(currentRow);
|
|
34
40
|
|