@strapi/admin 5.0.0-alpha.7 → 5.0.0-alpha.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/dist/admin/{AdminSeatInfo-5S4b9ytt.js → AdminSeatInfo-Gp4BFR1_.js} +2 -2
- package/dist/admin/{AdminSeatInfo-5S4b9ytt.js.map → AdminSeatInfo-Gp4BFR1_.js.map} +1 -1
- package/dist/admin/{AdminSeatInfo-A6gxA301.mjs → AdminSeatInfo-dDgFBcLY.mjs} +2 -2
- package/dist/admin/{AdminSeatInfo-A6gxA301.mjs.map → AdminSeatInfo-dDgFBcLY.mjs.map} +1 -1
- package/dist/admin/{ApplicationInfoPage-SaBco4KU.mjs → ApplicationInfoPage-GQLKLk5T.mjs} +3 -3
- package/dist/admin/{ApplicationInfoPage-SaBco4KU.mjs.map → ApplicationInfoPage-GQLKLk5T.mjs.map} +1 -1
- package/dist/admin/{ApplicationInfoPage-Fxy6RARu.js → ApplicationInfoPage-e_sOqQMh.js} +3 -3
- package/dist/admin/{ApplicationInfoPage-Fxy6RARu.js.map → ApplicationInfoPage-e_sOqQMh.js.map} +1 -1
- package/dist/admin/{AuthenticatedLayout-Iyagtqob.mjs → AuthenticatedLayout-3fYM18Xy.mjs} +3 -3
- package/dist/admin/{AuthenticatedLayout-Iyagtqob.mjs.map → AuthenticatedLayout-3fYM18Xy.mjs.map} +1 -1
- package/dist/admin/{AuthenticatedLayout-tRi16L9c.js → AuthenticatedLayout-gGQYIisy.js} +3 -3
- package/dist/admin/{AuthenticatedLayout-tRi16L9c.js.map → AuthenticatedLayout-gGQYIisy.js.map} +1 -1
- package/dist/admin/{ComponentConfigurationPage-6CnnkE6E.mjs → ComponentConfigurationPage-0kf7a5LK.mjs} +2 -2
- package/dist/admin/{ComponentConfigurationPage-6CnnkE6E.mjs.map → ComponentConfigurationPage-0kf7a5LK.mjs.map} +1 -1
- package/dist/admin/{ComponentConfigurationPage-LpuZH_80.js → ComponentConfigurationPage-U7RcNJFs.js} +2 -2
- package/dist/admin/{ComponentConfigurationPage-LpuZH_80.js.map → ComponentConfigurationPage-U7RcNJFs.js.map} +1 -1
- package/dist/admin/{CreateActionEE-9-R9hmOH.js → CreateActionEE-HO-FmNjw.js} +2 -2
- package/dist/admin/{CreateActionEE-9-R9hmOH.js.map → CreateActionEE-HO-FmNjw.js.map} +1 -1
- package/dist/admin/{CreateActionEE-fPOnLJuM.mjs → CreateActionEE-OscS6KZj.mjs} +2 -2
- package/dist/admin/{CreateActionEE-fPOnLJuM.mjs.map → CreateActionEE-OscS6KZj.mjs.map} +1 -1
- package/dist/admin/{CreatePage-t0FqkFrZ.mjs → CreatePage-1a_Nb-RK.mjs} +6 -6
- package/dist/admin/{CreatePage-t0FqkFrZ.mjs.map → CreatePage-1a_Nb-RK.mjs.map} +1 -1
- package/dist/admin/{CreatePage-k_yey8N_.mjs → CreatePage-8rG8fSZv.mjs} +2 -2
- package/dist/admin/{CreatePage-k_yey8N_.mjs.map → CreatePage-8rG8fSZv.mjs.map} +1 -1
- package/dist/admin/{CreatePage-UjSB-dgp.js → CreatePage-B0kLot_Q.js} +2 -2
- package/dist/admin/{CreatePage-UjSB-dgp.js.map → CreatePage-B0kLot_Q.js.map} +1 -1
- package/dist/admin/{CreatePage-couIKeZQ.mjs → CreatePage-c92hDTE3.mjs} +2 -2
- package/dist/admin/{CreatePage-couIKeZQ.mjs.map → CreatePage-c92hDTE3.mjs.map} +1 -1
- package/dist/admin/{CreatePage-Fu_8X4K8.js → CreatePage-h9gJgINE.js} +2 -2
- package/dist/admin/{CreatePage-Fu_8X4K8.js.map → CreatePage-h9gJgINE.js.map} +1 -1
- package/dist/admin/{CreatePage-ZPziliHk.js → CreatePage-pN8WcSWM.js} +6 -6
- package/dist/admin/{CreatePage-ZPziliHk.js.map → CreatePage-pN8WcSWM.js.map} +1 -1
- package/dist/admin/{CreateView-41To--31.js → CreateView-Gd7sLphf.js} +2 -2
- package/dist/admin/{CreateView-41To--31.js.map → CreateView-Gd7sLphf.js.map} +1 -1
- package/dist/admin/{CreateView-3rY4Zptu.mjs → CreateView-PIPvgwa8.mjs} +2 -2
- package/dist/admin/{CreateView-3rY4Zptu.mjs.map → CreateView-PIPvgwa8.mjs.map} +1 -1
- package/dist/admin/{CreateView-Tg9Mh5T3.js → CreateView-kVD9MjAf.js} +2 -2
- package/dist/admin/{CreateView-Tg9Mh5T3.js.map → CreateView-kVD9MjAf.js.map} +1 -1
- package/dist/admin/{CreateView-ePHsDH45.mjs → CreateView-nXkGgZTO.mjs} +2 -2
- package/dist/admin/{CreateView-ePHsDH45.mjs.map → CreateView-nXkGgZTO.mjs.map} +1 -1
- package/dist/admin/{EditConfigurationPage-xUIWyyB3.js → EditConfigurationPage-YAS-MAtE.js} +2 -2
- package/dist/admin/{EditConfigurationPage-xUIWyyB3.js.map → EditConfigurationPage-YAS-MAtE.js.map} +1 -1
- package/dist/admin/{EditConfigurationPage-msmjy1KU.mjs → EditConfigurationPage-jugWslla.mjs} +2 -2
- package/dist/admin/{EditConfigurationPage-msmjy1KU.mjs.map → EditConfigurationPage-jugWslla.mjs.map} +1 -1
- package/dist/admin/{EditPage-KuoEv50O.mjs → EditPage-6pGLGlrZ.mjs} +3 -3
- package/dist/admin/{EditPage-KuoEv50O.mjs.map → EditPage-6pGLGlrZ.mjs.map} +1 -1
- package/dist/admin/{EditPage-SySHhxVT.mjs → EditPage-I99-ASjb.mjs} +4 -4
- package/dist/admin/{EditPage-SySHhxVT.mjs.map → EditPage-I99-ASjb.mjs.map} +1 -1
- package/dist/admin/{EditPage-3SBMJVop.mjs → EditPage-NrM8ZRAf.mjs} +6 -6
- package/dist/admin/{EditPage-3SBMJVop.mjs.map → EditPage-NrM8ZRAf.mjs.map} +1 -1
- package/dist/admin/{EditPage-ZB_Kwtk6.js → EditPage-ci9fcWte.js} +6 -6
- package/dist/admin/{EditPage-ZB_Kwtk6.js.map → EditPage-ci9fcWte.js.map} +1 -1
- package/dist/admin/{EditPage-cCyAao8t.mjs → EditPage-fT6nuOwT.mjs} +3 -3
- package/dist/admin/{EditPage-cCyAao8t.mjs.map → EditPage-fT6nuOwT.mjs.map} +1 -1
- package/dist/admin/{EditPage--MbF06mK.js → EditPage-hEDFGDcC.js} +3 -3
- package/dist/admin/{EditPage--MbF06mK.js.map → EditPage-hEDFGDcC.js.map} +1 -1
- package/dist/admin/{EditPage-GG3uO1tK.js → EditPage-m5HVhxC-.js} +3 -3
- package/dist/admin/{EditPage-GG3uO1tK.js.map → EditPage-m5HVhxC-.js.map} +1 -1
- package/dist/admin/{EditPage-qUg5s7MV.js → EditPage-um8Yysr-.js} +4 -4
- package/dist/admin/{EditPage-qUg5s7MV.js.map → EditPage-um8Yysr-.js.map} +1 -1
- package/dist/admin/{EditView-uTB8aFye.mjs → EditView-79rujo0b.mjs} +2 -2
- package/dist/admin/{EditView-uTB8aFye.mjs.map → EditView-79rujo0b.mjs.map} +1 -1
- package/dist/admin/{EditView-NPoSYint.js → EditView-zEf-a-YM.js} +2 -2
- package/dist/admin/{EditView-NPoSYint.js.map → EditView-zEf-a-YM.js.map} +1 -1
- package/dist/admin/{EditViewPage-GUkP1rzn.mjs → EditViewPage-BJdNfzBZ.mjs} +2 -2
- package/dist/admin/{EditViewPage-GUkP1rzn.mjs.map → EditViewPage-BJdNfzBZ.mjs.map} +1 -1
- package/dist/admin/{EditViewPage-aIpRJ8vJ.js → EditViewPage-Y67V7K7l.js} +2 -2
- package/dist/admin/{EditViewPage-aIpRJ8vJ.js.map → EditViewPage-Y67V7K7l.js.map} +1 -1
- package/dist/admin/{EditViewPage-8eo8XEp-.mjs → EditViewPage-iuq_KY3C.mjs} +2 -2
- package/dist/admin/{EditViewPage-8eo8XEp-.mjs.map → EditViewPage-iuq_KY3C.mjs.map} +1 -1
- package/dist/admin/{EditViewPage-K7ytzy_P.js → EditViewPage-vrE8FNb1.js} +2 -2
- package/dist/admin/{EditViewPage-K7ytzy_P.js.map → EditViewPage-vrE8FNb1.js.map} +1 -1
- package/dist/admin/{EventsTable-miLAex8G.mjs → EventsTable-LOh2EX0N.mjs} +2 -2
- package/dist/admin/{EventsTable-miLAex8G.mjs.map → EventsTable-LOh2EX0N.mjs.map} +1 -1
- package/dist/admin/{EventsTable-LHOhvL6b.js → EventsTable-bm16Pj4a.js} +2 -2
- package/dist/admin/{EventsTable-LHOhvL6b.js.map → EventsTable-bm16Pj4a.js.map} +1 -1
- package/dist/admin/{Filters-dwU8wA6T.js → Filters-5FAHd62q.js} +2 -2
- package/dist/admin/{Filters-dwU8wA6T.js.map → Filters-5FAHd62q.js.map} +1 -1
- package/dist/admin/{Filters-NuK9aAYl.mjs → Filters-hYfcsahl.mjs} +2 -2
- package/dist/admin/{Filters-NuK9aAYl.mjs.map → Filters-hYfcsahl.mjs.map} +1 -1
- package/dist/admin/{Form-y8gH26Xy.mjs → Form-7gccxUtH.mjs} +2 -2
- package/dist/admin/{Form-y8gH26Xy.mjs.map → Form-7gccxUtH.mjs.map} +1 -1
- package/dist/admin/{Form-QoOkjEjV.js → Form-m0qUJusG.js} +2 -2
- package/dist/admin/{Form-QoOkjEjV.js.map → Form-m0qUJusG.js.map} +1 -1
- package/dist/admin/{HomePage-K72cOtYS.mjs → HomePage-2q7ngwX4.mjs} +3 -3
- package/dist/admin/{HomePage-K72cOtYS.mjs.map → HomePage-2q7ngwX4.mjs.map} +1 -1
- package/dist/admin/{HomePage-89WRumlX.mjs → HomePage-_eHszm7N.mjs} +3 -3
- package/dist/admin/{HomePage-89WRumlX.mjs.map → HomePage-_eHszm7N.mjs.map} +1 -1
- package/dist/admin/{HomePage-qj5mNY6J.js → HomePage-jwm3AAzI.js} +3 -3
- package/dist/admin/{HomePage-qj5mNY6J.js.map → HomePage-jwm3AAzI.js.map} +1 -1
- package/dist/admin/{HomePage-33ElW8Xc.js → HomePage-ozwWqZdZ.js} +3 -3
- package/dist/admin/{HomePage-33ElW8Xc.js.map → HomePage-ozwWqZdZ.js.map} +1 -1
- package/dist/admin/{Layout-JxGSf9_Y.mjs → Layout-JSg7Wwnx.mjs} +2 -2
- package/dist/admin/{Layout-JxGSf9_Y.mjs.map → Layout-JSg7Wwnx.mjs.map} +1 -1
- package/dist/admin/{Layout-u3VVVTce.mjs → Layout-gqm-mRb2.mjs} +3 -3
- package/dist/admin/{Layout-u3VVVTce.mjs.map → Layout-gqm-mRb2.mjs.map} +1 -1
- package/dist/admin/{Layout-v-mkhXKv.js → Layout-rp7YlCuF.js} +3 -3
- package/dist/admin/{Layout-v-mkhXKv.js.map → Layout-rp7YlCuF.js.map} +1 -1
- package/dist/admin/{Layout-T0g-F0J1.js → Layout-tPXv8ts4.js} +2 -2
- package/dist/admin/{Layout-T0g-F0J1.js.map → Layout-tPXv8ts4.js.map} +1 -1
- package/dist/admin/{ListConfigurationPage-bltmUKBT.mjs → ListConfigurationPage-1JkDop6y.mjs} +2 -2
- package/dist/admin/{ListConfigurationPage-bltmUKBT.mjs.map → ListConfigurationPage-1JkDop6y.mjs.map} +1 -1
- package/dist/admin/{ListConfigurationPage-MwlySSVK.js → ListConfigurationPage-egv99PTx.js} +2 -2
- package/dist/admin/{ListConfigurationPage-MwlySSVK.js.map → ListConfigurationPage-egv99PTx.js.map} +1 -1
- package/dist/admin/{ListPage-L-_ih7Hh.js → ListPage-5VIwPlnG.js} +3 -3
- package/dist/admin/{ListPage-L-_ih7Hh.js.map → ListPage-5VIwPlnG.js.map} +1 -1
- package/dist/admin/{ListPage-t2yAStC4.js → ListPage-85XB15gk.js} +4 -4
- package/dist/admin/{ListPage-t2yAStC4.js.map → ListPage-85XB15gk.js.map} +1 -1
- package/dist/admin/{ListPage-jUKAQtpH.js → ListPage-NG7c9Zx-.js} +3 -3
- package/dist/admin/{ListPage-jUKAQtpH.js.map → ListPage-NG7c9Zx-.js.map} +1 -1
- package/dist/admin/{ListPage-VNJqXKYM.js → ListPage-Wf8HxliA.js} +3 -3
- package/dist/admin/{ListPage-VNJqXKYM.js.map → ListPage-Wf8HxliA.js.map} +1 -1
- package/dist/admin/{ListPage-6TwMzZ42.mjs → ListPage-Y0vGfxO1.mjs} +3 -3
- package/dist/admin/{ListPage-6TwMzZ42.mjs.map → ListPage-Y0vGfxO1.mjs.map} +1 -1
- package/dist/admin/{ListPage-ea3ZLj4B.mjs → ListPage-_1MCPNWC.mjs} +3 -3
- package/dist/admin/{ListPage-ea3ZLj4B.mjs.map → ListPage-_1MCPNWC.mjs.map} +1 -1
- package/dist/admin/{ListPage-cB1S2S4t.mjs → ListPage-bdblB4wE.mjs} +2 -2
- package/dist/admin/{ListPage-cB1S2S4t.mjs.map → ListPage-bdblB4wE.mjs.map} +1 -1
- package/dist/admin/{ListPage-zMNnrnTB.js → ListPage-d0uTS6lH.js} +2 -2
- package/dist/admin/{ListPage-zMNnrnTB.js.map → ListPage-d0uTS6lH.js.map} +1 -1
- package/dist/admin/{ListPage-nvhOIoAg.js → ListPage-e0975Wh-.js} +7 -7
- package/dist/admin/{ListPage-nvhOIoAg.js.map → ListPage-e0975Wh-.js.map} +1 -1
- package/dist/admin/{ListPage-pP9hYRl0.mjs → ListPage-eMKRFxzM.mjs} +3 -3
- package/dist/admin/{ListPage-pP9hYRl0.mjs.map → ListPage-eMKRFxzM.mjs.map} +1 -1
- package/dist/admin/{ListPage-QKnSioEM.mjs → ListPage-tFqx6zb_.mjs} +7 -7
- package/dist/admin/{ListPage-QKnSioEM.mjs.map → ListPage-tFqx6zb_.mjs.map} +1 -1
- package/dist/admin/{ListPage-tR89wtOV.mjs → ListPage-v07yRAHk.mjs} +4 -4
- package/dist/admin/{ListPage-tR89wtOV.mjs.map → ListPage-v07yRAHk.mjs.map} +1 -1
- package/dist/admin/{ListView-TAmGuKTG.mjs → ListView-9shnR2xp.mjs} +2 -2
- package/dist/admin/{ListView-TAmGuKTG.mjs.map → ListView-9shnR2xp.mjs.map} +1 -1
- package/dist/admin/{ListView-I9Hfj5vj.js → ListView-IaEe1_Uy.js} +2 -2
- package/dist/admin/{ListView-I9Hfj5vj.js.map → ListView-IaEe1_Uy.js.map} +1 -1
- package/dist/admin/{ListView-mCiRJwrY.js → ListView-_EZZ571X.js} +2 -2
- package/dist/admin/{ListView-mCiRJwrY.js.map → ListView-_EZZ571X.js.map} +1 -1
- package/dist/admin/{ListView-MbnmLD5H.mjs → ListView-z9G1Eash.mjs} +2 -2
- package/dist/admin/{ListView-MbnmLD5H.mjs.map → ListView-z9G1Eash.mjs.map} +1 -1
- package/dist/admin/{ListViewPage-J4KUAgai.mjs → ListViewPage-FE12IpwT.mjs} +6 -6
- package/dist/admin/{ListViewPage-J4KUAgai.mjs.map → ListViewPage-FE12IpwT.mjs.map} +1 -1
- package/dist/admin/{ListViewPage-dluuhb-d.js → ListViewPage-u5WSF93L.js} +6 -6
- package/dist/admin/{ListViewPage-dluuhb-d.js.map → ListViewPage-u5WSF93L.js.map} +1 -1
- package/dist/admin/{Login-eWkr5rD0.mjs → Login-9iKNSYCJ.mjs} +2 -2
- package/dist/admin/{Login-eWkr5rD0.mjs.map → Login-9iKNSYCJ.mjs.map} +1 -1
- package/dist/admin/{Login-xaRTR09T.js → Login-ug0ICazL.js} +2 -2
- package/dist/admin/{Login-xaRTR09T.js.map → Login-ug0ICazL.js.map} +1 -1
- package/dist/admin/{MagicLinkEE-jSJRGswm.mjs → MagicLinkEE-3a4aj5bM.mjs} +3 -3
- package/dist/admin/{MagicLinkEE-jSJRGswm.mjs.map → MagicLinkEE-3a4aj5bM.mjs.map} +1 -1
- package/dist/admin/{MagicLinkEE-DdAnlnbT.js → MagicLinkEE-TlpYCgSF.js} +3 -3
- package/dist/admin/{MagicLinkEE-DdAnlnbT.js.map → MagicLinkEE-TlpYCgSF.js.map} +1 -1
- package/dist/admin/{MarketplacePage-NuCSMXXA.mjs → MarketplacePage-BBs4GMeX.mjs} +2 -2
- package/dist/admin/{MarketplacePage-NuCSMXXA.mjs.map → MarketplacePage-BBs4GMeX.mjs.map} +1 -1
- package/dist/admin/{MarketplacePage-7R9OXLe5.js → MarketplacePage-GuZItQkJ.js} +2 -2
- package/dist/admin/{MarketplacePage-7R9OXLe5.js.map → MarketplacePage-GuZItQkJ.js.map} +1 -1
- package/dist/admin/{ReviewWorkflowsColumn-fFjISpV-.mjs → ReviewWorkflowsColumn-NUu47oVz.mjs} +2 -2
- package/dist/admin/{ReviewWorkflowsColumn-fFjISpV-.mjs.map → ReviewWorkflowsColumn-NUu47oVz.mjs.map} +1 -1
- package/dist/admin/{ReviewWorkflowsColumn-woA2SXEC.js → ReviewWorkflowsColumn-uIqJfjyd.js} +2 -2
- package/dist/admin/{ReviewWorkflowsColumn-woA2SXEC.js.map → ReviewWorkflowsColumn-uIqJfjyd.js.map} +1 -1
- package/dist/admin/{SelectRoles-IagtXRkz.js → SelectRoles-5vr-vXOm.js} +3 -3
- package/dist/admin/{SelectRoles-IagtXRkz.js.map → SelectRoles-5vr-vXOm.js.map} +1 -1
- package/dist/admin/{SelectRoles-wkrG60gH.mjs → SelectRoles-ytHc3di2.mjs} +3 -3
- package/dist/admin/{SelectRoles-wkrG60gH.mjs.map → SelectRoles-ytHc3di2.mjs.map} +1 -1
- package/dist/admin/{SingleSignOnPage-QtJcKvz1.js → SingleSignOnPage-1Wqj_7y-.js} +2 -2
- package/dist/admin/{SingleSignOnPage-QtJcKvz1.js.map → SingleSignOnPage-1Wqj_7y-.js.map} +1 -1
- package/dist/admin/{SingleSignOnPage-EnR7TNHn.mjs → SingleSignOnPage-7oJES3UH.mjs} +2 -2
- package/dist/admin/{SingleSignOnPage-EnR7TNHn.mjs.map → SingleSignOnPage-7oJES3UH.mjs.map} +1 -1
- package/dist/admin/{Table--Lb2Jk8K.mjs → Table-LQhGojNx.mjs} +2 -2
- package/dist/admin/{Table--Lb2Jk8K.mjs.map → Table-LQhGojNx.mjs.map} +1 -1
- package/dist/admin/{Table-EGrwI1DE.js → Table-M5UsBfFs.js} +2 -2
- package/dist/admin/{Table-EGrwI1DE.js.map → Table-M5UsBfFs.js.map} +1 -1
- package/dist/admin/{TokenTypeSelect-Vsm3x9aT.mjs → TokenTypeSelect-5o9mvFd7.mjs} +2 -2
- package/dist/admin/{TokenTypeSelect-Vsm3x9aT.mjs.map → TokenTypeSelect-5o9mvFd7.mjs.map} +1 -1
- package/dist/admin/{TokenTypeSelect-nSM_sCJb.js → TokenTypeSelect-ZBDI26vJ.js} +2 -2
- package/dist/admin/{TokenTypeSelect-nSM_sCJb.js.map → TokenTypeSelect-ZBDI26vJ.js.map} +1 -1
- package/dist/admin/{UseCasePage-LDFlFUgh.mjs → UseCasePage-e7rn-aW-.mjs} +2 -2
- package/dist/admin/{UseCasePage-LDFlFUgh.mjs.map → UseCasePage-e7rn-aW-.mjs.map} +1 -1
- package/dist/admin/{UseCasePage-lb8KTjmb.js → UseCasePage-q3u-xs7F.js} +2 -2
- package/dist/admin/{UseCasePage-lb8KTjmb.js.map → UseCasePage-q3u-xs7F.js.map} +1 -1
- package/dist/admin/{constants-aUUP-q78.js → constants-6E1OwHx7.js} +3 -3
- package/dist/admin/{constants-aUUP-q78.js.map → constants-6E1OwHx7.js.map} +1 -1
- package/dist/admin/{constants--TURFsEh.mjs → constants-AdKxCt0x.mjs} +2 -2
- package/dist/admin/{constants--TURFsEh.mjs.map → constants-AdKxCt0x.mjs.map} +1 -1
- package/dist/admin/{constants--6hi2sq7.mjs → constants-D6NLEhwu.mjs} +3 -3
- package/dist/admin/{constants--6hi2sq7.mjs.map → constants-D6NLEhwu.mjs.map} +1 -1
- package/dist/admin/{constants-yG6U1h1n.js → constants-ZZWbRAQT.js} +2 -2
- package/dist/admin/{constants-yG6U1h1n.js.map → constants-ZZWbRAQT.js.map} +1 -1
- package/dist/admin/{index-oXhvt6Nv.mjs → index-1NFAbkxM.mjs} +36 -36
- package/dist/admin/{index-oXhvt6Nv.mjs.map → index-1NFAbkxM.mjs.map} +1 -1
- package/dist/admin/{index-lSQdx61-.js → index-mQQPK-ix.js} +36 -36
- package/dist/admin/{index-lSQdx61-.js.map → index-mQQPK-ix.js.map} +1 -1
- package/dist/admin/index.js +1 -1
- package/dist/admin/index.mjs +1 -1
- package/dist/admin/{useAdminRoles-bTVTWj4N.mjs → useAdminRoles-BG7b996L.mjs} +2 -2
- package/dist/admin/{useAdminRoles-bTVTWj4N.mjs.map → useAdminRoles-BG7b996L.mjs.map} +1 -1
- package/dist/admin/{useAdminRoles-efJpe2jv.js → useAdminRoles-THWXour6.js} +2 -2
- package/dist/admin/{useAdminRoles-efJpe2jv.js.map → useAdminRoles-THWXour6.js.map} +1 -1
- package/dist/admin/{useLicenseLimitNotification-4B6SglGc.mjs → useLicenseLimitNotification-9DqSZuyc.mjs} +2 -2
- package/dist/admin/{useLicenseLimitNotification-4B6SglGc.mjs.map → useLicenseLimitNotification-9DqSZuyc.mjs.map} +1 -1
- package/dist/admin/{useLicenseLimitNotification-lLyTIkNR.js → useLicenseLimitNotification-SiWQ5LGo.js} +2 -2
- package/dist/admin/{useLicenseLimitNotification-lLyTIkNR.js.map → useLicenseLimitNotification-SiWQ5LGo.js.map} +1 -1
- package/dist/admin/{useReviewWorkflows-KJq-ld3U.js → useReviewWorkflows-0ty4mwQd.js} +2 -2
- package/dist/admin/{useReviewWorkflows-KJq-ld3U.js.map → useReviewWorkflows-0ty4mwQd.js.map} +1 -1
- package/dist/admin/{useReviewWorkflows-1IXSO8ml.mjs → useReviewWorkflows-HwyFyit7.mjs} +2 -2
- package/dist/admin/{useReviewWorkflows-1IXSO8ml.mjs.map → useReviewWorkflows-HwyFyit7.mjs.map} +1 -1
- package/dist/admin/{validateWorkflow-1RnC2GKb.js → validateWorkflow-99y3bkNx.js} +2 -2
- package/dist/admin/{validateWorkflow-1RnC2GKb.js.map → validateWorkflow-99y3bkNx.js.map} +1 -1
- package/dist/admin/{validateWorkflow-BOHXHGsM.mjs → validateWorkflow-ubLwZqCK.mjs} +2 -2
- package/dist/admin/{validateWorkflow-BOHXHGsM.mjs.map → validateWorkflow-ubLwZqCK.mjs.map} +1 -1
- package/dist/package.json.d.ts +1 -1
- package/package.json +12 -12
|
@@ -3,7 +3,7 @@ import * as React from 'react';
|
|
|
3
3
|
import { useComposedRefs, Button, PopoverPrimitives, Flex, Tag } from '@strapi/design-system';
|
|
4
4
|
import { Filter, Plus, Cross } from '@strapi/icons';
|
|
5
5
|
import { useIntl } from 'react-intl';
|
|
6
|
-
import { e as useControllableState } from './index-
|
|
6
|
+
import { e as useControllableState } from './index-1NFAbkxM.mjs';
|
|
7
7
|
import { c as createContext, n as useQueryParams, a0 as Form } from './reducers-IQWvK_9L.mjs';
|
|
8
8
|
import { I as InputRenderer } from './useDocumentLayout-4trWL6Jz.mjs';
|
|
9
9
|
|
|
@@ -486,4 +486,4 @@ const Filters = {
|
|
|
486
486
|
};
|
|
487
487
|
|
|
488
488
|
export { Filters as F };
|
|
489
|
-
//# sourceMappingURL=Filters-
|
|
489
|
+
//# sourceMappingURL=Filters-hYfcsahl.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Filters-NuK9aAYl.mjs","sources":["../../admin/src/constants/filters.ts","../../admin/src/components/Filters.tsx"],"sourcesContent":["import type { Modules } from '@strapi/types';\nimport type { MessageDescriptor } from 'react-intl';\n\n/**\n * @description designed to be parsed by formatMessage from react-intl\n * then passed to a Select component.\n */\ninterface FilterOption {\n value: Modules.EntityService.Params.Filters.Operator.Where;\n label: MessageDescriptor;\n}\n\n/**\n * @description these are shared by everyone\n */\nconst BASE_FILTERS = [\n {\n label: { id: 'components.FilterOptions.FILTER_TYPES.$eq', defaultMessage: 'is' },\n value: '$eq',\n },\n {\n label: { id: 'components.FilterOptions.FILTER_TYPES.$ne', defaultMessage: 'is not' },\n value: '$ne',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$null',\n defaultMessage: 'is null',\n },\n value: '$null',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$notNull',\n defaultMessage: 'is not null',\n },\n value: '$notNull',\n },\n] satisfies FilterOption[];\n\n/**\n * @description typically performed on attributes that are numerical incl. dates.\n */\nconst NUMERIC_FILTERS = [\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$gt',\n defaultMessage: 'is greater than',\n },\n value: '$gt',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$gte',\n defaultMessage: 'is greater than or equal to',\n },\n value: '$gte',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$lt',\n defaultMessage: 'is less than',\n },\n value: '$lt',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$lte',\n defaultMessage: 'is less than or equal to',\n },\n value: '$lte',\n },\n] satisfies FilterOption[];\n\nconst IS_SENSITIVE_FILTERS = [\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$eqi',\n defaultMessage: 'is (case insensitive)',\n },\n value: '$eqi',\n },\n\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$nei',\n defaultMessage: 'is not (case insensitive)',\n },\n value: '$nei',\n },\n] satisfies FilterOption[];\n\n/**\n * @description typically performed on attributes that are strings for partial looking.\n */\nconst CONTAINS_FILTERS = [\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$contains',\n defaultMessage: 'contains',\n },\n value: '$contains',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$containsi',\n defaultMessage: 'contains (case insensitive)',\n },\n value: '$containsi',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$notContains',\n defaultMessage: 'not contains',\n },\n value: '$notContains',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$notContainsi',\n defaultMessage: 'not contains (case insensitive)',\n },\n value: '$notContainsi',\n },\n] satisfies FilterOption[];\n\n/**\n * @description only used on string attributes.\n */\nconst STRING_PARSE_FILTERS = [\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$startsWith',\n defaultMessage: 'starts with',\n },\n value: '$startsWith',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$startsWithi',\n defaultMessage: 'starts with (case insensitive)',\n },\n value: '$startsWithi',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$endsWith',\n defaultMessage: 'ends with',\n },\n value: '$endsWith',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$endsWithi',\n defaultMessage: 'ends with (case insensitive)',\n },\n value: '$endsWithi',\n },\n] satisfies FilterOption[];\n\nexport {\n BASE_FILTERS,\n NUMERIC_FILTERS,\n IS_SENSITIVE_FILTERS,\n CONTAINS_FILTERS,\n STRING_PARSE_FILTERS,\n};\nexport type { FilterOption };\n","import * as React from 'react';\n\nimport { Button, Flex, PopoverPrimitives, Tag, useComposedRefs } from '@strapi/design-system';\nimport { Plus, Filter as FilterIcon, Cross } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport {\n BASE_FILTERS,\n CONTAINS_FILTERS,\n FilterOption,\n IS_SENSITIVE_FILTERS,\n NUMERIC_FILTERS,\n STRING_PARSE_FILTERS,\n} from '../constants/filters';\nimport { MainField } from '../content-manager/utils/attributes';\nimport { useControllableState } from '../hooks/useControllableState';\nimport { useQueryParams } from '../hooks/useQueryParams';\n\nimport { createContext } from './Context';\nimport { Form, InputProps } from './Form';\nimport { InputRenderer } from './FormInputs/Renderer';\n\n/* -------------------------------------------------------------------------------------------------\n * Root\n * -----------------------------------------------------------------------------------------------*/\n\ninterface FilterFormData {\n name: string;\n filter: string;\n value?: string;\n}\n\ninterface FitlersContextValue {\n disabled: boolean;\n onChange: (data: FilterFormData) => void;\n open: boolean;\n setOpen: (open: boolean) => void;\n setTriggerNode: (node: HTMLButtonElement | null) => void;\n triggerNode: HTMLButtonElement | null;\n options: Filters.Filter[];\n}\n\nconst [FiltersProvider, useFilters] = createContext<FitlersContextValue>('Filters');\n\ninterface RootProps\n extends Partial<Pick<FitlersContextValue, 'disabled' | 'onChange' | 'options' | 'open'>> {\n children: React.ReactNode;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n}\n\nconst Root = ({\n children,\n disabled = false,\n onChange,\n onOpenChange,\n open: openProp,\n defaultOpen,\n options = [],\n}: RootProps) => {\n const [triggerNode, setTriggerNode] = React.useState<FitlersContextValue['triggerNode']>(null);\n const [open = false, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: onOpenChange,\n });\n\n const handleChange = (data: FilterFormData) => {\n if (onChange) {\n onChange(data);\n }\n };\n\n return (\n <FiltersProvider\n disabled={disabled}\n onChange={handleChange}\n open={open}\n options={options}\n setOpen={setOpen}\n setTriggerNode={setTriggerNode}\n triggerNode={triggerNode}\n >\n {children}\n </FiltersProvider>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Trigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst Trigger = React.forwardRef<HTMLButtonElement, Filters.TriggerProps>(\n ({ label }, forwardedRef) => {\n const { formatMessage } = useIntl();\n const { setTriggerNode, setOpen } = useFilters('Trigger', ({ setTriggerNode, setOpen }) => ({\n setTriggerNode,\n setOpen,\n }));\n const disabled = useFilters('Trigger', ({ disabled }) => disabled);\n const open = useFilters('Trigger', ({ open }) => open);\n\n const composedRefs = useComposedRefs(forwardedRef, setTriggerNode);\n\n const handleClick = () => setOpen(!open);\n\n return (\n <Button\n variant=\"tertiary\"\n ref={composedRefs}\n startIcon={<FilterIcon />}\n onClick={handleClick}\n size=\"S\"\n disabled={disabled}\n >\n {label || formatMessage({ id: 'app.utils.filters', defaultMessage: 'Filters' })}\n </Button>\n );\n }\n);\n\n/* -------------------------------------------------------------------------------------------------\n * Popover\n * -----------------------------------------------------------------------------------------------*/\n\nconst PopoverImpl = () => {\n const [{ query }, setQuery] = useQueryParams<Filters.Query>();\n const { formatMessage } = useIntl();\n const open = useFilters('Popover', ({ open }) => open);\n const options = useFilters('Popover', ({ options }) => options);\n const triggerNode = useFilters('Popover', ({ triggerNode }) => triggerNode);\n const setOpen = useFilters('Popover', ({ setOpen }) => setOpen);\n const onChange = useFilters('Popover', ({ onChange }) => onChange);\n\n if (!open || options.length === 0 || !triggerNode) {\n return null;\n }\n\n const handleSubmit = (data: FilterFormData) => {\n if (!data.value) {\n return;\n }\n\n if (onChange) {\n onChange(data);\n }\n\n /**\n * There will ALWAYS be an option because we use the options to create the form data.\n */\n const filterType = options.find((filter) => filter.name === data.name)!.type;\n\n /**\n * If the filter is a relation, we need to nest the filter object,\n * we always use ids to filter relations. But the nested object is\n * the operator & value pair. This value _could_ look like:\n * ```json\n * {\n * \"$eq\": \"1\",\n * }\n * ```\n */\n const operatorValuePairing = {\n [data.filter]: data.value,\n };\n\n const newFilterQuery = {\n ...query.filters,\n $and: [\n ...(query.filters?.$and ?? []),\n {\n [data.name]:\n filterType === 'relation'\n ? {\n id: operatorValuePairing,\n }\n : operatorValuePairing,\n },\n ],\n };\n\n setQuery({ filters: newFilterQuery, page: 1 });\n setOpen(false);\n };\n\n return (\n <PopoverPrimitives.Content\n source={{ current: triggerNode }}\n onDismiss={() => setOpen(false)}\n padding={3}\n spacing={4}\n maxHeight=\"unset\"\n >\n <Form\n method=\"POST\"\n initialValues={\n {\n name: options[0]?.name,\n filter: BASE_FILTERS[0].value,\n } satisfies FilterFormData\n }\n onSubmit={handleSubmit}\n >\n {({ values: formValues, modified, isSubmitting }) => {\n const filter = options.find((filter) => filter.name === formValues.name);\n const Input = filter?.input || InputRenderer;\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2} style={{ minWidth: 184 }}>\n {[\n {\n ['aria-label']: formatMessage({\n id: 'app.utils.select-field',\n defaultMessage: 'Select field',\n }),\n name: 'name',\n options: options.map((filter) => ({\n label: filter.label,\n value: filter.name,\n })),\n placholder: formatMessage({\n id: 'app.utils.select-field',\n defaultMessage: 'Select field',\n }),\n type: 'enumeration' as const,\n },\n {\n ['aria-label']: formatMessage({\n id: 'app.utils.select-filter',\n defaultMessage: 'Select filter',\n }),\n name: 'filter',\n options:\n filter?.operators ||\n getFilterList(filter).map((opt) => ({\n label: formatMessage(opt.label),\n value: opt.value,\n })),\n placeholder: formatMessage({\n id: 'app.utils.select-filter',\n defaultMessage: 'Select filter',\n }),\n type: 'enumeration' as const,\n },\n ].map((field) => (\n <InputRenderer key={field.name} {...field} />\n ))}\n {filter &&\n formValues.filter &&\n formValues.filter !== '$null' &&\n formValues.filter !== '$notNull' ? (\n <Input\n {...filter}\n label={null}\n aria-label={filter.label}\n name=\"value\"\n // @ts-expect-error – if type is `custom` then `Input` will be a custom component.\n type={filter.mainField?.type ?? filter.type}\n />\n ) : null}\n <Button\n disabled={!modified || isSubmitting}\n size=\"L\"\n variant=\"secondary\"\n startIcon={<Plus />}\n type=\"submit\"\n fullWidth\n >\n {formatMessage({ id: 'app.utils.add-filter', defaultMessage: 'Add filter' })}\n </Button>\n </Flex>\n );\n }}\n </Form>\n </PopoverPrimitives.Content>\n );\n};\n\n/**\n * Depending on the selected field find the possible filters to apply\n */\nconst getFilterList = (filter?: Filters.Filter): FilterOption[] => {\n if (!filter) {\n return [];\n }\n\n const type = filter.mainField?.type ? filter.mainField.type : filter.type;\n\n switch (type) {\n case 'email':\n case 'text':\n case 'enumeration':\n case 'string': {\n return [\n ...BASE_FILTERS,\n ...IS_SENSITIVE_FILTERS,\n ...CONTAINS_FILTERS,\n ...STRING_PARSE_FILTERS,\n ];\n }\n\n case 'float':\n case 'integer':\n case 'biginteger':\n case 'decimal': {\n return [...BASE_FILTERS, ...NUMERIC_FILTERS];\n }\n case 'time':\n case 'date': {\n return [...BASE_FILTERS, ...NUMERIC_FILTERS, ...CONTAINS_FILTERS];\n }\n\n case 'datetime': {\n return [...BASE_FILTERS, ...NUMERIC_FILTERS];\n }\n\n default:\n return [...BASE_FILTERS, ...IS_SENSITIVE_FILTERS];\n }\n};\n\n/* -------------------------------------------------------------------------------------------------\n * List\n * -----------------------------------------------------------------------------------------------*/\n\nconst List = () => {\n const [{ query }, setQuery] = useQueryParams<Filters.Query>();\n\n const options = useFilters('List', ({ options }) => options);\n\n const handleClick = (data: FilterFormData) => {\n /**\n * Check the name, operator and value to see if it already exists in the query\n * if it does, remove it.\n */\n const nextFilters = (query?.filters?.$and ?? []).filter((filter) => {\n const [attributeName] = Object.keys(filter);\n if (attributeName !== data.name) {\n return true;\n }\n\n const { type, mainField } = options.find(({ name }) => name === attributeName)!;\n\n if (type === 'relation') {\n const filterObj = filter[attributeName][mainField?.name ?? 'id'];\n\n if (typeof filterObj === 'object') {\n const [operator] = Object.keys(filterObj);\n const value = filterObj[operator];\n\n return !(operator === data.filter && value === data.value);\n }\n\n return true;\n } else {\n const filterObj = filter[attributeName];\n const [operator] = Object.keys(filterObj);\n const value = filterObj[operator];\n\n return !(operator === data.filter && value === data.value);\n }\n });\n\n setQuery({ filters: { $and: nextFilters }, page: 1 });\n };\n\n if (!query?.filters?.$and?.length) {\n return null;\n }\n\n return (\n <>\n {query?.filters?.$and?.map((queryFilter) => {\n const [attributeName] = Object.keys(queryFilter);\n const filter = options.find(({ name }) => name === attributeName);\n const filterObj = queryFilter[attributeName];\n\n if (!filter || typeof filterObj !== 'object' || filterObj === null) {\n return null;\n }\n\n if (filter.type === 'relation') {\n const modelFilter = filterObj[filter.mainField?.name ?? 'id'];\n\n if (typeof modelFilter === 'object') {\n const [operator] = Object.keys(modelFilter);\n const value = modelFilter[operator];\n return (\n <AttributeTag\n key={`${attributeName}-${operator}-${value}`}\n {...filter}\n onClick={handleClick}\n operator={operator}\n value={value}\n />\n );\n }\n\n return null;\n } else {\n const [operator] = Object.keys(filterObj);\n const value = filterObj[operator];\n\n /**\n * Something has gone wrong here, because the attribute is not a relation\n * but we have a nested filter object.\n */\n if (typeof value === 'object') {\n return null;\n }\n\n return (\n <AttributeTag\n key={`${attributeName}-${operator}-${value}`}\n {...filter}\n onClick={handleClick}\n operator={operator}\n value={value}\n />\n );\n }\n })}\n </>\n );\n};\n\ninterface AttributeTagProps extends Filters.Filter {\n onClick: (data: FilterFormData) => void;\n operator: string;\n value: string;\n}\n\nconst AttributeTag = ({\n input,\n label,\n mainField,\n name,\n onClick,\n operator,\n options,\n value,\n ...filter\n}: AttributeTagProps) => {\n const { formatMessage, formatDate, formatTime, formatNumber } = useIntl();\n\n const handleClick = () => {\n onClick({ name, value, filter: operator });\n };\n\n const type = mainField?.type ? mainField.type : filter.type;\n\n let formattedValue: string = value;\n\n switch (type) {\n case 'date':\n formattedValue = formatDate(value, { dateStyle: 'full' });\n break;\n case 'datetime':\n formattedValue = formatDate(value, { dateStyle: 'full', timeStyle: 'short' });\n break;\n case 'time':\n const [hour, minute] = value.split(':');\n const date = new Date();\n date.setHours(Number(hour));\n date.setMinutes(Number(minute));\n\n formattedValue = formatTime(date, {\n hour: 'numeric',\n minute: 'numeric',\n });\n break;\n case 'float':\n case 'integer':\n case 'biginteger':\n case 'decimal':\n formattedValue = formatNumber(Number(value));\n break;\n }\n\n // Handle custom input\n if (input && options) {\n // If the custom input has an options array, find the option with a customValue matching the query value\n const selectedOption = options.find((option) => {\n return (typeof option === 'string' ? option : option.value) === value;\n });\n\n formattedValue = selectedOption\n ? typeof selectedOption === 'string'\n ? selectedOption\n : selectedOption.label ?? selectedOption.value\n : value;\n }\n\n const content = `${label} ${formatMessage({\n id: `components.FilterOptions.FILTER_TYPES.${operator}`,\n defaultMessage: operator,\n })} ${operator !== '$null' && operator !== '$notNull' ? formattedValue : ''}`;\n\n return (\n <Tag padding={1} onClick={handleClick} icon={<Cross />}>\n {content}\n </Tag>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * EXPORTS\n * -----------------------------------------------------------------------------------------------*/\n\nconst Filters = {\n List,\n Popover: PopoverImpl,\n Root,\n Trigger,\n};\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nnamespace Filters {\n export interface Filter {\n input?: React.ComponentType<ValueInputProps>;\n label: string;\n /**\n * the name of the attribute we use to display the actual name e.g. relations\n * are just ids, so we use the mainField to display something meaninginful by\n * looking at the target's schema\n */\n mainField?: MainField;\n name: string;\n operators?: Array<{\n label: string;\n value: string;\n }>;\n options?: Array<{ label?: string; value: string }> | string[];\n type: InputProps['type'] | 'relation' | 'custom';\n }\n\n export interface ValueInputProps extends Omit<Filter, 'label'> {\n ['aria-label']: string;\n }\n\n export type Props = RootProps;\n\n export interface TriggerProps {\n label?: string;\n }\n\n export interface Query {\n filters?: {\n /**\n * Typically, a filter will be:\n * ```ts\n * {\n * [attributeName]: {\n * [operator]: value\n * }\n * }\n * ```\n * However, for relation items it becomes more nested.\n * ```ts\n * {\n * [attributeName]: {\n * [relationTargetAttribute]: {\n * [operator]: value\n * }\n * }\n * }\n */\n $and?: Array<Record<string, Record<string, string | Record<string, string>>>>;\n };\n page?: number;\n }\n}\n\nexport { Filters };\n"],"names":["setTriggerNode","setOpen","disabled","open","FilterIcon","options","triggerNode","onChange","filter"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Filters-hYfcsahl.mjs","sources":["../../admin/src/constants/filters.ts","../../admin/src/components/Filters.tsx"],"sourcesContent":["import type { Modules } from '@strapi/types';\nimport type { MessageDescriptor } from 'react-intl';\n\n/**\n * @description designed to be parsed by formatMessage from react-intl\n * then passed to a Select component.\n */\ninterface FilterOption {\n value: Modules.EntityService.Params.Filters.Operator.Where;\n label: MessageDescriptor;\n}\n\n/**\n * @description these are shared by everyone\n */\nconst BASE_FILTERS = [\n {\n label: { id: 'components.FilterOptions.FILTER_TYPES.$eq', defaultMessage: 'is' },\n value: '$eq',\n },\n {\n label: { id: 'components.FilterOptions.FILTER_TYPES.$ne', defaultMessage: 'is not' },\n value: '$ne',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$null',\n defaultMessage: 'is null',\n },\n value: '$null',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$notNull',\n defaultMessage: 'is not null',\n },\n value: '$notNull',\n },\n] satisfies FilterOption[];\n\n/**\n * @description typically performed on attributes that are numerical incl. dates.\n */\nconst NUMERIC_FILTERS = [\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$gt',\n defaultMessage: 'is greater than',\n },\n value: '$gt',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$gte',\n defaultMessage: 'is greater than or equal to',\n },\n value: '$gte',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$lt',\n defaultMessage: 'is less than',\n },\n value: '$lt',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$lte',\n defaultMessage: 'is less than or equal to',\n },\n value: '$lte',\n },\n] satisfies FilterOption[];\n\nconst IS_SENSITIVE_FILTERS = [\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$eqi',\n defaultMessage: 'is (case insensitive)',\n },\n value: '$eqi',\n },\n\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$nei',\n defaultMessage: 'is not (case insensitive)',\n },\n value: '$nei',\n },\n] satisfies FilterOption[];\n\n/**\n * @description typically performed on attributes that are strings for partial looking.\n */\nconst CONTAINS_FILTERS = [\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$contains',\n defaultMessage: 'contains',\n },\n value: '$contains',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$containsi',\n defaultMessage: 'contains (case insensitive)',\n },\n value: '$containsi',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$notContains',\n defaultMessage: 'not contains',\n },\n value: '$notContains',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$notContainsi',\n defaultMessage: 'not contains (case insensitive)',\n },\n value: '$notContainsi',\n },\n] satisfies FilterOption[];\n\n/**\n * @description only used on string attributes.\n */\nconst STRING_PARSE_FILTERS = [\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$startsWith',\n defaultMessage: 'starts with',\n },\n value: '$startsWith',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$startsWithi',\n defaultMessage: 'starts with (case insensitive)',\n },\n value: '$startsWithi',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$endsWith',\n defaultMessage: 'ends with',\n },\n value: '$endsWith',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$endsWithi',\n defaultMessage: 'ends with (case insensitive)',\n },\n value: '$endsWithi',\n },\n] satisfies FilterOption[];\n\nexport {\n BASE_FILTERS,\n NUMERIC_FILTERS,\n IS_SENSITIVE_FILTERS,\n CONTAINS_FILTERS,\n STRING_PARSE_FILTERS,\n};\nexport type { FilterOption };\n","import * as React from 'react';\n\nimport { Button, Flex, PopoverPrimitives, Tag, useComposedRefs } from '@strapi/design-system';\nimport { Plus, Filter as FilterIcon, Cross } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport {\n BASE_FILTERS,\n CONTAINS_FILTERS,\n FilterOption,\n IS_SENSITIVE_FILTERS,\n NUMERIC_FILTERS,\n STRING_PARSE_FILTERS,\n} from '../constants/filters';\nimport { MainField } from '../content-manager/utils/attributes';\nimport { useControllableState } from '../hooks/useControllableState';\nimport { useQueryParams } from '../hooks/useQueryParams';\n\nimport { createContext } from './Context';\nimport { Form, InputProps } from './Form';\nimport { InputRenderer } from './FormInputs/Renderer';\n\n/* -------------------------------------------------------------------------------------------------\n * Root\n * -----------------------------------------------------------------------------------------------*/\n\ninterface FilterFormData {\n name: string;\n filter: string;\n value?: string;\n}\n\ninterface FitlersContextValue {\n disabled: boolean;\n onChange: (data: FilterFormData) => void;\n open: boolean;\n setOpen: (open: boolean) => void;\n setTriggerNode: (node: HTMLButtonElement | null) => void;\n triggerNode: HTMLButtonElement | null;\n options: Filters.Filter[];\n}\n\nconst [FiltersProvider, useFilters] = createContext<FitlersContextValue>('Filters');\n\ninterface RootProps\n extends Partial<Pick<FitlersContextValue, 'disabled' | 'onChange' | 'options' | 'open'>> {\n children: React.ReactNode;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n}\n\nconst Root = ({\n children,\n disabled = false,\n onChange,\n onOpenChange,\n open: openProp,\n defaultOpen,\n options = [],\n}: RootProps) => {\n const [triggerNode, setTriggerNode] = React.useState<FitlersContextValue['triggerNode']>(null);\n const [open = false, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: onOpenChange,\n });\n\n const handleChange = (data: FilterFormData) => {\n if (onChange) {\n onChange(data);\n }\n };\n\n return (\n <FiltersProvider\n disabled={disabled}\n onChange={handleChange}\n open={open}\n options={options}\n setOpen={setOpen}\n setTriggerNode={setTriggerNode}\n triggerNode={triggerNode}\n >\n {children}\n </FiltersProvider>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Trigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst Trigger = React.forwardRef<HTMLButtonElement, Filters.TriggerProps>(\n ({ label }, forwardedRef) => {\n const { formatMessage } = useIntl();\n const { setTriggerNode, setOpen } = useFilters('Trigger', ({ setTriggerNode, setOpen }) => ({\n setTriggerNode,\n setOpen,\n }));\n const disabled = useFilters('Trigger', ({ disabled }) => disabled);\n const open = useFilters('Trigger', ({ open }) => open);\n\n const composedRefs = useComposedRefs(forwardedRef, setTriggerNode);\n\n const handleClick = () => setOpen(!open);\n\n return (\n <Button\n variant=\"tertiary\"\n ref={composedRefs}\n startIcon={<FilterIcon />}\n onClick={handleClick}\n size=\"S\"\n disabled={disabled}\n >\n {label || formatMessage({ id: 'app.utils.filters', defaultMessage: 'Filters' })}\n </Button>\n );\n }\n);\n\n/* -------------------------------------------------------------------------------------------------\n * Popover\n * -----------------------------------------------------------------------------------------------*/\n\nconst PopoverImpl = () => {\n const [{ query }, setQuery] = useQueryParams<Filters.Query>();\n const { formatMessage } = useIntl();\n const open = useFilters('Popover', ({ open }) => open);\n const options = useFilters('Popover', ({ options }) => options);\n const triggerNode = useFilters('Popover', ({ triggerNode }) => triggerNode);\n const setOpen = useFilters('Popover', ({ setOpen }) => setOpen);\n const onChange = useFilters('Popover', ({ onChange }) => onChange);\n\n if (!open || options.length === 0 || !triggerNode) {\n return null;\n }\n\n const handleSubmit = (data: FilterFormData) => {\n if (!data.value) {\n return;\n }\n\n if (onChange) {\n onChange(data);\n }\n\n /**\n * There will ALWAYS be an option because we use the options to create the form data.\n */\n const filterType = options.find((filter) => filter.name === data.name)!.type;\n\n /**\n * If the filter is a relation, we need to nest the filter object,\n * we always use ids to filter relations. But the nested object is\n * the operator & value pair. This value _could_ look like:\n * ```json\n * {\n * \"$eq\": \"1\",\n * }\n * ```\n */\n const operatorValuePairing = {\n [data.filter]: data.value,\n };\n\n const newFilterQuery = {\n ...query.filters,\n $and: [\n ...(query.filters?.$and ?? []),\n {\n [data.name]:\n filterType === 'relation'\n ? {\n id: operatorValuePairing,\n }\n : operatorValuePairing,\n },\n ],\n };\n\n setQuery({ filters: newFilterQuery, page: 1 });\n setOpen(false);\n };\n\n return (\n <PopoverPrimitives.Content\n source={{ current: triggerNode }}\n onDismiss={() => setOpen(false)}\n padding={3}\n spacing={4}\n maxHeight=\"unset\"\n >\n <Form\n method=\"POST\"\n initialValues={\n {\n name: options[0]?.name,\n filter: BASE_FILTERS[0].value,\n } satisfies FilterFormData\n }\n onSubmit={handleSubmit}\n >\n {({ values: formValues, modified, isSubmitting }) => {\n const filter = options.find((filter) => filter.name === formValues.name);\n const Input = filter?.input || InputRenderer;\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2} style={{ minWidth: 184 }}>\n {[\n {\n ['aria-label']: formatMessage({\n id: 'app.utils.select-field',\n defaultMessage: 'Select field',\n }),\n name: 'name',\n options: options.map((filter) => ({\n label: filter.label,\n value: filter.name,\n })),\n placholder: formatMessage({\n id: 'app.utils.select-field',\n defaultMessage: 'Select field',\n }),\n type: 'enumeration' as const,\n },\n {\n ['aria-label']: formatMessage({\n id: 'app.utils.select-filter',\n defaultMessage: 'Select filter',\n }),\n name: 'filter',\n options:\n filter?.operators ||\n getFilterList(filter).map((opt) => ({\n label: formatMessage(opt.label),\n value: opt.value,\n })),\n placeholder: formatMessage({\n id: 'app.utils.select-filter',\n defaultMessage: 'Select filter',\n }),\n type: 'enumeration' as const,\n },\n ].map((field) => (\n <InputRenderer key={field.name} {...field} />\n ))}\n {filter &&\n formValues.filter &&\n formValues.filter !== '$null' &&\n formValues.filter !== '$notNull' ? (\n <Input\n {...filter}\n label={null}\n aria-label={filter.label}\n name=\"value\"\n // @ts-expect-error – if type is `custom` then `Input` will be a custom component.\n type={filter.mainField?.type ?? filter.type}\n />\n ) : null}\n <Button\n disabled={!modified || isSubmitting}\n size=\"L\"\n variant=\"secondary\"\n startIcon={<Plus />}\n type=\"submit\"\n fullWidth\n >\n {formatMessage({ id: 'app.utils.add-filter', defaultMessage: 'Add filter' })}\n </Button>\n </Flex>\n );\n }}\n </Form>\n </PopoverPrimitives.Content>\n );\n};\n\n/**\n * Depending on the selected field find the possible filters to apply\n */\nconst getFilterList = (filter?: Filters.Filter): FilterOption[] => {\n if (!filter) {\n return [];\n }\n\n const type = filter.mainField?.type ? filter.mainField.type : filter.type;\n\n switch (type) {\n case 'email':\n case 'text':\n case 'enumeration':\n case 'string': {\n return [\n ...BASE_FILTERS,\n ...IS_SENSITIVE_FILTERS,\n ...CONTAINS_FILTERS,\n ...STRING_PARSE_FILTERS,\n ];\n }\n\n case 'float':\n case 'integer':\n case 'biginteger':\n case 'decimal': {\n return [...BASE_FILTERS, ...NUMERIC_FILTERS];\n }\n case 'time':\n case 'date': {\n return [...BASE_FILTERS, ...NUMERIC_FILTERS, ...CONTAINS_FILTERS];\n }\n\n case 'datetime': {\n return [...BASE_FILTERS, ...NUMERIC_FILTERS];\n }\n\n default:\n return [...BASE_FILTERS, ...IS_SENSITIVE_FILTERS];\n }\n};\n\n/* -------------------------------------------------------------------------------------------------\n * List\n * -----------------------------------------------------------------------------------------------*/\n\nconst List = () => {\n const [{ query }, setQuery] = useQueryParams<Filters.Query>();\n\n const options = useFilters('List', ({ options }) => options);\n\n const handleClick = (data: FilterFormData) => {\n /**\n * Check the name, operator and value to see if it already exists in the query\n * if it does, remove it.\n */\n const nextFilters = (query?.filters?.$and ?? []).filter((filter) => {\n const [attributeName] = Object.keys(filter);\n if (attributeName !== data.name) {\n return true;\n }\n\n const { type, mainField } = options.find(({ name }) => name === attributeName)!;\n\n if (type === 'relation') {\n const filterObj = filter[attributeName][mainField?.name ?? 'id'];\n\n if (typeof filterObj === 'object') {\n const [operator] = Object.keys(filterObj);\n const value = filterObj[operator];\n\n return !(operator === data.filter && value === data.value);\n }\n\n return true;\n } else {\n const filterObj = filter[attributeName];\n const [operator] = Object.keys(filterObj);\n const value = filterObj[operator];\n\n return !(operator === data.filter && value === data.value);\n }\n });\n\n setQuery({ filters: { $and: nextFilters }, page: 1 });\n };\n\n if (!query?.filters?.$and?.length) {\n return null;\n }\n\n return (\n <>\n {query?.filters?.$and?.map((queryFilter) => {\n const [attributeName] = Object.keys(queryFilter);\n const filter = options.find(({ name }) => name === attributeName);\n const filterObj = queryFilter[attributeName];\n\n if (!filter || typeof filterObj !== 'object' || filterObj === null) {\n return null;\n }\n\n if (filter.type === 'relation') {\n const modelFilter = filterObj[filter.mainField?.name ?? 'id'];\n\n if (typeof modelFilter === 'object') {\n const [operator] = Object.keys(modelFilter);\n const value = modelFilter[operator];\n return (\n <AttributeTag\n key={`${attributeName}-${operator}-${value}`}\n {...filter}\n onClick={handleClick}\n operator={operator}\n value={value}\n />\n );\n }\n\n return null;\n } else {\n const [operator] = Object.keys(filterObj);\n const value = filterObj[operator];\n\n /**\n * Something has gone wrong here, because the attribute is not a relation\n * but we have a nested filter object.\n */\n if (typeof value === 'object') {\n return null;\n }\n\n return (\n <AttributeTag\n key={`${attributeName}-${operator}-${value}`}\n {...filter}\n onClick={handleClick}\n operator={operator}\n value={value}\n />\n );\n }\n })}\n </>\n );\n};\n\ninterface AttributeTagProps extends Filters.Filter {\n onClick: (data: FilterFormData) => void;\n operator: string;\n value: string;\n}\n\nconst AttributeTag = ({\n input,\n label,\n mainField,\n name,\n onClick,\n operator,\n options,\n value,\n ...filter\n}: AttributeTagProps) => {\n const { formatMessage, formatDate, formatTime, formatNumber } = useIntl();\n\n const handleClick = () => {\n onClick({ name, value, filter: operator });\n };\n\n const type = mainField?.type ? mainField.type : filter.type;\n\n let formattedValue: string = value;\n\n switch (type) {\n case 'date':\n formattedValue = formatDate(value, { dateStyle: 'full' });\n break;\n case 'datetime':\n formattedValue = formatDate(value, { dateStyle: 'full', timeStyle: 'short' });\n break;\n case 'time':\n const [hour, minute] = value.split(':');\n const date = new Date();\n date.setHours(Number(hour));\n date.setMinutes(Number(minute));\n\n formattedValue = formatTime(date, {\n hour: 'numeric',\n minute: 'numeric',\n });\n break;\n case 'float':\n case 'integer':\n case 'biginteger':\n case 'decimal':\n formattedValue = formatNumber(Number(value));\n break;\n }\n\n // Handle custom input\n if (input && options) {\n // If the custom input has an options array, find the option with a customValue matching the query value\n const selectedOption = options.find((option) => {\n return (typeof option === 'string' ? option : option.value) === value;\n });\n\n formattedValue = selectedOption\n ? typeof selectedOption === 'string'\n ? selectedOption\n : selectedOption.label ?? selectedOption.value\n : value;\n }\n\n const content = `${label} ${formatMessage({\n id: `components.FilterOptions.FILTER_TYPES.${operator}`,\n defaultMessage: operator,\n })} ${operator !== '$null' && operator !== '$notNull' ? formattedValue : ''}`;\n\n return (\n <Tag padding={1} onClick={handleClick} icon={<Cross />}>\n {content}\n </Tag>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * EXPORTS\n * -----------------------------------------------------------------------------------------------*/\n\nconst Filters = {\n List,\n Popover: PopoverImpl,\n Root,\n Trigger,\n};\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nnamespace Filters {\n export interface Filter {\n input?: React.ComponentType<ValueInputProps>;\n label: string;\n /**\n * the name of the attribute we use to display the actual name e.g. relations\n * are just ids, so we use the mainField to display something meaninginful by\n * looking at the target's schema\n */\n mainField?: MainField;\n name: string;\n operators?: Array<{\n label: string;\n value: string;\n }>;\n options?: Array<{ label?: string; value: string }> | string[];\n type: InputProps['type'] | 'relation' | 'custom';\n }\n\n export interface ValueInputProps extends Omit<Filter, 'label'> {\n ['aria-label']: string;\n }\n\n export type Props = RootProps;\n\n export interface TriggerProps {\n label?: string;\n }\n\n export interface Query {\n filters?: {\n /**\n * Typically, a filter will be:\n * ```ts\n * {\n * [attributeName]: {\n * [operator]: value\n * }\n * }\n * ```\n * However, for relation items it becomes more nested.\n * ```ts\n * {\n * [attributeName]: {\n * [relationTargetAttribute]: {\n * [operator]: value\n * }\n * }\n * }\n */\n $and?: Array<Record<string, Record<string, string | Record<string, string>>>>;\n };\n page?: number;\n }\n}\n\nexport { Filters };\n"],"names":["setTriggerNode","setOpen","disabled","open","FilterIcon","options","triggerNode","onChange","filter"],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ import pipe from 'lodash/fp/pipe';
|
|
|
6
6
|
import { useIntl } from 'react-intl';
|
|
7
7
|
import { j as useNotification, l as useField, aR as useGetInitialDataQuery, aT as ATTRIBUTE_TYPES_THAT_CANNOT_BE_MAIN_FIELD, a0 as Form, aN as capitalise, q as getTranslation, E as useForm, au as useDragAndDrop, aA as ItemTypes } from './reducers-IQWvK_9L.mjs';
|
|
8
8
|
import { I as InputRenderer } from './useDocumentLayout-4trWL6Jz.mjs';
|
|
9
|
-
import { B as BackButton } from './index-
|
|
9
|
+
import { B as BackButton } from './index-1NFAbkxM.mjs';
|
|
10
10
|
import { Menu, Link } from '@strapi/design-system/v2';
|
|
11
11
|
import { Plus, Drag, Pencil, Cross, Cog } from '@strapi/icons';
|
|
12
12
|
import { getEmptyImage } from 'react-dnd-html5-backend';
|
|
@@ -736,4 +736,4 @@ const Header = ({ name }) => {
|
|
|
736
736
|
};
|
|
737
737
|
|
|
738
738
|
export { ConfigurationForm as C, TEMP_FIELD_NAME as T };
|
|
739
|
-
//# sourceMappingURL=Form-
|
|
739
|
+
//# sourceMappingURL=Form-7gccxUtH.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Form-y8gH26Xy.mjs","sources":["../../admin/src/content-manager/components/ConfigurationForm/EditFieldForm.tsx","../../admin/src/content-manager/components/ConfigurationForm/Fields.tsx","../../admin/src/content-manager/components/ConfigurationForm/Form.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Button,\n Flex,\n Grid,\n GridItem,\n ModalBody,\n ModalFooter,\n ModalHeader,\n ModalLayout,\n Typography,\n} from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport * as yup from 'yup';\n\nimport { Form, InputProps, useField } from '../../../components/Form';\nimport { InputRenderer } from '../../../components/FormInputs/Renderer';\nimport { useNotification } from '../../../features/Notifications';\nimport { capitalise } from '../../../utils/strings';\nimport { ATTRIBUTE_TYPES_THAT_CANNOT_BE_MAIN_FIELD } from '../../constants/attributes';\nimport { useGetInitialDataQuery } from '../../services/init';\nimport { getTranslation } from '../../utils/translations';\nimport { FieldTypeIcon } from '../FieldTypeIcon';\n\nimport { TEMP_FIELD_NAME } from './Fields';\n\nimport type { ConfigurationFormData } from './Form';\nimport type { Schema } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * Constants\n * -----------------------------------------------------------------------------------------------*/\n\nconst FIELD_SCHEMA = yup.object().shape({\n label: yup.string().required(),\n description: yup.string(),\n editable: yup.boolean(),\n size: yup.number().required(),\n});\n\n/* -------------------------------------------------------------------------------------------------\n * EditFieldForm\n * -----------------------------------------------------------------------------------------------*/\n\ninterface EditFieldFormProps {\n attribute?: Schema.Attribute.AnyAttribute;\n name: string;\n onClose: () => void;\n}\n\nconst EditFieldForm = ({ attribute, name, onClose }: EditFieldFormProps) => {\n const { formatMessage } = useIntl();\n const id = React.useId();\n const { toggleNotification } = useNotification();\n\n const { value, onChange } =\n useField<ConfigurationFormData['layout'][number]['children'][number]>(name);\n\n const { data: mainFieldOptions } = useGetInitialDataQuery(undefined, {\n selectFromResult: (res) => {\n if (attribute?.type !== 'relation' || !res.data) {\n return { data: [] };\n }\n\n if ('targetModel' in attribute && typeof attribute.targetModel === 'string') {\n const targetSchema = res.data.contentTypes.find(\n (schema) => schema.uid === attribute.targetModel\n );\n\n if (targetSchema) {\n return {\n data: Object.entries(targetSchema.attributes).reduce<\n Array<{ label: string; value: string }>\n >((acc, [key, attribute]) => {\n /**\n * Create the list of attributes from the schema as to which can\n * be our `mainField` and dictate the display name of the schema\n * we're editing.\n */\n if (!ATTRIBUTE_TYPES_THAT_CANNOT_BE_MAIN_FIELD.includes(attribute.type)) {\n acc.push({\n label: key,\n value: key,\n });\n }\n\n return acc;\n }, []),\n };\n }\n }\n\n return { data: [] };\n },\n skip: attribute?.type !== 'relation',\n });\n\n if (!value || value.name === TEMP_FIELD_NAME || !attribute) {\n // This is very unlikely to happen, but it ensures the form is not opened without a value.\n console.error(\n \"You've opened a field to edit without it being part of the form, this is likely a bug with Strapi. Please open an issue.\"\n );\n\n toggleNotification({\n message: formatMessage({\n id: 'content-manager.containers.edit-settings.modal-form.error',\n defaultMessage: 'An error occurred while trying to open the form.',\n }),\n type: 'danger',\n });\n\n return null;\n }\n\n return (\n <ModalLayout onClose={onClose} labelledBy={id}>\n <Form\n method=\"PUT\"\n initialValues={value}\n validationSchema={FIELD_SCHEMA}\n onSubmit={(data) => {\n onChange(name, data);\n onClose();\n }}\n >\n <ModalHeader>\n <Flex gap={3}>\n <FieldTypeIcon type={attribute.type} />\n <Typography fontWeight=\"bold\" textColor=\"neutral800\" as=\"h2\" id={id}>\n {formatMessage(\n {\n id: 'content-manager.containers.edit-settings.modal-form.label',\n defaultMessage: 'Edit {fieldName}',\n },\n { fieldName: capitalise(value.name) }\n )}\n </Typography>\n </Flex>\n </ModalHeader>\n <ModalBody>\n <Grid gap={4}>\n {[\n {\n name: 'label',\n label: formatMessage({\n id: getTranslation('containers.edit-settings.modal-form.label'),\n defaultMessage: 'Label',\n }),\n size: 6,\n type: 'string' as const,\n },\n {\n name: 'description',\n label: formatMessage({\n id: getTranslation('containers.edit-settings.modal-form.description'),\n defaultMessage: 'Description',\n }),\n size: 6,\n type: 'string' as const,\n },\n {\n name: 'placeholder',\n label: formatMessage({\n id: getTranslation('containers.edit-settings.modal-form.placeholder'),\n defaultMessage: 'Placeholder',\n }),\n size: 6,\n type: 'string' as const,\n },\n {\n name: 'editable',\n label: formatMessage({\n id: getTranslation('containers.edit-settings.modal-form.editable'),\n defaultMessage: 'Editable',\n }),\n size: 6,\n type: 'boolean' as const,\n },\n {\n name: 'mainField',\n label: formatMessage({\n id: getTranslation('containers.edit-settings.modal-form.mainField'),\n defaultMessage: 'Entry title',\n }),\n hint: formatMessage({\n id: getTranslation(\n 'containers.SettingPage.edit-settings.modal-form.mainField.hint'\n ),\n defaultMessage: 'Set the displayed field',\n }),\n size: 6,\n options: mainFieldOptions,\n type: 'enumeration' as const,\n },\n {\n name: 'size',\n label: formatMessage({\n id: getTranslation('containers.ListSettingsView.modal-form.size'),\n defaultMessage: 'Size',\n }),\n size: 6,\n options: [\n { value: '4', label: '33%' },\n { value: '6', label: '50%' },\n { value: '8', label: '66%' },\n { value: '12', label: '100%' },\n ],\n type: 'enumeration' as const,\n },\n ]\n .filter(filterFieldsBasedOnAttributeType(attribute.type))\n .map(({ size, ...field }) => (\n <GridItem key={field.name} col={size}>\n <InputRenderer {...field} />\n </GridItem>\n ))}\n </Grid>\n </ModalBody>\n <ModalFooter\n startActions={\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'Cancel' })}\n </Button>\n }\n endActions={\n <Button type=\"submit\">\n {formatMessage({ id: 'global.finish', defaultMessage: 'Finish' })}\n </Button>\n }\n />\n </Form>\n </ModalLayout>\n );\n};\n\n/**\n * @internal\n * @description not all edit fields have the same editable properties, it depends on the type\n * e.g. a dynamic zone can only change it's label.\n */\nconst filterFieldsBasedOnAttributeType = (type: Schema.Attribute.Kind) => (field: InputProps) => {\n switch (type) {\n case 'blocks':\n case 'richtext':\n return field.name !== 'size' && field.name !== 'mainField';\n case 'boolean':\n case 'media':\n return field.name !== 'placeholder' && field.name !== 'mainField';\n case 'component':\n case 'dynamiczone':\n return field.name === 'label' || field.name === 'editable';\n case 'json':\n return field.name !== 'placeholder' && field.name !== 'mainField' && field.name !== 'size';\n case 'relation':\n return true;\n default:\n return field.name !== 'mainField';\n }\n};\n\nexport { EditFieldForm };\nexport type { EditFieldFormProps };\n","import * as React from 'react';\n\nimport {\n Box,\n Flex,\n Grid,\n GridItem,\n IconButton,\n Typography,\n useComposedRefs,\n} from '@strapi/design-system';\nimport { Link, Menu } from '@strapi/design-system/v2';\nimport { Cog, Cross, Drag, Pencil, Plus } from '@strapi/icons';\nimport { generateNKeysBetween as generateNKeysBetweenImpl } from 'fractional-indexing';\nimport { getEmptyImage } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\nimport styled from 'styled-components';\n\nimport { useField, useForm } from '../../../components/Form';\nimport { ItemTypes } from '../../constants/dragAndDrop';\nimport { type UseDragAndDropOptions, useDragAndDrop } from '../../hooks/useDragAndDrop';\nimport { getTranslation } from '../../utils/translations';\nimport { ComponentIcon } from '../ComponentIcon';\n\nimport { EditFieldForm, EditFieldFormProps } from './EditFieldForm';\n\nimport type { ConfigurationFormData, EditFieldSpacerLayout } from './Form';\nimport type { EditLayout } from '../../hooks/useDocumentLayout';\n\ntype FormField = ConfigurationFormData['layout'][number]['children'][number];\ntype Field = Omit<ConfigurationFormData['layout'][number]['children'][number], '__temp_key__'>;\n\n/* -------------------------------------------------------------------------------------------------\n * Fields\n * -----------------------------------------------------------------------------------------------*/\n\ninterface FieldsProps extends Pick<EditLayout, 'metadatas'>, Pick<FieldProps, 'components'> {\n attributes: {\n [key: string]: FieldProps['attribute'];\n };\n fieldSizes: Record<string, number>;\n components: EditLayout['components'];\n}\n\nconst Fields = ({ attributes, fieldSizes, components, metadatas = {} }: FieldsProps) => {\n const { formatMessage } = useIntl();\n\n const layout = useForm<ConfigurationFormData['layout']>(\n 'Fields',\n (state) => state.values.layout ?? []\n );\n const onChange = useForm('Fields', (state) => state.onChange);\n const addFieldRow = useForm('Fields', (state) => state.addFieldRow);\n const removeFieldRow = useForm('Fields', (state) => state.removeFieldRow);\n\n const existingFields = layout.map((row) => row.children.map((field) => field.name)).flat();\n\n /**\n * Get the fields that are not already in the layout\n * But also check that they are visible before we give users\n * the option to display them. e.g. `id` is not visible.\n */\n const remainingFields = Object.entries(metadatas).reduce<Field[]>((acc, current) => {\n const [name, { visible, ...field }] = current;\n\n if (!existingFields.includes(name) && visible === true) {\n const type = attributes[name]?.type;\n const size = type ? fieldSizes[type] : 12;\n\n acc.push({\n ...field,\n label: field.label ?? name,\n name,\n size,\n });\n }\n\n return acc;\n }, []);\n\n const handleMoveField: FieldProps['onMoveField'] = (\n [newRowIndex, newFieldIndex],\n [currentRowIndex, currentFieldIndex]\n ) => {\n /**\n * Because this view has the constraint that the sum of field sizes cannot be greater\n * than 12, we don't use the form's method to move field rows, instead, we calculate\n * the new layout and set the entire form.\n */\n const newLayout = structuredClone(layout);\n\n /**\n * Remove field from the current layout space using splice so we have the item\n */\n const [field] = newLayout[currentRowIndex].children.splice(currentFieldIndex, 1);\n\n if (!field || field.name === TEMP_FIELD_NAME) {\n return;\n }\n\n const newRow = newLayout[newRowIndex].children;\n const [newFieldKey] = generateNKeysBetween(newRow, 1, currentFieldIndex, newFieldIndex);\n\n /**\n * Next we inject the field into it's new row at it's specified index, we then remove the spaces\n * if they exist and recalculate into potentially two arrays ONLY if the sizing is now over 12,\n * the row and the rest of the row that couldn't fit.\n *\n * for example, if i have a row of `[{size: 4}, {size: 6}]` and i add `{size: 8}` a index 0,\n * the new array will look like `[{size: 8}, {size: 4}, {size: 6}]` which breaks the limit of 12,\n * so instead we make two arrays for the new rows `[[{size: 8}, {size: 4}], [{size: 6}]]` which we\n * then inject at the original row point with spacers included.\n */\n newRow.splice(newFieldIndex, 0, { ...field, __temp_key__: newFieldKey });\n\n if (newLayout[newRowIndex].children.reduce((acc, curr) => acc + curr.size, 0) > 12) {\n const recalculatedRows = chunkArray(\n newLayout[newRowIndex].children.filter((field) => field.name !== TEMP_FIELD_NAME)\n );\n\n const rowKeys = generateNKeysBetween(\n newLayout,\n recalculatedRows.length,\n currentRowIndex,\n newRowIndex\n );\n\n newLayout.splice(\n newRowIndex,\n 1,\n ...recalculatedRows.map((row, index) => ({\n __temp_key__: rowKeys[index],\n children: row,\n }))\n );\n }\n\n /**\n * Now we remove our spacers from the rows so we can understand what dead rows exist:\n * - if there's only spacers left\n * - there's nothing in the row, e.g. a size 12 field left it.\n * These rows are then filtered out.\n * After that, we recalculate the spacers for the rows that need them.\n */\n const newLayoutWithSpacers = newLayout\n .map((row) => ({\n ...row,\n children: row.children.filter((field) => field.name !== TEMP_FIELD_NAME),\n }))\n .filter((row) => row.children.length > 0)\n .map((row) => {\n const totalSpaceTaken = row.children.reduce((acc, curr) => acc + curr.size, 0);\n\n if (totalSpaceTaken < 12) {\n const [spacerKey] = generateNKeysBetweenImpl(\n row.children.at(-1)?.__temp_key__,\n undefined,\n 1\n );\n\n return {\n ...row,\n children: [\n ...row.children,\n {\n name: TEMP_FIELD_NAME,\n size: 12 - totalSpaceTaken,\n __temp_key__: spacerKey,\n } satisfies EditFieldSpacerLayout,\n ],\n };\n }\n\n return row;\n });\n\n onChange('layout', newLayoutWithSpacers);\n };\n\n const handleRemoveField =\n (rowIndex: number, fieldIndex: number): FieldProps['onRemoveField'] =>\n () => {\n if (layout[rowIndex].children.length === 1) {\n removeFieldRow(`layout`, rowIndex);\n } else {\n onChange(`layout.${rowIndex}.children.${fieldIndex}`, undefined);\n }\n };\n\n const handleAddField = (field: Field) => () => {\n addFieldRow('layout', { children: [field] });\n };\n\n return (\n <Flex paddingTop={6} direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Flex alignItems=\"flex-start\" direction=\"column\" justifyContent=\"space-between\">\n <Typography fontWeight=\"bold\">\n {formatMessage({\n id: getTranslation('containers.list.displayedFields'),\n defaultMessage: 'Displayed fields',\n })}\n </Typography>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: 'containers.SettingPage.editSettings.description',\n defaultMessage: 'Drag & drop the fields to build the layout',\n })}\n </Typography>\n </Flex>\n <Box padding={4} hasRadius borderStyle=\"dashed\" borderWidth=\"1px\" borderColor=\"neutral300\">\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n {layout.map((row, rowIndex) => (\n <Grid gap={2} key={row.__temp_key__}>\n {row.children.map(({ size, ...field }, fieldIndex) => (\n <GridItem key={field.name} col={size}>\n <Field\n attribute={attributes[field.name]}\n components={components}\n index={[rowIndex, fieldIndex]}\n name={`layout.${rowIndex}.children.${fieldIndex}`}\n onMoveField={handleMoveField}\n onRemoveField={handleRemoveField(rowIndex, fieldIndex)}\n />\n </GridItem>\n ))}\n </Grid>\n ))}\n <Menu.Root>\n <Menu.Trigger\n startIcon={<Plus />}\n endIcon={null}\n disabled={remainingFields.length === 0}\n fullWidth\n variant=\"secondary\"\n >\n {formatMessage({\n id: getTranslation('containers.SettingPage.add.field'),\n defaultMessage: 'Insert another field',\n })}\n </Menu.Trigger>\n <Menu.Content>\n {remainingFields.map((field) => (\n <Menu.Item key={field.name} onSelect={handleAddField(field)}>\n {field.label}\n </Menu.Item>\n ))}\n </Menu.Content>\n </Menu.Root>\n </Flex>\n </Box>\n </Flex>\n );\n};\n\n/**\n * @internal\n * @description Small abstraction to solve within an array of fields where you can\n * add a field to the beginning or start, move back and forth what it's index range\n * should be when calculating it's new temp key\n */\nconst generateNKeysBetween = <Field extends { __temp_key__: string }>(\n field: Field[],\n count: number,\n currInd: number,\n newInd: number\n) => {\n const startKey = currInd > newInd ? field[newInd - 1]?.__temp_key__ : field[newInd]?.__temp_key__;\n const endKey = currInd > newInd ? field[newInd]?.__temp_key__ : field[newInd + 1]?.__temp_key__;\n\n return generateNKeysBetweenImpl(startKey, endKey, count);\n};\n\n/**\n * @internal\n * @description chunks a row of layouts by the max size we allow, 12. It does not add the\n * spacers again, that should be added separately.\n */\nconst chunkArray = (array: FormField[]) => {\n const result: Array<FormField[]> = [];\n let temp: FormField[] = [];\n\n array.reduce((acc, field) => {\n if (acc + field.size > 12) {\n result.push(temp);\n temp = [field];\n return field.size;\n } else {\n temp.push(field);\n return acc + field.size;\n }\n }, 0);\n\n if (temp.length > 0) {\n result.push(temp);\n }\n\n return result;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Field\n * -----------------------------------------------------------------------------------------------*/\n\ninterface FieldProps extends Pick<EditFieldFormProps, 'name' | 'attribute'> {\n components: EditLayout['components'];\n index: [row: number, index: number];\n onMoveField: UseDragAndDropOptions<number[]>['onMoveItem'];\n onRemoveField: React.MouseEventHandler<HTMLButtonElement>;\n}\n\nconst TEMP_FIELD_NAME = '_TEMP_';\n\n/**\n * Displays a field in the layout with drag options, also\n * opens a modal to edit the details of said field.\n */\nconst Field = ({ attribute, components, name, index, onMoveField, onRemoveField }: FieldProps) => {\n const [isModalOpen, setIsModalOpen] = React.useState(false);\n const { formatMessage } = useIntl();\n\n const { value } = useField<FormField>(name);\n\n const [{ isDragging }, objectRef, dropRef, dragRef, dragPreviewRef] = useDragAndDrop<\n Array<number>\n >(true, {\n dropSensitivity: 'immediate',\n type: ItemTypes.EDIT_FIELD,\n item: { index, label: value?.label, name },\n index,\n onMoveItem: onMoveField,\n });\n\n React.useEffect(() => {\n dragPreviewRef(getEmptyImage(), { captureDraggingState: false });\n }, [dragPreviewRef]);\n\n const composedRefs = useComposedRefs<HTMLSpanElement>(dragRef, objectRef);\n\n const handleRemoveField: React.MouseEventHandler<HTMLButtonElement> = (e) => {\n e.stopPropagation();\n onRemoveField(e);\n };\n\n const tempRefs = useComposedRefs<HTMLSpanElement>(dropRef, objectRef);\n\n if (!value) {\n return null;\n }\n\n if (value.name === TEMP_FIELD_NAME) {\n return <Flex as=\"span\" height=\"100%\" style={{ opacity: 0 }} ref={tempRefs} />;\n }\n\n return (\n <>\n <Flex\n borderColor=\"neutral150\"\n background=\"neutral100\"\n hasRadius\n style={{ opacity: isDragging ? 0.5 : 1 }}\n ref={dropRef}\n gap={3}\n cursor=\"pointer\"\n onClick={() => {\n setIsModalOpen(true);\n }}\n >\n <DragButton\n as=\"span\"\n aria-label={formatMessage(\n {\n id: getTranslation('components.DraggableCard.move.field'),\n defaultMessage: 'Move {item}',\n },\n { item: value.label }\n )}\n onClick={(e) => e.stopPropagation()}\n ref={composedRefs}\n >\n <Drag />\n </DragButton>\n <Flex direction=\"column\" alignItems=\"flex-start\" grow={1} overflow=\"hidden\">\n <Flex gap={3} justifyContent=\"space-between\" width=\"100%\">\n <Typography ellipsis fontWeight=\"bold\">\n {value.label}\n </Typography>\n <Flex>\n <IconButton\n borderWidth={0}\n background=\"transparent\"\n onClick={(e) => {\n e.stopPropagation();\n setIsModalOpen(true);\n }}\n aria-label={formatMessage(\n {\n id: getTranslation('components.DraggableCard.edit.field'),\n defaultMessage: 'Edit {item}',\n },\n { item: value.label }\n )}\n >\n <Pencil />\n </IconButton>\n <IconButton\n borderWidth={0}\n onClick={handleRemoveField}\n background=\"transparent\"\n aria-label={formatMessage(\n {\n id: getTranslation('components.DraggableCard.delete.field'),\n defaultMessage: 'Delete {item}',\n },\n { item: value.label }\n )}\n >\n <Cross />\n </IconButton>\n </Flex>\n </Flex>\n {attribute?.type === 'component' ? (\n <Flex\n paddingTop={3}\n paddingRight={3}\n paddingBottom={3}\n paddingLeft={0}\n alignItems=\"flex-start\"\n direction=\"column\"\n gap={2}\n width=\"100%\"\n >\n <Grid gap={4} width=\"100%\">\n {components[attribute.component].layout.map((row) =>\n row.map(({ size, ...field }) => (\n <GridItem key={field.name} col={size}>\n <Flex\n alignItems=\"center\"\n background=\"neutral0\"\n paddingTop={2}\n paddingBottom={2}\n paddingLeft={3}\n paddingRight={3}\n hasRadius\n borderColor=\"neutral200\"\n >\n <Typography textColor=\"neutral800\">{field.name}</Typography>\n </Flex>\n </GridItem>\n ))\n )}\n </Grid>\n <Link\n // used to stop the edit form from appearing when we click here.\n onClick={(e) => e.stopPropagation()}\n startIcon={<Cog />}\n as={NavLink}\n // @ts-expect-error – DS does not infer props from the `as` prop\n to={`../components/${attribute.component}/configurations/edit`}\n >\n {formatMessage({\n id: getTranslation('components.FieldItem.linkToComponentLayout'),\n defaultMessage: \"Set the component's layout\",\n })}\n </Link>\n </Flex>\n ) : null}\n {attribute?.type === 'dynamiczone' ? (\n <Flex\n paddingTop={3}\n paddingRight={3}\n paddingBottom={3}\n paddingLeft={0}\n alignItems=\"flex-start\"\n gap={2}\n width=\"100%\"\n >\n {attribute?.components.map((uid) => (\n <ComponentLink\n // used to stop the edit form from appearing when we click here.\n onClick={(e) => e.stopPropagation()}\n key={uid}\n to={`../components/${uid}/configurations/edit`}\n >\n <ComponentIcon icon={components[uid].settings.icon} />\n <Typography fontSize={1} textColor=\"neutral600\" fontWeight=\"bold\">\n {components[uid].settings.displayName}\n </Typography>\n </ComponentLink>\n ))}\n </Flex>\n ) : null}\n </Flex>\n </Flex>\n {isModalOpen && value.name !== TEMP_FIELD_NAME && (\n <EditFieldForm attribute={attribute} name={name} onClose={() => setIsModalOpen(false)} />\n )}\n </>\n );\n};\n\nconst DragButton = styled(IconButton)`\n height: unset;\n align-self: stretch;\n display: flex;\n align-items: center;\n padding: 0 ${({ theme }) => theme.spaces[3]};\n border-right: 1px solid ${({ theme }) => theme.colors.neutral150};\n cursor: all-scroll;\n\n svg {\n width: ${12 / 16}rem;\n height: ${12 / 16}rem;\n }\n`;\n\nconst ComponentLink = styled(NavLink)`\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: ${({ theme }) => theme.spaces[1]};\n padding: ${(props) => props.theme.spaces[2]};\n border: 1px solid ${({ theme }) => theme.colors.neutral200};\n background: ${({ theme }) => theme.colors.neutral0};\n width: 8.75rem;\n border-radius: ${({ theme }) => theme.borderRadius};\n text-decoration: none;\n\n &:focus,\n &:hover {\n ${({ theme }) => `\n background-color: ${theme.colors.primary100};\n border-color: ${theme.colors.primary200};\n\n ${Typography} {\n color: ${theme.colors.primary600};\n }\n `}\n\n /* > ComponentIcon */\n > div:first-child {\n background: ${({ theme }) => theme.colors.primary200};\n color: ${({ theme }) => theme.colors.primary600};\n\n svg {\n path {\n fill: ${({ theme }) => theme.colors.primary600};\n }\n }\n }\n }\n`;\n\nexport { Fields, TEMP_FIELD_NAME };\nexport type { FieldsProps };\n","import * as React from 'react';\n\nimport {\n Button,\n ContentLayout,\n Divider,\n Flex,\n Grid,\n GridItem,\n HeaderLayout,\n Layout,\n Main,\n Typography,\n} from '@strapi/design-system';\nimport { generateNKeysBetween } from 'fractional-indexing';\nimport pipe from 'lodash/fp/pipe';\nimport { useIntl } from 'react-intl';\n\nimport { Form, FormProps, useForm } from '../../../components/Form';\nimport { InputRenderer } from '../../../components/FormInputs/Renderer';\nimport { BackButton } from '../../../features/BackButton';\nimport { capitalise } from '../../../utils/strings';\nimport { ATTRIBUTE_TYPES_THAT_CANNOT_BE_MAIN_FIELD } from '../../constants/attributes';\nimport { getTranslation } from '../../utils/translations';\n\nimport { Fields, FieldsProps, TEMP_FIELD_NAME } from './Fields';\n\nimport type { EditFieldLayout, EditLayout } from '../../hooks/useDocumentLayout';\n\n/* -------------------------------------------------------------------------------------------------\n * ConfigurationForm\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ConfigurationFormProps extends Pick<FieldsProps, 'attributes' | 'fieldSizes'> {\n layout: EditLayout;\n onSubmit: FormProps<ConfigurationFormData>['onSubmit'];\n}\n\n/**\n * Every key in EditFieldLayout is turned to optional never and then we overwrite the ones we are using.\n */\n\ntype EditFieldSpacerLayout = {\n [key in keyof Omit<EditFieldLayout, 'name' | 'size'>]?: never;\n} & {\n description?: never;\n editable?: never;\n name: '_TEMP_';\n size: number;\n __temp_key__: string;\n};\n\ninterface ConfigurationFormData extends Pick<EditLayout, 'settings'> {\n layout: Array<{\n __temp_key__: string;\n children: Array<\n | (Pick<EditFieldLayout, 'label' | 'size' | 'name' | 'placeholder' | 'mainField'> & {\n description: EditFieldLayout['hint'];\n editable: EditFieldLayout['disabled'];\n __temp_key__: string;\n })\n | EditFieldSpacerLayout\n >;\n }>;\n}\n\nconst ConfigurationForm = ({\n attributes,\n fieldSizes,\n layout: editLayout,\n onSubmit,\n}: ConfigurationFormProps) => {\n const { components, settings, layout, metadatas } = editLayout;\n\n const { formatMessage } = useIntl();\n\n const initialValues: ConfigurationFormData = React.useMemo(() => {\n const transformations = pipe(\n flattenPanels,\n replaceMainFieldWithNameOnly,\n extractMetadata,\n addTmpSpaceToLayout,\n addTmpKeysToLayout\n );\n\n return {\n layout: transformations(layout),\n settings,\n };\n }, [layout, settings]);\n\n return (\n <Layout>\n <Main>\n <Form initialValues={initialValues} onSubmit={onSubmit} method=\"PUT\">\n <Header name={settings.displayName ?? ''} />\n <ContentLayout>\n <Flex\n alignItems=\"stretch\"\n background=\"neutral0\"\n direction=\"column\"\n gap={6}\n hasRadius\n shadow=\"tableShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Typography variant=\"delta\" as=\"h2\">\n {formatMessage({\n id: getTranslation('containers.SettingPage.settings'),\n defaultMessage: 'Settings',\n })}\n </Typography>\n <Grid>\n <GridItem col={6} s={12}>\n <InputRenderer\n type=\"enumeration\"\n label={formatMessage({\n id: getTranslation('containers.SettingPage.editSettings.entry.title'),\n defaultMessage: 'Entry title',\n })}\n hint={formatMessage({\n id: getTranslation(\n 'containers.SettingPage.editSettings.entry.title.description'\n ),\n defaultMessage: 'Set the display field of your entry',\n })}\n name=\"settings.mainField\"\n options={Object.entries(attributes).reduce<\n Array<{ label: string; value: string }>\n >((acc, [key, attribute]) => {\n if (!attribute) {\n return acc;\n }\n\n /**\n * Create the list of attributes from the schema as to which can\n * be our `mainField` and dictate the display name of the schema\n * we're editing.\n */\n if (!ATTRIBUTE_TYPES_THAT_CANNOT_BE_MAIN_FIELD.includes(attribute.type)) {\n acc.push({\n label: key,\n value: key,\n });\n }\n\n return acc;\n }, [])}\n />\n </GridItem>\n <GridItem paddingTop={6} paddingBottom={6} col={12} s={12}>\n <Divider />\n </GridItem>\n <GridItem col={12} s={12}>\n <Typography variant=\"delta\" as=\"h3\">\n {formatMessage({\n id: getTranslation('containers.SettingPage.view'),\n defaultMessage: 'View',\n })}\n </Typography>\n </GridItem>\n <GridItem col={12} s={12}>\n <Fields\n attributes={attributes}\n components={components}\n fieldSizes={fieldSizes}\n metadatas={metadatas}\n />\n </GridItem>\n </Grid>\n </Flex>\n </ContentLayout>\n </Form>\n </Main>\n </Layout>\n );\n};\n\n/**\n * @internal\n * @description Panels don't exist in the layout, so we flatten by one.\n */\nconst flattenPanels = (layout: EditLayout['layout']): EditLayout['layout'][number] =>\n layout.flat(1);\n\n/**\n * @internal\n * @description We don't need the mainField object in the layout, we only need the name.\n */\nconst replaceMainFieldWithNameOnly = (layout: EditLayout['layout'][number]) =>\n layout.map((row) =>\n row.map((field) => ({\n ...field,\n mainField: field.mainField?.name,\n }))\n );\n\n/**\n * @internal\n * @description We extract the metadata values from the field layout, because these are editable by the user.\n */\nconst extractMetadata = (\n layout: EditLayout['layout'][number]\n): Array<Exclude<ConfigurationFormData['layout'], { name: '_TEMP_' }>[number]['children']> => {\n return layout.map((row) =>\n row.map(({ label, disabled, hint, placeholder, size, name, mainField }) => ({\n label,\n editable: !disabled,\n description: hint,\n mainField,\n placeholder,\n size,\n name,\n __temp_key__: '',\n }))\n );\n};\n\n/**\n * @internal\n * @description Each row of the layout has a max size of 12 (based on bootstrap grid system)\n * So in order to offer a better drop zone we add the _TEMP_ div to complete the remaining substract (12 - existing)\n */\nconst addTmpSpaceToLayout = (\n layout: ReturnType<typeof extractMetadata>\n): Array<ConfigurationFormData['layout'][number]['children']> => [\n ...layout.map((row) => {\n const totalSpaceTaken = row.reduce((acc, field) => acc + field.size, 0);\n\n if (totalSpaceTaken < 12) {\n return [\n ...row,\n {\n name: TEMP_FIELD_NAME,\n size: 12 - totalSpaceTaken,\n __temp_key__: '',\n } satisfies EditFieldSpacerLayout,\n ];\n }\n\n return row;\n }),\n];\n\n/**\n * @internal\n * @description At this point of the transformations we have Field[][], but each row for the form should have a __temp_key__\n * applied. This means we need to change it so `Field` is nested under the children property.\n */\nconst addTmpKeysToLayout = (\n layout: ReturnType<typeof addTmpSpaceToLayout>\n): ConfigurationFormData['layout'] => {\n const keys = generateNKeysBetween(undefined, undefined, layout.length);\n\n return layout.map((row, rowIndex) => {\n const fieldKeys = generateNKeysBetween(undefined, undefined, row.length);\n\n return {\n __temp_key__: keys[rowIndex],\n children: row.map((field, fieldIndex) => {\n return {\n ...field,\n __temp_key__: fieldKeys[fieldIndex],\n };\n }),\n };\n });\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Header\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HeaderProps {\n name: string;\n}\n\nconst Header = ({ name }: HeaderProps) => {\n const { formatMessage } = useIntl();\n const modified = useForm('Header', (state) => state.modified);\n const isSubmitting = useForm('Header', (state) => state.isSubmitting);\n\n return (\n <HeaderLayout\n title={formatMessage(\n {\n id: getTranslation('components.SettingsViewWrapper.pluginHeader.title'),\n defaultMessage: `Configure the view - {name}`,\n },\n { name: capitalise(name) }\n )}\n subtitle={formatMessage({\n id: getTranslation('components.SettingsViewWrapper.pluginHeader.description.edit-settings'),\n defaultMessage: 'Customize how the edit view will look like.',\n })}\n navigationAction={<BackButton />}\n primaryAction={\n <Button disabled={!modified} loading={isSubmitting} type=\"submit\">\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n />\n );\n};\n\nexport { ConfigurationForm };\nexport type { ConfigurationFormProps, ConfigurationFormData, EditFieldSpacerLayout };\n"],"names":["attribute","field","generateNKeysBetweenImpl","generateNKeysBetween"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Form-7gccxUtH.mjs","sources":["../../admin/src/content-manager/components/ConfigurationForm/EditFieldForm.tsx","../../admin/src/content-manager/components/ConfigurationForm/Fields.tsx","../../admin/src/content-manager/components/ConfigurationForm/Form.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Button,\n Flex,\n Grid,\n GridItem,\n ModalBody,\n ModalFooter,\n ModalHeader,\n ModalLayout,\n Typography,\n} from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport * as yup from 'yup';\n\nimport { Form, InputProps, useField } from '../../../components/Form';\nimport { InputRenderer } from '../../../components/FormInputs/Renderer';\nimport { useNotification } from '../../../features/Notifications';\nimport { capitalise } from '../../../utils/strings';\nimport { ATTRIBUTE_TYPES_THAT_CANNOT_BE_MAIN_FIELD } from '../../constants/attributes';\nimport { useGetInitialDataQuery } from '../../services/init';\nimport { getTranslation } from '../../utils/translations';\nimport { FieldTypeIcon } from '../FieldTypeIcon';\n\nimport { TEMP_FIELD_NAME } from './Fields';\n\nimport type { ConfigurationFormData } from './Form';\nimport type { Schema } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * Constants\n * -----------------------------------------------------------------------------------------------*/\n\nconst FIELD_SCHEMA = yup.object().shape({\n label: yup.string().required(),\n description: yup.string(),\n editable: yup.boolean(),\n size: yup.number().required(),\n});\n\n/* -------------------------------------------------------------------------------------------------\n * EditFieldForm\n * -----------------------------------------------------------------------------------------------*/\n\ninterface EditFieldFormProps {\n attribute?: Schema.Attribute.AnyAttribute;\n name: string;\n onClose: () => void;\n}\n\nconst EditFieldForm = ({ attribute, name, onClose }: EditFieldFormProps) => {\n const { formatMessage } = useIntl();\n const id = React.useId();\n const { toggleNotification } = useNotification();\n\n const { value, onChange } =\n useField<ConfigurationFormData['layout'][number]['children'][number]>(name);\n\n const { data: mainFieldOptions } = useGetInitialDataQuery(undefined, {\n selectFromResult: (res) => {\n if (attribute?.type !== 'relation' || !res.data) {\n return { data: [] };\n }\n\n if ('targetModel' in attribute && typeof attribute.targetModel === 'string') {\n const targetSchema = res.data.contentTypes.find(\n (schema) => schema.uid === attribute.targetModel\n );\n\n if (targetSchema) {\n return {\n data: Object.entries(targetSchema.attributes).reduce<\n Array<{ label: string; value: string }>\n >((acc, [key, attribute]) => {\n /**\n * Create the list of attributes from the schema as to which can\n * be our `mainField` and dictate the display name of the schema\n * we're editing.\n */\n if (!ATTRIBUTE_TYPES_THAT_CANNOT_BE_MAIN_FIELD.includes(attribute.type)) {\n acc.push({\n label: key,\n value: key,\n });\n }\n\n return acc;\n }, []),\n };\n }\n }\n\n return { data: [] };\n },\n skip: attribute?.type !== 'relation',\n });\n\n if (!value || value.name === TEMP_FIELD_NAME || !attribute) {\n // This is very unlikely to happen, but it ensures the form is not opened without a value.\n console.error(\n \"You've opened a field to edit without it being part of the form, this is likely a bug with Strapi. Please open an issue.\"\n );\n\n toggleNotification({\n message: formatMessage({\n id: 'content-manager.containers.edit-settings.modal-form.error',\n defaultMessage: 'An error occurred while trying to open the form.',\n }),\n type: 'danger',\n });\n\n return null;\n }\n\n return (\n <ModalLayout onClose={onClose} labelledBy={id}>\n <Form\n method=\"PUT\"\n initialValues={value}\n validationSchema={FIELD_SCHEMA}\n onSubmit={(data) => {\n onChange(name, data);\n onClose();\n }}\n >\n <ModalHeader>\n <Flex gap={3}>\n <FieldTypeIcon type={attribute.type} />\n <Typography fontWeight=\"bold\" textColor=\"neutral800\" as=\"h2\" id={id}>\n {formatMessage(\n {\n id: 'content-manager.containers.edit-settings.modal-form.label',\n defaultMessage: 'Edit {fieldName}',\n },\n { fieldName: capitalise(value.name) }\n )}\n </Typography>\n </Flex>\n </ModalHeader>\n <ModalBody>\n <Grid gap={4}>\n {[\n {\n name: 'label',\n label: formatMessage({\n id: getTranslation('containers.edit-settings.modal-form.label'),\n defaultMessage: 'Label',\n }),\n size: 6,\n type: 'string' as const,\n },\n {\n name: 'description',\n label: formatMessage({\n id: getTranslation('containers.edit-settings.modal-form.description'),\n defaultMessage: 'Description',\n }),\n size: 6,\n type: 'string' as const,\n },\n {\n name: 'placeholder',\n label: formatMessage({\n id: getTranslation('containers.edit-settings.modal-form.placeholder'),\n defaultMessage: 'Placeholder',\n }),\n size: 6,\n type: 'string' as const,\n },\n {\n name: 'editable',\n label: formatMessage({\n id: getTranslation('containers.edit-settings.modal-form.editable'),\n defaultMessage: 'Editable',\n }),\n size: 6,\n type: 'boolean' as const,\n },\n {\n name: 'mainField',\n label: formatMessage({\n id: getTranslation('containers.edit-settings.modal-form.mainField'),\n defaultMessage: 'Entry title',\n }),\n hint: formatMessage({\n id: getTranslation(\n 'containers.SettingPage.edit-settings.modal-form.mainField.hint'\n ),\n defaultMessage: 'Set the displayed field',\n }),\n size: 6,\n options: mainFieldOptions,\n type: 'enumeration' as const,\n },\n {\n name: 'size',\n label: formatMessage({\n id: getTranslation('containers.ListSettingsView.modal-form.size'),\n defaultMessage: 'Size',\n }),\n size: 6,\n options: [\n { value: '4', label: '33%' },\n { value: '6', label: '50%' },\n { value: '8', label: '66%' },\n { value: '12', label: '100%' },\n ],\n type: 'enumeration' as const,\n },\n ]\n .filter(filterFieldsBasedOnAttributeType(attribute.type))\n .map(({ size, ...field }) => (\n <GridItem key={field.name} col={size}>\n <InputRenderer {...field} />\n </GridItem>\n ))}\n </Grid>\n </ModalBody>\n <ModalFooter\n startActions={\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'Cancel' })}\n </Button>\n }\n endActions={\n <Button type=\"submit\">\n {formatMessage({ id: 'global.finish', defaultMessage: 'Finish' })}\n </Button>\n }\n />\n </Form>\n </ModalLayout>\n );\n};\n\n/**\n * @internal\n * @description not all edit fields have the same editable properties, it depends on the type\n * e.g. a dynamic zone can only change it's label.\n */\nconst filterFieldsBasedOnAttributeType = (type: Schema.Attribute.Kind) => (field: InputProps) => {\n switch (type) {\n case 'blocks':\n case 'richtext':\n return field.name !== 'size' && field.name !== 'mainField';\n case 'boolean':\n case 'media':\n return field.name !== 'placeholder' && field.name !== 'mainField';\n case 'component':\n case 'dynamiczone':\n return field.name === 'label' || field.name === 'editable';\n case 'json':\n return field.name !== 'placeholder' && field.name !== 'mainField' && field.name !== 'size';\n case 'relation':\n return true;\n default:\n return field.name !== 'mainField';\n }\n};\n\nexport { EditFieldForm };\nexport type { EditFieldFormProps };\n","import * as React from 'react';\n\nimport {\n Box,\n Flex,\n Grid,\n GridItem,\n IconButton,\n Typography,\n useComposedRefs,\n} from '@strapi/design-system';\nimport { Link, Menu } from '@strapi/design-system/v2';\nimport { Cog, Cross, Drag, Pencil, Plus } from '@strapi/icons';\nimport { generateNKeysBetween as generateNKeysBetweenImpl } from 'fractional-indexing';\nimport { getEmptyImage } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\nimport styled from 'styled-components';\n\nimport { useField, useForm } from '../../../components/Form';\nimport { ItemTypes } from '../../constants/dragAndDrop';\nimport { type UseDragAndDropOptions, useDragAndDrop } from '../../hooks/useDragAndDrop';\nimport { getTranslation } from '../../utils/translations';\nimport { ComponentIcon } from '../ComponentIcon';\n\nimport { EditFieldForm, EditFieldFormProps } from './EditFieldForm';\n\nimport type { ConfigurationFormData, EditFieldSpacerLayout } from './Form';\nimport type { EditLayout } from '../../hooks/useDocumentLayout';\n\ntype FormField = ConfigurationFormData['layout'][number]['children'][number];\ntype Field = Omit<ConfigurationFormData['layout'][number]['children'][number], '__temp_key__'>;\n\n/* -------------------------------------------------------------------------------------------------\n * Fields\n * -----------------------------------------------------------------------------------------------*/\n\ninterface FieldsProps extends Pick<EditLayout, 'metadatas'>, Pick<FieldProps, 'components'> {\n attributes: {\n [key: string]: FieldProps['attribute'];\n };\n fieldSizes: Record<string, number>;\n components: EditLayout['components'];\n}\n\nconst Fields = ({ attributes, fieldSizes, components, metadatas = {} }: FieldsProps) => {\n const { formatMessage } = useIntl();\n\n const layout = useForm<ConfigurationFormData['layout']>(\n 'Fields',\n (state) => state.values.layout ?? []\n );\n const onChange = useForm('Fields', (state) => state.onChange);\n const addFieldRow = useForm('Fields', (state) => state.addFieldRow);\n const removeFieldRow = useForm('Fields', (state) => state.removeFieldRow);\n\n const existingFields = layout.map((row) => row.children.map((field) => field.name)).flat();\n\n /**\n * Get the fields that are not already in the layout\n * But also check that they are visible before we give users\n * the option to display them. e.g. `id` is not visible.\n */\n const remainingFields = Object.entries(metadatas).reduce<Field[]>((acc, current) => {\n const [name, { visible, ...field }] = current;\n\n if (!existingFields.includes(name) && visible === true) {\n const type = attributes[name]?.type;\n const size = type ? fieldSizes[type] : 12;\n\n acc.push({\n ...field,\n label: field.label ?? name,\n name,\n size,\n });\n }\n\n return acc;\n }, []);\n\n const handleMoveField: FieldProps['onMoveField'] = (\n [newRowIndex, newFieldIndex],\n [currentRowIndex, currentFieldIndex]\n ) => {\n /**\n * Because this view has the constraint that the sum of field sizes cannot be greater\n * than 12, we don't use the form's method to move field rows, instead, we calculate\n * the new layout and set the entire form.\n */\n const newLayout = structuredClone(layout);\n\n /**\n * Remove field from the current layout space using splice so we have the item\n */\n const [field] = newLayout[currentRowIndex].children.splice(currentFieldIndex, 1);\n\n if (!field || field.name === TEMP_FIELD_NAME) {\n return;\n }\n\n const newRow = newLayout[newRowIndex].children;\n const [newFieldKey] = generateNKeysBetween(newRow, 1, currentFieldIndex, newFieldIndex);\n\n /**\n * Next we inject the field into it's new row at it's specified index, we then remove the spaces\n * if they exist and recalculate into potentially two arrays ONLY if the sizing is now over 12,\n * the row and the rest of the row that couldn't fit.\n *\n * for example, if i have a row of `[{size: 4}, {size: 6}]` and i add `{size: 8}` a index 0,\n * the new array will look like `[{size: 8}, {size: 4}, {size: 6}]` which breaks the limit of 12,\n * so instead we make two arrays for the new rows `[[{size: 8}, {size: 4}], [{size: 6}]]` which we\n * then inject at the original row point with spacers included.\n */\n newRow.splice(newFieldIndex, 0, { ...field, __temp_key__: newFieldKey });\n\n if (newLayout[newRowIndex].children.reduce((acc, curr) => acc + curr.size, 0) > 12) {\n const recalculatedRows = chunkArray(\n newLayout[newRowIndex].children.filter((field) => field.name !== TEMP_FIELD_NAME)\n );\n\n const rowKeys = generateNKeysBetween(\n newLayout,\n recalculatedRows.length,\n currentRowIndex,\n newRowIndex\n );\n\n newLayout.splice(\n newRowIndex,\n 1,\n ...recalculatedRows.map((row, index) => ({\n __temp_key__: rowKeys[index],\n children: row,\n }))\n );\n }\n\n /**\n * Now we remove our spacers from the rows so we can understand what dead rows exist:\n * - if there's only spacers left\n * - there's nothing in the row, e.g. a size 12 field left it.\n * These rows are then filtered out.\n * After that, we recalculate the spacers for the rows that need them.\n */\n const newLayoutWithSpacers = newLayout\n .map((row) => ({\n ...row,\n children: row.children.filter((field) => field.name !== TEMP_FIELD_NAME),\n }))\n .filter((row) => row.children.length > 0)\n .map((row) => {\n const totalSpaceTaken = row.children.reduce((acc, curr) => acc + curr.size, 0);\n\n if (totalSpaceTaken < 12) {\n const [spacerKey] = generateNKeysBetweenImpl(\n row.children.at(-1)?.__temp_key__,\n undefined,\n 1\n );\n\n return {\n ...row,\n children: [\n ...row.children,\n {\n name: TEMP_FIELD_NAME,\n size: 12 - totalSpaceTaken,\n __temp_key__: spacerKey,\n } satisfies EditFieldSpacerLayout,\n ],\n };\n }\n\n return row;\n });\n\n onChange('layout', newLayoutWithSpacers);\n };\n\n const handleRemoveField =\n (rowIndex: number, fieldIndex: number): FieldProps['onRemoveField'] =>\n () => {\n if (layout[rowIndex].children.length === 1) {\n removeFieldRow(`layout`, rowIndex);\n } else {\n onChange(`layout.${rowIndex}.children.${fieldIndex}`, undefined);\n }\n };\n\n const handleAddField = (field: Field) => () => {\n addFieldRow('layout', { children: [field] });\n };\n\n return (\n <Flex paddingTop={6} direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Flex alignItems=\"flex-start\" direction=\"column\" justifyContent=\"space-between\">\n <Typography fontWeight=\"bold\">\n {formatMessage({\n id: getTranslation('containers.list.displayedFields'),\n defaultMessage: 'Displayed fields',\n })}\n </Typography>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: 'containers.SettingPage.editSettings.description',\n defaultMessage: 'Drag & drop the fields to build the layout',\n })}\n </Typography>\n </Flex>\n <Box padding={4} hasRadius borderStyle=\"dashed\" borderWidth=\"1px\" borderColor=\"neutral300\">\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n {layout.map((row, rowIndex) => (\n <Grid gap={2} key={row.__temp_key__}>\n {row.children.map(({ size, ...field }, fieldIndex) => (\n <GridItem key={field.name} col={size}>\n <Field\n attribute={attributes[field.name]}\n components={components}\n index={[rowIndex, fieldIndex]}\n name={`layout.${rowIndex}.children.${fieldIndex}`}\n onMoveField={handleMoveField}\n onRemoveField={handleRemoveField(rowIndex, fieldIndex)}\n />\n </GridItem>\n ))}\n </Grid>\n ))}\n <Menu.Root>\n <Menu.Trigger\n startIcon={<Plus />}\n endIcon={null}\n disabled={remainingFields.length === 0}\n fullWidth\n variant=\"secondary\"\n >\n {formatMessage({\n id: getTranslation('containers.SettingPage.add.field'),\n defaultMessage: 'Insert another field',\n })}\n </Menu.Trigger>\n <Menu.Content>\n {remainingFields.map((field) => (\n <Menu.Item key={field.name} onSelect={handleAddField(field)}>\n {field.label}\n </Menu.Item>\n ))}\n </Menu.Content>\n </Menu.Root>\n </Flex>\n </Box>\n </Flex>\n );\n};\n\n/**\n * @internal\n * @description Small abstraction to solve within an array of fields where you can\n * add a field to the beginning or start, move back and forth what it's index range\n * should be when calculating it's new temp key\n */\nconst generateNKeysBetween = <Field extends { __temp_key__: string }>(\n field: Field[],\n count: number,\n currInd: number,\n newInd: number\n) => {\n const startKey = currInd > newInd ? field[newInd - 1]?.__temp_key__ : field[newInd]?.__temp_key__;\n const endKey = currInd > newInd ? field[newInd]?.__temp_key__ : field[newInd + 1]?.__temp_key__;\n\n return generateNKeysBetweenImpl(startKey, endKey, count);\n};\n\n/**\n * @internal\n * @description chunks a row of layouts by the max size we allow, 12. It does not add the\n * spacers again, that should be added separately.\n */\nconst chunkArray = (array: FormField[]) => {\n const result: Array<FormField[]> = [];\n let temp: FormField[] = [];\n\n array.reduce((acc, field) => {\n if (acc + field.size > 12) {\n result.push(temp);\n temp = [field];\n return field.size;\n } else {\n temp.push(field);\n return acc + field.size;\n }\n }, 0);\n\n if (temp.length > 0) {\n result.push(temp);\n }\n\n return result;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Field\n * -----------------------------------------------------------------------------------------------*/\n\ninterface FieldProps extends Pick<EditFieldFormProps, 'name' | 'attribute'> {\n components: EditLayout['components'];\n index: [row: number, index: number];\n onMoveField: UseDragAndDropOptions<number[]>['onMoveItem'];\n onRemoveField: React.MouseEventHandler<HTMLButtonElement>;\n}\n\nconst TEMP_FIELD_NAME = '_TEMP_';\n\n/**\n * Displays a field in the layout with drag options, also\n * opens a modal to edit the details of said field.\n */\nconst Field = ({ attribute, components, name, index, onMoveField, onRemoveField }: FieldProps) => {\n const [isModalOpen, setIsModalOpen] = React.useState(false);\n const { formatMessage } = useIntl();\n\n const { value } = useField<FormField>(name);\n\n const [{ isDragging }, objectRef, dropRef, dragRef, dragPreviewRef] = useDragAndDrop<\n Array<number>\n >(true, {\n dropSensitivity: 'immediate',\n type: ItemTypes.EDIT_FIELD,\n item: { index, label: value?.label, name },\n index,\n onMoveItem: onMoveField,\n });\n\n React.useEffect(() => {\n dragPreviewRef(getEmptyImage(), { captureDraggingState: false });\n }, [dragPreviewRef]);\n\n const composedRefs = useComposedRefs<HTMLSpanElement>(dragRef, objectRef);\n\n const handleRemoveField: React.MouseEventHandler<HTMLButtonElement> = (e) => {\n e.stopPropagation();\n onRemoveField(e);\n };\n\n const tempRefs = useComposedRefs<HTMLSpanElement>(dropRef, objectRef);\n\n if (!value) {\n return null;\n }\n\n if (value.name === TEMP_FIELD_NAME) {\n return <Flex as=\"span\" height=\"100%\" style={{ opacity: 0 }} ref={tempRefs} />;\n }\n\n return (\n <>\n <Flex\n borderColor=\"neutral150\"\n background=\"neutral100\"\n hasRadius\n style={{ opacity: isDragging ? 0.5 : 1 }}\n ref={dropRef}\n gap={3}\n cursor=\"pointer\"\n onClick={() => {\n setIsModalOpen(true);\n }}\n >\n <DragButton\n as=\"span\"\n aria-label={formatMessage(\n {\n id: getTranslation('components.DraggableCard.move.field'),\n defaultMessage: 'Move {item}',\n },\n { item: value.label }\n )}\n onClick={(e) => e.stopPropagation()}\n ref={composedRefs}\n >\n <Drag />\n </DragButton>\n <Flex direction=\"column\" alignItems=\"flex-start\" grow={1} overflow=\"hidden\">\n <Flex gap={3} justifyContent=\"space-between\" width=\"100%\">\n <Typography ellipsis fontWeight=\"bold\">\n {value.label}\n </Typography>\n <Flex>\n <IconButton\n borderWidth={0}\n background=\"transparent\"\n onClick={(e) => {\n e.stopPropagation();\n setIsModalOpen(true);\n }}\n aria-label={formatMessage(\n {\n id: getTranslation('components.DraggableCard.edit.field'),\n defaultMessage: 'Edit {item}',\n },\n { item: value.label }\n )}\n >\n <Pencil />\n </IconButton>\n <IconButton\n borderWidth={0}\n onClick={handleRemoveField}\n background=\"transparent\"\n aria-label={formatMessage(\n {\n id: getTranslation('components.DraggableCard.delete.field'),\n defaultMessage: 'Delete {item}',\n },\n { item: value.label }\n )}\n >\n <Cross />\n </IconButton>\n </Flex>\n </Flex>\n {attribute?.type === 'component' ? (\n <Flex\n paddingTop={3}\n paddingRight={3}\n paddingBottom={3}\n paddingLeft={0}\n alignItems=\"flex-start\"\n direction=\"column\"\n gap={2}\n width=\"100%\"\n >\n <Grid gap={4} width=\"100%\">\n {components[attribute.component].layout.map((row) =>\n row.map(({ size, ...field }) => (\n <GridItem key={field.name} col={size}>\n <Flex\n alignItems=\"center\"\n background=\"neutral0\"\n paddingTop={2}\n paddingBottom={2}\n paddingLeft={3}\n paddingRight={3}\n hasRadius\n borderColor=\"neutral200\"\n >\n <Typography textColor=\"neutral800\">{field.name}</Typography>\n </Flex>\n </GridItem>\n ))\n )}\n </Grid>\n <Link\n // used to stop the edit form from appearing when we click here.\n onClick={(e) => e.stopPropagation()}\n startIcon={<Cog />}\n as={NavLink}\n // @ts-expect-error – DS does not infer props from the `as` prop\n to={`../components/${attribute.component}/configurations/edit`}\n >\n {formatMessage({\n id: getTranslation('components.FieldItem.linkToComponentLayout'),\n defaultMessage: \"Set the component's layout\",\n })}\n </Link>\n </Flex>\n ) : null}\n {attribute?.type === 'dynamiczone' ? (\n <Flex\n paddingTop={3}\n paddingRight={3}\n paddingBottom={3}\n paddingLeft={0}\n alignItems=\"flex-start\"\n gap={2}\n width=\"100%\"\n >\n {attribute?.components.map((uid) => (\n <ComponentLink\n // used to stop the edit form from appearing when we click here.\n onClick={(e) => e.stopPropagation()}\n key={uid}\n to={`../components/${uid}/configurations/edit`}\n >\n <ComponentIcon icon={components[uid].settings.icon} />\n <Typography fontSize={1} textColor=\"neutral600\" fontWeight=\"bold\">\n {components[uid].settings.displayName}\n </Typography>\n </ComponentLink>\n ))}\n </Flex>\n ) : null}\n </Flex>\n </Flex>\n {isModalOpen && value.name !== TEMP_FIELD_NAME && (\n <EditFieldForm attribute={attribute} name={name} onClose={() => setIsModalOpen(false)} />\n )}\n </>\n );\n};\n\nconst DragButton = styled(IconButton)`\n height: unset;\n align-self: stretch;\n display: flex;\n align-items: center;\n padding: 0 ${({ theme }) => theme.spaces[3]};\n border-right: 1px solid ${({ theme }) => theme.colors.neutral150};\n cursor: all-scroll;\n\n svg {\n width: ${12 / 16}rem;\n height: ${12 / 16}rem;\n }\n`;\n\nconst ComponentLink = styled(NavLink)`\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: ${({ theme }) => theme.spaces[1]};\n padding: ${(props) => props.theme.spaces[2]};\n border: 1px solid ${({ theme }) => theme.colors.neutral200};\n background: ${({ theme }) => theme.colors.neutral0};\n width: 8.75rem;\n border-radius: ${({ theme }) => theme.borderRadius};\n text-decoration: none;\n\n &:focus,\n &:hover {\n ${({ theme }) => `\n background-color: ${theme.colors.primary100};\n border-color: ${theme.colors.primary200};\n\n ${Typography} {\n color: ${theme.colors.primary600};\n }\n `}\n\n /* > ComponentIcon */\n > div:first-child {\n background: ${({ theme }) => theme.colors.primary200};\n color: ${({ theme }) => theme.colors.primary600};\n\n svg {\n path {\n fill: ${({ theme }) => theme.colors.primary600};\n }\n }\n }\n }\n`;\n\nexport { Fields, TEMP_FIELD_NAME };\nexport type { FieldsProps };\n","import * as React from 'react';\n\nimport {\n Button,\n ContentLayout,\n Divider,\n Flex,\n Grid,\n GridItem,\n HeaderLayout,\n Layout,\n Main,\n Typography,\n} from '@strapi/design-system';\nimport { generateNKeysBetween } from 'fractional-indexing';\nimport pipe from 'lodash/fp/pipe';\nimport { useIntl } from 'react-intl';\n\nimport { Form, FormProps, useForm } from '../../../components/Form';\nimport { InputRenderer } from '../../../components/FormInputs/Renderer';\nimport { BackButton } from '../../../features/BackButton';\nimport { capitalise } from '../../../utils/strings';\nimport { ATTRIBUTE_TYPES_THAT_CANNOT_BE_MAIN_FIELD } from '../../constants/attributes';\nimport { getTranslation } from '../../utils/translations';\n\nimport { Fields, FieldsProps, TEMP_FIELD_NAME } from './Fields';\n\nimport type { EditFieldLayout, EditLayout } from '../../hooks/useDocumentLayout';\n\n/* -------------------------------------------------------------------------------------------------\n * ConfigurationForm\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ConfigurationFormProps extends Pick<FieldsProps, 'attributes' | 'fieldSizes'> {\n layout: EditLayout;\n onSubmit: FormProps<ConfigurationFormData>['onSubmit'];\n}\n\n/**\n * Every key in EditFieldLayout is turned to optional never and then we overwrite the ones we are using.\n */\n\ntype EditFieldSpacerLayout = {\n [key in keyof Omit<EditFieldLayout, 'name' | 'size'>]?: never;\n} & {\n description?: never;\n editable?: never;\n name: '_TEMP_';\n size: number;\n __temp_key__: string;\n};\n\ninterface ConfigurationFormData extends Pick<EditLayout, 'settings'> {\n layout: Array<{\n __temp_key__: string;\n children: Array<\n | (Pick<EditFieldLayout, 'label' | 'size' | 'name' | 'placeholder' | 'mainField'> & {\n description: EditFieldLayout['hint'];\n editable: EditFieldLayout['disabled'];\n __temp_key__: string;\n })\n | EditFieldSpacerLayout\n >;\n }>;\n}\n\nconst ConfigurationForm = ({\n attributes,\n fieldSizes,\n layout: editLayout,\n onSubmit,\n}: ConfigurationFormProps) => {\n const { components, settings, layout, metadatas } = editLayout;\n\n const { formatMessage } = useIntl();\n\n const initialValues: ConfigurationFormData = React.useMemo(() => {\n const transformations = pipe(\n flattenPanels,\n replaceMainFieldWithNameOnly,\n extractMetadata,\n addTmpSpaceToLayout,\n addTmpKeysToLayout\n );\n\n return {\n layout: transformations(layout),\n settings,\n };\n }, [layout, settings]);\n\n return (\n <Layout>\n <Main>\n <Form initialValues={initialValues} onSubmit={onSubmit} method=\"PUT\">\n <Header name={settings.displayName ?? ''} />\n <ContentLayout>\n <Flex\n alignItems=\"stretch\"\n background=\"neutral0\"\n direction=\"column\"\n gap={6}\n hasRadius\n shadow=\"tableShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Typography variant=\"delta\" as=\"h2\">\n {formatMessage({\n id: getTranslation('containers.SettingPage.settings'),\n defaultMessage: 'Settings',\n })}\n </Typography>\n <Grid>\n <GridItem col={6} s={12}>\n <InputRenderer\n type=\"enumeration\"\n label={formatMessage({\n id: getTranslation('containers.SettingPage.editSettings.entry.title'),\n defaultMessage: 'Entry title',\n })}\n hint={formatMessage({\n id: getTranslation(\n 'containers.SettingPage.editSettings.entry.title.description'\n ),\n defaultMessage: 'Set the display field of your entry',\n })}\n name=\"settings.mainField\"\n options={Object.entries(attributes).reduce<\n Array<{ label: string; value: string }>\n >((acc, [key, attribute]) => {\n if (!attribute) {\n return acc;\n }\n\n /**\n * Create the list of attributes from the schema as to which can\n * be our `mainField` and dictate the display name of the schema\n * we're editing.\n */\n if (!ATTRIBUTE_TYPES_THAT_CANNOT_BE_MAIN_FIELD.includes(attribute.type)) {\n acc.push({\n label: key,\n value: key,\n });\n }\n\n return acc;\n }, [])}\n />\n </GridItem>\n <GridItem paddingTop={6} paddingBottom={6} col={12} s={12}>\n <Divider />\n </GridItem>\n <GridItem col={12} s={12}>\n <Typography variant=\"delta\" as=\"h3\">\n {formatMessage({\n id: getTranslation('containers.SettingPage.view'),\n defaultMessage: 'View',\n })}\n </Typography>\n </GridItem>\n <GridItem col={12} s={12}>\n <Fields\n attributes={attributes}\n components={components}\n fieldSizes={fieldSizes}\n metadatas={metadatas}\n />\n </GridItem>\n </Grid>\n </Flex>\n </ContentLayout>\n </Form>\n </Main>\n </Layout>\n );\n};\n\n/**\n * @internal\n * @description Panels don't exist in the layout, so we flatten by one.\n */\nconst flattenPanels = (layout: EditLayout['layout']): EditLayout['layout'][number] =>\n layout.flat(1);\n\n/**\n * @internal\n * @description We don't need the mainField object in the layout, we only need the name.\n */\nconst replaceMainFieldWithNameOnly = (layout: EditLayout['layout'][number]) =>\n layout.map((row) =>\n row.map((field) => ({\n ...field,\n mainField: field.mainField?.name,\n }))\n );\n\n/**\n * @internal\n * @description We extract the metadata values from the field layout, because these are editable by the user.\n */\nconst extractMetadata = (\n layout: EditLayout['layout'][number]\n): Array<Exclude<ConfigurationFormData['layout'], { name: '_TEMP_' }>[number]['children']> => {\n return layout.map((row) =>\n row.map(({ label, disabled, hint, placeholder, size, name, mainField }) => ({\n label,\n editable: !disabled,\n description: hint,\n mainField,\n placeholder,\n size,\n name,\n __temp_key__: '',\n }))\n );\n};\n\n/**\n * @internal\n * @description Each row of the layout has a max size of 12 (based on bootstrap grid system)\n * So in order to offer a better drop zone we add the _TEMP_ div to complete the remaining substract (12 - existing)\n */\nconst addTmpSpaceToLayout = (\n layout: ReturnType<typeof extractMetadata>\n): Array<ConfigurationFormData['layout'][number]['children']> => [\n ...layout.map((row) => {\n const totalSpaceTaken = row.reduce((acc, field) => acc + field.size, 0);\n\n if (totalSpaceTaken < 12) {\n return [\n ...row,\n {\n name: TEMP_FIELD_NAME,\n size: 12 - totalSpaceTaken,\n __temp_key__: '',\n } satisfies EditFieldSpacerLayout,\n ];\n }\n\n return row;\n }),\n];\n\n/**\n * @internal\n * @description At this point of the transformations we have Field[][], but each row for the form should have a __temp_key__\n * applied. This means we need to change it so `Field` is nested under the children property.\n */\nconst addTmpKeysToLayout = (\n layout: ReturnType<typeof addTmpSpaceToLayout>\n): ConfigurationFormData['layout'] => {\n const keys = generateNKeysBetween(undefined, undefined, layout.length);\n\n return layout.map((row, rowIndex) => {\n const fieldKeys = generateNKeysBetween(undefined, undefined, row.length);\n\n return {\n __temp_key__: keys[rowIndex],\n children: row.map((field, fieldIndex) => {\n return {\n ...field,\n __temp_key__: fieldKeys[fieldIndex],\n };\n }),\n };\n });\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Header\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HeaderProps {\n name: string;\n}\n\nconst Header = ({ name }: HeaderProps) => {\n const { formatMessage } = useIntl();\n const modified = useForm('Header', (state) => state.modified);\n const isSubmitting = useForm('Header', (state) => state.isSubmitting);\n\n return (\n <HeaderLayout\n title={formatMessage(\n {\n id: getTranslation('components.SettingsViewWrapper.pluginHeader.title'),\n defaultMessage: `Configure the view - {name}`,\n },\n { name: capitalise(name) }\n )}\n subtitle={formatMessage({\n id: getTranslation('components.SettingsViewWrapper.pluginHeader.description.edit-settings'),\n defaultMessage: 'Customize how the edit view will look like.',\n })}\n navigationAction={<BackButton />}\n primaryAction={\n <Button disabled={!modified} loading={isSubmitting} type=\"submit\">\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n />\n );\n};\n\nexport { ConfigurationForm };\nexport type { ConfigurationFormProps, ConfigurationFormData, EditFieldSpacerLayout };\n"],"names":["attribute","field","generateNKeysBetweenImpl","generateNKeysBetween"],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@ const pipe = require('lodash/fp/pipe');
|
|
|
8
8
|
const reactIntl = require('react-intl');
|
|
9
9
|
const layout = require('./reducers-wZUQqmNX.js');
|
|
10
10
|
const useDocumentLayout = require('./useDocumentLayout-V_N5dUwQ.js');
|
|
11
|
-
const index = require('./index-
|
|
11
|
+
const index = require('./index-mQQPK-ix.js');
|
|
12
12
|
const v2 = require('@strapi/design-system/v2');
|
|
13
13
|
const Icons = require('@strapi/icons');
|
|
14
14
|
const reactDndHtml5Backend = require('react-dnd-html5-backend');
|
|
@@ -764,4 +764,4 @@ const Header = ({ name }) => {
|
|
|
764
764
|
|
|
765
765
|
exports.ConfigurationForm = ConfigurationForm;
|
|
766
766
|
exports.TEMP_FIELD_NAME = TEMP_FIELD_NAME;
|
|
767
|
-
//# sourceMappingURL=Form-
|
|
767
|
+
//# sourceMappingURL=Form-m0qUJusG.js.map
|