@strapi/admin 4.0.0 → 4.0.4
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/components/LeftMenu/index.js +13 -5
- package/admin/src/components/Notifications/Notification/index.js +3 -3
- package/admin/src/content-manager/components/CollectionTypeFormWrapper/index.js +2 -2
- package/admin/src/content-manager/components/ComponentInitializer/index.js +4 -9
- package/admin/src/content-manager/components/DragLayer/index.js +1 -1
- package/admin/src/content-manager/components/DynamicTable/CellContent/CellValue.js +12 -2
- package/admin/src/content-manager/components/DynamicTable/CellContent/utils/getNumberOfDecimals.js +8 -0
- package/admin/src/content-manager/components/DynamicTable/index.js +7 -0
- package/admin/src/content-manager/components/DynamicZone/components/DzLabel/index.js +24 -7
- package/admin/src/content-manager/components/DynamicZone/index.js +31 -15
- package/admin/src/content-manager/components/EditViewDataManagerProvider/utils/schema.js +4 -1
- package/admin/src/content-manager/components/InputUID/index.js +4 -0
- package/admin/src/content-manager/components/PreviewWysiwyg/Wrapper.js +4 -0
- package/admin/src/content-manager/components/RepeatableComponent/AccordionGroupCustom/index.js +1 -3
- package/admin/src/content-manager/components/RepeatableComponent/DraggedItem/IconButtonCustoms.js +0 -4
- package/admin/src/content-manager/components/RepeatableComponent/DraggedItem/index.js +36 -14
- package/admin/src/content-manager/components/RepeatableComponent/index.js +2 -2
- package/admin/src/content-manager/components/SelectWrapper/index.js +15 -81
- package/admin/src/content-manager/components/Wysiwyg/Editor.js +2 -3
- package/admin/src/content-manager/components/Wysiwyg/EditorLayout.js +2 -0
- package/admin/src/content-manager/components/Wysiwyg/WysiwygFooter.js +2 -4
- package/admin/src/content-manager/components/Wysiwyg/WysiwygNav.js +67 -62
- package/admin/src/content-manager/components/Wysiwyg/index.js +13 -4
- package/admin/src/content-manager/hooks/useFetchContentTypeLayout/utils/formatLayouts.js +2 -2
- package/admin/src/content-manager/pages/App/LeftMenu/index.js +5 -7
- package/admin/src/content-manager/pages/App/index.js +12 -4
- package/admin/src/content-manager/pages/EditSettingsView/components/DisplayedFieldButton.js +1 -1
- package/admin/src/content-manager/pages/EditSettingsView/components/FieldButtonContent.js +1 -1
- package/admin/src/content-manager/pages/EditSettingsView/components/RelationalFieldButton.js +1 -1
- package/admin/src/content-manager/pages/EditSettingsView/index.js +1 -1
- package/admin/src/content-manager/pages/EditView/Informations/index.js +37 -13
- package/admin/src/content-manager/pages/ListSettingsView/components/CardPreview.js +19 -8
- package/admin/src/content-manager/pages/ListSettingsView/components/DraggableCard.js +124 -67
- package/admin/src/content-manager/pages/ListSettingsView/components/SortDisplayedFields.js +4 -1
- package/admin/src/content-manager/pages/ListSettingsView/index.js +1 -1
- package/admin/src/content-manager/pages/ListView/index.js +37 -20
- package/admin/src/hooks/useSettingsMenu/utils/defaultGlobalLinks.js +1 -1
- package/admin/src/pages/App/utils/unique-identifier.js +3 -1
- package/admin/src/pages/AuthPage/components/Register/index.js +4 -1
- package/admin/src/pages/AuthPage/index.js +8 -2
- package/admin/src/pages/AuthPage/utils/forms.js +2 -0
- package/admin/src/pages/ProfilePage/index.js +34 -6
- package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/index.js +3 -2
- package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/index.js +20 -7
- package/admin/src/pages/SettingsPage/pages/Roles/EditPage/index.js +1 -1
- package/admin/src/pages/SettingsPage/pages/Users/EditPage/index.js +3 -3
- package/admin/src/pages/SettingsPage/pages/Users/EditPage/utils/layout.js +2 -0
- package/admin/src/pages/SettingsPage/pages/Users/ListPage/ModalForm/index.js +3 -3
- package/admin/src/pages/SettingsPage/pages/Users/ListPage/ModalForm/utils/layout.js +2 -0
- package/admin/src/pages/SettingsPage/pages/Users/ListPage/ModalForm/utils/stepper.js +1 -1
- package/admin/src/pages/SettingsPage/pages/Users/ListPage/index.js +5 -11
- package/admin/src/pages/SettingsPage/pages/Users/ListPage/utils/tableHeaders.js +1 -1
- package/admin/src/pages/SettingsPage/pages/Users/components/MagicLink/index.js +1 -1
- package/admin/src/pages/SettingsPage/pages/Users/components/SelectRoles/index.js +2 -1
- package/admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/EventInput/index.js +1 -1
- package/admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/HeadersInput/index.js +1 -1
- package/admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/WebhookForm/index.js +3 -1
- package/admin/src/pages/SettingsPage/pages/Webhooks/ListView/index.js +5 -5
- package/admin/src/translations/en.json +32 -23
- package/admin/src/translations/fr.json +315 -6
- package/admin/src/translations/ko.json +670 -263
- package/admin/src/translations/nl.json +1 -1
- package/admin/src/translations/zh-Hans.json +554 -204
- package/admin/src/translations/zh.json +482 -41
- package/build/{01a600d9e6e0dea21e33017a97bdf431.png → 01a600d9e6e0dea21e33.png} +0 -0
- package/build/{15026a3d58aeb282813457f060f2d6ac.png → 15026a3d58aeb2828134.png} +0 -0
- package/build/{1551f4f60c37af51121f106501f69b80.woff2 → 1551f4f60c37af51121f.woff2} +0 -0
- package/build/{1e59d2330b4c6deb84b340635ed36249.ttf → 1e59d2330b4c6deb84b3.ttf} +0 -0
- package/build/{20fd1704ea223900efa9fd4e869efb08.woff2 → 20fd1704ea223900efa9.woff2} +0 -0
- package/build/{2285773e6b4b172f07d9b777c81b0775.woff → 2285773e6b4b172f07d9.woff} +0 -0
- package/build/{23f19bb08961f37aaf692ff943823453.eot → 23f19bb08961f37aaf69.eot} +0 -0
- package/build/{2a9e9ef5c4c775bb7c7b3625041b1354.png → 2a9e9ef5c4c775bb7c7b.png} +0 -0
- package/build/{2f517e09eb2ca6650ff5bec5a95157ab.svg → 2f517e09eb2ca6650ff5.svg} +0 -0
- package/build/3742.2281afd7.chunk.js +1 -0
- package/build/4045.0b43d55e.chunk.js +1 -0
- package/build/4261.061aed35.chunk.js +1 -0
- package/build/4672.7ad6782a.chunk.js +1 -0
- package/build/{4689f52cc96215721344e51e5831eec1.svg → 4689f52cc96215721344.svg} +0 -0
- package/build/{4715.35096dd7.chunk.js → 4715.f134f37a.chunk.js} +1 -1
- package/build/{491974d108fe4002b2aaf7ffc48249a0.ttf → 491974d108fe4002b2aa.ttf} +0 -0
- package/build/{527940b104eb2ea366c8630f3f038603.ttf → 527940b104eb2ea366c8.ttf} +0 -0
- package/build/6060.3af8877e.chunk.js +2 -0
- package/build/{3226.0dc582b2.chunk.js.LICENSE.txt → 6060.3af8877e.chunk.js.LICENSE.txt} +1 -1
- package/build/{6250.11ba8b50.chunk.js → 6250.7b4872b1.chunk.js} +1 -1
- package/build/{5881.deb18c91.chunk.js → 6354.48168bc8.chunk.js} +2 -2
- package/build/{5881.deb18c91.chunk.js.LICENSE.txt → 6354.48168bc8.chunk.js.LICENSE.txt} +0 -0
- package/build/{77206a6bb316fa0aded5083cc57f92b9.eot → 77206a6bb316fa0aded5.eot} +0 -0
- package/build/{7a3337626410ca2f40718481c755640f.woff2 → 7a3337626410ca2f4071.woff2} +0 -0
- package/build/{7a8b4f130182d19a2d7c67d80c090397.svg → 7a8b4f130182d19a2d7c.svg} +0 -0
- package/build/8530.a978bde6.chunk.js +2 -0
- package/build/8530.a978bde6.chunk.js.LICENSE.txt +7 -0
- package/build/{8b43027f47b20503057dfbbaa9401fef.eot → 8b43027f47b20503057d.eot} +0 -0
- package/build/{9bbb245e67a133f6e486d8d2545e14a5.eot → 9bbb245e67a133f6e486.eot} +0 -0
- package/build/Admin-authenticatedApp.8c375af0.chunk.js +1 -0
- package/build/{Admin_homePage.31e37124.chunk.js → Admin_homePage.f9cdd615.chunk.js} +1 -1
- package/build/Admin_marketplace.4f6c77f2.chunk.js +1 -0
- package/build/Admin_pluginsPage.cd9a871c.chunk.js +1 -0
- package/build/Admin_profilePage.077e17a5.chunk.js +1 -0
- package/build/Admin_settingsPage.9752ef85.chunk.js +1 -0
- package/build/admin-edit-roles-page.27b047fc.chunk.js +1 -0
- package/build/admin-edit-users.a0dede23.chunk.js +1 -0
- package/build/admin-users.a11177c1.chunk.js +1 -0
- package/build/{api-tokens-create-page.ac4285ba.chunk.js → api-tokens-create-page.07be3e07.chunk.js} +1 -1
- package/build/{api-tokens-edit-page.b8900ddd.chunk.js → api-tokens-edit-page.d6afc60e.chunk.js} +1 -1
- package/build/api-tokens-list-page.da9714d8.chunk.js +1 -0
- package/build/{ar-json.9805489e.chunk.js → ar-json.d79e4709.chunk.js} +1 -1
- package/build/{b997a22a2e0b87ef1fa23258f14f3b27.ico → b997a22a2e0b87ef1fa2.ico} +0 -0
- package/build/{bb58e57c48a3e911f15fa834ff00d44a.woff → bb58e57c48a3e911f15f.woff} +0 -0
- package/build/{bd81ba6c07827282255d031b2a6f4fe4.png → bd81ba6c07827282255d.png} +0 -0
- package/build/{be9ee23c0c6390141475d519c2c5fb8f.ttf → be9ee23c0c6390141475.ttf} +0 -0
- package/build/{c1e38fd9e0e74ba58f7a2b77ef29fdd3.svg → c1e38fd9e0e74ba58f7a.svg} +0 -0
- package/build/{c3de6118ef47086ad05c83a1c78f006d.png → c3de6118ef47086ad05c.png} +0 -0
- package/build/codemirror-css.f9701755.chunk.js +1 -0
- package/build/codemirror-theme.1563c1c2.chunk.js +1 -0
- package/build/content-manager.51651b3b.chunk.js +1 -0
- package/build/{content-type-builder-translation-ar-json.bce4d624.chunk.js → content-type-builder-translation-ar-json.f1fedc12.chunk.js} +1 -1
- package/build/{content-type-builder-translation-cs-json.785866b6.chunk.js → content-type-builder-translation-cs-json.2f7e2289.chunk.js} +1 -1
- package/build/{content-type-builder-translation-de-json.6faa019a.chunk.js → content-type-builder-translation-de-json.46017754.chunk.js} +1 -1
- package/build/content-type-builder-translation-dk-json.5c6344f9.chunk.js +1 -0
- package/build/{content-type-builder-translation-en-json.d860718a.chunk.js → content-type-builder-translation-en-json.d70fc3af.chunk.js} +1 -1
- package/build/{content-type-builder-translation-es-json.5a4f519b.chunk.js → content-type-builder-translation-es-json.7e2055ad.chunk.js} +1 -1
- package/build/{content-type-builder-translation-fr-json.2156f48c.chunk.js → content-type-builder-translation-fr-json.8f66eb66.chunk.js} +1 -1
- package/build/content-type-builder-translation-id-json.aab2f426.chunk.js +1 -0
- package/build/{content-type-builder-translation-it-json.dc154c62.chunk.js → content-type-builder-translation-it-json.4c91e895.chunk.js} +1 -1
- package/build/{content-type-builder-translation-ja-json.9f8695a0.chunk.js → content-type-builder-translation-ja-json.c239ba90.chunk.js} +1 -1
- package/build/content-type-builder-translation-ko-json.2a5e0769.chunk.js +1 -0
- package/build/{content-type-builder-translation-ms-json.cfc21fb6.chunk.js → content-type-builder-translation-ms-json.124be88c.chunk.js} +1 -1
- package/build/{content-type-builder-translation-nl-json.4d742025.chunk.js → content-type-builder-translation-nl-json.98a240b8.chunk.js} +1 -1
- package/build/{content-type-builder-translation-pl-json.1b701a76.chunk.js → content-type-builder-translation-pl-json.2abc61bd.chunk.js} +1 -1
- package/build/{content-type-builder-translation-pt-BR-json.2c514ada.chunk.js → content-type-builder-translation-pt-BR-json.c0415545.chunk.js} +1 -1
- package/build/{content-type-builder-translation-pt-json.a3c4315c.chunk.js → content-type-builder-translation-pt-json.ab3e086d.chunk.js} +1 -1
- package/build/{content-type-builder-translation-ru-json.72173619.chunk.js → content-type-builder-translation-ru-json.1a6779fd.chunk.js} +1 -1
- package/build/{content-type-builder-translation-sk-json.e654be3b.chunk.js → content-type-builder-translation-sk-json.5c82f020.chunk.js} +1 -1
- package/build/{content-type-builder-translation-th-json.403aa6a4.chunk.js → content-type-builder-translation-th-json.24ee19eb.chunk.js} +1 -1
- package/build/{content-type-builder-translation-tr-json.72027971.chunk.js → content-type-builder-translation-tr-json.30434835.chunk.js} +1 -1
- package/build/{content-type-builder-translation-uk-json.a1b9f71b.chunk.js → content-type-builder-translation-uk-json.771662ef.chunk.js} +1 -1
- package/build/{content-type-builder-translation-zh-Hans-json.4c242866.chunk.js → content-type-builder-translation-zh-Hans-json.070020ae.chunk.js} +1 -1
- package/build/{content-type-builder-translation-zh-json.3b3eb4e8.chunk.js → content-type-builder-translation-zh-json.9708310d.chunk.js} +1 -1
- package/build/content-type-builder.c815d0c6.chunk.js +1 -0
- package/build/cropper-css.45c47fe3.chunk.js +1 -0
- package/build/{cs-json.ff08076e.chunk.js → cs-json.b8ba75b8.chunk.js} +1 -1
- package/build/{d878b0a6a1144760244ff0665888404c.woff2 → d878b0a6a1144760244f.woff2} +0 -0
- package/build/de-json.e01bdeae.chunk.js +1 -0
- package/build/dk-json.9516eb08.chunk.js +1 -0
- package/build/{eeccf4f66002c6f2ba24d3d22f2434c2.woff → eeccf4f66002c6f2ba24.woff} +0 -0
- package/build/email-settings-page.03e18bb2.chunk.js +1 -0
- package/build/email-translation-ar-json.95d90eb4.chunk.js +1 -0
- package/build/email-translation-cs-json.dfd1f3f2.chunk.js +1 -0
- package/build/email-translation-de-json.559a7d5f.chunk.js +1 -0
- package/build/email-translation-dk-json.e1480892.chunk.js +1 -0
- package/build/email-translation-en-json.fa0dc92b.chunk.js +1 -0
- package/build/email-translation-es-json.abbba8e3.chunk.js +1 -0
- package/build/email-translation-fr-json.49c3c888.chunk.js +1 -0
- package/build/email-translation-id-json.e3c2101d.chunk.js +1 -0
- package/build/email-translation-it-json.3de61cb6.chunk.js +1 -0
- package/build/email-translation-ja-json.66337e44.chunk.js +1 -0
- package/build/email-translation-ko-json.52bbd7b4.chunk.js +1 -0
- package/build/email-translation-ms-json.e39256df.chunk.js +1 -0
- package/build/email-translation-nl-json.12d28adb.chunk.js +1 -0
- package/build/email-translation-pl-json.9585a84e.chunk.js +1 -0
- package/build/email-translation-pt-BR-json.6c04b3ef.chunk.js +1 -0
- package/build/email-translation-pt-json.0239be04.chunk.js +1 -0
- package/build/email-translation-ru-json.f3b4fecc.chunk.js +1 -0
- package/build/email-translation-sk-json.76dbaaa6.chunk.js +1 -0
- package/build/email-translation-th-json.25ad73e7.chunk.js +1 -0
- package/build/email-translation-tr-json.ae04a9f2.chunk.js +1 -0
- package/build/email-translation-uk-json.03b27b08.chunk.js +1 -0
- package/build/email-translation-vi-json.3e1dd5b3.chunk.js +1 -0
- package/build/email-translation-zh-Hans-json.0df4ca59.chunk.js +1 -0
- package/build/email-translation-zh-json.82978eb0.chunk.js +1 -0
- package/build/en-json.9e3c8615.chunk.js +1 -0
- package/build/{es-json.060b658c.chunk.js → es-json.fa8ddd1d.chunk.js} +1 -1
- package/build/{f691f37e57f04c152e2315ab7dbad881.woff → f691f37e57f04c152e23.woff} +0 -0
- package/build/{fde9b1ad0670d29a251605a5e8eef02b.png → fde9b1ad0670d29a2516.png} +0 -0
- package/build/fontawesome-css-all.9c41f1d7.chunk.js +1 -0
- package/build/fontawesome-css.24c8dbfc.chunk.js +1 -0
- package/build/fr-json.bae03a2c.chunk.js +1 -0
- package/build/{he-json.fafa8569.chunk.js → he-json.86f9e663.chunk.js} +1 -1
- package/build/highlight.js.90b600ee.chunk.js +1 -0
- package/build/i18n-settings-page.89d1776c.chunk.js +1 -0
- package/build/i18n-translation-en-json.239b740f.chunk.js +1 -0
- package/build/i18n-translation-fr-json.b52474fc.chunk.js +1 -0
- package/build/i18n-translation-ko-json.e88e11ef.chunk.js +1 -0
- package/build/{i18n-translation-zh-Hans-json.670b4940.chunk.js → i18n-translation-zh-Hans-json.4c17fed0.chunk.js} +1 -1
- package/build/{id-json.3372dadc.chunk.js → id-json.0b0c9731.chunk.js} +1 -1
- package/build/index.html +1 -1
- package/build/{it-json.0e5d5fdb.chunk.js → it-json.939916bc.chunk.js} +1 -1
- package/build/{ja-json.14eaee93.chunk.js → ja-json.57abaacb.chunk.js} +1 -1
- package/build/ko-json.29633034.chunk.js +1 -0
- package/build/main.ca080a1e.js +2 -0
- package/build/{main.a5bd9650.js.LICENSE.txt → main.ca080a1e.js.LICENSE.txt} +0 -0
- package/build/{ms-json.a66beabc.chunk.js → ms-json.5e5d12f9.chunk.js} +1 -1
- package/build/nl-json.d757328d.chunk.js +1 -0
- package/build/{no-json.25f63ee7.chunk.js → no-json.ff46b126.chunk.js} +1 -1
- package/build/{pl-json.3d7884e1.chunk.js → pl-json.6bff1d54.chunk.js} +1 -1
- package/build/{pt-BR-json.e21cd994.chunk.js → pt-BR-json.6d1cfdb2.chunk.js} +1 -1
- package/build/{pt-json.21a66a61.chunk.js → pt-json.b23d9a79.chunk.js} +1 -1
- package/build/{ru-json.ca2b6c3c.chunk.js → ru-json.bff93229.chunk.js} +1 -1
- package/build/runtime~main.6f530910.js +1 -0
- package/build/{sk-json.7f750e28.chunk.js → sk-json.2eb1ec0d.chunk.js} +1 -1
- package/build/sso-settings-page.d4ab164b.chunk.js +1 -0
- package/build/{sv-json.3b5cc7f9.chunk.js → sv-json.8ac61ecf.chunk.js} +1 -1
- package/build/{th-json.694b4038.chunk.js → th-json.6e4502a3.chunk.js} +1 -1
- package/build/{tr-json.a842843a.chunk.js → tr-json.eaca955b.chunk.js} +1 -1
- package/build/uk-json.c50ad2a8.chunk.js +1 -0
- package/build/{upload-settings.8a380d3d.chunk.js → upload-settings.aa148b01.chunk.js} +1 -1
- package/build/{upload-translation-de-json.b4ff3c56.chunk.js → upload-translation-de-json.00f90715.chunk.js} +1 -1
- package/build/{upload-translation-dk-json.f37ae5c0.chunk.js → upload-translation-dk-json.e8c0a891.chunk.js} +1 -1
- package/build/{upload-translation-en-json.58d8ce44.chunk.js → upload-translation-en-json.31ea0622.chunk.js} +1 -1
- package/build/upload-translation-es-json.42b5c758.chunk.js +1 -0
- package/build/{upload-translation-fr-json.0f4b3839.chunk.js → upload-translation-fr-json.ccb4ad8b.chunk.js} +1 -1
- package/build/{upload-translation-he-json.4b5e48bc.chunk.js → upload-translation-he-json.5dc34ea8.chunk.js} +1 -1
- package/build/upload-translation-it-json.c1809a47.chunk.js +1 -0
- package/build/{upload-translation-ja-json.9e1193c7.chunk.js → upload-translation-ja-json.568f097e.chunk.js} +1 -1
- package/build/upload-translation-ko-json.da369eef.chunk.js +1 -0
- package/build/{upload-translation-ms-json.bfb86c2e.chunk.js → upload-translation-ms-json.be669f81.chunk.js} +1 -1
- package/build/{upload-translation-pl-json.e0282fa4.chunk.js → upload-translation-pl-json.67685825.chunk.js} +1 -1
- package/build/{upload-translation-pt-BR-json.ad6bb9f8.chunk.js → upload-translation-pt-BR-json.f7b1133d.chunk.js} +1 -1
- package/build/{upload-translation-ru-json.4303b6a0.chunk.js → upload-translation-ru-json.54c031aa.chunk.js} +1 -1
- package/build/{upload-translation-sk-json.90a0bc6c.chunk.js → upload-translation-sk-json.f643dfc2.chunk.js} +1 -1
- package/build/{upload-translation-th-json.cf0d62e0.chunk.js → upload-translation-th-json.88ee2090.chunk.js} +1 -1
- package/build/{upload-translation-uk-json.ec345d61.chunk.js → upload-translation-uk-json.1a90e73c.chunk.js} +1 -1
- package/build/{upload-translation-zh-Hans-json.f320fa39.chunk.js → upload-translation-zh-Hans-json.ac1dc0b9.chunk.js} +1 -1
- package/build/{upload-translation-zh-json.9ad30216.chunk.js → upload-translation-zh-json.164ac601.chunk.js} +1 -1
- package/build/{upload.1e3e2685.chunk.js → upload.1991e997.chunk.js} +1 -1
- package/build/{users-advanced-settings-page.bda19eae.chunk.js → users-advanced-settings-page.23ed7ee9.chunk.js} +1 -1
- package/build/users-email-settings-page.64dc429a.chunk.js +1 -0
- package/build/{users-permissions-translation-ar-json.6fe0dcf5.chunk.js → users-permissions-translation-ar-json.bdddd0d7.chunk.js} +1 -1
- package/build/{users-permissions-translation-cs-json.dd4bb452.chunk.js → users-permissions-translation-cs-json.7881d3ff.chunk.js} +1 -1
- package/build/{users-permissions-translation-de-json.1505b462.chunk.js → users-permissions-translation-de-json.8d53c619.chunk.js} +1 -1
- package/build/{users-permissions-translation-dk-json.6b47229f.chunk.js → users-permissions-translation-dk-json.a36b323b.chunk.js} +1 -1
- package/build/{users-permissions-translation-en-json.3e650c44.chunk.js → users-permissions-translation-en-json.1993655e.chunk.js} +1 -1
- package/build/{users-permissions-translation-es-json.768cc00e.chunk.js → users-permissions-translation-es-json.c8ef51bd.chunk.js} +1 -1
- package/build/users-permissions-translation-fr-json.a2172545.chunk.js +1 -0
- package/build/users-permissions-translation-id-json.8f17982a.chunk.js +1 -0
- package/build/{users-permissions-translation-it-json.baa4f859.chunk.js → users-permissions-translation-it-json.87952a24.chunk.js} +1 -1
- package/build/{users-permissions-translation-ja-json.3ddd4418.chunk.js → users-permissions-translation-ja-json.5915d9ef.chunk.js} +1 -1
- package/build/users-permissions-translation-ko-json.f1ca6cc4.chunk.js +1 -0
- package/build/{users-permissions-translation-ms-json.dc405667.chunk.js → users-permissions-translation-ms-json.2268324c.chunk.js} +1 -1
- package/build/{users-permissions-translation-nl-json.2d8e847a.chunk.js → users-permissions-translation-nl-json.4e1231dd.chunk.js} +1 -1
- package/build/{users-permissions-translation-pl-json.b150dfb0.chunk.js → users-permissions-translation-pl-json.107638b5.chunk.js} +1 -1
- package/build/{users-permissions-translation-pt-BR-json.0c494c69.chunk.js → users-permissions-translation-pt-BR-json.8dafc053.chunk.js} +1 -1
- package/build/{users-permissions-translation-pt-json.0fccc389.chunk.js → users-permissions-translation-pt-json.3322464f.chunk.js} +1 -1
- package/build/users-permissions-translation-ru-json.44dd1f10.chunk.js +1 -0
- package/build/{users-permissions-translation-sk-json.2602e768.chunk.js → users-permissions-translation-sk-json.fe7cc044.chunk.js} +1 -1
- package/build/users-permissions-translation-sv-json.e7e1684b.chunk.js +1 -0
- package/build/{users-permissions-translation-th-json.abe0558b.chunk.js → users-permissions-translation-th-json.bb544ee3.chunk.js} +1 -1
- package/build/{users-permissions-translation-tr-json.269ee593.chunk.js → users-permissions-translation-tr-json.30f3ca90.chunk.js} +1 -1
- package/build/{users-permissions-translation-uk-json.ffd9a4ee.chunk.js → users-permissions-translation-uk-json.634f2569.chunk.js} +1 -1
- package/build/{users-permissions-translation-vi-json.c2cd19d5.chunk.js → users-permissions-translation-vi-json.605d88bc.chunk.js} +1 -1
- package/build/{users-permissions-translation-zh-Hans-json.2d909528.chunk.js → users-permissions-translation-zh-Hans-json.85480dab.chunk.js} +1 -1
- package/build/{users-permissions-translation-zh-json.7f3027c5.chunk.js → users-permissions-translation-zh-json.99932731.chunk.js} +1 -1
- package/build/users-providers-settings-page.329f102a.chunk.js +1 -0
- package/build/users-roles-settings-page.e28982b6.chunk.js +1 -0
- package/build/{vi-json.c25f42fe.chunk.js → vi-json.e993857a.chunk.js} +1 -1
- package/build/webhook-edit-page.678af4e2.chunk.js +1 -0
- package/build/{webhook-list-page.aae66737.chunk.js → webhook-list-page.5abda9c2.chunk.js} +1 -1
- package/build/zh-Hans-json.fcc53388.chunk.js +1 -0
- package/build/zh-json.496bd6c4.chunk.js +1 -0
- package/ee/admin/pages/SettingsPage/pages/Roles/CreatePage/index.js +1 -1
- package/ee/admin/pages/SettingsPage/pages/Users/components/MagicLink/index.js +1 -1
- package/index.html +1 -1
- package/index.js +40 -1
- package/jest.config.front.js +10 -0
- package/package.json +36 -38
- package/server/register.js +5 -0
- package/server/routes/serve-admin-panel.js +59 -0
- package/server/strategies/api-token.js +2 -1
- package/webpack.alias.js +0 -6
- package/webpack.config.js +12 -10
- package/build/3226.0dc582b2.chunk.js +0 -2
- package/build/4261.b7b7ac00.chunk.js +0 -1
- package/build/4362.e71cf036.chunk.js +0 -1
- package/build/8447.32ee17be.chunk.js +0 -2
- package/build/8447.32ee17be.chunk.js.LICENSE.txt +0 -22
- package/build/849.fc26299c.chunk.js +0 -1
- package/build/9238.f112d6c9.chunk.js +0 -1
- package/build/Admin-authenticatedApp.0298a225.chunk.js +0 -1
- package/build/Admin_marketplace.201373e2.chunk.js +0 -1
- package/build/Admin_pluginsPage.22390055.chunk.js +0 -1
- package/build/Admin_profilePage.3aa61921.chunk.js +0 -1
- package/build/Admin_settingsPage.363ad01d.chunk.js +0 -1
- package/build/admin-edit-roles-page.e91bd9e5.chunk.js +0 -1
- package/build/admin-edit-users.bcdd2e4d.chunk.js +0 -1
- package/build/admin-users.a2d08780.chunk.js +0 -1
- package/build/api-tokens-list-page.d451255e.chunk.js +0 -1
- package/build/codemirror-css.7b034e03.chunk.js +0 -1
- package/build/codemirror-theme.4a209ed5.chunk.js +0 -1
- package/build/content-manager.4a449a52.chunk.js +0 -1
- package/build/content-type-builder-translation-dk-json.215eca36.chunk.js +0 -1
- package/build/content-type-builder-translation-id-json.e66f4e0a.chunk.js +0 -1
- package/build/content-type-builder-translation-ko-json.20ad3eac.chunk.js +0 -1
- package/build/content-type-builder.eeae4ee8.chunk.js +0 -1
- package/build/cropper-css.b71d1229.chunk.js +0 -1
- package/build/de-json.93987708.chunk.js +0 -1
- package/build/dk-json.97f8f309.chunk.js +0 -1
- package/build/email-settings-page.def5ceaf.chunk.js +0 -1
- package/build/email-translation-ar-json.536b0217.chunk.js +0 -1
- package/build/email-translation-cs-json.8f533c9b.chunk.js +0 -1
- package/build/email-translation-de-json.89f5373e.chunk.js +0 -1
- package/build/email-translation-dk-json.9c95cf96.chunk.js +0 -1
- package/build/email-translation-en-json.5ec38fe9.chunk.js +0 -1
- package/build/email-translation-es-json.fec78330.chunk.js +0 -1
- package/build/email-translation-fr-json.76afb1c3.chunk.js +0 -1
- package/build/email-translation-id-json.1b3e055a.chunk.js +0 -1
- package/build/email-translation-it-json.7273fee2.chunk.js +0 -1
- package/build/email-translation-ja-json.b75afc52.chunk.js +0 -1
- package/build/email-translation-ko-json.eb9a23cd.chunk.js +0 -1
- package/build/email-translation-ms-json.af7c5861.chunk.js +0 -1
- package/build/email-translation-nl-json.10fec023.chunk.js +0 -1
- package/build/email-translation-pl-json.ebda42d5.chunk.js +0 -1
- package/build/email-translation-pt-BR-json.338d8b7c.chunk.js +0 -1
- package/build/email-translation-pt-json.1cd0fedf.chunk.js +0 -1
- package/build/email-translation-ru-json.2c369331.chunk.js +0 -1
- package/build/email-translation-sk-json.ba2e026d.chunk.js +0 -1
- package/build/email-translation-th-json.16457076.chunk.js +0 -1
- package/build/email-translation-tr-json.92e0a5d9.chunk.js +0 -1
- package/build/email-translation-uk-json.d00dd5b1.chunk.js +0 -1
- package/build/email-translation-vi-json.ed425dde.chunk.js +0 -1
- package/build/email-translation-zh-Hans-json.e2c630b6.chunk.js +0 -1
- package/build/email-translation-zh-json.2a06ebac.chunk.js +0 -1
- package/build/en-json.6282a00f.chunk.js +0 -1
- package/build/fontawesome-css-all.162c8569.chunk.js +0 -1
- package/build/fontawesome-css.b1736497.chunk.js +0 -1
- package/build/fr-json.f7d484a8.chunk.js +0 -1
- package/build/highlight.js.3f31aed7.chunk.js +0 -1
- package/build/i18n-settings-page.00c74503.chunk.js +0 -1
- package/build/i18n-translation-en-json.17af559c.chunk.js +0 -1
- package/build/i18n-translation-fr-json.482f6933.chunk.js +0 -1
- package/build/ko-json.7203b08b.chunk.js +0 -1
- package/build/main.a5bd9650.js +0 -2
- package/build/nl-json.9c7f83db.chunk.js +0 -1
- package/build/runtime~main.bddfe3c6.js +0 -1
- package/build/sso-settings-page.bd7a8fd7.chunk.js +0 -1
- package/build/uk-json.3b8f967b.chunk.js +0 -1
- package/build/upload-translation-es-json.f9e9ffdf.chunk.js +0 -1
- package/build/upload-translation-it-json.fb24c332.chunk.js +0 -1
- package/build/users-email-settings-page.b1d1f551.chunk.js +0 -1
- package/build/users-permissions-translation-fr-json.12f3c930.chunk.js +0 -1
- package/build/users-permissions-translation-id-json.ec3deaf0.chunk.js +0 -1
- package/build/users-permissions-translation-ko-json.90c2d129.chunk.js +0 -1
- package/build/users-permissions-translation-ru-json.4389c542.chunk.js +0 -1
- package/build/users-permissions-translation-sv-json.438e46f7.chunk.js +0 -1
- package/build/users-providers-settings-page.733a51ec.chunk.js +0 -1
- package/build/users-roles-settings-page.0eb926e7.chunk.js +0 -1
- package/build/webhook-edit-page.634e50da.chunk.js +0 -1
- package/build/zh-Hans-json.e5041b18.chunk.js +0 -1
- package/build/zh-json.414d826f.chunk.js +0 -1
|
@@ -31,36 +31,40 @@ const DragButton = styled(ActionBox)`
|
|
|
31
31
|
const FieldContainer = styled(Flex)`
|
|
32
32
|
display: inline-flex;
|
|
33
33
|
max-height: ${32 / 16}rem;
|
|
34
|
-
|
|
35
|
-
|
|
34
|
+
opacity: ${({ transparent }) => (transparent ? 0 : 1)};
|
|
35
|
+
background-color: ${({ theme, isSibling }) =>
|
|
36
|
+
isSibling ? theme.colors.neutral100 : theme.colors.primary100};
|
|
37
|
+
border: 1px solid
|
|
38
|
+
${({ theme, isSibling }) => (isSibling ? theme.colors.neutral150 : theme.colors.primary200)};
|
|
36
39
|
|
|
37
40
|
svg {
|
|
38
41
|
width: ${10 / 16}rem;
|
|
39
42
|
height: ${10 / 16}rem;
|
|
40
43
|
|
|
41
44
|
path {
|
|
42
|
-
fill: ${({ theme }) => theme.colors.primary600};
|
|
45
|
+
fill: ${({ theme, isSibling }) => (isSibling ? undefined : theme.colors.primary600)};
|
|
43
46
|
}
|
|
44
47
|
}
|
|
45
48
|
|
|
46
49
|
${Typography} {
|
|
47
|
-
color: ${({ theme }) => theme.colors.primary600};
|
|
50
|
+
color: ${({ theme, isSibling }) => (isSibling ? undefined : theme.colors.primary600)};
|
|
48
51
|
}
|
|
49
52
|
|
|
50
53
|
${DragButton} {
|
|
51
|
-
border-right: 1px solid
|
|
54
|
+
border-right: 1px solid
|
|
55
|
+
${({ theme, isSibling }) => (isSibling ? theme.colors.neutral150 : theme.colors.primary200)};
|
|
52
56
|
}
|
|
53
57
|
`;
|
|
54
58
|
|
|
55
|
-
const CardPreview = ({ labelField }) => {
|
|
59
|
+
const CardPreview = ({ labelField, transparent, isSibling }) => {
|
|
56
60
|
const cardEllipsisTitle = ellipsisCardTitle(labelField);
|
|
57
61
|
|
|
58
62
|
return (
|
|
59
63
|
<FieldContainer
|
|
60
|
-
borderColor="neutral150"
|
|
61
|
-
background="neutral100"
|
|
62
64
|
hasRadius
|
|
63
65
|
justifyContent="space-between"
|
|
66
|
+
transparent={transparent}
|
|
67
|
+
isSibling={isSibling}
|
|
64
68
|
>
|
|
65
69
|
<Stack horizontal size={3}>
|
|
66
70
|
<DragButton alignItems="center">
|
|
@@ -80,8 +84,15 @@ const CardPreview = ({ labelField }) => {
|
|
|
80
84
|
);
|
|
81
85
|
};
|
|
82
86
|
|
|
87
|
+
CardPreview.defaultProps = {
|
|
88
|
+
isSibling: false,
|
|
89
|
+
transparent: false,
|
|
90
|
+
};
|
|
91
|
+
|
|
83
92
|
CardPreview.propTypes = {
|
|
93
|
+
isSibling: PropTypes.bool,
|
|
84
94
|
labelField: PropTypes.string.isRequired,
|
|
95
|
+
transparent: PropTypes.bool,
|
|
85
96
|
};
|
|
86
97
|
|
|
87
98
|
export default CardPreview;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { useEffect, useRef } from 'react';
|
|
1
|
+
import React, { useEffect, useRef, useState } from 'react';
|
|
2
2
|
import styled from 'styled-components';
|
|
3
3
|
import PropTypes from 'prop-types';
|
|
4
4
|
import { useDrag, useDrop } from 'react-dnd';
|
|
@@ -11,6 +11,7 @@ import { Stack } from '@strapi/design-system/Stack';
|
|
|
11
11
|
import Pencil from '@strapi/icons/Pencil';
|
|
12
12
|
import Cross from '@strapi/icons/Cross';
|
|
13
13
|
import Drag from '@strapi/icons/Drag';
|
|
14
|
+
import CardPreview from './CardPreview';
|
|
14
15
|
import ellipsisCardTitle from '../utils/ellipsisCardTitle';
|
|
15
16
|
import { getTrad, ItemTypes } from '../../../utils';
|
|
16
17
|
|
|
@@ -38,7 +39,6 @@ const DragButton = styled(ActionButton)`
|
|
|
38
39
|
const FieldContainer = styled(Flex)`
|
|
39
40
|
max-height: ${32 / 16}rem;
|
|
40
41
|
cursor: pointer;
|
|
41
|
-
opacity: ${({ isDragging }) => (isDragging ? 0 : 1)};
|
|
42
42
|
|
|
43
43
|
svg {
|
|
44
44
|
width: ${10 / 16}rem;
|
|
@@ -77,14 +77,18 @@ const FieldWrapper = styled(Box)`
|
|
|
77
77
|
|
|
78
78
|
const DraggableCard = ({
|
|
79
79
|
index,
|
|
80
|
+
isDraggingSibling,
|
|
80
81
|
labelField,
|
|
81
82
|
onClickEditField,
|
|
82
83
|
onMoveField,
|
|
83
84
|
onRemoveField,
|
|
84
85
|
name,
|
|
86
|
+
setIsDraggingSibling,
|
|
85
87
|
}) => {
|
|
86
88
|
const { formatMessage } = useIntl();
|
|
87
|
-
const
|
|
89
|
+
const dragRef = useRef(null);
|
|
90
|
+
const dropRef = useRef(null);
|
|
91
|
+
const [, forceRerenderAfterDnd] = useState(false);
|
|
88
92
|
const editButtonRef = useRef();
|
|
89
93
|
const cardEllipsisTitle = ellipsisCardTitle(labelField);
|
|
90
94
|
|
|
@@ -96,8 +100,8 @@ const DraggableCard = ({
|
|
|
96
100
|
|
|
97
101
|
const [, drop] = useDrop({
|
|
98
102
|
accept: ItemTypes.FIELD,
|
|
99
|
-
hover(item) {
|
|
100
|
-
if (!
|
|
103
|
+
hover(item, monitor) {
|
|
104
|
+
if (!dropRef.current) {
|
|
101
105
|
return;
|
|
102
106
|
}
|
|
103
107
|
const dragIndex = item.index;
|
|
@@ -108,6 +112,27 @@ const DraggableCard = ({
|
|
|
108
112
|
return;
|
|
109
113
|
}
|
|
110
114
|
|
|
115
|
+
// Determine rectangle on screen
|
|
116
|
+
const hoverBoundingRect = dropRef.current.getBoundingClientRect();
|
|
117
|
+
// Get vertical middle
|
|
118
|
+
const hoverMiddleX = (hoverBoundingRect.right - hoverBoundingRect.left) / 2;
|
|
119
|
+
// Determine mouse position
|
|
120
|
+
const clientOffset = monitor.getClientOffset();
|
|
121
|
+
// Get pixels to the top
|
|
122
|
+
const hoverClientX = clientOffset.x - hoverBoundingRect.left;
|
|
123
|
+
|
|
124
|
+
// Only perform the move when the mouse has crossed half of the items height
|
|
125
|
+
// When dragging downwards, only move when the cursor is below 50%
|
|
126
|
+
// When dragging upwards, only move when the cursor is above 50%
|
|
127
|
+
// Dragging downwards
|
|
128
|
+
if (dragIndex > hoverIndex && hoverClientX > hoverMiddleX) {
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
// Dragging upwards
|
|
132
|
+
if (dragIndex < hoverIndex && hoverClientX < hoverMiddleX) {
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
|
|
111
136
|
onMoveField(dragIndex, hoverIndex);
|
|
112
137
|
|
|
113
138
|
item.index = hoverIndex;
|
|
@@ -122,86 +147,118 @@ const DraggableCard = ({
|
|
|
122
147
|
collect: monitor => ({
|
|
123
148
|
isDragging: monitor.isDragging(),
|
|
124
149
|
}),
|
|
150
|
+
end: () => {
|
|
151
|
+
setIsDraggingSibling(false);
|
|
152
|
+
},
|
|
125
153
|
});
|
|
126
154
|
|
|
127
155
|
useEffect(() => {
|
|
128
|
-
preview(getEmptyImage(), { captureDraggingState:
|
|
156
|
+
preview(getEmptyImage(), { captureDraggingState: false });
|
|
129
157
|
}, [preview]);
|
|
130
158
|
|
|
131
|
-
|
|
159
|
+
useEffect(() => {
|
|
160
|
+
if (isDragging) {
|
|
161
|
+
setIsDraggingSibling(true);
|
|
162
|
+
}
|
|
163
|
+
}, [isDragging, setIsDraggingSibling]);
|
|
164
|
+
|
|
165
|
+
// Effect in order to force a rerender after reordering the components
|
|
166
|
+
// Since we are removing the Accordion when doing the DnD we are losing the dragRef, therefore the replaced element cannot be dragged
|
|
167
|
+
// anymore, this hack forces a rerender in order to apply the dragRef
|
|
168
|
+
useEffect(() => {
|
|
169
|
+
if (!isDraggingSibling) {
|
|
170
|
+
forceRerenderAfterDnd(prev => !prev);
|
|
171
|
+
}
|
|
172
|
+
}, [isDraggingSibling]);
|
|
173
|
+
|
|
174
|
+
// Create the refs
|
|
175
|
+
// We need 1 for the drop target
|
|
176
|
+
// 1 for the drag target
|
|
177
|
+
const refs = {
|
|
178
|
+
dragRef: drag(dragRef),
|
|
179
|
+
dropRef: drop(dropRef),
|
|
180
|
+
};
|
|
132
181
|
|
|
133
182
|
return (
|
|
134
|
-
<FieldWrapper>
|
|
135
|
-
<
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
{
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
{
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
}
|
|
172
|
-
{
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
}
|
|
186
|
-
{
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
183
|
+
<FieldWrapper ref={refs ? refs.dropRef : null}>
|
|
184
|
+
{isDragging && <CardPreview transparent labelField={cardEllipsisTitle} />}
|
|
185
|
+
{!isDragging && isDraggingSibling && <CardPreview isSibling labelField={cardEllipsisTitle} />}
|
|
186
|
+
|
|
187
|
+
{!isDragging && !isDraggingSibling && (
|
|
188
|
+
<FieldContainer
|
|
189
|
+
borderColor="neutral150"
|
|
190
|
+
background="neutral100"
|
|
191
|
+
hasRadius
|
|
192
|
+
justifyContent="space-between"
|
|
193
|
+
onClick={handleClickEditRow}
|
|
194
|
+
isDragging={isDragging}
|
|
195
|
+
>
|
|
196
|
+
<Stack horizontal size={3}>
|
|
197
|
+
<DragButton
|
|
198
|
+
as='span'
|
|
199
|
+
aria-label={formatMessage(
|
|
200
|
+
{
|
|
201
|
+
id: getTrad('components.DraggableCard.move.field'),
|
|
202
|
+
defaultMessage: 'Move {item}',
|
|
203
|
+
},
|
|
204
|
+
{ item: name }
|
|
205
|
+
)}
|
|
206
|
+
onClick={e => e.stopPropagation()}
|
|
207
|
+
ref={refs.dragRef}
|
|
208
|
+
type="button"
|
|
209
|
+
>
|
|
210
|
+
<Drag />
|
|
211
|
+
</DragButton>
|
|
212
|
+
<Typography fontWeight="bold">{cardEllipsisTitle}</Typography>
|
|
213
|
+
</Stack>
|
|
214
|
+
<Flex paddingLeft={3}>
|
|
215
|
+
<ActionButton
|
|
216
|
+
ref={editButtonRef}
|
|
217
|
+
onClick={e => {
|
|
218
|
+
e.stopPropagation();
|
|
219
|
+
onClickEditField(name);
|
|
220
|
+
}}
|
|
221
|
+
aria-label={formatMessage(
|
|
222
|
+
{
|
|
223
|
+
id: getTrad('components.DraggableCard.edit.field'),
|
|
224
|
+
defaultMessage: 'Edit {item}',
|
|
225
|
+
},
|
|
226
|
+
{ item: name }
|
|
227
|
+
)}
|
|
228
|
+
type="button"
|
|
229
|
+
>
|
|
230
|
+
<Pencil />
|
|
231
|
+
</ActionButton>
|
|
232
|
+
<ActionButton
|
|
233
|
+
onClick={onRemoveField}
|
|
234
|
+
data-testid={`delete-${name}`}
|
|
235
|
+
aria-label={formatMessage(
|
|
236
|
+
{
|
|
237
|
+
id: getTrad('components.DraggableCard.delete.field'),
|
|
238
|
+
defaultMessage: 'Delete {item}',
|
|
239
|
+
},
|
|
240
|
+
{ item: name }
|
|
241
|
+
)}
|
|
242
|
+
type="button"
|
|
243
|
+
>
|
|
244
|
+
<Cross />
|
|
245
|
+
</ActionButton>
|
|
246
|
+
</Flex>
|
|
247
|
+
</FieldContainer>
|
|
248
|
+
)}
|
|
194
249
|
</FieldWrapper>
|
|
195
250
|
);
|
|
196
251
|
};
|
|
197
252
|
|
|
198
253
|
DraggableCard.propTypes = {
|
|
199
254
|
index: PropTypes.number.isRequired,
|
|
255
|
+
isDraggingSibling: PropTypes.bool.isRequired,
|
|
200
256
|
labelField: PropTypes.string.isRequired,
|
|
201
257
|
name: PropTypes.string.isRequired,
|
|
202
258
|
onClickEditField: PropTypes.func.isRequired,
|
|
203
259
|
onMoveField: PropTypes.func.isRequired,
|
|
204
260
|
onRemoveField: PropTypes.func.isRequired,
|
|
261
|
+
setIsDraggingSibling: PropTypes.func.isRequired,
|
|
205
262
|
};
|
|
206
263
|
|
|
207
264
|
export default DraggableCard;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React from 'react';
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
2
|
import styled from 'styled-components';
|
|
3
3
|
import { PropTypes } from 'prop-types';
|
|
4
4
|
import { useIntl } from 'react-intl';
|
|
@@ -35,6 +35,7 @@ const SortDisplayedFields = ({
|
|
|
35
35
|
onRemoveField,
|
|
36
36
|
}) => {
|
|
37
37
|
const { formatMessage } = useIntl();
|
|
38
|
+
const [isDraggingSibling, setIsDraggingSibling] = useState(false);
|
|
38
39
|
|
|
39
40
|
return (
|
|
40
41
|
<>
|
|
@@ -61,11 +62,13 @@ const SortDisplayedFields = ({
|
|
|
61
62
|
<DraggableCard
|
|
62
63
|
key={field}
|
|
63
64
|
index={index}
|
|
65
|
+
isDraggingSibling={isDraggingSibling}
|
|
64
66
|
onMoveField={onMoveField}
|
|
65
67
|
onClickEditField={onClickEditField}
|
|
66
68
|
onRemoveField={e => onRemoveField(e, index)}
|
|
67
69
|
name={field}
|
|
68
70
|
labelField={metadatas[field].list.label || field}
|
|
71
|
+
setIsDraggingSibling={setIsDraggingSibling}
|
|
69
72
|
/>
|
|
70
73
|
))}
|
|
71
74
|
</Stack>
|
|
@@ -191,7 +191,7 @@ const ListSettingsView = ({ layout, slug }) => {
|
|
|
191
191
|
<HeaderLayout
|
|
192
192
|
navigationAction={
|
|
193
193
|
<Link startIcon={<ArrowLeft />} to={goBackUrl} id="go-back">
|
|
194
|
-
{formatMessage({ id: 'app.components.go-back', defaultMessage: '
|
|
194
|
+
{formatMessage({ id: 'app.components.go-back', defaultMessage: 'Back' })}
|
|
195
195
|
</Link>
|
|
196
196
|
}
|
|
197
197
|
primaryAction={
|
|
@@ -24,6 +24,8 @@ import { Box } from '@strapi/design-system/Box';
|
|
|
24
24
|
import { ActionLayout, ContentLayout, HeaderLayout } from '@strapi/design-system/Layout';
|
|
25
25
|
import { useNotifyAT } from '@strapi/design-system/LiveRegions';
|
|
26
26
|
import { Button } from '@strapi/design-system/Button';
|
|
27
|
+
import { Link } from '@strapi/design-system/Link';
|
|
28
|
+
import ArrowLeft from '@strapi/icons/ArrowLeft';
|
|
27
29
|
import Plus from '@strapi/icons/Plus';
|
|
28
30
|
import Cog from '@strapi/icons/Cog';
|
|
29
31
|
import axios from 'axios';
|
|
@@ -234,29 +236,43 @@ function ListView({
|
|
|
234
236
|
)
|
|
235
237
|
: null;
|
|
236
238
|
|
|
237
|
-
const
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
239
|
+
const getCreateAction = props =>
|
|
240
|
+
canCreate ? (
|
|
241
|
+
<Button
|
|
242
|
+
{...props}
|
|
243
|
+
onClick={() => {
|
|
244
|
+
const trackerProperty = hasDraftAndPublish ? { status: 'draft' } : {};
|
|
245
|
+
|
|
246
|
+
trackUsageRef.current('willCreateEntry', trackerProperty);
|
|
247
|
+
push({
|
|
248
|
+
pathname: `${pathname}/create`,
|
|
249
|
+
search: query.plugins ? pluginsQueryParams : '',
|
|
250
|
+
});
|
|
251
|
+
}}
|
|
252
|
+
startIcon={<Plus />}
|
|
253
|
+
>
|
|
254
|
+
{formatMessage({
|
|
255
|
+
id: getTrad('HeaderLayout.button.label-add-entry'),
|
|
256
|
+
defaultMessage: 'Create new entry',
|
|
257
|
+
})}
|
|
258
|
+
</Button>
|
|
259
|
+
) : null;
|
|
256
260
|
|
|
257
261
|
return (
|
|
258
262
|
<Main aria-busy={isLoading}>
|
|
259
|
-
<HeaderLayout
|
|
263
|
+
<HeaderLayout
|
|
264
|
+
primaryAction={getCreateAction()}
|
|
265
|
+
subtitle={subtitle}
|
|
266
|
+
title={headerLayoutTitle}
|
|
267
|
+
navigationAction={
|
|
268
|
+
<Link startIcon={<ArrowLeft />} to="/content-manager/">
|
|
269
|
+
{formatMessage({
|
|
270
|
+
id: 'app.components.HeaderLayout.link.go-back',
|
|
271
|
+
defaultMessage: 'Back',
|
|
272
|
+
})}
|
|
273
|
+
</Link>
|
|
274
|
+
}
|
|
275
|
+
/>
|
|
260
276
|
{!canRead && (
|
|
261
277
|
<ActionLayout endActions={<InjectionZone area="contentManager.listView.actions" />} />
|
|
262
278
|
)}
|
|
@@ -320,6 +336,7 @@ function ListView({
|
|
|
320
336
|
// FIXME: remove the layout props drilling
|
|
321
337
|
layout={layout}
|
|
322
338
|
rows={data}
|
|
339
|
+
action={getCreateAction({ variant: 'secondary' })}
|
|
323
340
|
/>
|
|
324
341
|
<PaginationFooter pagination={{ pageCount: pagination?.pageCount || 1 }} />
|
|
325
342
|
</>
|
|
@@ -2,7 +2,7 @@ import adminPermissions from '../../../permissions';
|
|
|
2
2
|
|
|
3
3
|
const defaultGlobalLinks = [
|
|
4
4
|
{
|
|
5
|
-
intlLabel: { id: 'Settings.application.title', defaultMessage: '
|
|
5
|
+
intlLabel: { id: 'Settings.application.title', defaultMessage: 'Overview' },
|
|
6
6
|
to: '/settings/application-infos',
|
|
7
7
|
id: '000-application-infos',
|
|
8
8
|
isDisplayed: false,
|
|
@@ -4,7 +4,9 @@ const getUniqueIdentifier = async () => {
|
|
|
4
4
|
const fp = await FingerprintJS.load();
|
|
5
5
|
const result = await fp.get();
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
const deviceId = `web-fingerprint-${result.visitorId}`;
|
|
8
|
+
|
|
9
|
+
return deviceId;
|
|
8
10
|
};
|
|
9
11
|
|
|
10
12
|
export default getUniqueIdentifier;
|
|
@@ -178,7 +178,10 @@ const Register = ({ fieldsToDisable, noSignin, onSubmit, schema }) => {
|
|
|
178
178
|
: undefined
|
|
179
179
|
}
|
|
180
180
|
required
|
|
181
|
-
label={formatMessage({
|
|
181
|
+
label={formatMessage({
|
|
182
|
+
id: 'Auth.form.email.label',
|
|
183
|
+
defaultMessage: 'Email',
|
|
184
|
+
})}
|
|
182
185
|
type="email"
|
|
183
186
|
/>
|
|
184
187
|
<PasswordInput
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import React, { useEffect, useReducer } from 'react';
|
|
2
2
|
import axios from 'axios';
|
|
3
|
-
import
|
|
3
|
+
import camelCase from 'lodash/camelCase';
|
|
4
|
+
import get from 'lodash/get';
|
|
5
|
+
import omit from 'lodash/omit';
|
|
4
6
|
import { Redirect, useRouteMatch, useHistory } from 'react-router-dom';
|
|
5
7
|
import { auth, useQuery } from '@strapi/helper-plugin';
|
|
6
8
|
import PropTypes from 'prop-types';
|
|
@@ -117,7 +119,11 @@ const AuthPage = ({ hasAdmin, setHasAdmin }) => {
|
|
|
117
119
|
push('/');
|
|
118
120
|
} catch (err) {
|
|
119
121
|
if (err.response) {
|
|
120
|
-
const errorMessage = get(
|
|
122
|
+
const errorMessage = get(
|
|
123
|
+
err,
|
|
124
|
+
['response', 'data', 'error', 'message'],
|
|
125
|
+
'Something went wrong'
|
|
126
|
+
);
|
|
121
127
|
|
|
122
128
|
if (camelCase(errorMessage).toLowerCase() === 'usernotactive') {
|
|
123
129
|
push('/auth/oops');
|
|
@@ -211,6 +211,7 @@ const ProfilePage = () => {
|
|
|
211
211
|
value={values.firstname || ''}
|
|
212
212
|
type="text"
|
|
213
213
|
name="firstname"
|
|
214
|
+
required
|
|
214
215
|
/>
|
|
215
216
|
</GridItem>
|
|
216
217
|
<GridItem s={12} col={6}>
|
|
@@ -234,6 +235,7 @@ const ProfilePage = () => {
|
|
|
234
235
|
value={values.email || ''}
|
|
235
236
|
type="email"
|
|
236
237
|
name="email"
|
|
238
|
+
required
|
|
237
239
|
/>
|
|
238
240
|
</GridItem>
|
|
239
241
|
<GridItem s={12} col={6}>
|
|
@@ -409,12 +411,38 @@ const ProfilePage = () => {
|
|
|
409
411
|
paddingRight={7}
|
|
410
412
|
>
|
|
411
413
|
<Stack size={4}>
|
|
412
|
-
<
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
414
|
+
<Stack size={1}>
|
|
415
|
+
<Typography variant="delta" as="h2">
|
|
416
|
+
{formatMessage({
|
|
417
|
+
id: 'Settings.profile.form.section.experience.title',
|
|
418
|
+
defaultMessage: 'Experience',
|
|
419
|
+
})}
|
|
420
|
+
</Typography>
|
|
421
|
+
<Typography>
|
|
422
|
+
{formatMessage(
|
|
423
|
+
{
|
|
424
|
+
id:
|
|
425
|
+
'Settings.profile.form.section.experience.interfaceLanguageHelp',
|
|
426
|
+
defaultMessage:
|
|
427
|
+
'Selection will change the interface language only for you. Please refer to this {documentation} to make other languages available for your team.',
|
|
428
|
+
},
|
|
429
|
+
{
|
|
430
|
+
documentation: (
|
|
431
|
+
<a
|
|
432
|
+
target="_blank"
|
|
433
|
+
rel="noopener noreferrer"
|
|
434
|
+
href="https://docs.strapi.io/developer-docs/latest/development/admin-customization.html#locales"
|
|
435
|
+
>
|
|
436
|
+
{formatMessage({
|
|
437
|
+
id: 'Settings.profile.form.section.experience.documentation',
|
|
438
|
+
defaultMessage: 'documentation',
|
|
439
|
+
})}
|
|
440
|
+
</a>
|
|
441
|
+
),
|
|
442
|
+
}
|
|
443
|
+
)}
|
|
444
|
+
</Typography>
|
|
445
|
+
</Stack>
|
|
418
446
|
<Grid gap={5}>
|
|
419
447
|
<GridItem s={12} col={6}>
|
|
420
448
|
<Select
|
|
@@ -165,7 +165,7 @@ const ApiTokenCreateView = () => {
|
|
|
165
165
|
<Link startIcon={<ArrowLeft />} to="/settings/api-tokens">
|
|
166
166
|
{formatMessage({
|
|
167
167
|
id: 'app.components.go-back',
|
|
168
|
-
defaultMessage: '
|
|
168
|
+
defaultMessage: 'Back',
|
|
169
169
|
})}
|
|
170
170
|
</Link>
|
|
171
171
|
}
|
|
@@ -185,7 +185,7 @@ const ApiTokenCreateView = () => {
|
|
|
185
185
|
<Stack size={4}>
|
|
186
186
|
<Typography variant="delta" as="h2">
|
|
187
187
|
{formatMessage({
|
|
188
|
-
id: '
|
|
188
|
+
id: 'Settings.apiTokens.details',
|
|
189
189
|
defaultMessage: 'Details',
|
|
190
190
|
})}
|
|
191
191
|
</Typography>
|
|
@@ -208,6 +208,7 @@ const ApiTokenCreateView = () => {
|
|
|
208
208
|
})}
|
|
209
209
|
onChange={handleChange}
|
|
210
210
|
value={values.name}
|
|
211
|
+
required
|
|
211
212
|
/>
|
|
212
213
|
</GridItem>
|
|
213
214
|
<GridItem key="description" col={6} xs={12}>
|
|
@@ -26,10 +26,10 @@ const ApplicationInfosPage = () => {
|
|
|
26
26
|
<SettingsPageTitle name="Application" />
|
|
27
27
|
<Main>
|
|
28
28
|
<HeaderLayout
|
|
29
|
-
title={formatMessage({ id: 'Settings.application.title', defaultMessage: '
|
|
29
|
+
title={formatMessage({ id: 'Settings.application.title', defaultMessage: 'Overview' })}
|
|
30
30
|
subtitle={formatMessage({
|
|
31
31
|
id: 'Settings.application.description',
|
|
32
|
-
defaultMessage:
|
|
32
|
+
defaultMessage: 'Administration panel’s global information',
|
|
33
33
|
})}
|
|
34
34
|
/>
|
|
35
35
|
<ContentLayout>
|
|
@@ -45,8 +45,8 @@ const ApplicationInfosPage = () => {
|
|
|
45
45
|
<Stack size={5}>
|
|
46
46
|
<Typography variant="delta" as="h3">
|
|
47
47
|
{formatMessage({
|
|
48
|
-
id: 'Settings.application.
|
|
49
|
-
defaultMessage: '
|
|
48
|
+
id: 'Settings.application.details',
|
|
49
|
+
defaultMessage: 'Details',
|
|
50
50
|
})}
|
|
51
51
|
</Typography>
|
|
52
52
|
|
|
@@ -54,11 +54,24 @@ const ApplicationInfosPage = () => {
|
|
|
54
54
|
<GridItem col={6} s={12}>
|
|
55
55
|
<Typography variant="sigma" textColor="neutral600">
|
|
56
56
|
{formatMessage({
|
|
57
|
-
id: 'Settings.application.
|
|
58
|
-
defaultMessage: '
|
|
57
|
+
id: 'Settings.application.strapiVersion',
|
|
58
|
+
defaultMessage: 'strapi version',
|
|
59
59
|
})}
|
|
60
60
|
</Typography>
|
|
61
61
|
<Typography as="p">v{strapiVersion}</Typography>
|
|
62
|
+
<Link
|
|
63
|
+
href={
|
|
64
|
+
appInfos.communityEdition
|
|
65
|
+
? 'https://discord.strapi.io'
|
|
66
|
+
: 'https://support.strapi.io/support/home'
|
|
67
|
+
}
|
|
68
|
+
endIcon={<ExternalLink />}
|
|
69
|
+
>
|
|
70
|
+
{formatMessage({
|
|
71
|
+
id: 'Settings.application.get-help',
|
|
72
|
+
defaultMessage: 'Get help',
|
|
73
|
+
})}
|
|
74
|
+
</Link>
|
|
62
75
|
</GridItem>
|
|
63
76
|
<GridItem col={6} s={12}>
|
|
64
77
|
<Typography variant="sigma" textColor="neutral600">
|
|
@@ -96,7 +109,7 @@ const ApplicationInfosPage = () => {
|
|
|
96
109
|
<Link href="https://strapi.io/pricing-self-hosted" endIcon={<ExternalLink />}>
|
|
97
110
|
{formatMessage({
|
|
98
111
|
id: 'Settings.application.link-pricing',
|
|
99
|
-
defaultMessage: 'See all pricing',
|
|
112
|
+
defaultMessage: 'See all pricing plans',
|
|
100
113
|
})}
|
|
101
114
|
</Link>
|
|
102
115
|
</GridItem>
|